From eaf158728254356d6ff5df2ea6aad8dcb383b950 Mon Sep 17 00:00:00 2001 From: Aghyad Deeb Date: Wed, 18 Oct 2023 20:00:56 -0400 Subject: [PATCH 01/25] Commit for authors --- images/model_optimization_HW-NAS.png | Bin 0 -> 93251 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/model_optimization_HW-NAS.png diff --git a/images/model_optimization_HW-NAS.png b/images/model_optimization_HW-NAS.png new file mode 100644 index 0000000000000000000000000000000000000000..e7da29b531a1b98442a4643cc62d87c393ec33fe GIT binary patch literal 93251 zcmZsD19)BC)^&1XHnwfswr$%+W7}$+CQZ_yF&o=zY}-j={ipBMd++z>d3Me|3v(~+ zwdNReBvDEVk_fOkupl5H2+~qwDj*<$O%M>!SZGLK3gB@P_#0HqT2xd?T2z!s$;Hva z+RhvVgeu8BQCJpWj1<1f-d7U_8_a;;4i15_;{h8yJ{-z#m#!r|{oMK^Xl3zG0v!Jt zCifX)#&B9U_v9COaPZLvdu01}yW7@zo0)E=PmGuFtYF}fa+9*cAp6mzEM)`3g9jR9 zzoVHXm>>~EDJpJ4jgQQFJkR3>Nzt?kOZF?nRQ>N}#(%(8unT$z6usX)h_x80W6xul z$2xC=$fPcDxwPz|?kEe(BIipt@pmTXJhW_FS6U|bd-nHLT46*QMixCWtY7T794Gpn z6E$o8knxb8{E8P5k4B;;kuF84)ALL4eK}q*%FhW;)aVmOw9|J=VOU8R3}+m4rg0(} zJjqym`8GkDoM{iy=N=fwlOwKsP&Ci1ekb8zMH;wSm51P}23 zPckD3(O*T}Z23vFfovW?*9cw{2imzCWovO4eTH zcG_ar_Q2r*K0|<&n}hGK^8Y92KTrHyO|AdbK}A@f@+r+7-@0c^1*o?PUdjmPM(dovbtJ=$GQ?pf=7ZN69L2mp^-pIguo+(T2T{e zAJC}&`ttW2GVtNYl4xLwzbAI0fUvC^NCY9s(^YU&o3eHrpmWb-g+q@X$qA|&YPucA;?w6qzGR>_j!W?3NE zn=Jai-}sOp9iel0++lT_9mH3g>_2cJsMLWiqu~QpR8(XdobK>>fUTybmICjj_%j?7 z_A)WhYA68Th?QDX$?<%_uH?PQI$_}0YNHMh4+~jXSZK$Pdy5Gjz)WX3W-^M5{;iAP zk%5&+M7z2gGSR=u{xdBg$cf&-@f-6+R)PHch=7}g0b5z8qVkOr`8ydn%jSB|LYe5y z4?kTlPy9&gRR@xihB1-Z3!}Jf+=Vr{Cp#LE5794sE6DghQz1i8>Ex0mp5Xqxgt>S8 zeVDp~@!dJ5)iU|0Uaf}=2%GOtRmH6Jxr4Ri`;5^RfF0t{ zBx5Aiw`+gl)G!_LvxNBU=VV{86|&gWgRxb}$+VhsSh_W7EYBlL0yApBK4(KSOW@CF zp5OL7rpLLD?cVZ!(e`~h-6EP`SrU!gH@DvHtz3kHXKz2;VsQ_pJ6kty`LQ!40ySL?3jV zxjN3VHe3%<9vpLxXWhvSpf`;ryMES;c5W9R6o=jb z^s*p`2jt3h<3;pc!Yr}>3l^utGtu6l$vE#jPT7X-wDpd(nS@^dcoWC8`eLYZU+2=% z*hFXl<^-*0Ghr3IUf?dW^p*Yw1nQ)O$!7P@?}7(dnhqpu`HKV#`srxXjuH8i!pkbL zsw9O;RHZOu2l_3_mv2k;7LcEpM}nd@(NzTdy=uo05aJpO3dej;x zbSq}+<6+oZnM<jUM2>l8N7+AbnoN7M88X`22c7Ukss-0!ngK{Ab@)2}a8YZipx- zNIT23NM=Wzp($x3VvO-d&ym(#N4K#4o_^PZ0jz@)0uX64rB|=p7+idtv6q&)5?;el zM-O_Tw(kUw8(i>|h(08DrqOFGq3bWsh64}*dR@_ReJ4cxd?GevO0nH{DNHZHeEwXQ zpQ`VET$!wEz2-21v+`yN_f$e@{BRdVcuD}Y!XaOb*M;+W3PlR7qem3g#g2?GDfQ#J z4My8eIZbv@1S=8@rkN3=6c%353BhNy$};zyFU2V)m$c*G9(KrTSG~GNt z{I&)+yy?EH;e1@&1sJ##?P#Xh7Ph*NQ|`ylKBJ~ILw?=oa9n$7<#71mfeQ$i#cj=5 zaXzfMmBXrhX6&yEic55{=X{5SIBBdAJ?LQNLfwnHT@*$7dmpUEE0K`Spb46e|}zvoB# zGzXJQg<;QM_q7JpZtHH1Zjfs4O9w=OAXA|N8m2rmjmU_BC%11_AOOB4NtaB5IJh}) ze~+k|DB=j}&}nrOZTCcSJ8TJ7HJmM?tQfij|F_dl6eh_&+ttZ$9JdYXKp6^72dnXf zarH3;1#J5@iNb;PP3E8b%2e5Nk`GS~$w_B)K0IKZ8$H7{?n6jWtaCO?xbd^`J(t#y z;nuXm1(hK>91_Dm?|FbMIl&nG5P2f0uDB=u!$3~<{nXUNn;XD_`#Y-3JeJtb;4ls; zn$Wy68HPMIM9=niPA5BafhDOLCuV{8UE?ER>h#ZQR<{WK?weW1f{i+MwLF9Vn-s;b z(=N&SG?RV??Kfs_xy%^RO-KUgQ|r!^El?w~C)3 zKYDjKwl4Ouj@AUGTPfTbWE)#nTQU;hsQ($iW1B z!h)(DP;#qd7e41{a|&;Z>*v?Qf>>%g4%V^g`CdkvU|H6Bi2^+rXI$_VL^zAsZhX&~ zj|gR_pRE#~2e!~tS_=Jfr(A-H($mYJb%e5jm{O=N31PfGgMHsZd$jQVyCDU~h0oB4 zLPqi%^i(K($>?j{ce(ZiDbb>3N~Csn2v5eGUc#|OlY28=uHSG}T7rNUsOnUt9R0&! zeHWTxv>2mAb>pC%x>*3wcPo&u+o=536PMmuMLZEKT@;R6E_i;&h0-g}ERirU&N? zIH7pp#>hyfRD=H_5`>of$LCez0`;D|+(dBa3h}s0#lKRwPspdZldx~3W7Y2YNfE0} zb+HK@!Zq@#Ie$R7?-xpEHph0|iqzU?KLpgXxo$%3+|%T%-`;#@gO@|7`Lkc_P@__*rR%i#|AuAB{oE@~ zicq?^f0#W_4~?c?&}&$(9ud_>3Ocg};Xj|9xfFRqPSlE=$6xyfmYkvube6!z>4nOPvpnOJ8++pRy@weLj9&q|oA z%^5p2F;P)*ih^{Wm_P|cz=%;QE{7_@55m{zzrgVHxYbIqSb?&fTd zlZe)(!%Fp6^osDpXlB3%iVhKLUD8Kz^gZ`o6q)}B9Gt~8&1q%yw=n|5Fsu?^bb!mg z-1gNKyUHML_6qYORp@Gc9lOS|iXy#!HosRgX;LpbVuGyqIo?V3(f`u88g3PLMxjxR z{@kz-A=OH};^`0(zs3TYw8D9`u8v8bRPoD?=YY%7NVg3~kHEsUt=_6fL=+A|zq4

mn|MLvSuCL7A@Blg#LLb|NSmlrV(8%(ZElT%>+r_rMuJDGRhvJupdJ zKzKDWjfUL)M6^%`bK=kD;A(!*p%SdWj-zy?6Lt{tF7mL4;Z1A0EHT4Sn?7*zLz0t7?lJweE>>{L{FVIKJ~;=GH@rlAtKs}kD7dmG$bfXl>387(Lpy_;1ChtUw8Le zRgvF#&hV;!6ysx9{2YkQu_R$80f@YvOs7q1Ia{YmRbjz6 z245>|fH%sqM@x6Lgu-?`NO$V7DT`nQ7lE%O7o1E#K02wkw7+(S4Wj!CJ^Dak;o9yo zi{19qBWLh2%UqFTBTtDY73!jDJkyXvPeDmbj>|H{=b3A~p^)#$JCW^G==Q4dmv*9) zaK7;ygp-L*jRJJ=SdHztHeB5|v^uZ?!$#9JRAV1Gg`s7YLoypP#T*vadru^33JnH? zW_t0~Y_baVRmk$Xq=Vy&+2LI@+|coV_InbZ&OnSg z;}^0~x*)%od*LYFNUN>xAeL+>m3BLrt52r-Kiz`rTsBNAM>)`wCBV%R{;&p`7T=iv z^rWB{8H?M6Y;JzOHi{Q53hy7iLz53&@Wq@6zW|qkpLgf2kGh?-VFGN+uPf_QH)g~0+5p-VPHT)KtPfoS2aj z5gsmqKE`dXsR510=Y^zMZ4g#iSXlX8?z4spfbB+K8ZNy~og3!y@lmSjaTfv4U$^=F z?L|~pw!+0C-9`M*+)#l5h>3|?+>VpQeqF4$%>bzzEghZoATtzUaDfDnINtyQ&S-J) zcT_+E0e^2O3@TYfCevUyp-InWu`JLp_%leblt_ex2@dN&{p>gu^92y_@pF5@QW%jR zVgF25HArSM5x`u$z_>4bdVW4F5|_mc8hgVWB7F~7Tge*csy+k}5pfHO?(F=0Qg3EeT6j9Ui>66Y2WG+DNbRmLy(=ih-8 z8pN+?HEIMqRvx`YbYBW?Z?l45xov=`@5)*%wfq`az2HHD z$}I4(ov-JsYfxF|RJa0)-Sn zZ*Gb|qF}(Pcl)Ik+qYiIO>*(}(D#V*aY8F7r+R61Kp?y!hSQFNGOW1-n-Fp=^Ca5s zE~mBVq<=~SSxIgrB*^WX>s_w<2M;?z)F`7af&aikO%ew0?Q?^ zA=}bq zL5IF~KiugJOFA4JTVZi^IEs5xr$Aii=oJnu4*8sIJ4R@|uW!4Gn;$6{L|GwtmQDym?L!u@JzI6c|gubNz0J2eG^zao^2s*0oQ zl*BQeY{`nHe>>lkXn|{(kMg`4YcGOU^pD-o9omi@s!rz6)ECEp=E$x6t>6o@rJOh_ z1EfYrb?Q>9t3|t=h%hG3!LOGykMyb`Pg*a<5;f?xXe>yWc_5LQqt@^&Q40GEyA7?e z6gKq|G)6pYKaNNv3GDmF;{95|k!AVS2UGEM`lrRq{Y(Z?Hi7Sbd+Yf**?V)HzQpf}nzuCB?_SMsb@R^MyE#DeHV7-X zffJg(+U|ULxYF`=N_WPIgUAVmPc?@fK2e_oC!6&8mm@rYlo+9ZD>3ZrghDNgMBKczm&oaMQYS8cs#<|EP#=rcd&c2*ZuCnsWGR9{A-R&Wz) zSi?N)!>LijDyNcaQ_yOOb$3vg(|<8o05*a=RRi@)LF`TS>T&8Jb19-*KQ0y=#h%P9 zB0jD+D1W=ez>kUCSOmsUZ&hTfLXXv|n%c@wxcm^%tSU*@ujnNEHU;hvkWALU5a=gT zZwIA6!+u=3k?}7De!W=T%Fl~7+O+iU+xwuX1|I+-*4#_LP!bdp4Tf-PQS?6me9{jU zWEARf^9q9RmZNdQ&EG-aBeTi6gv26~ubj@ITRxtkkEt2AUnDRgabS_uSVQAlHQwir zc>k>CtrT#z>}KJP&{eIDQ_$3G{}>+c^j&7Ni9>T2AI(E_awSfNpKr)iMgBt# z4EH=zzHb2Jot(@bvquOqk({HjMp4P_sX(%Ckb=Fe#*=UD$7X&hA;~H@2D$GLx!Irk zW;m^pqUs321!g=*j1*`%>(C+%uM4L97tzK*1?K&n|dB|o3B|oa&Z|c zHP!!Y;_9+_H~JLd{qMZYKRp#=pZSpnfBY=U?tnq-r--~D%dRv5?|%tae5 zqzpmx%4jeGn?4BZ<$j2_XzaC{uS=YajHT{sYDJCH=RQlWx50)=Iw&`AWkHj;yK5F* zRz#J@w@wb+6QBWr4i77BQc(Z3Ux^a-x;wi}V1imil)XUAiX;xTqpsJ3sUK|@paluI zSQiypp?!p)6dG82q35X=`yh**Do^V)I6NwFt!Hd!SGpPu&Y zG5Jm+06f}~f=leuKY@yumT4V0L>$uc^oWUmqStutae35>wN30Osr_Pxjw|1vOnA1{ zyrs*A9{>iB=e{79FU$WXgE^kL4kI1l7M>|CIsOnC9v>#bjMAz*dT+HThpDL97*sqa zOlA#>gpHDe9#P**uAgAyC#U}kR!KlFF=ipSl_wO3o0}9O^KkrSHz&yc+@`y5%+AYq zIyfvGbDoUVLKRHI>q1|dh9sV%3TOYNnuI%C)pf{ z?K~HfDh6zjh%?*xg3g{+!P9a1m_Rq?-4y@|3R)TP@xK2(B5|NI&Io3wFq!JxThz+vN;z(gzod!w zS~e0!iiVh;F#rz1YjT4kyA9vGaCeJ0aNrZZVXopoG2*iJoB%P$HO9@p7- zqU;V!RZ?IbzLEve9&@b}^tIS~=3yUUYiSPJ_FzhA)?TnMOBoDacRvr`fFSFjX*fHF z<+trJ8hye)poKtoAizy7E+$G}>V>ov5scLIsDfH}Y`pNO1r~>?TL0C{^L>~mJe{iU zj;`q(9M-lX?T+3!J0-Fl)b0d(&$sA9{RV66ZyqaZ|wu?s{XiFY)Y`}<)I8V`sZWbM`Yd!=@LjomVf!>Z=;hJ~28 zIK=(^J&P9XHy1>pM?Fa_{6WhP+S%jo;*$L2OF>2^CE=jcU`2fE{T2R?k9-ZI1}U1b zsxJ-5a^y5$f2?|B4`+Kt1J${GqZV-khJF6-Bc~z*quFE7WKqO`e?dJO3Q%oB2QB8Z zWQ}~;KXF)c$?Lz)>c0wPk`SFT>W-q>sWeIb0fSND4*z8k7-j#19hYy&tp8;&QV4=v zh;$RZ!KnO;PQ$7+I<3WQRC}poqN~ir%bUM8jBp~Wx$;9;U(nml*sMKp!p}3*o`VP52b4Gy5-il%4-f1D)-0up*|J7Eu3;Vjgk zQBflx*kK8Xl-;LB7=-~&`2HVgoWW_FtoU!J@mdOQRnhZ-CP<$52U|Y{PHX;Ib^nR% zD;WUU00zc7vStyKtptn1MLD=I5#PrvVGF~bm5EN$)FfBf;24Ysv80mmTloR+JyU`o zuh=M5u*g(--M|Gh4O|l=a2@!(9^W$NV}`^%y8wU01^_de!X2cgT2m+v`<2i(&r6fx zL}GMF=3k-EYRZ6D21=47shcw8A_??jp=Aa|fcxo!xQ-4E3kwTb2xFt|BE!_46bJGn z8PJwsR3t!+0>JiZ2+O=Dx4-Ruw}@9{>5PoB^3KProAMIlvH z)aU1CC3W?%s;Y}c%|Mk(6!7QY$D|{a{9Ec#J5^Vi-+n;S`XVO2Qox@PGpiMX=j0sO7?Em?|K^!;_J20^um#kXm`Tl|STmX}#m^$LfKIvVPQ}pT+Rp`yWW+IKb^0jyxv_@yycC!f+D#dB{Gr3Xw7e{Bc6;MhT3871KaS9%3(wCtO!9vP!xl8^JARs_m?|lu7mbQY=|5a4~hfX8em^=UgAlnAM)lmM{s2>}OMn(nw zin6kB>FMcG($YP*hg0PKD=RDCwd*M!?X92qkGxBZib$ifzkG?@+A@kF{HU=qHU@py zF9h;L7{^0`dN+qM{X;{$^A(!OPCziv#Lh0Rr-x_I<)1s05I`6u2p#V!AtAxU%q(nY zM<*gGO71^6IJhOq%*+f82bc1AZTwjC%fH=MAou9Vs@?BJ1EuQo-N{yfqq4H{pMC7{ z`sX#zjXh34B<>~b?e6X9AvX()%FTA)HJ>*}JDq`rvOk|<9&I&aHRE zT#WVoVfcf=n!7s#b7?RRw+FYCJ0kLYqeItZ>)LPlU?Q6w=4_=At{r&_`Wl>5kbES*02W*4Ewd@NmhWihA0 zD5L#H zo@4CoCx>?8?A;+jaJgI_b(02}muu|ZxEVab_n^HY!hlq)JZ^vaEViB&=iQq}ZXTYU z2txlvtW56hoSYmcn>nf|;mqB|I&;}rJZ_a=j)#wp*0YelhLgBQe6$;lj++EvP>88m z4}6vz?k96FZ!ZrSd{|fJ{cQ~TKMNc;JCh?4fUld(>mxZ^$LG7`$MelD!=1yE6PnD4 z{jqnTSP4bYzhM)|3f(yUe%K6>#sfo(*l{GJ`g)5llOF&_?nRBSUHRw6fI{2 zWJi+YGYHGdVdF2=6mogOfSg|kjakMG6)CtEX@mW0Q}R0hBeJzWSqf+O@E?-Z8G3ry zbAUQVgnhdd;t3fJ$PS@>^41^%`0A4bC2B$g#NCXUTN&;^bl?o6Vn;~28U1!La@5j# zvR?NU20i^re*YDY`)kV`79~2?XJTPhxqY0;7?mu@QgEj#J5BW&e0->Syt_B^&EU0> z`44&ds004!-oEL3JAp}w`LTkDS=uHP;!~EOw@;pkf(s^}a&lDjyg8aZ0-MZ=^HfCy zA#C%nV~t7{@Ct;hhqAd$=A9;OwCILUo4mZH(DO{Ygyb`7ftNV!-=4CR^<&Xh+=;4IThv4J4DJM} z)#_+Dbu2G@N`=omVN?kJ(qJ9Jn?mmubmvZMn(flVhaX0L^xTR|B-PbBL|(1k(!G1K zVv&G~y3|l|#GM9xZ4*h%_Shy-nUWW|y;pS>Fn~AX>y1Yb*a;F*ZSl8-o9Hd_ZF01j zqi$(Fjo4r73ss*5>W4i*OxqB8@{M0Z7i=bSgpK zks#jt9-s_Yn9T+SdY@2BojCPIAJg65DV=ZCA;IY&dN7+zLg6ZgV9q}TcYCz zs{Qy}G-s>~C6D9L+!)sG65{Msz?K`DP}N#&MEl6EW)>o%Qb;&gcE0=e(8t9LCsH*` zcDmF$a7w&EqSMb(ecw=B#6(n1nP2c|EZR7#G)p2~yP~E_h z#d+jKM~+cR5kmdK#TS+uY`I2v<@zxczP-}RdVPx};Yz_L4EclH!LlE=HQQIzXIfi` zmZ-=r3?0)7Ec@M5OB@&R!ult@O0t;g3}ailZV2@fA5n{i;C!#A(7qe|qb#v4qN0V2 zuXM+J?(#U@^Nk3VI#YmXmWKb<{k60~iQ=k7ltj}s$l)5#^&GZzI)TPZlJ$6cW6E*8 z+!S30&XqzeiJ6z|Y$ZNht(hYIT*4NWT}08>*gSN}53GRu*)5|8MsxC9bMcIOLALKQ zvMu^CmKDf%mc=P@&^N~AcR&L`$STM*z8`VeArq7A6ou~!C1ph*Bq>6|&Un#Ha%6*b zK;%*S&I+Gx$xZr4FIH5TL?$QZ_6WzP`9VPN@X$woOlQH!2Rj)$<$>K&YsJG6!QR(2 z^l%;1%84<#5_ILOm~poMaW$J5bhLgTL;%EDU2fB6xbMdXi3*XIfJ1Ve#*BHkQ z7RqtH*Q(jEpu`TWdE$2ae%8&6LrwT@W2|=Nn1o{Te6v#IDTQzbSlD#3`h-fLR;_V0;1t2AHCmjuY}>mh5xJ3U?{uv)y^ zqkj0us>~RKDI22=cg8cj|bcrvHbM}9b@KJyEe z*Q3N(uMl7y`y6|+by4hUq_0JLNWQ#Xhxi{9ITD0JPYb|ql7u~lHlPac_T&YG)8lf; z4;}N>`HhAHu_EO66|~bWe6h>h^IZy_g=)D}F#_HT(yIT?3ie^s(Gd@<>|{sqoRXY@ zbv~~tB|B-BrqT7L$>n*k;$~}it36bUe;2f+sB3^GgsBW;F^v~zb;2A9#c{Dl@@rhT z<6%*Ku;ru4*b?#=*UBU8s&*IGE_9xX9G~nevm7AAWHAUVRuQ}tu$Wg06(R~uej<8J zp?F_nKJxeybWAVK#r*^9bM;Rs*5>?ehkK+LN=IQS+Kc{%Hd&?J1(WeTiEzKg$-Y4l z*YUQ4FhOpxPN!9R)anHJzQmx88S7{1{u4HlY>8!3znov0wOH3yc=P zDi#nWp9e?2_z4pT<~&3!K5KZ@I?!3TkaqvV-xi|`{~ieSN*NiiUF3kTMu6ZFIbt`3ZrOex$|?8fX({@Z~M}O+qA?)l@0?=yNnm1^>e(Bt`GWZuIrJfn$1R`anO#WGTeTKZyu-$LkTH zE^p~pyC}SKiW!M?$R|hM#|RX=i81~Wy9Gd!5wkxc=fSvMSjM0XyRsUOPFIa#HwNhU zZ+unZ)fuK0W+n%>JZ$TB-UAJd7Ds}aH!>-J;TC4c($02;3d|JN4YE~jf#SQJF7+aA z63HN*Ft%C62Z|t(ZudZYSz6iVvwQqz)LI&=C*Kahr^^>%jjzetgsJB7dt)IgCm`xX?hhX?xoj{DwkKRHZZb(DNS!YT0bX~+=be* zm652f(W|t^_avBeH_4;$rfO1riOEwzhc7f({e;T)q{>rKPP*GhljhqP{>5XPxV@vp zdDE19MKk5ZZ0~NyXM~KaM3O|N8TTO85j^ah<<%!e$zLG|SSOtb@5g1(H-4$}+VeJG zi;xypzeo)&$p=)4rsy4&7bMmVSe>?d1>o7o*YzahdAYtXDU4Ndj5nkaDJ=-o+v4-x zB1(kYQ^Gqlg~(TLIL$@&r9c_$fn}^BH*p^9jae5OR9Jj>Fh|6P;AeAKglBKHrN1by zfp^H_85%jZ5{@G$KG4@m$K5<02nw^4gET3?;|r#aUBl5X8Op@kOwfM#e>*@EDMBL9K8q+DZd zdW33)kKoCPi0z|nwhJyx;yHQvuRYk1^RaeD@6OoqNS$GIFiC9hqm5nSoU1xkRzIM) zi5H2>8@j(=>JsnHfj7K*z;pHzgf7MUE*NMa9ywy8A{{k~j^V&u?WTvb*{q_Ba^HA^ zX)1(%njs{LM(nR>3H~ISd>g~kIiEzX6sT?k-#PFPT;%8x2q#2HOj+invkE zs*>Hp+=u?@NF#Nq7fUDWs|zL?gbwoV@pkV4H{O+oo-p$ghT@TjYD?6xEfJoR`4tfW z1zcx=uvEK0Q6}dP39N^lH^~r zhZ@t2y+LkpbF{jp`sh@ z7I10LrQO&^5=iaOn1`=@+wLb83n2hTVdnnbZdDX=W zWE^P?pILu*^OM_uW^urg8v6yRAD|Tq=Cf$>(^lVs`diCZtiuj|S+Ux#Q+oFHgfm12 zN7z>3Zxo8n;I74-mR}#@Q>_9_Q+5Zk4kN0a*i)sLaN{(VkX51e_Lh}?N%4{RqDJ<) zejTn7sqFd1F$`-7^lw zQkk>`tyf5}CUFX`{+PRX?Fi0H#;(EmF1{m;v|g|v0QCpc`xWWqyCaXCL4FTmM85fY zQP;jqAhk}>8)wOPjR_3vQf$FdM8SKK0rQvFDkDMRBlBh6+=w04cJPX)Q& z?t3Su{~cHxUe{9ipTL?EtJ1;rFzwez$5Hv|s!WEwDw{s~dY(wKi?56F58Yi?R8R(rOyf?*lZK+ z{17_5=WphVTez|S@k7mzxmsA>jqeK5=GUlfo)8FmgyVJrLF7Dr%gp;O^E8U&j(ZJJ zb35e4(-*I8J4hEWFbMozf(g2Y6esr)5H2^o;JXbME7nTEGnf1=I0>45NwOU%{AjE& z1~T8{j^E67Gjd#TjK(&HkW7wDcx@qb#^zBZ>3sWhX}uX@VFD|W)ME}`4_@RH1B@*C8%{`qL;(y46{#6bkJJSVW>Gp6c zMPHm1v%n3eT38^G&OtBK`=BbwV64MgnLgJITb&2(X`wBeSABU>#f3M3d-zAgK)h*J zVtN0oHV1o((74G`I7r*PHEY6{_NKRtbuDJ~(1G}Dg5OIIey}xVG0AEl`gFKOaX1&` z#}8J4*4Nm@SKFU`5ubL)Gg%E;N21d(NHxF0xScMj}qJzI_^@(8Xrt zwfOq6nHJ6Tbg$D=8lvmL2+zEs-ft`E$5!*^Db-@kT?lVl^z`y2rKJ;YCy3@yEsup; zA$C^w{3Ye4!0g)0+rpXXZ@r z!Y|Dje~~VgYdnuzT@k1EN@G4VnorD4EJfB!%RL@(T2vdv#9hl-V0&6H^TzSmt-Lkx zt$c&PGe%umVHR~)FDbX}>2zKlB`CFEp@_CPED0EsYiP*qM9g@A3|Y>@#HMq$RV=Am zOgon!HN*Bitoe-7xSYCbO?Q5RX7NKgLp~sJ5T*ISB8w+?sfrBQ$I}MGwY;jYK@O*O zlHP_{eRU=$S=dfB14m9>JtA|(ukVbWO*@49A(P7v%=U*vKO})7kWOL#*z{pRWk)D6 zwHv_0(Pe6+s9!2l6TFWJ0acyhFn()x*u%1A&d?`>wIr1@32cC@90h~N(WGm1S;?(eIqD{ZS` z?3x4cd~O$=EWR#>(*IVRLPS>6k8!)d9YFrh`SuWrHp%qJ_rm5OcEWMsP`^QMrjQ1cF{=bsKC zb0Rc)oirZ0ICTh%>-b~hWU8f)+3Au6?Qc85+A_?K$KfId{&>|d5) zjOvt`f)L8!yiB!Fr|j00J{W|9i10PWHi)-%qJE>(qp;~W7vykpX(!NLmkn4Lcv!tV z-^N5x+TH9_Had(HU*S?x((Vsm$#-8|zxxU2e0i(vQU~L>7}sQW?h=}b##euQW#s7H z$g!@VVnxSyUGQB4#h|g@Q@6W=v!b;3#cX-XBoN2hJpQPYZfwllXue&Jixk6fb;PzU zE}F!dXq!-gZ!#&5E3JbnqdvPhIJO%-u%%Nl$+-!EObXjbIDlfGlUok#OOks$aJ)Bd z4zjyje>j7-Of7HJ>D`b@lfCH-lG7~0eqkrdgrL9dW^3TBJy#j@9Gt)&S5QxAe7d8F zk@B6o_*lt1{?2LSdP!gzBG0bfr~Oekw+Cf+J4bCdJE4{C>xIQS_Zt4gmvsKXg3p8% z_lPBBgLetnL1=fAI$mzQfs^<5g+=Y)!%$G^w}2%fQiRFJ&XN1JEarJf3aZ1afBi22 zjGDmI3_EXHu#ydT+4SoPgrB~iv4n2Ob#1CyOzO7+XG&_2aO*px@M`stO)8VI#uz6y zaz8#B-Y*KGwtzBTtSqIyp=am;TFb)f4kq4SFKlr(Z5Jwyfw7?RYLT=jgRH04Xm&Hj z6<>A$Y?j4$dwqPIU#fXGCro8k5od2W0*aXGU|KG^andmmoa^ONKXRLyhZDEo>)u`%CMb9}Mvf>vN^GyY?f z!Jsml_yLfuAb>df`MbF-=tW0^Z zv>{v-p}p?sZ#9YK5Mi3&Nh@4ZLLTmm{(hO>%lb9objMKjyfRAl?OV{+8DKp(nG(dL zh}7ElY37&>3K*C2a^%9h8+HXKV*~apuBp^ICaKMPMJ)_J3sDpa0us9S7-yQ}tuNV0 zDy($EnO@-Gr~E67XKm@z+t+qpqLo=^XCz|M0_ur`arcOPOsCG3WnYUqCK&n6fij%# zjGPE2@};`n*QH9NTkUjodeEHqOHld&XFHlzl<{uk)Owb1#@2OY6Z(S#;aR-I{+f0D zT`l;zPr#RDnLoUMqQB{2(Q&KAO>VG`6)9l!%C*OprJ!HxpRgJZ)uhBqL=OK?`t=RB z*MY_~Cd4_YcZ&!{T79jb=bK#uElyig7qq7OTIi}kt1!{8&krgV&z05Hv0pPP z0~H$O*Kb$dfmvkHAVW`L59oA1+w#M}{bDsuVB`ev{rw&21?bKE&a(}$x1JpycQdE~ z!uy0`#hupI*5(NmP{KP$wD{}&Bm{X0RdE1%#Uo`^-Pt0#L9 zj7y~`dOR*mo4wNWZF=`>-Cf=_jo<-+E&31|R;z^4O~71AvP_~IE7X80*#OG^q{J;g zINZTokCItImYA8+C=~sm}y?Uzi);Fzo_6Dv(e2lhQ## z+;GfS-*kQ@&h_M8VSyD4Kz!3KZQ}TF0~T!THJ#S|SX2!Y=kFc#REqp4P}Z751Y486 z%CKW)17nma%giw-I)qn3^*(leIRv}p%f?v8iK5B|^a;YR|lpr9~nJM;p64Xf1{)~~yBfboj!%gQd z01gD>C97WkPyM-eB;4zQ?2In zPh>^xw$QOL4441-3hyYvBCp#7-~BQw&Knn+AjYEO;to)nl0#csJfIh9-?fT5)IVeC zp#OK|&_;lDpGykAaW0yN%ra4^ibJ^8AAb=(o^QpN@MlRBEaF*sT=oNh=IwA4!N+oG zQ4KHgcx=U}x*)YY)x=O=Ze?nw)6ua3bm9c@7kTsb>h)99Ys ziO#nPzdCgwPKP5p3sS%X#{s5&E6#>SJ%jV}LD3z;)qu|k0lDTZLp4w>^W-?{C@8g2 zcm4?qu|&ydnv5IP`gUkzXuof^o}8S3yc%`i_~`w)V`F1Smg$7Jqt%q5o=XKl9d02* zUteF{OoP-eQ~b0{-)|rA3(xjwKIcNQ3}^i0g-f8wL*?tYgCH-Vf0IQ6rY_J)lg+oD=DKSL8zuE+&<~o?2 zbKr`1nN4|zKqr^)>;Fr+%^WN46O9Mnu(~eB3-OI`rDt81uo&nR4#=S{I54BiLYZ%0)Xc4WHwvT6v zx1V$lWIiV+CdTvyM=2qGO9hd>94-YWGZ_4r7fL=CUjP-ajo6IEbN`F#-e$gUV@Kq= zhkv+&L#=qLscR)wuV~l*4PyfYtsVWQ=-WYZj3`wQ|C3E9p)iYAo5O5Ycnx;=l@~8O zso9W(nK;_*p0}OQBgqge(n*pxAj4|=jPUOAj6cNKn4zYBP~}msoHxc3jKG|y4?r*$ zrP6W&8N)!6|CDQ#iov0ZlisPs0|#Or%6z@<+^F+*jv)9VJ}eK8dD zWn+1K`#8&3k(v9RcQZx2BaE&PP#?M#;xz02jts|nK($!C_YukO1LPx+1~SNv zu7Mm@u6^DAl;>O1N>sDp!JR2co3dbWowoe>Q68^34z0sFPJ0P!eus0JSSWO z#lOTkjPZqDE;=e#;av<`9D-Y0pKuAc-p#OD(QT|8wKUcG0v~CGzN4$ zJlP@7d;--Q;Ppci$j0d3etdcw@|DN{{eRZkR0;%WCL!=mZjD{zpqk2B(0K22hygs2 z@x%h!{~BvBUVuIic3B7W>+89v3R$z&cp>qmBF1c3P&{mGgx*G z4r(5FrzlGQ>GZVVZEBIrT%Nn%5TC4;<2DI^*DXsN^3-uy58VMHRx*G zjAgdkM<5ZzRzYFznQ^?BZP9RwH981py*#*Vbc4UvZ9yCEZxd2us4VtTFG`m4zU4VY zx`_AqAy72kcF=~U-7@aAE2zD5v`1cm+$pa~#E$tZ_Ue|7{&Rl@G_i~X=VW;(U=Wzd zyx-I121_E@n%d|yPWbMjtqN2?^BZ2#mB~Q345_?cBSmM&L2ynTyF7l~E-dcmGd3kR zmFe+f$~EsjVYX0aXfMNus`X__m2PHWenFO6_i^C#Ne(nn(>+cp@~&csedlmlQ8qa1IC3jCMe0SSuRUp>Ihy zMvB2v?@#7l_ADgNsF$h)+;I1a->c`#dghb4*`=~-h6-Cii8 z%q22vxP66Ybas)nkhz@i#MKtrwmft(e?H1U_o*|S#~K`@5S#d+GJFxDuT%%VzUbJ0 z?y-zfKIzC(97=T^Xs3`9$L9 zG-sP>;>!v;sp4aW%RcJ5*@a$|Mm(f4IKRtyNv<%Z*103LQR-);C|j|Ydx?juM=wGN z-A;JgIGZAiA)ii~Af8gBepk~l`1iM4kk<2xDGxhP9 zW%&uoQ=CTQwEtP2%eOzLH?@Ma8k%=9n8DFi`K1~Nu^Abw?JbM}wKr>{e-RC?wCXnE zHlmgO1Vx3z{UW17o~!?w=nL-O0gF^eITu9D-B`(T0(yVz%aJaAw?_b$`ObO{04{(Jkf+(7`8Kok+D2*KX2%ULM##A>L zBxh8_z1z&|1m7|`JI1<(GckvBzS1L_$Ri;y zo|TpyiZH+V=YL#7917XBwi9BHp+EQ``fCTvkCzRM^vJW1s0#90cNNN31*hO6SqN{x z4Q{A&sU(&bYG84kq2FIfI>RChp-aaU@aDjHrU{#JfHc!N?mS__MvQ;SP`@w7LFDU# zjI93K-1@D%q3(;06K#P-g&4Na*F{Fr5r{a=(=5H9Cs6JA1p`S<3{$MK+Xn}oi)R^* zse&=%R^aNA-LO87a7DAkB2N8g#wE| ze)dn4ZkY1R5lAytvzdP)=$3T%Q3%NBk_5(EJ#g&YcTedymSf_`!`<%*ehlEa*69>o zNVuH`20$_uF`ET<2|(PB##GP3<^IHjtk|QRd0e2ZKI6mE%Al!P2Yj&51+6*j3A1J# zP%j=kZEgEoxxLVi$ORFL%g4y%!)An z0_S(QhY{SOU{$c0xSkpDVzn)IMU$dLD{TXDeCd$=@y1h{qlB-O>SBbYEr)Ak>8i8s z_Bi%uD^x71J=_N-Nh|Q!r{JcZNVdo9ZSQ&2VLLogEdsh1b?GX=4rM4}S5$73XJ&XP z_%yDk7{In5KE;O(^qe4~J3g)-)`?;_P9ivW4cuqCBWG(mx`SdHSvaz*!FKT9Z+b;$ zZGs_u`2?a-uCJ|*aK8(BBKju_#Lrf=+ge92KX zxt_gP7WVMJdCEEnB4(IWi|P-^2nx1BdRWkiex@@CL;FeeNZPNL83nH!@Jm-n-D5(m z(U`nf-@y_j`6{V@M{Bv9ki1T3_@f07uEeA}`D-UiO_gNuHEB-2`PG(nb!*#QrBfG@ zoW-cuSfUB7$zuzC2ee4Ud+E}29iY2=I@VnGA&nZn_&X?fp?*SNUKuP+c_B|Fu`r>p zuU|x6lX}9t2k5a@8am*5yuJ#Ay_`ovYwkj=Hf%x`-xbK@inF>epnO3#7Ga->o3MO) zl|i3R!aFtc?eV(9A<}5>ix)w@>GNQ!T_A{7sPtrY+W3C&<`aLiy0bi6L!9d-sU9^q zv!oX3@^JVJy)&dhu9Ev8I@>Dtn(rAUOO&qLK1Us+OGFJrW+Ty$cD1u$eL{^}#R zv5HQB3@{s0)FH|fLt+y8A%1wZ*} z&7$SIMP~A;6=tlJj;3D#28&bADi|SeN*yG>*jJ&w@32E?;yvbS_22~!zipc!;2KC% zT$e)nRwglXJ37O-Z6ji<85^K3o3)_BjVwN1!jiv2{xJ?7n~4{fSNqkYUM%cTHZibQ zoPwTQ0!fTa*(~sh7GtkKzCWtRE9YY|nc4Yz(1rUes@4E;P7DY~{;|gU0^WlfKKelV?(9gra?W-7UMq;mo^E z&^=~wl;`K=6_t~N2N|nzc>aw`noK=2qe{ zz5;$u7A0zXUKC~V&U&ZdLbTb9JJfGmhc=!M$^eL!Se0QSO`D|VXeD3x()ah6!;gE_ zV=gpH8Ybi&W7cevj`K7-j4v{>!0GKfYYJkYPU#LWcY#X42h^zzpBs!FGCq_&jelc= zF#bjha@Yd$r+oBMgF}BhD|y6`?wU;EXI3=Sie#Ad?FBodqexOJQ{&aB-t<5&B*gNa zXX@@FCb`vEX&43d+d*QBteTZP&+oXnuCIZGmON9NvZ&^QI@!xMqVEJhrPt3f@zz^~ z3@5PAk69vTVV4pE8Y>cggHykAVRLXr7X5zEI4*}KFMYE{O7WpJ&I_H_{sz^S<&d}(F#FxoEcq}$36beeR>3NGI>4e zEFs6d5etCJmg22 zJaL9QxHdZRiBipSA4?WRQqDv(OHy$TRm3kQRhmh>xQe=;feh1S%O8zi4Y91Fl5wL} z_Mmi_e1-)h8fHi}<7kxrvo0@>m~rHA;q#*@9SYk-TpOk1%m?J@;`M)ZkCL=Zrosj8 zV9anVMu>yw73hA1P2}NjJcXG~*LBfeO#KEjj+NYEP;TR*fuHD?v5s8Oj>IDNWvIfe zmied_8kv0iU`Hc7j--_m!mGj!w0Z)C55hs3N$=Pgy^2zMN_2QnDxC(a^#mS>HlfWp z$or#`5u&iLP`B9z{l9YCij8(U+G(RBjSEPloU5BZsHwXm&ImxLI&)H0#2D-NtG3W0 zg8vh;F-UxXObfZg`X7P{V<}QsM|diIG}0%=|Gts@kTUoQt{3Qe3%NhX@G}?D>iNwG z_hL>mN{ZTXA7;_cDBPIJlx;p7ek*2r zx!!(2sjFCm!zx2Vz3OJ?3g`U)Zoh;e&KogLAb?QO{ucoz(3hKCF@c{ui;Nj1(6kTU zK0YYmvT~Bn-UwnrmsGnKH1yx}O1lO?m*Oq9?a?m(dka{I+$ymfoASz%(%4uekji5b zdIbWB$g`a6#9q0c8xCR`p@sWmbY2PdeFuK{LXR^kuZEO5>kJ?U-rUHTmz9Ob|{;amPr&JF@=Lvz&q6uJKBPDp{8-+&7uy{OD@v zOcVWa5QpYRRP#Q&7BAFT-dtDTzf6rk7!*D21dP9>fBdV&rX8okjZO$kO~nE*7SR*_ z8kAAGC(6#w*79M2XziD}2ddZ7HPNmgME$-tMDWZbv+CReV4*??UAw*thyZX)lu@e~{LgMnE)z~933pA> zW;OQgsdj(F=xV5`iLXMcFgH!dY9^1#aKkk$hI>5^y&0XDb!s0D!ZOeyR#Gns_BR+K z=Zt8;=zsNm7D_lXQ9W@GkFAtJuPIK%~B#%vS zbzQ%!ug>wgKc2N>Qm@{3;n>11Y1c(~awKOA2LyDr;I-}Wr7GRe?$@0h7dgQLHc|@G zL@R(ad%!oVSRGl@lVPLZKHE2jkn7#|SU+9o;w7FBt-K^{Pd7Gh+*9zU(6W8%hS%yp zn~<4-UI^tv+_HCwGU{k8m;j-h|OhOxa*;ZP8F9?7>;x13?8HNrm#^Gaqg7CKPIW!T(@Gwn(#i;^xC;56BZ?%&K%AD#&C z8UBK&f-%n5UYOuX1pSE*Z42sEh4Z_g&iy7?%d1)kJpcFzG)i!E2$;XEoTB0YXqBRm zmQRyU0GSAMPH-iro@>!I_+t9HzU*kep+~9IQzC*<-0X{wqV9I;JdOADvgkA0ZpG8>r#r&qQ<-6DN75 zJd`UHF;%V^j8&&++w~+_oAvT@>11tWJj8oa$|-L8O1`!;D#;)N4|VbF=n-iigVp6_ ztfXiFBT_I9lYaf|;m^r%qr+WZDEV-(CtfCOKdZEMQv^?raN6ThU-P5);+e&RG@9H1 zLG?yGkJWizPG9QgNcfor)cgc06v~;pK`L5I@l4v$Y`utr2RmAfRfM@Vr@`$5F=eb-`9E#5sK`8P42#Arw^U0_Utxp5p2(!1nKT^0yeQ}ut7fLo%9;n3 z;NVZl)E2x%`Hse13TeS4)!0nNuwPaa?p6nTR9K<%)E)~KqvX7`1mh|OJ9~tRYSSbn z3PW((aXj}E&)qA89)UTRM2f5+qSoGV_W}c4{wY?qvE&a<1aW5&9Xufm2k2Q$b z$pJUVdh7xhktZM3{7;QAighcLU<^vpI48#yxu_im*5dMV8d@bEkXD1JNO>-9xGhsc zL)B;At7eu_rD#|)Lpn1*CUa(Jb*jQ}dgcXYc14oWezO5e&C-V#n_BVh8K5O?`7x*V zb!DTR?pu_w1O?=Z)PPxaHm7r|vrL5@1klNr%N6v-LLSpzBuH4un0Z>V5E<+Ih0WSp zzb|DlPMphA{aLk89j-V?z*@~TP6G%EkN^hn7rWpdi};DRNuUI?O9fG`&}s0xg?an> z?ri`(2f2Y2V5R!}s#P2GGTK^#s#QkV_Ia&Sb|&lSI}d_RmiW2e-rm8EHe6g>Opvy_ zG({kt&7FF1a1a^+0bzHE{@{M zgxAv2ntH~;XJeC-<;hxacY{SG5k$j`Q>e4n)x`ru$Y(Jh*HQ%6e&7EQOQ)1ZhiM3s zk}D+x3z_r(G!)m?8WW5RP_R(pSLoE`>mKW;rR{SYrmLLIv&C&f8g8R)qy5o^(_GEE z0;L#(KDA0sotzRtri~&{rdq3F)k?DofWRIo z{(L~$DOgGkFulu6!V|V5pMq7*Xgl%h@}!nVA&okDGr`t%jh+|5;|ajb)%fMM87tfA z@%8JsZ18+~6kh8^k|?nHdDgx*G*L1oF&_78vd0GC25}i1OC(B~8mdFS4^9NaMWICuQjJp>OIxCoIxi%7A)JC4}GlbqaPCz9dG6 z`t4h(+!qF?C)`(WXinSqaTHWCjBIH4Jdw zH-sn8Q)iOav0^=sc44K?RHb#&wdPcZ%U^mzsO5*h$+?9Z+%~T2@-bjsohPI+EGGKj z81w?1c!q-86AHtrhi!sA1f7_iIIh;{f3oEMR&Q|7)2#SR}C)FgK6fh{xFT;5y z@ro3P`C(dF8=H!i&6F951|g? zjYQC+3<2mezR?K)>LQw+%#~WPJZH$JhIpS*kNCNeE;$MIeV;tE(bI@v;^Pp;C^SQV zmJ@!orXEb(V;v|t40uViV<*|uuMq1XaVZA;A>Iv?B>P5T{AbaYS;35!3LG9@YB~Q6 zfu4$k9;_jod-?g9(ou;uzM=DWoPI4I4wBeE=`wbwu5& z1j$rS24T9^B=V|D!0T2BZTfOOoHPqN@O~by#$E=C&a?8=Y+`i}vdX`1yQP!aP=~2+ zXPc4Rt`K{hVh{ry^p_pC-b+11qveBG&%R2w7(QV1g_@ghLPB&r1e`aNvT!bBG`7JE zE)vg>O<^0Lc#GCb$t>*s=G7j?GF$^91!i)qMw zGWW)Yl<=3T9HsmD8dS%mZ?C#e`Z0OTV`#P7-iMJx+b71q>Q#xSP)csYo1kVbk$ZI( z{aR=Bmlf`NaSs%MYw2Tar1%#9+ruKY_(O$)Zv zM+%TE-y1Hk`-R>Nl;fAP+px4II|ImTOWXG6>(+0QJQ6NiXnWRF%R(zH*ssPqfH^=3 zr7^-fM=g1py;;yHy1qn5a%782hfKtNFO8@!f*7Y|vM7O#n;`3acn-dw;qfBPx5^*? zc^rv?Q0Kg(EXX)C9hP>^ksFu`H4f||^Y`~ma>ai5TR>kN9ss!9`K%4c>+97;nqAXvs8JKH?iND$VYhLuqn|?_6bA8KykYIoM@s zYt**|BCqGDlKSL5?L@k^@RiP>K(5)78P&3NEW1ndG`>?ARUpIMSAwhU)8A($P%Tz0 zFJ(>4Jn6;?%vQ3hPU(n&#|>WHgHq*f{%pmdGO$ekF+}z*Q2;z9|4Os`X?+YbATJP;)#6zz{wgOiuc-0B?^~cT? zISDuJG0Z{T5#1BG-?QMdnmiG~r|yaq@lzjaeFJOcem4ksev7D~O_=L9_+fQw>Z~(W z!MPVFQzERtX++1+ij{$4Ux{cXw#P*%gw*_F?FV=Jnju?3L15`SjToAxl3LrbR~WrRR=a3uCQ!T~_lEfqbCW zo<68se_0Ti#y;{#jK=ri*Y)eDSpR_HGnJY-HkVnouBNygt^FBJ8tv83qOo;+bIA?pH0yJqxdo23)s|7yf7)?AgpPZarFbFYW!st0d ze*K1?Ddfwo*Q@c8KL0D4vGveEv!u?{uG!WGBAWUbEjCG4WCy+<3&|XDEH;r!ca7_*xGb zwE4n6jpn6LZHZA+7z6e&AO0F?lb=FAPLjlvEauJBYB!&os>nSlcQ z2{ApL6?ea>HnO7@L6-p@4lc&fx8tL6FHs6#gz?@P5C!u^*s*(grXq7VXF}u4TOR+N z?K?tXO%T#^oNY;9rbS{*^Q`MxmHQ;#X6uc2RcDbWE=Fac2YOLUW6u$Tj>^;66{HkhwKnINmuUmK=jdbufb#GIUpg%pFcX zF`cg$y#nNoZiI~Rg*)(xnp`1Lb@25fKe5)1P{P`wLMPB<7|$&u2>xlRR^5=D`$<^W zgwM`Kk_?hHSsyzXkrMECxzGyYFh7Q>)}Z?=lc5kvT;#OO&qmS zc92N?R3)e5dM1~mNvBtD+5G&x1W4TwTfzl`kgIVVtgNCS)ev3U#?GWWU~&kbfS?Fu zx$@pUR#e*P_=zsQjtFwprz;J|6mvx9=jS`*R#ebUOicWzicYc5$@(boRovWxur%Dn zX;OEAZ;!|zTZZ}G#N?!zrDa&1N%tcwuFZ6Wp=m^%y$%#AuRN2lnfRGxH#dl% zlNnc4s112vD8nNF+Gni6<@EH_2BfQDU|?+T?)DAY+SwI>%q+iRV*2OHRaSVTxdwAZ z;xW)?TB4$&{=@35xZhhGU-|34=7nY7D3CjWQ(IrqZ~RJ21!9oLXJ<|RCaM2D2|+a z9E>}>^=11u<5Bcb^h0JX8|G8E$KHuQEqAk9|QCEfn( z2?Fxu3;7O>?G4@}{OG)4rl&`^yu5VaH`^l~{AEsc>Lqife6O-oTsJ;fBgJS=bxMSO@{k?x~iM0zCH*py9LwXw?@3H zV_k`1qF2G)8sBmY4B{L?K|wTpe7UL^6k`4$=6^1pZZewgScEdeLj0ez4Z-o~sk6z# zu*W|7J}Pq!VY_RR zq}^?J#VwMPn6s+3A{+^pIp&!Y&Y@*sb~iOc9Wpst?Iy+7iR}~GxluB!Dig}OzVDe> z^w{qBoquj($O!3>?FI_nJQYFWIaj-I|9Gdu%l|eJH$1hwS(N{b{*J%tlVa8i!%+D5fQZ`%1GC^61j6py`=!MZq+GxXwTYNwR4+SD zwf=C>D+QbqOCu0ji2a@CBiRFqKzAaq&c#gyoHLP}N@sg}DR<%$<0UYl)Ux*wq5tz- z;~%zuj!hdQZvoS$M9_^y}6D;bo&5{8`n*B5Zz1ly*TnX7KpSihvR(Kq=sPL@n*qR(A>|LF8 z;*#3c&vKVZ3rzQv-r5pfoGok@2A@j5!N!4xBdj%S?|Zxh$x?m2y}>_xvlCi){K5B5 zr0;Hwdq5wgtKw#IYjfdO>E7)0ZxOfKIkre39B5`487<^-dsmR1H}QcE3^tv`L#==I zhy#5Q39tUB$vhmAUX_%VHm&A3Az}UOJX>j^Ip&?(0tHjb+igPn|l z|48tmqXeK%rJ}lSO2@yay4==qM!*pK9Q=*Rj+UMb)#-!8Med3@{YO+?oaC?FnM79F zkfp}d_vG(l@y~`I$tc@xK@Nw=d1&L@K#n4`+(on)M;{BPPJv5fKCrhR3T*S8*b%?^Gpfzh0n;qyqi!*+We|A1!#e;_X~vTEs%a@7oOG22vV? zelnTJTfTxloQowa_8%9F>4UtjB4C4+zq|B z17Qicul1YD9!COcIT>-=)fMjD911RmtjX`?);xn?KOoJ!x!NA+XKS33)k04nTk(Kq zy=%2M?V3hSN z&aHi1-8(WmS9Xu*!*#7gO|nK=}b z&n71#l)2${#0nr0Mx%c^T2WI}O5>g=>*0)u5*oT!)i&e5d>#U2@Jt=-G%X02yr-aU z&S(@{IJUa-Zez3bTKS7NUFi0(Fs3EjRyZyeD%q4iJ*=4HSgo*frmO@<4Epaj?y~p* zq#V7&k!)P42JBUx0qnwr9qeQO035y|U;WK>+A;V(|j$qs(JQ6imB9q!}xad^8S2lkysNx zU1KzH_apH3M3X!6ensh`wUXc)L(qo_JvPWYn#r+dKrd!^h!6^vr&P{iW=Km4b?g8M z>KcOmTp7B{Q0z9HVIc&ms()v3bZ_8n|2?N53YUk zup{`J`;rGYlIoXWd|)=}@261zWP#AQI*XmcvEMe$jMm6`)6JrUwe7C!?GgGfBhifG zrYCkz%1u*DTErG}`4H2qp>bAJf=-TzkE?5tkgK?^xru{I1N91~ccG67Jh6=K@6DRd zVTu;+3z@^>KMh0|Yt=WM8RlJK(vj!;KI9$>HoPc^%#mj1I{zRK&D9%r!eGXBo2UFG zskChw8e-wcv*$sMD}kHCP?z=R#60v#UnZFYYr;jAp*cHL^>2mzq13Ts9s-d$;{<2J zEo8F7l>NX!6v}?em5a9nCp*)MvXe1DnI4c_{2S|p<~TXb<~Odh{trakM!sM~5JMAY z?iS$~xCi|91fP$yC!6~5!h!;rZ*z8mfljQT}x8hyWvCmMZ}R#t%U~k6Md} zU2zEW$Ewq%aQbfQXtjMrq@ZkYL=we!!l*ejx%worB%(GL~g=XbqB^T0IG4!tbLu`(0PD)SK$f@pjM ze-K}_F^P3!Q9Gb}|j$ zEbJ4BKYifhV6N+~^KbzEl$Dd+euY})R!J)ea>v7ust?-=QJF<0LeRQcGjOm?y3!p^ z&73B0csLdlv`o0w>bPO<|C;_2(@MHCbT2K(3tv5!kbw!Uc8PcgKgrWpD*KDW5b#ET zUfn&5Bz~xF_(LJNe48D^FVER$i}_sG55F$JvMC-rx6?}pp{Kx0Tv9>F(5N9NMpD5@ zwi48Y`q>$6z!DlQW}6%DRLiq{jGs@Vve`ntW*NP;Of{yVdNKC5X0(jj3=gX$rfqnu z(>vv1UinN+Naz~w=RlWn?q{hK877?^o%c}ioIImafc&Slf5*J&6HV&qcYkVvx>1<+ zjHGi3#@{}2sIBIkKwQ~L&r%0U*YTuK+Z>cXDxQ|#@JD z-8*BJ&~Nm*XZzUbDF4#e;C0L<%jj#{GU&+;4s1S`30Tt=O0U4|s@vX4BGnVel2=_) z>S^w<@ie&aTfV>1JHIhrw0v*2uOsQ zBK6RT7Q+yz(zBm;=}p4h*%Ba=KGo)Qj2I(_LbiZL5pj>PPp9kN-pUnbp;|A!>u+^5 zmB)Cal(j%{!Sv}^gE&b&e$ZOTJ>~t1+jcU=>4#insgJ3c8zd4h0h4~# zpmG}gm&W{zxiKB4VN`0#$v_llJGzxK z7SIWc|B)n?S({0%+mUdh{V>cQKy{{MXGG-+2`5Tg#rbC_;!6W4Kb)VZF@?9@A^x@Vr-q>L}u|7lWY6BuD6# zc~Ts7wn4MxUV5PE-X37zm^Yzkx}5FDM*q4m?FJ#N%+C-h1BGTgQTvBH_< znwMdu;3O;LfreWAIKF!TLjs0T>^By_U=Z;}(r_zbTewqZuKrfQU=~1`G4JAfWVQkowex6HkZIs_3{`qnc zKJ9x(!tH{oBNFFHn8FM{2eNaNy>J?e^%!{U)j1@e0e|^-Al+dW;57Zg~q7`+#LM#PW0?|J^ zewtzhAigorN0yr!_)@GKA*3Un$gg|;?7i0FLCgIRop=r)M11p<$_RFIUgTi{)F>6c z-{38t`yyQp1I#=Z6Y6{NdOL%SW`Iph>4vw~uuq)eS>R3yw+G%aIpbdg&7t}G8jcW` z)$f>r7lGtK-88%5Ba@X*daZwt@v!1O58CAQ)alMFA0*tqW{z+lw;aICh}+o*8Z|i(E4QTpE7#%trBOs< z24r-boFU`$_<{)~nawwMCnCBVygt~xB&~lgK6_>~SdIEIZo1=KnM1gEUSL#<1i;YL z21+ge!^mck^Z;M5=Rn=is32ULwM*JqTt6G z6wfq_`F-r=jD0uS*9U&+q(^+c;3v@~iAsZ1Mr_WT-!DK9DI8mF?AxUd8^Z~8ZMl1Y z?b(!9Jx~A*9i}yI{CeaROmO{wzBa}c$lpAG`g{5|0NDSr01EjYMLa{-CSPVg@xmQ7 z09I)n(xmWaJHO&Rd-(y8Hoha+mn?>+CTAEp?{CcA@ibRAN+BgZwijE@E$cDgFIl!b zH}PmPgeAU8KML0DaF}aO;vEwFM`DpA9a6m8PG7M|64FKQKB;aYXbIE}EBnw3SRw?e zcltE6r>a0Il}a9eT4^fF_+eDL58jf+sm1N*icQWtRHU-M74q3Ls&bppHlCrSyQ<6~ z3bm4OEbVwV>t8Dh<{#^!-`%yTDPc^+AI#n&aRi@g`lgOXWp7-29|SICDM&CDO05e1 zEkg_$pRqX{dduGD$C8X@u-T4@T)%V@?%j>7$JCYmb-T@!59r-9i1$L5&zGe$x!ylC z@(L>nHmO@3{m!N?T5B?;!zPEf953a>N2AEL6mI+U1J02RX0Ik~8)%MYZKx!1MJJTx z=R-h!aVtL4Z|{{nOQdo16b=F_>HcH~YoHn^;JuKbo2UDDXMtyHb-tE{%U0Zs`TCna z5ZWIGk-0sXP|+R$;}M?|y*FFKYGFq>V7MOJHGSg8UHJKc96Xx{R1NfnV(@IY{`+9W z6ZU6OjQA(thz*ytJ*7xB-m8dVQhhI0j$-bMJ-f%7mqldI#K$L0ySHNL%}EmFB@l_c z&XVr={h8#_3+m{f0uP2g)Iq?3l12It16x(IW#$C4*4pw6{Xs@3V+8S2E3w2O_;Ryqlf1R=4=6o@)pWwkHlh zTv>~;11Aks25yf$y4QNqU@%wquUDS9y7j2=ay9yMp9{AMNq#GPXP8}kV2Z+3EseaK z&1|BlVGgIOW(3>Jy8j+NND02SSRc>oe!Una+&Vw~f?dCZ?}kXx?;gMyl|%{fzE`() zPY@2Za5cPp?WujPXVT5g2F*x2L8L_Tt7w4O^;K&~jxvtNh;q8g-}SJD5B~9vi3Ama zkW`ZMo=ee-C1$>UlFvf@qb3B#SXQ=%B1cU4h5{f`2HwJ!FNKHpQxxTiq*Q-Nn4jX* z`BWXP%k)`0Aw=5Q`ZrT$#gYQ7v}(V)IX;7;2iZJUNUG(PiRj?*y>A<2t(fCe{uNID zvEJf9GEGzu<}38^voj@fu9RXEtjNt$!4vjWs*wyj74KH@xt9`Ih(4~2tFkl!YdEF5 zo&NKZ!XK+VC-_A7lc!gqYR+U&);T|lEbqs>X)%UqPe!Nd9Hy)S2lzGvz{nnJH&?U3 z{mZzIP=z?L-Y2?PMX7;@1Bg4`kKx4G`aVlXUae?YMrm(YjaM>Jn^t%L25mqh1`bZa z(ul(bMxXv*8}O z{fs;P`&*wlf6w88#IR@-WOWEH+y$GT@BFvwWD#4gDLIQB&|I z>GSvW^vwO3_Qnh)o7{soU(4d?NlE|sTt$+aPn&I9g!XuSm6Sgaj3LRp*w?(GA|$r9 zj?UfP!3gpaEz>D?G##j4d_jbsI^+K&Q^C^D6^z zmt1}iG?rfB)2#25YUNJ_isfM7zUT8Tp~XD@mQ0fTmL)VP7SGTX+u1COya)>jo_JSx zl$No_wiA@plY68I%DvlESoV@uqeoFtCUccaKx;7RKPC1%-OoIY8g$KPp)%pJzTe;W}r9Vr9F z#js;aC|{mz{y$#_>>tdy?dx;)JT9;Z{*!ZVll+m*HlaDRZnu7?4s? zV#dbHQuTpj_P9=6f#}rmbDi=Ws?UGU2w-_#A>6%2DWHZ`tOZdeznn~T4}f%6H_GI+3TvoI$8u5AjB97FtK#@ z>U3@FI)s@Z^;F3BY_N`^o+O zbdCtH0?P7nIH6;_Jvx;zgskYh{L;uIj&X!*n=uAyWI~rFW+A2fcb;CjN1~Ef85?|) zH#Zvj*U$HACwGqCvQ`3Rr`6b+fVY9kq{OfH{emau{1fUaPu1l zIZl-5vNqle4|4T1(!0AbyzYeF?Ebg$dfXA?a)v<{nP=wFnS{7P;?dZBYb?1jBKlyc zuw|Qspq)Hj>PAgJL))@CgB&`}3Z9r`g2?InuAMV`>aPx`5&f=m4A*;D*6hyybD3nh z$Vwh;z2TkS0beo0Turw|-uJlP8c-|=aMLT!_^<>>aSOKoCXR#JoHzVw{G0G3o#vC< z2#NAip@hj}(fG0K#9Vn{GvR}S9-P~}G3v*nUdai;XyzzlEDX?$jz61crc&Fwm=uh> zb3OO)jGXQA?sX6k)A+rYYoeIT|Cd7(`#7S|EiMM`9ElMogJ2>D^%lA)vzjZ&qLkf$ z7v?f!8inu)+D{d##bf?|F*Vi6MY&1JlR%`%QsuX4b@nUN;FsEAn=j{AF_yvch^f)& zQ*IIH%+UeUJ!f3(ZHO$}GomFvU>Y@Dexb5Y6yAC`t^Pv*zu4prdX`fr9xFrq0>Sn| z^UFL;wyZBwY7Ujb9&1Ct{1V;S>HQx(DJ9F~CufxCQ`q~k&lgbH~u~jMey=|!; z_V&Nq+BuABxZ7#oaK1jK1~412F{OTgI*NMNTKr{$jY{`B2w=^ZJMkV(EDZ^27B$~4 z{%w5OQqXY(wwM?zeEIULa6uwyUcYytB~}lh!FU9ukz-LcQv3q~;sCWH5Rh`^JE8Ro zBK8km^e)-0-mvaRB1=wfGp*c@p|4iHVD83-3n&k%NsU#M7xb6lF$pN*is#;HlBHNT zm>B&xM|!pef$=_()8;4C=4tCNKdp~~2U^0GIqlVS*GV#`6J(dv`}<1z!RhL#+F>8g z^HwaB2fmHb+@ae?#W#=$)8FG%YAJ3~DK=Uuupk1`gCC#MSzMS5hQiSueaK6sPc-nE zPr_43@b+&lFmIPxelJv21}^S=w(tcY(#sLJsFe(!q;Hn>4sAbBf@Y^6C*?0^Q*44T;2GKN!*%tb4LDYEkfuf^W z(y8<4a%7r)#t*cx*6*P0#_Dm_qf|s%_)p)$$KRcdXDQu!c&JtdVFuvOwmG45nvAhz z5hVc$PhsfXo9+6`kLZ}SoiyiH3t$>Y5IlcXeh?nZ8_;V^xblDa!L+sCFi&}YHC>SO zvA^kEV)9{Y9tM%>Qb0OKm_-A=oK>@E563QnSLfBUYa~&T(kklfYX!kJ(4@GSQNG2p ze#+_4;CSl6;8AdK^>$>#(F6@`j(75~<36gjFN|$!W>fqZ-&O_&-w5;b7k$^FaEb-- zVC@E3^`Hy<-V_UT%rF@7auh{S^KiA(14L4S2U?@N{(?DOud`%S?|lh*kVH&##Vm5W zQ?q~SKjZzH%YG}LK9r;x$^Je?7z#__fwJ+W$GlpnmoNHS$34+S=y%IO6gSV{S0kyY zk>frA-{9vHra13Y&+>7p7nS8O(lbWe+^5$4mLNa%74OS!W?i*YdI-8mP4eUBypZcJ zN)dt*@xnBQwG@)_dp@diUkOVgyijYuqu%tinV8?Wz(QH;6!o~LrUC+-V6$FJgMywq zbxT6rhbdGJL}D>vGQz0rb9#9?M>^>6XTUmcUTypOHVFNYN+tlgXL< zyuCB@B0_$1gozu=A>)aLdPFdae|0?MLnTe&Q$a>~KH_}hHI>)?yVUjnTt@DY@BknUgDxNIischntBn3>~EBQxpw2F9@#v79D23jY2GsIi%N z6s)1Y(L6K_MbD&Q!il!Dl%)PN!rT}~354DazHzoKZYG&*VL~H2DLc8p1TC?Hqc9|j zhB|O}r$t?#w7l^in})&D^efi%tIspZ3&&4y>|o%>$K6m7Q(d1x&_yElkk`Za@F6oo zPP7Oful9Txl(z?!9%Dc7B(+{Qx1N^*lEAfEn%G1;dQxPEE*Ro%TT_Hb_tgwz4aHT) zpo(+a1R924kW5kNkW^S#7mt*}yJupOf4PrNDSC3*9eSfoC&b+drvj8}#v4*o>u{si<@~WqArd;@O~di>%PhisMNo5U{MHU~XOYht zYN)urT z!YnjKx2iFti?e>N(=2-sZzj-kYSne~-3Shu8 zjzgE2R=0E1ww-zbnB4#u*yLX?VCU@wAW}}}Ko+GC0Ov7)6B%@1z`JCEoTd9Swda@0 zP=E94dLkW;LETc>EmmoQPy3oGF38IA{)%OyE-xo%x=QBXLnv5SY9A6trP#!KPgZM_ zVq$_IYmQxDkzB(%#bmV%ViFPp+Gy&?A3TC%-b*$1T3cqPh?$}wxksOWVvA&5qXbaf zFTeMkJhpf}N-xxQ_g|=En1d?RvN;thg_jEKX{h#9IJ2X1*s2N3pQW6UJr6Q?VLiAy ze4z}Fl*Pvz98I&S$+{+lDgigISSCZY&|FS#CKD^05JfE)R9j0ecbGhwa(g=vH;g_d znH=$Fu_R225AQxrMMMTqR3|j%n$dA7Wx`Q{dmj=i?HfLIRS>_NlCregHgsC*=Fdb# zW9(oOZ#lOH1r@kEpcXf#Vd?mAEMvXZ{?tOA{PuuyjkFRT=dsCuXTG;^JL*I5+$n*s z(?V>vIU_6EsDyMO z>+;`6t2RqWIcZa?D5b|JQtPu0j9XDPe63tke^K*wZo=|&dFdfan7!sz=fmErTt{@B zG8nXD3nR+rystM>9G)U3piUP#yZ@+JaA|UukWlceHv%j#(UL0tb?8jB5>!7Oe3?XD ztwLA>b({v%wJLYC1Y9Te84D;PMH>87bSszk+#*Eyj$STSIVR7_aM<(mUnkPo~s90e;nYDjZ$5T_-yB2_6 zZtw@wkF@NMoRZn%nfsdmoSzs#7e%HDuHU*X$IEKZLPavdoe7#RF9_C}$#XfMnnFbY zUECgAJ38AfCl)2yaozKI{XrR#9weeZp98YNSqV7mya*NM{*9#hYK8D@uma-STA33) zu+wkvtD)Cuy&gV0s-@q%Y?d2|>~VC}57@xo{kf%BmfL}7(IJ|3`yflcC0%nsYM*J3 z9=r*mFSYS>wzBg3&d?(ej6LQhKu5UzJCM&Z*J9!HxOJW^rJ4AR^x?kvBnBvN>|$=} zE#h23&4_lnGC5>)3KaTs2G3p5%r4iXVW+nA>tTG}xzfp%fIyD6oq@WLsS`u>#c+?j zAY4Um2Xyq8n|LqQz2n;+dn*y(n;Y)3_i$CNvx-e@Q|$`BYjywqqRvT)W4z)M47^%v zfJiKAF9!!4H3O2DDp1Q`=!2rAk%2MOt**D^x*2PRxyxkMxLhb^UBCCjouH|Ur^W2f zPF5R_*@5rtjIR9>CfdEI(|tHVgom!~or4{2w!6^O`V=ixJDXiYA%_AgV&dlhBBMX5 z_8(MP*)#s(<2u$QOZlWu=deyGQcRu5jQZuWq1s@&%xW@DI7+mM1op>*$gmJobZ?N{ z>apHQY@o=@K|hmq+YS>ngQNv1<1l#X3)}$0pqV+OM7ce6XiDC#>O1os9#y&R713;H*hV4{yA zx&=8Gy`2ZD%ZciLYGaG#1tc7F;IFfmJ)ds6W}2=jQwYeZkB5y^k!+P~AParQM~3%H z6mBO?psS6NTXq6Chd^}RWqVvxX9hv8jx9{IW)!Jx=7Bnl-?#Q#Kwk^KMms5N!1ugF z#UI4Z1cfH99b^Jj1i*ZT^{>2XISPX>uG|z<@CF9$sjfS4YNL!VQU1&?9W{HOQS6WF zE@0I!p)u~H$O@e&d4OO;+8j?ryH6$(G1h*+>!XCA*9mNgW{my51n&P9Pqp$s^&Yf= zxB8w@oPV?M0vm|{B@W05pe-E?q$#^685ia6~2gvq44LMO)JRy?(COy0Y7Dnje zi$USZ*3Y_@sa*Bu@a=kjJDegSH3RIh#bs%SQxF)+Qc5lF+apTPsI)oT8@Q5YH^My; zr$t}=yh|lcU56L3i0D0z@#(`q08)Zr^HPkE4JuQE5G_zfMPwwIQcW-{whPZr>cp%1 zd_!~z^<%)YUZwD_PP? zS@}~f-#oFS}vXqGyi(4m4u= zoBM-Kw%PH7j?4)zuQDG}eaN-x^+$<4fXHEm8v4NmamP_*i1y-k^oUz^jWy`;Ln+l@ z0U@L7G?fA>!QlDT>_cGEJR82n(=KD{WCs&L&5B~cOmrV$j}Hfa?HjQe35=ct(`P8C z1hU8cRG7K`WX@4vnnxI++$V!|Xfl_d1>dHWGmgeD*8*6;Hgd5DjZA;^Sy~8QLrah)FZz^rv(#RCs8VHITpW8@ zMwQjwdVBFaTxBCyNTUeCUGW)#`g%LE>wxAP7Mo`iMc~!_%Rr$@0k+TQWT4wFnQIpQ zSG|H|f4ZJ_6~I&q5(1BBXx4K!ncvRoFi}Rj{wXql1Vx{5i*AI6zq_Llpim&hh5LSs zH!hh-wuE}ci6wX*0@`@KHI$hbM9+?%@y3XiBE~w%zSGz0=F24tR~ZCv<8}}rM=1?y zVu(sGEh(ucsP4>}sBB_ycs#BR*1O(Ql$*$ZIzj%q5_gW=v+ulA^leOt|?DMVOju2sn)tip{1&>uC7$AMz;*~ z!F)Mu%S?#ul+W4bMjSnOmVdM-v`WgHTS1Bwv^#I`4~yhLz>?E#Gs#oggc!VN!UI@( zRK4r?=>`8*BSkcyx+G@C!0q9r5jobyUdF#pH=Xy|wlhK)EDH)^G9*$}N8AS<*gNim zZ1REeq_O-qJGV~)^p#}6(S!#3c!_`wA(+nxQw-@(c!SU>Q|-)cumqJ=TxAtx#}xb8 zr+fu#@&5l`on?`y;o;;IM^2#LnHWBt{R`)CBu0FcmbU`e?+0t|_De9CKaFy)K#krK z^C>ub_-CyHy0x^K^t(hrP(%S0iM}@H4%XTlRQZy>jw}0Z?G5(wuWO5;o10sNWT+xE zBxTkMmy>~kU(gnb+Zvwl#Wv5&U}jqizU&1xh+Vb|Jh4V2ts1G<1*E)Vl0!as0!Hpk%E z(%%Y#m8TPaK=CsTKuyH*Lx!rfS`g9E!970)ML2%glTD4!s$G7hy}0Va6S{oL3_TiUYq>cP3GBnD>$N7Q=0F+(cjW@avj>z$0<1gHs8!YQ23} z7$BqP3H2-oT<6`H&v-GWr0o2_8*@A)e2iXvblF!MjN)=Kp#Ao-Lt^v`00OB<=+ zkPl|wQ&Ye#9yS~AFul|<`y9FlIhveKuH*ApVC5&RQgZ@5j!vY&Hjus3-cDWmZYjg%uYUdzAou1igTQPdI-OWfUdET?4J>Hg3=1$)0MHff^0@JKO&g2Dubp0lTs z+)MS@yVl72PuUmv1=)?r6cCNUE<5mZbrI6X20o|B!lY~m1!)YM7@I-r2i}Fk{Q>G@ zBQLlVp6}}teq?exMS6{>MZ)6jQ(5~W{}cGpZk+{vyWX;}urwsIQTIWKrA^|V$9h!z z1$aJTo=14>P&rtVgU5>NnZbFRI=8kyLPpcwEsV{-q7qz%?L*UZkE`plZ~;@d#1O84ntZu`><$6I;*^CtV-k z___1_pV#`G{!x`4e*o0!@;`FYmZTh)S-|B^We}TOp)TB*)>qVoA&{vThoM z36%PK?B)7$Kp1$l#jL%M{y4_O5^k4HDabd#o+EcH0ofgR{1NtXNJQ+Z%B16)*S$&h zauY`0Cw-iqZ6Ti?^tWW-b%%FzL~dKKbTDj2e5HnfP@zo7o7d@@FA%9Dh>Lj8jBR?0 zkNb^dG6(HgqV%ukHc4EL{6pe^da&1d8uk+BSEpk6$)kcTfi^PdQ?t#6W4cb;ncOwa z4uI*S;-`~2n}cMDN}JI(Ii@SNgJp7rlOk04niofKrhv9l#9c4S6W`$Iq$#@{07A$ z$DwRCT4HgW=A%oolq7af0F*ubT@_0TQQ{;h8`xsVCxPuLKE(i9W04(3o`h~A>XK3r49hCrNvQtp#%>sZs zMnj`f=7yCS^X_aIaY)_mE;4$OSl;z|Qz+u^iCGKf} zpgZsG?)m`QV&lJriF_Kd{W8d+2UvgP1Uy(0jl0J=>&bu^Wp#Rdc+9XOyd!89*ml$8 zMe!U!K09|KJ;Ob`N`k$Wo-plgC2S=WjLa z&*!Jj07M7ObYNj-*e2DE;Hz5Rr!HP>H!-mo)a5?iWnL*P#QoRKjUGW+{O zie%kOtZs=Uaz0#JH~d|gfC$$fH~egcGQ+AN1iAwjNLHVX{h>e>S*0g8gP;gqUn+ZF!$X1&JZ-eh- zHEG5?*ZBwlRLR1tlO1u5_>Jy&?`;QlydqNp)-ON?cDB3s6*+=!!t-@BI)3E88)@{H zDk-7OL@L4%Mlz^U?ik6L@3@3dSqM^MSrU*~iZVR>%C3%&hj0F(r$R|^Aho%1)ipJl z_~=>S<`<$0o}W9oH#B2_86FpHozh;~r7HY5_^{L4utMW=flhS14o4V=?eq1WsfZtCM`*S_;>Kbo)+Uh0{LQoxuS~UCM=#iQ+hF|Ns zm6pIhH<=L`!M2 zYI}#BPfYT10VRhq^L7BxyRUKIb`zi8q-Vyk=Zi3V{fGu@;=2LK9;Gnwyl)UAQu=&N z-kjwQQ>{q`d!vKDxxnO(i41U!?+7*s;76Xz1Iy|BE-*&$R91`_-cTw*TI=LG$3W9` zL(WGsS%sF8s}a;${;C1_(r>zFCdIEEXc*XV*cZYrcfktY_Qink=^o6p8My^Yn)6V{ zUkr~CRu^Vgj#v)X0XXFjPM9+PVg`=3xZTP=*gfJcfvGV2?oLNnwW6Abld?qc|J=Zv zYf{qvMzJK{@nw;Hi5aP|SWdNVMmQ0}1{lDN+||`l91!{urz8J}oHvV61=w@*y1)>` z-8g(?QDQ&hfQ5{=i{Ey{;Azbqgoqd|QdS~(hL}pMkb=g@Z5uu9>>rQx*JAO)(nu@c zKE2Ccc0WSJi9YSJ=W|JVvqxCj?%Z+|B7?)#^v4Rg9mIRGhig3zk6xSX{XORuREIzD zylI>*_f-O|P4QJLXvSo!r3eq{8405iyX9^M#tr7$zZvCP^*tr#&aYxH7B%YR=|-ca zBUBhOV1Hj!=u22o+dIArjYF4>`QfHLDbgfmVD6(QxWx~zf{uGcD4np;>Uo+eEfYN8!2?_@0aSjoZ}`!wctkc z9K$vsg2YWc^E9Jlt#K8QwxnlhP*V`9_5()u^T&LZdZbMSuMatZ6gkfY9yhp(dW-ah z43l!|c<-@&*uTM|``|8Ftj;U^q@X45n^k!_paD!(X{RJ~~2CBJ?x3l6gS%VI6Y@XT!f5 z!b2=dH^CZX9!in&8hpU-zuXPF9Jn z99TN&n%AdwfGAr!%3$>Z!h5$Y`u zyr&y)IZO66hEb9?DF%bwjt)u9(GcZIBsnWVaK{&ulU>V2VMsynta0pC}F$d(#0+zPR? zo(xkzF@>j!g27z%fa?BHK~V4{H5&Vhd7W_}p2lProM5D5D0&g>oFj(?v7y1lL<=5y z_rvs%#gWm{+`UWWRli?{DM6p^vq(z6B-ukVjdb&~)zVUS@4|kNV~C>75axK~^L`(E znQydEdc4`;%isa7gY|IS!?9}R_V(wpy2_J#QM`^#OyDN>d%zECRYk*KUa0PN| zZX=7qcQL~%-l~bhL%=^+%Q_-&@&$)au0WV_>aeHC)Uit$c-1b#qwLYnf`4)xxI;Vh z5Wh|%s2d617vrZVG+KR8qj7d=3o%1DE?5luYW zmIQuu5AX^h2`=N}1QkW>^zOZ)aJM$VEi>#O-d=e8<+z%a7FfJ|fEi&D+?F1SxEB+M z=hsbTc2v>DpwkszDpzrm28!`{0KP7UnAG$ed$8<|t;~`W1y{X5TiC6WM|f zeIm(~=W_(93)|(tkibKqpT-pZtmEH0!DMe<%OmQ3-A5a9&n^?HWf2zPcT=Eb|5gxv zdJ|K-5s+80^!o2j)?&D{6?m^;AyLCt<}wOq;3K0Yk7X2T&f=AQe&v_mH^)E4iy3_# zfHT#+1tLgvCMZBbQ}pn~4S$4JL!TGBCa0r7`hb-}^;%FBvt<&xF2*cxY}uWf&kai@ zTQ+DbcBr&|>sJZ_-#{$R2*cZ#FtdxRK#xank_QCCpeuFv!^A6lSs%N2IKhs)bVgGTJ*5o85?^yj>Kt7p^EkZ}@qjhYkrX*q~O$1Y}`2N?|k0?1r~;+z6=OWFgPBLej1A$uBOoH2tFK7z2T*SK){E> zw<@ayl|xT-(QSfw61=+{&>C`457oLRVP#K<;o5hG-$W@ZbX~YR+ZIHn;%(eAi^Ei9 zVe7wLN4!3Np?0(VK&Wb-twaarlC3h@@rIk%Mslc-?aiiYwr+CZ;(g;pyP_#895liF z&EbH$dUai;Z{(r0Z@PQum(%{56HcZ2R&V-iCT(vHvs4bvGs-F?O7=>gHhtjC>O_g5+;H~Sfa#MU*Hp24 zo7=DJ)0koP4!G403%JfLU?kmF1a>qTa_qFtIj=iWbgn!s9D8| z!07|5#Ltcs@~=GP;I-y~uZ9Zy(I0SHZUlb!&A*k3VZ(q(3%6ocU^t2TbM||3EAJJS zKVg5JYZ7$6ugCsG0iyCsHSk9t-mLTo4)XnkFSR3eR}{?~MwG}&AZ zH z6q97-HZgjRr|1R?$cT*hM2mBI87H;fu^j*(dZ`Vt!m;qbYadGv};A zDt#;s$RkH+p|(sI)O~+MrER~Oq{vFF;aJ`_$y1AQ&?4L5;3nzYKdeYLOi7uOW8BHY z>#E%M$Do4Sk(6Pg0qA`a_SL_97c?dBbiySa?cTcW_kc&Clava}XL^}Z=~zGxq>5K# z|Dc;c;o7wZpDxw1FG?{B&44?&-(`C2m#3J-wjR$?T8G_>7$IV7!GUZzu{*7zvBC2S zbBtVLkqh0uenovLwEOtGdBII`IKdW#_ek&!e?gp0tUjA?N=}IN8g)k3K!l_R<>?e* zTvk{XSrJx%6$YwQsLBBBd4CCEy$G9u^!$nx7f4!n?elhX*aJa>|GbWA4YFN@1&b^h z7;nL;8r0lI+PG9?Xyrwv!G|l;LJW-Zg;uR0ToKXk-Fu|GW4ELR`bvPSwyWf)Ptid3Gk2HFLa(hLs22VPc)C5pQKbMle)Xe`22mrY$ zkfar<7X^eE1)n|?EKDms`oSXQ_faQV5?VvLO5iEL+A%JmpS)5{}8SvH&#=E z%o^fnuVRcW<5mrO&#k`vDsKH0#wpR9MPx{~EJIIi@T7abUJpl8YR`|4CVg}C};|DdlKLYlLUNM9qxA-r~uBWPsl1%@p(dfTSa3NU}y72AG;t{*o zZ^$VQd>y2RQB@?*F$I)R*`TSoqAV)pFA!daOZGtoAcIS-)O?}441e1F07P7?Ut1MQ z4CnC#ndmkntRaqQ1C>e|#x5D~77Kkoi4CD*GGPlXIBC{(2VDD}#@ z@550H53d}VW*4vDJP~{R!#Lg5*dRy@f(;t90Fg4a_Vdk9e)JHgWR>PVjHWenWcyD@ z1{r#RQ6`M&R6FscOY?skqnNLc7qbq0xCTY}Cr6VPln&njp1yfwCYnyznC4Zp8yjwS zdxVjcNI|#YMQA~j&&lkl&;c_wJycq&Z0>GT4I_KKZKBZZn!4-PTNxNq6RCWsn|AjW z18VJAbXnL)Dx{}+vgi8MVhA@m!?D|JbA<(F9)vNT5*~5Ec4@6iADCHAIc|?|2ndM2 z$Ow$T=%MDZj~M+7h{eK*69ew|k3gP&&7c@Lh2*u31)oRD<-eS~29@-hCvb0KPHw)^ zKBNfOO)WW+08~aQZh`jQYECR$*RHDpCSeQ1;Z);G4SDlnXC*-8Hbxib$eTo6r}yjk ziblFya1`^mB}_#u2m3B3)b z@N*vDez+)K)&s))KGXlcDv8+=tidOY z=0n39ihyEP!1)0q{@RY=y^$>(A|Zlw@RCGR2bX(yLgmFFbeoS(T`AFJe~vcWlkodp zPA?+0N7Nvy`xY*iF)>^h?J<)9f>n?UA4$|YvZQRpTvri{!A>!y3HeDgGZ=xUAwJae z6DqG1A?qb)FXIm>lpVAcqo;DdFqCqQE}q-Xc9O-R;=LRjvoR8|wHY8ya2*(wP?N_8 z6U?nr1p4ju{Ll9133HwgnK!GXw>kw(>Cfj}>QyG@Hcvu1#g9-Ic4noJf%gPF6_tG} zPX`$-^G;Y%RnT&nbJgRVi?r3{PlyKMMA^WF7~Uk;I)1tz5B+vC#(0@efNw%ts`)Ey z$b1tT?W}0Z&(pt&RabL0bp!%i2J=enlQ7EPZJM$OOvY$h(~qd)xUD5X76!wA=6p@>n{idS>H7$9&KmS!uIcv|TXMQPcA zikfhk8m9`*`_;pGJeR=1v}>``hx`# zxA}pL|5FfbG3Ll)VyEh6=jk`$emUrOt`>=E&y;z|)*caUVz2PqXq$0}+dL4#YfXn+ zchcEl+qHDl?CXMkIsCRUoTB+apXenCif-e#4e7#Cvzf=E4URavp0=KO+WF84O{2HX z&|$Hi9iq=;y&OsUZiGR!rk0HMvNcPE8$r{$KP^D?bK8|WD z(jyYSMV{bEH=23cI+_~d)*fxTXi0jAiIJd{8qja{mGrkC^C#y(FQRj;yxM4S3XCU- zzNW4{>E7Z=RHUK(*FoO~r&ge=RqZ(wt$m=Wy7`X>zqK{gY%|}rsSUhYr|tRa+#YX* z`-pHe*+E8=dcT`Nxy3!t=z4^Adb^d9?alyoM1=3qwE1l03QAHO>tIHAx?0lr+OSX_ zD+}#^K8Jm9>q_mDV(_mN_V1L!8)YwH-~HxC>&YdH`FN|PeY$GvhM>(AaimURzN6z+ zc1Nx+BBg38N30IFhkwEZ+NR9Z6VtsiS)42d3va5jp_xcXWpg)-!mW|-W8N+=`~HMM zYb46zbhLj|(r(`xNA5CjzS}nIKlUu-Lce9mBXrAoc@a< z@&sSAK?c?ahIIgX6xtg=28{+M?{6qz7o(ufj;^+g;wjU&fM6hmQ}F)V9ZE zddO^uEWxGq(p-@)2k;zrC%UosFCUz2k2lks-?N~yn!1d5L@;C|3f=hJ?!9n$oXXZW zlMpFJX8`lCREZZ^)9&7yPFJgbF<*&1D#q?zoQ|7CwLPSp>$>!{aq4XVQPIewSpG1g zN^*CRy~O26LFU7B3HRcCj+9X==a!p8US?w_(gYElYxeqC~mV=7e>)ePs;rewiR=vW+s zajG8BM~QSvN&e3TvGARosmy$*k+yEg0Yfg!zsxNl)B7r?R7ow&!oj%|DP^!YY`YX+fuyW@z#s-2cp)(mgz>Pz4B3{iQcIMx*dR zx>jI~rnq6V5!vqc#sLT^6X1$5F+l0~^m~8t9zX#BAA$83HS3yQlXB3d3%Z0De4H7S zaZMZjRz#pZqr+RoYr-lK3oD)ZW__>9B-` z4ml#;3dyk8%6kaHI4iU^Gz1>sp^YBRi36quoQqIZThivN2y}-w&F-YSzjBfmr|ERx z#s`O7eix!zfaViRjkAHdDf!rulv}#iRDU+b7>!p#ds3jH*$`PZI%aZOkhZxo@(qdzCE-;yfI>T2JPg}6FcXKiBE#Kag2jr*h4Bx*?^I`d^s~6 zU5znJcBPD;E;KgVG-RsKa%&Qb59VJpvIo)BkHqsODwy}n zju0@}6VRc9Cqb>xtzy3AO}TNlY@l)T)oNaHy#_FAEJ-o}vki{O5EvNe87o3({c&P} zL2cPvKzOv%lt6E!fCHb8)(W!vjS@Kx_Y+j;6<`>xm%dNNkRIzg@|?>T8H?NUAfP|O zY@-7LDCTFQgQKEkt`UlH1xQKwcO?L++2cMzP>zU)3Zs##S0VQ$Lc4>v;HeOZ_ONb;y2_NSN+wftqxv`!*d$ zv%9nX8`8^DNa4nhJBw{Zo?~bZz_JS14ecl10L-WN$#@Q5B!eS_qe(?9l-h#YDo1bH z@%*_LAju<~6lB$bMu>-<6%`eehyG2C#uN+jq1SRoMn;D%0}20f{O_wwmtmZ$ejCnT zUbM2ZIjCm7cvNnffO8dlRdBDxJlO^3g}+08K9rNFMlbdS`@y&J8BqKctr~VWliGAJ zEKAtg47m7*Rolsm@bw8-+cv5g>D6~%@WL{z5zP4JvV3x7Kjy6xgk0tXOWyU>TN@0{N5betzCF3cvy7zxv064mL z*A(R<;kIOMDX>Q1X&uqgjJXDYCS|Yoq{l#wnj%JqY4u1{NFc7i>~NVX3K@i7Zn_ zQM^z#KfSMZlZa| zy()|Y3Gs1{$e2u~uu35HH4ue28oZK#s|U!LgVWG!kbE(!%+9~Ls%D&cbi`z^J?#Eo z=J|X0w(7z1M}u1|5|hBS74T|u$J@6b|CnOOhy56*mY+NSM9sMQchAEk3t+9TRxE;c zz1hwxYHphgt-PHlDnAA%1M3867gD>ban>2_3GHOi-K(Z=$<}s$4FC%t*6`_{-bG>x z7XI3g&vPa{AM%IbX!!dLZ?LPR&o9&$%0Mrq5X`h`oe$I8OcA*27PG4(3=x7rk|(X` z#!W&P+83r!g&o_7T6E}|(fbek2**beOyl$~oJeYVnI9o7ByuyPg1Uk-Y$K+VR3 zi4J}|lS8N9)$5xeD3)wTGS&<_$|4yjVSW}X#{enjI&lJ9c%X@djwT3yI0rHmdJJHl zx%-RQkF=!O7=1O91T0WU=v(0W>L!`8Kw#sw#N6H4Z!`-F3KBqgOlx2a)?)Cu(6Oe(J+mmaA`<_JUWKXe++b_s>$kUv5G_8Zh5z=p6&#pB!G;rNMWQs8Y~2umy}pYD zLj4iOIk7m+yGMaw5=@h}r2wXIwv_m6Ptq2c6aend$qAON2A762E7U}_Ilk(B?Riig z%k@-}kc1j-2W_@q>vs)%oExc&sccB6`W)-J?*bG%w2>mI-85%gEFt0Fj;As(S*c~Z z4K%vR+eS0^&mv-C)X0xAj%Cof!J9#tm>RSbYmIf3T=9UQfP?(Oz{YPbrE*UZwL7U! zMd6l8w1;0P!g_vuoHIf^=qxP*g?Aq>*oSh;Ba+-=h*d4SuwOJ62p)ibxMAk_zL1Kw zpod=n7gOipR{0xt`)aanb7$MOjmd7ZZ8veJ$(n52wl$g4WV^F}?>XnX-u{5PHu^sI zbFZ~N3!2^eVjI@)AvUBS6YhRoBj8EGl)vB$NsqDbVN>+^HB?--vA7<2M~bIzqP6av+kRu{ zB)xVVT^6#fXXHeEGF2 z|2e)EjP4AZs0z$0Wj`4d<0W+?F5$CqYMPj^r&XV>Dhue0EToJ9phhe9G|Pna@IRAP zk=5507{9X~NiU#*C#mK-#uTYystJ)C9mt{JbI1tcPE#>~-rgCic0lK}G~5yhm(82t zV)^4whdV;k9T^uvb8T&tCNJgTn;fIg zZw0*E>9?mVdV@YHMT2Wkx__&3NiPUUNJm>r=JwwwD(%RhCb%U%7QgACMco?p27VEP zeyl-LVp>0j`FE}2B^h)$MVIG?f9Ya?9rI~biAnC@usO~&C^}G}zQK1B1hcXTEb2DhEaHjBV=L+CTDjPC-%0m9HkTJa8AFrH% z&6y^f#b-xv^kB->KahaRKbZ}?U?E70UJ{*S4C^qXWnQ#~ zn$?nOoJBJ#K~^51Z@OAC-0iR9L&=*SA1p&0rU{K*HQ7fI4%4)~w-oA=Lyg8|97ea) zoY(#`kBc7<6xIsfo3w-BJZCd5M)VWpS$Sz!2TzYC;{`8s%*8a9$%oJ0&9I7PBjtOi zz-r#@);45uih;RmZ)Jsl^-;BQa`d$2#ZJunEr?ij|KZNdZ;hk=vF*$(Dya>}V7(-; zU>vqksf_)78;-^4%0k(rQSp(6_bO@1YwDC4y;l^vx-T%(MRF_kJKyOIjO@)5et-XX zHhcXz7)1#P;J{I9f@=msv`(hd)66?$)t#F^JcGW*VF*KU z;xu#n80fL-d@y2w(B{YEDHQl!L0{)&^+A@~!7hajFvXx}%Ld#!TAV+KGOYo(_qb3P zb<~0%+ozVrYzht*)#^x}K`422?z*aKq?UaB0Ks8{IQ?oMJ6=HBTf>`nGsLrY=@B+*+s0rANQbCAwyl2>4MmJsYg>rVfwlV(ff0s=jXgT$2!gHbjl@cM!-o7=nZ zatEy}GdxwPSH+}^?OsAvW2P|sPX|@hFXauk4Vwai`Fpb1c0l1<(&wj4JH=79n%Kf< zN;TAd7SPn)-F>?{ysECrP6VFUUxqeqggYIAwA|=+^tU6ZYr}AyIvxHj*1%%SN6~?c zBaQs60fVoOl#_;bC(Nl_W}>yQ<23q}AoYkXranKXvB6?;f-S3kL?4@2wtYlCjjyG? zUe?gMVJWyFX-YQ8&+lM=e@L%%?3S9o->aQ*=v||yQK%KtX&wz0DM5r`M;3y7kQ^2J zERN_z-ROi7_tF#xuw4R8c#(NfBAX3@5lBr#S>cQI&s|I*|G32; zW;9bs#~Ot|frD+}10XH_<&(Oq9m?92a+#N0%@us>y~NSzbu;0W_ch>; z{PR^zq^)%(f2T%6FF;RD0`UZ}=qt%K^yla2=RGnQ_mD#Ox;=yg`Rkx!B4*;O|LLgu zjU1}KD0TRVde+r>YX2|?g|LjsgZ1#8_yv$6dsl~FcU)O4) zIspPbkB9}!Feau1uDE5t%(mDadj`XTFito9D7TkA!`x5d-FR*Z-;RgPmWEcX1)JbP zS`_;3#R%s1t$5Hgu4)r@94YJ4Z2kUKeQ|@Hl!qh5Dhu7E*8M-mArg0kfTY1LhLu{? z8jLcuU+;g}4TL*PL54NbNiNzQpk#y^W%6(~=08wLS}^ghUcp(0~P?BGpGv^qu5BGA#*0m)z<|tlp$`Z2t@Ld~YLXBovJ|-cH+Ki?^Qz z_G@qws@7iZx5}xyHC2M2fD(Z`Twv5C=uTgK#6!9zU3cFLy!I)MaL4BUg zs6W&Yerw0?+5W)zvDS<(NKUusFKLwxiyP8#6X|>=f_TQ!B!1-+ILPz|{a`0`po~l_ zaY{9u1TgqzT}@_@Sk?IUc#%>WG>J%)Ivx#anKQ%4X56#yZnwHG{NeL7vVcW@ozd;a ztOvyXBX_`L)PZ@FS&~I#DLJbcpo7Wi$~tlRPnW#%1dZkP?)GE}#<+Mmfg4sU? zJ&JjDwb>@+_Z+A!#t$&7J_Yn_*Y26k6`a(U0Zw@SUe&EpO3t&{0Ao?bKrPNsIdXF> ze4dfR6I8jKJmIH*hi_G7EsGFhKPgP@AW1Xa3RPC<=K5`UupZ>2Urovd1<;p^9V^q3!?>#Yl`WqzId?`P32DcajWAl6?9jEP;LZWuBgZ89$0KyigF$o-NrdUZ>F+hHn&1Vk(0b zg~-^LeS!Ka(8%Cd(H&`_(}C= zbMq5#)e~W-GDEhfBJwh-Nim*yweKghBtrHXWu#1aR)VW*DauFsSS2(@qSh{QJ{St! zBthk}YQG*y!4{L_uio*}4LxkBOd78d---n-qW4C(`)GIRdn)k<3)_&5_OkVbpZ#8t zQXPlRiITYjiTCvy_5WFZfjsl zj`*+4b8?c1h5W`&inKM3^e>mW#V97#yv32a(10d*AmQ#Ch{!`srb;G}lOvm)M6S1Fo0g-LYR{em;>9$2*HKo8>ze#l!s@!T zT#@ruq6II3yj6n$Sr9<$Pkww(+pr4F%H!xi`$89kbm^#WLKmS}zpZwcOvt!$2}4&x zk)AcIq>V=N+zys4TJZ9hyV{@2f3$};fbAO}N8kh6@C)&feo7#MbM*LHQ+i%GB z9{v9y<=u$3aUNpI$)4BAeh6IzFH94N3_jqsf36R%@w3$kRPALulev6tC0@9kwB-r$Xv$jS$vmyh6?z zkN9#4Y33q%Ukt!YhXOWPm1Ml zcSPCzYo;5`#uD4EQlppjIvce}rz-&hO8yA_-Qk0*evjB)51q&-H?hu-%D7C-IU!Uy z{`vI#HPII9uwC8VduL~K)n$vz+^nqNM~*nsVV2TDKVwAXj`+W7Z!_7go`GI3v(e|S zq(6$E?|iV%UOHGP!kNw9QP|ZO2IFiH>aT1_Ne~Gp<1p>^Z#ftQUt=CXzbfOW3 z3usZdfGUA>(SbNVJ{GvvLiVKR-U2O^`Aex3X=4DWyJJZda{x8mp9{z;Wq4^@9Y0%W zl=cUH(yy_PK(D^X7fpt*s?cub7J!{KkGUpg@%#YVaP7PyY@LT5i}HV96HE zVcRY`g@$?eHT4_r;w8M_RgU!LZHJe-4Nt_%>PT-@w`6aQS6w0N^$X&5uX);)Jo7b$ z6cHKpW7TEcP{%RK+@mI;LI+MnuBA;Gk%`KNcFbOC8fS~WA^4kbecSroH#hs7xyzk? z9-nng=ED%WDwuzKj_FhH&^vD<%?nsWpY~z=sK%Z0Ks&` z?XLyVbMZ;Sg_ReR8T^%hj31~$rw-fYFIPnV>Sz#5Jg%!m*)D$Ds|2#rJ^KoN@g^xE zqyNOLtk1!t72>c(w6iS6U5t#wCrqJHxk{88lRK0FwQYT(^R0E%a|EV&v5cHWZSCLwZOpf4tyiL!rowDmxxxo+ z5m04ZJ}$l_IhzLRyia*k$mC@zO=6B1!;$r7i$GoIIomJ!Y|sYl9aZ8gQnhH&9naf^g$_C3C%ATv+4o)tmLDsS{M&CLM%tmY7)SF%8;G{SbSyP4 zco;qoVgqsFYpbTbdOye$9i(hu0hU7yXBFWEwS!Je`0ftM*`469 zpxMOiWMa6zF_rkVMnw`F+I;LeU)^b=Es?l)yL}Py)kl96$WmhAVzQg+*B7h_I%BrD zm^r&S+D+LtZ>p|Ed({M=Zk_S-O16ThcOzzJCHrW1v5z`U@JE z#CCEAu+vMU%9qe6UYEoNQrO#$L0xU)bS86Szpno@W2HkV&KFb53tAgO1YG)@o~vMN zID?Ad*bGm;xI+KV!aB{_V!}tyDC3zjRWh+dV_DwF#z;Vf>zDgYK5EiX7*0=M0$@pBcUSA}g%g$D-f^ec)MM@5*! zsGn#pSOp!vHP0A0_0C8BY7a@3`?GcwW=nE>(|WOt11MA%t}aZo{rd58cjERyNqc>J zJ5X;nI;2&t+6{fSQcd4tC|X833!YwJmC#pYOQUh(=!hIBls)nriJ&gnpNpss=?gb7 z`#T%B-4=a*NeMr8oIyC`6QdKMJH)G^e&P8+=IPNpA&69Avhvq!soVmR`J_MN@ekyR z=C|vewoIPOFM?L=uh;{IXWrWhJ%-+tyA>gbJM`i{ib^EOfAq3VkYh3?hVyVwwh8@w zkI9GT<`Vu|wc}u~Lp(E(6{h5=UPPD&FlOPN&q!kTEu$?w z61G^VNueW3Vnu@vI7rPMTvnT@bAsPQ9KFJ^LcG^ayQu0qR9>6ybA!j-|B6)3;AXoL z#DOuBgkjM^xta<7o?zd&hs-O55wAq_B|FVq_pz?jx_d5F( z>GLLn#mt||ZzGrnZJEVoQlrT=E0k$F+ywJ7_K6rgYJ~v>rgUWdF5g5Fjg}_FuHIpb z@3^s@QlAL`QptgEBWUkTV>`G1?ubwlJa>#$+D%=Iv;UKCGJVmvIx9N(c5%oaCQkVZ z5H{*AGIKVsNY7v81yJB6{%mNfM8ii!u8O~xS45vZh8piMApgUb{@>o>nk~o=e5Q!T zNh@pN_c$MlYS(uUQmP0xSrxk0|I`{$d*GG6>|d%x>*CYkmnoTgQ3~Q4Nf7(_8@t;3 zYgF~exJ<$S3sn~;nX=>2#&KpOL0rem{27+#Ah#}>7B-vfGa)J@B-{3j~G!;482lLA=(weD_r`_9*V z=LfAR18~b^BhLQF9Nv`MgNj4&t z(BOF}>~XQ;!#h1WjM1QXND8I|<%zUD^eMasBz`QGCs;gC_G(jgn+W+mgTW7JB}1Z* z{Z4{lR*!?NXdc~9_BHamgAdR3*2PWkRil=Ihid}`Ub;Hz6Xk(@K@zZYjypX^Kjku& zI>2%;1?N*0wpw79tVCq)f-JM4e)y>h=;42_;# zZSnAtWi+2pyu$f-=j5QPlhT5eO3^~!U|ZFu%+vt=E|t-w)4Ds7wMT)F!XAe?yao)6 zJ65)w*n+ z*eh@7XuFSh(AskVpht&pIvCzDfL$5Xj%l8=Y_O+%nR*4<4_oQ8fTo#!^-T-y=vgib zsH$(tG)I!#^=2?tRaMC!7Q>2*)6+VX2zZQ%P~57>%o!z!bWxEfX}9s z0fIe3CtB&Qu-FjdWv&w4d0eO`-`(h4?Uv}Ab{cJ&jxKPesN@Vf{?2Ou=EWb9&#@i8 zlrBK$j{|0t!n${=7{GJ^*PkdeHdYFiPMbBv!Q)|+vgR~)1r8jJAvR>^_ES;rBh~!Z$R;Zi{YHQallj|o^W>$fT2o7cd%x1UZ~+9WeaQ&T7_D0Vh*1Vx39^R} zEW}2A91VI3S8N`DrmzKnLYs4FL-)ILSjim2x((Ax+T+k;Qp!#73&Rga@ku>2w_jXn zK6<=m{s_(u-glNlM8B)6t5wSVh!=KHr)gMN5?f!>7enGhySYR#jp!Ae+@hw1UE_lc?JX~5{e!&GaJgfai>5sf*9caxb z!f|!I`*C%Aa^K}zB>aotn+ZS%nlA;z!PimMlAD{|(`xoWscEmus`z-Nv<-TK==A?g z?q4i+pyWT(rvV~V0YDk=t7PYZ5@ZX<^n+T zS>PK_wG`>BkwfF8I|Q|E86Z|>wlfC|v{pK8AA)xVO6OY=3+Kp)q8BG-bJ^pQ1Szj) zfz;geY*RHLqD6ZgI$UCSk_S6x^r@bu=F9K4_;hB&{l-lz(DVoe^#2FC&tBi$fRCpn z!_UP-_>W1d<%^{3E7(E!%jA(tX06!ohXb89g7bT1d2s+|_lh5Cc)=s{H=s(#7ooDi zfld~yiMH@?s8erkkjXPZyNJ|4UUFxB=HN*2(IFF*ZXXyQmwm*g7a;_N6n+{72?e}I z(P>sh<={c7$lcbF?krtjI{_f3y1M9hOqn|fHKO9;6awr_OY)cIYWVTEaKF=igI zoe0GjzF&mY)i6ExRFNBG^Ywe*sUpTY4=)XmsxTCD*+z`+N4Ijt_ymOg+5#*+ZAE@x z?ICTE@aI8xMBMq`OLB|r<2g%0f1*&j?~#M`xo8@pMy6lK7}s=Lh)5hlWK|K2h`HI~ zG9P58kLmc^#5)nAlKjRh@{K=qw`8#eeeQQxtFh>{jAycW*Zo+>I|;Jqf+vBrgD5gL zTrt>AwAIDqdj3zB-vd0;79!P1g{cfl!&gD&UqG;+T-IWP#mK6acG-Ke_lr&L?T*X8 zf5&^l<{BNoK0osByUiIv)hk?%9K||xa;@|-!N0Qnj@))2!6ccfV{D&+zDHR=UZ1xq z`1wawCnpv_U~RICGQ>TMlzv`QpKPI@`nHFxOKVCesxC5U`+E7E|F2K{=q6N7eb+7c z`9+ckKPz&A_RPp8G6KsG8E7j82=A$s?BIuL2NBguA(KBj?-vyEp|$OKwO}kuUlFlt>uOkl0V%2Z5Om z;|)HP46Vx8T&&pL(?6kemurZ7{L)2%W0r9*coC46ME5rcBLpXb3;8Avp=YPaI_M5R z12~C|uajuXx(0|tYpVN;35MrAG)|feLjeaRvSQfzrxX2TcN-<0qUMd?Z8?uhuUEV#Hwn@J5)tvXT^5)Z}Rr1Ag zi?IW_TfVzrTY1_eHdgJ*c|u(!0`~m6@7*?w)B&p^s*JlXwSEcsoOF{<%dt4jB3kQl zA+}5FEAyGTp{i~p=L`u2ut?$peyX4bwoIke?KxWM+aU07Lwblt-Jp6G8f7{SpDKm$ zQKbd(JO=UxC1*4f*aRgo({5+~H>NalCc@!rA2Y8a<8xs*bmI9HT(%s+^VW=zI46oJ8qrFcdU)Z!)#@9acMFYai7L@qmk|(Ir$nYS@ zRq~={aTR5)-f^RdtdzycAJK47Sh^h3wD}J(bwCIA<5i-v)79Jxve}9au z%=rbNG4U{x3u8AQbk{fT$z1>TO4ap@1~qN;>SV1Bhw(oe0+v(dv|Sm{Az=WqWM1Nd zm?^s(B4-uOy4fB>YfWf0kKp?*)HgT6IpjrY!qIVd=(eH_OglcTS=Ra#bZHyqlj$rN z7gZpK1Jx+*n3yyqwsyCV`!-_;aAJShRf$;Fn8xT=v1ZTs#R13=(e;o4bWrlg_Kax}*&H{S7=p1<}+Ik0}Xhy52RB7sw7&?pbrgJ75l=HlM zVXMcj{$!lBZyxFKuqx>7I}#(q;zp63Nx4--L46^Gu4=S^UU_!w`{Hw16SiSkaWFvs zUkTQiLa5_=&XILm|7-VUHVL+{$&<&K3~O&Fb-aO+!RDUlg#IbvhOD2TH*c&SEl{>T z0b*i}MW?q>s0{op&t9}81(v}~%^|FR4^eoKInx?gy%6xAB$EadcU3`3cj6|8E)J8y zZtD`e{#P-!%Aq%pmQ%=PzH3|k4BGdY7Rk^phDd&ewMVuLUwPAn3g}_up=84MZ9y#Y zmPnJ4BtdJ|9qfPQ=%<7AfqHYR%f`L1NQ?io_h_Mu1$AyRhm;q4Rm3~=W_$3F@2w)=RQ23pLBbFc0OfArN70aKGNSE zWttQ?!FDvK74o?UBy?3xfOYxYpZDu`O6sP%#zy|ROgF4~<$2r_zE|@H)p-&Mc%jB( zGwwG&s>m7IVPmv{4#7W`k`Dp;^Ja)g7T%6`mUPI zJT^VqMGE4OUz%B9ALw{%v}m!yfRTyL(8^_WMB^))|{=Yx%=VElwGWglW=rgDMyR+4eEce`dy3uID;9VWLWm zNdyIV#Z}9-MkLblgy35+w_;7(YErczadI4Ca{V|Zgu^~* zlxOqXm=nxljjR;ytAO`Ac! zg93PijmO^wdEI|ETck`)PakQ)m0oztfz!cGO#TLh{jw{V8NzTPK!at@Q^90o4XtNF zk&RJwG+@0*hbCA=U4&x9pB<){HGz$yk6DP=kS&4p`tXJjYnte5Dud4TQtH$G(n)h^ zz;wg-Q~xsVxJ2BHwz%PACa28|1e8bY2wm-=VM0B`5bZ9pJQ**IfB7yH%XXpDOx6(I zyNCpbNPv)^2j7^mWM6vR|6%uPp+m#c795T;qV&AV27>XvO7hQ;k&*dvVZpC~zS>Ul zk9j#WfE2_Fay2O&NlK7Pw%KHp(lsaJ3Qju~!k`01W){qGH#6IT`9qc;3-dZT^N;K} zWuBfh+MlK}mA(@4M8Ec&vZAJT;-2j7IB%4q3T5U_Zd#y%L8ne-6*NdJNE3 z=IEGwaQSEc#NO^gmI$X_E^hHz6v3RM43eM@l=G%+fK}Udb}+_(vLV8(mGVGgD>ZKC zec&@cPM&qsqSR;qp^^ONdxKoy*GH>DJ@%l7-Y1JBeQjBdjc&GiC})}Kw@}^V^xam+ zJ9BG6%dy27(_0u-#Lst(sKhx^)ly12c7~z^yC>%T$DjPT`y3GJrHYcSS=rMs4jN&> zynp4cZsjpZ5AfQZXumO0b!0ba(^l%^G+{}<_@n|o(Mi9UZl|9f9(IqOcwyi3Y^B zg$^3onjY>~mB3RV{0cff%26{P-^3TQSsL4*l#QVI!l}Ip4xS#v);0ZWJV}|hkJjrc z97q2+04`^C;Yv)>*ylhg-WvCUMK;et`;(-d#qDB6^LNX2cqZt~rwXumF`AJX& ztuA(#!t~%A_V%LB(lpii{a7p_T=iv8I=j=ITlx3r=oJj&WLCjdB@Qo_VQKpcpjaK& zXJfp!Q1^1v#L(663o{OmAVO4}-)dXsn;3-3NEssXY+JTP4`#c`j6t{`kkr0lft=!E z1?oj`!e>`OD28)2g4!ZH2;PN!S2F3gG3AzVtS-q8hbA=sCw%%)#G;+k>Bu&s?V+f% z7$JlM6nR$}_>|V_NIwH2-qjt9FsIwKpA@`;pXHW>lw_erj@G#5SR@dL*AS3$)hYmO zpcd0Wt@tbI!JpH{1gY`(=bpPLn=TcCEHVmD%jAmJF=R9kjW(!d{ZDTo38Q`suuRcV z+voM3mc(3kR&qjHG4H*&Z49t>wTU>{6Yo7DMZ(%y$vYi&b+OsT>SGY^A#bDj^l`-@ zhb`O94J-;ZFKSFDR<1j|o?>_su`6eI$+z+**Zl!_nt1x}3LZ3B1=xA@v2jJSQjM9g zM3)aT@P{3zXD>`Aho8ZeZVFc-k-R>cRGxea;wqYNd=YU@FA~XJT|j*%50ws~q%Z7y zkl3bH2&6ZENi%O%$)n9^8I7OV#JmeLauF=xXl|(RLqOQ;4~6kd%LVaY;c#%C%_P^+ zQcnQ5l;Ew*{r;e&2 zN~6{z>pg)|Xgn*Xx8FE>2;=y|NiE0|gGHZaG-zdG;POOX=oT$E(E$k?oUYa$9s7O! z6?WZDmi8DHDk*A3Pg{HS+`a5aHBf{}CP*Y?EK$@tCq{;0v%+sNUo`YN>~3L3ObbWJ z=7h}g0d6kTAb^d6Px&-ePA&=T!;Taso;8e2W!)+1o0wyMFxP%g;B0<_!(1yd%LbU?3j@f!=hsPaA71hagh z!WOvq6e3i)>aWqMsFo4XH8NKh>yz+>?bxq_qkiyM9_mGoGlQ9Y;z5*%kT6-43=qi# z?l+Es)|(8eH?f#~8>{Ui>;uA*2O#DBZ39gj!yr553tyNStM~1p!asUtI;wo22#6*H znmHz7M9ZQV(4p9ehKFT06?BEO(8pxkH#as4t!8uA4`qaYos`bD`pE#E+W&NUv*&5& zN_DtA$TftdyiuG?!2t-f3&=eKG+UI*+(r`YRCQx zX;7dI_Dcn`5KuQy6c0ygqqGAHZUWFcQi*gTnSad0!R9Ci&86vfH(JfoY4lkHl;BUD z;{(pxK~*C(Z-JAchyw!ys00L)C+q1j0TwyZF5X2aFzs{WzXBgX_J)*U9Ae@c77_FD z6fNShaLBQYg33zzqyj}IYD%h<|F^IIoZZ&#)2#P%ejhD?60Jjpk{npE@-!yp@-X%k z_@}$JwPosQ{C4i;QS^zV@IypH1giL;*UA|UvwaBaGTimuAb5R!J@e{(OOW4}oQlj2 za3&?EHI*`+Uil>!RG2d6izG)chuNERL<4U4@;Odk6rkT^jW%YIQ7jRSF6$#QRo3(A zV?aVef{U>Jw6=b$%|`o{CAOY)P|{UbPHQLV?yJfIKF*uv_XEIAgMgvJ1p#9I41xSw zsnz;_S4dK|d;UfwC%1Lpzor@vHWV|1!`}d|EU%BJ3EJA)#x8WqlS}e{lmm}E_`}j8x=d{QEH|Gk$K#Ek2|<+djhV8(3{XV=c{z*}`XQl$v#=&8ChX3mGzofg#mY z{}YF$(iRM}W(crFJwI_p6O?Qb^5+BGinxRW9rciswP2Gwg;$mFz~LzXjz|3EjM^0j zaPA=Fu&sM)%_#j2p0GdA(2z|NWI850B~#T5Q%D0CP{r=UmWAw~R)a5EWfxLA69@85V{)P$t5i zE#!_903X2tir=|i{^5l}WgBIRCfKRy!yR{{1n|66qBPlxW@3U&xXe!v&R!Bcm%TmJ z5FBhhu`fTTlbEf7g+0QyxirdD_7XO2LYtd8eV)#8tcf;cR2{~S)t2`eCy8_*uy~e? zAygLHqc9yBva}>kTrq}ce>Di9s`JQ>3!H(Z{`|YNDRxaI^4@-KQiyiQ66N1!acqLe zra6E4abZo){AU!z)9YdOTUq5}bo#BZ((o`xC-<-ad z2HfjSjRZNy?z-)>b1W^H2pV%*BG`2YSd9#RCJPI_!rr{$5RDW{c>{5l^D_Ei>^55m zljdanZl6Qy1gh&yXU#FYSwFayuzJ2CZ*rs$hP2(wY%oWH9`tveyuV=w;>B;^OV6EX zM_?^N!~8YY)zvV3p`LY6RGh|~CZqKR0z`9NcRnjO>-sFP<#d2D^Ue(uNW!c8)B}Tq-|RPq(wM#V3!!-(V)(36*9)$M~_U zeJamFL%ZrNmOOmyD&kN$2P08t0hBRN=UGxDuc)5qscibB%oL_=@F%=)N zrWZep09T%1MV31Q{EgOOIA>v7Ok4Rq%@`GzJPDaUH^jB;DO3&Y0!>3;pM86SeV*>x z<|$}C2~==Wv{FT1{Ciz&gQ4=M4}P>`wXv46y?Z1KR%Kn*p*+VW7=`TJF_A^Y{0sP# zwo+@v+ygaBw-<5{pA(?%edPOizTO*8J06HbuccssRoB|8?3OoojmlBI0-;VA=#xa# zA>LshClZxdD({EUq&X<|2J zZ>`=ee_09rmQ$6g;4|RuQ8Bfn>fWE~3(F>4H}5qo13Q(IAMRRAu`#v<4sK~qf*rFvWea)0ir_Ou22OMof33|9 z6T8l78QJ-`ykDzLgxbIr+v18&n*h8a0y0^xrgI{JyM&>cbp$lkkEbdIjCUGpoE#|o z8dTe*S>}v*>wGyXglB_}Utp!mUat!zTsd;0(q%RqCdgW_6pwl$-+&)UCVGg%l|~8Z zY&Wt9Gd3&K>rEvbkOaIcf`Oj`;=o@hlSIaP9(mO`(-uj28aG)%!Xr%l>?hC8;ybcB>(#fXbM}TSb$TLyL6H)Ej`funn0g9?1YU zgHDii0&#Ryg?4RCgGVzO^GbpGq-+~DA=0$L@O<44>KdMZf26T`#xY%(l0NhPMl=1I zurKMx%1mVFqSe9AL5Dvb{z&|U_NYWJgW@V%t<0Hh1BVYU~zU1y)CqYG~_3q|(oT_bC3?aTW z>xEVvhO62B4BfZHJ9*tDrgdz|g>jTv2Uzp7B0zmplZJ-6+z#@82Y{qoP60!DyXy(| zAaEjfBjrZ$bN!o-Q@$psPt-^Sojz>|Ex*+Z*eJ3-3l1MH!@8|`qgSr#fP2jKHx69$ zUw*#3Lzr)ml+1dJBwk>Wq3EFXp9+P0H`Rp4 zgdSnde_xDvnkD{`1yVS6uGDp#M>r**a_E3?B-~^?Iktsugb^|3OQp&rl3b-O_T^o- zIr#fcF`CtSoCZC9yg8{?B;AkgVR%IPW>^E)$IXez&&-NlYZqZ#+gNq)o0M@b$l+G0 z5Q#r?f(Qg13loSga6+=IzN4u$(0tmcz(O~O=^Vcr{$M#<1b3?u1WTafEmZ1*;MjD9 zVLBnI>t1FNu$#ls6m}d)bnaNwAH~@z8YsBj3wIm{4fGiY5qpMVsJurh2rdW05hg3C zX9%_+8^vPu)OyrkBcz#RY7!|Snp_wxtV$9?Z<8gd%IDpxfb3REDre4GJ?bbqgrhdg z`aT%Ruh>|tAvrljfNwN#Tbmjyd+1VS!XLPo2@n01oNyZsqVou`LOE{XKRb0GjUr%a*Ve^hRbP^Y< zz@H&$?~00-*ED>-e@l^ZG_et8=BwI?41i7=)8rAphZPaao=wNEA8Y|_xvF%TV_4{ME#+!;eE6@GD5AXyJ-u;Ge=|4giL7{=fS*czl`hZLDK;-< zTZbPYfBkqFD)-k7I?;@hYPR5z@;0m|PWDACc^tJlOB3jb97}sOCA$d%;~v+;KY^GQ zi;u=Ob9^PP)V{keM-x;VKIR&fQZ@fV9d~-E^_bZmfaT*XwNLoCR?2_&vT6ix2_M*F zP`V4oHIf-|;Bh|uh0LK}R4ENVN%0y^TE!kEU}}-Y+3j$t^`xP=J|`r;e}neEC8x_` zh1dHqxF}6}pOFPDu>@r*3U~=a=U_$%SNy&m1u2?CQLf#-Pf8Z@745!!<%Tvek?8Qn zQe&*cAoU27w+IxcD7T?of2+U)ij>}@s45R4xX%9QXBX|B+38@7naPb|+(>2h4#Pg4 z`4cn8W;QpW@r#Z~qop$HJk-Vv0h%q~b-8e|XJy~+4{N&2f@vh<+hX*!Er6uCy$yRQJtMNW_(bcZr$pN`|7 z3nk+%O$@~umeqdL-pX`FwpK7dVT{K7D~6{nR3h~Gn$i;}Td$6SfHHgplU`>!He!?| z)7u*^6jp8{F5hupvX~@YgBQe2vUNnabC0SHf{DAGY2G4>uLqCEC2u>;DNhWIC$GaD zitTKDSw4zdR@{`_l_=hv1K6Oul@x!j@>+mzw!6~Uu2kU>OpDwID(c0uHCkH#VE^{i zWII@p%Jit*4#r^<{a!!0Ei&_nP=Di0f=Hr)k=0`dkDT6JXDelfdqNje@2+R!@<6VG zjTe_KsAX#HP1H7}7m|sxWQ_TNCFSk|{tHTVZVZLV|Fv*q+TMvnPCpXEM>7yK=emLD z!?LJjz@f!Ob%*bId*kqx{XBuCa=9eEae)w(EjvbhO@m<5P6uOEMj|gJ`{)>bgu$Z? z@};@7z?|q?0k~2J@%qmVJHOSj@Ls|blhv3RfPy8I3l;p8^3*6@0(8boDJY`#%Wpi7 ze#Ah0JGa=6zOwP@KbsAxp+V<}-~S`?FzMhzfiwc_h0Od&XNRuVk6E{Yau_*%AwB3v z910;1>BeZu>{%=7zSW@(WE{{Zk;JSfU?77eknj5&WGP9n(JcwN=Ie`k-9%hqY zC;U&yJ`SnGPg!PF4AawpjiI?wSz<;Yh8ULjEx;K)UP1|RfunV^Hx!H zzTlbonMf3k)m|b3l3c`z8pYcm+pbok$RwcyRB|Dzh&UPB7mng;G0snmbhx<_Nn1CW<%{$z1=iZ+pBed zhpgj0!#n1p^lbn9pY1Y@N=!X$+2~is!1Kc)na8gQTMu+kNKifoBPZ0xMAm}x6wU)) zmD}TwU*t8Rc$K7l@9x#%hzL!^MCq9Knl5x-law}{ zi!0oH+!ZPtFvo+=$*@vC1vGQyZf4j{kL!aZyFQjpRQlkZ8N1A1y-kvoR09B$dLZ*p z%DYy9>2M6_enGZ~$u@Yp(OlV80l(F=u!iU(rl6ad4_lgkIKLdh&?)4ht!%Vd2Bu8n z*5v~K5|(JeAPkrI!7VAM%2^Hy{?{0G|FWED9iuoyU{dgu_?OBS))Npfqa&&~Nz^&& zFcc|AkG9K!P2c>Q9}_KBK;2FH+78vZKXt(j;C&}q%fu72Yyqpu6^l(0T3c)< z{tPgH-?EJ~^|;%5-pNI%+t~&m%+r+Iso1IWIMq3=wguZE?LWM%q!IWiTKHi*7M;{^ zzpx2zf!R<%^%j8c(o&po2G~Js6R4p{vs3814E!hhHSB{V9&NSRVm$hH)Oy9tGGxMYz@W)Q zw**@Zaq%iZ>HuWE`gtl&!F(mHrc-801X?ZpTdsuZK>MvFm&QPADOX%24-%Ku<(MCr z;#nykJ>A`*B%!V6@TC|3GSL=JF676;qHzAw0vRZ1Vh(_R9$BgT-Z~|w(cYYvfkEQS4dha zxr{|OVKLq4gNK>8=O=%I6+V&lKh8CjZFK$2N97hzJkk*WETH()+0w)7c6pq3fFkUi z0N0GBVg`dD0-)LlT5xRuc+?bQHXNJ%;d>=LcFiP$@>Z#np))=)O0Ds(54{EtE4*(Q zOqKD6Wt-3>M}VHU3DuhAT|!4zg_%R}#p$Cw-79<#h#BcjS0iN^TAw5|pwMZi-^_mc zQpK(`RSt78%XGTEh$N1zB-x%*IQD0qepRC7j>#$O8Anc9c(`WMr%aXd_|FqB zJ7a+Di=v`4BX|Ue2s^L;#^g7;Diz(89w;xk)9SV1m;QLQlUG8-lzKNWh*!$f-612V z(^1T^-tKBOzmjpDqN}DHBnEe}Rxhq_n}{hb|2GO~TpIZGxsVt5E_+OS`$PMytr6Zq zhTlRK%EVkGJtsTc^x{HLKtSa2se&4lI6+Ht9Gq`j;&*~t&WOnbP!?BBA2yYa5TKWa zQk{i8dhj#rrsEG7BHdB&v_5f>#G)2U>ZMo*)?8gO+Mkx${(x3buQoGGy^Rf%LtgvC zx!69M1m!67eRkhx2~uAr6N@e#c?H9Icy<1agYgQo3@6gWd$c{{;(^kiGP3Jq0fxF3 z2O~dCH3-f~!WTd|;b$uA6Z)+0(sZ7mI)9M7lagY- z8tZ2ALo4c>g&zML(^8d2WEO_*X%=<0AY2bl+9coJtH+;=;*_8*QE&IlXSegG^3<%| zH^k|EZ^Cwy&nj$By`Y3?3v20$^$OAmM6f@7#(yIg-Uey$oH0Koc)l$l65y-AAlr4I zEzEwN3G}be({>t?i)0JIFAk?H$F#MzMIhwEaQ-unn$mjX&>ijB2Jy~wyiIJ4y~OnB zPxi4s;vU&TyJ)rIqXjnp9>vch(B>;G)h%EI5ap)zDEOta!tO+;q8A}%;lRT&k}cs1 zolxTGyWRUSei=#-(srZ$^Bw_H$w*<75&%*InL|6{j_Ys*{<_JUDkHD@DxKT^`&iWC z$be}7g_BXGAn0V-o=teE4FFMRvkiJE*tA$doGEX)#v)J`geVFI!&15Zh5hBQn9 z4dw9faO$t{k2Ub}SQarz3!vK9E%ElJd-xM94Vi>lyX-HeuixvlE#?`J3G{Rw1#ghX zb#4RiUY3>M6)o2EckZcE3*wC>k}n`tCWkg96a4;aV0ZF`WUJ~ajetd~G>TNRLn-)5 zK1u3y%6d5j9y<~#-Q+30Qmv6Ab5evL%L9xT>NN23wwlF)1tJVvE$%wxJuoY*W(QP@ z&m@#s;FK2NKvMw?*}Uz4O|%Bv6eun%ogCL1C2pR#{pzfre6WD0{f%qqw>kS9O%lZN zm`2!BN#*dy%!d+}!i$q7QSa&%w3L|HiO#5*K6}7gCP$u^h?5%{8VdI-I72Eat=FvR z!fa^Mg53$4=qXsVNyPM}!;aZ(PBXX=RbwW@3%ww zkv+-qmy9ouGx${6xa!5jSIC1U_QHK#nQ^>fU?WLuRy;M2$nTELvlqm-&k3fFN5+E@ zVd}H2o7@!Ey8sGb#tM=1Zoy;K`jxif6|IDVb+=LcqvKbQj zZtoAPp0;5HL%Vy(2p#BGoFW{d1MzFSrJ1%uAM@mOz*bD}*Nai)EuPMMP*Mt?knUOx z$dhaMv?k)UhA6zs@}r_Aw|8_s)(V^0SS%)s+ogd!4%c9;(V?}5Op$D78L8rNDT|#D zp)(@FozwlgA+lH zL`Bw9US#K8ai{d*DmZg1Wp|d%FyLlkEZr*^21~nZ?%ibP;cC+ZZ!4}Eeuwg>3g6|ydn{4uLPlMeeM`e zJTC}8AR`;~EG0N(HsK?`7NO!^>G9YLZ{H2#rt?_C+dW=^`Wkph0hA;~rz0q;akf=n z`={+@ryval;Xu45W`gM$WBT}uQoEmvwzy1#k?pPcWhtAhV7gZNwltYU2x5#)hn}wP zRJ+GD#U7o~Qh@5z6p$v|Xp<|^BRMNe2Tpq=UytLH@mzMQJ4Zg06}Np9SBzD`esv_y z;x`%&`D^h-S57G#uS@bCf?H*H%97**#?1V4OJNJ2%h0X}OS$!q7D(b6u_fB#Li?3M zp_4G1ps?B@_a)3mKF@~9R?TrO9M6y!;Rt*vk|OSddF8r`1)zoy8( z;eXL;l0qcBEQgq?iAd;*)hWG)4pnh$P>xZVw8vJNIkDmg{$o!=H1lE>TCQzFCdjR1q%)-xqR*EQ@Wd8%=OHce;eTrcAL)fCe_ zPDf^HPbem-MQbbm2?H65=WmV)SZj$!Ju8D=UF_y#f$rl-JtfdnU}=vBUaFu{ZCw_z zHGWp2xDp$#(~Md&BS4!MZ}x1FUhq{Oo?(3n;wQ1D_$^;ity?@f84;71>T}7I-7(my zC8Oh?Yg(JBoQMP_k!w7|rMV{lmuma`-Gn^{?H!~aXqZ!-GE65gUU1%ce1%IP(-xOn zq2!W9sJB-Q1`sqfu-~u@_uJat+Xsm(ciEE6l9THVo$605U6WUKeB{@93(RlklVs&PE7+Bg76oF;R zb+<&FUMl|pV`$rqTrZg`3sx=6Yg-~Mwae94otEzPImcJi{fan&S>I!AYR%zc^R(-0 z4TKt575Vc2;Q6Ce7p797f75n8ID5vbcjS6PSZse8&mLz4XX{7EjY-`<1xY^HHh7Yx zbo5B9gYmk1l`>Y?XR0EOLjUxDyPi8rziDZzD2J}v>SF2Wt1GM<%2P&Udf(1*T!D-Tp30W3?473}GxMTVMvr(|zQTCv?Y4Fnu(ok;kc3T; zo?vLEyT-4w5S*Qhe}M1#dS>ijHfOEjC?UAngVU%0J-=V_i=F}&)L>>(fnjg8KV2kU zxcq4?I#A`=(JwPST|`llrB9i5T5|mn$iseyf|SD(rkWMjb9Um@%&Xh`4*9KtEA(lK zYrb~^-8{do0)1tDBm4*T`Hpcql(&y@Aay0?SvccjYT+D_G=^GbC=je&Q2mEM!V+eh z{11<~Mj37?V>aUEIrY@Ys<=Rx)}z9!EE>1%J&^0F|2q4`N?qCFHVa6)8b^$*9Z;e6 zxwgPeHolvlwDWDdFYF`q3@zRE)?el*$B^7BO(k&Nd2gjTNxQMahk17y;Vw=iBEMY) z^5BJKgO!rIgw^hRD=yBXuLC>>5glahla0%2)i83n?t8ge6K`) zYpl>QW0XC1FRZuTfj?VVLLh-leWTtK{s5DuL_vddy0#`V@q^bk9$w67ZxqM5v4X{A zKgpo3yjd_5`rD(AjOX1$+aVN!{TkA0jL?o`BhwO_TK)Enc;)oz7F#nZ9^9w3G;G5% zCYtjpngF{yt1{nKDlDCi!G5kVCF^Ga4w*j8i%tHT2ej6@vTR7=pdxk6_5%-$cSdIk zdUAfXjTfAi&;v zM(M96@V9~YX)+Hj)x9S}l2fFgc(6Gd@)>Q?MuPFfU98FoX!edTT3wI(hfy1zNgWftJn%G!}pEoD_#>nu>kf3@Z}eqH`vw)l=BbfdT>(Bl0d zZ3sGPpHq41_%pZLymO88#ZZdIB2!O`6T0T4L_Wd&04q3k!hGsyI<^@n0gNqsrV;1C z9!o&A14JDL87Br~D!%8Z7Xw9Z-pEZRMVdK$N%fH|?(gjtqd)YTgruU&Vj5?U`dmVw z$chk@ZP#pYnh+(wyXw`shzOU3;pgABM$jm?l8EJ`6?t)^TUbDoWbNOlJHk|^a`?1< z4Pt5V2FX>bVZf7-DH*MOz)9%+l}H6SEL$fTg;iHdZRr&6VwYTKbaT3@sn*@*atJPu zD8JnfdKHuEu4~~*F5c4tja0 zEuOSKlam2;ObHQ)J;v)_a;{7?CZ-6I@ZbFMzgM?^(k>7S5h3;v`yNO;G68^Qeygh&p03c`$Dx!I zyqmXQqF@}od^9YSj#KP@(P3tJI)#>ibEZ$_Yzfv35+>_i!WgXkO1>yD1agG_O#9+| zMC;k^6$JJg$ihvvnC^VxhSpSg(>m1aF_4G_Ieao?07q&JL3yx%(TU)5IO+Y7!S;pG!=fcv zYO+AgS87j#Zap2jBbz`!Y1iIW$sedJ#%OD8%-!AgS<|)&)CAPrK|?#+OO`*NYUFE- z{#+T%t*n3G#%Agshz*lK^4ozGoLyr0s;aqu6HZ_ z`-A-GkOP1;c#-y|iS<*Z0v#HW*KFUe zf#CVQe|keD0qG`XP3{Q@B`pl|1qk0t6wF)mFj@*~e|^V_3H;?N8pUI*9wsU@%i~9V zQwbG4UL8#GnZZ)t00>oCOfV3{oFk`mDWGRf zZpn8Li8>a=QR%l0;|uSGISRhz5k3XdVn~utW1jP|CEExhFybGO*!1zOy%B^v59w{A z-w=YZ%SmsJ>DxO=i!&E#LrXg{3vQkeVeI*c^-gV2@SId&N@&|3%V%NdsTIPaypVML zRPkP|X-Oz-nh}_Dn~T1jLX~~dgPF|?w2&V$N`Xo_v?U1{rfli0xaIRW6zUR++r?I{o~6TJGaMq?{>lz89}tdtDe{+N~7NqN%h5@r0AEPV*JjzS_2 zl20?3Z+aRp5Yf|a?rG?wHNHvEW)Z%7o;Y@!n=&4T2(=qh@P>CB%hFcmzBFVabC8Cl z%g@)??Y;$(Z%+(rXaupUjI9Y4)19!RpVehuRdMIRmM>Mo*&>V9fGkgdYr|)Im+b>p zJj(~|C?(4bUS}%1&Cco@<8XHt?7Q`^6jPHh+bM@yRRC>PcjFB$91lOC_=12&3rBr2 zDQN!7XUPyK@?;H&&uXz?C27>`)M$~4&qufPDfr^8E?Pw_6=^U%5Q{k9y2_Bhv1o_m z%OTCkXL5)ymT;pVgfe9!+68DDXBGM^Hd<`B@t#4wz7!rb;l*;DQx*C4NgdQ3l9G)i z=qinY-0T@>_BIWUwct>(ON(NXP|#Qc7JgVM1FWB7;vol`400kPF!8e3AqfT~=wPP?HO-|6{>}!(la1`BKAg|p|;3lijC_ExDKglu-JE#6*oFWY& zcdW{EX#$my%fsqMxxt+g-D#>~9GA6Cqt*yf>`%CNBJG^}IFwZs&a0@$Qpf`z>66W6#U50%#)*Ib4T~NJz?J43lT^C&tDvtH`dO z#)T!r^|-xiEW(F2<*@P{WHf&&sQJj>E%-ohwRLq7J~@iMtjNSdkRik-hTx+TB$Zj> zfOA*gFqwlx%@jx3{ZIf2B#;S9FFL&>WW(pxsXV_ua}v0niyV85!vi{ThWYG{xa%Dk!!0PD%ca_IPAp=cXk+5dc9zv z58`Z&%?&DQ=}<0LgX!G#4YQH5zf|i(^3!~Yj=@*l){|gTb36&7BXVXjTM+vFqJs4k z)EF}21NiRUuoDKf3%iU>e<%Bd9N%&Byl^2~Y0eBJbsJe2Ibch7rD7(()hl_q<4iOG zTT$?+$bYo!T;&2bE%49N{rUHs3?x++hLF?3&vrC}YfJvezS9=z+36#Eyvnr~=j&6o z450*|(q2PF7!LX1uzAW5)Jqe1sMywM?b&SO3Cmq72fUiJJ@ilIsSr=+&c7%>2Z5QE zl{$PoUHLhN2k~Z_Tv7P*ZRRx3FA+WYC>#OH7P{~-kx{GTx8N6V*x-P1C`!PcsGIU8 zw$;MhynBs{3c?m;>_=wa)D82?&?iU|VCs9dR*ybk#KGh|nI`!ZI&2-Mn$e>Y`m*4$ z?R8AsYnb=|XT#V1H|sEyerNRAdfT_Y>6u-WBO0wXD2CK(sl}B^rD{(?xg~y>)B2p= z@_dfCNGjpYQN4~M#f zv3F-$gJ+?Ra$~0DzHdgHyiMq8;V9&FLO%cW9%pgWJS=x?`yp1g_f(Sm2Hv|jgpmBq zaI97FfK}uJE<;~03L}NNGE{+s`C^S;Ql%TIr2vQd*Wj4=MIuqn~uPcl)1~DZs)aCZz$?>4^p{(cm(aG9;<#^E#!kB zv3;GvvCx*|2j%SP4&+}?QCsa(A2h*h3UB#Iq@!vqcxs^UhfNEyvXBKyz z&cnFPIv(ZqzG88y5f^5aIXrp~v}^*~_j9)PyRVuuNf zpKz(yY*MWj2MDtoJbyF%utLXYL6$4;59=HFtXGSo2P?(~v$i;UQ>Z%g0w@M;D1tj? zwG6150Z0QWw0e$Zqf+B@`fx*iC3QZYOyh^`*y@dwfp6LAw(uuEFSp*zwdQFOwktQf zkhtr*)T!GHV37DyCF0U-9sZmcxmc!P|E#D9&T5MfNG578{^oakGMu5q;_})E-S-Sf zx;c2-%eDGgtH&sy3pXEZE?0MSzRXft*j@b##`6*UJVaArmO^`w z*^j3lDW2+Cy%%PqnSSYmb_=CJ0^xP&m*)?bq(R<=3=9muo9POa9+hfPJ~OJ356{MR zD1$ZoD?bbEL_X`LYznXn6||b-LBKhflMQ6`hU1w}hNQ4B(Ef6bB4GMa|5sS~l63#l zfo~_!mVDJ`S{e0`-Qs>E-JCf+73YuCgpG@|69fab@lKe-+697iQOXac`B~^~-Yb%( z4f9})90Y0slvqTJY&OD=A)C{d2!B?*b}KVkukb?PR+;+vb2ETv8br z)l}_*cyoXoA!&6yg3qX(}%c`t6m zS%q3}#NS`4gPBxpzHEopV2)x$_h$}tOwUW8^S$|-H}k^bJ@%9+>Z|eJHpL_U(8;z* zSDh}NpqX>V3A2*CD@r#ou1r;g*@Hq?+c=NA>thZ4P;4G}x(zvLDP?{9z@*ojOi9Qz@_TT48WnJZ^Z_>hDFBx>^(w}O z4@%elLr0ku3&e05?DR(%EzHh-Q>2gCkuNTx5pdk3F{{Cq@#X;F2eU`tk{`$}3rfAM zd5`IMyzU_v2z4^Aq!R1D4TV4WGB+PQs!iguynAt@)$w z2`e}5Ht6dIcAS_LDP3HEShRaHuh+mPlYJpz{PI6Q1@J+K=rlxh_s&05ooS~K=HCY0 zSt}sE?6U@(WKpku@f9mer6g$8h_jXEgL{`F3V7)~wjOEm8c$~(S>;VyjCI-!X9el! zpO#_4tO`Lvq@{HG@GwB7dTjd4?jUGnkqO(I{@ikj(kOwD>ICYu{NQLm zDlFLM2uqWp?<0(+09>Ge`IJBy-^|d^weDeBGJWHe#s!XJ=)_UJ;EWGl+`P5->YNwn z^VzqK`Z;i5ls;Tdn9HX7j~7xxaet1iu1wo{jhcM0!-3f~;u=mOhe@egW4Vhpctfcp zh?*0-ye+}9d(aH6G65mD)dn$`P%ms;_77m^DVd82FKJF;5tTiQV>!Y%?H4lzl`wR1 zUOnXw{Rp@Cts;Sz8yxmst>pdno)`#(2?h8LB7|o>9Y2*r5r1PZHn9f)BY=GkOY?oP z>T?hfP!$#B3IM7_fkiASG+LTGh%1)pS0Y)a`c1(QxGM9T2u;UQF*Tn7Qw3RP3CKxY zmvtQmIKAYTQ2-YsF8(6N`tW7IOf=XsO{d@c7rW_E0`Mfj)ZdpT@3NbX zgAEh`9K7NhIIU}}P^b7I0n{Ml`NCTomj-BpjUfqEl*N^~+l2LEzR**BWd3Sul%;wDDoVA*McA;-{d5!K8l8omN+11?CbbCY^+r}OoeZNtkEpRN=;#2R zNon0}%DpxqhGK^r^H=#zO|f^P($^J$xFJA8XEKLB3?P~x;sa@xt4NMReTpqFZkV~( zS>6NCVfkSUk#Jv+7Z?GoQvpC_p6|7z-7_JmnClJ__{2+aC2kM~D#^|)cC`Yi>*)YE zLj$Ynt@aU{D*!qgA0DO=SDMddhyCz+`_N5ewrm8E6?WJWDCs3bLXZ(45c*ys>JsMeMOby5;g*ovzAh z$(px1+0d7MH>)&J@u}Uee1^EmZX;0A5T12`o0q^TbgXzXH!m-*In!GeMpb5%sUzU_ z<_5#|+lY4_GRf6%YuvuppKQ$&8g<#N#8Xwp*;$!Iq4~P}XWcE1p%hk;kKcoRXR7iL}*w)KPuB z1=G>dxg5)XDQgLfq!OtFcbPUa1V0q@-x)nVI0z3L6@bn6rIzNZHFB?i{N=X^5T7gO zbvW+#Q{ybq$2!7KQoIirY+mf>@xbXF`qyYCHa>&CYfeoko}c72EU=Yol#HgZ{prrw zDjOUew3sdod5GXAV6&%?%+@H7rS*G#`q`|la8IlamMCPxCYuM)m$2T$WYo%RQjbU^ z2Er<(s~n0ad_FKXG9sg!kHOL z%+hpvd6{?G)5TEr<8!+NbPv9IXm_*YuF>A%&lmM{AN(n&tFq{_x{ZpJu`mWs6h8GFNud|ok3wZkm6*zlRG zuw_V^+!wYWXLFUoN!Q=#N{=b_k=wGdiZ|M!l-DTv@TmeLd0@QU>J@6T zYOSbwEK-S=>Jn#JZC@!SiEMk#W)X>$JyFtWyg z@qS2}wa~y!(SMw%Ku^mU%9*>+y75dQ(0qH`&l`^p8Y&Hjq-g~UA^d9>kn*pG05$fW zZ*-v(GSSv>0wG*f-~e$G)+U(>&TthCAW^73FkcCojR-)3LqH6mfUZuChiMsT|IlWH zA;eLT!`=XVkz9h#0Q8Ezp5EJr>OvaaMv%4$6^R)Y;)d^)v^cpX6j7)gM!flWS(1FS|Ut=dntyo28H;LVD9ELv!x@VxC@93kkbqZH@)SW(h>?s%N+1dV zq#nlz4+n=fHhi5S*2<{gsr$lT_fFH2*wWIXWqP*OQfI3S*y`BO;|Eig9;g*_33TFi z$`j+Aa~haK{Kz8sec?VzCQdzsA>w1TF-w||0#8OB$8b1voA|hgr$s8t) z9smy#rIm2&5{rR08+}fqk}oD>jl!RIc5n!1B&Rl|vj!}+Hn_Im>YK~UvpB7(QU~NI z#B(3i6hD0tMV#8aNwB%->+Llf0}f$IqM$#T6+l8P;kxJvi1O%%_^B*}a=Fnjp#2mz zs*b(j z8PBLAH{2Q@AHQVFVNQW@DN-Tquq9F#T}Ucpih-39Yy=B31)`;}#{dFc<1wjN0@_q% zmyhK{C4*E2H1I0R!LaE4^*|o?{?zFfxhsG;XNgT4h{@v5UH)MnWeO0BL{$Tawm@C9 zMscw*gKo1D139%txy|8Bi4pE{H^?-(J2=?ep_pyN@M%1Qz0Oo6bqbwY0VvHiuErS% zhyf;!f`$U%+>T^i?eJ>Sk}|`XVWmidTcJvs7NSrg!=(GxC_9{>Q{e`cB8}xYKcbBu$n4|fkpB*rB|dBu-EUW;$^p$Gm&@^` zoo#gB>rnY{4`)kOQ0IVLCKE^hCQ%~FJF`{6{lyBq4pG8($ftP!sXUrZIdMu*ovujj zkba?PsOFtv9d#? z1;fxTHj*jIJY-k3v8zM_KT4q?wNF!G>F0}*vIQz-F_f_g2nezS6ETpk<`m>{Y4sC# zWIk69<5JeKSt9KCzg-YJ=5zV&QJiMsQI+Fbi#=0uY2bZPNq;FP3aKKC@QUsqJur-_ zZ}|(e`bw#(@@AP!`H{WEl!F<=E=t0Rx!jZ^j{^xUQ!{gHE_pg6_fJqT8B%<=UcVHo7&sTd1>dFA z@Xxp@@M#`W=Y-uP1Rs^DWc=>NX_~}UmWo0z-kRl1>>Nsz@!76VXDN~06Wce`NRcb> zHcuHTnwM4STn^%^9Cu%dPSQ}N5fZ9asAUO=rV^n)XfTqYPX|on8L(5UV%nnL!sxK5 z;_<*g-`A0I&bjMTbwj3up&Nk9`NOgRE&y=wD(`P#c;~(U`)N0%ikN@Od9u>3&;R-s z_@f9MOzl+;xJ5hs|CI1gaWb$UfWR8Dn0v$jl>47bXi2(9-Qe;snf|Tq|5i;x2?==M zVL3O#{A!m>tD_O)BQcl?$M^J3B>#8zbzq2^9Pav0fH>`!Z8q12b^+yXMLFe z_K{@wZz~;79*6%{6QG7p^QE1~>GyCzSsBgm$vk2pgr?js3IE^e3TPk)hI6HEFE!)u z3|cDq8+omA)}qJF0>TW3FcI-TQwmI;G%$H{m%APRe1@x#AD{w#= zM{t6Den+A96rfrL8ImUx=I&Fn{PG&KqDjh|tMfwbsZ}kaX}W3Sf~4&PkpV7|fX<2; z<1^~N{T3kw=1&7g$}SlAvz+ACs#h6j76gV}DO+E~cQ(P-Y2~Jva9^)4N}cM}yKDa} zIgz8k9p&?F=LQPMNc6|cFQD{pVBb4PHd0~>V1}Gv_-6nZq=2R~aBU0d0?T41USyb) zfuI(xhE!Q>)CG6W)ww`x_Y2NUE5}We>k`ewn)85pRwPX+HEmfzbAtiO!Wt~N3EOr{ zH&}?3>p*RddcK<}?UOx{IQe-{6t zq(33kY!nAEuq*?{6-izwCkT0h$LxD$g{2Nwe`rnpq=h0zmRVQ|ibEFN^L*dx=k8(R z(;&NeSz{$=e?ddFntph@BG5pv2%W&+AbVMsB;avDVkR@9A9|*=^V)XfHl7H@SNgt2 z;97;SJHIRZpQ$*71%~D>`Vj^g0ux$rHVhkHY@H_izQK@KnnI$;ZZOe^*q89#qEiFI zY(gk1%IU8m^kQ3a*XXB)8SMNnx6VBkmmIp+ZK1Tg_r1r@5aX6SU_)X%ZAulNIfeqO z`D@>QlX0-Y4XA21@wkv*8i^w(bFl{7af$z?Uq$3!XC7+gZVG@{x!v&RMtyTw?}WZD z6uand!KTaD5AGBt!mt$}G8dBGN^+*wO8XIFJ1sE0=nYlM%@jE*PpH)5&+3$}E}plY zqqHywBZYO#davM+y?g!r-+e<82kfIOn9Hw!x4B3?jKtOo4t-f=Il0&Jh`Y%G!a6<< z+0BeDg5GKD(S)0$vkIzi4j&Z0{+IqidG7pKBVMLl{Sdna)Qc;|*iJ!6RWw`c8!cWW zPS>5R1c@%baKl)_sTn(*SigDk<=G=EB{E0vgUxV{pGSH8TTz`YOtduYO<8|?8LGU<-~{V7BG0Wlfh z1HtWVqvzK6T8Y{K87i6wAumkvl9UXkCaSeyaqt-i(KF<|qb5AJ!M8`TZ(NCR+t5%rZnBH@pM%+77yQJ578_Ob zpA)D!*gq46MG`-gjnn)62%7PSH_IG{XcVS73$HgcRdaBm`ZTw@OD`IP8*_l(Zz6<4 zK5Xl+!cu98R)MYfA;V>xarBuvHn_;wJRs@-m7nL-wI-Li2MBGUO@xz$qK~qHyWeV+ z55&bzEmtrCWp6&Owf+tmUdwa5z0@>e)`s*jtx=kt3$e>KE=xdtMpjNze!0%`1MR&e z{dSmF`8 zhV4m7_`=N9Sv?8jaf4mJP(IphKNNH{i;4-v+ zn8_cl{>Dld!9xR*_;EJcZzAdGt#b&#apz#d)Go_vq?;0v1LyW9F%d#2Gp?>>$KyYB zVi5wDZDl!Q;9Qqci4SQ^S6b<>8r*ev9EiV^f{T#e2BYEsIo~Wr{eLOU1kyDD_wfG{ zJh~y#{>ld6O3mT_PTv20SNstWC1(HqTx5X~WjkQ@`c2B3UuVvC?L$%H8mh`6g??|| zNpCzB;#B?~&UoGiydW0f)+U!-2~wHd>`gkK7Gt<7Ihb}PVhXFLS4y06r2Oab`7hap zL=+qda@wpU)t-DsE=b)|QaS&~g=`Z!k+lI60FgwF+T3LKfotsp-OsWR@YYNvO~tG+ z*R{E8r6f^ty__HzD)WkFroVR~Ne1N1AFJGP1qauEYB3{0*{eebA$b(8J@`4A+=?-* z`am92-38iq!bm{3^|XLE(^Wkm+a;$gW?;S1IIi*u1r4t?Rb3jGV+BG7#lpLnn|+-G zo@{(V!@s-L*-q+tzieXacJ9*_m)-Z2*NO2x=?=2c&LS{cX%#&MkNLmbxiruPbcTh5 zZyLI>6qund{c0lyg0W?z=9?2_jyyh@`rZ8U(QWlc&K2ttJF}Nq{Dj4_z%7z%gvfdr z-E;wl8l4kMd8zp$wwBonT-+FbiMcriw={O>AGu71`>%kAZzY8C_ukGCd2n`fm;B=| zU+&FXIdt^6y~P31cgnccX#$h2P+l|{LEZeL80rhdSsW`h1PbO>6f$$J$dCOGx}TMh zNj1Oj)cPt$H`0T}fd69gOCWdg4&f8}5Z>HHP?WYAG#~8TJL=B)AoK=i-(?_5i`;L1 z9(RE%Cyjy`$h?ua^~wo}>NwLs`PK&af-WnlSbkC&`q1+{YYrLOVtm+s-){zM)j{_X;VN}A#l9V^bu;#o?m*5loG}2%H$!bLl=5T9s=LnYD+u;>EO;F63 zue64;xGt_cZBifQ@)7roAEvseqmE7H!#TCF%H+LZT+{xWsIok1&|aR(q_uW$uLQci zonD}3zuQ{Z70!oc_(BUI`8xRw18jv}UKUA&mw!f^Kb!w0<~=PT@>?Y>cws%bJYFFM5dTbN;>Y-G!;wnSrg#Imgu)y&d)7RT62OomV7 z&UXI_jqnB99D+$;T(JZ0qz0jUCI0qZbC=ST9fZ)~P)h^Ia_8sRsJvj8;P0Wt77g0y z>{a3ryJ)d;?>`pJj3|uelVUo3{X~eq=gevUDj?nGkUSkP=W@x7!LwuZr*ma$Lp&Yr zFNdGnZmv)t?#?iUtTKD4@;YB)UsT9Pt(imbmSKN3&axJ57~fP+W1k5!_qjUJ7L?Xr zo$f&(qNAI{6?qNWlVz0e_q|@8rEqh=Ymw*W24dPPFcbS(JusJ0cOUMh_(rOg1|`xK zjJl-r|06so>4D?1a5Ra2Vs9C{N|p}Mg=g_~H?2aP70YEit;;vBBj({SFtH+omS0sQzjeR9Q+yNI+TT)cIyj7#FPxPod2r!sslOu<45* zyx(<0n*JFqHgaGEvhP-1rT-Oo2m`Vy!JcZ11wU+RTKXXff&a5eBVb;p8KonhhV}kG z8evA@U%ko*&jaP(8}UENUxf&uSE;8{p8dUM{^yNI>EAn|G+l}a@_#?}r$aFSa-Eq) zJP-fxD}^lx%BzI{-jbYypW4M&}sMq9V~@kdOca z7H_|zQ|Qj_Zjiq}7{H|`%-iOuM-_htNk&dS`BJ+laZLCjp52!A4;0luG3FxslQMp7 zH`8zJcP4zVt5{{(K8IP;<-t163wvKn9kxFl;YqN&p!%OBBoYEsridyL@|4x17ZZ41 zt*6!QjX%*++0$xch%*d+>F^F$wRB0`ju2U7@@5n6?)ViyNdqg3!)*4LuCa1$N}0nJ3l>{a8(H>?Ulv z-oj%;8f_JLWG3Bc%UJ>DFXvxk=iB0TbN%d+nebxhuZ@pV%Jc|ZHi>$!FjpOVK*W@v zu>9?kxtXfz(X zFvh-q@o#ce#u5Ay1RKRn+Uo9#anE}R53=+mzqniTWYFtCr+&Zx=mAReAAEls@QXV$ zd=J%Y#$9IHN0NlH)aJ$vWH6WpT>5fs zWJFMZ*FT9Z%*CjiQ*)?pf3qRe)DLTf%I7H7+bQ#Q-3WG zB;9o?Xtk5?y4Sj}cMp&KSeYv65z)>y81pNf9Xz^wCs0BvANUjNyN%wY`M2mfYdI_^qy$5`0o-G_3SP3kq$9k%sN-v$m@(Q$?E$ZcG*Q z3G++)4(;O9Eh3E%)q;qgy@;u|)4+b>&R|TQXROtD$R}2|r?Xo3a#5K#^iGf5p5_+k z7b^gh6gn!L0o)Z+jkY?$VPWJnG%$pGF2fkcJO7^TGm-vM+ML;6PM^B`AQv$q@=I~s zkTR>pr9(n{3w^OM?3VQ3d^1CoOX9Jycz#K>v{tj^mr_l*I)^AuxiRP!hfaO}e({tl z#Pzlg4r=5xjtJxLgwzP~bNOnKW)=NK-kRKV*Xm&&7l^x5FR)w$3o6Vtnz=%=;I2T# zE3-BpYh@RHzC6CPVN_zEL3SFZD~ztYkK?i}&{2ja0yP@kCf>VWQlda@I_Ia$%L!Jt z{csrCXD3T#3e*lK{?f@CR6(_WfghMZAC!cxuTWKQ`BTGPPr6Y*`bcyX3fn zW$AGwU=f7l{IX6Lq5&i1uIVK>X1~CBK_PJ8`mtJf)w^gkVvGk0UH&RMWoM&M2ic|x zZ@4W0Nn~BFG`gx|5iv%b+(0u;+uL)fdMQn9UzKSchE4>5s?LL=H>Xfmg!rRo*J1b@ z^4tv3mUaUjSsKyMEe@+eR!nn0!=F49!XfX#hKwJzl0|~4{FNzuq^S6Y7k_?OOzQO< zEzj0YnP9o#d57bMHTJ4=qW1(OOljT^5m6~mr}7!45_Wg|E>u1uNj)(0F4M#?rmR~x z6&eMd_3&Qs&BNh$H1+;@z{Wu#M-E38>f-r&*E4c`+^Zt_BG5@tNx;L=e<+i{LO8>J zvO`65N@CzD+3G$(7nM>l%=^KG?&g@CVbxVyR1q!o00W*~oB;ne$%}T>9m%nvZQw4W z`l_`sMjrG_{b#}(31oQz>Oq^mrn-EEAkkPUh2YvfKjr4UO5x}V*nD!LNBcChAb4)=He|p17ff{s#iZQC!uP(ECF(kuI)mo!2h;g(53(gwE zC$1yp&5Sdg#xWR2!wQ`J{g3!D76j|HkO3{Q;gjs5?Q%_OU1pmR2gm&Q5CV6B*f|k) z8=z0ebT(?WLw|&_a7ew1xL>kuBC{&Hd!_IdA-D`Le+u*uMHvv~As2WkxA}BX=i5K% zHY2Vg2Q@2Mc(`3Ie%GhPOhK zE~NquMfVo_p6m}qOCwQ|8uxjhuk_SWd)H`?@ioqRxK+n)kL`#{hZIF8Ke;bqvu-SV zL23{AMiul;itc@eRO6#LS`^uYYt6nC0*$^`A8^(Or$mi)aaK0u4lxP!DrQ$T#3G>u ztWa(J{;gIqGn0r&qx8=_p#;#uUhrsCR8>P`D(^RvpFKIcWV$KQ+80fpGst!F`#3j; zUU|rP;K3&pAXeQ(e%HHFLA_-_4voPRlg?F@okc~b4lPiJuu$i#6ha z{X=(>)@Abfihn7Ii%ZkHbJDqbqy{FPXMaZE3%?jd*ZPw&(MoaeyNwMyY~P$raxNr5U; zjLBQ-3f*=RI2IG07QQ%94F@|Cs}aOf<`sQCLn(=Tl%#H_P!*oV57u)(`ji2E4Ju|{ zJXvp5E&TGdYML%;pV*~z0j-t#>BFnn(UsKsqHZn9Zx_8o-J_5x+GP@&9&o^r75IA4rVAifb-1GRamnhpEt@-_S{rF=x)^SRC z@4|S}?|o1Mr3M5IN3q3=2u&chK>2+bn@j|9gA9DHzN(3)ei18@FWUBW)Jl_EtY{D} zEEuZRs<>9)P?eA>riz}R`bEUU3!H1lUZUMO*1u{ z2?EINCwuYiUgCfs{i#Q9gQ9p|;zM?C2p#SJqoHp9SoU%iGt9oC{(6KvxGjdqR$9MonGhBbd7X`?kvhPg6}Io$6WJSx zq+}S7RGQ4;@(o)Idfpzc!aJ)VfQr`J5y%9^k)p*9@bcHQT^8{5gPV^25Zscs8M7-( z9L_Wm2WbRy+91qzoD4Mm5vY@ob44nC&$u3RItiqD51!_j6N%x*vT@z(?aT~wZuuQ2OF1jPw*>+$ zkuvgLMRZGOKeZ_t0ruKpI}jCubbd8{*_H};nkQ!+_xblpfe{Dyzj8 zt>tf9?mxLIk}A43OpFHTFYczcZ6%4sTg92rwz72 znCEtHcPv@t!>Z*kxou!n@`59tV7b^gs&rp7ATLE%oIjaXJa8`>wfkT&Ir?48c~+7N z#`1D*;+`BEt${mmi*l!6t{;7SNflY=>S5Jwh5j`AqOW*$jG@H^5ELZ~efy2FQZk7e zJWBFOf1Xyz8mLLpg*#R!M(^9`H^J6Pg2Eq%pUMa>8oA29II(tD5DX2&#a`jHU=iFA z>C3DN|_-U-)eV6f(5^F;G859hG>JfZ*bAPwR*x zEgU*(60~49LAIDxCP99|rx`CAs+xdz-8v)8L71Bpi9>s2>U!*x=Fj}-Bpxf&{TPaU z7eKKf>0V|im+mr9aG5)yu*v^y z66tWt3B8~dcKPs~z*l>zhdc@BeD}x{pWz0d;M*vDou#9_1`Hv7N;vNPGU7iv`11hv zRU~{}i9^FNpV2%QINfT;+B+-4uB%@m@P5hPv#QatrsL!aick2P?F9qT>tt}}Q8UC& z{T6)J!|)BG3Z}lIR@ShCtVSHEPk*?wV0|q3d6)KP%1qFG)ELl?B2`Kr^(eP!3_H98 zOV<@!MR7ip>TDb1oe>d2dm<_S{Q%s3$~eNo*`*1%KF)ic3s_N~BVRygk4&lq-%*59y z*6Lp*iC?`a&CZ0Kq?_F3o;2&OeTJD9?%X&m$<-n%^tcxEx{%~JP4R2Th~~~9yS%W| zUG;*HkU0iVpoLN^O+G*{diID*Tf%!Ug@tb$Dly!^n-_JHLC8+09n~9uW(scg4Sl5JXnuN>YA-E)*JCn-(KtJD5RQS$k$0 zE3`XSyo5(uqbx*3TqFa>(g70|_5$ZfFWCadxleGf$t@M9>QmOa$d%^Z<*qhMtjCv8 zP13dU^TGt&c`l46ERpUd>10S>O+a|Y@#%ddttXx64(kSO%w4XWPbMj(4esGFabzUj z{pj>d$z|_{khdM}kQ_v~8p+#8y*2{PQA}-?VQ*(5^vi%B@qrg`t6MKz>g0DzdnFM) z@HiqWmzEyMydkeoPaE=;L_hsWy{9|;T8!hno;tDZUT@`$ab-L6(?hZ3vyCq!Ljptz z??%e8@5r2&tMfzd)X}&#jNaFmwX*O5S;c@DMBNSwL(Fu=hj3Re0TUX{1S5`g)N*Y& zOTrwSy&5iu#drdF{!tUv4%B1(F^b=r>ZsbHKW(g6TPDfMWm{=;I5GY?Cr0{p*zEj+ zCqi^NlkSFHHr}U=;*H6w)pq$GWG~Oa#3{L>RZRuKV!Mu>5k)EQbsk}-0*u#JbPvDyRwZ+WJ3n0}~NT&GPN|+4L49=FtPj z&xV(^yZ8uZ-8xpfd{F}pD8k0i?YBkQgR^P{P=1jk5%DrLJM77<8)8Z5e&5L$-$N{G zX)|`cWNZ1wG_q+c7^MlO``%DdpB~Ib&6k{#9mcaH41R;4;$&?$|M^k7a|*S>tncHO zMf5`OfeBeF;4H04_DbdT8m$8*lT_90BsO$GEOgWg8~V8t6qB$}gdNYk^W_ge;N=xw z-orG}H_44O@?Yr+dCb#RfORAyh>07HJc1#H?fz49!0D9G< zPe=O@ZElyn$j8^PbUa+#W{18{%fC;@oNA9DtdL%J?R@N96rd@%pvqa}r?j*2tLZ#n zCNikN=)8em{XUCBq22m&1rxm()<-MC#k6anEy&m z15G(6VwAj@U0xzfn#fZ&>&>1Zew6>MIO_p?^}x1xK#f>NoJH)nYLtGCA^XPf0^aCD zcs3*wij;CTLN}guBJkO9x(uw#zXp^4w+l@Nw1zhD4*c{H#_?zMSTC(xPtzboIsk8a zt0D7(?G?u2-lvMdySu-e@R)_S_neT{b*3`qt}(gIhjU+O!Emem1u{F9l0U`f@IKRN z+^ROd*tgL(t|KYQ0o=GQOOtrBrJZet7?J0z%4NHdmV$=hBH44wFRG^Z0o)Cak;`48 z1)mSIRoEIBCB+!%6eT@!gYg`?1VdQ+$f(3t5dw3rS%t0Ip}Ko=(dm}7Km4%3Z&Rqo zQdbYvt>Pc*xe(@5z)^P}Okj!4g#_Hjj)j<_DioHUn&YhKT4}+sa}_?86h;X#2Zf8j z3f_jlV_V8YVD}+A@Fc$K)*+67!-^Y<@-WhZWDE6}Y)wdF|IUU)>8iUQIG|P-lM%1* zO4HmBeJeX|Bm+rDv5Mtc#g^Qvd0)pTK$i96lA-4EfH=_N11j#M8Fd3Cx|W|Cx7)GI zYK<>WJJ;YA^(R6>s68l*XN6Wqeb`_X=rb*|o(1L-@A zxY0k2VD{Xq^*Q6X$nRW=bWxN94!@2dh#0)eS z7S-=SMcG1Rve9|`2)D`m$D6bkJ+5Yh`U~C6=E-~QRJ)SjUNnBrp1dgD`^fBq1dFqW z<{Xr)WM+d`BX2dDD=@y7Km7iYBNTbSDXE{q1ita=Fb24{;hbW?H=ba&z(=<5wDE0(8Nh6r;>FPT89aOFq+0p zK8?yduE~5`3mlPDlkfjI7Cj7D0_kFmH|ewDF<3>fws=A9AGXBfnOvlf>Ub!Djy{hADy4qTFn zoJK3PQtEZduBp@cG*h={wyC^owfeO_G|=-y;Lo3~mLwS5WWD-E$mNKd(Eaa{_Iiz| z3n1lM0ed7Q(f&m&^hTARef^&-wHv!^3dRsfvUO=yElw1Yzl@?VqyV8d;JCT|v|Chc z?W{e?k4r>*V~=pZo1N-_ht4JadP~S3p7%sdq!wR8$!7c2`^8%Z3Yq8{cCTVBr>`4! zQmUWH2O>nn$hv~ z2B#@aOaDS>VZd9o@A+% zpB3X0*Vh`1q_tZ=>IVVRQ?3e|P2<^jzb(G_>YThIhEr5$ z_G}5YF178Rh8QU`eAt-gb{F81^Ku;c$&xq{1ghGbi=Ud}S&Ki%;*a{}<*at&ve4z? zz)wpdRUJ|;T51Iy_GuWJNoiMXz4X=1`LZGIc;|L=6c*mjQ9)5^^XJq23!_t^k3Vy- zI|NFXoT3=QU_4d5LbuR6uV$Nki{Y37h}h1A8WV|*8lWKT^kRu54RovSwB76A4t1a&e)$V^R)kw;^I5yLY(kK ze(-^?)OkA5ck*->DKs?H`R>vI(mjWi4plMvb+47}S#PyeuH_ZW-JyxFaOAjOuyi8+ zDWu6*E^>=wRUVL0R2QMVV}~H~)+Ab9J;FlWZkterkf2mp=0i1nmiAtHvmYaBJ;CuS zdNPz|&o^o{<;BE|_!B>P>LZ%I;7xATp{cC(^fptwE0or5P(7mCnOTR?gGps#2g;+P zheOl|TA%FK?{qN2u}N!p7-k@;melmZ@S%~-wc~*?*&WpLpolz_n&n5^&+3HF;~?&X zzzYI=9BkREwCfNFV|f?P6@AEV-6w|0KM85cg~GZ%NZUWm4=m3!Q#>drbA)U zG$FCEuDAv-etIPb!?kH%vTwQ&(T=}q3M;bFp|k}z*RuOxH*5BtKh0Z}*93254AAg^k2frSvT$|{ai*8Bb%`5!B$p|V0k4$k7zJuNR z<#jTAZ)S9EOJ+S-M7(|m(?)k(?{^OX@Z4t@&wBg3m{7y0;lCyatRqFKC|CgsCKsWC#rL&C{^S%!Wc)hZAsM#Gr?K!#*Q# zq5)zJMTOn^=kr6?b89$Tm; z8-;q?cT>`k^se{&%L58}@_8$AR|B;or(}_KfL~E;F%Ba?(kEHb^}`~1*sga*UJiGf zR!x`BeJ}W0ogk3M<`aM-@3u${s!O$oAhQ?ycnp?${U-1+0@M`Tu$kpUVqn3JfM-JJ z;dXqwWD}tniE?1MV8T0P3Cm1QZw);A&_Y+&7aT*oGP)S@Gy{kR8c5V$%3XJup#+Kn zu*~>W;t$MGikEtpSW!=cSr0^=d#!45M8mT!!zM~IG5W8PsKuwzr6^uFL*yh%OnAMCK7$RkOl!iUB1gC$%IbPs{L z1$UN=!%NX81S_>KU27**1J{;*X<8G6*3Z`Y=IPVg zRhpuyvt|IJflKPw*^7?T}+t~9%g$Ma=xy&+!k zvNkzj@}$yZLvY_DiPnVI0HDl1Bm7aTqt-tfFk<-_{&MT}+Px~fFy$?)EJl*)pA|W6 zQCe)VgIVdMpNn|MPz)sHKheebU(j6hjJ~-Y3>}Rtd?8kVy4Wvjx)V<$4W^CtvtC(b zSUkP%x;&TdW-TFJ^*|1InGiBthkU)iL(Vcj7o3$yGO8pqt~wQ&DZ!@9vJ{JpDpY5& z(}@SM!UzBGG&|*{Z07!hV>Dk9EiBj+@8BamQo_~AY*q9dR_@+dB7k!>9?_P?7LTpC zIoFWvmUp8~F;C=n=K>M&W11DLmc7JXrrAFu%&^Sq-BS;d z*$|@K^F$A9#$__kzue`WQ0%?MZy33*zl2!lXr24XQqJ<2a_nY-s5X!ux8{fgv`>Gw z*OBcVDv7IqSX8mY_3DWvL0viS!_t0w#O%6q3S$k!wsS@3a3{O@qZRXAMUq}Eko&{0 zHo8Vu!yTnD_5(ij4q^B&BlMt+jSczGzZd-OYuJMK&+9r!8W8I0K}`fQ%pl?xO0JmC zW7yF7&_tWziZH;nbeG|imfW{Id+1k#`=mL{Of;A;>))xAQ z9v;1$#KLZP`riKb^S=1MtqxZ-6*&KK>&+SLqx8g$76>2iUahU%vbgV5O)74eD%uKLC>b1%^TO+sPaHI!49qZNmO97 z)c^JF#TVfZp|^#0J(S+ef3mO9mOZ59qn(sB@zi54H?=(Q`V%!>;X#sEC zZ_;{g32dL`o_sMet-~2e`gXTtdui?7=o3kJmR6{gByqg|t&~B#VxAF~ZEbRr-DIgG z?7eS;X`W<$3Cf%X-{+Lq)G$-~H&ecHfme1l^u1C%a;&P&_(EFjD;h<6AY9O*nj`vA zI_HlUh9Um1bpNlDdft?1lB613_@T9h!cO=4o0SHIbu^GRldj!UUb0>uk(WMqykW|f zC9@sXC+|K~b2o`;o7+I zX5e04E;ih(Xva(Ylq|{f6eE!Eq*g;J?%fH9xrUnu98IGVxp zEOd~HaBQ8y$!SUntPE#T@S>z4Cq3dWwU&oBFc#C|Ubz=9*VLvY$&6XPKAH*^K)tkQ zj4Ry@esPaMKLik&a4_!E)%||=Q`oQ7yaUY7DRlom zX!!Y8{@tR@sdlh0ATb`EWE}AVilWZ@u8o{%(v>*M>bEcYrjsa5BIm7+o%5pia!ZZN z>M(Q@4nx)zeYUy2kszh+R=zj0iLew?ImdpYbnKIbP6a}1Pn11pl1OYW!qfd;bOBf3 zli;UZ80PZjliKWluBmZ^sml?0h^QGuem1c%67Fko4eJ;Bb?e9& zar>s8&ErYB(V9Q)B;@Kij0<{lMdCbRK?9S5V@+j^NYq86-WY+ODw_Dc72`Dx$Q3)j zs{A`Eg3+d<;gWu`R?(kTBqu&Ks)?_N=G<+aGbj1iILJt*Qx)B9X=fKNv;RJI#DulC^iI#WI@s_!PK($aC+)LO?5~n z%}l9z8>JDehV%3*hYd-f_Ht@o7G0lbXr(Oex%*{#-)Ia;2rJ%WSH4r_Eu_ID^x!a5 zF{9>e3`t$;K4UuC>OQbCHy01<^b$QAvRGJdA_lT|pF7c{&Zfuv2i33He!X!2_#epP zgf<;`dA!_zqM+G8GXQ}Ve=+ZW=5fz?p2T^`K8;g}vk&5{HF0JWKK+`|;!=Dd>qC+;+cpTDlRL}%X?5^Qwy z!!CD^!*#og9>kopjf?i%-#u{VQ}B{43V{4?WQG^=Jrj;@xzfvnwA|!6dezBIOx^w> zT-?%<9+pj+{J3qp+DJfpQT>`i&hanq{n^W-hF9paLyOJA58;y#SEC)|@+b1B$~ifbtL6gDrOuCc;JFx*mgS&xT+68=t;tBDK!`*}gJV>zVb3^pE)^ z(kmAPD-CCYtTb5Zf!h_I>ndC1(RdV=n2J7Q{5M2H4Do&XCUHX}lrA+^yRl*Myz8Bd zzPlJrO?xdtqdJeY?gXb~S~LE6gSoq-qq>Qpkqk1^Y*(E09~F_G!(M?Akhh=zZTm~p z4mAYst-FLZdb583;a^tjh!fW5<&CA%XUz4VE-f)UH#0bL{xkf4fyiSvg8cP6gTsK> l-2WE7lJEl7{Qo8TTC7pBP;vWRZy+4(dMl$WT`g%G`aij_Y Date: Thu, 19 Oct 2023 16:27:43 -0400 Subject: [PATCH 02/25] first draft --- optimizations.qmd | 997 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 937 insertions(+), 60 deletions(-) diff --git a/optimizations.qmd b/optimizations.qmd index f3e1746e..8b6fe84c 100644 --- a/optimizations.qmd +++ b/optimizations.qmd @@ -1,90 +1,967 @@ -# Model Optimizations +# **Model Optimizations** -::: {.callout-tip collapse="true"} -## Learning Objectives +# **Introduction** -* coming soon. +When machine learning models are deployed on systems, especially on resource-constrained embedded systems, the optimization of models is a necessity. While machine learning inherently often demands substantial computational resources, the systems are inherently limited in memory, processing power, and energy. This chapter will dive into the art and science of optimizing machine learning models to ensure they are lightweight, efficient, and effective when deployed in TinyML scenarios. -::: +We have structured this chapter in three tiers. First, in @sec-model\_ops\_representation we examine the significance and methodologies of reducing the parameter complexity of models without compromising their inference capabilities. Techniques such as pruning and knowledge distillation are discussed, offering insights into how models can be compressed and simplified while maintaining, or even enhancing, their performance. -## Introduction +Going one level lower, in @sec-model\_ops\_numerics, we study the role of numerical precision in model computations and how altering it impacts model size, speed, and accuracy. We will examine the various numerical formats and how reduced-precision arithmetic can be leveraged to optimize models for embedded deployment. -This chapter stands as a critical overview of what is coming in the next few chapters that will offer readers an in-depth exploration of the multifaceted world of ML frameworks, highlighting their significance, functionalities, and the potential to revolutionize embedded systems development. As embedded devices continue to permeate various aspects of daily life, from healthcare to home automation, a comprehensive understanding of these frameworks not only serves as a bridge between concept and application but also as a catalyst in fostering innovations that are efficient, adaptable, and primed for the future. +Finally, as we go lower closer to the hardware, in @sec-model\_ops\_hw, we will navigate through the landscape of hardware-software co-design, exploring how models can be optimized by tailoring them to the specific characteristics and capabilities of the target hardware. We will discuss how models can be adapted to exploit the available hardware resources effectively. -- Overview of model optimization techniques for efficient AI -- Motivations: reduce model size, latency, power consumption, etc. -- Optimization approaches: pruning, quantization, efficient architectures, etc. +![Shape1](RackMultipart20231019-1-ips613_html_382afdb472c1e9b0.gif) -## Quantization {#sec-quant} +_A visualization showing each of the three sections to be covered on the hardware-software gradient._ -Explanation: Quantization is a critical technique in model optimization, helping to reduce the computational and memory demands of AI models without substantially sacrificing their performance. Through various methods and schemas, it facilitates the deployment of deep learning models on embedded devices with limited resources. +# **Efficient Model Representation** -- Motivation for model quantization -- Post-training quantization -- Quantization-aware training -- Handling activations vs weights -- Quantization schemas: uniform, mixed, per-channel -- Quantization in practice: deployment frameworks +The first avenue of attack for model optimization starts in familiar territory for most ML practitioners: efficient model representation is often first tackled at the highest level of parametrization abstraction: the model's architecture itself. -## Pruning {#sec-pruning} +Most traditional ML practitioners design models with a general high-level objective in mind, whether it be image classification, person detection, or keyword spotting as mentioned previously in this textbook. Their designs generally end up naturally fitting into some soft constraints due to limited compute resources during development, but generally these designs are not aware of later constraints, such as those required if the model is to be deployed on a more constrained device instead of the cloud. -Explanation: Pruning is an optimization approach that focuses on eliminating unnecessary connections and weights in a neural network, without affecting its ability to make accurate predictions. It is essential in enhancing the efficiency of AI models by reducing their size and computational demands, hence making them faster and more suitable for deployment on devices with limited resources. +In this section, we'll discuss how practitioners can harness principles of hardware-software co-design even at a model's high level architecture to make their models compatible with edge devices. From most to least hardware aware at this level of modification, we discuss several of the most common strategies for efficient model parametrization: pruning, model compression, and edge-friendly model architectures. -- Overview of pruning techniques -- Structured vs unstructured pruning -- Magnitude-based pruning -- Iterative pruning and re-training -- Lottery ticket hypothesis -- Pruning in practice: frameworks, results +## Pruning -## Kernel and Graph Optimization +### Overview -Explanation: Kernel and graph optimization is a critical component in the process of tailoring AI models to the specific constraints of embedded systems, helping to ensure that these models can operate efficiently and effectively even in resource-constrained environments. +Model pruning is a technique in machine learning that aims to reduce the size and complexity of a neural network model while maintaining its predictive capabilities as much as possible. The goal of model pruning is to remove redundant or non-essential components of the model, including connections between neurons, individual neurons, or even entire layers of the network. -- Convolution Algorithms -- MM Kernels -- Layer Fusion -- Node Elimination -- Graph Rewriting +This process typically involves analyzing the machine learning model to identify and remove weights, nodes, or layers that have little impact on the model's outputs. By selectively pruning a model in this way, the total number of parameters can be reduced significantly without substantial declines in model accuracy. The resulting compressed model requires less memory and computational resources to train and run while enabling faster inference times. -## Model Compression {#sec-kd} +Model pruning is especially useful when deploying machine learning models to devices with limited compute resources, such as mobile phones or TinyML systems. The technique facilitates the deployment of larger, more complex models on these devices by reducing their resource demands. Additionally, smaller models require less data to generalize well and are less prone to overfitting. By providing an efficient way to simplify models, model pruning has become a vital technique for optimizing neural networks in machine learning. -Explanation: Model compression is crucial in reducing the computational complexity of deep learning models while preserving their predictive performance. This section delves into various techniques that facilitate the compression of models, making them lighter and more manageable for deployment on resource-constrained devices, thereby fostering quicker and more efficient AI implementations. +There are several common pruning techniques used in machine learning, these include structured pruning, unstructured pruning, iterative pruning, bayesian pruning, and even random pruning. In addition to pruning the weights, one can also prune the activations. Activation pruning specifically targets neurons or filters that activate rarely or have overall low activation. There are numerous other methods, such as sensitivity and movement pruning. For a comprehensive list of methods, the reader is encouraged to read the following paper: ["A Survey on Deep Neural Network Pruning: Taxonomy, Comparison, Analysis, and Recommendations" (2023)]([https://arxiv.org/pdf/2308.06767.pdf](https://arxiv.org/pdf/2308.06767.pdf)). -- Knowledge distillation -- Tensor decomposition methods -- Low-rank matrix factorization -- Learned approximations of weight matrices +So how does one choose the type of pruning methods? Many variations of pruning techniques exist where each varies the heuristic of what should be kept and pruned from the model as well the number of times pruning occurs. Traditionally, pruning happens after the model is fully trained, where the pruned model may experience mild accuracy loss. However, as we will discuss further, recent discoveries have found that pruning can be used during training (i.e., iteratively) to identify more efficient and accurate model representations. -## Efficient Model Architectures +### Structured Pruning -Explanation: Crafting efficient model architectures is vital in the optimization of AI systems, aiming to create models that provide good performance with fewer computational resources. This segment explores different architectural approaches and methodologies to develop mobile-friendly, efficient networks, highlighting the significance of embracing techniques like Neural Architecture Search (NAS) to find the optimal structures for specific tasks. +We start with structured pruning, a technique that reduces the size of a neural network by eliminating entire model-specific substructures while maintaining the overall model structure. It removes entire neurons/filters or layers based on importance criteria. For example, for a convolutional neural network (CNN), this could be certain filter instances or channels. For fully connected networks, this could be neurons themselves while maintaining full connectivity or even be elimination of entire model layers that are deemed to be insignificant. This type of pruning often leads to regular, structured sparse networks that are hardware friendly. -- Designing mobile-friendly architectures -- Depthwise separable convolutions -- SqueezeNet, MobileNet, EfficientNet -- Searching for efficient architectures: NAS, morphnets +#### Components -## Hardware-Aware Training +Best practices have started to emerge on how to think about structured pruning. There are three main components: -Explanation: Hardware-aware training is a fundamental aspect of model optimization, aligning the design of AI models closely with the capabilities and limitations of the target hardware. This approach ensures that models are developed with an understanding of the specific characteristics of the deployment hardware, promoting efficiency and performance optimizations from the ground up. +1. Structures to target for pruning +2. Establishing a criteria for pruning +3. Selecting a pruning strategy -- Co-designing models to match hardware -- Quantization-aware training -- Custom training data augmentation operations +##### Structures to target for pruning -## Dynamic Model Loading +Given that there are different strategies, each of these structures (i.e., neurons, channels and layers) is pruned based on specific criteria and strategies, ensuring that the reduced model maintains as much of the predictive prowess of the original model as possible while gaining in computational efficiency and reduction in size. -Explanation: Incorporating dynamic model loading strategies can be highly beneficial in optimizing the performance and efficiency of AI systems, particularly in memory-constrained environments. This section discusses the importance of techniques such as partial network evaluation and on-demand model streaming, which allow for flexible model operations, helping to conserve valuable computational and memory resources on embedded devices. +The primary structures targeted for pruning include **neurons** , channels, and sometimes, entire layers, each having its unique implications and methodologies. When neurons are pruned, we are removing entire neurons along with their associated weights and biases, thereby reducing the width of the layer. This type of pruning is often utilized in fully connected layers. -- Partial network evaluation -- On-demand model streaming -- Benefits for memory-constrained devices +With **channel** pruning, which is predominantly applied in convolutional neural networks (CNNs), it involves eliminating entire channels or filters, which in turn reduces the depth of the feature maps and impacts the network's ability to extract certain features from the input data. This is particularly crucial in image processing tasks where computational efficiency is paramount. -## Conclusion +Finally, **layer** pruning takes a more aggressive approach by removing entire layers of the network. This significantly reduces the network's depth and thereby its capacity to model complex patterns and hierarchies in the data. This approach necessitates a careful balance to ensure that the model's predictive capability is not unduly compromised. -Explanation: As we conclude this chapter, it is vital to recap the significant approaches to model optimization and reflect on the balance required between accuracy, efficiency, and resource constraints. This section aims to give readers a comprehensive view of the available optimization techniques and their respective trade-offs, encouraging thoughtful application and exploration in future AI endeavors. +##### Establishing a criteria for pruning -- Summary of model optimization approaches -- Tradeoffs between accuracy, efficiency and resource constraints -- Future directions \ No newline at end of file +Establishing well-defined criteria for determining which specific structures to prune from a neural network model is a crucial component of the model pruning process. The core goal here is to identify and remove components that contribute the least to the model's predictive capabilities, while retaining structures integral to preserving the model's accuracy. + +A widely adopted and effective strategy for systematically pruning structures relies on computing importance scores for individual components like neurons, filters, channels or layers. These scores serve as quantitative metrics to gauge the significance of each structure and its effect on the model's output. + +There are several techniques for assigning these importance scores: + +- Weight magnitude-based pruning assigns scores based on the absolute values of the weights. Components with very small weights contribute minimally to activations and can be removed. +- Gradient-based pruning utilizes the gradients of the loss function with respect to each weight to determine sensitivity. Weights with low gradient magnitudes when altered have little effect on the loss and can be pruned. +- Activation-based pruning tracks activation values for neurons/filters over a validation dataset. Consistently low activation values suggest less relevance, warranting removal. +- Taylor expansion approximates the change in loss function from removing a given weight. Weights with negligible impact on loss are prime candidates for pruning. + +The idea is to measure, either directly or indirectly, the contribution of each component to the model's output. Structures with minimal influence according to the defined criteria are pruned first. This enables selective, optimized pruning that maximally compresses models while preserving predictive capacity. In general, it is important to evaluate the impact of removing particular structures on the model's output. + +##### Selecting a pruning strategy + +The pruning strategy orchestrates how structures are removed and integrates with subsequent model fine-tuning to recover predictive performance. Two main structured pruning strategies exist: iterative pruning and one-shot pruning. + +**Iterative pruning** gradually removes structures across multiple cycles of pruning followed by fine-tuning. In each cycle, a small set of structures are pruned based on importance criteria. The model is then fine-tuned, allowing it to adjust smoothly to the structural changes before the next pruning iteration. This gradual, cyclic approach prevents abrupt accuracy drops. It allows the model to slowly adapt as structures are reduced across iterations. + +**One-shot pruning** takes a more aggressive approach by pruning a large portion of structures simultaneously in one shot based on predefined importance criteria. This is followed by extensive fine-tuning to recover model accuracy. While faster, this aggressive strategy can degrade accuracy if the model cannot recover during fine-tuning. + +The choice between these strategies involves weighing factors like model size, target sparsity level, available compute and acceptable accuracy losses. One-shot pruning can rapidly compress models, but iterative pruning may enable better accuracy retention for a target level of pruning. In practice, the strategy is tailored based on use case constraints. The overarching aim is to generate an optimal strategy that removes redundancy, achieves efficiency gains through pruning, and finely tunes the model to stabilize accuracy at an acceptable level for deployment. + +#### Advantages of Structured Pruning + +Structured pruning brings forth a myriad of advantages that cater to various facets of model deployment and utilization, especially in environments where computational resources are constrained. + +##### Computational Efficiency + +By eliminating entire structures, such as neurons or channels, structured pruning significantly diminishes the computational load during both training and inference phases, thereby enabling faster model predictions and training convergence. Moreover, the removal of structures inherently reduces the model's memory footprint, ensuring that it demands less storage and memory during operation, which is particularly beneficial in memory-constrained environments like TinyML systems. + +##### Hardware Efficiency + +Structured pruning often results in models that are more amenable to deployment on specialized hardware, such as Field-Programmable Gate Arrays (FPGAs) or Application-Specific Integrated Circuits (ASICs), due to the regularity and simplicity of the pruned architecture. With reduced computational requirements, it translates to lower energy consumption, which is crucial for battery-powered devices and sustainable computing practices. + +##### Maintenance and Deployment + +The pruned model, while smaller, retains its original architectural form, which can simplify the deployment pipeline and ensure compatibility with existing systems and frameworks. Also, with fewer parameters and simpler structures, the pruned model becomes easier to manage and monitor in production environments, potentially reducing the overhead associated with model maintenance and updates. Later on, when we dive into [MLOps](./mlops.qmd), this need will become apparent. + +### Unstructured Pruning + +Unstructured pruning is, as its name suggests, pruning the model without regard to model-specific substructure. As mentioned above, it offers a greater aggression in pruning and can achieve higher model sparsities while maintaining accuracy given less constraints on what can and can't be pruned. Generally, post-training unstructured pruning consists of an importance criterion for individual model parameters/weights, pruning/removal of weights that fall below the criteria, and optional fine-tuning after to try and recover the accuracy lost during weight removal. + +Unstructured pruning has some advantages over structured pruning: removing individual weights instead of entire model substructures often leads in practice to lower model accuracy hits. Furthermore, generally determining the criterion of importance for an individual weight is much simpler than for an entire substructure of parameters in structured pruning, making the former preferable for cases where that overhead is hard or unclear to compute. Similarly, the actual process of structured pruning is generally less flexible, as removing individual weights is generally simpler than removing entire substructures and ensuring the model still works. + +Unstructured pruning, while offering the potential for significant model size reduction and enhanced deployability, brings with it challenges related to managing sparse representations and ensuring computational efficiency. It is particularly useful in scenarios where achieving the highest possible model compression is paramount and where the deployment environment can handle sparse computations efficiently. + +The following compact table provides a concise comparison between structured and unstructured pruning. In this table, aspects related to the nature and architecture of the pruned model (Definition, Model Regularity, and Compression Level) are grouped together, followed by aspects related to computational considerations (Computational Efficiency and Hardware Compatibility), and ending with aspects related to the implementation and adaptation of the pruned model (Implementation Complexity and Fine-Tuning Complexity). Both pruning strategies offer unique advantages and challenges, and the selection between them should be influenced by specific project and deployment requirements. + +| \*\*Aspect\*\* | \*\*Structured Pruning\*\* | \*\*Unstructured Pruning\*\* | + +|------------------------------|------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------| + +| \*\*Definition\*\* | Pruning entire structures (e.g., neurons, channels, layers) within the network. | Pruning individual weights or neurons, resulting in sparse matrices or non-regular network structures. | + +| \*\*Model Regularity\*\* | Maintains a regular, structured network architecture. | Results in irregular, sparse network architectures. | + +| \*\*Compression Level\*\* | May offer limited model compression compared to unstructured pruning. | Can achieve higher model compression due to fine-grained pruning. | + +| \*\*Computational Efficiency\*\* | Typically more computationally efficient due to maintaining regular structures. | Can be computationally inefficient due to sparse weight matrices, unless specialized hardware/software is used. | + +| \*\*Hardware Compatibility\*\* | Generally better compatible with various hardware due to regular structures. | May require hardware that efficiently handles sparse computations to realize benefits. | + +| \*\*Implementation Complexity\*\*| Often simpler to implement and manage due to maintaining network structure. | Can be complex to manage and compute due to sparse representations. | + +| \*\*Fine-Tuning Complexity\*\* | May require less complex fine-tuning strategies post-pruning. | Might necessitate more complex retraining or fine-tuning strategies post-pruning. | + +![](RackMultipart20231019-1-ips613_html_c3f90160a096b94b.png) + +_A visualization showing the differences and examples between unstructured and structured pruning. Observe that unstructured pruning can lead to models that no longer obey high-level structural guaruntees of their original unpruned counterparts: the left network is no longer a fully connected network after pruning. Structured pruning on the other hand maintains those invariants: in the middle, the fully connected network is pruned in a way that the pruned network is still fully connected; likewise, the CNN maintains its convolutional structure, albeit with fewer filters (Credit: EURASIP)._ + +### Lottery Ticket Hypothesis + +Pruning has evolved from a purely post-training technique that came at the cost of some accuracy, to a powerful meta-learning approach applied during training to reduce model complexity. This advancement in turn improves compute, memory, and latency efficiency at both training and inference. + +A breakthrough finding that catalyzed this evolution was the [lottery ticket hypothesis](https://arxiv.org/abs/1803.03635) empirically discovered by Jonathan Frankle and Michael Carbin. Their work states that within dense neural networks, there exist sparse subnetworks, referred to as "winning tickets," that can match or even exceed the performance of the original model when trained in isolation. Specifically, these winning tickets, when initialized using the same weights as the original network, can achieve similarly high training convergence and accuracy on a given task. It is worthwhile pointing out that they empirically discovered the lottery ticket hypothesis, which was later formalized. + +More formally, the lottery ticket hypothesis is a concept in deep learning that suggests that within a neural network, there exist sparse subnetworks (or "winning tickets") that, when initialized with the right weights, are capable of achieving high training convergence and inference performance on a given task. The intuition behind this hypothesis is that, during the training process of a neural network, many neurons and connections become redundant or unimportant, particularly with the inclusion of training techniques encouraging redundancy like dropout. Identifying, pruning out, and initializing these "winning tickets'' allows for faster training and more efficient models, as they contain the essential model decision information for the task. Furthermore, as generally known with the bias-variance tradeoff theory, these tickets suffer less from overparameterization and thus generalize better rather than overfitting to the task. ![](RackMultipart20231019-1-ips613_html_8215915cde9ac59.png) + +_An example experiment from the lottery ticket hypothesis showing pruning and training experiments on a fully connected LeNet over a variety of pruning ratios: note the first plot showing how pruning is able to reveal a subnetwork nearly one-fifth the size that trains to a higher test accuracy faster than the unpruned network. However, further note how in the second plot that further pruned models in models that both train slower and are not able to achieve that same maximal test accuracy due to the lower number of parameters (Credit: ICLR)._ + +### Challenges & Limitations + +There is no free lunch with pruning optimizations. + +#### Quality vs. Size Reduction + +A key challenge in both structured and unstructured pruning is balancing size reduction with maintaining or improving predictive performance. This trade-off becomes more complex with unstructured pruning, where individual weight removal can create sparse weight matrices. Ensuring the pruned model retains generalization capacity while becoming more computationally efficient is critical, often requiring extensive experimentation and validation. + +#### Determining Pruning Criteria + +Establishing a robust pruning criteria, whether for removing entire structures (structured pruning) or individual weights (unstructured pruning), is challenging. The criteria must accurately identify elements whose removal minimally impacts performance. For unstructured pruning, this might involve additional complexities due to the potential for generating sparse weight matrices, which can be computationally inefficient on certain hardware. + +#### Fine-Tuning and Retraining + +Post-pruning fine-tuning is imperative in both structured and unstructured pruning to recover lost performance and stabilize the model. The challenge encompasses determining the extent, duration, and nature of the fine-tuning process, which can be influenced by the pruning method and the degree of pruning applied. + +##### Scalability of Pruning Strategies + +Ensuring that pruning strategies, whether structured or unstructured, are scalable and applicable across various models and domains is challenging. Unstructured pruning might introduce additional challenges related to managing and deploying models with sparse weight matrices, especially in hardware that is not optimized for sparse computations. + +##### Hardware Compatibility and Efficiency + +Especially pertinent to unstructured pruning, hardware compatibility and efficiency become critical. Unstructured pruning often results in sparse weight matrices, which may not be efficiently handled by certain hardware, potentially negating the computational benefits of pruning. Ensuring that pruned models, particularly those resulting from unstructured pruning, are compatible and efficient on the target hardware is a significant consideration. + +##### Complexity in Implementing Pruning Algorithms + +Unstructured pruning might introduce additional complexity in implementing pruning algorithms due to the need to manage sparse representations of weights. Developing or adapting algorithms that can efficiently handle, store, and compute sparse weight matrices is an additional challenge and consideration in unstructured pruning. + +##### Legal and Ethical Considerations + +Last but not least, adherence to legal and ethical guidelines is paramount, especially in domains with significant consequences. Both pruning methods must undergo rigorous validation, testing, and potentially certification processes to ensure compliance with relevant regulations and standards. This is especially important in use cases like medical AI applications or autonomous driving where quality drops due to pruning like optimizationscan be life threatening. + +## Model Compression + +Model compression techniques are crucial for deploying deep learning models on resource-constrained devices. These techniques aim to create smaller, more efficient models that preserve the predictive performance of the original models. + +### Knowledge Distillation + +One popular technique is knowledge distillation (KD), which transfers knowledge from a large, complex "teacher" model to a smaller "student" model. The key idea is to train the student model to mimic the teacher's outputs.The concept of KD was first popularized by the work of Geoffrey Hinton, Oriol Vinyals, and Jeff Dean in their paper ["Distilling the Knowledge in a Neural Network" (2015)](https://arxiv.org/abs/1503.02531). + +#### Overview and Benefits + +At its core, KD strategically leverages the refined outputs of a pre-trained teacher model to transfer knowledge to a smaller student model. The key technique is using "soft targets" derived from the teacher's probabilistic predictions. Specifically, the teacher's outputs are passed through a temperature-scaled softmax function, yielding softened probability distributions over classes. This softening provides richer supervision signals for the student model compared to hard target labels. + +The loss function is another critical component that typically amalgamates a distillation loss, which measures the divergence between the teacher and student outputs, and a classification loss, which ensures the student model adheres to the true data labels. The Kullback-Leibler (KL) divergence is commonly employed to quantify the distillation loss, providing a measure of the discrepancy between the probability distributions output by the teacher and student models. + +Another core concept is "temperature scaling" in the softmax function. It plays the role in controlling the granularity of the information distilled from the teacher model. A higher temperature parameter produces softer, more informative distributions, thereby facilitating the transfer of more nuanced knowledge to the student model. However, it also introduces the challenge of effectively balancing the trade-off between the informativeness of the soft targets and the stability of the training process. + +These components, when adeptly configured and harmonized, enable the student model to assimilate the teacher model's knowledge, crafting a pathway towards efficient and robust smaller models that retain the predictive prowess of their larger counterparts. + +![](RackMultipart20231019-1-ips613_html_18e5a0ac4ca20162.png) + +_A visualization of the training procedure of knowledge distillation. Note how the logits or soft labels of the teacher model are used to provide a distillation loss for the student model to learn from (Credit: IntelLabs)._ + +#### Challenges + +However, KD has a unique set of challenges and considerations that researchers and practitioners must attentively address. One of the challenges is in the meticulous tuning of hyperparameters, such as the temperature parameter in the softmax function and the weighting between the distillation and classification loss in the objective function. Striking a balance that effectively leverages the softened outputs of the teacher model while maintaining fidelity to the true data labels is non-trivial and can significantly impact the student model's performance and generalization capabilities. + +Furthermore, the architecture of the student model itself poses a considerable challenge. Designing a model that is compact to meet computational and memory constraints, while still being capable of assimilating the essential knowledge from the teacher model, demands a nuanced understanding of model capacity and the inherent trade-offs involved in compression. The student model must be carefully architected to navigate the dichotomy of size and performance, ensuring that the distilled knowledge is meaningfully captured and utilized. Moreover, the choice of teacher model, which inherently influences the quality and nature of the knowledge to be transferred, is important and it introduces an added layer of complexity to the KD process. + +These challenges underscore the necessity for a thorough and nuanced approach to implementing KD, ensuring that the resultant student models are both efficient and effective in their operational contexts. + +### Low-rank Matrix Factorization + +Similar in approximation theme, low-rank matrix factorization (LRFM) is a mathematical technique used in linear algebra and data analysis to approximate a given matrix by decomposing it into two or more lower-dimensional matrices. The fundamental idea is to express a high-dimensional matrix as a product of lower-rank matrices, which can help reduce the complexity of data while preserving its essential structure. Mathematically, given a matrix \(A \in \mathbb{R}^{m \times n}\), LRMF seeks matrices \(U \in \mathbb{R}^{m \times k}\) and \(V \in \mathbb{R}^{k \times n}\) such that \(A \approx UV\), where \(k\) is the rank and is typically much smaller than \(m\) and \(n\). + +#### Background and Benefits + +One of the seminal works in the realm of matrix factorization, particularly in the context of recommendation systems, is the paper by Yehuda Koren, Robert Bell, and Chris Volinsky, ["Matrix Factorization Techniques for Recommender Systems" (2009)]([https://ieeexplore.ieee.org/document/5197422](https://ieeexplore.ieee.org/document/5197422)). The authors delve into various factorization models, providing insights into their efficacy in capturing the underlying patterns in the data and enhancing predictive accuracy in collaborative filtering. LRFM has been widely applied in recommendation systems (such as Netflix, Facebook, etc.), where the user-item interaction matrix is factorized to capture latent factors corresponding to user preferences and item attributes. + +The main advantage of low-rank matrix factorization lies in its ability to reduce data dimensionality as shown in the image below where there are fewer parameters to store, making it computationally more efficient and reducing storage requirements at the cost of some additional compute. This can lead to faster computations and more compact data representations, which is especially valuable when dealing with large datasets. Additionally, it may aid in noise reduction and can reveal underlying patterns and relationships in the data. + +![](RackMultipart20231019-1-ips613_html_7817785893972f22.png) + +_A visualization showing the decrease in parameterization enabled by low-rank matrix factorization. Observe how the matrix \M\ can be approximated by the product of matrices \L\_k\ and \R\_k^T\. For intuition, most fully connected layers in networks are stored as a projection matrix \M\, which requires \m \times n\ parameter to be loaded on computation. However, by decomposing and approximating it as the product of two lower rank matrices, we thus only need to store \m \times k + k\times n\ parameters in terms of storage while incurring an additional compute cost of the matrix multiplication.__So long as \k \< n/2\, this factorization has fewer parameters total to store while adding a computation of runtime \O(mkn)\ (Credit: Medium)._ + +#### Challenges + +But practitioners and researchers encounter a spectrum of challenges and considerations that necessitate careful attention and strategic approaches. As with any lossy compression technique, we may lose information during this approximation process: choosing the correct rank that balances the information lost and the computational costs is tricky as well and adds an additional hyper-parameter to tune for. + +Low-rank matrix factorization is a valuable tool for dimensionality reduction and making compute fit onto edge devices but, like other techniques, needs to be carefully tuned to the model and task at hand. A key challenge resides in managing the computational complexity inherent to LRMF, especially when grappling with high-dimensional and large-scale data. The computational burden, particularly in the context of real-time applications and massive datasets, remains a significant hurdle for effectively using LRFM. + +Moreover, the conundrum of choosing the optimal rank, \(k\), for the factorization introduces another layer of complexity. The selection of \(k\) inherently involves a trade-off between approximation accuracy and model simplicity, and identifying a rank that adeptly balances these conflicting objectives often demands a combination of domain expertise, empirical validation, and sometimes, heuristic approaches. The challenge is further amplified when the data encompasses noise or when the inherent low-rank structure is not pronounced, making the determination of a suitable \(k\) even more elusive. + +Handling missing or sparse data, a common occurrence in applications like recommendation systems, poses another substantial challenge. Traditional matrix factorization techniques, such as Singular Value Decomposition (SVD), are not directly applicable to matrices with missing entries, necessitating the development and application of specialized algorithms that can factorize incomplete matrices while mitigating the risks of overfitting to the observed entries. This often involves incorporating regularization terms or constraining the factorization in specific ways, which in turn introduces additional hyperparameters that need to be judiciously selected. + +Furthermore, in scenarios where data evolves or grows over time, developing LRMF models that can adapt to new data without necessitating a complete re-factorization is a critical yet challenging endeavor. Online and incremental matrix factorization algorithms seek to address this by enabling the update of factorized matrices as new data arrives, yet ensuring stability, accuracy, and computational efficiency in these dynamic settings remains an intricate task. This is particularly challenging in the space of TinyML, where edge redeployment for refreshed models can be quite challenging. + +### Tensor Decomposition + +Similar to low-rank matrix factorization, more complex models may store weights in higher dimensions, such as tensors: tensor decomposition is the higher-dimensional analogue of matrix factorization, where a model tensor is decomposed into lower rank components, which again are easier to compute on and store but may suffer from the same issues as mentioned above of information loss and nuanced hyperparameter tuning. Mathematically, given a tensor \(\mathcal{A}\), tensor decomposition seeks to represent \(\mathcal{A}\) as a combination of simpler tensors, facilitating a compressed representation that approximates the original data while minimizing the loss of information. + +The work of Tamara G. Kolda and Brett W. Bader, ["Tensor Decompositions and Applications"](https://epubs.siam.org/doi/abs/10.1137/07070111X) (2009), stands out as a seminal paper in the field of tensor decompositions. The authors provide a comprehensive overview of various tensor decomposition methods, exploring their mathematical underpinnings, algorithms, and a wide array of applications, ranging from signal processing to data mining. Of course, the reason we are discussing it is because it has huge potential for system performance improvements, particularly in the space of TinyML, where throughput and memory footprint savings are crucial to feasibility of deployments . + +![](RackMultipart20231019-1-ips613_html_d5b1f2042f81070a.png) + +_A visualization showing the decrease in parameterization enabled by tensor decomposition. Observe how the shown three-dimensional tensor \y\ can be approximated by three matrices, all of lower rank, greatly reducing the number of parameters to be held in memory. (Credit: Medium)._ + +## Edge-Aware Model Design + +Finally, we reach the other end of the gradient, where we specifically make model architecture decisions directly given knowledge of the edge devices we wish to deploy on. + +As covered in previous sections, edge devices are constrained specifically with limitations on memory and parallelizable computations: as such, if there are critical inference speed requirements, computations must be flexible enough to satisfy hardware constraints, something that can be designed at the model architecture level. Furthermore, trying to cram SOTA large ML models onto edge devices even after pruning and compression is generally infeasible purely due to size: the model complexity itself must be chosen with more nuance as to more feasibly fit the device. Edge ML developers have approached this architectural challenge both through designing bespoke edge ML model architectures and through device-aware neural architecture search (NAS), which can more systematically generate feasible on-device model architectures. + +### Model Design Techniques + +One edge friendly architecture design is depthwise separable convolutions. Commonly used in deep learning for image processing, it consists of two distinct steps: the first is the depthwise convolution, where each input channel is convolved independently with its own set of learnable filters. This step reduces computational complexity by a significant margin compared to standard convolutions, as it drastically reduces the number of parameters and computations involved. The second step is the pointwise convolution, which combines the output of the depthwise convolution channels through a 1x1 convolution, creating inter-channel interactions. This approach offers several advantages. Pros include reduced model size, faster inference times, and often better generalization due to fewer parameters, making it suitable for mobile and embedded applications. However, depthwise separable convolutions may not capture complex spatial interactions as effectively as standard convolutions and might require more depth (layers) to achieve the same level of representational power, potentially leading to longer training times. Nonetheless, their efficiency in terms of parameters and computation makes them a popular choice in modern convolutional neural network architectures. + +![](RackMultipart20231019-1-ips613_html_a34afbcb91f61092.png) + +_A visualization showing each of the individual operations behind a single depthwise separable convolution: first, we give the input image a convolution without modifying the depth. Once those convolutions are completed, we then do a pointwise 1-by-1 convolution to get to the desired number of channels. This reduces the number of parameters, making it a key TinyML technique (Credit: AnalyticsVidhya)._ + +### Example Model Architectures + +In this vein, a number of recent architectures have been, from inception, specifically designed for maximizing accuracy on an edge deployment, notably SqueezeNet, MobileNet, and EfficientNet. [SqueezeNet]([https://arxiv.org/abs/1602.07360](https://arxiv.org/abs/1602.07360)), for instance, utilizes a compact architecture with 1x1 convolutions and fire modules to minimize the number of parameters while maintaining strong accuracy. [MobileNet]([https://arxiv.org/abs/1704.04861](https://arxiv.org/abs/1704.04861)), on the other hand, employs the aforementioned depthwise separable convolutions to reduce both computation and model size. [EfficientNet]([https://arxiv.org/abs/1905.11946](https://arxiv.org/abs/1905.11946)) takes a different approach by optimizing network scaling (i.e. varying the depth, width and resolution of a network) and compound scaling, a more nuanced variation network scaling, to achieve superior performance with fewer parameters. These models are essential in the context of edge computing where limited processing power and memory require lightweight yet effective models that can efficiently perform tasks such as image recognition, object detection, and more. Their design principles showcase the importance of intentionally tailored model architecture for edge computing, where performance and efficiency must fit within constraints. + +### Streamlining Model Architecture Search + +Finally, systematized pipelines for searching for performant edge-compatible model architectures are possible through frameworks like [TinyNAS](https://arxiv.org/abs/2007.10319) and [MorphNet]([https://arxiv.org/abs/1711.06798](https://arxiv.org/abs/1711.06798)). + +TinyNAS is an innovative neural architecture search framework introduced in the MCUNet paper, designed to efficiently discover lightweight neural network architectures for edge devices with limited computational resources. Leveraging reinforcement learning and a compact search space of micro neural modules, TinyNAS optimizes for both accuracy and latency, enabling the deployment of deep learning models on microcontrollers, IoT devices, and other resource-constrained platforms. Specifically, TinyNAS, in conjunction with a network optimizer TinyEngine, generates different search spaces by scaling the input resolution and the model width of a model, then collects the computation FLOPs distribution of satisfying networks within the search space to evaluate its priority. TinyNAS relies on the assumption that a search space that accommodates higher FLOPs under memory constraint can produce higher accuracy models, something that the authors verified in practice in their work. In empirical performance, TinyEngine reduced models the peak memory usage by around 3.4 times and accelerated inference by 1.7 to 3.3 times compared to [TFLite]([https://www.tensorflow.org/lite](https://www.tensorflow.org/lite)) and [CMSIS-NN]([https://www.keil.com/pack/doc/CMSIS/NN/html/index.html](https://www.keil.com/pack/doc/CMSIS/NN/html/index.html)).. + +Similarly, MorphNet is a neural network optimization framework designed to automatically reshape and morph the architecture of deep neural networks, optimizing them for specific deployment requirements. It achieves this through two steps: first, it leverages a set of customizable network morphing operations, such as widening or deepening layers, to dynamically adjust the network's structure. These operations enable the network to adapt to various computational constraints, including model size, latency, and accuracy targets, which are extremely prevalent in edge computing usage. In the second step, MorphNet uses a reinforcement learning-based approach to search for the optimal permutation of morphing operations, effectively balancing the trade-off between model size and performance. This innovative method allows deep learning practitioners to automatically tailor neural network architectures to specific application and hardware requirements, ensuring efficient and effective deployment across various platforms. + +TinyNAS and MorphNet represent a few of the many significant advancements in the field of systematic neural network optimization, allowing architectures to be systematically chosen and generated to fit perfectly within problem constraints. + +**References:** + +- [[1503.02531] Distilling the Knowledge in a Neural Network](https://arxiv.org/abs/1503.02531) +- [[1803.03635] The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks](https://arxiv.org/abs/1803.03635) +- [https://www.researchgate.net/figure/A-high-level-view-of-how-pruning-functions-in-compressing-deep-neural-networks\_fig1\_352835385](https://www.researchgate.net/figure/A-high-level-view-of-how-pruning-functions-in-compressing-deep-neural-networks_fig1_352835385) +- [https://intellabs.github.io/distiller/knowledge\_distillation.html](https://intellabs.github.io/distiller/knowledge_distillation.html) +- [https://ivygdy.medium.com/deep-learning-model-compression-ii-546352ea9453](https://ivygdy.medium.com/deep-learning-model-compression-ii-546352ea9453) +- [[1507.00333] Notes on Low-rank Matrix Factorization](https://arxiv.org/abs/1507.00333) +- [https://arxiv.org/pdf/2303.13635.pdf](https://arxiv.org/pdf/2303.13635.pdf) + +- [[2303.00566] Structured Pruning for Deep Convolutional Neural Networks: A survey](https://arxiv.org/abs/2303.00566) +- [[2003.03033] What is the State of Neural Network Pruning?](https://arxiv.org/abs/2003.03033) +- [https://www.kolda.net/publication/TensorReview.pdf](https://www.kolda.net/publication/TensorReview.pdf) +- [https://medium.com/@xinyu.chen/inpainting-fluid-dynamics-with-tensor-decomposition-numpy-d84065fead4d](https://medium.com/@xinyu.chen/inpainting-fluid-dynamics-with-tensor-decomposition-numpy-d84065fead4d) +- [https://www.analyticsvidhya.com/blog/2021/11/an-introduction-to-separable-convolutions/](https://www.analyticsvidhya.com/blog/2021/11/an-introduction-to-separable-convolutions/) +- [[1602.07360] SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and \<0.5MB model s](https://arxiv.org/abs/1602.07360) +- [ize](https://arxiv.org/abs/1602.07360)[[1704.04861] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications](https://arxiv.org/abs/1704.04861) +- [[1905.11946] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks](https://arxiv.org/abs/1905.11946) +- [[2007.10319] MCUNet: Tiny Deep Learning on IoT Devices](https://arxiv.org/abs/2007.10319) (TinyNAS) + - Include plot of search spaces from this paper to cover this in more detail? +- MorphNet + - [[1711.06798] MorphNet: Fast & Simple Resource-Constrained Structure Learning of Deep Networks](https://arxiv.org/abs/1711.06798) + +- [Optimal Brain Damage](https://proceedings.neurips.cc/paper/1989/hash/6c9882bbac1c7093bd25041881277658-Abstract.html) +- [[1606.09274] Compression of Neural Machine Translation Models via Pruning](https://arxiv.org/abs/1606.09274) +- [[2308.06619] Can Unstructured Pruning Reduce the Depth in Deep Neural Networks?](https://arxiv.org/abs/2308.06619) + +# + + +# **Efficient Numerics Representation** + +Numerics representation involves a myriad of considerations, including but not limited to, the precision of numbers, their encoding formats, and the arithmetic operations facilitated. It invariably involves a rich array of different trade-offs, where practitioners are tasked with navigating between numerical accuracy and computational efficiency. For instance, while lower-precision numerics may offer the allure of reduced memory usage and expedited computations, they concurrently present challenges pertaining to numerical stability and potential degradation of model accuracy. + +## Motivation + +The imperative for efficient numerics representation arises, particularly as efficient model optimization alone falls short when adapting models for deployment on low-powered edge devices operating under stringent constraints. + +Beyond minimizing memory demands, the tremendous potential of efficient numerics representation lies in but is not limited to these fundamental ways. By diminishing computational intensity, efficient numerics can thereby amplify computational speed, allowing more complex models to compute on low-powered devices. Reducing the bit precision of weights and activations on heavily over-parameterized models enables condensation of model size for edge devices without significantly harming the model's predictive accuracy. With the omnipresence of neural networks in models, efficient numerics has a unique advantage in leveraging the layered structure of NNs to vary numeric precision across layers, minimizing precision in resistant layers while preserving higher precision in sensitive layers. + +In this segment, we'll delve into how practitioners can harness the principles of hardware-software co-design at the lowest levels of a model to facilitate compatibility with edge devices. Kicking off with an introduction to the numerics, we will examine its implications for device memory and computational complexity. Subsequently, we will embark on a discussion regarding the trade-offs entailed in adopting this strategy, followed by a deep dive into a paramount method of efficient numerics: quantization. + +## The Basics + +### Types + +Numerical data, the bedrock upon which machine learning models stand, manifest in two primary forms. These are integers and floating point numbers. + +**Integers** : Whole numbers, devoid of fractional components, integers (e.g., -3, 0, 42) are key in scenarios demanding discrete values. For instance, in ML, class labels in a classification task might be represented as integers, where "cat", "dog", and "bird" could be encoded as 0, 1, and 2 respectively. + +**Floating-Point Numbers:** Encompassing real numbers, floating-point numbers (e.g., -3.14, 0.01, 2.71828) afford the representation of values with fractional components. In ML model parameters, weights might be initialized with small floating-point values, such as 0.001 or -0.045, to commence the training process. Currently, there are 4 popular precision formats discussed below. + +**Variable bit widths:** Beyond the standard widths, research is ongoing into extremely low bit-width numerics, even down to binary or ternary representations. Extremely low bit-width operations can offer significant speedups and reduce power consumption even further. While challenges remain in maintaining model accuracy with such drastic quantization, advances continue to be made in this area. + +### Precision + +Precision, delineating the exactness with which a number is represented, bifurcates typically into single, double, half and in recent years there have been a number of other precisions that have emerged to better support machine learning tasks efficiently on the underlying hardware. + +**Double Precision (Float64):** Allocating 64 bits, double precision (e.g., 3.141592653589793) provides heightened accuracy, albeit demanding augmented memory and computational resources. In scientific computations, where precision is paramount, variables like π might be represented with Float64. + +**Single Precision (Float32)**: With 32 bits at its disposal, single precision (e.g., 3.1415927) strikes a balance between numerical accuracy and memory conservation. In ML, Float32 might be employed to store weights during training to maintain a reasonable level of precision. + +**Half Precision (Float16):** Constrained to 16 bits, half precision (e.g., 3.14) curtails memory usage and can expedite computations, albeit sacrificing numerical accuracy and range. In ML, especially during inference on resource-constrained devices, Float16 might be utilized to reduce the model's memory footprint. + +**Bfloat16:** Brain Floating-Point Format or Bfloat16, also employs 16 bits but allocates them differently compared to FP16: 1 bit for the sign, 8 bits for the exponent, and 7 bits for the fraction. This format, developed by Google, prioritizes a larger exponent range over precision, making it particularly useful in deep learning applications where the dynamic range is crucial. + +![](RackMultipart20231019-1-ips613_html_5604aeb2291a0865.png) + +_Three floating point formats (Credit: Google)._ + +**Integer:** Integer representations are made using 8, 4, and 2 bits. They are often used during the inference phase of neural networks, where the weights and activations of the model are quantized to these lower precisions. Integer representations are deterministic and offer significant speed and memory advantages over floating-point representations. For many inference tasks, especially on edge devices, the slight loss in accuracy due to quantization is often acceptable given the efficiency gains. An extreme form of integer numerics is for binary neural networks (BNNs), where weights and activations are constrained to one of two values: either +1 or -1. + +| Precision | Pros | Cons | + +|------------|-----------------------------------------------------------|--------------------------------------------------| + +| \*\*FP32\*\* (Floating Point 32-bit) | - Standard precision used in most deep learning frameworks.\ - High accuracy due to ample representational capacity.\ - Well-suited for training. | - High memory usage.\ - Slower inference times compared to quantized models.\ - Higher energy consumption. | + +| \*\*FP16\*\* (Floating Point 16-bit) | - Reduces memory usage compared to FP32.\ - Speeds up computations on hardware that supports FP16.\ - Often used in mixed-precision training to balance speed and accuracy. | - Lower representational capacity compared to FP32.\ - Risk of numerical instability in some models or layers. | + +| \*\*INT8\*\* (8-bit Integer) | - Significantly reduced memory footprint compared to floating-point representations.\ - Faster inference if hardware supports INT8 computations.\ - Suitable for many post-training quantization scenarios. | - Quantization can lead to some accuracy loss.\ - Requires careful calibration during quantization to minimize accuracy degradation. | + +| \*\*INT4\*\* (4-bit Integer) | - Even lower memory usage than INT8.\ - Further speed-up potential for inference. | - Higher risk of accuracy loss compared to INT8.\ - Calibration during quantization becomes more critical. | + +| \*\*Binary\*\* | - Minimal memory footprint (only 1 bit per parameter).\ - Extremely fast inference due to bitwise operations.\ - Power efficient. | - Significant accuracy drop for many tasks.\ - Complex training dynamics due to extreme quantization. | + +| \*\*Ternary\*\* | - Low memory usage but slightly more than binary.\ - Offers a middle ground between representation and efficiency. | - Accuracy might still be lower than higher precision models.\ - Training dynamics can be complex. | + +### Numeric Encoding and Storage + +Numeric encoding, the art of transmuting numbers into a computer-amenable format, and their subsequent storage are critical for computational efficiency. For instance, floating-point numbers might be encoded using the IEEE 754 standard, which apportions bits among sign, exponent, and fraction components, thereby enabling the representation of a vast array of values with a single format. There are a few new IEEE floating point formats that have been defined specifically for AI workloads: + +- [bfloat16](https://cloud.google.com/tpu/docs/bfloat16)- A 16-bit floating point format introduced by Google. It has 8 bits for exponent, 7 bits for mantissa and 1 bit for sign. Offers a reduced precision compromise between 32-bit float and 8-bit integers. Supported on many hardware accelerators. +- [posit](https://ieeexplore.ieee.org/document/9399648) - A configurable format that can represent different levels of precision based on exponent bits. Aims to be more efficient than IEEE 754 binary floats. Has adjustable dynamic range and precision. +- [Flexpoint](https://arxiv.org/abs/1711.02213) - A format introduced by Intel that can dynamically adjust precision across layers or within a layer. Allows tuning precision to accuracy and hardware requirements. +- [BF16ALT](https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/BFMLALB--BFMLALT--vector---BFloat16-floating-point-widening-multiply-add-long--vector--) - A proposed 16-bit format by ARM as an alternative to bfloat16. Uses additional bit in exponent to prevent overflow/underflow. +- [TF32](https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/) - Introduced by Nvidia for Ampere GPUs. Uses 10 bits for exponent instead of 8 bits like FP32. Improves model training performance while maintaining accuracy. +- [FP8](https://arxiv.org/abs/2209.05433) - 8-bit floating point format that keeps 6 bits for mantissa and 2 bits for exponent. Enables better dynamic range than integers. + +The key goals of these new formats are to provide lower precision alternatives to 32-bit floats for better computational efficiency and performance on AI accelerators while maintaining model accuracy. They offer different tradeoffs in terms of precision, range and implementation cost/complexity. + +sources: [https://cloud.google.com/tpu/docs/bfloat16](https://cloud.google.com/tpu/docs/bfloat16) + +[https://ieeexplore.ieee.org/document/9399648](https://ieeexplore.ieee.org/document/9399648) + +[[1711.02213] Flexpoint: An Adaptive Numerical Format for Efficient Training of Deep Neural Networks](https://arxiv.org/abs/1711.02213) + +[https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/BFMLALB--BFMLALT--vector---BFloat16-floating-point-widening-multiply-add-long--vector–](https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/BFMLALB--BFMLALT--vector---BFloat16-floating-point-widening-multiply-add-long--vector%E2%80%93) + +[https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/](https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/) + +[[2209.05433] FP8 Formats for Deep LearningP8 Formats for Deep Learning](https://arxiv.org/abs/2209.05433) + +### Efficiency Benefits + +Numerical efficiency matters for machine learning workloads for a number of reasons: + +**Computational Efficiency:** High-precision computations (like FP32 or FP64) can be slow and resource-intensive. By reducing numeric precision, one can achieve faster computation times, especially on specialized hardware that supports lower precision. + +**Memory Efficiency:** Storage requirements decrease with reduced numeric precision. For instance, FP16 requires half the memory of FP32. This is crucial when deploying models to edge devices with limited memory or when working with very large models. + +**Power Efficiency:** Lower precision computations often consume less power, which is especially important for battery-operated devices. + +**Noise Introduction:** Interestingly, the noise introduced by using lower precision can sometimes act as a regularizer, helping to prevent overfitting in some models. + +**Hardware Acceleration:** Many modern AI accelerators and GPUs are optimized for lower precision operations, leveraging the efficiency benefits of such numerics. + +Efficient numerics is not just about reducing the bit-width of numbers but understanding the trade-offs between accuracy and efficiency. As machine learning models become more pervasive, especially in real-world, resource-constrained environments, the focus on efficient numerics will continue to grow. By thoughtfully selecting and leveraging the appropriate numeric precision, one can achieve robust model performance while optimizing for speed, memory, and energy. + +## Numeric Representation Nuances + +There are a number of nuances with numerical representations for ML that require us to have an understanding of both the theoretical and practical aspects of numerics representation, as well as a keen awareness of the specific requirements and constraints of the application domain. + +### Memory Usage + +The memory footprint of ML models, particularly those of considerable complexity and depth, can be substantial, thereby posing a significant challenge in both training and deployment phases. For instance, a deep neural network with 100 million parameters, represented using Float32 (32 bits or 4 bytes per parameter), would necessitate approximately 400 MB of memory just for storing the model weights. This does not account for additional memory requirements during training for storing gradients, optimizer states, and forward pass caches, which can further amplify the memory usage, potentially straining the resources on certain hardware, especially edge devices with limited memory capacity. + +### Impact on Model Parameters and Weights + +The numeric representation casts a significant impact on the storage and computational requisites of ML model parameters and weights. For instance, a model utilizing Float64 for weights will demand double the memory and potentially increased computational time compared to a counterpart employing Float32. A weight matrix, for instance, with dimensions [1000, 1000] using Float64 would consume approximately 8MB of memory, whereas using Float32 would halve this to approximately 4MB. + +### Computational Complexity + +Numerical precision directly impacts computational complexity, influencing the time and resources required to perform arithmetic operations. For example, operations using Float64 generally consume more computational resources than their Float32 or Float16 counterparts. In the realm of ML, where models might need to process millions of operations (e.g., multiplications and additions in matrix operations during forward and backward passes), even minor differences in the computational complexity per operation can aggregate into a substantial impact on training and inference times. + +In addition to pure runtimes, there is also a concern over energy efficiency. Not all numerical computations are created equal from the underlying hardware standpoint. Some numerical operations are more energy efficient than others. For example, the figure below shows that integer addition is much more energy efficient than integer multiplication. + +![](RackMultipart20231019-1-ips613_html_f805b55c47f7449a.png) + +Source: [https://ieeexplore.ieee.org/document/6757323](https://ieeexplore.ieee.org/document/6757323) + +![](RackMultipart20231019-1-ips613_html_1d63b36f4cad991b.png) + +![](RackMultipart20231019-1-ips613_html_8687848c47696ba.png) + +### Hardware Compatibility + +Ensuring compatibility and optimized performance across diverse hardware platforms is another challenge in numerics representation. Different hardware, such as CPUs, GPUs, TPUs, and FPGAs, have varying capabilities and optimizations for handling different numeric precisions. For example, certain GPUs might be optimized for Float32 computations, while others might provide accelerations for Float16. Developing and optimizing ML models that can leverage the specific numerical capabilities of different hardware, while ensuring that the model maintains its accuracy and robustness, requires careful consideration and potentially additional development and testing efforts. + +Precision and Accuracy Trade-offs + +The trade-off between numerical precision and model accuracy is a nuanced challenge in numerics representation. Utilizing lower-precision numerics, such as Float16, might conserve memory and expedite computations but can also introduce issues like quantization error and reduced numerical range. For instance, training a model with Float16 might introduce challenges in representing very small gradient values, potentially impacting the convergence and stability of the training process. Furthermore, in certain applications, such as scientific simulations or financial computations, where high precision is paramount, the use of lower-precision numerics might not be permissible due to the risk of accruing significant errors. + +### Trade-off Examples + +To understand and appreciate the nuances let's consider some use case examples. Through these we will realize that the choice of numeric representation is not merely a technical decision but a strategic one, influencing the model's predictive acumen, its computational demands, and its deployability across diverse computational environments. In this section we will look at a couple of examples to better understand the trade-offs with numerics and how they tie to the real world. + +##### Autonomous Vehicles + +In the domain of autonomous vehicles, ML models are employed to interpret sensor data and make real-time decisions. The models must process high-dimensional data from various sensors (e.g., LiDAR, cameras, radar) and execute numerous computations within a constrained time frame to ensure safe and responsive vehicle operation. So the trade-offs here would include: + +- Memory Usage: Storing and processing high-resolution sensor data, especially in floating-point formats, can consume substantial memory. +- Computational Complexity: Real-time processing demands efficient computations, where higher-precision numerics might impede the timely execution of control actions. + +##### Mobile Health Applications + +Mobile health applications often utilize ML models for tasks like activity recognition, health monitoring, or predictive analytics, operating within the resource-constrained environment of mobile devices. The trade-offs here would include: + +- Precision and Accuracy Trade-offs: Employing lower-precision numerics to conserve resources might impact the accuracy of health predictions or anomaly detections, which could have significant implications for user health and safety. +- Hardware Compatibility: Models need to be optimized for diverse mobile hardware, ensuring efficient operation across a wide range of devices with varying numerical computation capabilities. + +##### High-Frequency Trading (HFT) Systems + +HFT systems leverage ML models to make rapid trading decisions based on real-time market data. These systems demand extremely low-latency responses to capitalize on short-lived trading opportunities. + +- Computational Complexity: The models must process and analyze vast streams of market data with minimal latency, where even slight delays, potentially introduced by higher-precision numerics, can result in missed opportunities. +- Precision and Accuracy Trade-offs: Financial computations often demand high numerical precision to ensure accurate pricing and risk assessments, posing challenges in balancing computational efficiency and numerical accuracy. + +##### Edge-Based Surveillance Systems + +Surveillance systems deployed on edge devices, like security cameras, utilize ML models for tasks like object detection, activity recognition, and anomaly detection, often operating under stringent resource constraints. + +- Memory Usage: Storing pre-trained models and processing video feeds in real-time demands efficient memory usage, which can be challenging with high-precision numerics. +- Hardware Compatibility: Ensuring that models can operate efficiently on edge devices with varying hardware capabilities and optimizations for different numeric precisions is crucial for widespread deployment. + +##### Scientific Simulations + +ML models are increasingly being utilized in scientific simulations, such as climate modeling or molecular dynamics simulations, to enhance predictive capabilities and reduce computational demands. + +- Precision and Accuracy Trade-offs: Scientific simulations often require high numerical precision to ensure accurate and reliable results, which can conflict with the desire to reduce computational demands via lower-precision numerics. +- Computational Complexity: The models must manage and process complex, high-dimensional simulation data efficiently to ensure timely results and enable large-scale or long-duration simulations. + +These examples illustrate diverse scenarios where the challenges of numerics representation in ML models are prominently manifested. Each system presents a unique set of requirements and constraints, necessitating tailored strategies and solutions to navigate the challenges of memory usage, computational complexity, precision-accuracy trade-offs, and hardware compatibility. + +## Quantization + +Source: [https://arxiv.org/abs/2004.09602](https://arxiv.org/abs/2004.09602) + +Quantization is prevalent in various scientific and technological domains, essentially involves the **mapping or constraining of a continuous set or range into a discrete counterpart to minimize the number of bits required**. + +### History + +Historically, the idea of quantization is not novel and can be traced back to ancient times, particularly in the realm of music and astronomy. In music, the Greeks utilized a system of tetrachords, segmenting the continuous range of pitches into discrete notes, thereby quantizing musical sounds. In astronomy and physics, the concept of quantization was present in the discretized models of planetary orbits, as seen in the Ptolemaic and Copernican systems. + +During the 1800s, quantization-based discretization was used to approximate the calculation of integrals, and further used to investigate the impact of rounding errors on the integration result. However, the term "quantization" was firmly embedded in scientific literature with the advent of quantum mechanics in the early 20th century, where it was used to describe the phenomenon that certain physical properties, such as energy, exist only in discrete, quantized states. This principle was pivotal in explaining phenomena at the atomic and subatomic levels. In the digital age, quantization found its application in signal processing, where continuous signals are converted into a discrete digital form, and in numerical algorithms, where computations on real-valued numbers are performed with finite-precision arithmetic. + +Extending upon this second application and relevant to this section, it is used in computer science to optimize neural networks by reducing the precision of the network weights. Thus, quantization, as a concept, has been subtly woven into the tapestry of scientific and technological development, evolving and adapting to the needs and discoveries of various epochs. + +### Initial Breakdown + +We begin our foray into quantization with a brief analysis of one important use for quantization. + +In signal processing, the continuous sine wave can be quantized into discrete values through a process known as sampling. This is a fundamental concept in digital signal processing and is crucial for converting analog signals (like the continuous sine wave) into a digital form that can be processed by computers. The sine wave is a prevalent example due to its periodic and smooth nature, making it a useful tool for explaining concepts like frequency, amplitude, phase, and, of course, quantization. + +![](RackMultipart20231019-1-ips613_html_694f0970b92de9d2.png) + +![Sine Wave](https://www.wolframcloud.com/obj/ce120dd5-2b5d-4010-ab57-412338205bad) + +In the quantized version shown below, the continuous sine wave is sampled at regular intervals (in this case, every \(\frac{\pi}{4}\) radians), and only these sampled values are represented in the digital version of the signal. The step-wise lines between the points show one way to represent the quantized signal in a piecewise-constant form. This is a simplified example of how analog-to-digital conversion works, where a continuous signal is mapped to a discrete set of values, enabling it to be represented and processed digitally. + +![](RackMultipart20231019-1-ips613_html_20e3a20739b4054d.png) + +![Quantized Sine Wave](https://www.wolframcloud.com/obj/dd043759-e941-4381-a2d9-1155ee44ab77) + +Returning to the context of Machine Learning (ML), quantization refers to the process of constraining the possible values that numerical parameters (such as weights and biases) can take to a discrete set, thereby reducing the precision of the parameters and consequently, the model's memory footprint. When properly implemented, quantization can reduce model size by up to 4x and improve inference latency and throughput by up to 2-3x. For example, an Image Classification model like ResNet-50 can be compressed from 96MB down to 24MB with 8-bit quantization.There is typically less than 1% loss in model accuracy from well tuned quantization. Accuracy can often be recovered by re-training the quantized model with quantization aware training techniques. Therefore, this technique has emerged to be very important in deploying ML models to resource-constrained environments, such as mobile devices, IoT devices, and edge computing platforms, where computational resources (memory and processing power) are limited. + +![](RackMultipart20231019-1-ips613_html_426b05d507c41ab8.png) + +[Quantization figure - Example figure showing reduced model size from quantization]() + +There are several dimensions to quantization such as uniformity, stochasticity (or determinism), symmetry, granularity (across layers/channels/groups or even within channels), range calibration considerations (static vs dynamic), and fine-tuning methods (QAT, PTQ, ZSQ). We examine these below. + +## Types + +Source: [https://arxiv.org/abs/2103.13630](https://arxiv.org/abs/2103.13630) + +#### Uniform Quantization + +Uniform quantization involves mapping continuous or high-precision values to a lower-precision representation using a uniform scale. This means that the interval between each possible quantized value is consistent. For example, if weights of a neural network layer are quantized to 8-bit integers (values between 0 and 255), a weight with a floating-point value of 0.56 might be mapped to an integer value of 143, assuming a linear mapping between the original and quantized scales. Due to its use of integer or fixed-point math pipelines, this form of quantization allows computation on the quantized domain without the need to dequantize beforehand. + +The process for implementing uniform quantization starts with choosing a range of real numbers to be quantized. The next step is to select a quantization function and map the real values to the integers representable by the bit-width of the quantized representation. For instance, a popular choice for a quantization function is: + +Q(r)=Int(r/S) - Z + +where Q is the quantization operator, r is a real valued input (in our case, an activation or weight), S is a real valued scaling factor, and Z is an integer zero point. The Int function maps a real value to an integer value through a rounding operation. Through this function, we have effectively mapped real values r to some integer values, resulting in quantized levels which are uniformly spaced. + +When the need arises for practitioners to retrieve the original higher precision values, real values r can be recovered from quantized values through an operation known as **dequantization**. In the example above, this would mean performing the following operation on our quantized value: + +r ̃ = S(Q(r) + Z) + +As discussed, some precision in the real value is lost by quantization. In this case, the recovered value r ̃ will not exactly match r due to the rounding operation. This is an important tradeoff to note; however, in many successful uses of quantization, the loss of precision can be negligible and the test accuracy remains high. Despite this, uniform quantization continues to be the current de-facto choice due to its simplicity and efficient mapping to hardware. + +#### Non-uniform Quantization + +Non-uniform quantization, on the other hand, does not maintain a consistent interval between quantized values. This approach might be used to allocate more possible discrete values in regions where the parameter values are more densely populated, thereby preserving more detail where it is most needed. For instance, in bell-shaped distributions of weights with long tails, a set of weights in a model predominantly lies within a certain range; thus, more quantization levels might be allocated to that range to preserve finer details, enabling us to better capture information. However, one major weakness of non-uniform quantization is that it requires dequantization before higher precision computations due to its non-uniformity, restricting its ability to accelerate computation compared to uniform quantization. + +Typically, a rule-based non-uniform quantization uses a logarithmic distribution of exponentially increasing steps and levels as opposed to linearly. Another popular branch lies in binary-code-based quantization where real number vectors are quantized into binary vectors with a scaling factor. Notably, there is no closed form solution for minimizing errors between the real value and non-uniformly quantized value, so most quantizations in this field rely on heuristic solutions. For instance, recent work formulates non-uniform quantization as an optimization problem where the quantization steps/levels in quantizer Q are adjusted to minimize the difference between the original tensor and quantized counterpart. + +\min\_Q ||Q(r)-r||^2 + +Furthermore, learnable quantizers can be jointly trained with model parameters, and the quantization steps/levels are generally trained with iterative optimization or gradient descent. Additionally, clustering has been used to alleviate information loss from quantization. While capable of capturing higher levels of detail, non-uniform quantization schemes can be difficult to deploy efficiently on general computation hardware, making it less-preferred to methods which use uniform quantization. + +![](RackMultipart20231019-1-ips613_html_ddd0b6ef818413c.png) + +_Comparison between uniform quantization (left) and non-uniform quantization (right) (Credit: __**A Survey of Quantization Methods for Efficient Neural Network Inference**__ )._ + +### Stochastic Quantization + +Unlike the two previous approaches which generate deterministic mappings, there is some work exploring the idea of stochastic quantization for quantization aware training and reduced precision training. This approach maps floating numbers up or down with a probability associated to the magnitude of the weight update. The hope generated by high level intuition is that such a probabilistic approach may allow a neural network to explore more, as compared to deterministic quantization. Supposedly, enabling a stochastic rounding may allow neural networks to escape local optimums, thereby updating its parameters. Below are two example stochastic mapping functions: + +![](RackMultipart20231019-1-ips613_html_b742134b73383c84.png) + +![](RackMultipart20231019-1-ips613_html_665f7261dbe2b4d9.png) + +### Zero Shot Quantization + +Zero-shot quantization refers to the process of converting a full-precision deep learning model directly into a low-precision, quantized model without the need for any retraining or fine-tuning on the quantized model. The primary advantage of this approach is its efficiency, as it eliminates the often time-consuming and resource-intensive process of retraining a model post-quantization. By leveraging techniques that anticipate and minimize quantization errors, zero-shot quantization aims to maintain the model's original accuracy even after reducing its numerical precision. It is particularly useful for Machine Learning as a Service (MLaaS) providers aiming to expedite the deployment of their customer's workloads without having to access their datasets. + +## Calibration + +Calibration is the process of selecting the most effective clipping range [\alpha, \beta] for weights and activations to be quantized to. For example, consider quantizing activations that originally have a floating-point range between -6 and 6 to 8-bit integers. If you just take the minimum and maximum possible 8-bit integer values (-128 to 127) as your quantization range, it might not be the most effective. Instead, calibration would involve passing a representative dataset then use this observed range for quantization. + +There are many calibration methods but a few commonly used include: + +Max: Use the maximum absolute value seen during calibration. However, this method is susceptible to outlier data. + +Entropy: Use KL divergence to minimize information loss between the original floating-point values and values that could be represented by the quantized format. This is the default method used by TensorRT. + +Percentile: Set the range to a percentile of the distribution of absolute values seen during calibration. For example, 99% calibration would clip 1% of the largest magnitude values. + +![](RackMultipart20231019-1-ips613_html_d7a733bfd9e13d50.png) + +Src: Integer quantization for deep learning inference + +Importantly, the quality of calibration can make a difference between a quantized model that retains most of its accuracy and one that degrades significantly. Hence, it's an essential step in the quantization process. When choosing a calibration range, there are two types: symmetric and asymmetric. + +#### Symmetric Quantization + +Symmetric quantization maps real values to a symmetrical clipping range centered around 0. This involves choosing a range [\alpha, \beta] where \alpha = -\beta. For example, one symmetrical range would be based on the min/max values of the real values such that: -\alpha = \beta = max(abs(r\_max), abs(r\_min)). + +Symmetric clipping ranges are the most widely adopted in practice as they have the advantage of easier implementation. In particular, the zeroing out of the zero point can lead to reduction in computational cost during inference ["Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation" (2023)]([https://arxiv.org/abs/2004.09602](https://arxiv.org/abs/2004.09602)) . + +#### Asymmetric Quantization + +Asymmetric quantization maps real values to an asymmetrical clipping range that isn't necessarily centered around 0. It involves choosing a range [\alpha, \beta] where \alpha \neq -\beta. For example, selecting a range based on the minimum and maximum real values, or where \alpha = r\_min and \beta = r\_max, creates an asymmetric range. Typically, asymmetric quantization produces tighter clipping ranges compared to symmetric quantization, which is important when target weights and activations are imbalanced, e.g., the activation after the ReLU always has non-negative values. Despite producing tighter clipping ranges, asymmetric quantization is less preferred to symmetric quantization as it doesn't always zero out the real value zero. + +![](RackMultipart20231019-1-ips613_html_aed8c24f78c26890.png) + +_Illustration of symmetric quantization (left) and asymmetric quantization (right). Symmetric quantization maps real values to [-127, 127], and asymmetric maps to [-128, 127]. (Credit: __**A Survey of Quantization Methods for Efficient Neural Network Inference**__ )._ + +### Granularity + +Upon deciding the type of clipping range, it is essential to tighten the range to allow a model to retain as much of its accuracy as possible. We'll be taking a look at convolutional neural networks as our way of exploring methods that fine tune the granularity of clipping ranges for quantization. The input activation of a layer in our CNN undergoes convolution with multiple convolutional filters. Every convolutional filter can possess a unique range of values. Consequently, one distinguishing feature of quantization approaches is the precision with which the clipping range [α,β] is determined for the weights. ![](RackMultipart20231019-1-ips613_html_5a58f8e6a268e15a.png) + +_Illustration of the main forms of quantization granularities. In layerwise quantization, the same clipping range is applied to all filters which belong to the same layer. Notice how this can result in lower quantization resolutions for channels with narrow distributions, e.g. Filter 1, Filter 2, and Filter C. A higher quantization resolution can be achieved using channelwise quantization which dedicates different clipping ranges to different channels. (Credit: __**A Survey of Quantization Methods for Efficient Neural Network Inference**__ )._ + +1. Layerwise Quantization: This approach determines the clipping range by considering all of the weights in the convolutional filters of a layer. Then, the same clipping range is used for all convolutional filters. It's the simplest to implement, and, as such, it often results in sub-optimal accuracy due the wide variety of differing ranges between filters. For example, a convolutional kernel with a narrower range of parameters loses its quantization resolution due to another kernel in the same layer having a wider range. . +2. Groupwise Quantization: This approach groups different channels inside a layer to calculate the clipping range. This method can be helpful when the distribution of parameters across a single convolution/activation varies a lot. In practice, this method was useful in Q-BERT [Q-BERT: Hessian based ultra low precision quantization of bert] for quantizing Transformer [​​Attention Is All You Need] models that consist of fully-connected attention layers. The downside with this approach comes with the extra cost of accounting for different scaling factors. +3. Channelwise Quantization: This popular method uses a fixed range for each convolutional filter that is independent of other channels. Because each channel is assigned a dedicated scaling factor, this method ensures a higher quantization resolution and often results in higher accuracy. +4. Sub-channelwise Quantization: Taking channelwise quantization to the extreme, this method determines the clipping range with respect to any groups of parameters in a convolution or fully-connected layer. It may result in considerable overhead since different scaling factors need to be taken into account when processing a single convolution or fully-connected layer. + +Of these, channelwise quantization is the current standard used for quantizing convolutional kernels, since it enables the adjustment of clipping ranges for each individual kernel with negligible overhead. + +### Static and Dynamic Quantization + +After determining the type and granularity of the clipping range, practitioners must decide when ranges are determined in their range calibration algorithms. There are two approaches to quantizing activations: static quantization and dynamic quantization. + +Static quantization is the most frequently used approach. In this, the clipping range is pre-calculated and static during inference. It does not add any computational overhead, but, consequently, results in lower accuracy as compared to dynamic quantization. A popular method of implementing this is to run a series of calibration inputs to compute the typical range of activations [Quantization and training of neural networks for efficient integer-arithmetic-only inference, Dyadic neural network quantization]. + +Dynamic quantization is an alternative approach which dynamically calculates the range for each activation map during runtime. The approach requires real-time computations which might have a very high overhead. By doing this, dynamic quantization often achieves the highest accuracy as the range is calculated specifically for each input. + +Between the two, calculating the range dynamically usually is very costly, so most practitioners will often use static quantization instead. + +### Techniques + +The two prevailing techniques for quantizing models are Post Training Quantization and Quantization Aware Training. + +**Post Training Quantization** - Post-training quantization (PTQ) is a quantization technique where the model is quantized after it has been trained.The model is trained in floating point and then weights and activations are quantized as a post-processing step. This is the simplest approach and does not require access to the training data. Unlike Quantization-Aware Training (QAT), PTQ sets weight and activation quantization parameters directly, making it low-overhead and suitable for limited or unlabeled data situations. However, not readjusting the weights after quantizing, especially in low-precision quantization can lead to very different behavior and thus lower accuracy. To tackle this, techniques like bias correction, equalizing weight ranges, and adaptive rounding methods have been developed. PTQ can also be applied in zero-shot scenarios, where no training or testing data are available. This method has been made even more efficient to benefit compute- and memory- intensive large language models. Recently, SmoothQuant, a training-free, accuracy-preserving, and general-purpose PTQ solution which enables 8-bit weight, 8-bit activation quantization for LLMs, has been developed, demonstrating up to 1.56x speedup and 2x memory reduction for LLMs with negligible loss in accuracy [SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models](2023)(https://arxiv.org/abs/2211.10438). + +![](RackMultipart20231019-1-ips613_html_d6b52fde9eb5bca9.png) ![](RackMultipart20231019-1-ips613_html_99f75772a10dac1d.png) + +_In PTQ, a pretrained model is calibrated using calibration data (e.g., a small subset of training data) to compute the clipping ranges and scaling factors. (Credit: __**A Survey of Quantization Methods for Efficient Neural Network Inference**__ )_ + +**Quantization Aware Training** - Quantization-aware training (QAT) is a fine-tuning of the PTQ model. The model is trained aware of quantization, allowing it to adjust for quantization effects. This produces better accuracy with quantized inference. Quantizing a trained neural network model with methods such as PTQ introduces perturbations that can deviate the model from its original convergence point. For instance, Krishnamoorthi showed that even with per-channel quantization, networks like MobileNet do not reach baseline accuracy with int8 Post Training Quantization (PTQ) and require Quantization Aware Training (QAT) [Quantizing deep convolutional networks for efficient inference](2018)([https://arxiv.org/abs/1806.08342](https://arxiv.org/abs/1806.08342)).To address this, QAT retrains the model with quantized parameters, employing forward and backward passes in floating point but quantizing parameters after each gradient update. Handling the non-differentiable quantization operator is crucial; a widely used method is the Straight Through Estimator (STE), approximating the rounding operation as an identity function. While other methods and variations exist, STE remains the most commonly used due to its practical effectiveness. + +![](RackMultipart20231019-1-ips613_html_f3f8764ea29d8a7.png) + +_In QAT, a pretrained model is quantized and then finetuned using training data to adjust parameters and recover accuracy degradation. Note: the calibration process is often conducted in parallel with the finetuning process for QAT. (Credit: __**A Survey of Quantization Methods for Efficient Neural Network Inference**__ )._ + +Src: Integer quantization for deep learning inference ![](RackMultipart20231019-1-ips613_html_9866943cb6042430.png) + +_Note that QAT is an extension of PTQ. It receives the model quantized by PTQ and retrains it to finetune quantized parameters._ Src: https://deci.ai/quantization-and-quantization-aware-training/ + +![](RackMultipart20231019-1-ips613_html_3806d05aa3973ba7.png) + +Src: integer quantization for deep learning Inference: principles and empirical evaluations + +| Feature/Technique | Post Training Quantization | Quantization Aware Training | Dynamic Quantization | + +|----------------------------|----------------------------|-----------------------------|----------------------| + +| \*\*Pros\*\* | | | | + +| Simplicity | ✓ | ✗ | ✗ | + +| Accuracy Preservation | ✗ | ✓ | ✓ | + +| Adaptability | ✗ | ✗ | ✓ | + +| Optimized Performance | ✗ | ✓ | Potentially | + +| \*\*Cons\*\* | | | | + +| Accuracy Degradation | ✓ | ✗ | Potentially | + +| Computational Overhead | ✗ | ✓ | ✓ | + +| Implementation Complexity | ✗ | ✓ | ✓ | + +| \*\*Trade-offs\*\* | | | | + +| Speed vs. Accuracy | ✓ | ✗ | ✗ | + +| Accuracy vs. Cost | ✗ | ✓ | ✗ | + +| Adaptability vs. Overhead | ✗ | ✗ | ✓ | + +- \*\*✓\*\* indicates that the technique generally exhibits this feature. + +- \*\*✗\*\* indicates that the technique generally does not exhibit this feature. + +- \*\*Potentially\*\* indicates that the technique may exhibit this feature under certain conditions. + +### Weights vs. Activations + +Weight Quantization: Involves converting the continuous or high-precision weights of a model to lower-precision, such as converting Float32 weights to quantized INT8 (integer) weights. This reduces the model size, thereby reducing the memory required to store the model and the computational resources needed to perform inference. For example, consider a weight matrix in a neural network layer with Float32 weights as [0.215, -1.432, 0.902, ...]. Through weight quantization, these might be mapped to INT8 values like [27, -183, 115, ...], significantly reducing the memory required to store them. + +[Figure X.2 - Diagram of quantizing weights and activations] ![](RackMultipart20231019-1-ips613_html_46acbcd3e6e5b64a.png) + +Activation Quantization: Involves quantizing the activation values (outputs of layers) during model inference. This can reduce the computational resources required during inference, but it introduces additional challenges in maintaining model accuracy due to the reduced precision of intermediate computations. For example, in a convolutional neural network (CNN), the activation maps (feature maps) produced by convolutional layers, originally in Float32, might be quantized to INT8 during inference to accelerate computation, especially on hardware optimized for integer arithmetic. Additionally, recent work has explored the use of Activation-aware Weight Quantization for LLM compression and acceleration, which involves protecting only 1% of the most important salient weights by observing the activations not weights [AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration](2023)(https://arxiv.org/pdf/2306.00978.pdf). + +### Trade-offs + +Quantization invariably introduces a trade-off between model size/performance and accuracy. While it significantly reduces the memory footprint and can accelerate inference, especially on hardware optimized for low-precision arithmetic, the reduced precision can degrade model accuracy. + +Model Size: A model with weights represented as Float32 being quantized to INT8 can theoretically reduce the model size by a factor of 4, enabling it to be deployed on devices with limited memory. ![](RackMultipart20231019-1-ips613_html_3715320bda415fee.png) + +Src: https://arxiv.org/abs/2211.10438 + +Inference Speed: Quantization can also accelerate inference, as lower-precision arithmetic is computationally less expensive. For example, certain hardware accelerators, like Google's Edge TPU, are optimized for INT8 arithmetic and can perform inference significantly faster with INT8 quantized models compared to their floating-point counterparts. + +![](RackMultipart20231019-1-ips613_html_c6f9be5e0aa43690.png) + +Src: Integer quantization for deep learning inference + +Accuracy: The reduction in numerical precision post-quantization can lead to a degradation in model accuracy, which might be acceptable in certain applications (e.g., image classification) but not in others (e.g., medical diagnosis). Therefore, post-quantization, the model typically requires re-calibration or fine-tuning to mitigate accuracy loss. Furthermore, recent work has explored the use of Activation-aware Weight Quantization which is based on the observation that protecting only 1% of salient weights can greatly reduce quantization error [AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration](2023)(https://arxiv.org/pdf/2306.00978.pdf). + +![](RackMultipart20231019-1-ips613_html_48ea192b85e55b16.png) + +Src: [https://arxiv.org/abs/1510.00149](https://arxiv.org/abs/1510.00149) + +[Figure]() + +### Quantization and Pruning + +Pruning and quantization work well together, and it's been found that pruning doesn't hinder quantization. In fact, pruning can help reduce quantization error. Intuitively, this is due to pruning reducing the number of weights to quantize, thereby reducing the accumulated error from quantization. For example, an unpruned AlexNet has 60 million weights to quantize whereas a pruned AlexNet only has 6.7 million weights to quantize. This significant drop in weights helps reduce the error between quantizing the unpruned AlexNet vs. the pruned AlexNet. Furthermore, recent work has found that quantization-aware pruning generates more computationally efficient models than either pruning or quantization alone; It typically performs similar to or better in terms of computational efficiency compared to other neural architecture search techniques like Bayesian optimization [Ps and Qs: Quantization-Aware Pruning for Efficient Low Latency Neural Network Inference][2021](https://arxiv.org/pdf/2102.11289.pdf). + +![](RackMultipart20231019-1-ips613_html_32990da3f97c6f47.png) + +Src: [https://arxiv.org/abs/1510.00149](https://arxiv.org/abs/1510.00149) + +![](RackMultipart20231019-1-ips613_html_241d31b34331da84.png) + +### Edge-aware Quantization + +Quantization not only reduces model size but also enables faster computations and draws less power, making it vital to edge development. Edge devices typically have tight resource constraints with compute, memory, and power, which are impossible to meet for many of the deep NN models of today. Furthermore, edge processors do not support floating point operations, making integer quantization particularly important for chips like GAP-8, a RISC-=V SoC for edge inference with a dedicated CNN accelerator, which only support integer arithmetic.. + +One hardware platform utilizing quantization is the ARM Cortex-M group of 32=bit RISC ARM processor cores. They leverage fixed-point quantization with power of two scaling factors so that quantization and dequantization can be efficiently done by bit shifting. Additionally, Google Edge TPUs, Google's emerging solution for running inference at the edge, is designed for small, low-powered devices and can only support 8-bit arithmetic. Recently, there has been significant strides in the computing power of edge processors, enabling the deployment and inference of costly NN models previously limited to servers. + +![](RackMultipart20231019-1-ips613_html_3866b346d94be2c6.png) + +In addition to being an indispensable technique for many edge processors, quantization has also brought noteworthy improvements to non-edge processors such as encouraging such processors to meet the Service Level Agreement (SLA) requirements such as 99th percentile latency. + +Thus, quantization combined with efficient low-precision logic and dedicated deep learning accelerators, has been one crucial driving force for the evolution of such edge processors. + +## + + +# + + +# **E**** fficient Hardware Implementation** + +Efficient hardware implementation transcends the selection of suitable components; it requires a holistic understanding of how software will interact with underlying architectures. The essence of achieving peak performance in TinyML applications lies not only in refining algorithms to hardware but also in ensuring that the hardware is strategically tailored to support these algorithms. This synergy between hardware and software is crucial. As we delve deeper into the intricacies of efficient hardware implementation, the significance of a co-design approach, where hardware and software are developed in tandem, becomes increasingly evident. This section provides an overview of the techniques of how hardware and the interactions between hardware and software can be optimized to improve models performance. + +## Hardware-Aware Neural Architecture Search + +Focusing only on the accuracy when performing Neural Architecture Search leads to models that are exponentially complex and require increasing memory and compute. This has lead to hardware constraints limiting the exploitation of the deep learning models at their full potential. Manually designing the architecture of the model is even harder when considering the hardware variety and limitations. This has lead to the creation of Hardware-aware Neural Architecture Search that incorporate the hardware contractions into their search and optimize the search space for a specific hardware and accuracy. HW-NAS can be catogrized based how it optimizes for hardware. We will briefly explore these categories and leave links to related papers for the interested reader. ![](RackMultipart20231019-1-ips613_html_b588c37972fae7ff.png) Taxonomy of HW-NAS. [Source](https://www.ijcai.org/proceedings/2021/592) + +### Single Target, Fixed Platfrom Configuration + +The goal here is to find the best architecture in terms of accuracy and hardware efficiency for one fixed target hardware. For a specific hardware, the Arduino Nicla Vision for example, this category of HW-NAS will look for the architecture that optimizes accuracy, latency, energy consumption, … + +Two approaches fall under this category + +#### Hardware-aware Search Strategy + +Here, the search is a multi-objective optimization problem, where both the accuracy and hardware cost guide the searching algorithm to find the most efficient architecture. + +Sources: [1](https://openaccess.thecvf.com/content_CVPR_2019/html/Tan_MnasNet_Platform-Aware_Neural_Architecture_Search_for_Mobile_CVPR_2019_paper.html)[2](https://arxiv.org/abs/1812.00332)[3](https://arxiv.org/abs/1812.03443) + +#### Hardware-aware Search Space + +Here, the search space is restricted to the architectures that perform well on the specific hardware. This can be achieved by either measuring the operators (Conv operator, Pool operator, …) performance, or define a set of rules that limit the search space. + +Sources: [1](https://openaccess.thecvf.com/content_CVPRW_2020/html/w40/Zhang_Fast_Hardware-Aware_Neural_Architecture_Search_CVPRW_2020_paper.html) + +### Single Target, Multiple Platform Configurations + +Some hardwares may have different configurations. For example, FPGAs have Configurable Logic Blocks (CLBs) that can be configured by the firmware. This method allows for the HW-NAS to explore different configurations. + +Sources: [1](https://arxiv.org/abs/1901.11211)[2](https://arxiv.org/abs/2002.04116) + +### Multiple Targets + +This category aims at optimizing a single model for multiple hardwares. This can be helpful for mobile devices development as it can optimize to different phones models. + +Sources: [1](https://arxiv.org/abs/2008.08178)[2](https://ieeexplore.ieee.org/document/9102721) + +### Examples of Hardware-Aware Neural Architecture Search + +#### TinyNAS + +TinyNAS adopts a two stage approach to finding an optimal architecture for model with the constraints of the specific microcontroller in mind. + +First, TinyNAS generate multiple search spaces by varying the input resolution of the model, and the number of channels of the layers of the model. Then, TinyNAS chooses a search space based on the FLOPs (Floating Point Operations Per Second) of each search space + +Then, TinyNAS performs a search operation on the chosen space to find the optimal architecture for the specific constraints of the microcontroller. ![](RackMultipart20231019-1-ips613_html_13c533e38dabf6bc.png) + +A diagram showing how search spaces with high probability of finding an architecture with large number of FLOPs provide models with higher accuracy. [Source](https://arxiv.org/abs/2007.10319) + +Sources: [1](https://arxiv.org/abs/2007.10319) + +### Topology-Aware NAS + +Focuses on creating and optimizing a search space that aligns with the hardware topology of the device. + +Sources: [1](https://arxiv.org/pdf/1911.09251.pdf) + +### Challenges of Hardware-Aware Neural Architecture Search + +While HW-NAS carries high potential for finding optimal architectures for TinyML, it comes with some challenges. Hardware Metrics like latency, energy consumption and hardware utilization are harder to evaluate than the metrics of accuracy or loss. They often require specilized tools for precise measurements. Moreover, adding all these metrics leads to a much bigger search space. This leads to HW-NAS being time-consuming and expensive. It has to be applied to every hardware for optimal results, moreover, meaning that if one needs to deploy the model on multiple devices, the search has to be conducted multiple times and will result in different models, unless optimizing for all of them which means less accuracy. Finally, hardware changes frequently, and HW-NAS may need to be conducted on each version. + +## Kernel Optimizations + +Kernel Optimizations are modifications made to the kernel to enhance the performance of machine learning models onf resource-constrained devices. We will separate kernel optimizations into two types. + +### General Kernel Optimizations + +These are kernel optimizations that all devices can benefit from. They provide technics to convert the code to more efficient instructions. + +#### Loop unrolling + +Instead of having a loop with loop control (incrementing the loop counter, checking the loop termination condition) the loop can be unrolled and the overhead of loop control can be omitted. This may also provide additional opportunities for parallelism that may not be possible with the loop structure. This can be particularly beneficial for tight loops, where the boy of the loop is a small number of instructions with a lot of iterations. + +#### Blocking + +Blocking is used to make memory access patterns more efficient. If we have three computations the first and the last need to access cache A and the second needs to access cache B, blocking blocks the first two computations together to reduce the number of memory reads needed. + +#### Tiling + +Similarly to blocking, tiling divides data and computation into chunks, but extends beyond cache improvements. Tiling creates independent partitions of computation that can be run in parallel, which can result in significant performance improvements.: + +### Optimized Kernel Libraries + +This comprises developing optimized kernels that take full advantage of a specific hardware. One example is the CMSIS-NN library, which is a collection of efficient neural network kernels developed to optimize the performance and minimize the memory footprint of models on Arm Cortex-M processors, which are common on IoT edge devices. The kernel leverage multiple hardware capabilities of Cortex-M processors like Single Instruction Multple Data (SIMD), Floating Point Units (FPUs) and M-Profile Vector Extensions (MVE). These optimization make common operations like matrix multiplications more efficient, boosting the performance of model operations on Cortex-M processors. [1](https://arxiv.org/abs/1801.06601#:~:text=This%20paper%20presents%20CMSIS,for%20intelligent%20IoT%20edge%20devices) + +## Compute-in-Memory (CiM) + +This is one example of Algorithm-Hardware Co-design. CiM is a computing paradigm that performs computation within memory. Therefore, CiM architectures allow for operations to be performed directly on the stored data, without the need to shuttle data back and forth between separate processing and memory units. This design paradigm is particularly beneficial in scenarios where data movement is a primary source of energy consumption and latency, such as in TinyML applications on edge devices. Through algorithm-hardware co-design, the algorithms can be optimized to leverage the unique characteristics of CiM architectures, and conversely, the CiM hardware can be customized or configured to better support the computational requirements and characteristics of the algorithms. This is achieved by using the analog properties of memory cells, such as addition and multiplication in DRAM. [1](https://arxiv.org/abs/2111.06503) + +![](RackMultipart20231019-1-ips613_html_6ca0f18532767d7e.png) A figure showing how Computing in Memory cna be used for always-on tasks to offload tasks of the power consuming processing unit. [Source](https://arxiv.org/abs/2111.06503) + +## Memory Access Optimization + +Different devices may have different memory hierarchies. Optimizing for the specific memory hierarchy in the specific hardware can lead to great performance improvements by reducing the costly operations of reading and writing to memory. Dataflow optimization can be achieved by optimizing for reusing data within a single layer and across multiple layers. This dataflow optimization can be tailored to the specific memory hierarchy of the hardware, which can lead to greater benefits than general optimizations for different hardwares. + +## Leveraging Sparsity + +Pruning is a fundamental approach to compress models to make them compatible with resource constrained devices. This results in sparse models where a lot of weights are 0's. Therefore, leveraging this sparsity can lead to significant improvements in performance. Tools were created to achieve exactly this. RAMAN, is a sparseTinyML accelerator designed for inference on edge devices. RAMAN overlap input and output activations on the same memory space, reducing storage requirements by up to 50%. [1](https://ar5iv.labs.arxiv.org/html/2306.06493) ![](RackMultipart20231019-1-ips613_html_c19207e17542dc1d.png) In this figure, the sparse columns of the filter matrix of a CNN are aggregated to create a dense matrix that, leading to smaller dimensions in the matrix and more efficient computations. [Source](https://arxiv.org/abs/1811.04770) + +## Optimization Frameworks + +Optimization Frameworks have been introduced to exploit the specific capabilities of the hardware to accelerate the software. One example of such a framework is hls4ml. This open-source software-hardware co-design workflow aids in interpreting and translating machine learning algorithms for implementation with both FPGA and ASIC technologies, enhancing their. Features such as network optimization, new Python APIs, quantization-aware pruning, and end-to-end FPGA workflows are embedded into the hls4ml framework, leveraging parallel processing units, memory hierarchies, and specialized instruction sets to optimize models for edge hardware. Moreover, hls4ml is capable of translating machine learning algorithms directly into FPGA firmware. + +![](RackMultipart20231019-1-ips613_html_c09f74536a81ff6a.png) + +A Diagram showing the workflow with the hls4ml framework: [https://arxiv.org/pdf/2103.05579.pdf](https://arxiv.org/pdf/2103.05579.pdf) + +One other framework for FPGAs that focuses on a holistic approach is CFU Playground [1](https://arxiv.org/abs/2201.01863) + +- 10: [https://www.sciencedirect.com/science/article/pii/S1319157821003335#:~:text=Machine%20learning%20tool%20sets%20depend,run%20deep%20neural%20network%20models](https://www.sciencedirect.com/science/article/pii/S1319157821003335#:~:text=Machine%20learning%20tool%20sets%20depend,run%20deep%20neural%20network%20models) + +## Hardware Built Around Software + +In a contrasting approach, hardware can be custom-designed around software requirements to optimize the performance for a specific application. This paradigm creates specialized hardware to better adapt to the specifics of the software, thus reducing computational overhead and improving operational efficiency. One example of this approach is a voice-recognition application by [resource number]. The paper proposes a structure wherein preprocessing operations, traditionally handled by software, are allocated to custom-designed hardware. This technique was achieved by introducing resistor–transistor logic to an inter-integrated circuit sound module for windowing and audio raw data acquisition in the voice-recognition application. Consequently, this offloading of preprocessing operations led to a reduction in computational load on the software, showcasing a practical application of building hardware around software to enhance the efficiency and performance. [1](https://www.mdpi.com/2076-3417/11/22/11073) + +![](RackMultipart20231019-1-ips613_html_e51b957df6b8fba1.png) + +A diagram showing how an FPGA was used to offload data preprocessing of the general purpose computation unit. [Source](https://www.mdpi.com/2076-3417/11/22/11073) + +## SplitNets + +SplitNets were introduced in the context of Head-Mounted systems. They distribute the Deep Neural Networks (DNNs) workload among camera sensors and an aggregator. This is particularly compelling the in context of TinyML. The SplitNet framework is a split-aware NAS to find the optimal neural network architecture to achieve good accuracy, split the model among the sensors and the aggregator, and minimize the communication between the sensors and the aggregator. Minimal communication is important in TinyML where memory is highly constrained, this way the sensors conduct some of the processing on their chips and then they send only the necessary information to the aggregator. When testing on ImageNet, SplitNets were able to reduce the latency by one order of magnitude on head-mounted devices. This can be helpful when the sensor has it's own chip. ![](RackMultipart20231019-1-ips613_html_895ba17eed87716a.png) + +A chart showing a comparison between the performance of SplitNets vs all on sensor and all on aggregator approaches. [Source](https://arxiv.org/pdf/2204.04705.pdf) + +## Hardware Specific Data Augmentation + +Each edge device may possess unique sensor characteristics, leading to specific noise patterns that can impact model performance. One example is audio data, where variations stemming from the choice of microphone are prevalent. Applications such as Keyword Spotting can experience substantial enhancements by incorporating data recorded from devices similar to those intended for deployment. Fine-tuning of existing models can be employed to adapt the data precisely to the sensor's distinctive characteristics. + +# Software and Framework Support + +While all of the aforementioned techniques like pruning (TODO LINK), quantization (TODO LINK), and efficient numerics are well-known, they would remain impractical and inaccessible without extensive software support. For example, directly quantizing weights and activations in a model would require manually modifying the model definition and inserting quantization operations throughout. Similarly, directly pruning model weights requires manipulating weight tensors. Such tedious approaches become infeasible at scale. + +Without the extensive software innovation across frameworks, optimization tools and hardware integration, most of these techniques would remain theoretical or only viable to experts. Without framework APIs and automation to simplify applying these optimizations, they would not see adoption. Software support makes them accessible to general practitioners and unlocks real-world benefits. In addition, issues such as hyperparameter tuning for pruning, managing the trade-off between model size and accuracy, and ensuring compatibility with target devices pose hurdles that developers must navigate. + +## Built-in Optimization APIs + +Major machine learning frameworks like TensorFlow, PyTorch, and MXNet provide libraries and APIs to allow common model optimization techniques to be applied without requiring custom implementations. For example, TensorFlow offers the TensorFlow Model Optimization Toolkit which contains modules like: + +- quantization (TODO HYPERLINK) - Applies quantization-aware training to convert floating point models to lower precision like int8 with minimal accuracy loss. Handles weight and activation quantization. +- sparsity - Provides pruning APIs to induce sparsity and remove unnecessary connections in models like neural networks. Can prune weights, layers, etc. +- clustering - Supports model compression by clustering weights into groups for higher compression rates. + +These APIs allow users to enable optimization techniques like quantization and pruning without directly modifying model code. Parameters like target sparsity rates, quantization bit-widths etc. can be configured. Similarly, PyTorch provides torch.quantization for converting models to lower precision representations. TorchTensor and TorchModule form the base classes for quantization support. It also offers torch.nn.utils.prune for built-in pruning of models. MXNet offers gluon.contrib layers that add quantization capabilities like fixed point rounding and stochastic rounding of weights/activations during training. This allows quantization to be readily included in gluon models. + +The core benefit of built-in optimizations is that users can apply them without re-implementing complex techniques. This makes optimized models accessible to a broad range of practitioners. It also ensures best practices are followed by building on research and experience implementing the methods. As new optimizations emerge, frameworks strive to provide native support and APIs where possible to further lower the barrier to efficient ML. The availability of these tools is key to widespread adoption. + +## Automated Optimization Tools + +Automated optimization tools provided by frameworks can analyze models and automatically apply optimizations like quantization, pruning, and operator fusion to make the process easier and accessible without excessive manual tuning. In effect, this builds on top of the previous section. For example, TensorFlow provides the TensorFlow Model Optimization Toolkit which contains modules like: + +- [QuantizationAwareTraining](https://www.tensorflow.org/model_optimization/guide/quantization/training) - Automatically quantizes weights and activations in a model to lower precision like UINT8 or INT8 with minimal accuracy loss. It inserts fake quantization nodes during training so that the model can learn to be quantization-friendly. +- [Pruning](https://www.tensorflow.org/model_optimization/guide/pruning/pruning_with_keras) - Automatically removes unnecessary connections in a model based on analysis of weight importance. Can prune entire filters in convolutional layers or attention heads in transformers. Handles iterative re-training to recover any accuracy loss. +- [GraphOptimizer](https://www.tensorflow.org/guide/graph_optimization) - Applies graph optimizations like operator fusion to consolidate operations and reduce execution latency, especially for inference. + +[Figure for GraphOptimizer](Before/after diagram showing GraphOptimizer fusing operators in a sample graph.) + +These automated modules only require the user to provide the original floating point model, and handle the end-to-end optimization pipeline including any re-training to regain accuracy. Other frameworks like PyTorch also offer increasing automation support, for example through torch.quantization.quantize\_dynamic. Automated optimization makes efficient ML accessible to practitioners without optimization expertise. + +## Hardware Optimization Libraries + +Hardware libraries like TensorRT and TensorFlow XLA allow models to be highly optimized for target hardware through techniques that we discussed earlier. + +Quantization: For example, TensorRT and TensorFlow Lite both support quantization of models during conversion to their format. This provides speedups on mobile SoCs with INT8/INT4 support. + +Kernel Optimization: For instance, TensorRT does auto-tuning to optimize CUDA kernels based on the GPU architecture for each layer in the model graph. This extracts maximum throughput. + +Operator Fusion: TensorFlow XLA does aggressive fusion to create optimized binary for TPUs. On mobile, frameworks like NCNN also support fused operators. + +Hardware-Specific Code: Libraries are used to generate optimized binary code specialized for the target hardware. For example, TensorRT (LINK PLEASE) uses Nvidia CUDA/cuDNN libraries which are hand-tuned for each GPU architecture. This hardware-specific coding is key for performance. On tinyML devices, this can mean assembly code optimized for a Cortex M4 CPU for example. Vendors provide CMSIS-NN and other libraries. + +Data Layout Optimizations - We can efficiently leverage memory hierarchy of hardware like cache and registers through techniques like tensor/weight rearrangement, tiling, and reuse. For example, TensorFlow XLA optimizes buffer layouts to maximize TPU utilization. This helps any memory constrained systems. + +Profiling-based Tuning - We can use profiling tools to identify bottlenecks. For example, adjust kernel fusion levels based on latency profiling. On mobile SoCs, vendors like Qualcomm provide profilers in SNPE to find optimization opportunities in CNNs. This data-driven approach is important for performance. + +By integrating framework models with these hardware libraries through conversion and execution pipelines, ML developers can achieve significant speedups and efficiency gains from low-level optimizations tailored to the target hardware. The tight integration between software and hardware is key to enabling performant deployment of ML applications, especially on mobile and tinyML devices. + +## Visualizing Optimizations + +Implementing model optimization techniques without visibility into the effects on the model can be challenging. Dedicated tooling or visualization tools can provide critical and useful insight into model changes and helps track the optimization process. Let's consider the optimizations we considered earlier, such as pruning for sparsity and quantization. + +### Sparsity (ADD SOME LINKS INTO HERE) + +For example, consider sparsity optimizations. Sparsity visualization tools can provide critical insights into pruned models by mapping out exactly which weights have been removed. For example, sparsity heat maps can use color gradients to indicate the percentage of weights pruned in each layer of a neural network. Layers with higher percentages pruned appear darker. This identifies which layers have been simplified the most by pruning. + +[Figure: maybe consider including an example from Wolfram] + +Trend plots can also track sparsity over successive pruning rounds - they may show initial rapid pruning followed by more gradual incremental increases. Tracking the current global sparsity along with statistics like average, minimum, and maximum sparsity per-layer in tables or plots provides an overview of the model composition. For a sample convolutional network, these tools could reveal that the first convolution layer is pruned 20% while the final classifier layer is pruned 70% given its redundancy. The global model sparsity may increase from 10% after initial pruning to 40% after five rounds. + +[Figure: Line graph with one line per layer, showing sparsity % over multiple pruning rounds or something to that effet] + +By making sparsity data visually accessible, practitioners can better understand exactly how their model is being optimized and which areas are being impacted. The visibility enables them to fine-tune and control the pruning process for a given architecture. + +Sparsity visualization turns pruning into a transparent technique instead of a black-box operation. + +### Quantization + +Converting models to lower numeric precisions through quantization introduces errors that can impact model accuracy if not properly tracked and addressed. Visualizing quantization error distributions provides valuable insights into the effects of reduced precision numerics applied to different parts of a model. For this, histograms of the quantization errors for weights and activations can be generated. These histograms can reveal the shape of the error distribution - whether they resemble a Gaussian distribution or contain significant outliers and spikes. Large outliers may indicate issues with particular layers handling the quantization. Comparing the histograms across layers highlights any problem areas standing out with abnormally high errors. + +[Figure: include the example of the histograms, this stuff exists in papers] + +Activation visualizations are also important to detect overflow issues. By color mapping the activations before and after quantization, any values pushed outside the intended ranges become visible. This reveals saturation and truncation issues that could skew the information flowing through the model. Detecting these errors allows recalibrating activations to prevent loss of information. + +[Figure: include a color mapping example] + +Other techniques, such as tracking the overall mean square quantization error at each step of the quantization-aware training process identifies fluctuations and divergences. Sudden spikes in the tracking plot may indicate points where quantization is disrupting the model training. Monitoring this metric builds intuition on model behavior under quantization. Together these techniques turn quantization into a transparent process. The empirical insights enable practitioners to properly assess quantization effects. They pinpoint areas of the model architecture or training process to recalibrate based on observed quantization issues. This helps achieve numerically stable and accurate quantized models. + +Providing this data enables practitioners to properly assess the impact of quantization and identify potential problem areas of the model to recalibrate or redesign to be more quantization friendly. This empirical analysis builds intuition on achieving optimal quantization. + +Visualization tools can provide insights that help practitioners better understand the effects of optimizations on their models. The visibility enables correcting issues early before accuracy or performance is impacted significantly. It also aids applying optimizations more effectively for specific models. These optimization analytics help build intuition when transitioning models to more efficient representations. + +## Model Conversion and Deployment + +Once models have been successfully optimized in frameworks like TensorFlow and PyTorch, specialized model conversion and deployment platforms are needed to bridge the gap to running them on target devices. + +TensorFlow Lite - TensorFlow's platform to convert models to a lightweight format optimized for mobile, embedded and edge devices. Supports optimizations like quantization, kernel fusion, and stripping away unused ops. Models can be executed using optimized TensorFlow Lite kernels on device hardware. Critical for mobile and tinyML deployment. + +ONNX Runtime - Performs model conversion and inference for models in the open ONNX model format. Provides optimized kernels, supports hardware accelerators like GPUs, and cross-platform deployment from cloud to edge. Allows framework-agnostic deployment. + +[add figure of ONNX being an interoperable framework] + +PyTorch Mobile - Enables PyTorch models to be run on iOS and Android by converting to mobile-optimized representations. Provides efficient mobile implementations of ops like convolution and special functions optimized for mobile hardware. + +These platforms integrate with hardware drivers, operating systems, and accelerator libraries on devices to execute models efficiently using hardware optimization. They also offload operations to dedicated ML accelerators where present. The availability of these proven, robust deployment platforms bridges the gap between optimizing models in frameworks and actual deployment to billions of devices. They allow users to focus on model development rather than building custom mobile runtimes. Continued innovation to support new hardware and optimizations in these platforms is key to widespread ML optimizations. + +By providing these optimized deployment pipelines, the entire workflow from training to device deployment can leverage model optimizations to deliver performant ML applications. This end-to-end software infrastructure has helped drive the adoption of on-device ML. + +# **Conclusion** + +In this chapter we've discussed model optimization across the software-hardware span. We dove deep into efficient model representation, where we covered the nuances of structured and unstructured pruning and other techniques for model compression such as knowledge distillation and matrix and tensor decomposition. We also dove briefly into edge-specific model design at the parameter and model architecture level, exploring topics like edge-specific models and hardware-aware NAS. + +We then explored efficient numerics representations, where we covered the basics of numerics, numeric encodings and storage, benefits of efficient numerics, and the nuances of numeric representation with memory usage, computational complexity, hardware compatibility, and tradeoff scenarios. We finished by honing in on an efficient numerics staple: quantization, where we examined its history, calibration, techniques, and interaction with pruning. + +… \ + +By understanding the full picture of the degrees of freedom within model optimization both away and close to the hardware and the tradeoffs to consider when implementing these methods, practitioners can develop a more thoughtful pipeline for compressing their workloads onto edge devices. \ No newline at end of file From 198750f87702f5d94fcc31e2d704d730d66cd831 Mon Sep 17 00:00:00 2001 From: Jeffrey Ma Date: Thu, 19 Oct 2023 19:52:11 -0400 Subject: [PATCH 03/25] adding images and efficient representation --- ...zation_depthwise_separable_convolution.png | Bin 0 -> 100311 bytes ...deloptimization_knowledge_distillation.png | Bin 0 -> 205478 bytes ...optimization_lottery_ticket_hypothesis.png | Bin 0 -> 130621 bytes ...mization_low_rank_matrix_factorization.png | Bin 0 -> 36751 bytes .../modeloptimization_pruning_comparison.png | Bin 0 -> 297970 bytes images/modeloptimization_structure.png | Bin 0 -> 192886 bytes ...modeloptimization_tensor_decomposition.png | Bin 0 -> 55389 bytes optimizations.qmd | 114 ++++++------------ 8 files changed, 36 insertions(+), 78 deletions(-) create mode 100644 images/modeloptimization_depthwise_separable_convolution.png create mode 100644 images/modeloptimization_knowledge_distillation.png create mode 100644 images/modeloptimization_lottery_ticket_hypothesis.png create mode 100644 images/modeloptimization_low_rank_matrix_factorization.png create mode 100644 images/modeloptimization_pruning_comparison.png create mode 100644 images/modeloptimization_structure.png create mode 100644 images/modeloptimization_tensor_decomposition.png diff --git a/images/modeloptimization_depthwise_separable_convolution.png b/images/modeloptimization_depthwise_separable_convolution.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd07666ef508aac66420144e6287da9252a9022 GIT binary patch literal 100311 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

}!L`wZkcmf*?lP40jRm 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 literal 0 HcmV?d00001 diff --git a/images/modeloptimization_knowledge_distillation.png b/images/modeloptimization_knowledge_distillation.png new file mode 100644 index 0000000000000000000000000000000000000000..a68bc36e3eb5acd4996b3929fd1fa9b2f6288189 GIT binary patch literal 205478 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