diff --git a/figs/detail_control_coupled_plant_bode.pdf b/figs/detail_control_coupled_plant_bode.pdf index 952cc4e..c1c54fe 100644 --- a/figs/detail_control_coupled_plant_bode.pdf +++ b/figs/detail_control_coupled_plant_bode.pdf @@ -3,7 +3,7 @@ 1 0 obj << /Producer (Apache FOP Version 2.4.0-SNAPSHOT: PDFDocumentGraphics2D) -/CreationDate (D:20250404210523+02'00') +/CreationDate (D:20250405104040+02'00') >> endobj 2 0 obj @@ -3519,396 +3519,347 @@ endobj 587 0 obj << /Length 588 0 R /Filter /FlateDecode >> stream -xˮ$K7?OQ/Л~Q@`$4 ^_3dVTfvUʰw.7oI?5׿rv.K;P_J?_{(׿Z?׿no;nt,_WߏWr-_9Yl L^ҬYK/ - n|9J}K/ - ^+fo|][C!/(x-U{*ҋ7k\l;CpE}/zNK/ -}ɭR{uWT>ҫW^e>JzW%N_]<'ҫW_eK]s/*}UӔA"+}_}\ƪ.*}Uj+-)vJ]zU -5WχY~5XR˳kҫSʹzҫ`-կ4R9VåW%Z._O&8$/*} JnE&|5Xs\|5XKr~zKJ~_ſ^ rr.!IH -nzSF-k5ө^f1LK:?]5^ -TKdb49~%K&ȭ(LJ]xI7rjs- pȽ]xI7tɭ_eBK,q:B֐|$ ){Y|$t-voW^_LK\㎯Tnz~%W -6bz~ 75VK_e:8Kj*9n^MUW~%Yr_~+/IΒ|oꬒNɷ+/IJr^CK/O/${ktwnItR%{E4CK)i.E_xIr3~%[||_ /k_xIt֘_% %YR=rW /j2iX; /G9[b/${Y~%ߌ̬TR-{TwMqi}CKrYͯho^{hW WdoHya%I;1/H-K\?vc{WU>!} .9 eW>J&D>~%.43Bt߰>#7  3Bl߱>$ 6g0|Fo ‡=i#B*|H߳>#'!D|Fo;g!?|H>#7 }K? u_O.}&_?ӱ?!vL'3"O|"Y?Ӯ?!^Lgb3#")$O|"S?ӫ?!E̫'3"xLO|"L?S?")̝'il鏈|$E?Ӥ?!7iO|"`?S?!y'3 "O|"Y?Ӯ?!]̷GZ3" 돈> ]ZOTr^ʽ`MdXA}3{κ{.ώmD|j}q%Iwo̬'FM{wD>P$C#.2;a!}taAAkLw43.(woq) $w|d?H|'][wD>DCG#A;}Yܵ{e]&-"7y0ؿ{'M[7>r!!KuOo1oߢ!rk ݿ!d]A~?o߭?I {9Ϧ< E} Q2?*y?,y ~I()_l/v? @ac?8yO~Q'$郟7?@d~ B?DŮ'H#b$wiKxdd~"S#H(QR -?o;E~ GH,A'R hr]>^yO$~ )?@ݟO3Q ? -b|-OO6( ny7{KG?rChkrMڢ _gj[DFDi'("_=޺me1Ϸ-azz*HYW(}[NN_?rr^0'ǯo/kA&w_}󫴏|_R>1~!Dŗ⧘27@W.lyqmFΣ3Fǣ M'I?EXk]7=nfc4M1灑*5"˜jSdz`m u#VV;r[ͿBg˝n%&xfZWTZ -?َg:هe|9,iuMx&8ӁV-Fil~iVjP;NfY4ctY libN;gşr}mk2z1(HvbĚlKT7bXYǓdMUۺs:D3Y5G䉕ˆJ:ֹcu7S`Z 32 g̽G b uCT-$iQ)~ZeӚ\gTOw -95<ؓ观vcwZ1dJ{59҅ijȔƔw L2+eEc3MC+ )514drr1`҄#:W{~*f^rZ4xH_>)+a&Ρt!Cj(y˲|S;daN/96GR;ẗҋmC2ˁi]v(%_aJG(mC23F+|&CJ_P;Z'}`2m+’TJ,䒥kG/>G@Z5$S yYuJQ3kt@HR;\hԈF&[xZ$I?FJ|nr*RMa90K`CcGu$ &S@/'|UoAz5@E"l$lH}JDJD>Io`}hVuhfHxɋ-W$3wv%0cS/-;YCY!Q;Z1&l -h%ڷ:|HfR.07d2[}`C3|ɜ~1ۿ :c -hZG5^%ez+Nݦ KܓhrFC1BC),>\9)7L/n!aXY|TH Y -6 -7( &/LΎ<&C.v`H8<ҤTI `_!1m&Qڻ4)L&T -=#&2 G6nJ`zݏW63PDFݔK%]4a 529}c!"8DB2b} ;6:$4d 6-}Ĥ0;R+)CA->mӜ=F$cS0 +E=&GHa) l⌻01? Kb}TʆELuMUsJ}1 irs鮑6 AA`CFi`#r2&4LM6i-^E -K,)ͧS[*aXfDjo{6B3B0B7n+skpQΔBԼUHELjߡ_Z=1Q2y7wêOyE=2]DoF_,Iкi-B-5bIf9ԒQZL"gQ _Ƀ=5e>5 -c`MeK &‚U;iqH$GYv.. AkiTh\⍬yD0n.$ )YwKf3> _1IUB CvdahҼclŜ>1͓cSؑL-zt,L!IXqݲ^bnA17J%P LCԖƪlTT`l -un~4N4),j-u5lJpB&_:1L[ױPط^je|ITa2[f m -x`7oFl?4"3Mdr{t)P+ (} LfU3' ƒZo VZm ҇}FBF_6lW25 ôG`8P &W4ENsz.u.O -`:1hvrK{jl.twAvIȪ090sYYXV42†m:jXNR']YBWs H/(HumJDΆiZ$.>ga!b74 *5 8ߠ.8 Jkp8bh18Τ?Ha?城d k1a2CxR2ۑqL|:Aֈ~5\ l7"z9N36-)٠Uu 8elʎ%5oKkw b5S:91fɅyb"G7Cg7tUxVV lb׈ jR|ұFG!SP=baN>dATS]2}&\ -R;f,#V~`xr|TfuP.9C71mM_zw6V/%Ξ'y}=6u}V<[ר\޺ CJsKG ߜ]:; En`3\Ǫ^v\0]UBw-jw&8~h0)Z9#&'} EdSlPC,1ځ͓2%uyR -,BGZͭ6~Ky")!I8$ (r,ȩ90xpJ t̪8}, < @7iTNG"R LS<%89(xQ[+Ram޾HQ4oaPuATIHR(!oL@unbIyn Jzȣ*CΘWVܒzoS"jڊ݉G`á¯2L烰!߳`8)e}%1*u9fX޲ÿ!J1a~.8&oL@r`%A[ӇLN:{?|cjaҏF%S)i w 1+G=,-׆ej=ŝUPC41LP1zn{N٨5,b0Bu?d%5+ɋ%1G kDҞ}}Al݃SVl幵MzתX Φ5/\O¿IBSӡlܺX#̍,7=au8Ȣ^/-0FЂ>4wlS5Rz' -+ ز-Ň akSQZz =ݟE?I(CVtc (aDk#7@z"?:*+ Y+9Ek@#p3XލW6|tFfZ`.`gMj(L_gM3D_fBC 6;GΔ34Q^;Qc>$:8 SNmcL0/[qzA&e/34 -;LJcZV|k^0ŝ#q~lr`A B1uhiJY烼^v! n˴9IꏳUcīSVnɝ;w -IɆwI:*>uI j,I}vv`IHU`QufG<`%*n(oԃֆ[<(Ʀ 4= - -VA(.Oޘ&>o - 7&́(Qc MsaKփE(ANב$z` ݊2ҬiRwӴB5EY+V50qug n-,`^vrzP# i啯j RA4^ -<ٚA*6eCz_Q\A:{)P?6j/TT%yB#չ52y1*:҃%h :fv7R$Sy$Fi>@ɶp -FXOTiz3M -7'EaV:R2>oOy#{Jީ@1  ^qV|MR-k&{]aؠ\W ,#MyQaab+d 8m0~|q!sQ7Xv־WUO5P6zm;o01B(OυH/ j3At):5b88*lBf])hk@ٷTTd9:{ˈH .?ij$o|(C6&QPE֖G`uȔUvf7HF~Zna6%~ 4j\Y4l0k>e! GX>/E*%)p\ P5&0,_/cgk[|>DDi6LstFZ ii뀼Հ5 FshICšB Z3x QvVqԭm_2U*}MqN+oNp)A $6Ȓ"WTJX-fB#z [St${|0dm`$WHۉ*K}"fIĒ04g:G!5~P'Cݜֲ N`5cL7m=~fmE5g@Y0EJX }o2d徜, Ojrϭfґ3ǯ`BaV!n?jf`҅[\~ -|Y-IOz{W1!;o7>^HQ-D%!y)<ݹt nDѨg/h}+*#%O.2!)l K; 36[$MC7FcAR%b -&68áLJ}ɊBwfb@(+sI=UzNeͳ1]6,,lVc3t:~H` 0EXdM堹X<tNãZJ@CA~]5v=/-Wqhb,{(J^6ډ6 Jʋ -^:@lݡ59PBd͋;[g뫛7atBw{Cs'k& ֲa۵SUX܆^; n Vw!*5w$Ks7ݭ-Q% 9HW={V۵5/3>+Գ;PW~Qgv_UڢzJ6מ2`'iPL9\{wSG p o%'uF jHW5i ;G -DZB/ER@s7imd#D}܊tT=O4>ꑲt +:ƖV=; CxylB>ϖd.džUzsTF:Y 0f~rI~3m5=6HHk>k;ov )"i9_lqۂg8''(tsc#2jQ[bF:r0j8}N&laZ`^GӷfSٔ2 *Ը{v'YdwF6*t -߼= P8K| YWqi}v[gtcm[59&4L-yR^wl+59QtE5(26$ƌM8Xa7oQ-Ik66(<=tgpp4Ԡ]@ɞ=|r^ dUl(7pƤT rJkGjW%q';JŞSP:! L9 ={5v|ۃ+GS0CHĖnmtg釴 A˰1Pm>aVШf }ͩ ~_ohfdkαF=1b]ezGg[=Z84FCX҆e%(Rv39Nc+E mu2@mtC-h"2V1L*&P.:Ӑmx5e:FX,(r6Ft?~f+a bplQH+`{Wր< 1iVz/ZJ^dè o@c_i0ߙAr(\.q;l#KGދ0^N),oZNwqX}!aF;0ݔL+*O & Ȉt S/f RaCdhyEðIO LcKثaջ"I+!`^xeqXTg;šOkfMo`<^bHxYc]^KnI_Ν!QwVqw4'zYk0O]d_x?" G?rUEol -ǚrVJ$-ˆI8U8^1կ.~׿p霍eYӛHvG//kw>*U&=[ֈx_4$%!~U}vBt KJK]^<t,!~U}ɓ4^\ޗlWs^\!NˠKҫw=hzQN[΀=I/IKJ~_cFȴCҫXƣx5֘v°_!~UkҳxƠ}^åW%&x5"pUk1&~åW%&܉pUIxu$.*}H8=KJ~_å%u".*}vz/94Vۿ+t97<<~_٘Y=ou}"c<^&rj.|]yI/z\ +/ 2rߐɷK/"B4ĮV}蜾8$!v5SF#r!v5T.))WlH+$O}Q"w| }t>!7l 3BÁ>#7̇CB:|HQ'KF@b|By Og'D>1֟D~&YB] O$gZGD>ԟ R@3_A ODg'D>19ӟD~&KB'%i?^'3/"τ菈5?!XL'F3"O|P??!wQߙa,o }?|'];D>qdCG3[.-[BhB% [BOboiGF];wD>S2% 2;Bwĺtзxo }?}p'wrLK{gM[7D>Qo#i $ȷ|bECG-.~"7oy^c!晁 ȷ8o|DEG.;#߽AG.[A#!}`WHp`ֿyp?COgf >nEӀI7.IO7(Q h$_4xt/< @~ IM7Q (_lt{e~ MO2?nGH7b[~I ?_HyL7'ϧnm?|\ 93n?_vP;a-}qj[Nv^HϜe!\ƺ᜔"sͩql}>q6Gl8؏ُ2agFjQ8U~2mk|aXwf^9SOٿyp/,ʻ;gjFI]sry@Ҕu*r✎9;Nj(_?tZFv,}h|q(g -YRY{jr`{=ݑcayTK/l~-K:|uj40}C;qđ1q Q$ZI)V*>|sNIoVMΓbAgjڭ~5Kq@J9`욟ْ[@t7=Jvԋ0O>8~DT@N1NuvO3rZ- Nthq"ac$͆'ҀIS7pJ}Lgcsj+^349X-M=& LnHӜisjC29O\Q=f[i/;v16 n>x`N3 Tg 庎$9 zٙOXva|9ΔZ(OlxoԼhYKyٙvB@ -;YJfI`;-WV10T;s4főMsKjv4֛8"WsOUhnP,n'KahuR7Hwz*=*f`zqcdzv38ޠ]q8q4hy 5Z\8jmqZ$r煉ܾY8f#rW`U<"Ǯ`H!;SSEx]fdv`SD$,-7LM$U٨҇~]5✴lqۿfG]SD.s`fps)S09O33Jil`s -ݛyZ APs'"jB9N74L>$˩i䁴Ώ )~qu2<:k r|\h *oH3iMˆA7 4kűBiDMd6'Ƒc͕ -C>;t0Gd4u/ȡqalGJi^f(7+" <ˎcJzNLb ?%.(m K5WAIc'G&fm!k-0tP+q|tv*LC8N}s9XŴ+:pMhg8(S95waNd^i4#0}-h?AWs[Sƭ i;OםE?3L<0_Iw ,מ` o) -S^c/9Ѕs+݁󳊱y,}?p3 yB1}4;jVs4wr笐l¬9Ӝ:||Fa89}5Lo.Ov[ %r`23c^ Ryþ'&EdaZc ?OLI75W,AbY J@'+/d;}XNS0;1OUr=0RNcB[@24C*dW0p &#gl&wN V*Hk~;XWR_/890 8?0"]9gB}lnadd{r>Q/MۄFD; ->jW3tOj-!S#0mH/(X&ߏtLJvqlV7kϕ :9-}<v,HWvh,NҍX:\@&瀺o?|]CǭgIU#0Y0ҀX&Ma~Nrfr$ͱރSNXuPX & 鮯0-5 I0RǨʿILN8rk LkصQ~r*--!_OK7~G2=3 i>iH iדd5Z18,)2ܔ3t_Ū0TN4C|qe _RS ,mϰ–4h͂} yr}4l/'=gq .LcJvNN땹IFZ*&'pI; -[7YD3Yp3;3D^Q<Ӗ@i2఍ʜ/0"o.s}K3Y:b=~ -p.t¤T}>jISI8bUM$yK!v=''ΌIUP.Yǯ4m]558bL%֒?pQ^,s#ɠAi9ּmhD GD(ѧBeUbn/}F]*HDrCtIl"#(%TV@iuX&vHC&a!n@&- }+$ D/ͦ|7"PaZ4E)֑$Jaݎȸdzg73]0ROrĠ1E =ѯLWEԕwr0 )ٙ-{hݲ7YX]H[))NPPmU W'SJ20i2ٽMwgYmR$)Z v$=j*k9arXZjAu(~lI1aUJLƔCׁ3C_Pnl=#gqKWqĤϪarvK0yRV4t=6?mba^iDW°6J`8֥'QnMx2O+#Q2" -(u0ރyq@ gbb/F^3TIOM =\).jAQfMSF< Gpq&0Ʉ61 jrs`dY [5MW" Hc9 IHJF*8 [xMJ쟅 -:N@ =j;eeê1 ( Vx$u'Њ|Ly;9]$v9Y\if`Ua5xR-2OPdSNZIz؈a|==wjKY!Vl We7[_)Jۑn4Lã`FOO+0eQޖ5 68t~ZUXaEs4(q&k1wSғ4Ur ^-)Q3 OaiUlX]Xz@XHr\ .LfU@RR -\u4+H"0&a8~l~Adf®cdK' Bf;wt{ l|EBI_Xqlzz'XrlªI &MRH[!5,J`zqV_^WcbBX=4)tC}1skjqZpUH{@dgg27xJXIh8/b,ziij\!sE UR6^XxT8t -L\ -ײ`zg8z@ A15KbߊpЪ@=rII{ F#|_nC P@3S +|K`+2n5O*~ϞdGLCA x=xNs29@dsu+]vp6 X&RN.aFOQJ%&].U deե͋ &_v ZN2P!1E2L_5]N2Km3>2 s@Íl sj`&_ D 2.:P`2+ʺ2LɗFF(d~7=13/| äF1>@`hN>a;J^=@H9+ǃ&hqN>aa;ŘdXG}{p9@t3pЁ6@ 2P9df2L#v NӼῶq,erꁝ Ê #0>2L_nU;AA)1!2lw78t.]Z=Fe]| BYA7>sv,겄۠pU_.>TL0U.><-5YAZ.><IV2l.>XuH0B+] v^o dn 09N|AՎE2Jo ÆWJAG NBKsdXAYjGlA6*(΃( ŀΠq+%>P;d}{1ʱdpSdʁ] (dzy6tt#R8 A!Ȗw."mGlaH v?.BiMb! -Rw>A@(r@Ф?-)$1"^,C2] A֛_K97ڍl^AhW"l7BX"]| '~6n| Lq6ݠqHBmmU쒳 z> q=ɼe9ۭBqOcEol L nR`ES.6tatp&E"aI2t;@`TQ|+EuW -i)9Ynt  }Yot 0O.:fe1:X IKzgD]t M\jQ(@8D2-{(GY# [`XGyot =^vсs:Loi=OǬ72դE" 䩊E"X$<2Y" >@$52d Xu}'Y]~#6!@R"q\Wqc 䚘jI"SPR#-ƍD0hlMYʟdNv5J9^Dp5ΜF~T=tW־Ӂ˱bFktj6_t -pj|g`t eIT(;@4$ *̎)gv -ϱ]n| ahldKǓ\d ZHPK 729́]\ j%+Yö Q5ݸ@0W#e!.z`Ԗ{8QK3Q| "Baj ߏ_}ܸ@do䌏X@.."qQb#]iؼ/3AS(: -a{޸@䦖Cq}j`ROw"C%oUX^T |]T oa#. -Tj5ayrQ_km -D%E$zN+3 -dES^uH'yѴzʹvH+ '6w?N:fYW`B&*!,Q摀 -[)Wl;HA`2R~v(܁ =I rj uƌhqU],E((jq9,Bm7r0z`9]2ٓ_QFG ] *Ҁy;9^GJ/7rtxv?v^Bej-ƍ LjNL!d4FɁa㹑5'00qR B$v\w]!,4o!8 <" $w4&v-aʸ^$!*Nxh=HBNcI~ZfA~.xW.ҡ#ĖwbAb~͓[`GL#dlfPʍ#d#45f=#D -`GVh9zn$'Ls^vq]sw1bk7 L -#TIް0却o! ȇNs(B֋MZ4-"_>W& -f8.QJw`G+P}{4Jap2H.z4;9BF[\#I_XTn E}q;pu7P%#V9Bպh׹B - L1ZL(DqC~FAي^ S.n$9tQد1T ofi:ɘB^%]Ԡ DF8M7j{A] $vwz1Lq&x5Nf;_3V= ZL6 B&`3B~U vQ(DD -ѰuьOnԠe[+h5Al-C:sSh^Aj[`5j01>AT(2%`3FWM] pPp5%]~=)o vjN' +xˎʲ S BJHhp$l9HF8묃=9hw)_gʫ=}IϿ|y]fkOs_)Ì_߽_|ƒE/7_+JKW*35D&M>s)uo\ 3αMћGLs}m||v_,]o Y%/uӣ7_V^gڻMj'ћr_r]?,kߵѻ$fRsw%W^ϵWޕ|_{|u>ޕ|_}2v|,]IM+*|Q֒+*i~ֱ )K>=zW} Vԥ^5uz'r_?粤z]5X]LKVѻkX ~ޕ|_ռ|j,I>>zW} .^m>>zW} VRTյs=ãw%a[@W@Mci8BKHY$e۾yK/5VY?s>jÃRc̓8>yK/uܗu4[dzV֪o|x_꬜>\FY$%:k!wPOޒ;5յ|y.-^c|.GoId﵈z=ヷNGU GヷNCʣќͱvޒ; UϞ-̬Ti\V5[r`{%U,gSxMCexK ))- ?%iM2kO ׆{}٪kX>ۢzB<]^3M2A'< X4 пg4<#63B 2<#3B/<#CBп+<#CB='xFgxDO4gxF䇇=?PzKqgg]\{%__OЮD'D^W +"/T+ v J~@X}Z?"Ly!S_O'D^WB"/+ B3Sʝ~@#}!M?!y&E_iO!- J~By}b?!ByZ_O'D^W#"ϴ+ >afҪ%=˖Ci-|{0MO2AE<3ut`>tXON_\-r Rtcf]wD'7879Gww'wX7D^XGwD'wxwDy'wwDnw4uCxG䙋yC䙄xG}xCvyGoyxGhyq߷;݅u  }gA qgQ/T[;d;,^X7ntx nx!b/¼?E!L? +ý3(NzbןB4;Vro\G)M.휣dz)*z"' ?| ]aߜ? }"eߜ} mp:G_=:8YɃoN_>>z,7/2H!|st,$7/BH#|s`"Dy(~s giO$pD:E'$p@J' +_OE>Vz,'OGhr)' _D>`z$cg$?w>0Y/AO5|=q|@I8!ǺyWW 䝛мkMy7K Es. }?a˭nz*lHLIW~-'-嫜U[q}b<#'{I7*Rox|#FߍHmj._ ЕSMn\6}|D/kIYJj+ב3Rke?hNlU@fII]zHX۷ ɔ;9f%}'{Hh÷nwݦ횠z!]VSoT๔PigKW7(@,IApj&J@iÑ6G },lR%8ey lY7k`=t|%~pqflX*0f`;7(i 5:kRLoaDi@&V\QmY)ZWt{P) LZWTQKYQ̆->5[a x}v,+>߭KU؆-U=* 'Ꚋo l-Kט gj#oGNK-X5[]>G]VGKmqySR}J hSӨ K#&fCz㓵Ta+8u]4*eH}hFslkbh1V҆]+CK(0|ZzҲ}ZlХ43=2)%WG|Ò L=; Е;gEŷ{M30- 4K"[%)+LyaRVdNsu]?hvT>k4͙uWZ-095iաUyí/Y4ӆ.TXE?O:=*朁FL%6{_'e*g2ʄs +VP%F}jr᫡q2%yu#/ɩf_>27EIB5SҜAJCQ.ݮXB]9O4]9$ 6fgIZL +)0uy2̀]Zz"kkyhZǥGI,@@SnhY0NXXրR'uRl~.ZQa4C1,n ڝfl>$<{`CjP0@c-; F$en F^} UϽ[~ͣ<[vLHX Lk Ej'LɘohzkU*Ҥ j:/D@3kRhŧHkU\i4lKN '1kZ3Ԯͩl4NԹ'^ +5:LE 4&?M5/a~谦.& ?ނ-Fba]^  rx@%]nk|rwiE:Q\ָar5ZJ>nB::xM_sĠRm12r@S`Ehg@>y_9XqaSybgeF+l L^bkV⍖%(mA aR Z۲ͪ0>w@ܛwX|U#5$oLnpw,t񆱐/ڰ!rB!a)=gWzXxMWg EZaj 'kxulrJ'ʹ)zEW ">{v>KyORDaWiI3E&3ʜ2Hel}7h+,uU9`3K?J4k[ F ƕ )hjNٛ,>ar\Yش,-ǩ mQ?WyD +\ hh-rw 0E-5wKYzH_"> +q]*?E5[FnrL:wIHWe5),Xl|տZI1\1VyքKgºE]혴l +kx22f)f%:L9f S/K3, +]+xr`Rr{VB%}NYKXy7wG˥ I@^gԼw+r>`h#M5 }#$t^!шclC'#D>Z w#+ 9Ia}T-0٪0=ka.+3QP,u"F)>s,H)%z,ohGL<Ǝ[eS#9UW4ԢJen.)A.a+<|p8 nIa +6ӫE_}%A,X|M&e+ 6kMEWuZ0-NӼAejKfvFP̲qL:nCyԌj q4,>Ә6#45)o./DH rBar`wR8̏ [p\,S\6xrkyrb]i6n1١Nӣ&O #& i5Ím0&-8 ]3|k]44 +ᐐ╩{ 3@l498<V;MjyޢÈ[ʐZ, `.VIlր:و9mr/=:zt-AU㝍HeD][Wdc0H-ˆslmN>nc8p>czgvEuo&]"#F^[sas>OGeO uEX5o5%FUȊnمr7-f]u*IkX2ח%"KUf#KxIu&Y`+%kl)oۓL]~B6AM3t臲e5YS2W4KC◱cdh"F;{H8$PpRIf0i//1 Lfi{ @.$ru Slآ Kg([%E dV4g"D719bXZ3y)D_hꏘEu(* ax%Äň?FH$ԃchDKȓ}+ =ط&Ƚ9rS( $zU +[UX|9 F7K&kz8-aڐ{3&>FVBNTǤJ%2yK3Լd: Chye R:gi6wڬYI aCZ(0L+7&j>{iQg성gh"ɼFtS&8Z)06/a+n,#;,{HrC3}Jn̂ iU +ڻY l=m}?o$ s8=;oM5cR`l$d)tw\ˤ-pF[\wϤ]4 +S}qD@JlpyzG4tCuqC!<{M-|fEקb}MM/ݵ09; 1n(*j_˲ݢYlKVä7F9FJBޔ7T"& >rd[vݰJNGz> m򔪠&XTn?xܚ ZqLL=SaQD4Gk8 8ê,$K`DO8V6<2}E"E!L\} %#i'R`[RVEVeׇǠӮekbݴgnv;u զhlz4|m ԗsk2amQex 6|}kH6dtYV1Sp'y] ѲyЍ@&?ݤi.tc#VWI' +nl/L: -Z^57V@/RT[ X@OL6c74кa=u^4@VLp@óP]`#ɰ~B#٭Ż+)0eonP͍TξHdaUF`+ւNFDʺxIm74Om x"KV'äJrriF`(_l˒,hnp88cϴ쬩vd67޺y+r6Cb OM䨞s1y2IE4tqb/I#6jPe:Q[J+b\ZeRz +|ހbk mS4N]2(- vM[B4RҾbF1}Z/0bD6Cj캘2zU>Yi9jϼD#&0 ,E\+'2GŒ`jZ#X4*dz'iNE E+/ >WݖY@ErjYuv2>xoRo RbM^+w#IO-b4]a t0s4FY+h9T>TY #)WFSh@B1|E8]Roc00.@]@U̶V7=+JFo~+T + Ű&yA+Ƹ<}綦xr聭l5e&<9?P_pԡTx4+޻%oqᚖa!3\Z!0Ml79z3dW7f&cͥ=L +k\~6)Pխ N8*[bVnB9 e pʥh=8B蛓,Vr?i.?U 8И̒Wrd1ԶS-^dqKrKVكMoY/0ivK0?n?̑æ\ j`T]~B a j- H*"L -;F\him5D,Si4?.07)oV{ .恑I0`/NIu@-$V VK`leo<m!9T9T4GEz\I[FH'1- -&f|(6 iłn_ZKC+'96I ICazPP}b5 c"mu,Lb䜺fb_ʼK<_4~@=Jr%R9HAK0/ }[},Sƪ}\$_.H n\= +c@{ sשKQ8g "vZ`6BwX1;Rxl*e! "šX9?Ȁ9o bq*7Fq zRU% !_i,n XPZGNy .5hR +̶\S>V4\6ooY5 yQ ZțUXg񀢛r  M -~CSP_ͮNJ,z!2c3L[iodQsr%^#jtpv}aZfe+eeZ0"Qfo?O>x,vvc;YHVaiL惮&a@f撢U[ܵd\1TkKL]gLKwYG|)TU{cVɘrCDY'١':)42u$NO%jHLO8AFkK + ]M !(VX,ci|?,[ٝg3hVi@~8.HZі2m0bk*&Lΐ#Ɨpb+οXIhH B S=Sƨ\P@w&[lr}ݣ*;e0Gɦ <^D# +h-<0˗p&L -Yc}tUk@6K6Xxf3bQ鵲Z֗FzM( ͎A^ȍØMˆBL=iuL4?pcr6Gٮߒ>wC>=^i~=X5 'a>55};G-sLNY;Xq3+r m_4?yFEF=9H',~1&2$-{a'2燤c[z2+OY+_wj|MaFQ5mXU^\cV譋 P>eO'''h޲_a0.0oG):GX$stSWXŠ #:0jʳIeߪo6&e9gճU!g_yGyBljqN{3~ ϝOR'*1BFN]+/ (H>\[D$8S,"~UQi27`2q&r5I[[湰UOT AZud%TƑ 6tNϸ4bꯞ^<,3lݗgvV1Lwz/p8浿Gh 8C@SEqEJ@@(so{3vS]b-%!*kVo8aUZ.vs5Dp5[ŊUR vv!p-j`h-y Ɉlb4=AQB#X͠(,cp8mɍބ; #`lnԲh|&v_G4B:ELn`ƨ#k;LCI}5Un(~1ۃ0|iXh]찰 ,,[6lݒ` 빠tÒOtv~~3XP؆1LQl [6 u93 +C!i]n'ed+j%;Q-U RkwXйLF>K\\!0֤ fbm9=NZH@WT̵&w3M% n,Ch%a4،t*ȱQdəsM)؀lajmK`[mdL PGkও2I|ocm p{8|}@|1o) +ςU7MdȮIp<D+ rk` cH(RWji{e4P2ŜC̼)r``׶KA +gєv\<(s҃083A=݌[MwLq +ϛtTBV#s.+F +Ed+D8zVkȃI)?z_:n>?A5(k/o]_づ^=-)9VDq>cI^ :g8@D@"v8N)>.>g,vF.n&i 90Ȥ#n/Ѭn +~O> c6Q09esܰƑ(H3Nޙ4o~k2XdAP)Вe,4Ѐcu&'2?˺E!WN@ͨJzA hYd; H6ήFi|-g4e+4 ]i|8‰4چe)n,aZMj -N}4 +.9QYTSE81w̷XD^$} +A@DfbRg٬8<7Fnz" g1azE:v΀ NƝ(Fg'×0&8h3|Dܲ{l'tҀ3'LR32gW0qok;_^bAÿDYJv4qQTN"a\L7󸾠>M®$d֐G2%<Urv<0Y)qNo$$prfbd+V;L= =ӌ(Z6La嘭^evם +% j-_lC7%s;ċ49580"Fe(4SF /sϴn`SFZ9oWqEIWp=EAMvfM9sp&>VdZ| o\6ަc+ +#``~h\4^-ITׂoF"ח l d d٦ +wS9 %sW*pK@,Q K_7Re; +<#ʋtUPv{'YZ7 *=Nȝvr\>G%65Paw=0(@0HFU.ŰGm( VPv /50 LS; )f#9a!pQ`k;|Fc*rhM u˩uFlq_a6Y`#]ـ'9 '+%jPq->m#Yh-T^IٰFhk}` 2zopklfi5N]ue-KPRծT4dx u%o#{0NxR~Mָʼn`5a)/;r@"ՉcWnH $-ZFgIMx?hPQ-?V[tXv61nZYYٲ7mW;_kt`Ɂq>,`#|[_G:R*:4v  )|cra]868p14k~?4*F]WNjHr2qYq[Bڅ۵ hˁq0NUgπaKaJeEiա~$!#lw6{q{cCqޛK(a{2@^` +u.f 8qnʤͮkٸݲak eȱ,vrҥ68VddYT u$a-1ԲQaC؛{$f \ AʌOaD~ + *; " p~ ä%𣔅(bX'0c`ej8^Cp%`_?׸iaԹ~.$fnSBn:?ʙYA"/~حB{pvs}ҍJs&9AAM|M}zDŽgVDUIyYU+uHu?_ڡA~5%_vGԑEr/gJޕ>zW/HSu||ܗ.%pw%!Yʫ|||_2WT(%ew%_H6(/ɇGJ%F )7嬷J.]5OsMѻkF yGJZd]ѻk,RWqzq_c)ӣw%X Yo+{z]5Vu=+ܽxNޕ|_uz>=zW}2:GJ:ѻA^Oޕ|_e\ћ}6HVѻ-+xCΦ>R r]8 )odDgvU^z%"!p?}_h{iz{)z%zsU$%(9icJR#i*~6>woޓ;eL#ޓ}ߥrR?ޓwߑXK>*$N}AFEޓK VG#||_0AIOޓK,JޓK5u{(:^uM[/)&=ٿclWIzd'wzq'IFq zޓ;}6B*SÓ$N<{'I.v2Oޓ;]f%}|i𴠏Oޓ;=G`s oI˿\~bnz]EO7|(,t7W\d>nr' +p@.BH7醯=nYo_>nz,t7/2H7|s,t7/BH7|s"ty#(o giO^pD '^ p@'O^p@-g?|"p<G _=nz$t#'O?| P9醯H7|= b|k v--+[īZ? Kz["`C[D:*oY*&XkT& hg%$ԗlUdVjXBiŪgyޭbŏ) +PXkjeYk5+j5'ud2uRV7Z5FW>SF_FSV(=Ҩ`K-rmsI66Ƙ0LZ0[^[wDY[ɄQ6UV_gRG+XḪ^^8DF6fQL3e4׋[teVniAUSV (w*OF1Sw3^)liaz$55JZ{=j.Tt2V}2V"0ٚRx]?Y3RKL/K=nZEV*7!PiZth߳˼mAN(ǽZ̨/HuV+zQtqke[`Z3e*3Sq,>dfL[EA8u LxMI顲@(%< )V|Yq,"zJ*.Xkܨ^ےD,?9U=X5;&RsHUpuPy l6+} jkJNT+g2SZy^%eˉ,Eot&Hj ?);amQUƌG{DImѭn&%Z).x\MJ][X*jg jI2wҮjZR-]M/(=S +xKVdem݉eXOdV>c;(&[) ч| LM/[JkG]:[!`Fc(&U/iEn[@@4rUy ?KjЬr٠&;D,"s))n5e= X#j*\/m<TA*% fooR7CSދ}!BjKWLy[GadH͚ L2[DE_hQ- PBy=#I/J}jtݫv -鿣0rr =)B2oJf;iIc29,LKLa$rE+׉`K@-k6JblHUT^)W%#vgZAesݰʄ.U  +jDm?+׮W^)1/;sOs~6$|vVw|/iV$er L6"J}dBU]\5"5hK HZOz²tBUCAVSfymݰ"3Rk[Է𦆤oX;"Y+e[4tP†#]6QbR]T&V +^+/<&',$W.kي)Iue6,*Z4* k֨&?RACmqGlFy0zT2oԵmﴦ+ou <utD=oiK`(/ŰG3 8}z3(?:j)Պ*>(]*&,S9Y:GљLG5LSGfKWdFҬN&&0֤v]dd5|u *cܤNCv滔q2L#!c;19IiuL햒ney|DK榰,s5ܙ_@:r:tlV\n4Li&uPqbu-ւBj7BN̂la[kzpLAI!B]Dk2r3Rj@ֲ #6Ot(䍝EY0E(w*e][0" sS]Dtg̼LocWJpe}K遭v@R1W l]DpC2ä5mmi(dztF67[aֺDB>67Y"Y_0̇ZGDoK#&=BH? +RX6 Y^7qXl`K!*Oܯ3񰔍4j΅@K}l=035UaƔdkNhlh%~ +Җlڐd鬊x`mo>efLmTƙ>*l)E?\W%=5ŒaRE[dWVy%ơ/ a"}̲k( 53KY$3*gj0"LꧩWcac")Ih_f[4²Sܷ jyXuC6 #67+[h DU{kDVq YGͽ ONr=˺;˕ld0ɚXYWoXIeW6Q_rڮQ^4iNF0 MZOUCO;@t=)J%/Rٿq!vơzɓ`  +$f)u8Lga"Q4 +lJg *%a KW&Ccrt2FӰDNsxecC&ivwpB;#!OZ[o$l,|u) ֤q"v?9P[H)x͵;8$FaJw*hO^o 0٧ +oZ@d$<ر%'>zH 횚l)雔@CHo9lZhRy4ADne'LF;p +6 FbMؠ}daHc>-5DIDfxQev +s\JJ0$׍ĺZ)ekxnt歺FJF^HS֖K[)@hYBeXzQ0 i#lʲ6v +!T]s+$YJ  , /bhcI#+nbũm@$ +3"r @$ޝugw*L5z@䫊Z=Ç +nJb{Bh}1,=V55Z@Vk lgY:B{1,'H<3,[/ KCۍ`=ݨ'lgyRSENjdMX)XN4gSTR5. +l5w CV5*,5`./%oj|&;Y-NĴ~"_/5g;b@;<8Kcs6R;\L|(ލ@~ۆsh' 2n߸?7oa;Ƕ6Fc]zk5"^]qޚvm}ȑK?eBL?BND_/m,/V?lH`ڋ,IꑏHӖP೿?q%jj1ƈmxY2v5`#7&Q?@҆R1DBoɱhB "A|{Q2-Ņ/ +K'(@ݼ8ɰtwI=LuϮmRgl|  ߪkԱҴҒAv/[͙ ?iHyH@8Jr\K Jd؁T-/ᑾx@h"uCeEbЙ =?Gta"̓@L;9O;|x"Zs@";|_z$}@ė<+`"bOz$Mrka/"Z#o`=244}y]"̱HbrtSljz4{u E"Sh{?& d?}@@79aI{&Vr{12 Ϳe@2 ;>FvAÁr/SEç߯ń^T ]۩@P;iwo}Mrz3^T+繾NSꑚwE2^}^\ z)QW&;-6_}5)S8MN{Q`yw{/*$ۮ_L 0EGr Flgi# d-G-)3n,aGFرRhBywHȎIVOLL ؓL ;Xڙ@@S#5\v*c߲ F1 +‚/Pd %W +8PwH!@`L~۩@v0mQEB k@vQA"K? +d"aL^?gZ`;`|lY9+) k/.X!_[ l99v.XR`#Q"iV9CΪ۷']~9jq׿e?1ޏ^M@uO_̉ WIo #E,Y4?#cMJqp+Ea6((3- VoA"ȋIC?suQοL6YNH3q3|~s{$OL}.;;b^Z'|1o4l} |b4 5ݜ+csbDۢ'S\ mhs=ӣE1窘Go^[uyzv_4sӣE[<=z[qyzy_K Au-ZEmj󳷅_}gw%~zL4_ m-K +Pu~|ZLU-K W;kp'׾>pDkbHD|sEJ} %O#^*w \>n=rJ\=ւ'_+8| 5M$',7\>^RHpDtEMS|s Yo8 }"UgO$+s"t.OX|sE)on>iWwϧ-N<+[ėgU3&7\3͙S +F:u6VEȜ̗f@{idd+1=쥑8G[UVl/LQ*1f/Fb *4YR(^]OK#[ђA05\xF[E?lBPV\i2_RSFb.PFS-mXjFN԰[>F3˔w{md0Ͱl%nF?^_4JF+K#[^VòWk#5 2B~L?T[W^)4J ll4F\g0J}FF\a{md0E^,S&go*iNu+FЯkVIS**Ց)E t5/E] /4 7Y#[9+(^-l/$ߚ?ǫ,VͱWidJ6ke[`/^@|Ry/Lh׿"[[^8z+WaI]fu&5Ȕ”vY<L Y+ i1LȔn^ Uud-5WadNG[wP+*L=Rާaȳ`l ^/Ȃ4,,Ы02})vP6f<|Fr|z(<4PY&D!4U*rU%Wed϶vJzzZ%z+#O;%/ v"mUܛ[e) ч| PY**#XmFƱ2}q'ӯȝZдnKcUֆ;DE5Ynع*kc9VEd]eJ P-ٝ"ke Y˨T*LEf; `5K5~zE.8)fǢș +iXY+PYκ戼 WE +i+^a4T|r(L/d*ٺb݊"S{6jtf=Ef#t.)Qw[]q߹"wN^{EfB1a{Ef|%L(2һVvuDث(rgIu.^5;TCIdjY[`ZՊث$\5'J"Sz^f*Lz=1USh[+kk(C҃jPW}ذ:7HLd~3Z'u&b*P隒T&s@d%/KT7p$n Q1Ө#aMkBA)I@>`reE\{g4vsd2eflMHٲ` +挾Z* 78.o.2Qr3fdf,pUޗ@TS/(%1->HFIazsXm.%ZR +M*,Mp6pj\b Td5gacgl(]FI+ ]JҺifƺo,*8>P>BvA)FTiMVB Tpf&.m{`$23A#,A"cŎ_WOt-aXhUYX8}a_ LF6V< KKxCtP"356%?X(.L<aBPTF: iaSX: O:+Xm0_[& 8@;MTG0˜(eK*FI`iޢdJ )y&X}1"8r~_M8~u\KwGCHM ӕml9;SG=)C];+`Y[v%Y#F3muwlI-ĕ3wȬ>œ!vuWßG$yC0C`4ꂡLh0%mDIznHi2A^~aaӲ݃ń>3y%T#XXPSig9y3JgT^Gx4Ӓt pArIvޜC^1Ե1Q$ iSqF3 P+<3# bz.tJB.#xQLO|8:W].8Xi( $(_g/_id%2ԖgQk\!jjTa,"Lby:sLJNr #t' +/\D-ZI4VsRFcGfA$^KY'}'lV`Tn#,1^'yPq*T̽$E;K&Y;񷐭u}|#&~'BҬm ͅT353)n] ⃱. *m8Bn8Xlܭ(AYb@}rTIfRU9n"ARl*(V2 ֊R +G0cX [͂ d_'q ç0$6=8D '!2S0wwqN,륛SD20hqҗah1%:A$уU +۷I`#O)}DIFSU2Š(k273;ovW̍{LUʂIc|H-1I*hrIY6%K}hG2={L\Z i,F l_ۄI "p&Kl&M:^g_'ItJ 3de:&+dIθ\x`L;4tqguE*1ybQd4I)2Ԡ4I &Iά 51G8@R #Jvp7 eXm/…\E Am+xpwsg"BhX;tZj;pZ]kQo\:MRMb~:-$e('84Ir"Pc3h:҈s"}F@&P}iŌZ:`QqS/0S<<$5A[:l 1c}xJYǸ"lOZd5h%(R‘ $;UH3/'rtNSn' ^ߤĝ-G #5E2j-DQ">,\j⽥W. _ + onZ Edw ~DrkcI>1Y`$xAeOb%S,H+¸XHbλ(+WUE2tHFng z L(R9 lB̕ +M 23]#i 5f,/`_Pd`cQ E~B"{;*nCACjVK5 ` $#5x\xϖlv/ )@GB;%/SʊJRV0(,؃`NFlؙmM/'f1'42#E=Fڸ_e[3&A6K8R6{ka'EUFCrڼT@p۠ఙy&{fFsOI Ft0h!dhD). G^T:<2I⒀2Jap9hIEҩ%+eydt  `ZO,< $|){w72^'a.L2X73I"%x&RB!Ƕn["-̋e P #WY\1έQ69ũbXXS]J[-Nu&(USIT0d=D$XrqXc5@8cdJ"^V0_$MJZB.m`Aɣ'j',hf5bi&i0xF~\!Dd*]v.dź#Vd.#XI?sC9I%rLQa`XbaUypT* M[\*a1YY#fVҋw~0EE UM(.f=A*1L%|*9-:ƕ5 ~v0Fzc 1]V=&P:K<0Q )9 h'q 2`U*9Aڪ/u pfܩ X%3U:@h9"|{AH\lnӝ j-j&Zv +u` Ԍ귤JNHH +X=j DҰ;A, eF8Eȶ#$)ZEvX%jLA"vVdASZpVx}gؓ㓶 XLt_ab$<1@=EUhXw V7U&JkigI j̑wVtf࿌Wd%MKdc\q(FuͰ@bI/Uɴ YţYes j_dbqR{lcJ%PnExJ d5*/` FLU]:q +X2,AR29 O{S84UҔ;< Oj& +zAcq2Ue`,6tTVMU +JIr+Xx"8@Ip]h8lil[E0ɭ"Ic$WYb8XFOby=hfrlفv$21t2öl9 wܥcOˎf?/T}y_6pANkd@%}z-T!6{k;RpnGelOBP&{yt[k' ղ>/y_om>/{_E2DZ!{yt_VEdj' djH>}x53k\ݗՒm#0djGM9&{}t_VK=2{}t[vjIN`G/y_[H WU*eriI^hϏK]=) +3 +~~pO:J'x Tv *!SSr<!yyrOץZ{-'U}, LoE ª>NOLsJC} LoERY¢>"8='3Ey9_5X>[U}<㱺{?[1e}{?a1~~pO:X ړ;pzrO:ȓ;pzrOZXcc|̱;;>'3zqzrOg+>X +X +b܁ӓ{?\~yrOg+x LoFC}=4ݼ̲Q# &V5T>ʘ]Pc_?vkx&S~kwI'd쒘ğk{I&ps^`Cx*q󱀓ĝ;"q{6Ĝvl w`Gxwx;4 r"x;"O ~3$q׿ٝecw9+94!rF`uX`Cl*qә/gV[vDDy$nx$7D\UM3C /ECӿJ!:xz,g\7p@E^8| rk.~4zY7W d>LxD" E>PxsqE)7W>Tx," +o | p.t%[8 { ' we>`xu"S o8|"榁 w \d|N +lF o8|$zY).">怳'o } z[EϧpDa,dk"?HϔDB%%e﮾oM3k +dO~?ۈ@/#gǂ:5⫠{3¦Ho~bVKzd^ދ̤g>0'<1!n69YBbPs.w-XlA^~Elhaq\dg! W11fX6ZJXNzJZ%秄F>.wRSRSjI?OI-wI/?)3|ӾJMbe_` ʾ{zlRr\K \=ZG9b랝4#.hƶ9E]t{=C:G+l]z&R*V01֚%ZOrcP6*1tgCR9ً-=;T79| inr'&kkv-.b,-[I"T@vfY|=z~x0qy`PݢJL1bM?v=r}q#oj#>N{V +Z"6b{ߝ lPzn9X֥zgK$3^IGnAn'!V'Oase6];bE 6g Ne] `crPcPn1 .i_=Ǝ lcC ; 7dr0Tx&Ve:Yg.gSƢX d urf;Nblݪv+z(iybZH,uƊpW`(mY- )*`W.rp؇ؖ]uփ`fz26 aZӲi_^s-@,9nPXDpĻX~|4`= 1DvdObj,glPeie/c6b+:kK`lT4À0shh&"hW)Z&H] #[DS[*s}bPs^6JٶT mS'mƫK0) ٫ҰRcLBx )s/`\e:5L4^'(N]-П,d0h <{7c~&J.uUjWS3]~ r\=*a @JWYq 6k#`GC,/cS@7Ot7֯@;K`w(hXm)|B J1 yIaaߩ6u!ԣzSuڵK:{V\. <>@W3QtlX٥0vVtEbl +U++B@}`lO,o0[ ςqC\fa6#]cFPhb*+Y L&]vjxY o7,r _Ma|sXτF'ӝ蘊ÞIİuz`I\ | 'Њ$YMnxBL0ߪ\O}(1J/4Q߄*\&VL\ftĺuC %wkѐK |Dkͦf1^ Ϫ HO% cn ``eafPY +!@k\ cWtn ذuqk^S,l6n2b7_"^FӅ6ЈR9* RJ*qG}C4Mao1 +'bEU$Elo1 v˛@BC[2>k1 +M *}Obdtb.rEe[/*D ֚,#BBg$:dvVFkv:,1R,ד3u,$8M;?Zރ0 %0BЍ +wc9kK6VaP`Ƭn!1lXt{! T/,D±aJVј;ƞ 4 x8; 6Vu2֠jV,߰2@͐7pr#s` 45Xo"[[pd0x_ػЃ="˟NufX79d)wMbeI(2gu UI3Xn4u$jAFq=.V&^CFC=`%pj-@$E`d3hq/0Fn^o̬B1t@1 R2a(-qrMC@ }._nwdC1~9s\a'zcw2t+v0fؠɃRǘpd~E_&1cC0)E]^!B5K| H)@ڇƌ v0/[*1D.=#vU0O O-1t̺\ ~ӟɷc%ȝ9"FB uj=taЗ+%)V>KaD6:5K\aVW\a +(c : SfW)|WR-Qa- 8)l$)x*Vf̉`{ Ci*}XxN7,d%QF(1 ѩ߬`y&Պzg+;߁!M:btEga0J[W/*b4ʸApSi=Q *kĨˁjs~%"'*q\XW ,>/b`sD3lhiX6SG16yH?yj8kx9Ɉavp$cNjl^GGG$:1Џf {M1oUՆ6v::2֣8c+uaZ(jNJI 6G0~6(Z30hb4ר싋ZC'} Im"%ǻTFzʬ"އ@4[ iV0LaԘaPŰ ,JU$pRaF  +L,.&5\(: >R?FC,еH! +fa/u. ~n+Uo\;Ջ7бטGtCY2ݩdXV4TF$'E򢶐~h.z?I.hĢ#CY7|UU,$P}]s8p$VrAV&%Su/t*J( qEm K=S̪S/;xYɭuI@Sي4K(ү4!um:1h>>#~U# uª͒W ]Zf.1s`>6iѥő #ܤ倕 %_ +tbp q,T44C8%H8W2ȉY4?L&Zyb2 %5 D zfqVR`/w0zl̜%*~g_fܤ"#-1VuhJ5S^HTL!C+](V+VЭׄbdHwb=D$Eb?OăPOļ'wu`/0ta/Hy7 ,G Dl +I,F*m96@dVo9W7X*L7͚zöH̺$RlzxW>度T-EeY:1Cκ +t7, Gf=*0jo4k#&"$IGqaX!I-!F8LZJ$VUD0_,^_zB!{˅MD*}k/5' +]\&ͥX JRKղ5ĸ%; 7x&̼ &`Ԋ2Uw5KxAz6#C0zMXzʜ mL: OIyĔ^bXmj}1s!\z4F +َ6H 3J$Mʒď́b% B%]F0g#ړV$P̳ +PȳB29U' aDRIL]ް2qbG5bQ̳AR\3 :Rc$h"P1p*nKNH.5,2rCHJ~rp^d$r䄀, 7凘PsW"1ss"]TN6,֔`ڊ`p:ԵY lu0̱(U&ѩ)Bmn.̸_Jh]&Fa2 1\ŋ)1DP@.D'< X5Ƴ9oZ LL`i)} +8FҺA(x,:fGud SJ_QĚ`P)䰨~8*M;) rf6F .AReq\$bwg$1fégH2b0,P% mF9e:lS aYAod2dXcwQQ2)WRX!%1HPg]'qB\/z:F?C,^Xx<21 1@\ knQedE8˻p"UX ¾@g- })ObPsEeR*=)zTi"y`Nax"ƉJ/o"d z0D'h9%_弭*0I_?0j13z;h̿0#mu9zr>9FIңב?t~;ᗤݥ\%!bwݡ UXsEU>V>Ҝڗҋ|t ot?Cu0BG|a=i>=uu!I }q_6qTӾla77d6,gU/z/6$e1ƊܔstV8?eixyS/o|;O<ѻ]3"ɮGD?un =o"OOqψRoDo6o(3$zF<";N3B!C<#3B?<#CBOxxF7LG~GqxH}zB7g~ÛxF7g~ÔxF7G~ǍxHI Еk$Uc * W W W W u W g Wf YJ K FD_xO_OҮ_O_(O_׏mWUpy+mN "| +BDB BBB_/G*~xsEכ2H?r"鮁M?^2p@'^}g\$p@ gO^Û;.2H?*'i?]T9H?,-g^Û{2H?p"M?~xsEgq?~xT,ÛN2I?^#p@ȟO?8,Û.BH?^p7we>~X'Yr{(u6WH0&s#l~rc'nX5ɊipߖSaJo*/,-勥HsoK[9b?۸ R`  I +.CeKԁf_yr#N40} \m +;,jXbǨOSp`znR̍23a0 lbU?R 0+*Tw4i/fh'[&&m Kl'ʹcGCo4FS6 b)$W c7h}a1 JeWQi]iUŎV0 +b^9[7e +˶"e˭{]Gll>lc_1Z4F%tea&1lo5uÉ@QZa5䉌fe +[_r4AƄq( b^1ߢa|Y;Vȳϗa-Rr% +-UzV7/lЮ:ףsA:b?luP`فK6 /!4-ցaev`PZ$ȦMbSenKb?is%aXڌVc0 Yq8Tvh@Gw1hPd{_AI=b؄Շ+#Th̆܈;aƨD|J:Yh+:^|`\4K֮*;4qIcVǨx0j0,ݘ/Jh hpH[&_J:˭Aڅqb{$۰O]_YfA +k2 Kz&5 hf5`es-sGUbIيr;w0)TMc4Gku"xoe%B-EFcL0Zulv70;V z @ U-l%?һ/6dw& ÖAz&G(V"٠ϧ ƯbkXp{?!uX[@1z{q`,+ +If+ XWgw1i#]]9>F{F0j ` G^7 o`VvIMA7 x>߈3iMUCPFϦl+Va^Dqrcod+ҜS0hmGAHa|JGR6-W6ϛ ai"/V1: +{@kU #L( +ӆ``;8 nǧl+1Z&!/x&к +~ , >apҒ:M$߇@0h/ C}c)3 +sٛ (& @^z+R6AIlB7 Q(K.e-$vɅgL``iWLMaXᢽ ڝX1$I&Ӊ񔬆iخNnvU!7Z9DS%Nn,#,l bB7 {adf;v:Zލdg3>7 J {X"c8 ,fMjvً_v!`/5g`bUl$Y0!XB5&L0PM\0Vn=Z10K/| n!)Ғ\r^uap9 +@0<f1XiŮMY_1~f&a>捺aw/voT@`keY\&^ŘF+6a\%M1YW +@:X+Ba3PɰGyX]0X5yxou#CَʪG0[ CTbxѠ)òb@x)gsEf8 1&bfղap\_3EE A4_bxo5nf3bY +>X6гn)t +sTW7(uM/ X_-~wVagY*] y`X2 ۨe,0up-L~!!.NO%iISp5VM Mcr5E9n`X Y[)E1i91bOr C7,if>.UKJS73{cq( ``Щ+,iQ mV%^#.^ 7k6cA\$Kf;C`qj~6c"l8bF5 n0>PeCcQ(h(^5b@.jiXj)Pc V KjW00'S*c,afŊ80x/t% K#y _s,ik{b,޲0 wð%0( BbCܤfIWo8K>ǫ˂fA¤3ſf_0Xqawc+,Ut&o}\3F[e,!%q^B `iĭa{L0z݂A5%+=sc,pxu퇼~ J~]*C /=/Aʌbi<]*E0\95ZtM*Kۂ0ima2["6N1%8 FM5zR)J! &i03Xp taz +eF !`l!v$qBХ]Хsu |s `XYڲ0~u|@||5/uiWoW2b(rE"H JKATP02!2*~-]8ƨP^lu +,nn y:̍0=\#oÑ`w{mA^gUPh`ЂL2?P19tWa,&"w&VU1%>&JR"jKj(ֱzp` %Q; &=ːb@ @2b¬F%"Byn( l .\ "F1oC%'zh BبЪ`/cMKW +w41ZQ?6$F^U?wvDٟx`THCSkyA!̌38*E0dPtC&+"(#'cI +#XY\Ran`{1l҂σƒ_Ђ +/ڄ״81x{ e$梟D!W~Ƹ>A GAH!$#-1TBbP`5TB T7#x 5W¤Kp)Ɔ  bz /+M^0v) ND]Yd 2 0VlpF[f\xA lJX2lsނ`eln 1Y 3rͰI Frw,B bz&#Ϭ /&ՁM^P"; +mh%l /\. ]  bWʌ.6yAEZQl +\5jt /(3Fƅ~!a6A̡#'6A̽'VtbXAկؤ %4lRr!X6YA,VD`Rs{{P2x jPRңu3lR2BE4 ''.nP'MnPb 1PnA  +P"tyA[Bb!řR&IJP} +s?BU"6 B +3>w$c}!%qe` $\Ԑot$iV`:#M13 Ei2șQ{ Ȍ:D !-aaEz:&C(.G !JFX !D\Լ"-0rY&EHC:)B1~PɰI, `ƹ<Pp&mP0 +Mr@5:}pZ`RY U¤`!̪|e9|Qy*E0= EHN}UVRa"ԅrWRaHuP_EʊAb?kYP$MPd$!jH~ 1ȺF]/nʫ+IHdHB:e Iހ(=HB̲DC6IB Y;BHzȰIf|HuЄ蘐U +xB%%C7*xBTp?@UQ 7Z3.-m{&OH ia'D Gi 7襲+P Mڡd.6iBVvM4!]'>,\Id`_t]H&M,f,ŰI6Gڙ4!14)6iB$Wԫ;hBHƜNP^hB p4!+3l҄"1ڪ> Ԥ EJu1M%RU E"NsB4Z0 Ф %0'նЄbB a&D&M>Z*BTXf/4!:0pKs\mo@!<]{'&D#J %^Sy c8"qbMn sM(9z] ĚЄX aO.8 ZiBI~qQ'D v+A"Y*VG %dwPݠ&D 0%D&?YBw0fQJ` AJAŘgPC$!Bp`$!bdD=I %RO$aW^t/!k2%a& sKoU!Mglw.觎c~$ vxc;BİdbAG=IJa*,}C~P߅]cS~!lM)tqyȰJU< )dRꑖ-;hAĖIX +"җ^@@BCa#Cw RPVJf rUUֱ'(.d "ϭr8AĚ2r% wGVwpޠ b(b~rґMR%9ȩvp5Eoo5{E1JUvp*ITj$WDx*a(H$Ijt be^`c>9AIn?8$vp%ɥ] b0c%X bT.٘FБP Y + Bp/A +J"fA +"ƐdX_rBMHɐH k4P%DDQݓRI4J1mdwc-r&;IS˯oo*7W=;Oʹ)_ J3H_`7N:B!E ,)??ӯӿa/^9r\z9za.*I6j HAxz`%K~;rGG;#UYJ㪋̜<{b,޿- z.oIsI=`g4jEt+oAa{Su|:dgM=Gw-smydݗe3wIZCT/sd^ݖݾ$W%8|}~_6Ճ;dGe}tSdˎfˣӾ)rKRޖ+޾CTݗOUݗxhF?=/}_A};82plӾ>~U*gk4xVKiHqk}:4ٗ~zv_Vc~zv_Γ|̃<0K@y͸ӳ?t~zv_ΓDzg<ɺ~zv[z@yJwgF|5>#k5 `玜)Ǔ5|h͝@_I2h[\RѬ "{ytOJ9SCG;S^RѬ϶şRN"|ytKx@G ZGOOTAyXd/ Sl}s%I '<'C]Fy 'rztOLUOP*=2qPN PQ'rztO,J1fU([뇺LB9='Cm&gOuܔqvN PEis˓{?k,=џj5O=5=j6OOZpr|{?ks%}xUaX. 06 BӾ? ȥY`z⬸.Bn^?!OMerN곘uWxsEw \>xwUɈ7\>xwU eW?xsEIw>xsU'&\jp@juW$']dpDzW?xwyU)k$Nj/,Eiw7#\>xs'E7!\|=O+݀p@W?xwUI}?xsEww>xsEɋ7\|ݍO$0ep@ +-W?xwEi3$m^:tvz0Ђ|2[K#QFKraMC j=20U|Iz$acgW#] ɥ7[hZ)R٩W;:K)M:;:cr}v$ |]m&rkW pJjݰ#91_JUtwGGrvhAv#vt$'v4 VɃsf];$j9JbGGrb9,=>;: x[kX: aِ\ƶf6x2lv$جiO穝ёKVhv$'oΕKӯ@fKr?_ZSάt\GKr`\)fKr!Z>fKTu4$Z,j`lI^D6Vl$/I$X]Zg -1]€fKmMd6.-ɁŽfKr6̆I>:b.yHِٰ_Za!y $m{sKC"MT{`#ya''JB!yqI/ [6lg:HhH4U%4V^G=;gR)H΄l5e͎lGW\\ZK;߲6@%6[]0>7[mQp +iH6AidfGr`1%R!Uw#yfcf 3W>{]^:g6PV,KG<6 gY:KlfCr@>4.X]"].ޠُOSl6$gCFPȳtw G #ѐ8 )[t(0&ѣ\ձ{vן'=qv)Kڗ4stаgr+{j_*Z{d0٩ g$[G0/6 5 p6+ +jV(Xv>ʓg2ٰ 2P.٢}AuiZSקή՛v[ymi[?KKme(TǤoy6}6.g쀵Űٹ>0s9w%& -1V\dWcDuu0pfrZ,:oڻEQd[l^16l]lst/xm}Xڗz%g5j2acܳy8œ~+,%`ÜS29"m <v&3O[JGHXldZ"RgO-aa!طX7RG/Hv {#b`?dWH++ h P=S\(֡yFDTͷflVKۦz5цa橰yRuaGVeoU% ]ei -@ԓ iЃV=1x v(V5O 5dG[G&fXgXbWJB'?W;/a`G'ez\LL.95WCЊUSd<4?Ԕ)bu?O2U̷Z=\`Tp0m%1Up`5[V1S8m:qmL ݽЊ@afJ& f$BO\ fpCZ =Qs>:ʚ_bKL)pBV)FOP4߁YbzXol2EP4ѓط>1kIĩ4 W֚艣(C9T}t8{-,Sf! 4TD1CQ-t kne<h}-_ѵ' 0o ke˦ytb C loŅ +[U1Gߧ l-N:GncE4zFz*02G1Z& ȡ2}n]u N٩Bk%&hd-0j270яEԋuE~gXCR=rremj><& 1ETS21642LR4(D_;7dEtiˆlS ^_kx0]-fTu~DAk6V}uZݷ'( +ƱD)'W1 lf %-=h9vkQ84BY=1yI$Y_ҲŻtFyY(}Ǻ \ Fo + $ V (,:3ß撩 tpeh, pS̺wFCqi30 øXXEk$<fBAK8Xm2 j OY &%Ye5Ij&&%$gqY!-IC.AAu~+01 'wauvu^>7l00 i&f5MfAo+ lHtAh4w9Ќ9b\Idq]rn@&3F|uA@+sCF }^nA#42=bӠN"3w2}\n6\a׵72!!˘`{Xiq׵z&>|sg :+1jM'ƲRY5J>_ dU (zϘ̠uRvSZrğؘĭL7*d,1nJKvkM7 ΛlR_յIm^JHoXJK`6-.B!ѓ̐ݐ$-, +kO 6^-{~2f,zn^i H=㼹/fԲ #$7Qx,AC,S:hO 7@&2˙(b|/@XɭJc0Z{p0s'HBm:F[ Z#D33(z61|h ig LУFɲ[SrCܷ8r+f TG0_Ll_2ǏC:2aXskh"Jȵ03p B+CO38[F(4'4@9f,&m n19!`w"XŊo%߁ab+CBGq2.CLR d_3t)f,$B&(V&F!9loԂm ,yؕXyA^Zg`kT̷8<@5caĽ,.c6BR 9 +BȤ"7kZX%CnH nP 6>rpKY8F ;oNo»(ib2[j̈Đx` >=AFh*Ȏټ03f[Rc6- ̻vJ5-*qpˋ +ac `2 7yYg g^d8N21F%cYAZt4p:ẹey(aX4ig²mVmųF)XZcʐ-8AK!`ͥ}+*Cyۚ$VWy nYRiѫ>viR{SyRf=:>[aL&-[ws̕ò.G5;A,0.qԐkTT@67#W`Iv_}[@(&L%F +*o xa +fi1b>$7lSE\ܩv*5qqI6.s*iy2[Ҿ@N@: `V%O-f68A@`x9}DU235̉6#" D[ƇZ6v҈TK J512R{u̢J46?}cF3gg]]H倽E +LLPNؚ0 3!1R)c( +d,R*p@[ Oa˧ʴ}ĕ]BUfSFQ[6-3M CC].AH` R&Ȭ [,3VȝfV\ c*q-m[f:(21G f!Xdz̯3jKBQ5AneYbByձϭ iqe*sp]8t6RN+6-ת@xdmVٍP\!LV&ס,S%cKO=YfNlM'ϵR:mVoZk-Պ -b]Y5\\,lcSjS_K,],7j.|2*SLnmkŘ_BkńbߍslKbLa+T+f0'ƾ}RAv` hq&:O<ՠjl@@ nV +a giŭ_@> qYUnb.qY(y1ï%ULj%+߱AT=^}D KX l<-͊[ rq˳y}2ogVd{ 0L@Z@A`VP9 D(CОk%Z%] %>%iVJ*ĚfhCm<Ӷ@؛a_S,hwlǐ!Ƴ*Prm,+ 1[0D+כXtzf-ϊXnq̳ҡ@.'VOO~0!S^$\1fYa==#`J<(X( 2 +-֟~3NJEIdyDp$+uĄ^4xc;{yN/Mgx얙 +v=1 t_O_s*_$<7w0r`*D\_ 2-_NP~X9Cf'bf@2tMSwǙg3 aH#˖ݠh?T= -SυeO9hu~5aGj%}ݴM8\6IMgOJ?؂T;\lN!hCw;^禝Rν>w]Fޜ{}|~D {}rӘLGsCfb{}v;.LKg>uDKp˵ȐmCp{}r-qS쟼|]z}R-Fs^w.Ք|/ }R6kt[sK5R*Y.՘{Җ.t h_3NK5n=3$2Gs_jچen?zT?){>u6ݑܑwð\x3V]oÓ?ac{tIRw ?[%U;+B(>q|r+>c?y|(^qz+F(]'QOn\bMF+0ߣ*P0ʛI?(ڋt]b9cl^En!?{9B>iQ@z+^g'F*)ȭER=/)!}Fq H8q鋌{H_JC"GȊ9 79җ/,!}`q̊[H_TC"I79{i7(Wm ~9! sC,;HwRo }H~}9!sC:<;H wӴ2o!=g?l@z>jAy~HҾ}\;HIwSo }~H}9!S:C<[H[]v엷'~cW] C,B7O _w)T_Ax tMIf}?$佪?++u!֒qn Ѕх,|/*?n8x)y9<. +!~Wg + ty>a_apA6#C +o^Zg,ۘXTdq'G߾A{ @Y4AJE k>=|W[qEٵ3|3caW7&!ҷ}fԁtQ]cSY=s|qO/ľ|{J퉮Bx*o~Z OX?LT~YYuVrZL-c/<܋*[5V϶:t E4JY6kc۲qSr6<چhM]Teo5&Bx}$+3txfSv, +]+2Av}-t+ Vv qU(^Ceb\n,1f +K]-y~Ǔ=ST ,wVUnr(+ D#{9U𵿡X)XyW_][ⷷ +c]ܡ} m%bE-1ӧڠ  {eӁŏ#0;WJQ@Bro%8X.90,% ka` +8PR::6BIX 'ł ՀĠ_@O+i u3 |h#rl<j5Yc!smxʵ!Vv7x !,<08~tpTe[aX`i[5ómkapD*Cz#< 0hiGA<ҵ /)jV m /^X͆))>lDaͻ5,;<\»T;CH K4^b`\ p+a* K`m`۠S- ୷>l ,ՠ 9C0U"Vj:?}=Ӈ$ 1L֬  +j 26Ahj(1L,HJ.JxR %#`.WbAfus!9{c*$rU9&804oiٱ( s<.¼uXGO!P_DpXL  d64Ҵ9 +ru˯ϨPѵ1bdE4Y`Cx y# +i  `!5  @.6to4w_ ;34DŒArN x51QbcE#4Ġ _3KFnec GF1Xj\ E!uBRʵB> &QÐPkRq +;|U y2Vw-vbW?ì h u rcR,CgG!kT,4co +V'P$a<7J4>X*_$ Gb3Y&0( 9J+eҕY# km:Y +Qcˡz-u#SX=GRcY&3Nę> a[@ +̴T0;FsA_VgA(l\HǓ[oʃׅaQ;y +a6S_+ֽ'HDŽ0 ~]`]Vts+ ٸa0bs`-@jf.aX1 +$4PX{,qӒ ueGa,+t;ZX_3wo!"m]XrkA$@ 9o{.JYE#% +nbP򵼜)Mlkɷ +2 +M|3? FX_Vs#1 A&37{ َ + ;L. 2AP0k14dp,QB7Q402t0LS̕4 `4&B,f7` Y@Z #Ck  0eZ$ʯ8m0G30Aۦ0`Q©UEbV +ZK A{`\ԀH鑫co8<3& OJeLyH·UveNZ tn,:>Y|/l(ؤFg砜~K=(@@8Dñm.VqaWj3NWԇY* Hh Oj0'uBX`t\&RU$sP^&0MiX#4B-B:6@hkRm錞6inxhF|ԶR+ $IGMϴHP x oZmVXj=E9-5ES#iɩ5@A&p¼ZIMG5S7g=;.xJ`p\ Ackt0dޕ֨FS;3 8c Jy&LR2Wϴ mi舽p7Q,-)2GՎ~Tw|TYLb: WW-(:lQ`}_`p՛QIX0[7<]*:1Ll-8)a  ;&/ٴ^a|5`wcd e8ƻR:"\0۠10Ȇ7k;o'왟BԔ0B&cgQ"˃ +0[7`4(уQhݗcCOPAAB[d  @cn>7. o(1Gц cyh Ӎ)`lG/KDt0#HǜM<kǀ5ut!;&p:a 锍 tFbgs 0(H:hMBЖk01θ0ZGiZcn'Hgp5U`áhX{=AK `;a8  !Ą  5 y4h,Q݈,Sj 0HFrc<8(Z-JP,b cѱBt:Uwap8)앺1/q-۩YAߌ2!h!*haԂl2[a[гr>,ä1^X!1j̪ĴL91ʷ9軿3d7[t#?1W.4VEp7ך,aT vWpAK R4V0wgxu?3C#PI5AAeien 2 =@vu?y >eo g \Um4=Qga-~ :fſ1 +Q3#&4, (,hai؂èW`oSL[3bhr0:;M 聁j-w3 A,ܠf{0LEbAn +@KskyX@\p2F(uWBkEƸyWbn-|'&+a$MbĽ~Iwl'`Y2)*|o/2hrϴf?g A3%S9zhLwaL_Ypb; A~(5[i7a2V$Ǥ$~-@U4yiaL+߯&Nؚ+R L{%7K`Mz,Q;0;͈)щ棚r)unf]<(/?I'3/``WE"r^v(쎡:z,@BK?O-H [h59M J />3RR "v1{ +Y|f 0j,-bjhc%=*RҕUcl{  jL\ ,_c f)z%&ɡCyB0O7IBʈ'6ݎy\"Z4]PHk:VfX(.ͅe84`3PI-% }nȢ1cRnpx1'8/vW,&W* *V(wf R2, +DPp,1̨:QREaM"1XLQc0t! Y )3XPA̱/h#8)5:(RA,bب62T0M0=H]V1Dan4!EeۂQxUON27uTFBc|-ձ6H}J Zڲ+1]aN/w,˶Ŕ-pwu@;ZۮU"(4?*'lGO$NO1!XAUnLuh*f}>|] ?[øhh[1Y+y)!'$ǺrݴUfd >0Oev1a2vY },83Kga,& U-+)zu|KN4mS{QFUl%13,Am 㹾s ]ȮQRR3 aNI,OXwm@P3J 3*ׂ>iӿ#5 v1`h,b228w-:=3mq> +ąe80mLæ`m;̨̒b jZ&eN7zp{8(Æ݂nɢd.>6Xi&1ݕwxX=հłւY9% >a>s®Uv +Ar 5GC% DUIta (ݙF(:n\Y.7!HVpitlt",fa'Kwjՠ'ǔ 9Apm<\!57c2,EB ESqb$aܢl_0W۵,+l䫦%aQQm3A6?Sh1;8D? FFܵfjq+27% S:rkZgitҾ=:/.Z]1{LZ|f{&gF3S ȓgsfn1dG̶Wt,O1`8Oܬ4l @60FE~˘&Ƣl;QTm mre*4&F+fdF`f4,&P) ƉUH-𹷤&.f EǸE-`0\Ls2sn EQ ]i.[F^ 䘁lݷ rJ>-r eX1fxrɘpݲ<f,J(*%|vm7XA8abY[au-Y{;,kG,.r=-ꁝ }̌2*- rLfis)Vˉ*hdYf_5dibkk.ʁbMVC @ ڷ+~h{]ٙ$;sOq^v/t:A@[%@SLi#?33-;t׉ nnef;WS}ZcE,;; V눍>%O% =29L悟s`tisuY ,50[=ӟ0+<pFA?eoC]_N! OF$/jM??Mz`o!+Xyz]`̍PY- FU\ܿa]IOhŠFDk˟+ZVww;Gdbğ :K./? y܊^~7r7  -fw |[ʒ}r_46KoEkւE/-z//Vh?Lۢ @Ѭ/- [QåEEomAtڵ֤IUk/C~_ɢ_A۔k0z{~Y LJІ㵷a4iLzSko $h󵷅cj󵷅d'Ey@{d.-&K0tmuY2e+|@#0c?otm72]~.tm7r<]~O ,ltm#jh3mo]f߳87H?TGGwn>Q.-tg @GӈMV7h(}ҽ &#[9i݄LeM%3q݄\y 3y݄M &˅&I&Ui4iM:=ʉߟ̎S}vnLh7v#Oߘn?g-ݜn?h5݄.M &SvnLr7jun?h}k争PgK&CvŎ;#?k}kP]f#HvVhG&Cv.ѷF56j7qvRwF5eDn?_Y}kP]f#(wy펣yc;e{KFeֻy7FOwoz7C؃1#\ +3#aycHJvPo?QO6M95#B1WWw_wAM=g1?,?p+?)!͡xF=񈈟y1؟%؟O؟8k6SB/B~$[<$'Cb"X<$'jCb"U<$':Sb R<$' -3b/g\Eݠ J@}%?!Byy_Oл'D^hW"/t+gMC^X/DG^/G^X/G^/G^X/Dgp 3J~F)+ q aΗz!hpeOO8iJh~=KBL2y hN峘}\pڢ Ku-#8SOpg]2z.8ɼQ?pG\(N-2;w^Bo z) 8 SpK$N]-[I{v+( $ ( $+( $ $#S(MkQڭrBnT$)#R px,kAr;"/;ewD^XGw7D^hwDn,7\ah7D^Y7D^hwD^XGww3{ݠxa%ޡrbl{*?O ,(>CG8f--!E!Z>tYUiSp@WkMpDỦWkGp@܈*WCߴ { ]'ߵ} MÁBߵJ} ]'ߵ} ]cBׄQ sT"7] RL+8| 4M(8 }"Yoz\>x6p?`MBt՜ʼn'q2oxߙ,Vw P,X\l( 6)W r4bm6(Fe9U) i - %bm2OA6У%&A`s>(,&o`۠XRhkQdG.bmʼU}T,,C ͓ͅaκ}MmbmK[Hm}Nz-}Z2jk%dNxg̉5RBdҔ㗬X&+[ikt_xmPMcc۠XYh2%A6G\6(=MmP,jߒA67-o yFsMeR׳,Xkambm<1Ʊ6&2KTI6O6&t(F6(RzZ`?5bmT@aXbU6'f_G}Nj)kł%&-s@۠X}bmWeT&łi룶I6JLo]\'j^ܲ55Y͉igv[fXG=96\mя_QXʖul=}N s1>űmP cԨO02>.lb&)Rmbmbե}PR`a`۠X;[ $/U[bkbf-6'UӦ5mN \mT16gpPK`ۘXj_))6pT1}J,Zbh`ۘXȐwyƘXi96l+u2{`ۜX&DpH6'%cdu`X&RjuTgjORG=6^1S5gYcb98(k`>r+Ҝrjv -rwG{,6ml+s:LIg`)R:MME$2U&T&6>%VvVɬn#i5RJ`)1BVHs72wv.~w8&l;em)s(8a16[o-962WoSbs0$CfCbmo sl`K`X K / M^ⅇr`XF&j23}H,CZÐX2Jl״;ꟛa+TaX7Ti`cb;bS(2,ZLm|nˌi)mLͦzAcbmuAY16 {arKۘXZRZmcbdړU,msbm^Ed[Nl7kJmb߬mP)A6\n5= eyOK -lkubmnYI6o]ZfDcۤXӞ㭗yk)T`ۤX -MJݎ5BmR,u%&łz=y.X0._mb-xK6)L;q,MO;mbs'lL{גeŒӋ3CA6(ֲ+7m .6(6-Rzss:bJmbHmP,\GM1֪łQѧ# %(-yZł%9~gŦeB}'ԃmb2s[]&~gebV #&_tqR>'V xrl &_+όZ9!Z=WuĂ͜>Ml̉Rgaq^>'l~>lZE6'L1;ݰe# uJ`ۜX0죾9:G9`X]|N,6'65|Bn -V)&7B5`]A:dO% MkЭs۠X0VGcA?Rt>X-"*0JIj}sĂCr¶9$ʁg?lmsbt{-yKk5[͉eַToYǷTk}(~IJeJMX沏e@ -dv[]<MgYIiU6Ot r%P뀙): -O cYuMc -pZSvYώɮ+ ? l"I/D4Yh芿4ұ@D@ŋdRW[25Ja3,ӗ+%]\f#l׊c:BF5C].a5LoV {Xhs9- >3?y[0t{-IAcjR$ǫ +/Hcoear.Lo,ɝ9EǀT6 +l鄟pBNؓ2xli-JIz L\vds ?|v#ңZ+TH,rTXMNυ̺ڔIusKz<]pz%䃰63e]8uiм63Cށ@:dQLZ+V]s0yX޹Ii6HK$/],_GX k~βR-,U13x^Q,˖\Ork h!x rԬ:ZV~=& #@e`d:訖3?AFZMEd|r-'LKPQ-50L>)W;b?\[ɔU[dP}`u ' ~Y1Ln#RljѨP-[q3ǻ|}'ޕ0N%Jw=v5l!!D摝 -(u"SDGŭ8A$8""M+gM<XVnxϒ)㯳\PcMK  wJ~N:›+iR7 Oe~6c7`C" fNN%ofogW(3þ̶l&׀n%d;gea -w,w'#[&F)4$;YwSPW!dI~3e&w NV8Y7&P-#+W-:TNIXaxAP0ڗ?d6OJ2@Uaa2Gq¥|pazh \-8Ϡ @B7z`g.у֠8 d6p#%귏 !-`h7`!;GPi6MF2-[Y7i/m4!Faؒs䯓l'djL6*إ@dnܸB--"ʢ h7Ĥ/\b'7ʐZ}3w7,n!C5d hC3) x Թ[0qP9d`ס7Q`dM}pMhQK=ru.C8C`+l!9}rJWq24C DjRBb)Dgn"[۰Dq`ױ֝Ed`1W[F#֬i@N^@L" ܨDa$V0Pzl,"9KdLk DԻAPF(2S(2PJ) pT%8msIEJqK*ā\F+2IY%hI)64X[C\, Pq TxN.2pFy@XK.[.z0JDdC.|L7脋@^NHE<@=12PIlF202yZ6@NIB+tZK'@AҝM{YɀՁ$-OHH  7^? <1H< NuP7c P!ձH[L* pg#٪cPBnt$[sF} D$v}_38H79/?&e~Lی)j`'$S$ZM% I2DCk&;Uo, lg%ʛf9$YV e)eBWۢqg ]?8ބm;}h9ALOsn3#%OSuHi|I<&z|Kc_bɜߚ .xr ӠZj.Ьy`;= LkOI`i#0 z;~ (j=HLJK KN'Y٬Gv\-ec6΂@%}\YJҜe _{N;M {l`NS#.Rvm`z̞6 O,9ZIm r.RȐ͖^we\|%@FпV;IVZ!< tw9q C=?ūIKЙ0!ul%V~N[L}܉KX:Zbĥ^nf&Rn^Bia]7HU~.gm<ܸK`[>p]zO- CתDnU'Փs%~ 0R ųēG6UdQ,tO~vN}; wÉh]OS!%k5y?Y[^»|N*.)tKch P?!CXwQ"pKjbc0u(ZXw.D+Ά"9/ubZP6}UF sV2O'Mcjo VT1s ɢ0tYcZ`pFAw饯 kPBX\5Q޳FRԣRi#l 2p)>ޣ(sl&(WJgH1DecI@~BRѤI_s󤠸L6(ڈRPc4 @`<@ \NqM%R̨^(E{6 w.ek>x)^ʚ)Ur*)s羖AOփp0w0Ĉ{SQÐ|;VNțY$;!V08SϡSD8BÝ9E{ENK^XY TqK˝8jzvmƞ2MLy.Dwji+6pVeTe - {Kdmm;+4=R:n:A5g覇 -rdҺi|+d)8<; -T:b. ?c(ހ$NBK ѳ YD//Zf7 8Op{!ZMn}`~"3 JWu)Zѐq;תБB+ 0VfKF[ļJLξk^2UvSLNŻj%́n5RBvi0RWN•gÝW3﫶e~ܙ?'+EZ35ĭ2M{_xɻ{cMv`\/wbOӎeg\5;6pg\y"% GժT< fLmMt \Qu0}ȋFt--2y`HKi1!O+ Zҩ8A6sb/l[Yf U- 6A.UAN ~EIȺZ~k?^uF<9ͳcJ{ GNj:= XXyFJ\/*Y.&V><1D=4@rY9Ppk& --bqNKW٪-{XMV7oNjsni mͻYT)eӬni+fՍmFw1}rZYuY 觃gE Xx5r*fu+| pYuRV,8xVG^BϊQq6)xVX!xVBn9aݍfEd}-ZxV5 j9r6Ƴ"ʥ w֝gE)r<+jëzfu2P9ϊiT*˫m<+J{dY"<+kD|>`CkuHGK`YYMRnFz pYYJptڄN -r 54p`bHhgA 4Ʋ$ʧ-;:un,+kZkVƲz81|agYeIMlu3*[HJfײ'|eel[13mYVWVadjɱ \fe}wSӔ ްW`ZOn4+@}m k5V"C.i#ZYkl#ZL9 ZY3c=Im2A&ZJDZu`YęRFvn3Dl;7D+k=MFC-u'ZYGQ>yY S@EAج(6xV8:=]'7vu _7}A'7V}Zc D+0?"CAffkmD+bN)rkD+@[_ ZYʶםhe8ʚlpcYqr6uORvhO-lF5GM?E6^''yomΡ?w B](>Zwܚ_.iaQiғ?։K~$%Äi37BmV|7Atw@Y䧟%tO 8pr=ز>@.T]dݰX8}gmYt,T>VJ[j?V?`w]/4 w.wƈlt kKe.T&d//{/G6we36N1QT4eWo^z_}&_ސ}z-C åez0$P-+KJ*FZ1J!x}Z'A!p}Z+j/4d//V+wu K˾J]5f9]z_}Vi a5//VL#6ejpjU!x}Z͐<>\z[vժ鴼Λpzm#8#HZL[Pmg䝓1RJkQ%V$-0Fv \0AɲC{?T:mϻ/'5`0w @G`Ri%}T6s\yKtDCI]"oc%K=ևÕD߷\4P{Z&GqVY}P+LsBA}/'3Uhx= j=ӕD0>NW*:ㅷVI=Gq4W8^xOgzrd'3Vl*q?.'CFh/'C ص9pu9pȣ9puXWcc[549pVGx2NWʝ<qVx=轓9p4W^yP+LsŦx=lt=Csأ,#f@LYojr% -_bob&zBzzT?+|\<'捯k_?+?*?P(w!MxFlg@xFg@xF5́xF䇇5?ZOcUПG k3BL<$> wY.z{Pz%zpzexzvztмB~w?"~!v?!J~at?!~r?!J~p?!~!o?!J~am?"~k? ʾyecza0c W  W  W /BB#B/TvBZ#BiDܦr^=r%UX_N.Iƛ)ػISnY|RQ>6e<]m-")\NptsIz"Gwn< ީ#\.pxnsIz"Gw<$ީ#rWpC̹ (N=B?HWpGxCxGx9"oF8@kCB ߴ8|$D" "(|8"7-B*6 7m.2,!'i 9.|Ӂ,k ]."?M' t} c" t| p+p׎gi%pHᵋY!tsYaoz\>xxpoe>|8RN}yl3^癡lCrKY0ߏ9\313Z>\ 4D~1MOy J W* -zG[^#{Qfob廯}|'򝜿z7oca._K|paٺiCus/F$1 -~}I{}[$._;cbNX̴~'?&A+ZR~'v}J)iϒSB7wR理VKNTIҿ_kR<"r-6׊Qf1w̿.aù1xV`MO>ϱ0*+6'@/$^݊,SϋִՇ@ -Z*hGZqљktyg%ɋWW7P6VjX扩e bk[|HlyfoX;4VazXa0X jCٰoaZ7`SW.Ӛt\>avZц%Ok`T$rkٵ$l!_^ ӫUma6m Lgᢟw egtՀ ٙj稯R>[Iݹ0ɵ/ԺYaKM/(ҵܻ,ZV cdeifhȜ|9CǐA-VfϞeYw_65TV&%;ٔpލDTje 薺I nݟsYа2-=Za)A:mav~"ICN \/.}Y?<&pq`:jlt`3ذAs70imԌAد=r qgcd;]8=0ޕ{nYg/z^gux'@_q홁FHZU -! -_j`L.⅟"gc$d םj WM`bt0Dzp1-ؙ(ݻř[Wby+~ B|k~&LLfe궔]*I}4, LA}0#V!ڠcV&2Rb0p@rwgv@=[c~eԘʹы٠,:}i2l[V>v~m`&u^ Ӌ*meĨm _ Udզ L[A˽̠m}lXXQns&3]CxкU+`uW֜Aڋ -3]N)Fբn-ɜZ6a[S^f ^jw! gޏչ0R L{v &lթS[1e 5Vs'>1SV4[a6\{ ړa3I6[a8 z$zQ +~C90=\iG ͂گ>ee`8Hh+MZMidB-s2X2[CV꣱a\ osT߃ 5 LQ:Zv` sa&B裝19׸s-i-nFk=0gIsi2`ڑf ˬ+)Gh(͂pO⪑L< C%٩'&wݭ[iIKoR\RT ͋]o0lxz) ;Z%,Â490Q$`oN)~,-u_t=YPV@zx=6#YmTO5)651ϼXFρ^Ҥ#;^[oIn6aH mnb`̤.~ HEK5%MEfߺ|y&h.UvazlS=i5k)wWº6ǺarQdS4oҝL:e%^ޕ4u5,6Ʈo`ZndBW RҿŜK[a:ds%V&ƎJ5?3ueO"#J57<К`ePto_? O_0'Yk[O i9&=UGGPEFOSq*&;DFC|U;/.^Xi L9hRˆLHH7lZp9PaDz3v:I6}]qMH:cú Zz`WLǏ)hV_ 1 ӎu/2&gCHY -`dMa}!]V)Y7OtqJT) r.WYp\827>"gZVvo=I׼0 3902kR C/v څ:{wː%u9|!qZ昶u[Ѿ!3+@^Z=0:Ydi2U-w(^Ɓ-K.ujI5GfVis`2h3;V8‰[).,u;J`}A%U_rat -bʶCr-1(|7L_u\LeD r1]B<`6y-H-=$'?eOv)sL-+4[SE,-cz?,ZRZzϦ_f3+L[[f=RB7%cZڇ3 -N +N/FVe9,1}8>dԑ죊0X3O|jW3RV6o~Y+]p P(qˌW7LYHg%uaƨ2aMNeu9#d 3&cٺZf-q/y &OF'*)asr(;[ -_-k L?Z{HkF9CD~RքL~S[`/q!/#WZ6+T/Y@Fo #HfG4X  5S¾/nJS43?@=ඐ@S4C)e2$6̶d,3!-xݕQz(nHێ$Ki`EF]/qRvr50RV,:0B2jQ&8fτiʃ4|?O0m]X~ĕf`Rlm`A?8! ],50W䞎וv :ddZHă֎**fY6/+dX'+2dLv~e m9?V~h.L1O+6ôp=Dm5smn`g݃ s!5Aar L%a߂^$ebGe)|0q:܅M0s`YZY,B,aH@d1tJA:'XBr$Ҿ;0_XZx|!hMl+bX] r%&c- -ߙL}`BaTjd]!Veˏ !:,'f9-_81EGY -\z2nϖ2y.km|8uξfos;Xp) Yj1|@Q(,ş<>'?@tck0`2n'-m"lNnq2j=0^:1mjda/la8&&taMpu+LHk഑.`K36n],0Ra,P/ kh[:. 6AH=- yͶrgEjV#*octZij'Ⱥ5de/sյe9)N1 ? B/淂AשPZ@%УPțe@Lنl{J; L^`w6Ss`d-:(Lԡ"҃nrsn-k`ZR#6!L[DGkxV['iMEa^E -lw/% W;6/L_1+Еako('b$W<5noA<od";g20Ƅ1ߩ}W\=y'WdNHIﶼO͝9BKb+C1|]t2E |*x*} m.^\`-^`g [_\ %_w捍&SW'8FNvZ,΅I ̣Z,#+1bxlYVdy˧Lȑl3 N.PFx-A3U  &'CG/ɤ\#⢭JN۷dZ1;!Gx?i[,oF,Eäuv,hC9wJ퐕Q 64N[<0WkyLS8 6%lh[Ry٘ UvX~ N9v~Bu.S!F4Zv+uY/GQ԰Lu Cg)zбeS`z޴Vbɟl,Y=Z)êfD9Lj^Ҋ~NVG \f, 8'quNőqf*I>?dՎliF0]2NE%i@K þLR' ΅& Tc0dJ-Il8VpZ zr7Q `) ~E,ʿREJ%2SNeaJF5+)C",~V:b"Q Aϰ\,)U1yBIL -$LW4ix" p%Hy9-I.93Ynڇ9=!9ŘzilP3:qb(@vKd# )+} טT 1bFm+g1-zt\7Nj] -g֒?jc&TЫ1<V\uQ`Xp!G.Hp6%-t-/5=m w^uiT,=0S%%݁[7%aW?ZjA7:cZSQfiNdc_d/sךr&G&#]tGSIxY -t''Ncp#7IbvL#DpB>䋼 t&0mVF #;\DrUDU&;H~ojJBKD 8EMP L紜ib䟳Sz<"$k@Y=B&IfljVd3NJOXF!L3px@+Yov{yP5nW7L'ٌXсNlVqT?%[5tlY(Y^RE-GL%\s jI X阡D;f01R9K`>2)2[J6:ԉh,1dɹ^NˀQL\\;6)~*,_ځL5\ɭ*n|9#99@#Vن )J0ց*9`ZƄg4t\?ٽ7!&or߻MLd%wE"Sh?#- ;f%ŭk9|7;|7Wzq -;LGDF[_esCtRW9;')bqNlzT?Q`[C&۫PHgs $, MN1ʘT:Ű11/l mxb: t-;T) QE_+7&[|խ Čiho|XZi☎Tb9{)Q^t%vvv͐s^1e -8kdȀ)ڕ f5G 830%yu}/"iD_aa5w6dU;1I3j+e -Ba^R:[ƏRQRRq%O烲8HnAmDlT`9yJd{  I#O}I7aM(20٨u~jV2kmĕ5Alz2CwLfu "Z<0[pU`o~ IJo:is4TTEA\3k*u7e lE|"%$F9L&'ֳ7C+6`WXꥂ5@$*pp~A: 6w O&2l P'o5MEi+]VPId%Χ hi7[1$;&sbC>=xebL6$@&F%ojg%oa -C*WGFrhX{@V=` me"R49㼂F@ر=$+AI> m 7wh l+̱Z|9݂IV翓T}(840R>lUge(O4{j^#@_ F[b9(JMV ٽHc~$G,'7RFFN"-+Ԓn< -:(jZy+=|*aT]Zu9?yD[ b,(H^,a-TsY!\<ϼ;%eL1'lmI&֫}ZhŜݷx6>գxLt:RmV0}&w qA謎ł9t -;|Z;OdkЧsW^u-0PЦ1&gJ֒}%0)_o*풊++BmVI&:-J=krL`vuc;FEew&< -E 3ؚG%i؀Ɇ-m^)[u1R(uiuhU܂&Vҋn -dA1G`)QYG!*&^om$S4iy,`QI}"<6]~Gn[Ƃ9MwpZt6}n=F@ժm$9zhOIȱd]]-0-M_Ova -/ bjmb:/Xgrc&tS="KOЖpf?+W* ݏ@F0ǐoW9?s#Vƿ?#lh`/O.Rb-SdeQԲ`qQq"M (Yn>4dr>?#Poo#k5[QܑnhN(⇜.5d}!F/X}r_ˎR!x}l+$n>^z_|_6YBඤ!x}lW`U8e{Kȶ*;"åeeWHmIt[Rip,p'MkFћ0d//kxtgMrZ-օ7w}ZLNU./{$K˾\&9]z_}-P)q$K˾Ŗ:]kgKtm^[:ӥek Ʉpzm2ἿOޗ}_u:xN|鼿Oޗ}_u" }zm8HZj/3^7gnޑoʡg~LSÕ$uK&F6чKɾLv%͘F{k&Lx9Õ$a>\zOzdS)6هKD/9i}M{[[=M'ナe,ar#+ILYf2;3Jz#+IL}"{?`V{?aGNޓ󢀣9^yOg ]_Ozt=ٟ0>8^yOgBl.'3mFmtWޓ6#|Wޒ>e:T{?fTIӥd(L=+IPv2}}=_ޓQ'=r459KLѐh9+ILY}p4=}ptNޓtWޓsa9K:8wؘIYD\nx. chϗ7o~;u7h&zqv="b>'fm-~.\wQ͖ -?Q*?({?&_?% gп&<<##B8<$l>=!3BM<#3B`J<##BF<$I # WOJw{qYKO_O_Oҵ_O_O_8O2_ڏP_XO Rg? ⅄~B}B~Bv~BoB~Bh½~Dh˥'^/lp_h֏=?qkPz%jpzehzfzdдB~g?"_UBF#B?T">`a@=G+{j跓{ lASa޳哐}XpJfu-8S-pK:$N;wD^"y)8ɼSpK$N)Q["/;[B7I{;.,;t;ڕyKyGyKyJPBoqo =sO2ooO2?2O~ݩ#Z py,KQz["wD^G*n 0OBPo =SO2opopO2Gqo︟W:A=^QB-gI &WQ- --I-gI ɅyA$XͲ ~;Vs?E=~9E׮g^E>~Eo\>~x~xm#p@EipDᛎ^[\d~gO쇓=:d%4EA3X'Trǚ5^LՓ!!̙8>MsL.2S2/M6Ȧjq1Nȇ`S5xsz`86Mه-.9TmZ5恔tu_tdåLTZ/.Tscd΁mc {[| q5Z: Zhԙ #}Rg5sJ<9x:#6_mn[Ǒ` *s^O6PjZ?Hjx,5Ssv5HNl~,uA.˳=MKz` óe!11-Ĺw_ Ie -\ay|c(Cɶ>˱i#lf13Z K>I6>WHhZه-J*ړ͢qlmPa7,f滗l@UsbpoF`Xeaa`a0myuMoIP81 2ᛙb^-=rK]wW3|v,ŮF"I5yaBP`PĘ9L;:yUt6;1;To 2Zغ `J+˓zM2d;==9ܫߺ\B1=yNeu$GHf;㩬z-|Ӭ#ف1SbLm޹hy%M<&4&Ct}3 ZԿubcFj<$-1֡b<1jqIH0+cZSoڙj~s[8 [tX2OMS3{1EN3XnRbd5gbb[OyK"Kke0ܞt81 ټ䤧WTTt{TeG&Ν) wG4UMI #?pgf_Օ`Xa~/wط&˱ 1e(]zߎLGR @ٚVwi`Jɴ\`ShbʶYqG ^j:Y$#Ze5ej257)IT_ eLLM=SNJ&5:֭"δ0|/(RftLlX)hέu+5s &MzN)V=^r`C&[#KMsIWJ%hTcSGe-OP,ղS -E9v7LzY}]ø* -!dm4) Bl= 3́M:$;d}dڪ DԴT =4VcutY0{ܣ޽7ϔW}P1sO}ئi U󬞭~;2rk`rq1a%>{=J+J4(lZA1]g&6JB3r@Di@*Ft:Ұ,?@+nQ2 -Nlc,Cb^SGI_CR/2ڼhc2f0x-o%})_xD1HͩFn 3$7YF8ґ;.uwe:03/{f%ڽS5 o|^&Ƃ"pYFsXe|3hE׻G2NiLV1=~6}D Lcwrky"Lߧ[y0L:-FS²FJ [Ep[~ZeY*o4cRvVvi_d7Ó?k!'C! Gm~ɆX&E"T# tJ^'޳KMě%^YG×V¶fip:adӀXARX%#KP+dSOFq BnCoɯHij@doe ˊeJ@226665wEȡPt[A#G\Xx0yt~,*DmF` u:)N}rc?c1Ȕ\d LOs~9-L - -xݩ64 6eyv ˻HÒ\02Ͻ5SL獐sS,">9 (ȍd68Ġa3T`]0azk%0 ]d:C j6K{p(LF F4"BeuLTOSx'Jy~e~Pm}r%,?>Wwbfcil7Zv0 -i6wȄ./~Jad{?CR{zwr$j|ӧUo[2]F͚g3" uFȆT8'%w]<$C.vb20R)d@>X 4,E͗sZȽBldQbKYnS?+R%kcl iaHb&QLa2dh'څinbGa08Y2cG#OC]%uѨŚgli-?NbhVLYx*qRW D>&9Ii24ӵϰakIEx`VgSb8 W^K\",dyM% -GF^oo۳O;F4"4b]cTG0cS/ӺozBcj5׍c|n=3adrC36)]ŀĨCFNN)L7H鷃k77 -Lэgj5dݹJ7Gk9 ̇{F -vƺAŠ\ݽ1Ym}makR;Af`r< }1WNudGj* K]eǂϤ W@?+RcKMXX`Kv CH.gOFvR4y#%[Nr"bt>"%?%enga6i&{X/=7Oς|LPͮf](B䧬TOW֧RvI8I=?b suݳ`BS+2Zw$F0o+l Ф1 dA%I_^k|zl&p+B3 t0?O>Ȱ(BMHjtckp;zW/cje!vm<70iENΨkoAJ$$ jv|R -vI\;(BjS1rdIG˂ !3|O,U AsՠV ǒpvXo K Ffi$4* V v -I څ 4HLlޱ 4?)}A(xf ْ%OAmG!2S!qqgt"wmua'Ai/k $Y&f4"i*`ÚMKۅ!4p'܆VHAyڙw/+3l0,)?;BI}yfZa5=/3P#",=R9: Btr0ARTi~xnv?Io`'AK?#UI,> E[7a N<5/!R՗DNtr"`mR|B򃠭;v1 Gc_ARw bO+"!7l F7>ﺜn;A4/n,7!{v-ؖXk\BU7; Bѱ[hE~ !JYzl v,?# -I꤈n `Bhֱ 7?I"Ǵ~/!a~-IδW`'C U[d&;Bvچ -QV/Nvq"I8e̅!ۗۅ"ԍ*!F]A֗N:IBv%D+*n,$ѯbF[]SyQNl H#%d>o>0`7n* ѩM`[{O-oeX]2meAjgKS8va !LpDe: -7@'KȎ?|APȪ#]+hȚMŸ)b,t]XBlDa͒O/m@.,!x֚][ﶔ+I_p" K(II!4 -;V4* 64#{ Yx/`մaYfTmv҄*Y ;iBl5#'H4!:Y0 --& UԜv҄,j ƅ&T~Q8 UzA`MW7/iev*F;OhE  5 A*<I?iBN4!(){L;a'Mތ-:., qACx ;YBtg;YB Ƙd v#vv0 -,!99 K(re;YBTfW6,'У%dLvNXOkv1c\2.$! #o{ٷ"Z^vR46{J@'C*orb| CԎ`'CK4kۅ!$Łj|b"ސY*<(Bp$'qB؅"Zcx2z>V,k=aX4XLqjz|a~+'CȖȀ. !X9+CHucдUUuP dHU7' -7&V9Ar4`qnH4 \Yv!ua' 3̮4#D@S? ɡ' }hvxܱ5l\AöQ-*=b?p9H蒋D *  Nzr$ך'Jm?HЃ:J H]4,ySW L~/퀩17Nt3lX Ñ=Awq5 =tIcpY0lx^iv҃H9c-IP4m3 -yBȸi EOŽ[ug_I&GNv҃X9ci vleL~*t~k'K ^o~)Vw ^Gt \q2PJWT"gK@?ȒlJ|Ќ:A$[rֺ6E [a7}b%IxdvHZ(!;ox'Au0)w;B~r!cA&V`s; BŶє qblN!66fOvPaBᦠ d'9Nrx"3"~kHG99w@?- U Xpv -dU+XڪDŽIF⾴>*΃~k9VXZ&~P12#Ț٢JyNz||$g;A -{;Bc[dO [MsVIBb)nx ĻHJm [!>y@({lzg4EU=6!o *!:A/m3;B_M!:p'lA!m I1!;֕caV>iA`A1O ds~M2?hPf^8'?flcW9%`?BFć`?(V J|1vNu۲`?]%P=Ah8Y^ #i`Zt%j y;A w}ޖ_ |LJi v0Zl|&V6AF;A:i6aecaqŻha7s\qSy0,#Pk cY8 Q T Sp_;Gdh/Sa],v΍v7S1.`sNv`& |7Ep>b)80\\>AF9$HͨJ€EQ]A8v6;Y`ٲM <ϬrJuNrd'Kƀ -uc"eX -]Px Lf(֝k%'d88mG>H`B:V 6NvE]GsAB>>.sB`y2Dk%&KӢ,XD;7 ^pU9W Hp _V -i,P;8 Ƀ5 ;~ ӅV ¹v^LÈYdAy{r)Cdyv0H7ȱH,-;A`,qhy,DFuP/HQ> ^%Y~H &h<.^PrܡE bON^P>Z`/?mk}1{ C*N];AŎc(G lca,Ġ`2 %8w`1N#E *ͨmcbP;bبnP;yAkz.M5̚oCJ_`/LI ^d3(gpzц}KQHCnUZTy ,AQ(;h N J̠b/VZTG4c>ĉ+"Ez8+8=!b'54?c߇ܠҌK1v -˔itP֝T * *y7oP.0Av"1>;A*i*7'51nˏ;A9LrRGkUzr*w+ e :N*ݎf1[ Y#vr(ΊZGu~9P-a]q!;A{@d#N\r -;AIa]v tPƹTm7y5ߔ $Wlsӿ򯸴ۿIvw~{#'5٭7IAM??m۶??׿sX( 5ɲuG9vK~A1qһ[~f͛nk3td;)=|B /9ҫSCLvYdlC d.=/{.ۖ+e\le_/=/{.;ۉΜS륧euٰ;[Cvya!%}lb2\粯 j'9˥ee"_T_o۳ii۵祿8Qܯ=/uM&% 祿daIf 祿2zI^{Zzy]I|T*kK]Qܯ=/uop%ryٯ4Kf_ju4oמM JΪ~h!vy?t;Lfvn{kKۡ ?۵h2k"t]{^4݊O~O`S#&:gHU^+}egi^joWe墭\Q7d_.='ʄC= )#r9?PT&N8"r9?R.곞ɾ\zN vU5KO o?Q&HU~*(X)m_zN<1NC9?pL1n -r9?eFL7rj3'W^sߙU\<'Ni7rj3;o -v9?fٖ~ -z)Ź)ۥPQDPq^A; K ^V6/WSa^yNO»p5wv9?losL^zNO%<%pT9 +ω.K; K 6K#9 +ω.Kc -z9?e -vȾ^zNYVvPnCm80\<',qa]zNfO2J<'hDj~J~" m{~>Q[_dǬ[M͏(AciI702#*{~xo MBn7[D|OxoMbRIw$w=&&$PCȷl7&/$;ś~Ǹx Mb#WG=!Cea(%d/A'';>?!0OLw}C#7-BHzzϔ4}zE#3-bݟoHL~E#3-b(ܟX.}OϜ}$&E##3K-bo GgB{O[>ҽ?S!\?BNar.0zzċwu>۹u[ΊwtN_[^٣ȇ- 7MxEVW$"a U+{^&=/ }rpރW>l5|eK"d%ւ"aKU+{ ^m[ .2_S"aU+{^e&/*[B_3 -$akM+{~ޤ#*-|qpփW>4|eK"; n"_jǝW/m1xIÎW$&-/|ApVW;BWilx%})pږW>|eK";n"_"W/m xINW$&/%OW/mA&]A6j-=%! ă7 :Q_ i/BxDW D>D)Jtg!QJʅV? RH~hJv%r ~*D+{: R=˃2] - -5ˤ>Z`g!Ѣ-_6,BdTƇ?3_ - -OVYH0 TvR+B:+e; RZJ\z2'oz$ZP!6v|un% -큝D){=\E.D\DK)QlwlUuZTNI.Ղ4QK4Rv8vrFR>tYM*YJZb5g,%*R*RJ4S]Skɰ:YzDe*{g%w%*lH\`g-Ѭ.簺`g-Qa^>!Z}ZTjO;kR\ISKZ93[K0o=ve!Tډ(b.S:FK8)Q'壖hܖ -O*R,` ,%*LsIR**%륖hzhYYKTtZIQLRKƛcg-4ԤbK-D-rCd>ʻN!,l>lDYlUibGaM6.DmSV7F1эr6[b$T5.w?BU#vYLTz g)Qzd@aj(=){_ Y+AqYAzS@ -C)S=^g. DrKĈfghj5kx{`r ;&Er#Loܭn/"Wi􍼊k|Y=xV&\Jt\-T -Ox ǖ O>-M㘆Bg)TStccKIudCJ RP+MixX?vPpYk|ʿP޴z멃E~"ܠ0}y]L"nCg+ Tʋ{@JYtbx9K/;dN.LA.K1(3f *ˬ??k+4؋n㾌9Q-X ]7i6Mg %dQ]F0am P{ ǎH&c{6JV|n 0{#&뚑PK珴^98U3t&äɐ4'98a.\B„I90y4Έ\b/t)"{@YŰL\}.W5tN썼xHVh3 ]Lp$G**iG&f`4[B2:}> -W2Y'HHTrOithxV6~Uz~*ZV0r+rT=6ki 3_0~S`24btl;k|3NMtt+/m*ٖbqȇH5ղh`!ٸnN*+ca/w:*VS]*He_P_ڗ#h lF` -e$6'hr19awlr5$ne[v7 -0-gIƮA #xpА?bvk`*vO:t {I]DJi T M*C$L -C$+u$HfSIwL{`ideKrYbtru]-FFƸ04I˔^l',?KƩ{IVmLoO$?4lɨBEak!;Ws5bPVNJo1YzQmG+eG,I=8r<؄[!Ǜw& bڝ$_P}ELAPmdt5[d5O;*7f ѲŴdjX -H ;)_He6W`-"]$IoU ΉSGaDGGz?w1LhӒ<:$>VN(4ڜ.uT}n#,RkMkr'-r]226WLX;5.A80m ZA̱uG@v9$OvrnEc4*@Ԅua&4n[%N)pdz`%An[q- :F&(it kΜHZ>[JiҪo`5u2K5!M%|;10R.+(s ^RAwcAD0lԓ#%t ̯C]#| -O z j0' j). )tN0A&-|XW&HZTUa[X1'q.m/֋a]D:I~ 雽 -K [NaD1 bNs`10Υ:]hpEvɟOհyU%.EHqw+GV1:L1{`$]'RmKp*X`8*yQ#JE[Tul-;`KPq(TZu遶dkB̺[bl -#Q=* k"%ubJc&63XYƳ0["[lX& -zZN"DþٿّP֘4t&$7'ȁXe0b~s" #9iJm!a1m،ܣa]]1I8W$t !OlIKL[vOjJv;^9 a5;B`Beݣs`ELC3+]A2TsYrt9B@jM(Cv2gXn !b9v04`{'bIYF'CȰ!'Jyw]Hޚ?s !|&y. ztTA#β< B`$v fK`AȰm:@g;)B%!=/x˖p'K@Ei3 X7x TW`:B-"w)>dK^|A)SrL-ιaYȟ*.d!T,'[ȿC&int! ֓0d]biDn꣎<"7cF~߮-IdSQe~4#"I`kPI/YNUsßa[K98{ؼD ߆|j"dyI5"42}S 5"ޗ+-pd#2 l#`̲< H MG?MWZdX#=@B.gZ ([Ccq4Nx6vRH28s(;0Q~r!!ʴB\Qg;*$"òO<1ZK #jfdiHE`>Gd55$zD Fb@_c^:$@ #yu-T05k4Ne 0Ӎ׭)}))|]m8 $2vO enD@8H*e=N"ujVuHNeFǚ+%c L$KuXS2{FF &Rfh;8N*R6" -G"QCk;HVyLc#``33n8 q]--n䐺#zAH"2$OC+ kQӣis$]8ILMuuT4+H[(²sdP\076e6qY>%/{D4y_AMB#:qcMB)Ihh\Ovzc^`1zblCbpBP'Y!fXas+P( % ?%xv2L ^v5jbv.jh萔Rٓ2mc[N@kv_"uiAS\Lmtk <%^ܜ7aJ@(@y Fu4&g GO1L*XAd"o$vF -')۞2icaR]iNSdpkcLܱK_ #,W|2`iD=d3s"_l&ߌa/3S!YLT0P>d&|b#JS}8ycz,6ȝ&a=Jc -$55[ؑz6(wVpX^Jd{AkRT)3 kJM#߁7FY{' vvtR`H3h0llbf,F(Rf#;;( ^ -9@BT,/SIwsxl9Nd] “:q #!Y;sA7>`LLѤA7 n Xl1&8O; I9 ~fQee6c[A~2 -n;3[ƔO`U*P' ˂Me0/0\Re/0G~r͎u -@rۜxp s0HPVX:IP$Ԩ@ ) -S,uX# h% -em -;P⭧XHxOԔxС ͸"REfM.A=Xbe-7B9H? JHAzXxpl&{ =(s(6axQ c[af~,&{rwc*(V(S*ZQ=T˃HӲvWj1wmn{k萔{2g[ ,g)WX-I@1L'K(>%4)@( FIm礅uvX f(•!"5zNv8RqB–\f}ŏ*ݕ;^oFB1VI 'j):bէG i -^̱ `Mq܄r7H 沺D0xja=gn4S-p^Sn۶N^vDraq84Dnb%{۝u5% f`m1Yv˄+K6vLOrLؿdAT=/rtPqtH$x*q%xҨlx7o ͇4Ul4̷7oe"{k}.E dЃ -֛m*KK`Wxl=T(E `SuƢuK8c9b`_ k\$ 4;aH"$uX~n <\ 14FxkEk;gשKg f'θr2 V c'*iͼn^b3aH%㯅%vKk͘K;kXӗ8OZ኷\5T -|h4٢`W] dn{CdOX{ij=LNʸ <`b۳'CfĒ}HwڞJmĔ}FL[6L0k(*ŎY '1e4^r`xd+nǙg1툉x* o,>哶lOО3(Nfy@l|3D&֩4\#2 wNo5l MmLei8sLŶgL [ppQCpfX(G :Bbc"uPRkӍL0<}M{De/]ibtc<WVTష4'mo1v:+>0hg==HzTE[YMIlx9s1r\SKI2$8AY}A<浳g,0j4[&,0y~ٓvn?N衖PǡMk,6F62wJbXX-OFOx6vCK +i8&3]Nnb> rŝrtn[XhqtQs'8itr_x dXq~&{K"=_8s3`Xq' e928H2 saNlYxD"׎[8'FDkq=sW?ng@rlq3ۂC_fɎo]8]J3.ᴷ7IQo?Pt|YrQG>b8 Nva4 snZn߮r|}ζЃ2٦'^a}k -0Ÿ6rafr>4'>?RÜߔO8r[L=n\7ba Gqeef]^ٸ=]_aɚød_/=/.{ld_/=/,;q(z}ٶMK˞YCҳH.C#wZjg^[^K8o6d_/=/u8L݄e)[n}Z ث䢯WV˜ħշK~]e)>|˥e}׵l֮!j륧ek5;Jn,%zyٯk5p,- 5^/=/uƒɨe Jvoe\ӝ^z^ZXJog=˥eV8K8򌤥-_oAa#_xQJmY{׵v-j;^WU.kZ-$_<'Jۼ B 2V֏q ɗ+ω2ѷBs$_L=5m7*˕Du(z;e_xNV+^T+O?\\ Pokylnz9?\V w>\yN5Wĝ J^>WC͵]Loei|:uks֮ O .?`[|]yNtXsjֱ ՞v9?aE=yiZ5msjҵqj|m;CmsR?t+O?\Vv>\yN5Wֺ ڽE}\<'ziggegĔip=,nD}3i'Pk~:O{ ]V-BmrQ Wz/iP,#n{~Cxo -BOI_'#{~Cxo8 9=BaEI_!"y MBߺ[ =B!XG7̊Rp)#ś5{=BMI=>}{)vAߟDG';>?!OT7D~&'r;>R?!Omj?ug;\w33zcPo?@1"=B@b'?I9JPq_ȣ{ ӄ &^M)Y^ -G+br da6g&چM흒%_@ oXJB V$K}!q|PEBsj%A%S|(o}~~SJ_ !/ -Yq8F~8YY1~ rM_v,3|`[ثoitCm"Ad(fS97[ݖ0o}WA{E}KM+{^6|/{A} U+{^xߺwWD޷DwzW{E}M+{^݄=G1-yWY{AVė"&x/o -|e+[n_{ rjwҞWD޶$u7{ݳeaU+^$]$q}zWl{EmM ^/* zǻ|ec+"on_ؐW6 ww]e_pW6ڽ"& v/|OwƺWDDs7/l{%q7wYp7II{. /zcn2ߑ<|]_ /y~2ߐD⠟oH#܎yχܥ!ű>wH&|>A>s<|CJ{BߑT|pσO+|qdσ7$ !7ir-܅!i@7oI/|>. '=ge#ũ?Bߐf|σO4|qσ7ngn>wioH7|q];O|CY>"?)>wH;|q~σ7$> S_sÕp-بޚjCO4BAIpiϥL=?=׳toPPA3W~,h>vςܛ J}.e}< HzGgO{~蕯伥OW=Rg^v\V -Kڀ(yRҙ*廬?[m5?B7WbLi>~! /T)_%;b}AiM^}]B!`]RKqRwImUwRHT\/MSKɿF5j9Mc -{1,dQ;'鷒 (.1 -z{^Vgk!|mͅ@wa S7'IYrcJ/,6j[ݖa%r^y9Kx[ySg-q߾) u_\dPڭ^ZXt8LzZaRS#&^g7q85 [n8/q i|K0uD(kEa^]Xo,K5{yAeXPta{ DYN}u<؛W;MXR]VvV?-5cI4X%Ymd_>a0իRZ6Q<{LLu0J,ޢL=e^gfdh؄_'b}zslH)#z`dؓajr9Vig,KHPQR'PڹW.o.qNIh47H[M?Aն5=+{y "jgq$嬾I]C_W>QD_<Ȓ4k. N o=,L_P?tO+fiVF@ .hh|c#aZѰk\Ь[Q]]\&IGX.SV;4ǥ&a[)m/Hff%ܷ[jg`jC_KiT{ڡBݦ L<_0K/qjLsN!*V>mX PR$30iŲs..XԪ.L=եhƍ֧\Q(u75L)Z^1Y`3IRUKMUM] X8PXү1w!cƁ4CsY0M%8/= tA5 7cȢYxEk^IYVfN?} C2ha#OW6YE.[uk] 0 NlhIEqWđ3LFaaou2]ZcwHe5; ǨiV%!UKs0 DCb~¦ݞ*Zc mOMmoԔC_&m+_vfy7,KCȱbC)fT#Z@?ywo8 ͘ KWla4&^ SOi6 l9]^¤< K%yOFH4MnV0hkEj疰\NK[tqHe8l55 sƶT'pIf_ Ly:jTYlu" e_0e7>T['S +/3KSbC]J;&?F}\e&;PV4ܥd xԖ5HVŁ"M##Loq:w'./Ֆۍ3)>7^ S-ⓤr|l\^Jk(&XAi0f 4dp4G`KC1iH60VɧFqԥj|8+7RQ3M4I4o= n:0k gupaobDEaݬ04;5z+)f>-2D]ZR?cLS _E}PeLV4R^Őbm8BVuM=ġ5ɀK -&˘FL=&Q肵桦N,X-NwL40&z}=[Q>r reյ¤ԝI\nhW4Nd -յodf 3&?HEduq$ ŨW P;0_uL6<74CԑDŽi baHk^cQJ05ԯkAl=䇢X~\j #JMCm -5;;8Qz^ñQP2G64Ӱ)@((K*{db9zO -C;7$_g5&4\?SؾKk)<|[b߀W1 ݧ `9‹H5\n&40)ܞoN?)9!OJ+ؠ¦t1Iu* cRo҄=2W[w8DR MEtYq'Ray4 U0jM' i/]l26Iʗ"]=.]Aʹ.y& /&S0ֿ:Q @>BNMN? $ ٰdPr_z@Ki>rխcLNyqJ;,f3$/]JY_72maRvÃxӆ Np LV7R:v[ YfԦ;DvLCoG&joj\fI%k!V;*T}cD9ʾ/TaԻ\0՟I2),c\'Q4^{@$ąW Ktg:ӳ)0kY3j1el$Ku -b !Ma?vyF$]s'i8Xw9"t_iip6Ì,@#;\"u_.n%dj8O}rݫt0Zt~ܠbeZ^)|;}ð2/R*I#zMdS{9$5Z=8zE ,=S<+U&qm.[a#]YX'(_ L -Q4jB&nM|F۱둶 -LMSI-{xs.f4 ӤGuU^Vb[44RHlj0nHjn60[<%;}}X3rK}x_z'i\4s"ߥ5vOV% _ZsKm>=қKj$B{PV™fqF.+0_Yh?!qȯOS3lhj yɿRr LtÉ.#%IZqL"y#:{x˵vq'GKkFies ^b]L'ݻaO'\^N# -%6l';03j Z$WaRdIM|s[ q& AP C2+rAj HnN|zob'nt!wT[$Ym#X&%R@!G**XdІ.A*،a$t-g{8l5"ba=B?RY!,e 뇯Rn5.>244r,d_&-8NT4ϔ5ȁhHZ;. u7;b Rݍ#]!Pb9euQar)2`+W\ ^eK!fn'{AE20h65ٺyؽlU|cKgM*B6˛LPUjImėr_ےm3 UB! -]"eha2-^g9&3Ӣ+~n>Lv^~9-ھ%ɵ%Gn^xՉP=5ifrw >dfa%KfI|"8# 4cW#!ao/(%3 -7]rȄ\k8 -GYG(3_,8,G:Tm`uhfVNrnWОcL 68lJ( -';  1\B }P$=?a'`%cVѮ! % OtbI6' C.%ȧ{{iAMXV~S8s'X_x𔱹̪goG{b0<-8°18 '`݈86NƧُpaJRZy~9F,bc,?PpK=Ɯ[@a[LlPo5L'{AXþ{Pirz j!&&j7 0(:xoVijJmD?:=0XiFBfH: I V\x|hLGjvv(O (QlKØ)9CIRNf~ iL`|"VaSK0zwGڱ/`Y~8޽{`WwmM[J4lAife>Ds)bǸ!}t 1U 9GO ! nec*(\sR-м a[G! JAH -5jb0t'0+1Tthg'P-ǩo2^G̎_LCBzO2#%&Xv)Dî( c\mib/kM]EۘtO3:K -+xhXlhB-]PuM5SۍGVd+'Al,Y݂`NP~L68Z"[0U 5 F 96y0VFDh["o*Ӯv$(&Y`2" ӯL}2+oTcdi:$#ŶO)Gde55tJ5413FִNBM־~`Vɩ:!c1PZ b8OSG(]:1^ +!֩F`:'~;%ǘδB6dG^I hak1AhE}d4ݫ3JO'*L,+0uCڌx2T=5>{8dX PҶ6cH F^!>&fO<y})5* |ҍS۵;_gVl+*5%w.tkU5fßN3'^*L䮡f3<̅Hfv-=6ABSUeΡku\NM_)fV 3$ +Pc^9' Psy~&tDT]TV 1YN"^PR qz8Xe(. ҫ WX}~I1zRns]tX,+LLU=)qcޚHҔͲ0?W.0Pi -RKEd$(u+kCY[an;~3LרhA}>2Muj&\dUbt?ؽ$ڱ&/gb{}HW%V`*63-^+SPמ feRf ++LVM;m7 Ä~^U1$\N;eC"0XUdd qYLQf=ʬnD8xJ4ec<լkRՉUZfP2ӏ-g$l, )#N M -cIk[` i_ž?KN?RJ~vWn34"HY%^4\<Z^6.UǠ~EP80gept՚?a R*lVaUWo\%΁,J?^y, O^rtwx~NS!vfV(ĬɆpV]{Aor4<)77֨zEXdjhEmO'Àu`Fx9AKj˫~ g4>v]e.+ۏAZc$b? ԧƢEHh&S:b9nʜ~&VrQx\-Ժ9,L`ʚlƞ2LvzJ' $PUjKC:.T֒ذ6 0ޡ 0k㠫Bݎm -a@m(ry.bD|0f]E -X7>fc=I -4L $kŽ1{/ -s" -KZc&XZnBbcGqA$+QK.:b0&FEp:cVv)jBL%jÄȤ b:D61i~t0ʎ,x\9iaR#휂$_)51(.VUC.Itn+HmMͰ6ìx.bSDRbR,M -iLlD/ղ.<>a,xV {F -UQ͜h,݂BYυ -5eh/EF{?}_PjV3{d-p6nC!A*4hjkD<SBFOMlԉ'"KMgk)E&&W*ϦY:Uf ƪnÂi&ЬUI\ Pݨf0ya6{g; I7` [bfU[DȆ`^n_>sG 'WkL_^2X۲]D}3dUBcWmm ; &\-*ii4Ԓ-d@B -oSv&.8.ʴvF`MgAi[YJ%|vBetM{W-l֨nfb:ɃgKLLLo}ݸ -sOra<7>|j6WFHԁ9=*I[Z=1R^SF@d=yѲeO#_΍ 5aa0N!5bK .Ho#%{(1:yE1YcZզAYZSb 2qZmUVkZbV~TkKJ4Ԑ2@Z+NbL>PР)3&^ -&ڡm@r6hU֤sfXR);oLh؋?V rEig 3C -t&;sͰ=+3J%p[Z/T ɔTֲK)D])k0cv6sHqX(63rf߽yrY! t/rь(꛵iX:BM*JSb ~ 鳁:=LnU/.*X-CVVls@]Y׼_eHl/U\~&֕JޟZ)Dҩ5H:M1X(rY -Օ2N: ee3lIMN-Y2bi%bYE;V:D_5=̜1tcWG5|+K_&RW{0!&]X=&NDo}-4ivNop'k^4f5R@1jk1>}^Qld- ,.T/r.9erÿ?OBl -lH\@Zӗjw#2>Uvt(.&\bƿqW)Ϸ 9)1g D,+ϏybmZD'lpVQ4" -F4\\ү~cfЍ#YU8Q푿7_Jvŧ; wA^,l[e.ߗDe.{ܗA;ަel6KL Ҧ0e.;ܗثZ }~x_6;FfrzGNoVQy S}#L$;A,ܖ$Fyȇ^}_t>eḇ=i^}_19cde>?z]}-ƈ&yeSQ<|ZLGMk15$.kd?^}_56}>z]}֘4{.^k`)<|z)~uZgpq?|z+>zYv:ek"ij<Ӿ t]n^nak"o1vғDޞ#y'IL2c{D&n{0JCkk&IqSkK3/G~C/I6"i>>zIxG/?}|3%54VTk[XW%9k`zdz5ojԧ9>yML -kamkax#'H.כ,?}&=}VHJ}O^6+d>&=mVȕ^ΌK{: -z5iNz5o0 ~#'I~S%}p~75Xd!9?zM:܂GdHxO^ =dOjb]fd59 9(L%YzCS>=e_úi`GDc ղDؿ> ]"~T|F\D?'>#g }F|DO ? >#g{п'<|FL!'D@xa3B`J|F!Oz >"ٓRmALGLg"'>ӵ0?! /O}ff!kD% KB= /O}]abB3 B_ڟUGL¶//4} ~~B3_ B_۟Bgj'>sд?  ?#B*xB_::SQ_DXQ.[jr/Lq/ol+8Q%wEe7ƺ؇Gݶ WSA >xC<)rbO NTfNy"3?Tra <Jn).&ϑ -UB 4y%vk*!yo$_YUB cO b~PC@eC2~_a*v4 -o` -=oc.;zWJMU]o\sDߦl!ECȧ^Cܜ|X'A>6=|jemz.;Eݩݻ%VA杢;;HyZȧS2["dީϻ%A¼;B -Nw*n|{yUz ;jNiw|.;eު%Ar;"Nwn|{yTPw -UYwKc%݃%uD>=ȼSK MS؝Z;Vsm!^OEy;yD>V=QwGs)V=-OwBXx F-Ow2KNq/TcwJSlwGsq)VOUu;uD>=QWwGs)VA-OtBTX9 F ݭS)VYմXcQߴ -zA2?~Qtz7퀞~ Уi$ᇇ?O~5ϣ(ᇯM~d~kwG?|IyF>O2?M'?<&UvR1(oZ=HkOG?|m$tz7~ ϓ?|I~nkGi?|Q'_<@k7'~ϣO$ᇯ{d~ᛎ=2?~8ח96-h™\_ٮ86gxn3RH>Gw)o,9kN2,̱> ,Ղ9|0E}/c{\gՌ/5 -} N).ړ.Rl^9ZhT4͇Erwg:/O__Wpa\m{ {j~.ck:1NcM;aޣ] -$T|l!18*}{R01M_-vx ˲]QqEx1pD%Ƕձ^Y:{qc,:&brҕttpcӳ޺BXoGFָ4bphÈWÄ+9kNsY&8ŗ xا,;Ǩ1̂fUrѧ4-6X e^esDɁỲXU_9۔:׆a#%DHƎa6ؼLL`rҷ$ ᡬcCmPSlxQ^o}9ivdaJ8kC~oK [YʜXl~*^(qb)q6 ]-Zϩ۰Vvb눰!P!9f[-,lZ+c9і?~q鍙g9CEsj9ɋ/GyPpiʭ+e;.ri49Qͪ/ވˁjEN4TN6НX y$u;V3fkC94bN-9pբk؄z5ax5= qzP>ɕ'wbظjsD`/`75M0lތeá/3a\4 qa}Z}429xS9SfXc+`ᔁ%k#H-9V8١cCaw¨}k\9l'tcWG 5{sfvhώUIuPhfaėi]Kd!l --j1h- ؖAfm Ouhu^U8cղW c8T4.E\>~8ֳJuRi\х]GSb票pi'5ϕ-e`|o6d!ۍ ]55ŀAMG:QY[khtq l -!;=qA t$4dî@?%KT]Tp776pPY NevÊFƺjh1ﮰͬ7LKlkNiP"KX?6v6,L ǰᔴ.,_YRfc8jV`4O40LD=ѽzHAu5Ѿ\oEO b/`_z)1VZ ik`TZrq71ɴ/!x$q84 4Bs涳 ҕxr ʋ234k^+7b - >hQ'Ywaa侰 L\e+N( b0h9M,$Rx0,&0Zmx ô#40Y*"gɰ~ 7$p}ec.}C©,,@%~=&F&H䶹v =`Ta WÄ,TlbT6`ݽ[\d[Xb~8i`uxN-P); - p. rtİiE' -MΥ{bX~8}jl@5GӦ&q$rIa90.Mh)KjNם{یW>0vu2p0jk 1G -]ߪz]%(cM<-ydxE]Pp81cqǑQ`OA9r=G;1ĭjMӼ Y(.#qX@xBa 1uP -OtSx µƈ _9&qc:Snsca)SQgCgTҰaK#3R17uMȖzcV__g8['߆/}Xa$XdtpvW6S]dW*n7.uS pǓ[dX0~R8i6\.jưOIU ʱUcC+j`c׎+GJc׳])S`({ ?q<5#|އ#:V`8e@dXS -ffQ Í+=,цn+Ql7bq Kđ Utx<(3WV"Ⱦ5V7lTSكMYF).)a[fޡTA\=1]&'leh4B1pq.q,X<𱯘 1i N @*wk75Pt0(ecSV&Fh%EX"iI܀ñTc1ᆯQ;hs_\X8/`b1xU1uhMK -`'Aī9K d -@cOXWPT'ְ2؈)QKڑ91.sQI Gt`߱”+a\Lp=-̱:5zæ6o! lnEӭ̅)B rydaC~AX6PT41 P9;V= s e^h{?L/+dvnR ; -ΚkiphQV [X|kn_z(bPR3,1Q}x1O0d13x5a0 . ;bɵcᜱV[%ع.4yJ{C .Y -2IY%L'HXnO% :{4 )uө -|F9Nzfr'E9AN7nl?y0`w_֘l$, OHA&߀X)H\oFRE17 [ alb&lVVtnI 6-Hs Stlтi'hAm^ aelт3a'tlтۡ%olj̍ئ ü_ D65$r|W 5-v"mjC$XiM bY~3Ԡ` ۰E b)AdGe=F8Ą67($QnPaD.gBH xl -A<}/<6M "=X_X9A*3=M inE oI6b ƝA;S63AR(::A0㥄r:`XM 'Ş&%*mA "K̠huqql1hK۠&j~: GI "7ѷ65v||^RD73f|xN3ɱ "#M4DnA&^V/bY**$v2YwV (."ұ.>]  ֟59A ʄꃡ;AgcLw3t&vf3TwXz#/= 0lZP4|Ђľ`v::tЂ:MӎmZ먮V{9YAz;7+f,'F&:z%7~?`(]N `)jw$/ #YAd -k,R,{ mVlj$A[ f"^F\a_ _i #xy6%B`4%.~ߩ=6%doR%lH6%<>ADω-N=hRPa~ɢ:M T8A4B "1Y2Y8Aڸ_ gx1Ƥ)I̅ŠE -*I083 -3Q%6-X-[1z 21(-ܰM "31H~[Ġ157!)J Ҽq*do&I1tc<"ЗEJ -m&Sު) aBu".fyq欈ac1bXt_Fd9y&\ :ݪ E; FbP[E ,ҫr [ࠡc$ ̫?T}:AzerT7; 0a^[ -22̯W36kBNZi?%T;AV_7H1s=A(GƓ$ʆ@yRO¢K_Xz(( 6Z lv)cǶUAVR^ئQCx VonN2(cij8A sP*px XaqvbT(69<$"xȓ_pl2ӴvD9bS:Љ-rm"d{S =P0IzPfi^VsClӃhμ`ئцV-݀o]}bmz -ن4Ď<6?QnT<@~GhAGsK ryFmw -RPh&):y5aDT, 5$ý Y Zٌ<Z u&wh3dE*m3znUe"5ouRd[ k!2,gMݛUM"k6g*ŪL%cm3I +Y_zZWoONfVG~̠<:>]qw~_T`4g1߸ q6|;ߐQL?6`<7 VosHo7mױڞ+-Փmq\>DG_I'(F77)>[QWr}K{%;ޖ=쇏^˦TЧeioM}$^2#}~z_6C03Ϗ^ˮdcFe7d3SMGeow$붤pU~O1i{V&.&CcK?| >ȠSkp{Q~~gk4{Y<~:-\[q)uu{}.V},=3dgKCyvgKCӅ^ >{].hnuoh$q>{]n':WdMܗ!"'+rM9PּWzz#M?$S.o(+8ڴM% ]EO#Nk7TPT8ꔢL87~y*w&JJʄ?>;O% %#P1TTPϣP%T 3s$ľ6 U0$q4:pޘ*oܙJMm4*{R%]]82UU77&JitW>1UfO#TT W=R/OPwuHUo$U W=<;N%M]<ح^{JwFJzij FRt{S=D(T S=F;#Q%M4#UoF7Tɾ3"Uk{f*ž8*UfOS)T~S=P[S%]m8KPwuLU1JUeOU)HU -j~ggJ.{ƝQ>˱w5w +y^T]~.@"%9*!ٿH&W_BG3M?02>#*gCBn<`!?1+>$'JŇĥ؟H{CbM|H%>%ɠ Cb_|HOċq!?Q->%ŇD'Vg\'orLAR\G+> $/O}f!B3- SB_(L 'R'nY\}&y%~D3+#bi_ޟ;gLJ' -Vg>K?! ?+g#b_g*WzG>s?"jx#b_)p/BLweI,ȿج? q 7a(_%ojuAM56{gs!NwQ~wDS!o|g|#bfvY6/2̞phDV98aC|]VwHYwүH+ \9o$_<>868o>'KwoϔU?~CAV ?I1_{[.l0ilM[do\utfl!E"1Cȧ^D{Q|j}mz.=ȼS! :S؝;s!^!Ou;D>=QwGs)V-O}BX F-O|2Nq/TwJSwGs)VOz;{D>=QwGs})V-OuyBX FaޭS)VAYU/xwM~ M{GC|ӘIߵ$zPw͈~ M'G|׀YjH⛦CO>ГO%i4,ߴzwͅ~ 8]['O|PY(k%,!˃_OГO.5$o = w~"]gga|SY1&$aGŃeVL/gw öFptA-]DnA>uû-aIûB\CnamSj6/=[Pþ&gw 6ΰ=[X,w{(-쪥jb=tlV+ na6Flgw Bv&9"nauN%%w ʡY ûPlM( {#%1[XXû4>na٪xnb; {t\ִLb{t0T-]sF(=Vmjɡ=[Je1[X ->؞- N-b{r79X:&w sa؞-,⫶m&Z1[X؞- %؞- ?^ٓ aWNhO5BvlMb=&wkk1=[fTgna*SqnfKinaܒ;Gw o*kXډ€D۔n|tle<"a4l%]B_na@Sb{t71NMlCpvqbrl&G+'w{ct"Ꭽ݂Vpnb?8d{X8c{vw{(3û4l==[u͗ûu -:Z1[rwkUE| R nbPHY8.zkvLl&MZb-,'w).-,9AӻplWձ= rc~0jؚMOoa7ǵx lTSށ3 ãIS¤c{7Cf=8x Ub͚Hà8ұ=Xq1[V%'M̆'o 5r|L{b{71迡oBºv->Rm)b6'!$tu| 1 ,} 8gi.tǑ!Nl Y4//Uɕ@.yX8iLmc 🌦k0_)Z$}AϦXG nlyG ZxxdX`v IWHXS#A4Rc4,\kADpH %h;*)8\2q _q°` dǰ#{gݱC00.JHfc8W",M(fJ3VpeXX׈s V8J `mox2bF#.j#a{ueǰ?a܅6cX\EV0l$A{ q2rA,b/`xD*bڑpK%vx4םP1W^+@Z=^eo[r )CMqeX0=EaL0 .ƈVX~ kpu7a}'\jv8d (uBwTa~`ᡛёحϨ1*HL8KjS+k.Yw 7~l%F OXU}/_ -m܋+2*9pch4 ]2&a1PbX.5D![RxZְv$tڞFZ"coUڅa0ڡyYp-9\Pxzu2uװfTX6Oо vt E 5mbg: M-`]WXEbyirmG؊ǰ#*Y0G%۲$m S>J @1Ӽ2&]K`H gwesY Xf&ݹ SRtVaM)% 6: CʱV25'2mbxq,;]Î=*-DZd+:nHqЖq <9]3ʹw5Z WA1+{B /2cnau'/bHՌLC=e{H섇9{)A3_dtEO*ǩ/jBPߨ4FR4 ۦ;148zT*aؑ^8@m5<ګ6%?$s݅ݩICz8LrϊstUR\Jbob f1H 0<l'%R(HH3ŬtӰ%0dURﭸaD]tp0h=E7*$z򉘽`BQ6ݾCbyEj&$_9^F݁A7&5Hf -%^}@ώ[{Q01ݤq˸Y6P VZ@(LH -ܧ_'NTpŏʂ皞BC -`TL,71Ɍ] =a[`7ax= -ʅ_bpV W_{ӠԼq~ g~1C x$s.*#6°d3G9]nD rQZaX\8gEفa_PbT#0E)ɘa˃m58a'0բZPtOÒ JqvP(.XT s0J;:=0|CfO5<+)+Z$>ᐙ2ȹ`Ċ_clTZrhTJ|Z'\+dȖ!o} &Ja&X;3kĆyKRIkc8G > X"'kaa *15.(%Q6 r րiq^yEɟ;$x&l7!ڐʛ-Xx8tfvÓn&C=0jU-=,cLC+b$׾ ;vi]GuiRPMmrag0Vy B$A'6lf=LM-A#%lh$0ݎ~m9z_(ATHɶc{B+"4~~ hF6?^>~PVV3Μ~[ЦeFZVɰM?;H2Ay|fRh:M v#f#9>)[Z069lmE p'A92eǴzrl2*/[X>A _gT&e>M69(XP܈g kh[D?-JL[xj6;A\`$lMb 4G;A'А8 1y]ݱMboL,Mb&0&cl5A3JdeX%Àxl=(QA%pJ$i1l'i\ukfFoČ8]&x0f;Cԭcs 'a<nCe1Ÿ1S_&<8k n -SjuCƃC'T&Exپm|?EĴtz4"q<")0D"&)aZՌ$`<%bU`9DU6&bLZ@nݿXB38<=$p3"5sLpQTJ};)XpR F \"`qmRQ 21"N1ƃ9 n^@x7-\8E:6Zr:#u[$* T<䢂G]{|`qSvF`|>E p!0ֹi+A0sΰ&bDNG[gl8vpHÂ-/I2+ If $1 @ʺoa z'DK}k3a2 \$qt9̓t1\rp.ԫTf5v! dÓSXg$AkOOtY#d(ДS.vo }}(1PHJlLj `nFW@Zqf~m.4%<'So+9j]~n#Lʳ ",1]#_P  :+C+F^YC1܌VSPNȪIKH DWeiKԵX%߲N2#VGg`O,阧PdO([łPFt!w_%j0Bf/1"6VEM_:ȱ)\(/e Fh-RfobqhQ+lF%@zb$*nXr]$&Q,ь ,T'MpӘ2c{P<(b)y. F'=j`^5_';U#b^26Z>f":t&]8>1V rU&CW,{bMj5V^͉SMi[ }NS Waӄk8HMLx._5Ę@FYlK>EzkT+As="63H -7I]o 7U2 &f%Ia " ~FH`ĝM wpqjev^!{*]m4rnSSL}*GPqsQSPpJ0N-ʕ:8Fe ib`Đtf}Nرa:5Ԡ{X&;5E'Nz_wfDwMT8hY5P pb30'/0&9O, \ YO] ,-d1{=esig2ȺCMg('qlSKU=Lz7DBKg|m -Ąٵ~FQ[l(i0,q zV狃If=P2Ej+ue'8P -Mj0q6 4' T=K\_X&-3o -%ؼ B4&Cz 'wrP҄0sYoE'je= FfIHjx8AlSͲ^0^w`8Q\HQAfEn -^`\:_Ů{VȌ6v6T]%p݀dIքOBM].pG.dGQ0%s3 U-70R%$_E)k.+QiO*D14?.U)R^Sg\R;:(%E}K&̬ WpI2+ЎTXJS'z Jّwb{i #Ȫi^/$] -tb^)v#/evmN4Rp.<*co2E'Vq)xphA ipR_i|iLfC^/|$1SlL,S F%Uri)ڪGi8c n8yx3`:UhBӒ`hq XEcb k_M9U?=IV +k`etΪM`Rq5BТ$oiKS^xq>v r~7c=HÝ +FO,YU'Es_ďj Hc'eEL -Zq_I5tYuagUW,xKu'mزXa x^t؈0>A1XP#c{阁 [1Ő7۪*fTm;E`p(R'P2{lw1P" -s4mR3L%W:'FaH+El~ يud+#kVnD}+~XؕX@ccO<Llpd+&XV$ -Ͷ[8{@pX`EAR;vsF"[ѷm -l_#d, r{Y?V&0PZ [5H_lžs-Vs7ʼ'VRBwZ)l V?iv9]t Wc!U sSZS\_BZWH1T+#Q^a$t|.fQ0ثr$*[!>rP୺KpSm|n?&AW Ufu/Vl{қ`x*%[|Zg%-̗~upsZ~Nݼnnn}yҶ 8L)ȴRAnu&3tuP\y_Պׂo \+6_*>!sqw\٬ys1mDDеSө˪*WǾ \+Yԧj__\!F[[kgr=Hs׵_4ryF lO+d+yy -̺sd+\#ui.l!Z}`[c;^/l+Ua(dTՉQL6ي νEb.k}97يq4B"[1'ӅE"XS6aPmA*AvwJŋTIc5 \+/WGpqK礉-W3nMj꘦Պ`voj8&we|lSejEJ -nL+B0:VhZiSVoe`^TFg{\7Պ w;_̲v7_ W.jeXXqt?T+$:\T+>g`~vrp >Iv .USḢekE4MjdPJI"X0E"8xS1_DA8ߧ@gi[BHwIKKx!"QX_WOJPo< 1Q+xeVm[A Ȋ}cVwbVҒpv+H m֫3rh[A)DNr&l%$Ȯ;RKJ@^d[8i+Ӊ] -|63G>Ĥ2 cA[AMbVB؆|eV5KbV>bVB/e\*I[ ]jj%l%4@u &m%4f}_uĆEkv!_  УaAz3h+֑s[C3&6u>x +ϖlB.SIso[>' qJ~%,1e([yjp,$Ó'+:hrzw,w)JUϺL ]ļv?X\nrdA 0K +DvӎA:dchpcΓ' a BP ve;Fx@,ͬTp +?1b2C13 E$am܎䊓 [jGRUN{ŕ}g +n:UKQT UǔSABScaǛ УKo"֘k Zv']Vh&¨h_`kbg<4N u|qG/ѬV9b%v es=}~t:8ڛL?ב69>?UδFfew_cZB:1R +NC1< Og&^3;=1_s~a'lԓUk +D=>jT]"45d6136:tq 3IlZ:3Qg&51McNvC, WdUgcxEWn 1YNtE'IuL.6`U ԣdybLpr7̄^M``b#; 7eЁ;?%$?~ҿӻEM?+' 0`+ m0+`BrD3)Ock2۳0{m1>>t.)2yj6T+T$YV +SzS5ڷy/d)DOF39E"4 RG!Go]c,v`UH׹M?z{\Vq{m\{tظ׹Ossmne~=z;_iR7k\fV؎ץwy6&ץN}RP|e?zcp$InץGIrx>u)`I}]1Dv$Gs_bp}Rs=Y +Gs_k>u6w㹟pal;<"2OyץzX;mR2Ee1KJq_Me=VR*b.lPPWꨈNS&r*@.S } +'rXJũWgR\lEWjeܳX+"WHz⊘?` +,TxEܟɰS!Q_"%ر aTEWCvBKEY ;i,`.ˇTEWJCvB+%T;Tu?f*RPE̟IS1_"dٹ +/Wg\nEW3yv" V4;_+Lm5Xfdة IT`g\ԗ +Cv,B+X;g,bPʴRuq(NZ}H?aǢ-PEJS'la)ˌ3>Y y^y7n'{}lYP]Plc\v"0 + \t +TݞKt P9/Dz:@w r܁Kaӑ=祳sj\jږX1p!䪠 ;w/:R~xr+ЉÓN7:r~xrЉWWn?G;8~xrωqSMcHvC@[w9o?<^t~-@G;O9~xÓ N77~xvC>G;9o?G;O9~xÓ{wzc}x ^(fTĩŵ .R$$C+pqaFxV.&x5iT+zLfWcqv'J|<X8ҊUܑИz':̢YS.bc#`Uhb|eɷTbV˺+uX1B0 KIƮ3˾:^vtu/?AhF%:VR&Vr1cσT:rE\Sɶ#~ɒ,|Tvmnp^\X4N^kHCmgқ0p +GymC=LyA%2!oo`1</ }ܚ$X׳*eI1 +սF'8XYXbTVQaE[X&be[XᯍAP} REPQ)9aUU :UDz* + [.'mO4 +f;jE1ƚ°][JФAxOB'> +C'ԬJqluS0Ǜcه]aU<j35iqbP2Y2V1|qU;wuf R†R3".ŖYaDG~[nnß:gC Mi.bieàʰnc"NJP!0ﰆ!- &Fڱ[O"VSFYXc:!q|u +>w ]^We.VMcXѶ⼰Ιl9!@ 1<ԂasG`xS>Qv&Խ0hLۜ-KhY]a.1qipJ"aȝVU$.)^Q?'d ;5x r,pRwA#+@BQXys1ݓ{frȄ؇CEg +0:4Lșw!S_WLe?|!@`ǥ5wReDD(AIEɣcuQID_LLXV׎yT93ʅt +231,s0] bNǪU`&5ǯ QIenWJ,1  }\aB2VnWIemuEfL45MAByD nfs a18E[&|;"A+ފc 1hc?ԑY0(@VajQ%h:[w3*k:?CFLtn`.sG5h| +4`bWUfS\߳fz\Kodm~hoc4ccv6jTcP>ffFXinOOv2&i'(N;5qҧiJb%s }nFa*U)NG3`aSCo%Rp)2+8 Ġݡ25\%SZ~a5Z0J15h7!2kqAD`7A͜5Xv,JmIÒ 11߸G&kɌ-ZyUpˏ7O |kU +Pu6ظ{EW - "aFqE3k3:!1zOCx0(]i[u;`Vh9Ӆ7)a,48048@;0Y߰ A)5[^s+nAU xXO5u8 +C cb7Gb +B,YWH  V(10ð]s-R= /xb7YC +]DC#i93G*n*7A*橙`f$ |Gbd>?:V7܅!vms~ja\V8;Uae@C"~b1[xu8n WŚ鏎/b2s ͕reX-ԑ"!\ b$8pڨAJyQ*ȥD MzuJ + cˎa֪&on)4(aIwEҔ̬Ɯr&1`$$#=C.I +f[ wڴ`1 cԲ:7<&<J;;A;6v˜ܝ60xA3Dw $!bn%ZM0ekpe 8X\]mèeI]buS^SZd~.'4 X?QT,M7N +:H=Pf26 DR00#ưVQUukgIkFxfᣨ_)g|5z3nTbhaḭYiMS jcebh{j./C0sgؠmwCkKyt4)冤y;i_JR57v))sZ߉QAn#"~-2En)CLX7` qfXⵌ(DS8v.L¨ /kʮɌsX8ŲpF+f˻ ͖ᢱgђq5 +0~/SX.:Kh)e? `10(2y-eCʯ\dD(1FM}=(g\=C+zqsLTӰ*pfP(ڭ%IDsDˡ 'FkΈA L44 +]dǯiMe*dHbٙcA=sZҫq'+:0DBVAmN %STi8_`Q jh0M)8L2nDC(f +4J0 |4 '&>XkdX| Ͳ[ņ@44EҌtܠY㍗r^ z)j9f +ݳ6[ph +v &0?yL }ȗ +!͍`%tƒ1Puh궛Tť $:⁅~jVvaI#+q#0L6,Y~gchTN +2V*4P`K~]a"8(0lߕSJ5(:ˡ( $!a@)`39P Ce9?r 6c _"AiVl9 YXc_?u oһ;܆.SA2:–Dc+Ġzu).3P3ؚ${[Ѿ3nA pfɝq',mAձMl "rؚ$F3cDGI@l  bkn1L XYa2sֻCkn1RLTZZiR7$ sl % +0n-7HV*Vl' ZE;AĠDn}07vZ#"kf Ű;llAJakb uܰ51H$43_ b + yA ǰeb͈Eۂ /fEDtubkfͻ0s-3Hfa qIG+gSeU{ҖDìV 46eLd "8ab:֚D;-$f}V#fgX2ó "k^PUgD[,B/DC򂈡EYؚD{lXEVr^ּ iڭ-/HvZyA`Y`%ɘ='EY3/s1 [)M[`Ɩ$k Be}C{Jmٱ5/V ++Dʟɘ31cɗs8gb1jf^D +ư%B`-1F2_ blkb] 51-(@lM Yδ.LUiYW51 aؚd x/kV ]^s>/e4]^wm8 j8aS>/HF3ؖ[tmÄPR$ \m,BkZ 0 0xkZ1)m9)i-mؚD,/<' bZrؚDc2.5+f-+Hi~Uusl +Rr >y1,-)H9N$(3wZcbڭJ)mAfi2K .c$CτAwQixjRY3hτ6cRe1h"y?goV-̍[3VZ&[m AJM۰-HAlM"=P%Ѡaք b[PЖ4DZxrsKcĝNx!>.9m@q@e G(Lȳ.(nKڰ]21'v@:c1S m@miؚ ̍F+4p9FwK>3S0 +Y-m@4u<+@f[t vtځҋnM弥ځG{t Y;*;6)e0B\l ;E{Bѱ5Hg0 $coȶWKlIM$`k6fLnAeةʊ@*2tA0?Xj鶹ؚDYѡ $cgMLǓ-HƎ +j6d$d :J+g2mulMc.:&iXBr [2l놭@f)JrԁŲ%4J@2u Rak]M:+uzy(,Mx SO\;++Ǡ0dw`LtENa)"Jΰ~̽i? IfYگ +bnc^"qcŅ⌡ H!9Oyl\?WLi9y99\"Zu;@}L$nEWY9OmOn!+u T2:r=wMX}riqGs̗:y=un.ġkL&eg.-m L3^ON?t~x>^j?<{Ia g@&H}5ZhVh~y *wRJ} {qaqR\RQoɭ"@Vt[n .J[skvY?RF}=!e[tE~\ D~MkCuUK}R]~`~x.Y\+e]r_dCivuW.x.\+Oe^q_|WJm$t ?f[y}2^Q*Nʥ"T%[sE,;_?Wnrt.ܢ+Z]Q_MCv^ܗnr|ͮȯܮ+%]q_eWʵrۮ?k}]~(NP%[xE4;^K+SYvWntM//K4;]++SivWnt}BWnfo2 G?!ZnOjwCA^zl{~?PvOasTOcPv0o 9Gڮŋ[H_%fC"#E=/.n"s=<[(^'XD*&W)7ѾʥU]/'n}6q%"=TwƸUM/n}xqh_ZE"&WО*q!NVj 8 w =g?$AzN "~9!7SCR])ߏiОso='y?&~B{~}8K[hω܏ݷОR!=K y,~ 9#1Ks*cz-Ǽ[hߏ Ўpzv 91m@bDŽy#NzvLO,g+Bg 5%-"^d4iO⓳Q;+KxG"G"oP|/0I/DS{B^]5 +]#o6s J`T~^ײַԉ3 3⹉=20pB + W/9' + jƻm RK7`g9< U `o*loGf_?M̆o|t샯[Ƿ{ɛPlw$w D`ę:ia{@s u>(rbI+t0pyӁ=啓(OWN^"=<^9 xtoy%Ӂ畓H׃~N]!:۳]9w|oy%ま煓}W(OWN]<;p^9wV9ۓ^:wx`y%A{os{+؞;k9Dyt"nɽC'n:xrЉœ[Τ_<_zGBgBO:~?6acŁzjM: T~VWYX1+XmfVc5Ƀ+lXV9öʆArVVٰntIeRVVXٰ߉m c,,*+Yf,,(x៼+lXV6L?ullXLV"VYYX^ݺ׺lX:Ķʆ1-8V6,z=^ۮ07^c[iej :V6H'J+Zٱ2!| Z"[ieJb]ieT>ױaL@mGmٕV6L3ܱa :;UWT`PW6Lmŕ :bV\YXşmJ+lX̄QUƕV[YU;v cJgrl+,,3yZw ˳󮴲Apl+,,Pl m [z*ĭꮲaVJb[eea*6*+f]ee:UVu *+fe)QWVScۚc[ee(Xc[eeÖR}ؕV֧%V6l}ٕVٞLhJ+DVV{z]5gieJ+ SIVZ0*+ Eʆ17;VV05 *+Y@1)4=šuXOMr,lR[K+;Պc,YX0we+O +֏k*+;jˆխa,Zʎ-ZZٰY,UV6IJckee"[K+VTr\XJ+;kry75,ہmʆ%OUWv,ĉ`YZk+:,ﵕbfʆyWrRa<`jvl-l Z]ٰʿ%nՕ Ŏ2g&W6LiL[yeð\qfW6,j4V_ٱylPa2²akMsbkeTrFlaڇckefbbke B2VX6VCkeւfe²a*.r\0k5:VX6,j"ַ +ˆi 3JhlA=ol 1; Z`0|W0o8+, +:VX6paal/²a2llXPzaqlz"ZaYX$59VX6W6E6ױaZfe2[e`$)Pb²AG +ˆfl;]>²e-MllYЂ*,fv2ulX¯m o׉ 521"E 9=A +8+IKoxgQrX3< Xdda0J1H3PJꎭQ9A2 +"y8G md;Y@Ag7ٷ}2ð]5uUbߣ:'geۉqʛ5ƸϠd pUl)tg#1/YiۉjaZ̺#Sx@f"PS::dXQ %Ɇ ;605HhVab1 ~h_c4c(JM?1Nr4hx/tXX2xei ;V[5,q y9ʎU:%& =-܋c';]01pÿ@.fe%OaK;l_ٓ#vJ(5V0EcԚ"ĹX8_9@XX0y\7 w/&Adş )B t.T00{YP\7%}_+/mX=.aֈ1 +fǰLOWxph R0kMY"eCo!sbq/( :R+Z@ +fTw1LfTQű]:EÊ 2 c%`2t81Σca˅o*Krarcy~XN@ó|ou^_R5 \Ϡg:S&_wY|K\1 ziy٢A:-nIP3Xу$0@6# cXD.biAnǔAbcnXW3G)>Wե$k0ޒˎV+y*( &Ft/jCac}6` bSI`XE|. +Y˛5"EʭX +{\  ]fsv@ї Q !^Lj3|)Xc$.>؅>j" [a`1lFPECbC1,"'L~01#`Hh&qNWDccYa0Lz|]A#J|aw:QOO+_ RkD-Zvy?..Y1L=Th0A"M#_Fv&55C2G fAZFɢd{G}٘܄W{V4@  +6 6A7nc{) j'gKCGgݦ1  )ܱ٦1 :!gbձFN='yI(P5h̸9/\>3i`FBQ[ +*Vǒi{`єm€ Q/XN(WK n}@3_Tz5 jڢ>ªպ +=/1 +l1wغ?"l' +sTA[A0n|j2^"%gɭGǴ*8SuŁ;h0gա(+nr3 ˧fVI\i`x1hO0xۨS>=8v +U3W0Ǥ9)5lؙy[|b5EIp0ɡmbZ%ZcvZAp|ROM,a~͕Q_%+#,)+c/5ap0>7$05 [}㠛mȃ58kήO]7te_(a6ۛBv!60oj Wv9R󹊾>϶ C $s)krG~:<Θa_Wa `:Gz!V2> ֿ֞z gcUrM@ +AdXFTȚ +YAd`b2bVXA`+ "LGլĊnb=XAdۼ/K6 ح@61݉ (ŠyKI +, a'݊G "4xPRA`uF( "~ 4 +[Z`ZHg\8C;7R7|x@,R~W4֗՜5|7 "ՆR_U{0š+PaK[;<e9DAƶC;DBٗ>ND7L{۹G1o\0!fAz ʬ?. +BěayS㑈t#A7EĹhʳh}S~fDjhk dKMS h m?z\"N7ki^OI_Mt_W/1}#Fxy"UnU0"~|esԊ쫐zMq,]+q-9pqҮѪY=DS- #i|KH*- U{@ݧx⥇wwS3|g:ψl50E#Է/6=FY75rEBCFc嶡`$` +G 0wPNdž(GݻIL_$PAKpǔN%QTq8a\{-xL!<yʤU`Dw \cyéE PYAS*7Zk@Gd*evxAEߢ4Pc=@@R1!>ZO㶅%,?jڽǬ,3(vXr??#EFQ=&B`'$«"a藍tT1Z#skboUc&wӧź%$ږN!lwWHsq`E0uJI@i;؈ЀfZIP߽~,%բsê=b Gi&q6ED_ߣ&1*4]վJ/TprOT$w +ʊʊ3gvg<}wY8LO0DOl}Ϡ]R.+MB$ \bڷ%Kt(ᇡpfҴ㶵R`uq-_iIƶַi[Ö[ Үh)0qDؽ#x &kA0} +gD=&}ykZG C]pi#6~ra>A'HbӰ`W&UQ)߽H_zD(>Y>4T&'.W[0$? .66sk6IJ*&u=αCLTH"m>ڝB.) 0ة41z4uxi*u0Y`1`n< $ [&i-tu@hc~`zM q}l` gztX+Cҭ5 0 Cn8W`m_~TIJ*&L_ÉK%Lg'31({;foa65i:h~MV5>k +SM毞ic<~Gt|UD>w9۫Y{5._k-9Z% [>[gr8B,u'_7ǟTYj?SxBX7\^{bH}',R`\'炼T>YҊB2fb_L`v1h=UwiL况3/o<ӵs4({+"H4gA Y(`EZ'R<7JDcq)sOLSZ`c@?5"XRbyR.8~:dr>V!TAkzϸ(')@1<^K +yӻGk>hWv\]QXt\&b./05GT:i_%9kV@b_ +xV# ӂꪖǦd .ļyNzP`OQ,E(˟¶.HcXY{ H n8RQ1_rCkC)?cSB\6 P1whtGR+?~oy.'04c5uo5AJ@,"7.wAY e(O0Ũ.͌ fTy T*S)`QVCrvdB `0Ts~`_3Zl + +Gܟ +1`R1ڌ˲HlNK,k9zw 03cI 51q:8LQ5D3BהlF=a;o6/Rw8V$srgh*+q /5O5(05JifiL 2*S 1p%[v'TT}m .+Kπ AW6yzS;ή7<9|DFȸN3q'x ڂʳUR8o Lj{*w}'.#ʺ`=E3RGR*N tB1 h<>B"LznT' 9v o> :*RT@l/"] V[ɰH*ڈkG !"23aQ= D*(cRϐӳb; ϊ.5?E0=+JfzQs\ӱ}zY)|]GXEoniUQ h`+qFuhM7z Y:Vg v~+"J*Q: #CQqmp%:Dt >-aE#[[V L aEȟmvn"ҳ]r +h,Nq TH7Ahy`r!X5 #V´S !Xg`Ź/|]%Bq:"6xEG1Oׯ"d;|wUK"ݺ-xE/ι/ӯ"v' uaa;:I{w]~kWZrrdU%{kW-fv`Iptc]>)7,"׮"n]E [+W^XŰVu n![~LudnZ ωU`'ҵ&t ܨp,jՒIፒfV-+$!?o=/V\ì"\H_cӬZKgvZۼ\ښhfhiV-nŊ3^.׬Z:@_f !fctkVbs{`8FUNsxͪUu&ʲYEx&f/׬ZޓnЪ~f acXEdlznUcOLM*zb^awO%ITA'XL1Z߃o'2*%Lc/?gתC&|CX 0xoo?<ɋFl41e6_( endstream endobj 588 0 obj -113544 +90457 endobj 589 0 obj [587 0 R] @@ -5512,64 +5463,64 @@ xref 0000031564 00000 n 0000031619 00000 n 0000031674 00000 n -0000145296 00000 n -0000145320 00000 n -0000145347 00000 n -0000162471 00000 n -0000162332 00000 n -0000145545 00000 n -0000145800 00000 n -0000150756 00000 n -0000150734 00000 n -0000150854 00000 n -0000150874 00000 n -0000151363 00000 n -0000151033 00000 n -0000151797 00000 n -0000151818 00000 n -0000152074 00000 n -0000153717 00000 n -0000153695 00000 n -0000153807 00000 n -0000153827 00000 n -0000154218 00000 n -0000153987 00000 n -0000154531 00000 n -0000154552 00000 n -0000154804 00000 n -0000156216 00000 n -0000156194 00000 n -0000156303 00000 n -0000156322 00000 n -0000156713 00000 n -0000156482 00000 n -0000157025 00000 n -0000157046 00000 n -0000157298 00000 n -0000158870 00000 n -0000158848 00000 n -0000158961 00000 n -0000158981 00000 n -0000159372 00000 n -0000159141 00000 n -0000159684 00000 n -0000159705 00000 n -0000159961 00000 n -0000161497 00000 n -0000161475 00000 n -0000161588 00000 n -0000161608 00000 n -0000161999 00000 n -0000161768 00000 n -0000162311 00000 n -0000162394 00000 n +0000122209 00000 n +0000122232 00000 n +0000122259 00000 n +0000139383 00000 n +0000139244 00000 n +0000122457 00000 n +0000122712 00000 n +0000127668 00000 n +0000127646 00000 n +0000127766 00000 n +0000127786 00000 n +0000128275 00000 n +0000127945 00000 n +0000128709 00000 n +0000128730 00000 n +0000128986 00000 n +0000130629 00000 n +0000130607 00000 n +0000130719 00000 n +0000130739 00000 n +0000131130 00000 n +0000130899 00000 n +0000131443 00000 n +0000131464 00000 n +0000131716 00000 n +0000133128 00000 n +0000133106 00000 n +0000133215 00000 n +0000133234 00000 n +0000133625 00000 n +0000133394 00000 n +0000133937 00000 n +0000133958 00000 n +0000134210 00000 n +0000135782 00000 n +0000135760 00000 n +0000135873 00000 n +0000135893 00000 n +0000136284 00000 n +0000136053 00000 n +0000136596 00000 n +0000136617 00000 n +0000136873 00000 n +0000138409 00000 n +0000138387 00000 n +0000138500 00000 n +0000138520 00000 n +0000138911 00000 n +0000138680 00000 n +0000139223 00000 n +0000139306 00000 n trailer << /Root 638 0 R /Info 1 0 R - /ID [<4DCD09444DF4276AF17FC2E3862728E5> <4DCD09444DF4276AF17FC2E3862728E5>] + /ID [ ] /Size 639 >> startxref -172378 +149290 %%EOF diff --git a/figs/detail_control_coupled_plant_bode.png b/figs/detail_control_coupled_plant_bode.png index 1ca87f2..21df2b0 100644 Binary files a/figs/detail_control_coupled_plant_bode.png and b/figs/detail_control_coupled_plant_bode.png differ diff --git a/figs/detail_control_decoupling_control_jacobian.pdf b/figs/detail_control_decoupling_control_jacobian.pdf new file mode 100644 index 0000000..8736e95 Binary files /dev/null and b/figs/detail_control_decoupling_control_jacobian.pdf differ diff --git a/figs/detail_control_decoupling_control_jacobian.png b/figs/detail_control_decoupling_control_jacobian.png new file mode 100644 index 0000000..9136d1c Binary files /dev/null and b/figs/detail_control_decoupling_control_jacobian.png differ diff --git a/figs/detail_control_decoupling_control_jacobian.svg b/figs/detail_control_decoupling_control_jacobian.svg new file mode 100644 index 0000000..4d68174 --- /dev/null +++ b/figs/detail_control_decoupling_control_jacobian.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/detail_control_decoupling_control_jacobian_CoK.pdf b/figs/detail_control_decoupling_control_jacobian_CoK.pdf new file mode 100644 index 0000000..9f65a60 Binary files /dev/null and b/figs/detail_control_decoupling_control_jacobian_CoK.pdf differ diff --git a/figs/detail_control_decoupling_control_jacobian_CoK.png b/figs/detail_control_decoupling_control_jacobian_CoK.png new file mode 100644 index 0000000..44b63fe Binary files /dev/null and b/figs/detail_control_decoupling_control_jacobian_CoK.png differ diff --git a/figs/detail_control_decoupling_control_jacobian_CoK.svg b/figs/detail_control_decoupling_control_jacobian_CoK.svg new file mode 100644 index 0000000..3e32c96 --- /dev/null +++ b/figs/detail_control_decoupling_control_jacobian_CoK.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/detail_control_decoupling_svd.pdf b/figs/detail_control_decoupling_control_jacobian_CoM.pdf similarity index 51% rename from figs/detail_control_decoupling_svd.pdf rename to figs/detail_control_decoupling_control_jacobian_CoM.pdf index 7ca6987..da6fc03 100644 Binary files a/figs/detail_control_decoupling_svd.pdf and b/figs/detail_control_decoupling_control_jacobian_CoM.pdf differ diff --git a/figs/detail_control_decoupling_control_jacobian_CoM.png b/figs/detail_control_decoupling_control_jacobian_CoM.png new file mode 100644 index 0000000..6109571 Binary files /dev/null and b/figs/detail_control_decoupling_control_jacobian_CoM.png differ diff --git a/figs/detail_control_decoupling_control_jacobian_CoM.svg b/figs/detail_control_decoupling_control_jacobian_CoM.svg new file mode 100644 index 0000000..aa2f1d3 --- /dev/null +++ b/figs/detail_control_decoupling_control_jacobian_CoM.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/detail_control_decoupling_control_struts.pdf b/figs/detail_control_decoupling_control_struts.pdf new file mode 100644 index 0000000..afe1f6a Binary files /dev/null and b/figs/detail_control_decoupling_control_struts.pdf differ diff --git a/figs/detail_control_decoupling_control_struts.png b/figs/detail_control_decoupling_control_struts.png new file mode 100644 index 0000000..1ad9723 Binary files /dev/null and b/figs/detail_control_decoupling_control_struts.png differ diff --git a/figs/detail_control_decoupling_control_struts.svg b/figs/detail_control_decoupling_control_struts.svg new file mode 100644 index 0000000..167dc15 --- /dev/null +++ b/figs/detail_control_decoupling_control_struts.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/detail_control_decoupling_modal.pdf b/figs/detail_control_decoupling_modal.pdf index 96da22e..c6e7ac4 100644 Binary files a/figs/detail_control_decoupling_modal.pdf and b/figs/detail_control_decoupling_modal.pdf differ diff --git a/figs/detail_control_jacobian_plant_CoK.pdf b/figs/detail_control_jacobian_plant_CoK.pdf index 7532ad0..23ae96d 100644 Binary files a/figs/detail_control_jacobian_plant_CoK.pdf and b/figs/detail_control_jacobian_plant_CoK.pdf differ diff --git a/figs/detail_control_jacobian_plant_CoK.png b/figs/detail_control_jacobian_plant_CoK.png index 442a42d..2781e34 100644 Binary files a/figs/detail_control_jacobian_plant_CoK.png and b/figs/detail_control_jacobian_plant_CoK.png differ diff --git a/figs/detail_control_jacobian_plant_CoM.pdf b/figs/detail_control_jacobian_plant_CoM.pdf index a82f039..2eab1a6 100644 --- a/figs/detail_control_jacobian_plant_CoM.pdf +++ b/figs/detail_control_jacobian_plant_CoM.pdf @@ -3,7 +3,7 @@ 1 0 obj << /Producer (Apache FOP Version 2.4.0-SNAPSHOT: PDFDocumentGraphics2D) -/CreationDate (D:20250404210530+02'00') +/CreationDate (D:20250405113120+02'00') >> endobj 2 0 obj @@ -577,145 +577,138 @@ endobj >> endobj 97 0 obj -<< /Length 98 0 R /Filter /FlateDecode >> -stream -xĽϮ?OQ/D6` _pˁki3~cRU>U{kl(c-ֺ?T|']l|}-IY{km=rkc-ӗUoO!.IX޶{O?n}nlmIbD%?6(R:r(Kb{}E/^[:~~;ȯu?G1^zgQ4MnVzb(G^\?_d(HG+U?G1^zg]AK b(ˣЃuٵsNź>}u?zc0^Ы?1^zkϲ{jX.5gٖ^Tϵ1]zk ВwzG9[x]syxa.BK]KM/5e^}8?ta.Dݷ}?9[x]֔Yc)˧Koi]Kњ\ӥݷc[QO]c0^WJ5=?xa.EmsIRc6Ko u)z,jA>L[8hn0cX/cXNٻX_|䖥k?OD}qHRrjӥq8!we]ҽԴ:.n -.vMvWkK=xq.=cWu~c8^1.%Y<1\z}KXle=xq!=t?XJNq ^ZDZK\+Βrc8^W3c%cx]όq{NG)x]8q_28K=ym}k&1N7Jo~/>7i5xږw/>7iZuDpq)Oۺl</>7Zt{~xSRJ^.>i]S+KNx8ޓ$c4MJt_˹JK=i*XG&I.םIӴW$љ1^z}I$SnGK!ŦK=iEGINڥ1xO2f9Ne8ޓi._K=yjXc6^Û4{G:1\y}oJR\|wyصӥ$]NյX9xSX=rԺ7%y8K=I(-ӥ$]kZMxq'I %8ej;1^z}Iucy~xO o,)?K=y|/m_\e8ޓkYuȨ_vz{t}p!7]z}5$“tq'Oׄ3T~xS&n5]ׇ/>7D*c(ޔKcu^ǛTG^%8X4]xO}G$m$ˆ=bz{rxOV\p[m~ޓ{y +=)ݢd>VxQ'= >@sÕG̲}_J9xQ';s粥m=m(ޓ9Jq<>7M"Su(ތ5=#or3Sgo_^~S/kkG{9ϏWM=?voDzY| j?!O?dx7EGb0_jH7Z~~QF0_J~~Q FBϏW5`a( #Eo/~~QFK#Uo/>?_7ea) #E9GJ0qm{nzZɟ@/:᧟q5?K1_s\M?җj~׎W3Ͽ ?ǟiq5>KǏ_[}\ ?j}WϿt|}Dǟi r5>k琫_Z\ͼ?+j}&!WϿtx~-ռx߷ä?7=nʳ%w{ǣ$cNEaFh?t/rJ?JEz egp]tִ>2<'0UFAY|,',n}SG=dmM)많y?o]z֖IѶ#˟<]G#zסޢ=(^{_ּj}D{C`|jڽ'v)'E6F-O$O_'Ȅ:X6?ҿ[P3OXf-O8e~s>9g{]R-۶8^=>ȳ~aq@ #Ux~^xm=sͧN?{*4ߘSOMh>>6z~W$ͥ8+#4wF~ǗF0uGvǗbsCiwv|is+yot|e&ƍ.-߻\5N#xkK#4#x_+#4hF~ƗF0fGvWFMowg|iS;ye|s#yowdGq4Gt|e.-\=N#xK#<#xK#<#x+#vF~ǗF07uGvwWF0sn_W>7rvGǗ?pv/WFpi8./`n8/y憍V&HA8S+#F~WFpi -9/`n9r!_r۽ _q] _4?4<;?2Ki||isyow{|es{ioy|Ǝ斎fJrn8>~<n8=N@v|~4r|#_x]FKw|so|%;7ºow|s[o|sCow|)=|y~>j}Vu4S咵0?Y ?SN#|>eZrdz~ Y ?PO#x|:k>EeZfrdz~ Y ?PK^F鬅|*K4g-@h9Y ?PY#x$|:kyZ2Og-@Yy~ Gh*/#t>5eZNJ9Y ?QxD|:k;eZN>9=Y i':k󧬅ZNr9=Y -=N﯆?i[ -TXI߷q.NmvO|?|?}'ן>Ͼػ{kb$tiE_O_O//SOK76 sRZ2'Ӟ[vͤuBs'<>)"c1;=ONX$x~xm-zOzl?=NSWC qoyޫkM#JZaZJmGSK؎~_LѲ7vq>0*8ӫ7˾`PI~_YeK]]5,)gZ 4}Y_?lGu)a mKm%{>Fd-oז5uLgԱ'Md[j1XmZFK)g/m/Zz-ÞVͥyƲdi_;_9 >eI%i:rsYXQkNU/S4ۚV|؁W%~돐{)t߇}ݕ3$ߧG"3ǩQ% 5+ߧ\3 VoZJޗ&+oXb_\֢i5iZZij{mmR$"-%,[[`b 5:%)kE"NXO3h޿ZӺl˦UU뮯K/2NQR-ށZW}¨[l]֝V#$u$W%h{gl$HTԯEGJj{-q RBԾߧ)Wo> ->NJtq0325%ek&q%%a $ &q%h[NMwtLgq_AYc Le)X<k+m4+u;rJB[c(rĬH_I UsZKO;J Ճ$XR.RJ\UJM_\tHʌ}$o;$WVI$t{c?YtlzH|l->Dߧ\G8$PIƘU-ڌ)ۛa$HU"BҔ:$XVtcVzF H/B<&lLJL=خ@$ZjFS\R Dʥ$K,_ZK|&Y%1K>RXH8aI->vBTs4_KsimfCT6ŽťRiLǘEgo?X|MJrqB -Vk-T,>{qQCkSm x K^$vQ;VNk ꂾo0:~602Ӥy/['{۴ (uy_M_{IT'uu: uIoPc}f8M)#,"}SE>}j.MJiX[N}Q-Ux;X/.J>ְc$fOJv`M/{t~qZ18BFiҡ/J &X?Њ6|`(pͺ9t=a>qd&Y-.|خi8Y$3ȘjZBW7&M^L^d)'%}ZY<# X1ֱ`ۤl[IjO\VI'X`Z܇Kq♭37ƮZcXS01қ>/8<$oml_ ~S*uL[_Wڞ߈J=)¶ii ^3=KJ$ә;&5$FedcjvɊ9Lq 1dl*ϋ@k]71Vcճk@XdK<ԚkqY 0 Df8 8,)R( &-x98wɊXcpmIi͖pXj~{ F۶h -,] 2/-C:nDFVnn29٤]`Gw-CK$ ]ndKjXҿ(?ąN-*ZV&I!F! r3I_5{^25:-:W^0 %J0iGܧD!@AGָOqq [Xf1$̨"iRI2Ɣ !}OgB L{&lCF5&%`DzMc;خyיqJl[[ǤW>K`w+2g\ &5)": Rs-9PeqHr='𢭄nH <!j.kh:cƶ)h3$I ֧ Ʋ $㼐MdcyùcKh  --I9z[ܔRCfJ~c6}hْzZb$G܇uͧ`^:t{2 i?@ -aA-\F%mk>}"Ho86O.; -ga<[M r@Nl#wlݞg/&5k8{Hܺc!=3%ʅ M⾺๊ lf#"I(~5~|[X8a[9R#LҾo#´=rBUZӱyV!4hq`fC>%>a4-nmW=:CX,pMW9K) <;VQem%҉~dgYx4bv$6<.cD74 =)"1cD7Rs?R,эoYmj#v^ꘙI{^  D2zh8%kFz^&=}! 膃 X ݈nl>d_э =tjfI${#јdLcFF}iKZtc'>y93FtCZ>^:FxC R$_aHX1㾌R}Utҵ}PYgOh/HucZU<"ե'ɐ;=ݟV{~p?ȶӶg} }`bPI!m|]!*:ýg5nKd6%IxCaRЕI`7tYOj9*ۍ$a2Y+Y0빿vmtf;v#5q4<Ag%Z ^8d`I)h.r\3oDk9f;ohjQй7ް?OS eXէԼ7cD+.ʵ Af_`7ckE BLzu6O˂^PS8Kím/l3cF+&MzB\IH[cc^2f`i65ģ55>e} ]h&´O1Fx{ /`d~tnHƴ`Kѵ FpNak6;k%*v(,aF{ܐUn0:GٰõdWe1i+ IK3y͡+S>1cb: {Cn ɂ@;@a}nIq>ovGTreA=EI|2FpC2@\5QCˋS7FoаmM;rlQC@:/_#Jp|qǶy7 !$YD$g!mzhZ4R#!a* /`cD7t#.v}a%C?Xc$ܼRPu:؎UnHy[0v8Yr+cR2 4 7!2 =M'@Dt{hB2:Јnl*7w>kS .VrL*Ϋ:xwt ~)C}wAe'2/hjҸK4Paz 'q\40Y?:Ld3z -i8:>T\m4ӓ/e%OB-0C&nǻF x%DK$hX獑%St"(-Fjo88WeuH#frwҍsIjB5yk u;s[9cz3jĩ J4Rw JZ}D5LrH ^{3ُ˱u -vdVvE;lfoC_{Snɤiw5BD>%t~8Pah?y|N@j48p }vxH7 Iq,Hlj/پ7R -^XB"WhnyѹP.T -eI+J n uIdZy8[i[I 08h>7tCEr 0qL: -פ0$w١ lZU9%!-.+ / %L"~zL @f FŸ݃#)&f7mGQHko=^yіߜ׀\gzt>=$r t':ַӢzV}FDCsi< ȅVY`d=9D.LhSTVYۡb#D47-~kMjMrJV&joHwU N%5^(hIΙ"ô,vLKc OjFENAЂTAoh4,&8n$H[wVz8I WBvQql,o<#K.2dtk j23DvxHNSxAd -[cG4 Qkg޵6µai,`/vG#}x\~u g$'2x֐]3`( -L_LURܘCϻ1|5Eb ޞF -S7L{%лC DI] 1`_; j%P/>]kIO6[.$1)jT$7+"(slhN櫹$!~T% -$c( ; ءc7:p;V´W -oOnd+~Z^ϑ2c}T=ӠN>^I5-#A Da>04"% U!r :%#yVZLuAqV/^mcD2t*IțZQK;:pjEl9"&Ex\τ7=)y= -p =!{R -5:Bq,_o⢑$k@FCwO6]K݈b8v*#FቌIG*0m2!k@Fհ=)8|*=/=D3 ұ>iV#[13ߌ" PQW CFQE^dsJ y٘>3tgcWoݭ(m9v`1Ta%A7;hsĔOZq*:FUX&U@FxaiE>cϝ[Rd4;;&FV kq$GƮ)>IBW:ֈ3VJ~P{{st aƩ m1}$D1*}6-HC--a4w[m -O}vҺJ]Qث{Xߧ#>DN[4/'vP|zV0xq@5#q8b&g 3gC6< wc&2kܦp&Df IJ7w -o%"k鑣*֔.6'9;ƈb46M -z7GAMVLv:Ĵa4'[ܶg\YbMq5rG$~ب YHzXG< [#֘4^NrzQiwQíiQ=VFԎ I11sn+skTdɌ|jCz!r7lK9 '=5Ǝ>S[c=rZ2qb W2r -a=ܵ$G.txF?QuGͶta'm;:o^V G#Ke&JdFX!8y}^7v3ٳ\ѕ8c!!MyZ}=GLCFz G$j@%Ƥ _XTfǂV4e)l rGV)}Dڱ)G+}OߩLtR_r~H ݓQR5AwXF(2nܶE QךiYvH@CզXy%vuzJ0cVC߉n}T]N쀉>O8Ime"]s|C@/Ld}G:&k[ŁrU0쭍9ɍQ>}IvIŭ>z pFSIl4Z鄑2& c=v>d?bT\#8r1 )|l#-MDm YwdTWC"#Da-&ƈi|ѱ ֜ۇBLCsVy)%S7j -&ꆊXN/+#rܧA]q - q3,^gVhr |DS"̹ I&b-؍غLzUyX)JN]>ٝZe!0@*宐bLӮa1J5 -8zsa#a=qwCȑWvNʉH*'l~c3 Z/65"⟉dtpVj>:lhJ%9IԊl|E`3r LAb΋'wN̝>w`2! e%,bqA6%Ps,ݡ#Vu> /h.mlzc$iH'eߘ^6bqNharB | -KLS5$.5]>VeJ`-T0ɦìn v @1 JI=P}m==e}:k 7PgЎ{}h|wPp9ּ}Kt&\D4lV5J$ߟGAHi^X<%Z$#bQ.8W/2Y -\b륉?r>iH,w2u^>nt .I -ŶOD? Y=ްBv!Q*dN߰y$.OBS#(G\~V"a ֎Te$$z& 5.LqTogt),UUc.Q =*<  a?#qMXm].ΑLJ!Bb[f,e0[Q'i Ӛ|K&w>i⩥G$=;56H5-BN&/q=-JNXJ$pq2HK7^ONGE+"պ}`6zѯu%ڧQТHf*Z[]C% A|U`55sM\^\}'E3I=!7 DbC[tm-2sR#X7s͑8huQ3ܬebP󇠿#aYTi2u ,oa%0` jS2AI_ɘd6cc:\l}kR3F`hpZ ct.}L&v[iIFEΥDxO64YFY;; K>ҍ*:RS*Һ}hCD$"E8.H -YD)<2"a}u~d~%b)ѻoփQYXfI%mqk;`\qV]R%!kىb(laMB2 Ԃ[w#AG2{o!\X[qS)4$7}eF˜qBX@IcC UuWT i}T Aד5'w%voT հ<|jܶp\%md( ҜEZ:F9BFY)K;Nx -f1+xݹdRs`x@,G7^O;c;LLʄѶ:5=G ؂wm7ld;g)am7<>wNabe\],6feroXD0dYDpC>dZ 6GThJjF {q<]x+"6ZiGS4 IXRm8}Z)FBl>!#5N^] G h̓|0yht\4sD))ѢGe:] O] Rsv;T$jأe鍐͕1DĢL_QkEC nlRa>KLڃ}yEw,#/HZ\sn=/qKNK8/IIS0.]ĉK@?%xoO mhFY04MK"xzF%;F:fݪ`/NTdn -y@6.Zt.P%uD&f)U}D+ #!œc">up4Q!R[G 7jYhT];SjBvdKr -Xd! آɗ՝6jYd;O)7"Mr5|(f۟|H'BQj"ivl1M:m)Y!E B9o -m#G ß/D(GK`@$;9|$'mNV3(YI4.0FXc(.аidI[i3 a.x.f(BJLr2u44\\T<>(Y'pa evWAg_1HqAN_n璕!^A%]HcC1V{/"g`%+8k|ms+.tDmsg]D5FUVZtb{x`4tQA3ݩxm4$oXhxЋƎ!:ft($zU pbo+'"pDKu,;WDOJnG5))z66AFG/M#"UT}+v3Iy 3=l$Qc/` -jpmP%*x#Q (:9zW^N(ZUh -̤\=f%y-nƨ}`Plr"n DT#nD Y8YW<]5rQKQE:,-˰DΥ/G΍9ir.~$rny}vJ".vgp3?o j` -`vh 2,03-c00zSK3-{>'D-a,R(oWj 0Zove0$ -#n%eQnWf c4V1PK2u%.]% {X;G-al#G!^aKVzG<%Mwn H-a,ed#1zu| G/Z% -Wj PȎW%-W:/[TQ+Ğ`Y˜5`%sD-aN^,{(f[)]%&8i Fn 0DFݶ}p)ktJZ~0lݮ` !D-ыwL$k4%z J-aL b5QKe]%e31:F [LDeg`'n c޼3X;-a0ځO`K9-alD/ݮBN-Qz+ir{N<%:sK0?%Ϸwҕ[aş%\{vVI%;!roWn c˺v[[-Q=ϡZ("ߩ%hλZ=!+X!!ĉZ":&%+`t9(-Q\Lj7rK>:-QlqĕZizC{س6WGFb |4@%+P,Q\zEW,A (N'`:NY 1;H-FOq ;Q?sK( fn '(:!;[r<ƼL`=a˴dn[ޮ`H&%0Gn f6sKTw=-Q"~%'3]OH`f%JCDq^%$ݜva8vh3)*ed(eK3v!pcXB?K߷ DKc ]h.sQ2K=j&b B'h:KQ@:'b z[uIy%KB5Rf^ 0ɽ+rؓWq"r"(N[s+tׅW©FN+A,+&%v JW8-Z}O`i=g^ni%ϩcOZ 0[,Vh#;JRyJwK#DOꝊ'R Q3JDO?L*aI%;[d mѳ3uI)ڏgRlDϔ`ГQ"Ȝ6cld#= %\^l %SX`$͇%6J a$(޻k %RׅPBGzfB p(8GB *wh{UI$+= %e\3DqkD; %T6І獄^P3Jٹ|3ęPL{>ΑQ><((y(Aє|p&cz2JЗvwq%s{s$D Ns0I 5J` Һ9j&> th`6IocO> ܓ~f> yc#SLt(EoQ•3T%y(A)]u{2Jua(L{*ﮉQ |ŽhA4JqPl5aڱ'9X?n$Z(FpόFeZ֦%8'F wMgx2JPrΌ86H #DqijM`+XIqR(ZbΌdA=QC3DqyO-2&B =g[ Kq5 %ܗs!E; K54J8nK=`"( %2uocB \wK΄ىy #-gqu>P8+'@ &>sI>u9G%"| -o:1%AЍJž'D%m7QIu=c.g*} MLvr7t$A{g?ΙI=e"=3Il&& {2IѮХ&& B-,g& \!61I6}F& R -D$!س$C5Q< #)-4SI_* Jn< }b ^RC$y>N%k'16RIg}[fYE#| ⃖A'& F& 2Rk -`摠J3FىG­w" Za$ Ivx?xIbs?){b KIed1{2I} I0uҋL.gX:YL$'" { 8HЕ0r#OIu' Lv'VF=3mwzG܉Fc`upз{H@Nנi$91,#A>V}[3֨$ V.3A3=IBPs?'M@яx" u -^`$Gq3}L܏"H.>Yf*ՅTc=$hju⊑J+u 'ׅJ‹IupkX܏'*v4PI $I1RI,h&uXP%vl􌞸$R;tRIqb֕B$ӥq{ bZd ^Z8]z݈ ' KyHG Z` H&Wl$kp=$<T$&~ph֛̦C qDa"A]]hf%yD"AkԽzH=jD"A'kD^Iy9dL$.DMI$!zt38$(:=g m%l3el}#tvB@OOL!AןDF;e:D!A"}7Z|Blҩ'F 4=~ -I߱'N;$w싁BLC*}c*' rӓ& oK,u H An $f3sd_ׅAm d>s_ }gt  NF5GPC/#snA`#e Mׅ=;C"?F[W2b#ve$c#{niu3{vB#Li3{ 1G w#(#-==|0G e3{ zv(Hwׅ="V;3O ]%gjmh<'{Djj=-ya$paaយ#e[י;ErwD-co掀v c#wD52Ʉ$:GQ*Oʑs#GX:HAJ x'Q#HI#UGLq"rǍIO4FE *L%N $iJjE? {Y$%26"Ep0Nu#VI#Gܜ:kJ)nzGb4Gՠ{<߆\@{X9s_#{Dd:՞7Gy1h;GEȺ;G;ƭf$c)I:G!%߉'gOHNd ysy2=s:ă=U֎<#ȫڨC &ٵN1GT XQy=HL?>HWkL`.{ Y e͝a -~ $L8#W $8Cz?|F 3PIwS(#Q¿ //^o +4P{r&e?9Hpb&-/>H&B_jĞ `ld,%։& o01H~NQ} |]($ML)$|sǞ4fHRf - DG>L!>VcO - *hfl0_8BO~]($#Mi"F -Fy;^gL!aω9$ד;aD"I*=O'O0vI"Aoah$ -)"A߯B!f.-Emh -F 8JEzBIL#A_y^<^nl 3r>gj*Y3IM`i$.y P/њkpW66H@ji4xvZi$`aE -L#Awqz"&ĺ[D#AFb(_ml̉EH||gXAua_ M,++'sN#jv[_իJDs1H$PI2$kl.Dh>DGf"3!;$ֻ]$ )~m{2I$wk-L\[LO2IId)$v$AFʍuHDJ"XlI9SI$QVW7G* nF2.w2 þLl6I$'28lyGM"Ec[N'DԀv2ޙL"t% VLНܾI&EׅMQ)NlxyPM#A:Ily 35>IУJKE{UujMzٸA0I;'UN{`h`p-hW;IВO/3 {duI'ATmD'Ade4t 3d&a^ua7IЇޚ=$]w6 (d,eb:l4=$J@c,Mi0 -l.,D'w65&ѩJf: $ON'GUL'RB'=F=wB3K㾁NSk̄pp('F ;|]%(&igF ,<612JPhLBq̌&/ g3C(mN%X;ODp٩o&B`4;X@)-Oa#汋Dth\{VL(뮳]%ȻlU %H&W$p ladwggF R]PAL %a#@%p[PئxJ+d V -P}f;؅Qa#(ޟBM_ÁyX9pOn K G%!rB(ኗ8JzJPY3J;Og)ׅPu;&F ?Hz4i%\x{E|](%Ud&G͌khJ>1JwN(q?;JKV{J:a]%ȳ'3vө0J/lm_dhQX3N1 \.#39RIJ9Ic#yu -u%8al pQ+e⒀$|v?$7lwG$LBrГKbQ"o%`!'.X%AFQ0?sI}| !x-F2 :H3ճ&Aמ&&`?ׅMBr[Plhud0?IPn'ЙO:`$Yx|nIlV'Aq'A:SԿ.|◺wOT˳ׅOb]<ʈtXN'ׅ֗NET_:uucL'A‚Ü$HfN(Fܓ!FB 9zdKτh-.3E:il$@NT#ĜMD 9J{{+Loֱ00J տ.>!FFդ%e,OSPwZ>~ ӡKp0/.7'N Rd ~ `VדhXWK'J Bi[x txrrbN (ZtJQteld?JPz@gD+y c#uR46J >fBϴ4M'Z robrەV˺D-fZ r HBV@!!`ޜi%ȁHd(~g <'GV wv¢U"LaϬtxU< 竽*eoE*A.GgBX%Oz|g7s9 P~" (m䔀4` )aVnWN3Dr?vo[2QJ;|H[g% pbͱ|~{<$FD ])%0#5_g"N7]I% >txgR zGTb < rnWR riu, q͜#tW;'Ć.A 8%|&)%o*n##k7n3&R 0)R }zY=a5B*A 6:TӑTGZ/A3CWH*Ct̼pJ#8%\=*H&R sIqnA&CɬTa6ԧ 3B8G9JXe>,X4v7.h$B  Z+BmO4pk`2~1 @]9| ٕ@6_R:Et'x5Z,MrV6*s{ Qc[bG`FQ%%|F0A҂ mrc1{NH_x,a 2| Kglx}s` "΅ݖQ)YtKX׏; ~)#Ax'm\}id:1{JIq&u,}^qnGI'$Iީ9AӦMG` ,mݲtO -ڮDrQ -οẹz_ z-دZykѮb]R`}vlQT Ia4"1dKһ{ҥޓ;"y{e`ŬafJ%/wF 5D ƜwUӜ>۟9zCb*KSdd"{%;4gy.C\ [Hى\nl/u˴n5VIwGcHR"n X۝(NB31>(5|uq|`hOH7nHG^#Kl; 3|/0XfL5`c4vgކA munnvu6NY8cݗ:+oF 4GA1g:_,ᵢ#{/QHD +kY`C\.e˩Se[{`eb- zIM`-ؙ3іulB[1Jq0ҖQv-Xem-Ѓ`g-3'b(mYd.'كcg,0Qa-X/e;'ڲv-u[ֱ_x{oYIoYRNeq[1?6uJv- ,G oYǶxZTuLb'Q:m['Ce cZ32N둹cT60v{hd. 6u(,0zG -:ED\!@\ֱ%&޲z[za|,5r.eKlc- Gh-3v[12$l- 62#qY`ԗĂ0uL wY`u.,0Qvpk6pul , S0^0R&߉,#Ʌ,ۅ,0;=@]ֱۅ,r&x uY`^p e%7s. 36P2PƟr]m".2Yμ6FX#sY`ɘ,l51[O~, *72c:Rv. Rn3uY@J䉻,0Y)x. JvҚ=Ke. h!8ps-PjwY@J{ e.0'검6G=J~2 ej޶=ˌZ}]X=&07r|e7"H0`"/3FbNeGyY`fm ʰ,0;8GhN{1̝ad/ ꯙ,B˙A_f-62c4_؎*DdY`!&J`[؃G@n>&3zb0 @ =rbY`8A22 Yc fI W`p fP`fگ,%F -T'Kك,0vco`03 ?bfE,0HCfƈP;Efz@`F3cD!>,0)<%z$0 66ANf\ fiZ fqP -g=`X>Nf?0 ?r]Z fѨ aflyPgLfx3#Y`305sVDY` a03FO%Fzaړ*' -3C50cY`m;0 l{߉̘oqaFڱGn1HH9+@06pƢi0 L'[#F3cX:ۃ,\NF6r.X -3#$t:,0e8fVX~#Y`*Ra`Ho53IJ :RTF -3cDa'Hafj  -0ttAaflwaza8'k0 ,m=o03`B9[#5q:둾f q 13@bfliVs3c2Jh[81Z؃U*x^v1nyvf]ygسcfj4Mx[#,ۑІ #^vcxӉT1ί9!cf$zcfRz$23t]KZc"23v[#53"<:MLf\,{0[%df cd2wA=̌҂td23Vi/߉&3c;]bC[sJpLfʣvb23w̌i-Qt21#jW3ӊal`23F+ ̀ K/jd23̌3 ƉX'MHdfJh`5s(F"3c0D`b23FG4̌>GF.30vB*3C;Q#STfp1R#1MTfHH DefLvlVTN6P0P+v{pQ)cl23l?g9 <#=ܛ̌85*q'`33.i{7#?a7Ӗ=T lfzlf| lfr^̌d -ffl;67Hj@#63cB=lfdokf33vVlf`V/\v"33V\̌ U#Yҥn|3ǧdffI=љ{6s յf -zofɵ=I 7V<i mf^3cZ=͌LA821MYt63{!Fn3c>Fr30d&z3c'eDyw}Gv3 -r`1JVXNv3Ct<"nd7sk Z MfR426Л9)Βke3Qixrg\Qg`Bȏ(Όs2P9C7)Ό5=2ƾf3c4"Ct8#SdX8Όjl8suy0EK#6f30F!'ř!N;oHq'-5)Ό8R[سx8Wl`83eUɑ sggS&3D#MgxEYqK-&3WF8Ό.u؃:3) ǙD0"Б15rbg@{$l83\ .vd83Aߐo#YEad8çtcd8c kF30Uthb83?X gBnx:kpF2h(pFaQ=Ό$pf7Z3030 0 gTPvʱٕ^I3<7`ɿb˰xfgpkYݻHGjW'$Q#2T"Qk{GrΨI8+q&±P -5FV"8eBi}c8F+q~Q3jkJ;ʥgVQגp&OM=dJp Qhyf^:;75議7 -Dė<ȼށUdތ>C2o&-Xn_5 oFF&O`f݌~:9-tfXtksI7"<s#ڭ7|no&io^j?oF&fxoFO?ŏQN*fhcB.ߌR::Q}3!yϟ5Q#dQ[cs}nLFP)l-m9}3uR1C QgxJY̚6?-ffCfo5H7Iu77coƆ}o&im戲<|3mCym2nƞf#f{vn:2wV܌-?/EHRp3^t3^QYٰ̺4X͚2Wy33}ʛ <+nƯQxhMk 97c‹EKc6܏m?%LqY8rVL=*m3 VYl3ds¯̶WND-)2%ی+`Lym] H66*]Ԟ~x6ڿ# -m&ZuQ?J͸`?!fܝh3 !Yf Y -Dp9߂g˴+՗t]i3t#fDxf}(4Gf<MwWDi!UڌMu]r[x`˴Ϻ-ρ6ӳf<ai3&hwa͘_1mQl3ԹI.eL :{طU6Q E6SԦkղl֐#d3B!6-dh͈M#%g,fĦMU6bd,вlFWqgɲk藏G6spt?|hٌybg64Wl%!l?f7ٌujoC]ٌrA6ckG΁5&G5#YP]3߯[>{g髖\3Wg婔]3ƴvZ[5Szfckdƈꚑvp;1cU\E5kS9 ⚑.]6[; `3tldqu\Qf 066Vxv+lF._uhyrW`E Yn< _- /ػ+lƛulfLkۍZͦJ׿ -5Fԭ6X\j6#&z#l69mj3Őf|+f <%Rm3L̶$RLKluls$X |یPmQ6j6}: lrsjf6|lсħ7{o&v!Xm6㱐WZp3Tmz-#VLY9GL12n%7Wn+C7#4i}U-fJ,uBی?*}h3v3Y΁6Bl,f:w?WL2lSL-L?eJmZ&*mFcu<ڌ>tfJ?{5"mY`3!mYe3pi +{clfj\p3^!knonq3.뜯*n&IgonG_j7S({Ȍmq9ftԲn\{nJr̍e݌p[1ΧnFvnqO'nFP{>u3tޡՎهn`Hl~[|>uU%A7#iԇnd?t3 Ŋn(iA7[͘FX4٪蘈2f뢼ҫVxzg)٦$Uxe-nh c`.l ,?t?tmrjnO=OݬIݣڨPmf`nYȁ>t3J=u%snFw0nFK;{lR no,Ffot3-Q7c4I3f;| G EPS77gYC"t|f(v|f,OmޠyPxfLm 2pY}66lV>}mD6k;'mƗ:/EJq؏ڬߎ~G?55fG6fܢdCYq3jGSl7k\ERQKD)ܬ}36mʹj|f1U6Vtno?o}7[Ԧ)Et݀p p&in'sʹz|f|F܌ w -S7]k<7#t e܌Mq3zw"p3v Rp3FH_l FdfOo%n"ljj|c>`wim m3=SqJl[lއlʹC!d;#|fgE6c+AFl-" ״tj^|C6zHgd3Qu_1 7Glx+Wxl6ĘxsTzaUl<Ď !`*alح")+.)E6k\Io`.ɽ7٤i1VT{!)ܩb,]ٌnta9r`5<8aw4f}g7k[Z͈zZͼSNJ¨ -N}fjnv$ Y&]އnF`rDj?x3N7ܻ'u3myX|ލClj}*?t3~1f}1ֻؠnִt3{_H}ff~Q7wɉݬWhC7ߍ77m77cSyYIo7~Z*Xͼ=jvguQf?u7EրoIwR8cx6 -g|/cbØ3DS8cr˞YrFLۄolIl&4Ahqq46h8#8qs?H{ʕ$f|Or$'qFNl٭fg-#q֮o8(m~>Gu}zg4z܃8E78[c2oxUm$6b}ލYd|gq<~C'lGjrl ]Z8o-8'qv7\=%_8FlR$p w!sOlS#A8#U&=9Yia|gN@ Q7٦wٝd3b4A>|30|zf=;Lyn4}f!Vi-j7eM7|lsmc>x3coƲq{5GL7Ol,3sw;>1<|fvYô:GuF?u FW7#F7c,Yow=p3=-{Vq3]B0p~,nvD_R}6cqwf2')A7s]KI7s>[t3>]n%L_n~5`̵~wI7S#̵;?f.itLji_,f{)n9˶Znڵ0f+o_nƎ7;5x=(/k)5f`I̵y\p3\7L5:xɄ6s,jfa\=ZmplH/6Sm!$wq-f5!ZJj}C6s fkw6SҒmڽ[fk&̵یNy-j̵x&2nf̵Y׀YI,klyɸjOUq3VF} kۙ -6Svb(_YTcnƳ6Sl3H5ߓm3զl3j} 6ssWlև_mZԝ]l3ۯ6sϙl3ն{zT"a͚{`*ڍvCLkmTi?5f!_ZͨQM3׀/&7S7S~e9q6SMn`zkTc5ܜATeLv̥f׍X6f޻ f -DTǷfL=BL5ӓm9Om'bX~6S9vkTEkݶ.kT:(Bbt^|M 8L5V=LUTq LF\ -mﺯA |D$,ޚ5fqXx_pf0h϶jo5_mڼ1Wl36o͚x6f*ܶ}sζji3UdFB܌$"XKj0͟Qi)j #f*& *g6mTw]3Jk'f[6SؖRTUWTc)hyfBaJ)b>fiELvT[ݣ5SmcgqTX -kFK!-QY3^7\X3bӎj5S)}ҭ\QdVͨ¢d\T3VaIdLcNG_I5u_"fjrVL^jI5S-ΊQ.`-fm6߫5S_z jFoeL5:6-L55QQ39dL5CVʨj #OؙHr2T3j3 ~<*j/U38tVՌG1jPTc7DՌZΧwT3$f9ݬYG5S펈-J EɪYcT36Mu̪jͨE5"s_RT#isiE5֏~LU~Q*~%L5LwI5S=F/jִtW_I5S 3E5>[+k[̚)>Y̚6@r\k<׌Gڦ0kFՒkG%lf_K.5MDT(YƳ-5buͨ;#d3a'fHī-鉎}O1ٌZNߪG6!."6+I,Q?ᅮ")v eK6DeٌKsL$ˈYE6 ;JfJǡLfԸou[d󷟎*M74d3jBeLOt/c-#Qډz|͚E'L~d[5lEQRXZ4пzrTfPp*kbͨ>BQ#JDQwvͨǛMQKj6Sg_2mdmt(X3Tͨ~/msLnڌZ^}6Fv#6oh30MNMQ~ ڬi_*QZ5`[B/K&8LfLY|r ٌ #ݲ5cf֕3zY66ߍ64Ѭ:f>fkWodq(1yBj5FT[ iZ2lt$ˋ 6l,yfƴ*LYS@Fl(Re&_f=J(5/2ٌ(Rd3fp|y/fwD,cSj6cЌوLQK&_ͨ5^Xh3&ZDQ[#6j7mF]J8+mr:7hI6C6cKȲ5ݯX`3JԹi%$5F)5cu' lU Uz֠fe66Ͳupfج)nw -lƚ˱[$LyoyXkmʹâ=`3j$F\Xo"8B -l\ԝrg7lXRlƚ1QtQ˰(fM1Z͚bUKK}tm,K}LFcX\nX/BݲrmYrCXmWYe39ldoo/".,D6cѝ. ׬)n,чOW';kFtu MݗBXլ1XR͚F ? eՌFbt*7jU}zL3{{ʷfډ`[4kdjvD U%ь̋ IE4kr7ь拃KLѬift'{-w&͚fChPiLi}èO&r4W2ii*f\ggҌPb&t-4D&͸>w'Ȣn_fFvM͸ݬ/]I4fÝrE4z7Ѭ)4>j?Yy{`I4H,E 4h uJ7hg4fgb֙4*-Y?4щ6v@3=bsfzg%s4󤋟e,ܓzVS -if#bjhFzա^D3-ԻgIK]υ4ctXX6PJknьZ-hhuSZ^>hƺJݱ_j-8:x΢׾@-fԎGfҌѝ=qeLV[wKi2(}^,VH?XE4 -}($D{f6ɾvf%ьU_imU4eDhaR=QI3VlLI3]I3x-$1&OnL3M34ܫTM3I"|MIKj`Yoz?MI{j}LIw gl -LkaqЇiF̾ߘf޻j-Gs4ʹ0VL3u-@ 4ud9f/b-"iUZר%ԌwW? ٛ+~5sfm*j](e ꊯ=lg5cѓTkWlV+L;nE6#ٸտCf Ѫeٌ'潆eٌb֚R>RtLxcf0TnI6yJlƮ^OeL eVٌIƶ&**-::yU6[UfDdPi3R-flå5mVϣx{5ٟ6e}}eیƒm^Uޞ^6c.(2DxxaMf,ϑ Jǵ=~BFП+m)s|JuA긔e3d=|VlxȢJY6vFUXiB8RԴyo-Siܾf ,f/m}ԼDiU?-Ef،D}ﭰwJ8`3˓9bRfs،.„'A6c>ب[`3>0f[jXaE}V3 -j!Cy`3ӆZb5,V@F -PC~b&۹l)6gX#CBwfMbeڌշxN(Rix^h3-X^g8YϹDiaّ ÒlZ4gFٌS*U6cݘG෗lӕ->fʹ=;\!j7m`cm3fv/ηL5Yi3-+fj7m\7%ڌf4)νLqϙޤ1Q4fnpVl~^zvfXhX׃6b[366;yl6S0=9m@c[vkیNp` UmFmւ/e6^!K5.5f& }fی;XV-fԸFdfm{ǗϰlQ7{DC@;j6`ǯl3ubYm3%LFol3jXo/ZLhdQGZͨQ^u{l3lsͨ4ou3waDsfLgf`R-f68 ތ_X›Q?ձP|3Y!Bj75wzf?a|Y0׊qr=eތ5>ϼ4y3j ތ3)lVfά8Ko6+v[oF=ftϙ/fc"K5_+~ڏoFmL꛱my35fQ%5Vތ5.JFd܌2 ی>Ϩf \gxlijD#1:ڌ]Z@Z~*mFJcMlѮ~6>Ph3v,Ymh'mS%}=$E6#Z{<ڌ-6ck~٢lѬ;mQ~&sHªe܌^8! -nƃthW܌kHjq3]q3H+eAbRd1fvX?gj tmFl- -W^j6RnmD.f,FYmۉ?KeoWތG^2x›AG#oѬ›q51Rě? ;OϞE/NˤX4Vl<TKl>rG͘@x+M)oQu3」fB@]!pT9fC@7#ϞLC#E7#b_kXP-fJgc2n<5jlV}J)٬7qe܌߷\n6{\͘b's8Ly"h>2mF(w%7#h2n6koܿ1qp-\"˸l_f3K_T˸E&jLi:7jaf3+́xe܌4~VDJw07G[>t+n6k'~Y*ג9fz>H&gی ھ/ی+,2 |H֮rfObf2WU Dc8B{ ٌI!lq -ӫfq E6y3uelV?0}vƨ$+ Id I{fdoA67m2ZXQxJ)u_6c~_{\6S3ImFsS^(}l3]U˶Y?R]m:[9ʹ_6S`YPB"?g9tUfMw1T܌]'U˸^#/3U܌9[8k79ʸYS{}O/YSOߌNsߌ=)w}r9fmV7ct==z8cԓ[>O1UK>rNػ:%i- gPͦTؼg**"W&=PU pF5S+Z߬ ޞm,etov8CqQ8TiraTlR,!s>8KBglf7, -|pF NpF[Fl|4ו(;*!aY8Ӯ|z-pf~hNKR35W_pOtrhYx'8VZmh𡧊ިZ4DJ-+ٰv$dLǦ[ -wMetFΔ 8S re-~980}8H 8cH}Cl 8㠅oK땋/7S¾]7)\T 7U臍7ɒF0#_7#aUqt꛱/S8#7&[o֊>\@Gc*pF'pFAŷV#< ќ1š8#/3s eSETYS+ -pȐ>F(p~HŠ*݇ӶE1}(O0aW{zf<7ςwoc;z~ρ7cvu=7cvtS4ھ݌Bn&^AwY7#)_f4/7[8|E-ZyE'ͭE7 =8^ꬺ?+LۋynF̪qXdI7c68u3\[y -nFƲ_7(|p_p3R6=俢siN_6=p30q>ɸzxz`p3mۭ%eLkGBʸVtdn~ n4,7 qqϸV${A -nFoX] j^T+Ty5K -!2Xʹ0(Xl}$܌qxj 7s~܌A2n:;6c3m-0JzK=i3jL`5Nd1 &BIoZfr6mnfy]-fMlwbh,kbQb[L i5cph$nFͨ!3Wl3m渿bl۳f$oh+6BIl'E\Zѿyw>f͌*:=h32;gMQۿ_͞%ڌYz:+mFw.ڌRU^c6fRYfDDk6Sz$6~>mdOȶPObh$)jmXmW-f^uK$ -ݴ9+mFNH*KՒm$+$Þ7m3ͻΊgW)+ 6nF,U7s<[wn݌ۙN6Y0Ku-Adlv$Lkdq{ܻ -n&{b7S;u?gz?\̳%L}hfLz?N$77K]O~nFA7~]ٍQ{7ʌ]߶zͨVZm 7ݸ5fg2nF9nFv?tn܌[H'o*z_EC܌Ș%܌Z{쬸5"/문Q3f5r/l,ftϴfhm&W=AKeLg䪿"Ol3|;fL}ʶ٬em3f^l3j^51m3aA.fj%ی/Kh=_#bM9f6Vs@&gQ-f˶D>' nFSdnF/ݎSo7漕f$ftS΁[nN9$yuXv[床Mc"fE7cTʰMI7#X8 -oƀuӕIz&;ތ,/7#}3 -7c!=o6ǿ]y3 =(7c  *owa7cR]&4bgNyhȓ7cX`7ch?b{J-DÛ[}ִy Hf[lwYsV?}3Z-uS}3ubULF㛁OL_]Tar,g1|Vg*pִzm8c?1x*wY.g4iDC9ęZBDk1X~?y&Κ}<@fgU*wQgX;Lх+qKy8/}7M LP&*q&BvxV⌍x\S}tՑ8ڟ5<]\N+3T^3z=~٬fI*Fl։[Y]1kSFYt}g,^#qFo]8ce;gtV.ZYM߅G}rk^?ohuן"~,`z(zGqrVݿ#aS㛅?_ߦ6YCDn૳>ȳ՗_$|s=_} L/x_?~;\5q!:\Ymx(lmmQ"i_~d>E|?_o|Կqkt YrrAe񿨏2m̥TVQ6ë\xo~׼4a|s!_;.~Ǫɘ/7Y VC-d:1U3\rkl> endobj -103 0 obj +98 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +99 0 obj +<< /Length 100 0 R /Filter /FlateDecode >> +stream +xˎd˖6?_? @H43# + D 2[|{dqO! O_*b}0oďWϘ}z>odc?NRKs8rw#|?b%Ώaٟr?_#~C5G?GĖ> ~/\|DG6(3W~ +s,هp|(H3,qbQGg+hϏT2kG??? 7~͋WF1EKkGb>=hfZQ0J32G/ y[3Z%G/ yÙG=:Ķ0y\k%z|07%eƏ^j-kG/ yZRT,k4mhc?ziъP,ee^VrC#K9>zzފ>kuKxފ֚?C,G/ y+Z[MKxކ֎L||0u>j~B -s >0u8NB^=yɄ'_mr^Dr%㣗1:<%_hHXr)c[ꏏ?`y3}orx.r᭕ǥq=? #|Rucq`m*6O5֯q=?W#zjI8;x8L ]tq>z~Y4&+]?z~Y;L'vX,=>z~Y#V8^̿fMS0 \cqfM=eŎk4$zcqfMSq=?׬i[Zx͞&Яq1hKLeTج5G%Mxg8^cW=?-)~w0]Ʊ}|rEKglpGϏEK.K8^!,kGϏ5KG^GϏ5K{l7x͒bBp∂Sx͚,H^k4VRC[qfOc-u0Jx͞Pu{||k42Cc䎏k4I8>z~Ә)+q|8^,8Mxٱ=L3>y~/ZKkv=?)a8fxњRix 0[!̧zh #[_g57mYah #E;o/Z~~{j #Eo/ڿ~~FW^ah #Eo/=-f~~XF0_i'o/~w\<\pfx:9P=>ywbW~xdx89~GV_}㑏xdx798~?\o#ۯ?z<}| ##ۯ?PwNzpD5g 24e`+6>㿊>?߈ǿ'Pם}@/[Cd}zvX:^/-+=_Oa0>mg%)'b͋KMO_Ob)N hm1_Qs)c|]CW3ذ +^-Wht +oB-־\^8po0+` +O'.7=b OO8|8fBqq:o.sp|q^x{D#ؾD1xc׻BAe[PX:]~b_ʦOdzk`LXx߉|Džο)?FwLoǛ¯9>ci<όq O܍Oeh H(h̿ μNcr.>uc/-#}H`z|fԎ^x|f^gw|jt^u|fD^gt|j^r|j^fq|f^o|j^fn|f'U~W9I~=1y#1>%1=1#x<0#x<0#x#1/gFHugFHuǧF@xegFHuǧF@xeǧF@xegFH鸏unǧF@xeVgFH㸏u>ǧF@xe&gF@ݸegHڸuƧF@xeƧFp5xEv׹9~Y~ߑ}B/3C>qG*sB>qGA>s/@>} ~Ӻ/3@>s/s?>s/>>>i|w89W{[+U jcZFn۫|۫|SI{V-#x7^9W-|#B0wW-|#?yU O>U HN>U ߈M#x{72#xwoZ*-y^U ߈J> U I#x{7B#xw7^x]l]m1PpU ߈U#x{72^@]49W-|#J0wW-|#G0wW-|#DyU HP>U ߈O#x{7#xwWsZFj۫|K> U _%뿽j᫤ywW-|_wQp\U _,˿jtqW-|<rgZU _*뿻jDywW-||Hjja S[aE+0<\*˿窩&\V~U{ +=f[q;@ofA?J0o-MX:X}t!{ݝ뢵֐{yx1Ӌ_R5;Juz:RRg6N MXThcI3F-*"6f3X)Y\=@ZWaaR%CXjD̸Z>pVh+pZ4l~RG1[X+w{V8j +Z\P*xűd+! >0cy%`ܚvLk t;p*oWtldL6f o:Q+Y,c~^F]Kg7ӡ+l4 ˣŠ{,¥k,!;43'Pk(|():6x}=J^Q9V 3Ca#lc^[0c1D0˨4I0֋g&Rq,:a9`B`KXVF X}C3́5+9XϹLnͣ0`̿WFiev脥~r o(-`X-hP1%փ&Ǹs~ U=jw &L,u%6 <_7k,$mݱyd;2&R'Xt1)51Bv D=9WKs "=-[q.)anr4cVò{xCI ;NdL"8o+g&lcmn"05](:4 SH1x?9- ObZL૨Přz`6`/0L$v~&G 0}$6SPf`a.94L"EL7ң2V܌MadnKc:pAxx1Ǟ1?Vz) #+Y K) Jx}ʌ1[K_kدFtLX-i%ë=ΩW1`Bb#1` S[(a,szL>^U桇Cf=q̭21La3g3 GkfZJ</bI,qw WX_%6Z 0Ux{+V10{GQd*Oc^Hb7a6Oϩ}Tױbu 0"t%!;"?s0AZ+3>&k) +X}fjׂ70?',o` +3k0^ZXodU` H-`O:a܍i]Ԁ/cVui#qV,^Țj" ]^+|),sGg50nz=ʣ^;X3!6Cpx󎱘5.Wkx6$g{~ \:9= >=kI! 5kFP^`߇u*z,Ii HzSb88,֗}Ϙ#] ͱIX⺇>33  .}V^1551<,` UcWi q_-Yx=1;|jQT!oMUhK԰3[|,-0c .N[TNWb١/ #~؁sY>M\o8SKYpw_/G?q'u uTL% wiOL\7afu ZX@?U{&0*VZ86_X sSr 6+L:aGV' pٖ5Xn|A0M[`0>NAx6Ft~΃/st sSf,~5ʫOL˳i b`pbYXBU< CCiԆ u.k:Xe1{\Pu%fQa0Oy'c pk aOxB>-/.'dv:V|G YT@3 t;YJu<(%;Ó U}G N$Jl>3Vh|$Nʤj TlW~zg k$ ``qnwJv9P4a ~ ( +,Ũ>J&Mic=ox bǂ6a4ut=A1Fq8Wj,uqlF8:y`\Ib|DɪdLɺxX/&d{Z6X:kw iLjaEv=7Pce`c!m }XA%O1%v'abp񿨱tf!l2,,^LS1Lꖣc84\n BC˟ L}V c1L%LX}VJWbb<:8;ǹ1$7o!V2zJ8"a0p cfh;H]4)Ya.ΕEQ ]\چwRAO} ;A˹: 2qBScLJB,Xppkkc|FD{:¨ #7(6W8 ߜFzpq*l&I#m62:X ma&,8L*.3z6GTcaNM\MUaal f|(pp!! .PD3{@ [NXxz9L +1<ʨJKeT11T6"PBVw瞄5"""x4Ԧ eTMqvse| +ma(:&IDk0mXZX +08?Z+Lfb_~AƺX|0AF&Kʶ߬6al gD +2M-|?4:~Ӊ} _Zn!v1HO ?8Ru1\˴5u0IL9X{(qa 5X,7ck )ZN1 O6L_k(m ?8;eT N 3؀oH#2!{)1xК)8hS7x/>YM$ŖAwkx|S1Lкccx0\P72_%[0gITaJ;ձOLzحYӐcN){ <~ +BPOݓ}%3& XNm子 j$6XZ {#7<4ve4 +͜5"8h bŶ1yΔOO ΃dO:oبOϺ5Er82 QG;b:Ȱ{t +z}xSi`G:h)ޛ80j ] FI%/ KUa_yU 8@7ah>w鴚ŦAՋ<FÝ`SwSpJ,] {e %Zc^0Q c8S /yVD ^d+N^$C۬>cI[2bZVfYz2oSSfGWVV:T[Ε'@f0ސjh@6@c"E*L;ޏ*O͂K1X,:zW= æ7Pge۶ %`i`>RLp0,/ ܧah'pU h4DqVF2YlkC~̰Sv(| +ӨBS0W:-r/wrZ*`vv =Ɉ8=F,,36Ya'A]`sKze*B L p"1Kg +J2B3 Euab9>>ťa) cr~ t˘ ^e +MxL±jX(08ox +~j8#*]v䱪OϖG=9$Y'Aa0Gc }W7smȖV܉`*c4Tc1w|M2R1L7 P&3ט),#oLudžW +V}r"Pyg&"p8X3ɋag@İxk%,>s+1hImb p",_t1O J_FƤ?W0|lšQD<>@C6[N[1Ӂ k2bO3iLia NZ-n1foJqtXqը +1')c ^FG5t?|cLS qOט³Y0}hIf1cobTvjp #,;[0},x8$L;|Bc|>4u +&-, =}#15V˩"Q3DI=iNrW\~x"L5.\8j +j,U6 ;4)\hhab,I*6&^{Ax51FГM*`ҵГc.-ߧc:3j-',V趔+/vyԛ07B2)֟P锩d%U3a3Fϋ"E(U-́ŚD|* qU9l%=3ct v;)DdL ϖ,$bIb5uZ 9Mx=O8C!;9-Il7ҝh6)½>scݶUΨc(Y wa}WTGy[0`#aҋy yȧb]- i0w-~p3Ph5w,_ULV<|ere5\=Bx \TA^h"r4kma7ZrͶ`Tqİqd5!v204#83wG'8֔"2\f]TW Ϣ~&Bi `nx413m[S>Z.nUMb,3d+`XןFcdfz0Nxv1B&Sjg*whcb+~5ܐ2X*C y"2 Kl1d IĀ- K+$-L9Mkfc'MXu&ke!aGÎ*{.1,sKh&`8 "!8:qWŏ!fG*=l1r{Zv =aL*ҧ`LM71sN| +5̂Pfm1b tHʴܪY0돝BߟּHmd7*`&KHf#jVm8Ƣ#:`o܌G4`77b:T3m/"&VA'FEEMY2ĤN4bH1y|mYΒfRvD*\*^bf;^'W|~o/eǰ,lcb`h$VWS 3]kDnSak,0U%) $c%FL9 +1Β$jSzηN=ԅg lKpڃ:0{Wy{2[y`9UL_g\s^̝`5bYTE+yCW\ⱑ`ub]UL'+C^G}<Z18P00lWUh%J!S40k\i *qLHw$ǦYtA=rfCaS0 n"*)Vd\нklY䃉Un3.Q!pa_P諍Ҫ YZ$n` r,#c;a2=cMupZR+qƸ}tf8O}^/l9}w̑ЈZ{(T$۬)]h,-TF3~X&EYDT-wXȘɌXنb~0Sy7;ƶ՘vV ),,B5?,CA~2:VJ4m L&Sء \D *e')cN + +na>kxrS+ ?4i! 80!'ò tbM cq18 +3Spj6IҚ*X,Lrraa4n1lZıʗiK^[eg? \`_6CX6c5nf>[-(F@%óbBUaDPUzuB* ix; A['I<<cjJ 7+q[`yT\ ƣP;{b絃=ԬtfTF0#p*y*>IgcLNTr[(UaL ] 3Ksck>I=XTyY͈)P}8Fe* SV*1u_jr͔V46XWJ9R`(̧VB1BQACI -Ln&L_oȃX#9O68 I1'hp@6U=6=\am!^D?v .bbqb鯁!1`-sΌ:V9fHói@ +,V/0oa"/YVb<6s넁%ـEdsw b-I*Ƀt7BO`n +P*-^RXr"$3e/$<姥FU*Ch?rFNkL &8$Ϡ!{mJws $7\dNR'kܚCT4RF^u@&ɬihNFqvfy;glXTMHe"cZ0 B35m#OlѰ6$rNcÁUc%`QXP!3- NXlŊ 1Ȥ0/ ʉOLOFF8`2s;Ð1{T`g+|=&[i&cɼ8^I1FëE`x]ZNĺP:֍'1"3 +F VN6)b|#b˜Ď S$ϿG708Jy)x1XErLW3aTX^32=*rٸ쯕<`@ ӗ<ű ON 1?_qg<11 2УٲՀCXn |Ad&bz0+ܫo#K54**%2lGC;=̎B +ʞQL!r!]!]!]..ttttttttttٱttttttttt9..t5UbeA{ˎYa0o^FN cb˂&{Y7Aˎ 0.ȗӲ®}YXξX c0V@9kƾlk.UCx/ #{!#s^T8lweaUq2{1n'l,LQ8.ead[N,)?ȗcb,_°55weAl v}ٰtѮ˂y.cj gb ȗUt/ a"ɾ, Fg}oc_Y 0 i13_/8kƾliR[U.lM;ξ,":ؗGQl`_f_ؗKб}YX,HZؗ1*:}Y,]2ؗ1Y\b_1rg_V"Zٗbˎ]F ξ,,%9v/ cbmؗᏽdg/ bfN,a<_VE闅q7˂؎ ߝYX`8v/6HOl_k;</ 6ſ,,ο,._;0Yˆ񸩦σYXO +˂I藅7eajdy/ bٴٰFj8/ea ?Ux_f-B/ANr;V.ٰʪ.b0Dz/eApr8A,,e6fa_ҋzc`V/&ԝYX|v00 ;vfCd`%o .҄Y9Mwfa|10]hg`H^,,_,D*wfԫ.v捁YJ xN30 ccHo ̆ kC,;0 16} +`j]˜լ闅1}/Ko¸hRtƵ~ٰnA"藅 /~YXE˜TJl=̿0ȉw_&: 6eX ?},n_Q pea^s;闅1H v_6,J$~/ c d6eA e%/ [ 2U;a4~).b_еξ,,j aj勼}_&VP3A,.eaXuv_6lUt/ C08,5ȋaw+ jluձ~YjF, SˆUo_6㢹/ sIluUvl_οl/eA0k9 cS_]dsa֫ `mz;!yHv/e0E|/>_1”u_6Ax_6\_藅%t_6,_maAs¨h=hnˆ藅P5_6,P@I.NlM]V!8ȗYu|04\ _6u/ s|0mJ/sKG|YOS~!_$FlX]^6Nhs/&ŽL~TlXUyp/ #aXat6: Vc;agvp/D=Ke ako'aVV`_6 ˄X:k_6Կwe L.e.p/T#~X#g)ؗ <g_6(ϡ~0fp_6 ILNiweÌW;a=[Z/F]9 E/۸n'a07eâ- #Eێ~VS~0Y3/xʚ_ؗ +ƚ(rߍ}ٰLElPAax|'_63rs"_6lڰ|0ϩ _AQ-|ٰ"ȗ KNl21lX7>žl;}0.v/.Uy_6(}]w;u3?'Ə~0}/v׮9/g eÂKn' k]ˆnٰ&M(ˆ%.Mc_6ov/vla,N./fmˆ%^Za /Wj O.eÚV cve!W~r_&vn'aq'a_6K}_6,1a(ٰoԆlƿl#Nt30UWlk10 N|lFlHjX00<)rg`6f8 +ų|10˯+>~p0#+J +f/lQ09(s,`CD>S0j/q MNL00b)x#`6-Yѩz7fbW cWs ̆Q%jMKyg`։(;t10[*|++Z #wf)1s`6wP0%l^ݘ`50ֺؙ/fbfNYFg`6 t0510ɉ!s30%t NhXNq; [Eؖ%: cUMs~ڝ٠b_(mD5< ̆``Y/郁028F} aŸL00 qY4ˋ٠Lb`&%ָ;v10FGE +vfR_xaaa ˠوV$`&+$`6%O8Ѽ5+vf9vꝃ!k}* H Az4]Nlyv0vfb$7N$hEo; /)qr;H $ iM)-,"a&6Hra6ʂPwf8FBlwktxDx*FL, 9c]DSU$}1FڍMcmD̄2"[%1/1[H5^kU`9A0-O ^Ǻ1[!?LI&f(L rUT8w*fb9MNlti8+E-T ^O<&܃۰^^yp1G k"\SYI5es1{=<Y$Ttxb6F!gjXL Q^L!2ド+fr;T١9IL̖pw.&fbƋ˃o'wҹQ1 촓>g\1H07"f`Cdo%٨HSt"b&F]U13i4ꃈݸ25y#bDPԘ1$"py/0x b&)`"ilw"fcS pheJ\NѼ1[ڎDNi1<̖ ]4L ]|v0cћ"fb,Qaf.NR>hXWCAlQlQj s}9iLw.fKR9E|0[oDF99v1&*靈~8}DY^Q;3$g=J4ͱ;3 bWC1v'b7ķ0Ӊjq)5yYꌽ;s{΍Ksaf7#$i“UFMdbfMYLd;y0M}8rgbVӎL̬d d ~y'3Ip\0J3@q G쿙 +v0"#bK݉{1sҟR$bEGL&X313@LO&fF'3CPIL +`ѱ;3xYT Jv*fHI=P1ܲ;seГ,aq݃, %s3d@?VbnTvb6L#/^|3 +QIL(؝,8Kyb9o.ܹyd3lbXis1̎.f6f&bFfˆ\:(2s1۩<239`RsꝉG,,;QsS1eb8y~ɬɖ۩* T䜂E#cw.fic8d$\ʵCqdybXXk\lk^)*fS]T޸=r1Kd=.*l9B*f4큊<~R1SbV5G*fv1dL% +s1[á[Xa-l-.f^؟|p1O;Tr1]l~Z;MCZ5!')K˰ +!dG\ɸ$pCks1jƻs1Ama;sU\̉\olvlWib橁멕pp14Fݩ'o\lG\̤rpNƜνv1׊_s[Tdbk`+ݹ.fbl}~bfUS1~T:YLNlu1ɐMElCY|<;;Ud7ە91q0gb&V`}bLTG7'Н90]E'3I͈*l,KuP1[mxbf. XAwi̾R1=&3?TٜմzR1x;3 ;Zvs6'}`b:L̖']~vlcbr̥mpu /`bԇlʮtLߙ\LFO9la:EYB's fIXd~1. =q+a4߉yj<7`b&8vgb.,͹XDlPI̚ż|{ b<̤9a&`![Hw:݀;3vo<̬gy3H.Z|__Ql$b4ZLzU|{af̌郰4,bvjl- iI؝}ɫpv0c1ӵ,,RCFœls&o,x0 'cW۔Ո!a60#gxY".}a&F|L>˧y'LlJLEο0gL*f+;۾ԚFLcVqaΖ&lhud%9z, sxK0^=hq2xa&yT1NlIlQa&na qDH4٤w}}a&Ɔa669֩˂>b,UilLލG!6I ƷORNA@.V9M62YC 1^ՈUuB}樂e^ZΪU4D_.#sCyUb_$W|cUvP2pIj SngOݤUj6:va젤$ C3*! +CS-JU+-Eb<|%L!> u|!EMm>UO#Utqvk:7w,/3D=,Yl C]8([9XoĪXR{K0`aRb"ALs`&ƺ%ɆUaiZ1̏{BHIf-dXS1+Scc.7!aZ۴Dfb vѩnT,Gm0Hٲ0& {cZḤ"AL2֕hV9Ӕ[${5XsaN$L@,Qu&)!77oYDfa8s:4*iu-P "y]YcLi6"t`fi V7vK+X4 &9rVOiwE+?G>$I꫚=NOl MfRZӎtVN~H(:MbBIN 'txQ:r-q Ě( Lb^?T[<)@d\hL҈#թMRX5#mMt1$[@cee <2KBcI88h8 54(a W6d[ǽiq2IzKM^Tg /b&<^6PRbW&Nl$%G1Ul +"0IJo\*6XtxtTmW1*㼩q`'EЊaF,jMdywND4fMJiU` knљ9MK7Fڕ҆Ix&ɡh(ld,c`9̶tI32aX)53V|VW眂f򻠙c c&hxK4s,Zv + @ul 9J!hPNC̱Ut ӥ޲ 9Vf-C0݆f}:v 9vfؗec,/X6I3T=~;%̈́QݯI9FQ&iXEpH 32UacE1') rY۩hocL4&ްM̱]60l2fiXsɖ]f +f̄y.v + K4Jw;̈́Iǟh&ÀSLǮh&,rإhfX!i|]L;.R4vUfʲ V0&h&E6A3a FcwA3a0Mp4+h&h&({;̈́ɄMLH4s!hfT,.h&Lm]f®8.h&~ʦh&Hv) ؼ6E3"7dvE3aNs;̈́aea0˷CL̹fH&]̰{h&Hfä́YPÄ́+rl)+brdr$̈́]eY f^إh&2ImfG.h&e8̈́/fKm43[XC̈́Ep( h&/fC_ c jf`PEؿ+ "k߮hfXDsh& -MLX-]f`!:$ wMCL6I3a $ cG_$̈́EsH ˼Dv4RZAIz.E3aeuf¢;v)Ff\ɡKLPb16E3ØB.٥h&SCSLXcYof;:t) c~hf swE3aNy;%̈́E > w ]LXLئh&mb>M̰;|;̈́a sCLa6ߠM0V)8h&,e5]0Up( +,V_eKLPX: Av ٵKA3XR90ئhf#=3 Lt3vywhXZ%n]LM\ea0G/zf\g&jH #;>zf,]p33S*0y\KgfP+&x XwA3]f{vk&h&j; ctצh&͒J$.E3.CL+V+]0X&h&(ZaaN:_ cx:f<%vv du43,fұK̰Ux;]m򇠙atc?͈1uCj.A3|/1l4fDѱK̰/e]0shfX +E3T4vE32,ڬKR43L%ifX$Y]0FmfXidapBY%ifբtH"-]LY|a5^fk$ ˜aվK0LxfP%~(՞*M0gxul)xq!fQk!hfS$= þ⇠-dx%hf1fvfHR(RC ^as#Hos33!?m43,*fm@1C̰{!hfO?͈1[hf{% t.&ifX1W69$ AfهKv?$͈D{.ifXWP43sqC+f_ #ME3ðXE3:D$d3caw +C0֨cc43pHK43if.ifn%g_% ctU6I3\F&if\vNI3H&,1C;Y!++4Xa(v)iC̰D~g=]0ifXh_&ifPX.IfiPh#r4 &2Gv43)wiFV|UcfpMdu.MHo43 ynf']Bv53EA:va&vF?[!C0Ip,Hy:oQ3肸P.jF-2dWD csifPPKc51^4 * 4 #۸]ꤓئif;4 3vs9@f@@C0ny٥6M3b+fIӱK0;+ʹ5͌<fV aGKM5#CF D uC0Ry%͏)j>]Ԍ]faK:D YBVy!jfX4w]iz<};U͈Q /R53,v ]fQav53 C̄>Qfq3#<.gF.&.gfI4<:̒clrf^\1 +0w͈T{A3bPc!hF˻>.hfE)L,_l?Ȏ]fX wA3G1 ͈3HkS43q1$`Jn4K]x1w89!iFNdmf4 R_$͒[a&43nyI3bF}43E2N]ҌX5%o]rpFB7l4#OqD43z$](Pou=)hFw4UQLofdƻSfTIz][r:zH?`x`@JGz\k4P7V߳ޙL2">?A3ᨐV lЌ.y b8ukJD %:3qE]2a+& ' |<{<á; =33yᙡrC̓g -sqnH8dn6n*f F4C*5\4= p.e4NJ +T'7u.˒DV' e/hF]UЌOىA3zN}|. e5eۣ+/vd2sZp4s34m @S#\ETE3toG]5fڷeX E4C8*CfYW@{ ӒGX/9 n%[483P.93^if83z}FΌs8βQZEgC& Ylxf=3\g-ex: @=3E=3/{foܤZ83::erf9]ep3 _[#g[Ͳ&<5rf\=;67^ T"rfd=3z1{fXS ?hr^' kw.x. s.ћدڋfx Œ1)DьC)OA3>:,{A30hƂ435$aMwA4Öҽa+d^4*#ShFHJh4I* +7A3F5ȣ{h2UdQ4#nzG e`xi02O;U<&ݸhZ/,:A3t5cw6Oh5A{M; Yܞ>m͠udhϣ}"PlDCҵ3GFBHi-bIc0H0i:yfÇ"cUW%gV8<}Z UYE,s$cOLoEgN4NDDz'ЬU0Bh +vێqYhp2яR#h1gt;Q#fn'a<ۓ4N { I[%ي4üra:Z4A1_?fΆa0/NXGLѸ(aK} Y7f(& 949 }HI3l)H3h' 6DH3`I1g2vY4u{` cn3@KtciJd iF h~L]vM$*@$iCz-{M3dCGL3u8Mbh[2Jfa˳L3Φz7Lih ' 8KRM37f?\0ȭV93˜iutBo`a(dʛfL?O0iu ix $͛E4D +@O[P3 tIxP3la5۸dF03[5 q%f; ++j~y# ̩fhR 6siBPz넚I(]5F5âv58f>ru.fhf8e`s6+jVlej-j~qU3;,fEkm  ϑU uUXxU3nx}Rvh@2wլ%ͪT61T3tk0f&n= ^[㬚PPKڤHSuUͰ4f;c̲;zld%TJ5'lǷoG4fԬ=ܚzfj~jjVXkF Q ;;lBp5k5f2Gu,f49`BНݝg,{ j-lz@xgj/5;8rNQW,Z5; +9lcu>'U5aeA5CsZVĤ։uUJ~2'LW{3嬚{lͲDt}Sׅ5Ci;wʚa ͙ ;Ě lam +%kvٺfkKY5æKkTP= Bp 5WjC{B0ZȝQv֍fGWjYf*/L3~kٲ`a4;uXL3bi lݛfkBTM3,4^qa6On]M3 '4Cc (#gӬ'Վ4kD8, m>=fgdöMYyc=AjJ]늚A#uE8Kוrgլ&㺾T4wB5KdW>f7f?cQAI5.7GLI5I/_TқʚaЌ5à2ZX343k6ʚR5CQ5/YLfYX3}y',A 3U/m,[#6sBGGLL]d3^*]d3U,cfk٬)lՋlKL ۛE6Coҙc +idl`r0 x5CYMY?+kCRCš]M54s|֕5JӷfiJjXY3vT2ϚM4Ś95f(VB٤훲j.{֜Y5TzU3lu02fVY5\Tfi`j45K6ؒĚm2>I^X3˼m6V̱ mr m8GK6s=(ّu+mdYPblˣ6CHl֮llޠm$yTB6;xY6Kg/\a30nvNVw,foa+q,aqPu\\vc帉k~aLD׌J{h5c .bk֮v0fݵX\~TSpPb5ÎL峏X]v6{aͮ)f EQ5d\جa3W jI5CE5OoE5k [Df5+|ŸP34,c`֖>r/gfQ1pqM<,ðӲ)*A335&gD-f,'+3Sv6*xfa)yf%޲)ۏ2#,_d͔[qe%۟yflMe0Iqf0683˶jϙ)‰.3 b}IǙ1Qxvlpf2LF րYR4"Xfړ@Yf }cfJ03_03e13eJbfh`f4F̢u4Yf-3e훶KYRlf̔ +Rfd O1ciݹA)V9Hfu["HfʮͦLn(e˲aY6`Oo)kbߧ̔m^Yf"`)W=L24tEIlA2cęx&9LٍeC2SAL/)Ce}N2Sv<4 Y6 /)yNhِ̔_A8^2SCe,cB) ʌY5_(3ejlPfM2S2SefUO)1+FLY[=" %3e|eˆdƬ]dd +df()Q^2Sv 9Kfʸ3&If8FLImv1CNb3EE=}1S.3el0f [WaVŌ))h` 3Eƣh1ê\)Se1SbfYGQzLY{ƳW̔q S̔%̋\3fط1+f.^,2}yL*Q fN1SQ![63e(pRP6LF3e}hP@_UC̔٭FČ R#fʬFL,88Lֈ)Ki1cn)c3)CO;)C ^1S) Ōنiu:rbœ~>KŌ=:yŌ~L+f5QKW),I1ʧCq0[1qX43[ŌY6<(fvT63feC1c'{=1K Ų!*j3f~,3 i 3&aʖ ÌfLn"z{Œd)f̮Q3f m} 3fվ'̘a( 3f s2u.9Œٵk#FŒ9Z63f/3fxW'O ̘A)C3cǡ”Lz,s\vytzjwuuQplf73صhsYMa`ogM YNc o.[/: | bƮA̻{ČuL- fxÓq*>w-1IJB@x 3\9.LwbO[yLϽ{3\Fc X3j,(]^Tx_0?0MzFaƛ.~Offx o LjHqSe ̸S0<f~Mg<fXX3fXQcƊ'̸?qf\]Wp0nbbf0fnx`0̸}i^ 3g< Ì2ؗR~0t^O7x&m"#g n ϙy4|(flA{c̐< ,\*Iӎ&z{ YbZ6_0c 5fM{x->ŧf{L3\֮0^iV0Cko1f<1s]t\tԶX2\,v{n0c%{,A$fgi7lC=`0B_DN_e/.C_u]<_ JoG Gy  gyLy̒F~z]4{=o*".kJfۃ10fi0n<`q>0{\u Y:x%V( aX5 w0K'63,a'2[`اe/`~ěPv5ЯF0CJ[idpGÌ +a K^,٠P .@h3^\.lT0g }Ԃr+*PbICڵ#(f/nbR{T*fhibV' }K]-(f8K#dy W‚ox"CP8<ܩbɱެ~bf R7#(flvXqsy &?iً% -iuZAрel>eVj\60e=+[$|g뗈b*v *!_%8<|ݑer06Qۛe|D7pFk&XG9:Ͳ]nn07Չ,Coܧ,scRE2Nf,ҏwDI"WYwE ڎs.Xo?M~2^lSZ'::,_}YPjny_񛳧|- S<NÂD&]se#5ʍvK4ZCFڻCO|n`ŊU߿_ePh&G? z<\P}YjhhP*]Oż> +^ {"[w]?7TO /F#̛|/w<5ͧ/Ql[f^t-ѮzsqxM//O_־ W~bO@vW??ڷ??7?}K>7^?foqq_i + 7/8g G%Ưx=MY}ߠ<;.&.[^.<^K Ek/z%O_ipmOן}| z6|ӫAKDmWO/N"l +ˣmO/=FYxD??^P׹xgT3Ɂ;t+UӇ E?}h7*7J6q>~r߾+}^Ǘ͜_cvT}CADw]wzƴPw^%@9<?y@Ld ~.@v1m bJ{܉{Oqv?t +endstream +endobj +100 0 obj +42898 +endobj +101 0 obj +[99 0 R] +endobj +102 0 obj +<< + /Resources 103 0 R + /Type /Page + /MediaBox [0 0 226 173] + /CropBox [0 0 226 173] + /BleedBox [0 0 226 173] + /TrimBox [0 0 226 173] + /Parent 104 0 R + /Contents 101 0 R +>> +endobj +105 0 obj << /Type /FontDescriptor /FontName /EAAAAA+mwa_cmr10 @@ -727,80 +720,81 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 104 0 R - /CIDSet 105 0 R + /FontFile2 106 0 R + /CIDSet 107 0 R >> endobj -104 0 obj +106 0 obj << - /Length1 6924 - /Length 106 0 R + /Length1 6528 + /Length 108 0 R /Filter /FlateDecode >> stream -xY Tוߤ_BZ@bт$@ !d򆍌1jyK%vi.NxRǓx:&mN4i4r2s8s_qiӻw}P@CxæR_&M=3oo8ltv4y˛ۧCמ:@yld`x7a>_9۸blv✇ =?534${ - D -7sm10=͵خ=ZMa|v;Ob.ޣz┓* ɋ(yL;w|| w>܂"\o5xeQ<|$Cm@`uD}]B" i4jU2C!R 24E}|bqZԱW[j*)+N&՟uy.KR%w &xFsyl`8I۱6'&ۀyJ8|˂+`%2؛e1%٦UݦM]R۟L۸/>0d?1ObZc_cA+JhNMFٜmW 6i5@5f'Yqdx,l0,S2ݝdm5')[cRQq"7@ QjlB'mI2؂ wt%~75Pr->-@Ӆ*OW`)3 -HP DZ`͏p, G(pPvdPbVV籼j݌藀 -Қf+Ӛ4"\nV*v|XDٯ%BSljUT@d!V ZBh O aIV&rջs@ߧשuOy8OA rɝֆ`) -6]/`[87)QT$Yvs. e UZ)u˧tZs*5 -arΧ(/{.ni]F#YlCLyW7=a~Z~j+o;= y QQV):ʼBgMDEQ9Bj+أ"H@J*Zfu*(<iT&*A?=ʐh_oK<-kݯi{=׷eTYMx|cǓ҆&c㫆>b,kJ m| ϴ6[$GJNS|A.cwP#'mEӌFM*i+3\n&kEk6Ǭ_9_IY0_GT:CRG<-I_Hҕ+6l7ʞ[hvF{*a8[W'lG7vl"~K\K仏TdiT[j {᰻PyQ=޾?R신]?gD8="U2b[U ~ yd"ȱ6ҮcU$:Wb_@]a Xl^$:__mkwKKxUHY‘B'i\|n_#v/,Q@ mS`o!':erfRd5Fd>3c]MD#ލZ]D=~]%nk v-ҩ4~)wQryTht WSIA' -ަcEsL-pHe -f-ї2HoUZHAa,X{^azh:">K2$u൅ƽ}\彐J%pC?ٻٳ=&3ȍlύ3BSTj%6Ȓ\W!Ab"uZGEw<*Aa%m)-V\oը zՂJ!j%^vzc %|ֽ2޼|qHoˎՅՋ/ܶг]{88{\Iv+y.K?fg±Ż{Y'޽/\O,D5zDKt=zA&?rjm6ul@8߅ۯ48dm l^s{˓vt+W|1$WKNļټCz4yZ(=h/ .*ԒI6񖔫%^_x2vtJGr=#+ZeᢢBB_ ٦}MV ޼z>A]<^w/ު*.Z[\, 8d HɢP0 zaп$r :L2*z97\H9m.Ver)G`Y bIy^, 1TO`LΪLRL=B%~%>,}$֒z5\IU2mԹܵS;+b;,.-2? 﫲rh/5δvTL -P2 9n(`%  Mmg%J*R[t6_.Sc_A:.1.۠:\j(F^*B[hl&5(|>i+)LBPbűa 瞤]+=(aTF%j?\t06]Er-Ux7bˠ$^G$LHbOГ,WȎ,\/`:Rز,h% a UsmՖg07nv/8!A%hvr+e?KGR g<) -Ήv'YBm@݅=/DrR53>¶edWCq>"G4髣>:AI=Wx.$JmU#z>?U5}=rȦrQϱ7I\&OCp'3܃ވNَj5uQ*dq̙=v1\ -4u_~8#[ wXN \^^OF:#,iXRj3?#lu|CQ`QxH54RTQ_ 8mnTq~[f@^DʪQɽy"^{)>y;A]Ų(N6cPq|' -l; ; ({9+JQcL s#Xe œEi*znB^J|_mbE-mEbEfP>"AaIغ.db^)PAy~EfHN`f!`̋B4A1j}P^ gJe~ F`׀=͉Gp==O>q͵ZPڱ2CJXig\X'4#hM>6o.j*6WUU͍sS^aj3FFvά0n=#SF`Pm4_]( -'QS֬>Kh!`-{K}=}KU^ d} ɄOma\x]s4?m +xY Tוߤ_XB @^ c lvlAޒN:8].>4'IRWig2ORm6MiӜ間I ui}o4(Ph{Т1V?Cy,oI_pE(OM :UؑhlO..(y lO̍ZdS؞Z',ǰm74;yͭNPg5~0>`lw燱݃mp L('4⩅+}]b&;3xp<}0 S0b[ +PA|P&IJ[]d/G+eftMf8emyGf~;{n x 7:\+O%<p9 X9it &JVQ)23r/p,CS\gZǻݮkM]Ip{ŪV$iXĿ$Uvp,W mm4'Fkci GgzL\S~oG 0VcDRbmJBgɐd6F{wX,2Ynο_}6nbrObRv^cA+JmNMCF٘-6j4@4&Yqdx(l0,C2ۛd-4N&)KcRQv'"n7A QkJhJg-I2؂ w$Ã~n5)P +p\ +=j݉/Ue$oW9h +EJ ݬ}M퇲OiRZMJS2ɅEWq{z7ۅF)CNx*3’, 9}~_Yހϫ(&uSOݹ@A |ѓrɝֆ` +:Wp,0%k(@m$Svg> e *YΚ)e-4j{TJf1s.(󍆗~>njyy^neRpk;LH/f'/x'y/>^\:ɫ QH+MjSBx _Az{1ϳRMQ 9Rj+أ2@i**jb+)<Ѩ3,V>z!xȮsLOCfSm_9~zz l:hGד;&wM#H^:L,xne\~RԡiFf~K5Wh.? fZ 1mk+- +('1בJ_[O}Hɽ%+$te1{Ū 8ˍF5]3*Ws x=?v՟om{W_:E-["fq6G|exzN4YgO)G/{7E6Kv l { ل3KTFZs6G1mLqtj)G9D{+) +D V)-xN"xAhef?߬%yO[ACk|v+(\v/AMN4 +`ϒ)ɀU* JN%VQ7nVG#`T4XMw *bǤQ* TȣE@-[֙J +:QP}6?^_YOeyM*ÜD,eB5.%-MbҨ$HLBLi!c-XpܣYڧޞI%*MYqv.ާ;o>g>jIdDfk0I(hpWnzoSC*ؾf5ۙ_}:z I*}m:!A?N9Q4sy:'}5H-_hSS_$鎺4NKJaϹG-)gK&d̟tJFj =#kx-QdXkaq:8rݙͻ> +DJ5PDm+ ?|cnx[Ɋ^=F"wO;AG_>M, *.!r՞g䩞p1eHD' zeUhM ]n[K*8sЇB4i@#49 ɤگGeZR7+_ړu&u-DJ%n{[H}s3>}-혮)w~SKkJ5VKUܹܽ ѥDnȤG~ ϭ=mT&CwӳJݔ*[FI +.%4BT עYuH#TBY{?ؾ"(>\Fu/GӱJ@_B 4tN!D_f n͕1;iB}Cqt'Ux9AۉЌz)NK+))S+n$Ӻug.W:+s)E[0 yӇ;Ts"VTfJ) q>Ksće)tC*}i H-"r'ԗ}cDT'؋$#Q9d+8ZԔLIMɓ>pu'xPЗ _/3Im)"҉AO#-%ml2}c_ض ÔZPQ5RQ&%[N.fd5R J݈:B}>JV͒alC$ěrsgrPBkMgOmc~^XŖs7?}l{91\2:%ۥͳ-K]rm6-kuڿ:u*_n@tI`ᇧ#ZD98~5%MuYT6O~fI5`F6 ,jʼn!u!**]m/FHzHaU+Is̻a,^Ҭb%22QV#"Q;'I5a6}= 1ޮR,oqy9qإ2Fh#ťBD/H|DfO[k)=T:j%~tlC&e|ꗖ;Yr7OT*u'|MYVqMV[[{c#ac OS0NrgN1;[[7];d|O*N8}g6V\w!\ҁeK7m?T3uBvv*N!ae0gTK uL)aqnD94xH-J7MLxq <\)dk2Sk25 ?7 c8K qM ԯ4w ʋk2 ya `p&a/L%XW`VJFdC̠n65x׀=c!7qmV_X-([!h%4#3)Zlw74'LX4:JՕ.cq64X;16ck ؁Cc +oֹ!c>hY2n;46n fa ۃz̢9. =PppQ=83tۣrC;=@n;䮮{ktDI %v,/f1 ɔb@la~x%$ endstream endobj -106 0 obj -5140 -endobj -105 0 obj -<< /Length 107 0 R /Filter /FlateDecode >> -stream -xk0[ȰU<`KP -endstream -endobj -107 0 obj -20 -endobj 108 0 obj +4852 +endobj +107 0 obj +<< /Length 109 0 R /Filter /FlateDecode >> +stream +xk`[U<`2 +endstream +endobj +109 0 obj +20 +endobj +110 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAA+mwa_cmr10 /Encoding /Identity-H - /ToUnicode 109 0 R - /DescendantFonts [110 0 R] + /ToUnicode 111 0 R + /DescendantFonts [112 0 R] >> endobj -110 0 obj +112 0 obj << /Type /Font /BaseFont /EAAAAA+mwa_cmr10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 103 0 R +/FontDescriptor 105 0 R /DW 0 -/W [ 0 [365 500 500 500 500 651 391 443 526 555 555 443 526 276 750 443 276 500 500 500 916 500 500 276 388 555 388 388 776 ] ] +/W [ 0 [365 500 500 500 500 651 391 443 526 555 555 443 526 276 750 443 276 500 500 500 916 500 500 276 388 555 ] ] >> endobj -109 0 obj -<< /Length 111 0 R /Filter /FlateDecode >> +111 0 obj +<< /Length 113 0 R /Filter /FlateDecode >> stream x]n0E -/E6$RJUE*{H ,_Hw$4Ȓw׫FִF;)b5ZV]un\H]iePF%cɇF7kz`eir׵ZwȌ, {dtx&i_eG, yvvw>-1kT䤹uag.K"GXݨoVy% P - P @@E:,f9♄@5()(O (AA 2OԠJ=j=r8+P5Pb+"CCc_ C9zq)e(IQs~HLX5_ +/EB)TĢ= ,_Hxg<\%ﮗ5F9Ib ݴ)-H-;a7wa2mrd Q =0E9mnluz:2#KEWKB]Hλ%A+$9an9~]ٯ=+ִ[Uu =iA(% t@@t-F9M@I$' +o@ӏJP*PJk@<1+5G}Cf<o/8:řyհ/Z&n99' \htmh\+> endobj -113 0 obj +115 0 obj << - /Length1 1996 - /Length 115 0 R + /Length1 2292 + /Length 117 0 R /Filter /FlateDecode >> stream -xU]lUҟ[*],NWiwf-mhvm,Ĥ&[!GB!}PBAMË41 } 7L -iZ [E޹=9Ν`&D -]9H!bN#LsB`Qy:;?F _J[fj.i3MD rhޚ͝0\=jI?f3OY7k$4g̜^]@0oNVvoB+V/5 `b p̣&؏=б =؁技{k~_<JdMEn jR {F{)z `|Sꂵ5U*>.Za }ꨦcXCOzlO:̨wvM}`("ú<$͔#iPL9/5S[D1Hay(ÃCc͍7^H61CءܦؑǫǮa#}<*XУ_Ӷ$03ʎ%&ph(ƂBGRSB'n^N#a:CΞdNL3Nu{HS^F|NI(ˋ+3!:H4LFРtcԨ.ijS߮=u M#]d-t-/%Q EѥKWzi` VOK͚Vx#ZlW|#1Dym;g>Y$y}e0$jVJ +B[c<'p(\ÔPGc8rr躯>6O./zwTxy/h#֥ZOH/TqHu OTő֚C8{I=ˌ +xV[lU=w_vǍI6Huj7 D G%@MZb(jƶd!NӆGTRP@!P T"~@ x| P"PA֭xõΙ{g  DMYOʻDӚΗ9y4?b>gWhYZ?P >By˒TX-4Io.ǦY? al3_;;]ήG l9]QI$xц.$kpp` +Y<1*8H ;0~t}]:!풺%xIRP]·BU5k3[e_f^ 2^/QxɐŽw2Ws`D'7ml |MFO%1DybvQѦ@?f!2:qĐ#,OObzLj4B_QW.,kAіQ`,>LR]1R28>Ic [2wM@ˣNNtvX~KePz_:z;э?ڮټl0 6ŔF!MdWeƉ +9,AڬFV֖*ZICvx[mhvXe2h)ZQ9UQoqF$"l)K)3Qa +y(cS:эCeWN&Yeߜ2bK C.a%Ijhb͢m^vI Q;N'׺sF탍5 5yc()BI8$^P[]| B ,' |$&nPB퉁~N%6me-J6[|u-7mwRKAOCwFhzӯF)pV[ȳ4D6Ujٚw<{ᾹB]pE۰Yd}Wm;9fsj@Z I t[[H?3U8>9nJl Xk=ĔfOwyLfg 8p > (_Fqio;\;ϳ| 7 ټr9^vtbWQ@ù_s]xu%i{:^hڃ)az1µ<6P\lodԱ@LhboֱD/i%H{ec&1c:?X"6X" +tT0M=wEQ,dDnq꺃Cr%{YJN.Ĝc&"}-ZL&嘣kVn 'oGWpfeG21IYd2ɣuL1_oһ`_T֌j$cFiZ0bp$eU9mV͙93Ohƞʘ!VCJlr8*nΙ%Ue%vGmd> -stream -xk``h -endstream -endobj -116 0 obj -12 -endobj 117 0 obj +1558 +endobj +116 0 obj +<< /Length 118 0 R /Filter /FlateDecode >> +stream +xk`A +endstream +endobj +118 0 obj +12 +endobj +119 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAB+mwa_cmsy10 /Encoding /Identity-H - /ToUnicode 118 0 R - /DescendantFonts [119 0 R] + /ToUnicode 120 0 R + /DescendantFonts [121 0 R] >> endobj -119 0 obj +121 0 obj << /Type /Font /BaseFont /EAAAAB+mwa_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 112 0 R +/FontDescriptor 114 0 R /DW 0 -/W [ 0 [365 0 ] ] +/W [ 0 [365 500 500 ] ] >> endobj -118 0 obj -<< /Length 120 0 R /Filter /FlateDecode >> +120 0 obj +<< /Length 122 0 R /Filter /FlateDecode >> stream -x]Pj0 +t=,N(Y -9t[[N m琿*cah{lN^X gBpjV& -:G:g<\7^3GZghr4u#K?8PrW2< Dq$s 5jˠ9H$݈ŭL%UM5-`T *>vge#ZR:^ʁc } +x]j0 y +CqAO029t-g6sVL +زe{霍 >ȫ#4RUuڪXnIJ$qOPHsx&I#Y7hgE{MN: S?5 4|8얫`ԏ6ɘ.z\r)qP Qj}玭}XB endstream endobj -120 0 obj -236 +122 0 obj +243 endobj -121 0 obj +123 0 obj << /Type /FontDescriptor /FontName /EAAAAC+mwb_cmsy10 @@ -886,14 +880,14 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 122 0 R - /CIDSet 123 0 R + /FontFile2 124 0 R + /CIDSet 125 0 R >> endobj -122 0 obj +124 0 obj << /Length1 1968 - /Length 124 0 R + /Length 126 0 R /Filter /FlateDecode >> stream @@ -903,51 +897,51 @@ E mbkoԊ$?< N]w~p endstream endobj -124 0 obj +126 0 obj 1292 endobj -123 0 obj -<< /Length 125 0 R /Filter /FlateDecode >> +125 0 obj +<< /Length 127 0 R /Filter /FlateDecode >> stream xk endstream endobj -125 0 obj +127 0 obj 9 endobj -126 0 obj +128 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAC+mwb_cmsy10 /Encoding /Identity-H - /ToUnicode 127 0 R - /DescendantFonts [128 0 R] + /ToUnicode 129 0 R + /DescendantFonts [130 0 R] >> endobj -128 0 obj +130 0 obj << /Type /Font /BaseFont /EAAAAC+mwb_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 121 0 R +/FontDescriptor 123 0 R /DW 0 /W [ 0 [750 776 ] ] >> endobj -127 0 obj -<< /Length 129 0 R /Filter /FlateDecode >> +129 0 obj +<< /Length 131 0 R /Filter /FlateDecode >> stream x]Pj0+l CԒX}q z0h[lE^X gBpjV& :G:g} endstream endobj -129 0 obj +131 0 obj 234 endobj -130 0 obj +132 0 obj << /Type /FontDescriptor /FontName /EAAAAD+mwa_cmmi10 @@ -959,94 +953,95 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 131 0 R - /CIDSet 132 0 R + /FontFile2 133 0 R + /CIDSet 134 0 R >> endobj -131 0 obj +133 0 obj << - /Length1 3572 - /Length 133 0 R + /Length1 4288 + /Length 135 0 R /Filter /FlateDecode >> stream -xWkp[sz[eKlreOJ,[1-Ey9$&QlccH)b7%-<3̵K!%m3 30S&IGiܽ׊)=g|g# ;^QW(Ɖؒ}א# SHCٽ]o -ҩ@42?i;{*^q,dGіn?'ˇ{F}x]?Vy @k?fY>:<1*@X -"l_EGiv7{ <<?8 ?{p aaAtBZa9KU#{ͰWؗgا~650o3o2GtB_-t)R<,'pQ8^%xYx9x - G4c_Ayp 쇽pí -wD1DZogMbsQX`XpߣԎ)Gdp螫4'E$M]B"QD %Nt/ YBWF!J:l8<c{Y;.LБvF%lɁƸu\ŵ]_o=93HWC(,SYt_@`dSMfǶGDw юdr@b}EkN - -ni i:lRg"! HFIWgB{:&ς "bĂ ,EOEIF:0`޸ޞ(#/daű'>y15aM. -vV8Yޖ9Y}eYZf2{?oAn0Mv=F 9'?f7}dHϿYӘupS$Lu}t:u:8 (0]:i\au -\|i7Hi TW9*H_lZqTTU@!87K0KiT465<(g4R{L$ᤙQbi4N.0+?8c?&YDΊ5:J*v<{/ɅJ) RK; rWV 苫lR%]-ErdDVg;Zdʠ~6cV4XO߳XXgFV1 8v) ¾ըgru/_[Y^ݤSBVKYKDS̒rb" n"ab6(JcE&E*W)#6qC[MӫRGʼ;KRlzsJ!r{ȯV׷>:/=. >ٯoc..Ù89'#JM0 Jx-PGMÒ%JV\E`i:<^Acy#襁-UƜGZyvև]aP5nb,]xֶ25]Uz+]?&⬠~7˖5s`fJ/b(5Ӱ|)v]U:7ݱ䂡#uj<1i{x]n%ܛUFM-l'u[z?Ʃ\a%ǁE$ ׷3'`@PZG {:'G~>.YГg4L¨qt^ђif"i - dE 4 KyC%p 20ios rka7C\oI5f j{-r9Z)Tx+#Y6RاpI|zWleK?G`W^CF%[Ja'Ж,QQVJDDm̵ޱPzB -[$3YaGXO&=ŠlV葧 =djSGG&](d.&5ʊ\`v#mc23>eJic8L ݖM};*^뢲!>ndRl|St&˿K񵴓˘ڸA_pĴKn3oc-w\&ئ +xW l>qBIǯ8y46m8mҴI>PXţx*ZPǺhTPulb!Lb 6AY&(vSO~sνsι! ]m(k6- +^D6mr2:Oǫ LOudΩI@/MAӳP?w&{\g7ȋ[39.35|>bOa]xIx nnqX ]1hzBBesqcEMU +6v'21:CBOLћi; +P9LI1\@+F;~/yxypI8NG+E+m>Nc-Z%QʷZ&Aj*Xxq]5>b%@|xw<#uJӠ4iuh _OS>olL+ve1]L%tbiI:8<48FGd)Si-#kGѡW#຀k{]{b[Ge _"2 +|m ȃmi:kmbv AvW̖Γ}Em-e2HwYW UWl*MbiMR>Y0{hdAnE4E$kǀI#iilT^Ů1}津gsc_ P îL@agT}cҰHSHiZx]n@2JRr$bW_e+2N!awaD\rVcMC e+ŔcZWiS*4QhMD] +מּX-j¸,&DL'ܸpy¾B 3޹}y̩ν>j%8z𻵥*kT~&iiAG2\>2bX?1 11>?fI&B#cVyQ2RD$mWBnhS"qV$/=r +>QA@!Ȍ:sU#_DB뜫dy$\OsV2c)v˿~B;^6nί `;׽i[;Xrc~}p!Tٝ8F.yo^.Il* 쓴fۚ,ݕ+۝yp0~ի#Näl>!@f)OuV-~-Dc~1Qf~X+іqsF7 vm\gXmRO2RIBa~;Y{,{oo7;5sc3ŷg*j]&G-ssu{FL=59X0j1TP'-,#6G1hkiz=.YU BfCٔ!d-2"5KA5QHJWcp)csؗgǬuɪc-{7dݧҘ,,J Ga|=X)~bj]p&(b|d: &YGy؃ 2*D,nQM_]@QFހx(DlX9kggbr9,j& ~:gK➵65);w:FTQ^F省:}ɼu5}񻟐1ggǺWOni]( 5WvBKa"d;@f]e +"w<~=Y'ʞ=9_/^2m7 +_|lL +8\:d6W 5uZG(_a`~9eC_į.y6(GF# ֟û5%Ԥ&GSM|6G3HߗYВr4p$aTȝSf4 s4:Ғih9Br4Gs(?qmx)*P6u/18fn*LyEւyyKb5wGVjEg7/k.5 [s3ddMI%V(+%LJxݶgnj2C`]]+Sb_\3J.ŖiqP6/&s qU:]gbG|vz:iVؓ\HNb B637vWpWbæ Ҳsx=as&'wN'; (Uy])A0.Cˍ[7$\KYq;[RfdħO {<;k endstream endobj -133 0 obj -2592 -endobj -132 0 obj -<< /Length 134 0 R /Filter /FlateDecode >> -stream -xk```aqd``p" -endstream -endobj -134 0 obj -19 -endobj 135 0 obj +3074 +endobj +134 0 obj +<< /Length 136 0 R /Filter /FlateDecode >> +stream +xk```ej` +8I +endstream +endobj +136 0 obj +18 +endobj +137 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAD+mwa_cmmi10 /Encoding /Identity-H - /ToUnicode 136 0 R - /DescendantFonts [137 0 R] + /ToUnicode 138 0 R + /DescendantFonts [139 0 R] >> endobj -137 0 obj +139 0 obj << /Type /Font /BaseFont /EAAAAD+mwa_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 130 0 R +/FontDescriptor 132 0 R /DW 0 -/W [ 0 [365 786 713 483 970 344 276 411 ] ] +/W [ 0 [365 827 570 276 970 500 464 758 643 490 ] ] >> endobj -136 0 obj -<< /Length 138 0 R /Filter /FlateDecode >> +138 0 obj +<< /Length 140 0 R /Filter /FlateDecode >> stream -x]j sXaۅ%PR -聦}ThTWB<|3茲}jޝzg8tV YLf,$wqj`"\`a3{Q@oNSzWn'C-ʚn_9V1)>WP&.a$Ζ t\`5ܞݮՉ@y~DQ)ODU=хb<ճ+/-BSIq)klJx +x]j0>,OX +.zj 1.|O\Ow7=t(8;bMf*a8e8Ԧ!g?G5 +:mz8|Umfkp@!E{\*9*_\,BF rT8Y! ctOBpU;OnwJ4PSFt2DyTR1l3Ӆ1]wfFnScٹO9 h3Ѯ.~7j endstream endobj -138 0 obj -267 +140 0 obj +275 endobj -102 0 obj +104 0 obj << /Type /Pages /Count 1 -/Kids [100 0 R ] >> +/Kids [102 0 R ] >> endobj -139 0 obj +141 0 obj << /Type /Catalog - /Pages 102 0 R + /Pages 104 0 R /Lang (x-unknown) >> endobj -101 0 obj +103 0 obj << /Font << - /F405 108 0 R - /F406 117 0 R - /F407 126 0 R - /F408 135 0 R + /F405 110 0 R + /F406 119 0 R + /F407 128 0 R + /F408 137 0 R >> /ProcSet [/PDF /ImageB /ImageC /Text] /ExtGState << @@ -1145,11 +1140,13 @@ endobj /GS93 94 0 R /GS94 95 0 R /GS95 96 0 R + /GS96 97 0 R + /GS97 98 0 R >> >> endobj xref -0 140 +0 142 0000000000 65535 f 0000000015 00000 n 0000000145 00000 n @@ -1248,55 +1245,57 @@ xref 0000005074 00000 n 0000005121 00000 n 0000005168 00000 n -0000049013 00000 n -0000049035 00000 n -0000049060 00000 n -0000064882 00000 n -0000064743 00000 n -0000049257 00000 n -0000049512 00000 n -0000054772 00000 n -0000054750 00000 n -0000054870 00000 n -0000054890 00000 n -0000055387 00000 n -0000055049 00000 n -0000055826 00000 n -0000055847 00000 n -0000056103 00000 n -0000057549 00000 n -0000057527 00000 n -0000057639 00000 n -0000057659 00000 n -0000058048 00000 n -0000057819 00000 n -0000058362 00000 n -0000058383 00000 n -0000058635 00000 n -0000060047 00000 n -0000060025 00000 n -0000060134 00000 n -0000060153 00000 n -0000060544 00000 n -0000060313 00000 n -0000060856 00000 n -0000060877 00000 n -0000061133 00000 n -0000063845 00000 n -0000063823 00000 n -0000063942 00000 n -0000063962 00000 n -0000064377 00000 n -0000064122 00000 n -0000064722 00000 n -0000064805 00000 n +0000005215 00000 n +0000005262 00000 n +0000048237 00000 n +0000048260 00000 n +0000048286 00000 n +0000064540 00000 n +0000064401 00000 n +0000048484 00000 n +0000048739 00000 n +0000053711 00000 n +0000053689 00000 n +0000053809 00000 n +0000053829 00000 n +0000054314 00000 n +0000053988 00000 n +0000054742 00000 n +0000054763 00000 n +0000055019 00000 n +0000056697 00000 n +0000056675 00000 n +0000056787 00000 n +0000056807 00000 n +0000057202 00000 n +0000056967 00000 n +0000057523 00000 n +0000057544 00000 n +0000057796 00000 n +0000059208 00000 n +0000059186 00000 n +0000059295 00000 n +0000059314 00000 n +0000059705 00000 n +0000059474 00000 n +0000060017 00000 n +0000060038 00000 n +0000060294 00000 n +0000063488 00000 n +0000063466 00000 n +0000063584 00000 n +0000063604 00000 n +0000064027 00000 n +0000063764 00000 n +0000064380 00000 n +0000064463 00000 n trailer << - /Root 139 0 R + /Root 141 0 R /Info 1 0 R - /ID [ ] - /Size 140 + /ID [<3C649F7AB780C0FB015D2FD74A06C8A5> <3C649F7AB780C0FB015D2FD74A06C8A5>] + /Size 142 >> startxref -66450 +66138 %%EOF diff --git a/figs/detail_control_jacobian_plant_CoM.png b/figs/detail_control_jacobian_plant_CoM.png index 18b947b..37ba240 100644 Binary files a/figs/detail_control_jacobian_plant_CoM.png and b/figs/detail_control_jacobian_plant_CoM.png differ diff --git a/figs/detail_control_modal_plant.pdf b/figs/detail_control_modal_plant.pdf index eb4c682..0f74578 100644 Binary files a/figs/detail_control_modal_plant.pdf and b/figs/detail_control_modal_plant.pdf differ diff --git a/figs/detail_control_modal_plant.png b/figs/detail_control_modal_plant.png index 74e4587..7b2e467 100644 Binary files a/figs/detail_control_modal_plant.png and b/figs/detail_control_modal_plant.png differ diff --git a/figs/detail_control_model_test_CoK.pdf b/figs/detail_control_model_test_CoK.pdf new file mode 100644 index 0000000..2411b8c Binary files /dev/null and b/figs/detail_control_model_test_CoK.pdf differ diff --git a/figs/detail_control_model_test_CoK.png b/figs/detail_control_model_test_CoK.png new file mode 100644 index 0000000..4de4059 Binary files /dev/null and b/figs/detail_control_model_test_CoK.png differ diff --git a/figs/detail_control_model_test_CoK.svg b/figs/detail_control_model_test_CoK.svg new file mode 100644 index 0000000..74f396d --- /dev/null +++ b/figs/detail_control_model_test_CoK.svg @@ -0,0 +1,2707 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/detail_control_model_test_CoM.pdf b/figs/detail_control_model_test_CoM.pdf new file mode 100644 index 0000000..d63fbdb Binary files /dev/null and b/figs/detail_control_model_test_CoM.pdf differ diff --git a/figs/detail_control_model_test_CoM.png b/figs/detail_control_model_test_CoM.png new file mode 100644 index 0000000..c85dd26 Binary files /dev/null and b/figs/detail_control_model_test_CoM.png differ diff --git a/figs/detail_control_model_test_CoM.svg b/figs/detail_control_model_test_CoM.svg new file mode 100644 index 0000000..f621ff6 --- /dev/null +++ b/figs/detail_control_model_test_CoM.svg @@ -0,0 +1,2678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/detail_control_model_test_decoupling.pdf b/figs/detail_control_model_test_decoupling.pdf index 90838fc..42a6d35 100644 Binary files a/figs/detail_control_model_test_decoupling.pdf and b/figs/detail_control_model_test_decoupling.pdf differ diff --git a/figs/detail_control_model_test_decoupling.png b/figs/detail_control_model_test_decoupling.png index 7c8ecfb..e0c1f5d 100644 Binary files a/figs/detail_control_model_test_decoupling.png and b/figs/detail_control_model_test_decoupling.png differ diff --git a/figs/detail_control_model_test_decoupling.svg b/figs/detail_control_model_test_decoupling.svg index c58418d..8389158 100644 --- a/figs/detail_control_model_test_decoupling.svg +++ b/figs/detail_control_model_test_decoupling.svg @@ -18,6 +18,29 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + + + + + + + + + + + + + + + - @@ -2006,7 +2050,7 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-39.198222,-20.274061)"> + transform="translate(-39.1982, -20.2741)"> + - - - - + + + id="g2845-2" + transform="translate(-20.804689,-10.672625)"> + + + + + + + + + + + + + + + + + diff --git a/nass-control.org b/nass-control.org index 51fbf1a..7396d57 100644 --- a/nass-control.org +++ b/nass-control.org @@ -366,6 +366,150 @@ exportFig('figs/detail_control_hinf_filters_results_mixed_sensitivity.pdf', 'wid #+RESULTS: [[file:figs/detail_control_hinf_filters_results_mixed_sensitivity.png]] +*** Analytical formulas for test model + +#+begin_src matlab +%% Analytical Formula for the Jacobian Matrix +% Create symbolic variables for all parameters +syms l h la ha m I real +syms c1 c2 c3 real +syms k1 k2 k3 real + +% Unit vectors of the actuators (symbolic) +s1 = [1; 0]; % Actuator 1 direction (horizontal) +s2 = [0; 1]; % Actuator 2 direction (vertical) +s3 = [0; 1]; % Actuator 3 direction (vertical) + +% Location of the joints with respect to the center of mass (symbolic) +Mb1 = [-l/2; -ha]; % Joint 1 position vector +Mb2 = [-la; -h/2]; % Joint 2 position vector +Mb3 = [ la; -h/2]; % Joint 3 position vector + +% Jacobian matrix (Center of Mass) +J_CoM = [s1', Mb1(1)*s1(2) - Mb1(2)*s1(1); + s2', Mb2(1)*s2(2) - Mb2(2)*s2(1); + s3', Mb3(1)*s3(2) - Mb3(2)*s3(1)]; + +% Display the symbolic Jacobian matrix +disp('Symbolic Jacobian Matrix (J_CoM):'); +disp(J_CoM); + +% Jacobian at the Center of stiffness {K} +Mb1 = [-l/2; 0]; +Mb2 = [-la; -h/2+ha]; +Mb3 = [ la; -h/2+ha]; + +J_CoK = [s1', Mb1(1)*s1(2) - Mb1(2)*s1(1); + s2', Mb2(1)*s2(2) - Mb2(2)*s2(1); + s3', Mb3(1)*s3(2) - Mb3(2)*s3(1)]; + +% Display the symbolic Jacobian matrix +disp('Symbolic Jacobian Matrix (J_CoK):'); +disp(J_CoK); +#+end_src + +#+begin_src matlab +%% Analytical Formula for the Modal Decoupling +syms l h la ha m I k c s real +syms omega1 omega2 omega3 real % Natural frequencies + +% Unit vectors of the actuators +s1 = [1; 0]; % Actuator 1 direction (horizontal) +s2 = [0; 1]; % Actuator 2 direction (vertical) +s3 = [0; 1]; % Actuator 3 direction (vertical) + +% Location of the joints with respect to the center of mass (symbolic) +Mb1 = [-l/2; -ha]; % Joint 1 position vector +Mb2 = [-la; -h/2]; % Joint 2 position vector +Mb3 = [la; -h/2]; % Joint 3 position vector + +% Calculate the Jacobian matrix (Center of Mass) symbolically +J_CoM = [s1', Mb1(1)*s1(2) - Mb1(2)*s1(1); + s2', Mb2(1)*s2(2) - Mb2(2)*s2(1); + s3', Mb3(1)*s3(2) - Mb3(2)*s3(1)]; + +disp('Symbolic Jacobian Matrix (J_CoM):'); +disp(J_CoM); + +% Define system matrices +M = diag([m, m, I]); +K_struts = diag([k, k, k]); +C_struts = diag([c, c, c]); + +% Transform stiffness and damping to Cartesian space +K = J_CoM' * K_struts * J_CoM; +C = J_CoM' * C_struts * J_CoM; + +disp('Mass Matrix (M):'); +disp(M); + +disp('Stiffness Matrix (K):'); +disp(K); + +disp('Damping Matrix (C):'); +disp(C); + +% Define the plant in the frame of the struts +% G_L = J_CoM * inv(M*s^2 + C*s + K) * J_CoM' +D_cart = M*s^2 + C*s + K; % Denominator in Cartesian space +disp('Dynamic Matrix in Cartesian Space (M*s^2 + C*s + K):'); +disp(D_cart); + +% Modal Decomposition +% Calculate the eigenvalues and eigenvectors of M\K +% For a symbolic approach, we'll use the general form of eigenvectors +% [V,D] = eig(M\K) + +% Instead of direct symbolic eigendecomposition (which is complex), +% we'll use known properties of modal analysis for analytical expressions + +% First, calculate M\K (inverse mass matrix times stiffness matrix) +MK = simplify(M\K); +disp('M\K Matrix:'); +disp(MK); + +% For a mechanical system with 3 DOF, we expect 3 eigenmodes +% Let's define symbolic eigenvectors in a general form +% According to vibration theory, the eigenvectors should be orthogonal with respect to M + +% Define symbolic eigenvectors +V = sym('v', [3, 3]); + +% Define the symbolic eigenvalues (squared natural frequencies) +D = diag([omega1^2, omega2^2, omega3^2]); + +% The eigenvectors should satisfy the equation (M\K)*V = V*D +% This is equivalent to K*V = M*V*D +% We can derive this symbolically, but it's complex for 3D systems + +% For an analytical approach, we can use physics to guide us +% For this system, we expect modes corresponding to: +% 1. Horizontal translation +% 2. Vertical translation +% 3. Rotation + +% Calculate modal mass matrix (mu = V'*M*V) +mu = simplify(V' * M * V); +disp('Modal Mass Matrix (mu):'); +disp(mu); + +% Modal output matrix +Cm = simplify(J_CoM * V); +disp('Modal Output Matrix (Cm):'); +disp(Cm); + +% Modal input matrix +Bm = simplify(inv(mu) * V' * J_CoM'); +disp('Modal Input Matrix (Bm):'); +disp(Bm); + +% Plant in the modal space +% For a fully decoupled system, Gm should be diagonal +Gm = simplify(inv(Cm) * J_CoM * inv(D_cart) * J_CoM' * inv(Bm')); +disp('Plant in Modal Space (Gm):'); +disp(Gm); +#+end_src + ** DONE [#A] Fix the outline CLOSED: [2025-04-03 Thu 12:01] @@ -1828,33 +1972,32 @@ From [[cite:&thayer02_six_axis_vibrat_isolat_system]]: Experimental closed-loop control results using the hexapod have shown that controllers designed using a decentralized single-strut design work well when compared to full multivariable methodologies. #+end_quote -- [ ] Review of [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org::*Decoupling Strategies][Decoupling Strategies]] for stewart platforms +- [X] Review of [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org::*Decoupling Strategies][Decoupling Strategies]] for stewart platforms - [ ] Add some citations about different methods +- [ ] Maybe transform table into text #+name: tab:detail_control_decoupling_review #+caption: Litterature review about decoupling strategy for Stewart platform control #+attr_latex: :environment tabularx :width 0.9\linewidth :align Xccc #+attr_latex: :center t :booktabs t :font \scriptsize -| *Actuators* | *Sensors* | *Control* | *Reference* | -|---------------+---------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| -| APA | Eddy current displacement | *Decentralized* (struts) PI + LPF control | [[cite:&furutani04_nanom_cuttin_machin_using_stewar]] | -| PZT Piezo | Strain Gauge | Decentralized position feedback | [[cite:&du14_piezo_actuat_high_precis_flexib]] | -|---------------+---------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| -| Voice Coil | Force | *Cartesian frame* decoupling | [[cite:&obrien98_lesson]] | -| Voice Coil | Force | Cartesian Frame, Jacobians, IFF | [[cite:&mcinroy99_dynam;&mcinroy99_precis_fault_toler_point_using_stewar_platf;&mcinroy00_desig_contr_flexur_joint_hexap]] | -| Hydraulic | LVDT | Decentralized (strut) vs Centralized (cartesian) | [[cite:&kim00_robus_track_contr_desig_dof_paral_manip]] | -| Voice Coil | Accelerometer (collocated), ext. Rx/Ry sensors | Cartesian acceleration feedback (isolation) + 2DoF pointing control (external sensor) | [[cite:&li01_simul_vibrat_isolat_point_contr]] | -| Voice Coil | Accelerometer in each leg | Centralized Vibration Control, PI, Skyhook | [[cite:&abbas14_vibrat_stewar_platf]] | -|---------------+---------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| -| Voice Coil | Geophone + Eddy Current (Struts, collocated) | Decentralized (Sky Hook) + Centralized (*modal*) Control | [[cite:&pu11_six_degree_of_freed_activ]] | -| Piezoelectric | Force, Position | Vibration isolation, Model-Based, *Modal control*: 6x PI controllers | [[cite:&yang19_dynam_model_decoup_contr_flexib]] | -|---------------+---------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| -| PZT | Geophone (struts) | *H-Infinity* and mu-synthesis | [[cite:&lei08_multi_objec_robus_activ_vibrat]] | +| *Actuators* | *Sensors* | *Control* | *Reference* | +|---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| APA | Eddy current displacement | *Decentralized* (struts) PI + LPF control | [[cite:&furutani04_nanom_cuttin_machin_using_stewar]] | +| PZT Piezo | Strain Gauge | Decentralized position feedback | [[cite:&du14_piezo_actuat_high_precis_flexib]] | +|---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| Voice Coil | Force | *Cartesian frame* decoupling | [[cite:&obrien98_lesson]] | +| Voice Coil | Force | Cartesian Frame, Jacobians, IFF | [[cite:&mcinroy99_dynam;&mcinroy99_precis_fault_toler_point_using_stewar_platf;&mcinroy00_desig_contr_flexur_joint_hexap]] | +| Hydraulic | LVDT | Decentralized (strut) vs Centralized (cartesian) | [[cite:&kim00_robus_track_contr_desig_dof_paral_manip]] | +| Voice Coil | Accelerometer (collocated), ext. Rx/Ry sensors | Cartesian acceleration feedback (isolation) + 2DoF pointing control (external sensor) | [[cite:&li01_simul_vibrat_isolat_point_contr]] | +| Voice Coil | Accelerometer in each leg | Centralized Vibration Control, PI, Skyhook | [[cite:&abbas14_vibrat_stewar_platf]] | +|---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| Voice Coil | Geophone + Eddy Current (Struts, collocated) | Decentralized (Sky Hook) + Centralized (*modal*) Control | [[cite:&pu11_six_degree_of_freed_activ]] | +| Piezoelectric | Force, Position | Vibration isolation, Model-Based, *Modal control*: 6x PI controllers | [[cite:&yang19_dynam_model_decoup_contr_flexib]] | +|---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| PZT | Geophone (struts) | *H-Infinity* and mu-synthesis | [[cite:&lei08_multi_objec_robus_activ_vibrat]] | | Voice Coil | Force sensors (struts) + accelerometer (cartesian) | Decentralized Force Feedback + Centralized H2 control based on accelerometers | [[cite:&xie17_model_contr_hybrid_passiv_activ]] | -| Voice Coil | Accelerometers | MIMO H-Infinity, active damping | [[cite:&jiao18_dynam_model_exper_analy_stewar]] | +| Voice Coil | Accelerometers | MIMO H-Infinity, active damping | [[cite:&jiao18_dynam_model_exper_analy_stewar]] | -Assumptions: -- parallel manipulators The goal of this section is to compare the use of several methods for the decoupling of parallel manipulators. @@ -1893,67 +2036,14 @@ freqs = logspace(0, 3, 1000); ** Test Model <> -- a test model will be used to compare all the decoupling strategies +- Instead of comparing the decoupling strategies using the Stewart platform, a similar yet much simpler parallel manipulator is used instead - to render the analysis simpler, the system of Figure ref:fig:detail_control_model_test_decoupling_detail is used - It has 3DoF, and has 3 parallels struts whose model is shown in Figure ref:fig:detail_control_strut_model - It is quite similar to the Stewart platform (parallel architecture, as many struts as DoF) -- [ ] Write the equation of motion - - Write the equation of motion at the center of mass - - mass + Inertia, stiffness, damping, actuator forces (mapped using Jacobian) - - Write it in matrix form -- [X] Show the used parameters (table ?) - -\begin{equation} - \bm{M}_{\{M\}} = \begin{bmatrix} - m & 0 & 0 \\ - 0 & m & 0 \\ - 0 & 0 & I - \end{bmatrix} -\end{equation} - -\begin{equation} - \bm{\mathcal{K}} = \begin{bmatrix} - k & 0 & 0 \\ - 0 & k & 0 \\ - 0 & 0 & k - \end{bmatrix}, \quad \bm{\mathcal{C}} = \begin{bmatrix} - c & 0 & 0 \\ - 0 & c & 0 \\ - 0 & 0 & c - \end{bmatrix} -\end{equation} - -\begin{equation} - \bm{J}_{\{M\}} = \begin{bmatrix} - 1 & 0 & h_a \\ - 0 & 1 & -l_a \\ - 0 & 1 & l_a \\ - \end{bmatrix} -\end{equation} - -Recall the Jacobian relationships: -Let's link forces and torques applied at the CoM - -\begin{equation} -M_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}} + \bm{J}_{\{M\}}^t \bm{\mathcal{C}} \bm{J}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}} + \bm{J}_{\{M\}}^t \bm{\mathcal{K}} \bm{J}_{\{M\}} \bm{\mathcal{X}}_{\{M\}} = \bm{\mathcal{F}}_{\{M\}} -\end{equation} - -with $\bm{\mathcal{X}}_{\{M\}}$ the two translation and one rotation expressed with respect to the center of mass. -$\bm{\mathcal{F}}_{\{M\}}$ forces and torque applied at the center of mass. - -\begin{equation} - \bm{\mathcal{X}}_{\{M\}} = \begin{bmatrix} - x \\ - y \\ - R_z - \end{bmatrix}, \quad \bm{\mathcal{F}}_{\{M\}} = \begin{bmatrix} - F_x \\ - F_y \\ - M_z - \end{bmatrix} -\end{equation} - +Two frames are defined: +- $\{M\}$ with origin $O_M$ at the Center of mass of the solid body +- $\{K\}$ with origin $O_K$ at the Center of mass of the parallel manipulator #+name: fig:detail_control_model_test_decoupling_detail #+caption: 3DoF model used to study decoupling strategies @@ -1973,171 +2063,84 @@ $\bm{\mathcal{F}}_{\{M\}}$ forces and torque applied at the center of mass. #+end_subfigure #+end_figure -$\tau_i$ are the actuator forces -$\mathcal{L}_i$ are the relative displacement of the struts +First, the equation of motion are derived. +Expressing the second law of Newton on the suspended mass, expressed at its center of mass gives -Two frames are defined: -- $\{M\}$ with origin $O_M$ at the Center of mass of the solid body -- $\{K\}$ with origin $O_K$ at the Center of mass of the parallel manipulator +\begin{equation} + M_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) = \sum \bm{\mathcal{F}}_{\{M\}}(t) +\end{equation} + +with $\bm{\mathcal{X}}_{\{M\}}$ the two translation and one rotation expressed with respect to the center of mass and $\bm{\mathcal{F}}_{\{M\}}$ forces and torque applied at the center of mass. + +\begin{equation} + \bm{\mathcal{X}}_{\{M\}} = \begin{bmatrix} + x \\ + y \\ + R_z + \end{bmatrix}, \quad \bm{\mathcal{F}}_{\{M\}} = \begin{bmatrix} + F_x \\ + F_y \\ + M_z + \end{bmatrix} +\end{equation} + +In order to map the spring, damping and actuator forces to XY forces and Z torque expressed at the center of mass, the Jacobian matrix $\bm{J}_{\{M\}}$ is used. + +\begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM} + \bm{J}_{\{M\}} = \begin{bmatrix} + 1 & 0 & h_a \\ + 0 & 1 & -l_a \\ + 0 & 1 & l_a \\ + \end{bmatrix} +\end{equation} + +Then, the equation of motion linking the actuator forces $\tau$ to the motion of the mass $\bm{\mathcal{X}}_{\{M\}}$ is obtained. + +\begin{equation}\label{eq:detail_control_decoupling_plant_cartesian} + M_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^t \bm{\mathcal{C}} \bm{J}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^t \bm{\mathcal{K}} \bm{J}_{\{M\}} \bm{\mathcal{X}}_{\{M\}}(t) = \bm{J}_{\{M\}}^t \bm{\tau}(t) +\end{equation} + +Matrices representing the payload inertia as well as the actuator stiffness and damping are shown in + +\begin{equation} + \bm{M}_{\{M\}} = \begin{bmatrix} + m & 0 & 0 \\ + 0 & m & 0 \\ + 0 & 0 & I + \end{bmatrix}, \quad + \bm{\mathcal{K}} = \begin{bmatrix} + k & 0 & 0 \\ + 0 & k & 0 \\ + 0 & 0 & k + \end{bmatrix}, \quad + \bm{\mathcal{C}} = \begin{bmatrix} + c & 0 & 0 \\ + 0 & c & 0 \\ + 0 & 0 & c + \end{bmatrix} +\end{equation} + +Parameters used for the following analysis are summarized in table ref:tab:detail_control_decoupling_test_model_params. #+name: tab:detail_control_decoupling_test_model_params #+caption: Model parameters #+attr_latex: :environment tabularx :width 0.9\linewidth :align cXc #+attr_latex: :center t :booktabs t :font \scriptsize -| *Parameter* | *Description* | *Value* | -|-------------+---------------------------------------------------+-------------------| -| $b_i$ | Location of the joints on the top platform | $b_1 = $ | -| $\hat{s}_i$ | Unit vector corresponding to the struts direction | | -| $l_a$ | | $0.5\,m$ | -| $h_a$ | | $0.2\,m$ | -| $k$ | Actuator stiffness | $10\,N/\mu m$ | -| $c$ | Actuator damping | $200\,Ns/m$ | -| $m$ | Payload mass | $40\,\text{kg}$ | -| $I$ | Payload rotational inertia | $5\,\text{kg}m^2$ | +| *Parameter* | *Description* | *Value* | +|-------------+----------------------------+-------------------| +| $l_a$ | | $0.5\,m$ | +| $h_a$ | | $0.2\,m$ | +| $k$ | Actuator stiffness | $10\,N/\mu m$ | +| $c$ | Actuator damping | $200\,Ns/m$ | +| $m$ | Payload mass | $40\,\text{kg}$ | +| $I$ | Payload rotational inertia | $5\,\text{kg}m^2$ | -#+begin_src matlab -%% Analytical Formula for the Jacobian Matrix -% Create symbolic variables for all parameters -syms l h la ha m I real -syms c1 c2 c3 real -syms k1 k2 k3 real +** Control in the frame of the struts -% Unit vectors of the actuators (symbolic) -s1 = [1; 0]; % Actuator 1 direction (horizontal) -s2 = [0; 1]; % Actuator 2 direction (vertical) -s3 = [0; 1]; % Actuator 3 direction (vertical) +Let's first study the obtained dynamics in the frame of the struts. +The equation of motion linking actuator forces $\bm{\mathcal{\tau}}$ to strut relative motion $\bm{\mathcal{L}}$ is obtained from eqref:eq:detail_control_decoupling_plant_cartesian by mapping the cartesian motion of the mass to the relative motion of the struts using the Jacobian matrix $\bm{J}_{\{M\}}$ eqref:eq:detail_control_decoupling_jacobian_CoM . -% Location of the joints with respect to the center of mass (symbolic) -Mb1 = [-l/2; -ha]; % Joint 1 position vector -Mb2 = [-la; -h/2]; % Joint 2 position vector -Mb3 = [ la; -h/2]; % Joint 3 position vector - -% Jacobian matrix (Center of Mass) -J_CoM = [s1', Mb1(1)*s1(2) - Mb1(2)*s1(1); - s2', Mb2(1)*s2(2) - Mb2(2)*s2(1); - s3', Mb3(1)*s3(2) - Mb3(2)*s3(1)]; - -% Display the symbolic Jacobian matrix -disp('Symbolic Jacobian Matrix (J_CoM):'); -disp(J_CoM); - -% Jacobian at the Center of stiffness {K} -Mb1 = [-l/2; 0]; -Mb2 = [-la; -h/2+ha]; -Mb3 = [ la; -h/2+ha]; - -J_CoK = [s1', Mb1(1)*s1(2) - Mb1(2)*s1(1); - s2', Mb2(1)*s2(2) - Mb2(2)*s2(1); - s3', Mb3(1)*s3(2) - Mb3(2)*s3(1)]; - -% Display the symbolic Jacobian matrix -disp('Symbolic Jacobian Matrix (J_CoK):'); -disp(J_CoK); -#+end_src - -#+begin_src matlab -%% Analytical Formula for the Modal Decoupling -syms l h la ha m I k c s real -syms omega1 omega2 omega3 real % Natural frequencies - -% Unit vectors of the actuators -s1 = [1; 0]; % Actuator 1 direction (horizontal) -s2 = [0; 1]; % Actuator 2 direction (vertical) -s3 = [0; 1]; % Actuator 3 direction (vertical) - -% Location of the joints with respect to the center of mass (symbolic) -Mb1 = [-l/2; -ha]; % Joint 1 position vector -Mb2 = [-la; -h/2]; % Joint 2 position vector -Mb3 = [la; -h/2]; % Joint 3 position vector - -% Calculate the Jacobian matrix (Center of Mass) symbolically -J_CoM = [s1', Mb1(1)*s1(2) - Mb1(2)*s1(1); - s2', Mb2(1)*s2(2) - Mb2(2)*s2(1); - s3', Mb3(1)*s3(2) - Mb3(2)*s3(1)]; - -disp('Symbolic Jacobian Matrix (J_CoM):'); -disp(J_CoM); - -% Define system matrices -M = diag([m, m, I]); -K_struts = diag([k, k, k]); -C_struts = diag([c, c, c]); - -% Transform stiffness and damping to Cartesian space -K = J_CoM' * K_struts * J_CoM; -C = J_CoM' * C_struts * J_CoM; - -disp('Mass Matrix (M):'); -disp(M); - -disp('Stiffness Matrix (K):'); -disp(K); - -disp('Damping Matrix (C):'); -disp(C); - -% Define the plant in the frame of the struts -% G_L = J_CoM * inv(M*s^2 + C*s + K) * J_CoM' -D_cart = M*s^2 + C*s + K; % Denominator in Cartesian space -disp('Dynamic Matrix in Cartesian Space (M*s^2 + C*s + K):'); -disp(D_cart); - -% Modal Decomposition -% Calculate the eigenvalues and eigenvectors of M\K -% For a symbolic approach, we'll use the general form of eigenvectors -% [V,D] = eig(M\K) - -% Instead of direct symbolic eigendecomposition (which is complex), -% we'll use known properties of modal analysis for analytical expressions - -% First, calculate M\K (inverse mass matrix times stiffness matrix) -MK = simplify(M\K); -disp('M\K Matrix:'); -disp(MK); - -% For a mechanical system with 3 DOF, we expect 3 eigenmodes -% Let's define symbolic eigenvectors in a general form -% According to vibration theory, the eigenvectors should be orthogonal with respect to M - -% Define symbolic eigenvectors -V = sym('v', [3, 3]); - -% Define the symbolic eigenvalues (squared natural frequencies) -D = diag([omega1^2, omega2^2, omega3^2]); - -% The eigenvectors should satisfy the equation (M\K)*V = V*D -% This is equivalent to K*V = M*V*D -% We can derive this symbolically, but it's complex for 3D systems - -% For an analytical approach, we can use physics to guide us -% For this system, we expect modes corresponding to: -% 1. Horizontal translation -% 2. Vertical translation -% 3. Rotation - -% Calculate modal mass matrix (mu = V'*M*V) -mu = simplify(V' * M * V); -disp('Modal Mass Matrix (mu):'); -disp(mu); - -% Modal output matrix -Cm = simplify(J_CoM * V); -disp('Modal Output Matrix (Cm):'); -disp(Cm); - -% Modal input matrix -Bm = simplify(inv(mu) * V' * J_CoM'); -disp('Modal Input Matrix (Bm):'); -disp(Bm); - -% Plant in the modal space -% For a fully decoupled system, Gm should be diagonal -Gm = simplify(inv(Cm) * J_CoM * inv(D_cart) * J_CoM' * inv(Bm')); -disp('Plant in Modal Space (Gm):'); -disp(Gm); -#+end_src - -** Decentralized Plant / Control in the frame of the struts +The transfer function from $\bm{\mathcal{\tau}}$ to $\bm{\mathcal{L}}$ is shown in equation eqref:eq:detail_control_decoupling_plant_decentralized. #+begin_src latex :file detail_control_decoupling_control_struts.pdf \begin{tikzpicture} @@ -2150,18 +2153,20 @@ disp(Gm); #+end_src #+RESULTS: -[[file:figs/detail_control_jacobian_decoupling_arch.png]] +[[file:figs/detail_control_decoupling_control_struts.png]] -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_plant_decentralized} \frac{\bm{\mathcal{L}}}{\bm{\mathcal{\tau}}}(s) = \bm{G}_{\mathcal{L}}(s) = \left( \bm{J}_{\{M\}}^{-t} M_{\{M\}} \bm{J}_{\{M\}}^{-1} s^2 + \bm{\mathcal{C}} s + \bm{\mathcal{K}} \right)^{-1} \end{equation} -At low frequency the plant converges to a diagonal constant matrix whose diagonal elements are linked to the actuator stiffnesses. +At low frequency the plant converges to a diagonal constant matrix whose diagonal elements are linked to the actuator stiffnesses eqref:eq:detail_control_decoupling_plant_decentralized_low_freq. -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_plant_decentralized_low_freq} \bm{G}_{\mathcal{L}}(j\omega) \xrightarrow[\omega \to 0]{} \bm{\mathcal{K}^{-1}} \end{equation} +At high frequency, the plant converges to the mass matrix mapped in the frame of the struts, which is in general highly non-diagonal. + #+begin_src matlab %% Compute Equation of motion l = 1; h=2; @@ -2214,6 +2219,8 @@ G_L = J_CoM*inv(M*s^2 + C*s + K)*J_CoM'; #+end_src The magnitude of the coupled plant $\bm{G}_{\mathcal{L}}$ is shown in Figure ref:fig:detail_control_coupled_plant_bode. +This confirms that at low frequency (below the first suspension mode), the plant is well decoupled. +Depending on the symmetry in the system, some diagonal elements may be equal (such as for struts 2 and 3 in this example). #+begin_src matlab :exports none figure; @@ -2253,35 +2260,35 @@ exportFig('figs/detail_control_coupled_plant_bode.pdf', 'width', 'full', 'height #+RESULTS: [[file:figs/detail_control_coupled_plant_bode.png]] + ** Jacobian Decoupling <> **** Jacobian Matrix -The Jacobian matrix can be used to: -- Convert joints velocity $\dot{\mathcal{L}}$ to payload velocity and angular velocity $\dot{\bm{\mathcal{X}}}_{\{O\}}$: - \[ \dot{\bm{\mathcal{X}}}_{\{O\}} = J_{\{O\}} \dot{\bm{\mathcal{L}}} \] -- Convert actuators forces $\bm{\tau}$ to forces/torque applied on the payload $\bm{\mathcal{F}}_{\{O\}}$: - \[ \bm{\mathcal{F}}_{\{O\}} = J_{\{O\}}^T \bm{\tau} \] -with $\{O\}$ any chosen frame. +As already explained, the Jacobian matrix can be used to both convert strut velocity $\dot{\mathcal{L}}$ to payload velocity and angular velocity $\dot{\bm{\mathcal{X}}}_{\{O\}}$ and Convert actuators forces $\bm{\tau}$ to forces/torque applied on the payload $\bm{\mathcal{F}}_{\{O\}}$ eqref:eq:detail_control_decoupling_jacobian. -By wisely choosing frame $\{O\}$, we can obtain nice decoupling for plant: -\begin{equation} - \bm{G}_{\{O\}} = J_{\{O\}}^{-1} \bm{G} J_{\{O\}}^{-T} -\end{equation} +\begin{subequations}\label{eq:detail_control_decoupling_jacobian} + \begin{align} + \dot{\bm{\mathcal{X}}}_{\{O\}} &= J_{\{O\}} \dot{\bm{\mathcal{L}}}, \quad \dot{\bm{\mathcal{L}}} = J_{\{O\}}^{-1} \dot{\bm{\mathcal{X}}}_{\{O\}} \\ + \bm{\mathcal{F}}_{\{O\}} &= J_{\{O\}}^t \bm{\tau}, \quad \bm{\tau} = J_{\{O\}}^{-t} \bm{\mathcal{F}}_{\{O\}} + \end{align} +\end{subequations} -The obtained plan corresponds to forces/torques applied on origin of frame $\{O\}$ to the translation/rotation of the payload expressed in frame $\{O\}$. +The obtained plan (Figure ref:fig:detail_control_jacobian_decoupling_arch) has inputs and outputs that have physical meaning: +- $\bm{\mathcal{F}}_{\{O\}}$ are forces/torques applied on the payload at the origin of frame $\{O\}$ +- $\bm{\mathcal{X}}_{\{O\}}$ are translations/rotation of the payload expressed in frame $\{O\}$ #+begin_src latex :file detail_control_decoupling_control_jacobian.pdf \begin{tikzpicture} - \node[block] (G) {$\bm{G}$}; + \node[block] (G) {$\bm{G}_{\{\mathcal{L}\}}$}; \node[block, left=0.6 of G] (Jt) {$J_{\{O\}}^{-T}$}; \node[block, right=0.6 of G] (Ja) {$J_{\{O\}}^{-1}$}; % Connections and labels - \draw[<-] (Jt.west) -- ++(-1.2, 0) node[above right]{$\bm{\mathcal{F}}_{\{O\}}$}; + \draw[<-] (Jt.west) -- ++(-1.4, 0) node[above right]{$\bm{\mathcal{F}}_{\{O\}}$}; \draw[->] (Jt.east) -- (G.west) node[above left]{$\bm{\tau}$}; \draw[->] (G.east) -- (Ja.west) node[above left]{$\bm{\mathcal{L}}$}; - \draw[->] (Ja.east) -- ++( 1.2, 0) node[above left]{$\bm{\mathcal{X}}_{\{O\}}$}; + \draw[->] (Ja.east) -- ++( 1.4, 0) node[above left]{$\bm{\mathcal{X}}_{\{O\}}$}; \begin{scope}[on background layer] \node[fit={(Jt.south west) (Ja.north east)}, fill=black!10!white, draw, dashed, inner sep=4pt] (Gx) {}; @@ -2293,40 +2300,22 @@ The obtained plan corresponds to forces/torques applied on origin of frame $\{O\ #+name: fig:detail_control_jacobian_decoupling_arch #+caption: Block diagram of the transfer function from $\bm{\mathcal{F}}_{\{O\}}$ to $\bm{\mathcal{X}}_{\{O\}}$ #+RESULTS: -[[file:figs/detail_control_jacobian_decoupling_arch.png]] +[[file:figs/detail_control_decoupling_control_jacobian.png]] -The Jacobian matrix is only based on the geometry of the system and does not depend on the physical properties such as mass and stiffness. +\begin{equation}\label{eq:detail_control_decoupling_plant_jacobian} + \frac{\bm{\mathcal{X}}_{\{O\}}}{\bm{\mathcal{F}}_{\{O\}}}(s) = \bm{G}_{\{O\}}(s) = \left( \bm{J}_{\{O\}}^t \bm{J}_{\{M\}}^{-T} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{O\}} s^2 + \bm{J}_{\{O\}}^t \bm{\mathcal{C}} \bm{J}_{\{O\}} s + \bm{J}_{\{O\}}^t \bm{\mathcal{K}} \bm{J}_{\{O\}} \right)^{-1} +\end{equation} -The inputs and outputs of the decoupled plant $\bm{G}_{\{O\}}$ have physical meaning: -- $\bm{\mathcal{F}}_{\{O\}}$ are forces/torques applied on the payload at the origin of frame $\{O\}$ -- $\bm{\mathcal{X}}_{\{O\}}$ are translations/rotation of the payload expressed in frame $\{O\}$ - -It is then easy to include a reference tracking input that specify the wanted motion of the payload in the frame $\{O\}$. - -Decoupling properties depends on the chosen frame $\{O\}$. +The frame $\{O\}$ can be any chosen frame, but the decoupling properties depends on the chosen frame $\{O\}$. +There are two natural choices: the center of mass $\{M\}$ and the center of stiffness $\{K\}$. +Note that the Jacobian matrix is only based on the geometry of the system and does not depend on the physical properties such as mass and stiffness. **** Center Of Mass -#+begin_src latex :file detail_control_decoupling_control_jacobian_CoM.pdf -\begin{tikzpicture} - \node[block] (G) {$\bm{G}$}; - \node[block, left=0.6 of G] (Jt) {$J_{\{M\}}^{-T}$}; - \node[block, right=0.6 of G] (Ja) {$J_{\{M\}}^{-1}$}; +If the center of mass is chosen as the decoupling frame. +The Jacobian matrix and its inverse are expressed in eqref:eq:detail_control_decoupling_jacobian_CoM_inverse. - % Connections and labels - \draw[<-] (Jt.west) -- ++(-1.8, 0) node[above right]{$\bm{\mathcal{F}}_{\{M\}}$}; - \draw[->] (Jt.east) -- (G.west) node[above left]{$\bm{\tau}$}; - \draw[->] (G.east) -- (Ja.west) node[above left]{$\bm{\mathcal{L}}$}; - \draw[->] (Ja.east) -- ++( 1.8, 0) node[above left]{$\bm{\mathcal{X}}_{\{M\}}$}; - - \begin{scope}[on background layer] - \node[fit={(Jt.south west) (Ja.north east)}, fill=black!10!white, draw, dashed, inner sep=16pt] (Gx) {}; - \node[below right] at (Gx.north west) {$\bm{G}_{\{M\}}$}; - \end{scope} -\end{tikzpicture} -#+end_src - -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM_inverse} J_{\{M\}} = \begin{bmatrix} 1 & 0 & h_a \\ 0 & 1 & -l_a \\ @@ -2338,29 +2327,53 @@ Decoupling properties depends on the chosen frame $\{O\}$. \end{bmatrix} \end{equation} -Analytical formula of the plant: +#+begin_src latex :file detail_control_decoupling_control_jacobian_CoM.pdf +\begin{tikzpicture} + \node[block] (G) {$\bm{G}_{\{\mathcal{L}\}}$}; + \node[block, left=0.6 of G] (Jt) {$J_{\{M\}}^{-T}$}; + \node[block, right=0.6 of G] (Ja) {$J_{\{M\}}^{-1}$}; -\begin{equation} + % Connections and labels + \draw[<-] (Jt.west) -- ++(-1.4, 0) node[above right]{$\bm{\mathcal{F}}_{\{M\}}$}; + \draw[->] (Jt.east) -- (G.west) node[above left]{$\bm{\tau}$}; + \draw[->] (G.east) -- (Ja.west) node[above left]{$\bm{\mathcal{L}}$}; + \draw[->] (Ja.east) -- ++( 1.4, 0) node[above left]{$\bm{\mathcal{X}}_{\{M\}}$}; + + \begin{scope}[on background layer] + \node[fit={(Jt.south west) (Ja.north east)}, fill=black!10!white, draw, dashed, inner sep=4pt] (Gx) {}; + \node[above] at (Gx.north) {$\bm{G}_{\{M\}}$}; + \end{scope} +\end{tikzpicture} +#+end_src + +#+RESULTS: +# [[file:figs/detail_control_decoupling_control_jacobian_CoM.png]] + +Analytical formula of the plant is eqref:eq:detail_control_decoupling_plant_CoM. + +\begin{equation}\label{eq:detail_control_decoupling_plant_CoM} \frac{\bm{\mathcal{X}}_{\{M\}}}{\bm{\mathcal{F}}_{\{M\}}}(s) = \bm{G}_{\{M\}}(s) = \left( \bm{M}_{\{M\}} s^2 + \bm{J}_{\{M\}}^t \bm{\mathcal{C}} \bm{J}_{\{M\}} s + \bm{J}_{\{M\}}^t \bm{\mathcal{K}} \bm{J}_{\{M\}} \right)^{-1} \end{equation} -At high frequency, converges towards the inverse of the mass matrix: +At high frequency, converges towards the inverse of the mass matrix, which is a diagonal matrix eqref:eq:detail_control_decoupling_plant_CoM_high_freq. -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_plant_CoM_high_freq} \bm{G}_{\{M\}}(j\omega) \xrightarrow[\omega \to \infty]{} -\omega^2 \bm{M}_{\{M\}}^{-1} = -\omega^2 \begin{bmatrix} -1/m & 0 & 0 \\ -0 & 1/m & 0 \\ -0 & 0 & 1/I -\end{bmatrix} + 1/m & 0 & 0 \\ + 0 & 1/m & 0 \\ + 0 & 0 & 1/I + \end{bmatrix} \end{equation} - - -Plant is well decoupled above the suspension mode with the highest frequency. +Plant is therefore well decoupled above the suspension mode with the highest frequency. Such strategy is usually applied on systems with low frequency suspension modes, such that the plant corresponds to decoupled mass lines. - [ ] Reference to some papers about vibration isolation or ASML? +The coupling at low frequency can easily be understood physically. +When a static (or with frequency lower than the suspension modes) force is applied at the center of mass, rotation is induced by the stiffness of the first actuator, not in line with the force application point. +this is illustrated in Figure ref:fig:detail_control_model_test_CoM. + #+begin_src matlab %% Jacobian Decoupling - Center of Mass G_CoM = pinv(J_CoM)*G_L*pinv(J_CoM'); @@ -2371,56 +2384,67 @@ G_CoM.OutputName = {'Dx', 'Dy', 'Rz'}; #+begin_src matlab :exports none figure; hold on; -for i_in = 1:3 - for i_out = [i_in+1:3] - plot(freqs, abs(squeeze(freqresp(G_CoM(i_out, i_in), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... - 'HandleVisibility', 'off'); - end -end -plot(freqs, abs(squeeze(freqresp(G_CoM(1, 2), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... - 'DisplayName', '$G_{CoM}(i,j)\ i \neq j$'); -set(gca,'ColorOrderIndex',1) -for i_in_out = 1:3 - plot(freqs, abs(squeeze(freqresp(G_CoM(i_in_out, i_in_out), freqs, 'Hz'))), 'DisplayName', sprintf('$G_{CoM}(%d,%d)$', i_in_out, i_in_out)); -end +plot(freqs, abs(squeeze(freqresp(G_CoM(1, 3), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... + 'DisplayName', '$D_{x,\{M\}}/M_{z,\{M\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoM(3, 1), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... + 'DisplayName', '$R_{z,\{M\}}/F_{x,\{M\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoM(1, 1), freqs, 'Hz'))), 'color', colors(1,:), 'DisplayName', '$D_{x,\{M\}}/F_{x,\{M\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoM(2, 2), freqs, 'Hz'))), 'color', colors(2,:), 'DisplayName', '$D_{y,\{M\}}/F_{y,\{M\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoM(3, 3), freqs, 'Hz'))), 'color', colors(3,:), 'DisplayName', '$R_{z,\{M\}}/M_{z,\{M\}}$'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); xlabel('Frequency [Hz]'); ylabel('Magnitude'); ylim([1e-10, 1e-3]); -leg = legend('location', 'northeast', 'FontSize', 8); +leg = legend('location', 'southwest', 'FontSize', 8); leg.ItemTokenSize(1) = 18; #+end_src #+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/detail_control_jacobian_plant_CoM.pdf', 'width', 'wide', 'height', 'normal'); +exportFig('figs/detail_control_jacobian_plant_CoM.pdf', 'width', 'half', 'height', 'normal'); #+end_src -#+name: fig:detail_control_jacobian_plant_CoM -#+caption: Plant decoupled using the Jacobian matrices $G_x(s)$ -#+RESULTS: +#+name: fig:detail_control_jacobian_plant_CoM_results +#+caption: Plant decoupled using the Jacobian matrix expresssed at the center of mass (\subref{fig:detail_control_jacobian_plant_CoM}). The physical reason for low frequency coupling is illustrated in (\subref{fig:detail_control_model_test_CoM}). +#+attr_latex: :options [htbp] +#+begin_figure +#+attr_latex: :caption \subcaption{\label{fig:detail_control_jacobian_plant_CoM}Dynamics at the CoM} +#+attr_latex: :options {0.48\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.95\linewidth [[file:figs/detail_control_jacobian_plant_CoM.png]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:detail_control_model_test_CoM}Static force applied at the CoM} +#+attr_latex: :options {0.48\textwidth} +#+begin_subfigure +#+attr_latex: :scale 1 +[[file:figs/detail_control_model_test_CoM.png]] +#+end_subfigure +#+end_figure **** Center Of Stiffness #+begin_src latex :file detail_control_decoupling_control_jacobian_CoK.pdf \begin{tikzpicture} - \node[block] (G) {$\bm{G}$}; + \node[block] (G) {$\bm{G}_{\{\mathcal{L}\}}$}; \node[block, left=0.6 of G] (Jt) {$J_{\{K\}}^{-T}$}; \node[block, right=0.6 of G] (Ja) {$J_{\{K\}}^{-1}$}; % Connections and labels - \draw[<-] (Jt.west) -- ++(-1.8, 0) node[above right]{$\bm{\mathcal{F}}_{\{K\}}$}; + \draw[<-] (Jt.west) -- ++(-1.4, 0) node[above right]{$\bm{\mathcal{F}}_{\{K\}}$}; \draw[->] (Jt.east) -- (G.west) node[above left]{$\bm{\tau}$}; \draw[->] (G.east) -- (Ja.west) node[above left]{$\bm{\mathcal{L}}$}; - \draw[->] (Ja.east) -- ++( 1.8, 0) node[above left]{$\bm{\mathcal{X}}_{\{K\}}$}; + \draw[->] (Ja.east) -- ++( 1.4, 0) node[above left]{$\bm{\mathcal{X}}_{\{K\}}$}; \begin{scope}[on background layer] - \node[fit={(Jt.south west) (Ja.north east)}, fill=black!10!white, draw, dashed, inner sep=16pt] (Gx) {}; - \node[below right] at (Gx.north west) {$\bm{G}_{\{K\}}$}; + \node[fit={(Jt.south west) (Ja.north east)}, fill=black!10!white, draw, dashed, inner sep=4pt] (Gx) {}; + \node[above] at (Gx.north) {$\bm{G}_{\{K\}}$}; \end{scope} \end{tikzpicture} #+end_src +#+RESULTS: +# [[file:figs/detail_control_decoupling_control_jacobian_CoK.png]] + \begin{equation} J_{\{K\}} = \begin{bmatrix} 1 & 0 & 0 \\ @@ -2436,8 +2460,8 @@ exportFig('figs/detail_control_jacobian_plant_CoM.pdf', 'width', 'wide', 'height Frame $\{K\}$ is chosen such that $\bm{J}_{\{K\}}^t \bm{\mathcal{K}} \bm{J}_{\{K\}}$ is diagonal. Typically, it can me made based on physical reasoning as is the case here. -\begin{equation} - \frac{\bm{\mathcal{X}}_{\{F\}}}{\bm{\mathcal{F}}_{\{F\}}}(s) = \bm{G}_{\{K\}}(s) = \left( \bm{J}_{\{K\}}^t \bm{J}_{\{M\}}^{-T} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{K\}} s^2 + \bm{J}_{\{K\}}^t \bm{\mathcal{C}} \bm{J}_{\{K\}} s + \bm{J}_{\{K\}}^t \bm{\mathcal{K}} \bm{J}_{\{K\}} \right)^{-1} +\begin{equation}\label{eq:detail_control_decoupling_plant_CoK} + \frac{\bm{\mathcal{X}}_{\{K\}}}{\bm{\mathcal{F}}_{\{K\}}}(s) = \bm{G}_{\{K\}}(s) = \left( \bm{J}_{\{K\}}^t \bm{J}_{\{M\}}^{-T} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{K\}} s^2 + \bm{J}_{\{K\}}^t \bm{\mathcal{C}} \bm{J}_{\{K\}} s + \bm{J}_{\{K\}}^t \bm{\mathcal{K}} \bm{J}_{\{K\}} \right)^{-1} \end{equation} Plant is well decoupled below the suspension mode with the lowest frequency. @@ -2447,6 +2471,11 @@ This is usually suited for systems which high stiffness. \bm{G}_{\{K\}}(j\omega) \xrightarrow[\omega \to 0]{} \bm{J}_{\{K\}}^{-1} \bm{\mathcal{K}}^{-1} \bm{J}_{\{K\}}^{-t} \end{equation} + +The physical reason for high frequency coupling is schematically shown in Figure ref:fig:detail_control_model_test_CoK. +At high frequency, a force applied on a point which is not aligned with the center of mass. +Therefore, it will induce some rotation around the center of mass. + #+begin_src matlab %% Jacobian Decoupling - Center of Mass % Location of the joints with respect to the center of stiffness @@ -2467,42 +2496,60 @@ G_CoK.OutputName = {'Dx', 'Dy', 'Rz'}; #+begin_src matlab :exports none figure; hold on; -for i_in = 1:3 - for i_out = [i_in+1:3] - plot(freqs, abs(squeeze(freqresp(G_CoK(i_out, i_in), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... - 'HandleVisibility', 'off'); - end -end -plot(freqs, abs(squeeze(freqresp(G_CoK(1, 2), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... - 'DisplayName', '$G_{CoK}(i,j)\ i \neq j$'); -set(gca,'ColorOrderIndex',1) -for i_in_out = 1:3 - plot(freqs, abs(squeeze(freqresp(G_CoK(i_in_out, i_in_out), freqs, 'Hz'))), 'DisplayName', sprintf('$G_{CoK}(%d,%d)$', i_in_out, i_in_out)); -end +plot(freqs, abs(squeeze(freqresp(G_CoK(1, 1), freqs, 'Hz'))), 'color', colors(1,:), 'DisplayName', '$D_{x,\{K\}}/F_{x,\{K\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoK(2, 2), freqs, 'Hz'))), 'color', colors(2,:), 'DisplayName', '$D_{y,\{K\}}/F_{y,\{K\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoK(3, 3), freqs, 'Hz'))), 'color', colors(3,:), 'DisplayName', '$R_{z,\{K\}}/M_{z,\{K\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoK(1, 3), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... + 'DisplayName', '$D_{x,\{K\}}/M_{z,\{K\}}$'); +plot(freqs, abs(squeeze(freqresp(G_CoK(3, 1), freqs, 'Hz'))), 'color', [0,0,0,0.2], ... + 'DisplayName', '$R_{z,\{K\}}/F_{x,\{K\}}$'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('Magnitude'); +xlabel('Frequency [Hz]'); ylabel('Kagnitude'); ylim([1e-10, 1e-3]); -leg = legend('location', 'northeast', 'FontSize', 8); +leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2); leg.ItemTokenSize(1) = 18; #+end_src #+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/detail_control_jacobian_plant_CoK.pdf', 'width', 'wide', 'height', 'normal'); +exportFig('figs/detail_control_jacobian_plant_CoK.pdf', 'width', 'half', 'height', 'normal'); #+end_src -#+name: fig:detail_control_jacobian_plant_CoK -#+caption: Plant decoupled using the Jacobian matrices $G_x(s)$ -#+RESULTS: +#+name: fig:detail_control_jacobian_plant_CoK_results +#+caption: Plant decoupled using the Jacobian matrix expresssed at the center of stiffness (\subref{fig:detail_control_jacobian_plant_CoK}). The physical reason for high frequency coupling is illustrated in (\subref{fig:detail_control_model_test_CoK}). +#+attr_latex: :options [htbp] +#+begin_figure +#+attr_latex: :caption \subcaption{\label{fig:detail_control_jacobian_plant_CoK}Dynamics at the CoK} +#+attr_latex: :options {0.48\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.95\linewidth [[file:figs/detail_control_jacobian_plant_CoK.png]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:detail_control_model_test_CoK}High frequency force applied at the CoK} +#+attr_latex: :options {0.48\textwidth} +#+begin_subfigure +#+attr_latex: :scale 1 +[[file:figs/detail_control_model_test_CoK.png]] +#+end_subfigure +#+end_figure ** Modal Decoupling <> **** Theory :ignore: +- A mechanical system consists of several modes: + - Modal decomposition [[cite:&rankers98_machin]] + #+begin_quote +The physical interpretation of the above two equations is that any motion of the system can be regarded as a combination of the contribution of the various modes. + #+end_quote + - Mode superposition [[cite:&preumont94_random_vibrat_spect_analy;&preumont18_vibrat_contr_activ_struc_fourt_edition, chapt. 2]] +- The idea is to control the system in the "modal space" + + + Let's consider a system with the following equations of motion: \begin{equation} -M \bm{\ddot{x}} + C \bm{\dot{x}} + K \bm{x} = \bm{\mathcal{F}} +M \bm{\ddot{x}} + C \bm{\dot{x}} + K \bm{x} = J^T \bm{\tau} \end{equation} And the measurement output is a combination of the motion variable $\bm{x}$: @@ -2518,11 +2565,6 @@ with: - $\bm{x}_m$ the modal amplitudes - $\Phi$ a matrix whose columns are the modes shapes of the system -And we map the actuator forces: -\begin{equation} -\bm{\mathcal{F}} = J^T \bm{\tau} -\end{equation} - The equations of motion become: \begin{equation} M \Phi \bm{\ddot{x}}_m + C \Phi \bm{\dot{x}}_m + K \Phi \bm{x}_m = J^T \bm{\tau} @@ -2567,18 +2609,13 @@ Let's note the "modal input": \end{equation} The transfer function from $\bm{\tau}_m$ to $\bm{x}_m$ is: -\begin{equation} \label{eq:modal_eq} -\boxed{\frac{\bm{x}_m}{\bm{\tau}_m} = \left( I_n s^2 + 2 \Xi \Omega s + \Omega^2 \right)^{-1}} +\begin{equation}\label{eq:detail_control_decoupling_plant_modal} + \boxed{\frac{\bm{x}_m}{\bm{\tau}_m} = \left( I_n s^2 + 2 \Xi \Omega s + \Omega^2 \right)^{-1}} \end{equation} which is a *diagonal* transfer function matrix. We therefore have decoupling of the dynamics from $\bm{\tau}_m$ to $\bm{x}_m$. -We now expressed the transfer function from input $\bm{\tau}$ to output $\bm{y}$ as a function of the "modal variables": -\begin{equation} - \boxed{\frac{\bm{y}}{\bm{\tau}} = \underbrace{\left( C_{ox} + s C_{ov} \right) \Phi}_{C_m} \underbrace{\left( I_n s^2 + 2 \Xi \Omega s + \Omega^2 \right)^{-1}}_{\text{diagonal}} \underbrace{\left( \mu^{-1} \Phi^T J^T \right)}_{B_m}} -\end{equation} - By inverting $B_m$ and $C_m$ and using them as shown in Figure ref:fig:modal_decoupling_architecture, we can see that we control the system in the "modal space" in which it is decoupled. #+begin_src latex :file detail_control_decoupling_modal.pdf @@ -2667,9 +2704,6 @@ data2orgtable(Bm, {}, {}, ' %.4f '); #+attr_latex: :environment tabularx :width 0.3\linewidth :align ccc #+attr_latex: :center t :booktabs t :float t #+RESULTS: -| -0.0004 | -0.0007 | 0.0007 | -| -0.0151 | 0.0041 | -0.0041 | -| 0.0 | 0.0025 | 0.0025 | #+begin_src matlab :exports results :results value table replace :tangle no data2orgtable(Cm, {}, {}, ' %.1f '); @@ -2680,9 +2714,6 @@ data2orgtable(Cm, {}, {}, ' %.1f '); #+attr_latex: :environment tabularx :width 0.2\linewidth :align ccc #+attr_latex: :center t :booktabs t :float t #+RESULTS: -| -0.1 | -1.8 | 0.0 | -| -0.2 | 0.5 | 1.0 | -| 0.2 | -0.5 | 1.0 | #+begin_src matlab :exports none figure; @@ -2714,7 +2745,6 @@ exportFig('figs/detail_control_modal_plant.pdf', 'width', 'wide', 'height', 'nor #+name: fig:detail_control_modal_plant #+caption: Modal plant $G_m(s)$ #+RESULTS: -[[file:figs/detail_control_modal_plant.png]] ** SVD Decoupling <> @@ -2724,10 +2754,26 @@ exportFig('figs/detail_control_modal_plant.pdf', 'width', 'wide', 'height', 'nor - Introduction to SVD [[cite:&brunton22_data]] - Applied to parallel manipulator? +Singular value is used a lot for multivariable control [[cite:&skogestad07_multiv_feedb_contr]]. +Used to study directions in multivariable systems + **** Control Architecture -- [ ] Have notation for the measured FRF -- [ ] And for the real approximation +- [ ] SVD controllers described in [[cite:&skogestad07_multiv_feedb_contr, chapt. 3.5.4]] +- [ ] *Check if inverse U and V should be used or just U and V matrices*, Use correct notations. +- [ ] Have notation for the measured FRF and for the real approximation + +\begin{equation} +\bm{G}(j\omega) = \begin{bmatrix} +0 & 0 & 0 \\ +0 & 0 & 0 \\ +0 & 0 & 0 \\ +\end{bmatrix} \xrightarrow[approximation]{real} \begin{bmatrix} +0 & 0 & 0 \\ +0 & 0 & 0 \\ +0 & 0 & 0 \\ +\end{bmatrix} \xrightarrow[SVD]{} U = , \ V = +\end{equation} Procedure: - Identify the dynamics of the system from inputs to outputs (can be obtained experimentally) @@ -2735,7 +2781,7 @@ Procedure: - Choose a frequency where we want to decouple the system (usually, the crossover frequency is a good choice) - Compute a real approximation of the system's response at that frequency As /real/ V and U matrices need to be obtained, a real approximation of the complex measured response needs to be computed. - - [ ] Find reference to do so. + [[cite:&kouvaritakis79_theor_pract_charac_locus_desig_method]]: real matrix that preserves the most orthogonality in directions with the input complex matrix - Perform a Singular Value Decomposition of the real approximation. Unitary U and V matrices are then obtained such that: V-t Greal U-1 is a diagonal matrix @@ -2784,10 +2830,17 @@ The inputs and outputs are ordered from higher gain to lower gain at the chosen **** Example - [ ] Analytical formulas in this case? +- [ ] Maybe show the complex and real response matrices. +- [ ] At least, show the obtained matrices - [ ] Do we have something special when applying SVD to a collocated MIMO system? - *Verify why such a good decoupling is obtained!* # - When applying SVD on a non-collocated MIMO system, we obtained a decoupled plant looking like the one in Figure ref:fig:detail_control_gravimeter_svd_plant +\begin{equation}\label{eq:detail_control_decoupling_plant_svd} +\bm{G}_{SVD}(s) = +\end{equation} + + #+begin_src matlab %% SVD Decoupling @@ -3122,6 +3175,10 @@ Conclusion about NASS: - Prefer to use Jacobian decoupling as we get more physical interpretation - Also, it is possible to take into account different specifications in the different DoF +When possible, having a design providing the same CoK and CoM is good. +Often, it is not possible and we have to deal with that with control. +Idea about using CoK at low frequency and CoM at high frequency ? +Maybe with complementary filters? * Closed-Loop Shaping using Complementary Filters :PROPERTIES: diff --git a/nass-control.pdf b/nass-control.pdf index 8d6c1de..3d9c20d 100644 Binary files a/nass-control.pdf and b/nass-control.pdf differ diff --git a/nass-control.tex b/nass-control.tex index a13875d..c7e57d3 100644 --- a/nass-control.tex +++ b/nass-control.tex @@ -1,4 +1,4 @@ -% Created 2025-04-04 Fri 19:20 +% Created 2025-04-05 Sat 11:47 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} @@ -185,7 +185,7 @@ Based on that, this work introduces a new way to design complementary filters us Complementary filtering provides a framework for fusing signals from different sensors. As the effectiveness of the fusion depends on the proper design of the complementary filters, they are expected to fulfill certain requirements. These requirements are discussed in this section. -\subsubsection{Sensor Fusion Architecture} +\paragraph{Sensor Fusion Architecture} A general sensor fusion architecture using complementary filters is shown in Figure \ref{fig:detail_control_sensor_fusion_overview} where several sensors (here two) are measuring the same physical quantity \(x\). The two sensors output signals \(\hat{x}_1\) and \(\hat{x}_2\) are estimates of \(x\). @@ -206,7 +206,7 @@ That is, unity magnitude and zero phase at all frequencies. \begin{equation}\label{eq:detail_control_comp_filter} H_1(s) + H_2(s) = 1 \end{equation} -\subsubsection{Sensor Models and Sensor Normalization} +\paragraph{Sensor Models and Sensor Normalization} In order to study such sensor fusion architecture, a model for the sensors is required. Such model is shown in Figure \ref{fig:detail_control_sensor_model} and consists of a linear time invariant (LTI) system \(G_i(s)\) representing the sensor dynamics and an input \(n_i\) representing the sensor noise. @@ -248,7 +248,7 @@ The super sensor output \(\hat{x}\) is therefore described by \eqref{eq:detail_c \includegraphics[scale=1]{figs/detail_control_fusion_super_sensor.png} \caption{\label{fig:detail_control_fusion_super_sensor}Sensor fusion architecture with two normalized sensors.} \end{figure} -\subsubsection{Noise Sensor Filtering} +\paragraph{Noise Sensor Filtering} First, suppose that all the sensors are perfectly normalized \eqref{eq:detail_control_perfect_dynamics}. The effect of a non-perfect normalization will be discussed afterwards. @@ -284,7 +284,7 @@ This is the simplest form of sensor fusion with complementary filters. However, the two sensors have usually high noise levels over distinct frequency regions. In such case, to lower the noise of the super sensor, the norm \(|H_1(j\omega)|\) has to be small when \(\Phi_{n_1}(\omega)\) is larger than \(\Phi_{n_2}(\omega)\) and the norm \(|H_2(j\omega)|\) has to be small when \(\Phi_{n_2}(\omega)\) is larger than \(\Phi_{n_1}(\omega)\). Hence, by properly shaping the norm of the complementary filters, it is possible to minimize the noise of the super sensor. -\subsubsection{Sensor Fusion Robustness} +\paragraph{Sensor Fusion Robustness} In practical systems the sensor normalization is not perfect and condition \eqref{eq:detail_control_perfect_dynamics} is not verified. @@ -350,7 +350,7 @@ Therefore, a synthesis method of complementary filters that allows to shape thei In this section, such synthesis is proposed by writing the synthesis objective as a standard \(\mathcal{H}_\infty\) optimization problem. As weighting functions are used to represent the wanted complementary filters' shape during the synthesis, their proper design is discussed. Finally, the synthesis method is validated on an simple example. -\subsubsection{Synthesis Objective} +\paragraph{Synthesis Objective} The synthesis objective is to shape the norm of two filters \(H_1(s)\) and \(H_2(s)\) while ensuring their complementary property \eqref{eq:detail_control_comp_filter}. This is equivalent as to finding proper and stable transfer functions \(H_1(s)\) and \(H_2(s)\) such that conditions \eqref{eq:detail_control_hinf_cond_complementarity}, \eqref{eq:detail_control_hinf_cond_h1} and \eqref{eq:detail_control_hinf_cond_h2} are satisfied. @@ -363,7 +363,7 @@ This is equivalent as to finding proper and stable transfer functions \(H_1(s)\) & |H_2(j\omega)| \le \frac{1}{|W_2(j\omega)|} \quad \forall\omega \label{eq:detail_control_hinf_cond_h2} \end{align} \end{subequations} -\subsubsection{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis} +\paragraph{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis} The synthesis objective can be easily expressed as a standard \(\mathcal{H}_\infty\) optimization problem and therefore solved using convenient tools readily available. Consider the generalized plant \(P(s)\) shown in Figure \ref{fig:detail_control_h_infinity_robust_fusion_plant} and mathematically described by \eqref{eq:detail_control_generalized_plant}. @@ -408,7 +408,7 @@ Therefore, applying the \(\mathcal{H}_\infty\) synthesis to the standard plant \ Note that there is only an implication between the \(\mathcal{H}_\infty\) norm condition \eqref{eq:detail_control_hinf_problem} and the initial synthesis objectives \eqref{eq:detail_control_hinf_cond_h1} and \eqref{eq:detail_control_hinf_cond_h2} and not an equivalence. Hence, the optimization may be a little bit conservative with respect to the set of filters on which it is performed, see \cite[,Chap. 2.8.3]{skogestad07_multiv_feedb_contr}. -\subsubsection{Weighting Functions Design} +\paragraph{Weighting Functions Design} Weighting functions are used during the synthesis to specify the maximum allowed complementary filters' norm. The proper design of these weighting functions is of primary importance for the success of the presented \(\mathcal{H}_\infty\) synthesis of complementary filters. @@ -439,7 +439,7 @@ The typical magnitude of a weighting function generated using \eqref{eq:detail_c }\right)^n \end{equation} \end{minipage} -\subsubsection{Validation of the proposed synthesis method} +\paragraph{Validation of the proposed synthesis method} The proposed methodology for the design of complementary filters is now applied on a simple example. Let's suppose two complementary filters \(H_1(s)\) and \(H_2(s)\) have to be designed such that: @@ -621,8 +621,9 @@ Experimental closed-loop control results using the hexapod have shown that contr \end{quote} \begin{itemize} -\item[{$\square$}] Review of \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org}{Decoupling Strategies} for stewart platforms +\item[{$\boxtimes$}] Review of \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org}{Decoupling Strategies} for stewart platforms \item[{$\square$}] Add some citations about different methods +\item[{$\square$}] Maybe transform table into text \end{itemize} \begin{table}[htbp] @@ -652,10 +653,6 @@ Voice Coil & Accelerometers & MIMO H-Infinity, active damping & \cite{jiao18_dyn \end{tabularx} \end{table} -Assumptions: -\begin{itemize} -\item parallel manipulators -\end{itemize} The goal of this section is to compare the use of several methods for the decoupling of parallel manipulators. @@ -671,18 +668,17 @@ It is structured as follow: \section{Test Model} \label{ssec:detail_control_decoupling_comp_model} -Let's consider a parallel manipulator with several collocated actuator/sensors pairs. - -System in Figure \ref{fig:detail_control_model_test_decoupling} will serve as an example. - -We will note: \begin{itemize} -\item \(b_i\): location of the joints on the top platform -\item \(\hat{s}_i\): unit vector corresponding to the struts direction -\item \(k_i\): stiffness of the struts -\item \(\tau_i\): actuator forces -\item \(O_M\): center of mass of the solid body -\item \(\mathcal{L}_i\): relative displacement of the struts +\item Instead of comparing the decoupling strategies using the Stewart platform, a similar yet much simpler parallel manipulator is used instead +\item to render the analysis simpler, the system of Figure \ref{fig:detail_control_model_test_decoupling_detail} is used +\item It has 3DoF, and has 3 parallels struts whose model is shown in Figure \ref{fig:detail_control_strut_model} +\item It is quite similar to the Stewart platform (parallel architecture, as many struts as DoF) +\end{itemize} + +Two frames are defined: +\begin{itemize} +\item \(\{M\}\) with origin \(O_M\) at the Center of mass of the solid body +\item \(\{K\}\) with origin \(O_K\) at the Center of mass of the parallel manipulator \end{itemize} \begin{figure}[htbp] @@ -701,54 +697,265 @@ We will note: \caption{\label{fig:detail_control_model_test_decoupling_detail}3DoF model used to study decoupling strategies} \end{figure} -The magnitude of the coupled plant \(G\) is shown in Figure \ref{fig:detail_control_coupled_plant_bode}. +First, the equation of motion are derived. +Expressing the second law of Newton on the suspended mass, expressed at its center of mass gives + +\begin{equation} + M_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) = \sum \bm{\mathcal{F}}_{\{M\}}(t) +\end{equation} + +with \(\bm{\mathcal{X}}_{\{M\}}\) the two translation and one rotation expressed with respect to the center of mass and \(\bm{\mathcal{F}}_{\{M\}}\) forces and torque applied at the center of mass. + +\begin{equation} + \bm{\mathcal{X}}_{\{M\}} = \begin{bmatrix} + x \\ + y \\ + R_z + \end{bmatrix}, \quad \bm{\mathcal{F}}_{\{M\}} = \begin{bmatrix} + F_x \\ + F_y \\ + M_z + \end{bmatrix} +\end{equation} + +In order to map the spring, damping and actuator forces to XY forces and Z torque expressed at the center of mass, the Jacobian matrix \(\bm{J}_{\{M\}}\) is used. + +\begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM} + \bm{J}_{\{M\}} = \begin{bmatrix} + 1 & 0 & h_a \\ + 0 & 1 & -l_a \\ + 0 & 1 & l_a \\ + \end{bmatrix} +\end{equation} + +Then, the equation of motion linking the actuator forces \(\tau\) to the motion of the mass \(\bm{\mathcal{X}}_{\{M\}}\) is obtained. + +\begin{equation}\label{eq:detail_control_decoupling_plant_cartesian} + M_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^t \bm{\mathcal{C}} \bm{J}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^t \bm{\mathcal{K}} \bm{J}_{\{M\}} \bm{\mathcal{X}}_{\{M\}}(t) = \bm{J}_{\{M\}}^t \bm{\tau}(t) +\end{equation} + +Matrices representing the payload inertia as well as the actuator stiffness and damping are shown in + +\begin{equation} + \bm{M}_{\{M\}} = \begin{bmatrix} + m & 0 & 0 \\ + 0 & m & 0 \\ + 0 & 0 & I + \end{bmatrix}, \quad + \bm{\mathcal{K}} = \begin{bmatrix} + k & 0 & 0 \\ + 0 & k & 0 \\ + 0 & 0 & k + \end{bmatrix}, \quad + \bm{\mathcal{C}} = \begin{bmatrix} + c & 0 & 0 \\ + 0 & c & 0 \\ + 0 & 0 & c + \end{bmatrix} +\end{equation} + +Parameters used for the following analysis are summarized in table \ref{tab:detail_control_decoupling_test_model_params}. + +\begin{table}[htbp] +\caption{\label{tab:detail_control_decoupling_test_model_params}Model parameters} +\centering +\scriptsize +\begin{tabularx}{0.9\linewidth}{cXc} +\toprule +\textbf{Parameter} & \textbf{Description} & \textbf{Value}\\ +\midrule +\(l_a\) & & \(0.5\,m\)\\ +\(h_a\) & & \(0.2\,m\)\\ +\(k\) & Actuator stiffness & \(10\,N/\mu m\)\\ +\(c\) & Actuator damping & \(200\,Ns/m\)\\ +\(m\) & Payload mass & \(40\,\text{kg}\)\\ +\(I\) & Payload rotational inertia & \(5\,\text{kg}m^2\)\\ +\bottomrule +\end{tabularx} +\end{table} +\section{Control in the frame of the struts} + +Let's first study the obtained dynamics in the frame of the struts. +The equation of motion linking actuator forces \(\bm{\mathcal{\tau}}\) to strut relative motion \(\bm{\mathcal{L}}\) is obtained from \eqref{eq:detail_control_decoupling_plant_cartesian} by mapping the cartesian motion of the mass to the relative motion of the struts using the Jacobian matrix \(\bm{J}_{\{M\}}\) \eqref{eq:detail_control_decoupling_jacobian_CoM} . + +The transfer function from \(\bm{\mathcal{\tau}}\) to \(\bm{\mathcal{L}}\) is shown in equation \eqref{eq:detail_control_decoupling_plant_decentralized}. + +\begin{center} +\includegraphics[scale=1]{figs/detail_control_decoupling_control_struts.png} +\label{} +\end{center} + +\begin{equation}\label{eq:detail_control_decoupling_plant_decentralized} + \frac{\bm{\mathcal{L}}}{\bm{\mathcal{\tau}}}(s) = \bm{G}_{\mathcal{L}}(s) = \left( \bm{J}_{\{M\}}^{-t} M_{\{M\}} \bm{J}_{\{M\}}^{-1} s^2 + \bm{\mathcal{C}} s + \bm{\mathcal{K}} \right)^{-1} +\end{equation} + +At low frequency the plant converges to a diagonal constant matrix whose diagonal elements are linked to the actuator stiffnesses \eqref{eq:detail_control_decoupling_plant_decentralized_low_freq}. + +\begin{equation}\label{eq:detail_control_decoupling_plant_decentralized_low_freq} + \bm{G}_{\mathcal{L}}(j\omega) \xrightarrow[\omega \to 0]{} \bm{\mathcal{K}^{-1}} +\end{equation} + +At high frequency, the plant converges to the mass matrix mapped in the frame of the struts, which is in general highly non-diagonal. + +The magnitude of the coupled plant \(\bm{G}_{\mathcal{L}}\) is shown in Figure \ref{fig:detail_control_coupled_plant_bode}. +This confirms that at low frequency (below the first suspension mode), the plant is well decoupled. +Depending on the symmetry in the system, some diagonal elements may be equal (such as for struts 2 and 3 in this example). \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/detail_control_coupled_plant_bode.png} \caption{\label{fig:detail_control_coupled_plant_bode}Magnitude of the coupled plant.} \end{figure} -\section{Decentralized Plant / Control in the frame of the struts} \section{Jacobian Decoupling} \label{ssec:detail_control_comp_jacobian} +\paragraph{Jacobian Matrix} -The Jacobian matrix can be used to: -\begin{itemize} -\item Convert joints velocity \(\dot{\mathcal{L}}\) to payload velocity and angular velocity \(\dot{\bm{\mathcal{X}}}_{\{O\}}\): -\[ \dot{\bm{\mathcal{X}}}_{\{O\}} = J_{\{O\}} \dot{\bm{\mathcal{L}}} \] -\item Convert actuators forces \(\bm{\tau}\) to forces/torque applied on the payload \(\bm{\mathcal{F}}_{\{O\}}\): -\[ \bm{\mathcal{F}}_{\{O\}} = J_{\{O\}}^T \bm{\tau} \] -\end{itemize} -with \(\{O\}\) any chosen frame. +As already explained, the Jacobian matrix can be used to both convert strut velocity \(\dot{\mathcal{L}}\) to payload velocity and angular velocity \(\dot{\bm{\mathcal{X}}}_{\{O\}}\) and Convert actuators forces \(\bm{\tau}\) to forces/torque applied on the payload \(\bm{\mathcal{F}}_{\{O\}}\) \eqref{eq:detail_control_decoupling_jacobian}. -By wisely choosing frame \(\{O\}\), we can obtain nice decoupling for plant: -\begin{equation} - \bm{G}_{\{O\}} = J_{\{O\}}^{-1} \bm{G} J_{\{O\}}^{-T} -\end{equation} +\begin{subequations}\label{eq:detail_control_decoupling_jacobian} + \begin{align} + \dot{\bm{\mathcal{X}}}_{\{O\}} &= J_{\{O\}} \dot{\bm{\mathcal{L}}}, \quad \dot{\bm{\mathcal{L}}} = J_{\{O\}}^{-1} \dot{\bm{\mathcal{X}}}_{\{O\}} \\ + \bm{\mathcal{F}}_{\{O\}} &= J_{\{O\}}^t \bm{\tau}, \quad \bm{\tau} = J_{\{O\}}^{-t} \bm{\mathcal{F}}_{\{O\}} + \end{align} +\end{subequations} -The obtained plan corresponds to forces/torques applied on origin of frame \(\{O\}\) to the translation/rotation of the payload expressed in frame \(\{O\}\). - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/detail_control_jacobian_decoupling_arch.png} -\caption{\label{fig:detail_control_jacobian_decoupling_arch}Block diagram of the transfer function from \(\bm{\mathcal{F}}_{\{O\}}\) to \(\bm{\mathcal{X}}_{\{O\}}\)} -\end{figure} - -The Jacobian matrix is only based on the geometry of the system and does not depend on the physical properties such as mass and stiffness. - -The inputs and outputs of the decoupled plant \(\bm{G}_{\{O\}}\) have physical meaning: +The obtained plan (Figure \ref{fig:detail_control_jacobian_decoupling_arch}) has inputs and outputs that have physical meaning: \begin{itemize} \item \(\bm{\mathcal{F}}_{\{O\}}\) are forces/torques applied on the payload at the origin of frame \(\{O\}\) \item \(\bm{\mathcal{X}}_{\{O\}}\) are translations/rotation of the payload expressed in frame \(\{O\}\) \end{itemize} -It is then easy to include a reference tracking input that specify the wanted motion of the payload in the frame \(\{O\}\). -\subsubsection{Center Of Mass} +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/detail_control_decoupling_control_jacobian.png} +\caption{\label{fig:detail_control_jacobian_decoupling_arch}Block diagram of the transfer function from \(\bm{\mathcal{F}}_{\{O\}}\) to \(\bm{\mathcal{X}}_{\{O\}}\)} +\end{figure} -\subsubsection{Center Of Stiffness} +\begin{equation}\label{eq:detail_control_decoupling_plant_jacobian} + \frac{\bm{\mathcal{X}}_{\{O\}}}{\bm{\mathcal{F}}_{\{O\}}}(s) = \bm{G}_{\{O\}}(s) = \left( \bm{J}_{\{O\}}^t \bm{J}_{\{M\}}^{-T} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{O\}} s^2 + \bm{J}_{\{O\}}^t \bm{\mathcal{C}} \bm{J}_{\{O\}} s + \bm{J}_{\{O\}}^t \bm{\mathcal{K}} \bm{J}_{\{O\}} \right)^{-1} +\end{equation} + +The frame \(\{O\}\) can be any chosen frame, but the decoupling properties depends on the chosen frame \(\{O\}\). +There are two natural choices: the center of mass \(\{M\}\) and the center of stiffness \(\{K\}\). +Note that the Jacobian matrix is only based on the geometry of the system and does not depend on the physical properties such as mass and stiffness. +\paragraph{Center Of Mass} + +If the center of mass is chosen as the decoupling frame. +The Jacobian matrix and its inverse are expressed in \eqref{eq:detail_control_decoupling_jacobian_CoM_inverse}. + +\begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM_inverse} + J_{\{M\}} = \begin{bmatrix} + 1 & 0 & h_a \\ + 0 & 1 & -l_a \\ + 0 & 1 & l_a \\ + \end{bmatrix}, \quad J_{\{M\}}^{-1} = \begin{bmatrix} + 1 & \frac{h_a}{2 l_a} & \frac{-h_a}{2 l_a} \\ + 0 & \frac{1}{2} & \frac{1}{2} \\ + 0 & \frac{-1}{2 l_a} & \frac{1}{2 l_a} \\ + \end{bmatrix} +\end{equation} + +\begin{center} +\includegraphics[scale=1]{figs/detail_control_decoupling_control_jacobian_CoM.png} +\label{} +\end{center} + +Analytical formula of the plant is \eqref{eq:detail_control_decoupling_plant_CoM}. + +\begin{equation}\label{eq:detail_control_decoupling_plant_CoM} + \frac{\bm{\mathcal{X}}_{\{M\}}}{\bm{\mathcal{F}}_{\{M\}}}(s) = \bm{G}_{\{M\}}(s) = \left( \bm{M}_{\{M\}} s^2 + \bm{J}_{\{M\}}^t \bm{\mathcal{C}} \bm{J}_{\{M\}} s + \bm{J}_{\{M\}}^t \bm{\mathcal{K}} \bm{J}_{\{M\}} \right)^{-1} +\end{equation} + +At high frequency, converges towards the inverse of the mass matrix, which is a diagonal matrix \eqref{eq:detail_control_decoupling_plant_CoM_high_freq}. + +\begin{equation}\label{eq:detail_control_decoupling_plant_CoM_high_freq} + \bm{G}_{\{M\}}(j\omega) \xrightarrow[\omega \to \infty]{} -\omega^2 \bm{M}_{\{M\}}^{-1} = -\omega^2 \begin{bmatrix} + 1/m & 0 & 0 \\ + 0 & 1/m & 0 \\ + 0 & 0 & 1/I + \end{bmatrix} +\end{equation} + +Plant is therefore well decoupled above the suspension mode with the highest frequency. +Such strategy is usually applied on systems with low frequency suspension modes, such that the plant corresponds to decoupled mass lines. + +\begin{itemize} +\item[{$\square$}] Reference to some papers about vibration isolation or ASML? +\end{itemize} + +The coupling at low frequency can easily be understood physically. +When a static (or with frequency lower than the suspension modes) force is applied at the center of mass, rotation is induced by the stiffness of the first actuator, not in line with the force application point. +this is illustrated in Figure \ref{fig:detail_control_model_test_CoM}. + +\begin{figure}[htbp] +\begin{subfigure}{0.48\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_jacobian_plant_CoM.png} +\end{center} +\subcaption{\label{fig:detail_control_jacobian_plant_CoM}Dynamics at the CoM} +\end{subfigure} +\begin{subfigure}{0.48\textwidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/detail_control_model_test_CoM.png} +\end{center} +\subcaption{\label{fig:detail_control_model_test_CoM}Static force applied at the CoM} +\end{subfigure} +\caption{\label{fig:detail_control_jacobian_plant_CoM_results}Plant decoupled using the Jacobian matrix expresssed at the center of mass (\subref{fig:detail_control_jacobian_plant_CoM}). The physical reason for low frequency coupling is illustrated in (\subref{fig:detail_control_model_test_CoM}).} +\end{figure} +\paragraph{Center Of Stiffness} + +\begin{center} +\includegraphics[scale=1]{figs/detail_control_decoupling_control_jacobian_CoK.png} +\label{} +\end{center} + +\begin{equation} + J_{\{K\}} = \begin{bmatrix} + 1 & 0 & 0 \\ + 0 & 1 & -l_a \\ + 0 & 1 & l_a + \end{bmatrix}, \quad J_{\{K\}}^{-1} = \begin{bmatrix} + 1 & 0 & 0 \\ + 0 & \frac{1}{2} & \frac{1}{2} \\ + 0 & \frac{-1}{2 l_a} & \frac{1}{2 l_a} + \end{bmatrix} +\end{equation} + +Frame \(\{K\}\) is chosen such that \(\bm{J}_{\{K\}}^t \bm{\mathcal{K}} \bm{J}_{\{K\}}\) is diagonal. +Typically, it can me made based on physical reasoning as is the case here. + +\begin{equation}\label{eq:detail_control_decoupling_plant_CoK} + \frac{\bm{\mathcal{X}}_{\{K\}}}{\bm{\mathcal{F}}_{\{K\}}}(s) = \bm{G}_{\{K\}}(s) = \left( \bm{J}_{\{K\}}^t \bm{J}_{\{M\}}^{-T} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{K\}} s^2 + \bm{J}_{\{K\}}^t \bm{\mathcal{C}} \bm{J}_{\{K\}} s + \bm{J}_{\{K\}}^t \bm{\mathcal{K}} \bm{J}_{\{K\}} \right)^{-1} +\end{equation} + +Plant is well decoupled below the suspension mode with the lowest frequency. +This is usually suited for systems which high stiffness. + +\begin{equation} + \bm{G}_{\{K\}}(j\omega) \xrightarrow[\omega \to 0]{} \bm{J}_{\{K\}}^{-1} \bm{\mathcal{K}}^{-1} \bm{J}_{\{K\}}^{-t} +\end{equation} + +\begin{itemize} +\item[{$\square$}] Make a schematic where the thing is deformed at high frequency rotating about the center of mass +\end{itemize} + +\begin{figure}[htbp] +\begin{subfigure}{0.48\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_jacobian_plant_CoK.png} +\end{center} +\subcaption{\label{fig:detail_control_jacobian_plant_CoK}Dynamics at the CoK} +\end{subfigure} +\begin{subfigure}{0.48\textwidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/detail_control_model_test_CoK.png} +\end{center} +\subcaption{\label{fig:detail_control_model_test_CoK}High frequency force applied at the CoK} +\end{subfigure} +\caption{\label{fig:detail_control_jacobian_plant_CoK_results}Plant decoupled using the Jacobian matrix expresssed at the center of stiffness (\subref{fig:detail_control_jacobian_plant_CoK}). The physical reason for low frequency coupling is illustrated in (\subref{fig:detail_control_model_test_CoK}).} +\end{figure} \section{Modal Decoupling} \label{ssec:detail_control_comp_modal} - Let's consider a system with the following equations of motion: \begin{equation} M \bm{\ddot{x}} + C \bm{\dot{x}} + K \bm{x} = \bm{\mathcal{F}} @@ -822,8 +1029,8 @@ Let's note the ``modal input'': \end{equation} The transfer function from \(\bm{\tau}_m\) to \(\bm{x}_m\) is: -\begin{equation} \label{eq:modal_eq} -\boxed{\frac{\bm{x}_m}{\bm{\tau}_m} = \left( I_n s^2 + 2 \Xi \Omega s + \Omega^2 \right)^{-1}} +\begin{equation}\label{eq:detail_control_decoupling_plant_modal} + \boxed{\frac{\bm{x}_m}{\bm{\tau}_m} = \left( I_n s^2 + 2 \Xi \Omega s + \Omega^2 \right)^{-1}} \end{equation} which is a \textbf{diagonal} transfer function matrix. We therefore have decoupling of the dynamics from \(\bm{\tau}_m\) to \(\bm{x}_m\). @@ -851,51 +1058,8 @@ Then, the system can be decoupled in the modal space. The obtained system on the diagonal are second order resonant systems which can be easily controlled. Using this decoupling strategy, it is possible to control each mode individually. -\section{SVD Decoupling} -\label{ssec:detail_control_comp_svd} +\paragraph{Example} -Procedure: -\begin{itemize} -\item Identify the dynamics of the system from inputs to outputs (can be obtained experimentally) -\item Choose a frequency where we want to decouple the system (usually, the crossover frequency is a good choice) -\item Compute a real approximation of the system's response at that frequency -\item Perform a Singular Value Decomposition of the real approximation -\item Use the singular input and output matrices to decouple the system as shown in Figure \ref{fig:detail_control_decoupling_svd} -\[ G_{svd}(s) = U^{-1} G(s) V^{-T} \] -\end{itemize} -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/detail_control_decoupling_svd.png} -\caption{\label{fig:detail_control_decoupling_svd}Decoupled plant \(\bm{G}_{SVD}\) using the Singular Value Decomposition} -\end{figure} - -In order to apply the Singular Value Decomposition, we need to have the Frequency Response Function of the system, at least near the frequency where we wish to decouple the system. -The FRF can be experimentally obtained or based from a model. - -This method ensure good decoupling near the chosen frequency, but no guaranteed decoupling away from this frequency. - -Also, it depends on how good the real approximation of the FRF is, therefore it might be less good for plants with high damping. - -This method is quite general and can be applied to any type of system. -The inputs and outputs are ordered from higher gain to lower gain at the chosen frequency. - -\begin{itemize} -\item[{$\square$}] Do we loose any physical meaning of the obtained inputs and outputs? -\item[{$\square$}] Can we take advantage of the fact that U and V are unitary? -\end{itemize} -\section{Comparison} -\label{ssec:detail_control_decoupling_comp} -\subsubsection{Jacobian Decoupling} -Decoupling properties depends on the chosen frame \(\{O\}\). - -Let's take the CoM as the decoupling frame. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/detail_control_jacobian_plant.png} -\caption{\label{fig:detail_control_jacobian_plant}Plant decoupled using the Jacobian matrices \(G_x(s)\)} -\end{figure} -\subsubsection{Modal Decoupling} For the system in Figure \ref{fig:detail_control_model_test_decoupling}, we have: \begin{align} \bm{x} &= \begin{bmatrix} x \\ y \\ R_z \end{bmatrix} \\ @@ -917,39 +1081,96 @@ c & 0 & 0 \\ In order to apply the architecture shown in Figure \ref{fig:modal_decoupling_architecture}, we need to compute \(C_{ox}\), \(C_{ov}\), \(\Phi\), \(\mu\) and \(J\). -\begin{table}[htbp] -\caption{\label{tab:modal_decoupling_Bm}\(B_m\) matrix} -\centering -\begin{tabularx}{0.3\linewidth}{ccc} -\toprule --0.0004 & -0.0007 & 0.0007\\ --0.0151 & 0.0041 & -0.0041\\ -0.0 & 0.0025 & 0.0025\\ -\bottomrule -\end{tabularx} -\end{table} +\begin{itemize} +\item[{$\square$}] Is it possible to obtained the analytical formulas for decoupling matrices? +\end{itemize} +\section{SVD Decoupling} +\label{ssec:detail_control_comp_svd} +\paragraph{Singular Value Decomposition} -\begin{table}[htbp] -\caption{\label{tab:modal_decoupling_Cm}\(C_m\) matrix} -\centering -\begin{tabularx}{0.2\linewidth}{ccc} -\toprule --0.1 & -1.8 & 0.0\\ --0.2 & 0.5 & 1.0\\ -0.2 & -0.5 & 1.0\\ -\bottomrule -\end{tabularx} -\end{table} +\begin{itemize} +\item Introduction to SVD \cite{brunton22_data} +\item Applied to parallel manipulator? +\end{itemize} + +Singular value is used a lot for multivariable control \cite{skogestad07_multiv_feedb_contr}. +Used to study directions in multivariable systems +\paragraph{Control Architecture} + +\begin{itemize} +\item[{$\square$}] SVD controllers described in \cite[, chapt. 3.5.4]{skogestad07_multiv_feedb_contr} +\item[{$\square$}] \textbf{Check if inverse U and V should be used or just U and V matrices}, Use correct notations. +\item[{$\square$}] Have notation for the measured FRF and for the real approximation +\end{itemize} + +\begin{equation} +\bm{G}(j\omega) = \begin{bmatrix} +0 & 0 & 0 \\ +0 & 0 & 0 \\ +0 & 0 & 0 \\ +\end{bmatrix} \xrightarrow[approximation]{real} \begin{bmatrix} +0 & 0 & 0 \\ +0 & 0 & 0 \\ +0 & 0 & 0 \\ +\end{bmatrix} \xrightarrow[SVD]{} U = , \ V = +\end{equation} + +Procedure: +\begin{itemize} +\item Identify the dynamics of the system from inputs to outputs (can be obtained experimentally) +Frequency Response Function, which is a complex matrix obtained for several frequency points. +\item Choose a frequency where we want to decouple the system (usually, the crossover frequency is a good choice) +\item Compute a real approximation of the system's response at that frequency +As \emph{real} V and U matrices need to be obtained, a real approximation of the complex measured response needs to be computed. +\cite{kouvaritakis79_theor_pract_charac_locus_desig_method}: real matrix that preserves the most orthogonality in directions with the input complex matrix +\item Perform a Singular Value Decomposition of the real approximation. +Unitary U and V matrices are then obtained such that: +V-t Greal U-1 is a diagonal matrix + +\item Use the singular input and output matrices to decouple the system as shown in Figure \ref{fig:detail_control_decoupling_svd} +\[ G_{svd}(s) = U^{-1} G(s) V^{-T} \] +\end{itemize} -And the plant in the modal space is defined below and its magnitude is shown in Figure \ref{fig:detail_control_modal_plant}. \begin{figure}[htbp] \centering -\includegraphics[scale=1]{figs/detail_control_modal_plant.png} -\caption{\label{fig:detail_control_modal_plant}Modal plant \(G_m(s)\)} +\includegraphics[scale=1]{figs/detail_control_decoupling_svd.png} +\caption{\label{fig:detail_control_decoupling_svd}Decoupled plant \(\bm{G}_{SVD}\) using the Singular Value Decomposition} +\end{figure} + +In order to apply the Singular Value Decomposition, we need to have the Frequency Response Function of the system, at least near the frequency where we wish to decouple the system. +The FRF can be experimentally obtained or based from a model. + +This method ensure good decoupling near the chosen frequency, but no guaranteed decoupling away from this frequency. + +Also, it depends on how good the real approximation of the FRF is, therefore it might be less good for plants with high damping. + +This method is quite general and can be applied to any type of system. +The inputs and outputs are ordered from higher gain to lower gain at the chosen frequency. + +\begin{itemize} +\item[{$\square$}] Do we loose any physical meaning of the obtained inputs and outputs? +\item[{$\square$}] Can we take advantage of the fact that U and V are unitary? +\end{itemize} +\paragraph{Example} + +\begin{itemize} +\item[{$\square$}] Analytical formulas in this case? +\item[{$\square$}] Maybe show the complex and real response matrices. +\item[{$\square$}] At least, show the obtained matrices +\item[{$\square$}] Do we have something special when applying SVD to a collocated MIMO system? +\item \textbf{Verify why such a good decoupling is obtained!} +\end{itemize} +\begin{equation}\label{eq:detail_control_decoupling_plant_svd} +\bm{G}_{SVD}(s) = +\end{equation} + + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/detail_control_svd_plant.png} +\caption{\label{fig:detail_control_svd_plant}Svd plant \(G_m(s)\)} \end{figure} -Let's now close one loop at a time and see how the transmissibility changes. -\subsubsection{SVD Decoupling} \begin{table}[htbp] \caption{\label{}Real approximate of \(G\) at the decoupling frequency \(\omega_c\)} \centering @@ -961,31 +1182,8 @@ Let's now close one loop at a time and see how the transmissibility changes. \bottomrule \end{tabularx} \end{table} - -\begin{itemize} -\item[{$\square$}] Do we have something special when applying SVD to a collocated MIMO system? -\item \textbf{Verify why such a good decoupling is obtained!} -\end{itemize} -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/detail_control_svd_plant.png} -\caption{\label{fig:detail_control_svd_plant}Svd plant \(G_m(s)\)} -\end{figure} -\section*{Conclusion} -The three proposed methods clearly have a lot in common as they all tend to make system more decoupled by pre and/or post multiplying by a constant matrix -However, the three methods also differs by a number of points which are summarized in Table \ref{tab:detail_control_decoupling_strategies_comp}. - -Other decoupling strategies could be included in this study, such as: -\begin{itemize} -\item DC decoupling: pre-multiply the plant by \(G(0)^{-1}\) -\item full decoupling: pre-multiply the plant by \(G(s)^{-1}\) -\end{itemize} - -Conclusion about NASS: -\begin{itemize} -\item Prefer to use Jacobian decoupling as we get more physical interpretation -\item Also, it is possible to take into account different specifications in the different DoF -\end{itemize} +\section{Comparison} +\label{ssec:detail_control_decoupling_comp} \begin{table}[htbp] \caption{\label{tab:detail_control_decoupling_strategies_comp}Comparison of decoupling strategies} @@ -1025,6 +1223,21 @@ Conclusion about NASS: \bottomrule \end{tabularx} \end{table} +\section*{Conclusion} +The three proposed methods clearly have a lot in common as they all tend to make system more decoupled by pre and/or post multiplying by a constant matrix +However, the three methods also differs by a number of points which are summarized in Table \ref{tab:detail_control_decoupling_strategies_comp}. + +Other decoupling strategies could be included in this study, such as: +\begin{itemize} +\item DC decoupling: pre-multiply the plant by \(G(0)^{-1}\) +\item full decoupling: pre-multiply the plant by \(G(s)^{-1}\) +\end{itemize} + +Conclusion about NASS: +\begin{itemize} +\item Prefer to use Jacobian decoupling as we get more physical interpretation +\item Also, it is possible to take into account different specifications in the different DoF +\end{itemize} \chapter{Closed-Loop Shaping using Complementary Filters} \label{sec:detail_control_optimization} @@ -1088,7 +1301,7 @@ In this paper, we propose a new controller synthesis method \end{itemize} \section{Control Architecture} \label{ssec:detail_control_control_arch} -\subsubsection{Virtual Sensor Fusion} +\paragraph{Virtual Sensor Fusion} Let's consider the control architecture represented in Figure \ref{fig:detail_control_sf_arch} where \(G^\prime\) is the physical plant to control, \(G\) is a model of the plant, \(k\) is a gain, \(H_L\) and \(H_H\) are complementary filters (\(H_L + H_H = 1\) in the complex sense). The signals are the reference signal \(r\), the output perturbation \(d_y\), the measurement noise \(n\) and the control input \(u\). @@ -1126,7 +1339,7 @@ y &= \frac{1}{1+G^{\prime} K H_L} dy &&+ \frac{G^{\prime} K}{1+G^{\prime} K u &= \frac{-K H_L}{1+G^{\prime} K H_L} dy &&+ \frac{K}{1+G^{\prime} K H_L} r &&- \frac{K H_L}{1+G^{\prime} K H_L} n \end{alignat} with \(K = \frac{k}{1 + H_H G k}\) -\subsubsection{Asymptotic behavior} +\paragraph{Asymptotic behavior} We now want to study the asymptotic system obtained when using very high value of \(k\) \begin{equation} \lim_{k\to\infty} K = \lim_{k\to\infty} \frac{k}{1+H_H G k} = \left( H_H G \right)^{-1} @@ -1166,7 +1379,7 @@ The process of designing a controller \(K(s)\) in order to obtain the desired sh The equations \eqref{eq:detail_control_cl_system_y} and \eqref{eq:detail_control_cl_system_u} describing the dynamics of the studied feedback architecture are not written in terms of \(K\) but in terms of the complementary filters \(H_L\) and \(H_H\). In this section, we then translate the typical specifications into the desired shapes of the complementary filters \(H_L\) and \(H_H\).\\ -\subsubsection{Nominal Stability (NS)} +\paragraph{Nominal Stability (NS)} The closed-loop system is stable if all its elements are stable (\(K\), \(G^\prime\) and \(H_L\)) and if the sensitivity function (\(S = \frac{1}{1 + G^\prime K H_L}\)) is stable. For the nominal system (\(G^\prime = G\)), we have \(S = H_H\). @@ -1174,7 +1387,7 @@ For the nominal system (\(G^\prime = G\)), we have \(S = H_H\). Nominal stability is then guaranteed if \(H_L\), \(H_H\) and \(G\) are stable and if \(G\) and \(H_H\) are minimum phase (to have \(K\) stable). Thus we must design stable and minimum phase complementary filters.\\ -\subsubsection{Nominal Performance (NP)} +\paragraph{Nominal Performance (NP)} Typical performance specifications can usually be translated into upper bounds on \(|S(j\omega)|\) and \(|T(j\omega)|\). Two performance weights \(w_H\) and \(w_L\) are defined in such a way that performance specifications are satisfied if @@ -1197,13 +1410,13 @@ The translation of typical performance requirements on the shapes of the complem \end{itemize} We may have other requirements in terms of stability margins, maximum or minimum closed-loop bandwidth.\\ -\subsubsection{Closed-Loop Bandwidth} +\paragraph{Closed-Loop Bandwidth} The closed-loop bandwidth \(\w_B\) can be defined as the frequency where \(\abs{S(j\w)}\) first crosses \(\frac{1}{\sqrt{2}}\) from below. If one wants the closed-loop bandwidth to be at least \(\w_B^*\) (e.g. to stabilize an unstable pole), one can required that \(|S(j\omega)| \le \frac{1}{\sqrt{2}}\) below \(\omega_B^*\) by designing \(w_H\) such that \(|w_H(j\omega)| \ge \sqrt{2}\) for \(\omega \le \omega_B^*\). Similarly, if one wants the closed-loop bandwidth to be less than \(\w_B^*\), one can approximately require that the magnitude of \(T\) is less than \(\frac{1}{\sqrt{2}}\) at frequencies above \(\w_B^*\) by designing \(w_L\) such that \(|w_L(j\omega)| \ge \sqrt{2}\) for \(\omega \ge \omega_B^*\).\\ -\subsubsection{Classical stability margins} +\paragraph{Classical stability margins} Gain margin (GM) and phase margin (PM) are usual specifications on controlled system. Minimum GM and PM can be guaranteed by limiting the maximum magnitude of the sensibility function \(M_S = \max_{\omega} |S(j\omega)|\): \begin{equation} @@ -1217,7 +1430,7 @@ For the nominal system \(M_S = \max_\omega |S| = \max_\omega |H_H|\), so one can |H_H(j\omega)| \le 2 \quad \forall\omega \end{equation} and thus obtain acceptable stability margins.\\ -\subsubsection{Response time to change of reference signal} +\paragraph{Response time to change of reference signal} For the nominal system, the model is accurate and the transfer function from reference signal \(r\) to output \(y\) is \(1\) \eqref{eq:detail_control_cl_performance_y} and does not depends of the complementary filters. However, one can add a pre-filter as shown in Figure \ref{fig:detail_control_sf_arch_class_prefilter}. @@ -1234,7 +1447,7 @@ Typically, \(K_r\) is a low pass filter of the form K_r(s) = \frac{1}{1 + \tau s} \end{equation} with \(\tau\) corresponding to the desired response time.\\ -\subsubsection{Input usage} +\paragraph{Input usage} Input usage due to disturbances \(d_y\) and measurement noise \(n\) is determined by \(\big|\frac{u}{d_y}\big| = \big|\frac{u}{n}\big| = \big|G^{-1}H_L\big|\). Thus it can be limited by setting an upper bound on \(|H_L|\). @@ -1242,7 +1455,7 @@ Thus it can be limited by setting an upper bound on \(|H_L|\). Input usage due to reference signal \(r\) is determined by \(\big|\frac{u}{r}\big| = \big|G^{-1} K_r\big|\) when using a pre-filter (Figure \ref{fig:detail_control_sf_arch_class_prefilter}) and \(\big|\frac{u}{r}\big| = \big|G^{-1}\big|\) otherwise. Proper choice of \(|K_r|\) is then useful to limit input usage due to change of reference signal.\\ -\subsubsection{Robust Stability (RS)} +\paragraph{Robust Stability (RS)} Robustness stability represents the ability of the control system to remain stable even though there are differences between the actual system \(G^\prime\) and the model \(G\) that was used to design the controller. These differences can have various origins such as unmodelled dynamics or non-linearities. @@ -1281,7 +1494,7 @@ Robust stability is then guaranteed by having the low pass filter \(H_L\) satisf \end{equation} To ensure robust stability condition \eqref{eq:detail_control_nominal_perf_hl} can be used if \(w_L\) is designed in such a way that \(|w_L| \ge |w_I| (2 + |w_I|)\).\\ -\subsubsection{Robust Performance (RP)} +\paragraph{Robust Performance (RP)} Robust performance is a property for a controlled system to have its performance guaranteed even though the dynamics of the plant is changing within specified bounds. For robust performance, we then require to have the performance condition valid for all possible plants in the defined uncertainty set: @@ -1321,7 +1534,7 @@ One should be aware than when looking for a robust performance condition, only t \label{ssec:detail_control_analytical_complementary_filters} \section{Numerical Example} \label{ssec:detail_control_simulations} -\subsubsection{Procedure} +\paragraph{Procedure} In order to apply this control technique, we propose the following procedure: \begin{enumerate} @@ -1335,7 +1548,7 @@ If one does not want to use the \(\mathcal{H}_\infty\) synthesis, one can use pr \item Design a pre-filter \(K_r\) if requirements on input usage or response to reference change are not met \item Control implementation: Filter the measurement with \(H_L\), implement the controller \(K\) and the pre-filter \(K_r\) as shown on Figure \ref{fig:detail_control_sf_arch_class_prefilter} \end{enumerate} -\subsubsection{Plant} +\paragraph{Plant} Let's consider the problem of controlling an active vibration isolation system that consist of a mass \(m\) to be isolated, a piezoelectric actuator and a geophone. We represent this system by a mass-spring-damper system as shown Figure \ref{fig:detail_control_mech_sys_alone} where \(m\) typically represents the mass of the payload to be isolated, \(k\) and \(c\) represent respectively the stiffness and damping of the mount. @@ -1361,7 +1574,7 @@ Its bode plot is shown on Figure \ref{fig:detail_control_bode_plot_mech_sys}. \includegraphics[scale=1]{figs/detail_control_bode_plot_mech_sys.png} \caption{\label{fig:detail_control_bode_plot_mech_sys}Bode plot of the transfer function \(G(s)\) from \(F\) to \(x\)} \end{figure} -\subsubsection{Requirements} +\paragraph{Requirements} The control objective is to isolate the displacement \(x\) of the mass from the ground motion \(w\). The disturbance rejection should be at least \(10\) at \(\SI{2}{\hertz}\) and with a slope of \(-2\) below \(\SI{2}{\hertz}\) until a rejection of \(10^4\). @@ -1398,7 +1611,7 @@ All the requirements on \(H_L\) and \(H_H\) are represented on Figure \ref{fig:d \end{subfigure} \caption{\label{fig:detail_control_spec_S_T_obtained_filters}Caption with reference to sub figure (\subref{fig:detail_control_spec_S_T}) (\subref{fig:detail_control_hinf_filters_result_weights})} \end{figure} -\subsubsection{Design of the filters} +\paragraph{Design of the filters} \textbf{Or maybe use analytical formulas as proposed here: \href{file:///home/thomas/Cloud/research/papers/dehaeze20\_virtu\_senso\_fusio/matlab/index.org}{Complementary filters using analytical formula}} @@ -1418,7 +1631,7 @@ After the \(\hinf\text{-synthesis}\), we obtain \(H_L\) and \(H_H\), and we plot H_H &= \frac{0.9936 (s+111.1) (s^2 + 0.3988s + 0.08464)}{(s+57.99) (s^2 + 65.77s + 2981)} \end{align} \end{subequations} -\subsubsection{Controller analysis} +\paragraph{Controller analysis} The controller is \(K = \left( H_H G \right)^{-1}\). A low pass filter is added to \(K\) so that it is proper and implementable. @@ -1447,7 +1660,7 @@ It is implemented as shown on Figure \ref{fig:detail_control_mech_sys_alone_ctrl \end{subfigure} \caption{\label{fig:detail_control_bode_Kfb_loop_gain}Caption with reference to sub figure (\subref{fig:detail_control_bode_Kfb}) (\subref{fig:detail_control_bode_plot_loop_gain_robustness})} \end{figure} -\subsubsection{Robustness analysis} +\paragraph{Robustness analysis} The robust stability can be access on the nyquist plot (Figure \ref{fig:detail_control_nyquist_robustness}). The robust performance is shown on Figure \ref{fig:detail_control_robust_perf}.