diff --git a/figs/detail_control_cf_nyquist_uncertainty.pdf b/figs/detail_control_cf_nyquist_uncertainty.pdf index 27288b5..c288ea1 100644 Binary files a/figs/detail_control_cf_nyquist_uncertainty.pdf and b/figs/detail_control_cf_nyquist_uncertainty.pdf differ diff --git a/figs/detail_control_cf_specs_S_T.pdf b/figs/detail_control_cf_specs_S_T.pdf index 291be12..4e5b143 100644 Binary files a/figs/detail_control_cf_specs_S_T.pdf and b/figs/detail_control_cf_specs_S_T.pdf differ diff --git a/figs/detail_control_cf_test_model.pdf b/figs/detail_control_cf_test_model.pdf index d471c37..c3ece6a 100644 Binary files a/figs/detail_control_cf_test_model.pdf and b/figs/detail_control_cf_test_model.pdf differ diff --git a/figs/detail_control_decoupling_coupled_plant_bode.pdf b/figs/detail_control_decoupling_coupled_plant_bode.pdf index 36448b5..64c4237 100644 --- a/figs/detail_control_decoupling_coupled_plant_bode.pdf +++ b/figs/detail_control_decoupling_coupled_plant_bode.pdf @@ -3,7 +3,7 @@ 1 0 obj << /Producer (Apache FOP Version 2.4.0-SNAPSHOT: PDFDocumentGraphics2D) -/CreationDate (D:20250405145927+02'00') +/CreationDate (D:20250409143805+02'00') >> endobj 2 0 obj @@ -159,7 +159,7 @@ endobj 27 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 28 0 obj @@ -339,19 +339,19 @@ endobj 57 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 58 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 59 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 60 0 obj @@ -381,19 +381,19 @@ endobj 64 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 65 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 66 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 67 0 obj @@ -507,19 +507,19 @@ endobj 85 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 86 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 87 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 88 0 obj @@ -555,13 +555,13 @@ endobj 93 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 94 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 95 0 obj @@ -687,19 +687,19 @@ endobj 115 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 116 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 117 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 118 0 obj @@ -771,19 +771,19 @@ endobj 129 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 130 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 131 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 132 0 obj @@ -855,19 +855,19 @@ endobj 143 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 144 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 145 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 146 0 obj @@ -945,13 +945,13 @@ endobj 158 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 159 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 160 0 obj @@ -1035,19 +1035,19 @@ endobj 173 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 174 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 175 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 176 0 obj @@ -1161,19 +1161,19 @@ endobj 194 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 195 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 196 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 197 0 obj @@ -1203,19 +1203,19 @@ endobj 201 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 202 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 203 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 204 0 obj @@ -1335,13 +1335,13 @@ endobj 223 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 224 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 225 0 obj @@ -1383,19 +1383,19 @@ endobj 231 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 232 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 233 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 234 0 obj @@ -1725,7 +1725,7 @@ endobj 288 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 289 0 obj @@ -1737,13 +1737,13 @@ endobj 290 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 291 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 292 0 obj @@ -1899,19 +1899,19 @@ endobj 317 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 318 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 319 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 320 0 obj @@ -1941,19 +1941,19 @@ endobj 324 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 325 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 326 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 327 0 obj @@ -2079,19 +2079,19 @@ endobj 347 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 348 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 349 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 350 0 obj @@ -2115,13 +2115,13 @@ endobj 353 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 354 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 355 0 obj @@ -2247,19 +2247,19 @@ endobj 375 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 376 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 377 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 378 0 obj @@ -2331,19 +2331,19 @@ endobj 389 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 390 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 391 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 392 0 obj @@ -2427,19 +2427,19 @@ endobj 405 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 406 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 407 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 408 0 obj @@ -2505,13 +2505,13 @@ endobj 418 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 419 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 420 0 obj @@ -2595,19 +2595,19 @@ endobj 433 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 434 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 435 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 436 0 obj @@ -2721,19 +2721,19 @@ endobj 454 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 455 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 456 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 457 0 obj @@ -2775,19 +2775,19 @@ endobj 463 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 464 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 465 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 466 0 obj @@ -2895,13 +2895,13 @@ endobj 483 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 484 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 485 0 obj @@ -2943,19 +2943,19 @@ endobj 491 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 492 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 493 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 494 0 obj @@ -3111,13 +3111,13 @@ endobj 519 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 520 0 obj << /Type /ExtGState -/CA 0.14901961 +/CA 0.2509804 >> endobj 521 0 obj @@ -3129,754 +3129,321 @@ endobj 522 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 523 0 obj << /Type /ExtGState -/CA 0.2509804 +/CA 0.14901961 >> endobj 524 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> +<< /Length 525 0 R /Filter /FlateDecode >> +stream +xˮ,r$8?_@K|?VT4q%4t﷙\wQuvŃt?H_w!__p_/|?gw˵kE!p%)F?/߽/_x.'~_o׿~(+Ů[7]Jwo|ΛW%]?ǛVUZէOzHɻ|t>׏n?XF7m$~nBK2_[)c*>If `N|G7u>IjEWMf+(s68飛V:O$~n"e>IrE,Ir%e\?IrM+*'M+n0T,ۏ>.$!Iͥwg +jн=?oq~f*?uiZn-8On>[;Ep}mb}ڑ5ZEZ?xD/|$~}7Պcؿrs;R&oBqڷPسJ? 9{@~^Cp6iZXo87 eI!} C&Y=oR{H7>bPI.!}XC&MBydwMO"!}@DzRd[(M!}C&']>z\7yMA!=執PΙXSc^| ӫ߱\nz96LS@x,%Wcᩖ_<$ի_\z)6kRs-՗@xA?Ox=;y ZӫﰃVs g@x.] %W_aT'ZwsI>~`g/~2\H WιӏzH_gߏVBnB6Sߊ>JsZ\ 9x??e[O4h_x;o~o~y/+$@ØFZHd{:$J=HW]b~4 iE$L ҶwxmxiD6qUYs7QB6 +ęWY'Ogƻj\Ω>p/<׈%tY Ώ÷!.̄ebA-WD±!dT&׮C f'\Az w t`hz ᘉɦg Taq +a`fh>! ,gC6Ca_rmJ :hb+_ Nyk6G1 jPRq xvC2M/:b`{!N\]!:M Ƨ mUN69t{_j%O\x5lJ!b߀>C\*l xAb +L_(ɈYVIԧ&炵XEڒ^,~0$ĕbR_S 0D58]~3՘@?`P)e׻"SSecO_E:w[8!̺VthpBE%.K UD"1С \4NZg޶(szUwʜPo s20[bZ:9!tHsBYGTr;AuadJ:TZ `'?4Ź"ʼ\>JAI(>&xiNF8C|'E'ZDBp7tQ{ +wr(s"MeC`D!HZ!GDlA" AId1NeСjλPʸ U橨2jO*cP1h1H$"̉ Ƃ¼WJ قA0/z349VRFm(s"p]mxj̻ZYR eԘ`颐 d +sE'*MSݗiP ts +8BSKR>:ހaΥq`y~1B/cfw@%a\3G/E2OLC|JcU y ,*FFR &6C4eA'iUN(ͱPЀ@spef_`aRILʡ14ϥ3 S?V쮺Hs 0eI]6x^p "͛.R^ZʋiN_!BȪiKVChUa:bJ2njюAF *ZLn< +siHU%y*fMfrYu9X0ڲhx:~@\atq$D]KlrF]!.:ţTyh BNt9мp}: 8E?91a│6]IC]U.c`@eJi.PX\.-\']VA.\&3Va0\R 7,?Bj-e{q(25Ao͐C3c0<%,@9\_G[srdqB(ǜ%"CCT1V)gGzAD9Tz!0|a_؀TƗQHҤWQU.;U:D9ېv24y5K.MM(j/"S>E0)[Ⱥ /Siji"u9-&c)GpPPhJ ]?sŠ)恰ŔgT$/ }"3R^*B&459MTx{yhBFV&#Z2hjr@,?M^P%n cӈ()/^3à^jlMQ^(EU&(7tBR1c,ޱk:1:-3C32h) O4԰L^J(/RW-aHhr@yLuN MQ^XU8ŧC +j,T*(oT#7o*|Ѡ9.fBS&ULAU^C\,ASgNd.BdB<0ϰ.%9 2=ty:脦.gnomezr1pTY'y`O4N_-CD <,$U5.$-IΦ˥΀¢_Gǔ;M{P E$`*.0A3\ε!j!J%.@^ SM]Yx٠. +Ua(*Ye3o*gZ:b|gr))QΡ1D9u=~hrܠzi!,(MJz+R$Mh*rvZ/T4ney(ީ}L;C pp yg,p9J[CK]Z`@S*}T(=kJ:J!y#;}@َUva:EN@"AuqrZƺ::Ӆ_ XyܱASg1]ƤPlh%ki,'ϢGgl +n0"AS3kY :Σ|+z̘z*/>4P {*]U&8yђkjGf0t5ex2&DI$thrnvI :4y.e;0<59K/=w4+3@SU30}LYg_EG~Jd7J=ʅ~bgKeyX9$ LUް5k8Y)ow8'swN0iU9| +X'ըgpqd@-Q0\b.N%HB卛QL;.gwN2CY,*. 7)3E0ltᮝS2}.1$4uy†lsi :r ]}Uy}.UдC;\eE3* , \ pz+ F;]KzLn9a@Bղb#|_ʀLg)/. Uj!L{N.ga\wW~"G:%X?b輽Ĥq%F)4@cabeG}C,4׹${Ibѡ9ƳX6%;rk4tt'*1TQTd}x-Zj?{@+}җm0[a?BS3h^tvc4h30ŞgEpܘkt#hCA 7'tTP("{VPY36t(w:n+r+tg܊ZVQϲ7JK8ZEڽvV:5XMBɧ8MʴvwXGp:+C)]OW%tә2cg.!ʢm&IYP5^u_(Vae_h)Z0},Tʺ4͠Oo"zg)LSá~<#P,wW"$iGH*ʍw[4TjJ{<ꝫnjطCs`UšW Ӱ~]Ʋ1Kж`*N5ݗMhwMk-;%Q麧,t +d!%9ȈZ^~g&2#jMRbhY g=_YY%L%dX"eaSS ]9}xUu|7lyDTagJSsѧ#Oˮ f^v2 R <At+,6&hJEb3P ۝5NDH"v{F0u}|o3+{*$-ꞎM n-c{座Q(a˦R0Nx.SOfWl+%FlE:螀ܢeiKڞP9ONm/;PyMz +3Ml.'Yצ'h^岻PqĆRx}/P1IC +3a*jى +4j3]N/schf%m3l|ܿƗM0A^kȇT'wSsW)LfL/[Qq +VXҐf:_vb.qfJ P J_bæ'V1ڡeGȎ+6žlI7æ'V!e~}ٔZòTv6,M,~Sٗ +mյؔ1 Ħ'Fu_WIٙDh~n?ns,lrJ #* l~bɱM t8=rImؔX {Py53I'gư)QjА܄YcڟXf-SyO!H!C'Q|cY?Dnݝ>M&ߊf_v4E3Hm{,!6?seIkb<6]`O?q' kvu}QIvAaO[TdOr:81-Qi5HZv+ZIPKb~TRTXL\&k_O),ꟙc*C3hءeMaŴJU-Se[lq1RCpEўO^54nE4tqZ@p2CaN}~ sܸPeD_0>MZkvzsJ,;t|qVg{e)2V;᮪B/ts7-c4rg(Xsr@#C^ϗt'8//vlaO~9oW uq$ex_,IlC&T6 >fC=OWXTH2feޏoH7eCz s3J 8M +͏X90㸙pKvQHr:}t{NL_Pk\x&N+-G7s +W;ˈ׏nİIv`v'7isZf8e6b!l/$.ωssh$ 73pVM/|xƒw&sU(Fasch>G\[ o Q׏n?Z;%y ^?IjVV0G7[ӞG7ۭ.v~Mv2dħn?[.aar.n?[UYIJ~tݪ`3hM疫vIx{媝.uh6壛-Wcnq޴\n?\޸'Ly|tj maRy5}! Irkno,f&myH[]X|:V׏n>GǛss\l-P{0s 0?A!aaRbK76!&vғ懭I\C)3qK`y!uP_Q`Rf.mun$̒A`~f-k~9p?t 4&> ;&v=[ +gg~3u G 3uiL'}3uL3ui G]3u +L'̀?_d~X?`熽שo/vr3>s:;P=槞aVHkww>u {4 - I/с׫d_ Żpw-qJ.ğ$~ \K7^Fca ij%nK]!}C&eMzoS{(ߤ7>EMzz5c|PɃ!}C&M{雼&缷Uv[H$I!}\C&MR}[H%Io"][(V'JOl <^= ٫W\/{H6 +e/s}Axz!WdB-/Wcul;^= ۫\X{46 j^s!Ax*z?Osի@xнzϕWob"Il ~@z-^8Ur?rkp)#?Olϩ~|< %=$IYmg̵÷zz[}¹f/to.  7;W/|oCI+Pŷ:"{&[n=q^Ş޷z{&yu'qoLzzfy¸+{N;| 'uKro&uromL.Pnh|y7ly~ܷ: s\y$ycz:"j3مc7+O$α91}f"9Zb碇[J.^÷QH&gcF'zmKUr,8ϧ.G嫔<]c )<+a7ʁQ.޹ͪ17yOngxqߝE&DSuJa7έҽ926;ϱP6,GI+bPB0b]$5Dұd`XĔI\uc&•U谌ɓh0,dҰ  cO}%I4XgaV>` &P{mR>.v# VI)鼍(D1ab֗dd cnja-![g+q:FҺIg<{ÚBjVzM:9K̐ I1׌1Q AF?޲aX#T2 +8'   +3W)vX|`nHW!/ϖ<VE5=^+`wm cp6) HShAb0 38HSIoa*se0A= ̴K'FHT/cqɉĮ%2bE6Dm<&ca-:Gasvy$xYE&n .@0nAY7 /1{rF+f6o&CT7*|HlJ:+̒=c%X{kN68Rlp+PbSB*Fl72 ٜ2J \˱C(9 )@ZETSKv.>PpiKo뤕 'd#JҸ3:Ǣ>F^/۪'ͪkޚBXdE~97'X'qO%j;Nb]hlÉ5H4 ,,l0~5.mߛ&VX #IA{ј2eH^yA?CPI`H{.ݞSb0T6Z%HKJ xť]*&0^`S0 C:AxIx6+Lg6mJ +w,.Nu| K}:xlZ8Wb:dشƷ(c ` ueW8 +YXK6 +QJB>[VtЌٱB*k_\V6yovl/үK f2{2_Al>ݸwƣ~V)mni״ wf_Ӄg+dD[W}#wUY0.8[kjP +FSX%I:U:_lҮdEUBt )UHJa1ȩQMe %f ˜ɑWܗV)*D>/ &oXtfʵ=cJSyYٳ]d&N.!]AM"N pGG '5)BfSS9F$toMlptA @kE{qx\k G:)#rFAMnm4 nb_Ji#aL?HpweO5ؔ20bFSvdPsG6 ^![R{vSf\Q\2(M5_$8xˍ1t w@ Wjhl㊗,a 0N/wAcGl8^5c!?51t, /8fQ_>Pe؜SnBKl 3y&06HԠ%Ac* IHY!JFad+^$tfO 5W΋G(ihT4KB +NucڡIt-pAX9teۃAX{0\|Y |9wFB25x, 5o3.Rx$fBy<(rLGo,JL-N4P- EδepBSd +tyyPp;ay924 +ן +%VRbQd>梃WŶmċ\f~};qx <.-j9h8-:aA[@_U8LzsO*;Hڰ+VyFܭk.ä0iv\)ńF aMj0\ M {[L@ԩ~â^gƧ P`+u?Lw$T/ 6r4,zT41N̻bBFi0:e1J*Ʌ\ bTw-P?-*LPlD?z˱+}c]F.STR*80Փ&T56lla_1!fk&Z4bPd&,0&bɐJ9{9{{”çl ƒmA)*\V7V7s+*HL#a; HIbTg0u*lmP 10xJ j mAc`Dgחn7˳1Da@X*lBᅺUŸ&),|8T[aQFԗ3\-T=m!jsV37$N̸ 3<Li ::ܠل"td6>ljRxsP¥ͬ @'θ&xL$%^RqWVd:^>^|D&i\k$SM$^FVMf4p#3ap4eZ0ǵHⰲ{eXT!p3S̪.ϰM(:]-gs\\ +&o {PʻД1 +dbH$)wH)Ivڞb@y7q1OW/34,9<4775tL'ӡ&Rw݉{`%jLVr0c[.>O`x C񄥲eBI|-0X)A*`:CL׊A`ZJ ;LA0e 0?ީQng V*:0^`Yg8Z-+!X]pLR"6y8/R(= Ҩ Lj@OIaF^Hl U(k 3=jKF\h0 JJJ#_Fo|cĢgb\a<` b6/k8a1G(Y#̉wȊSWn`AVܵG8&]ŝl^ + 5dkPFøNW`>6J0,]EQ`#1 :2Ѹksj`d.D +C,3߬a&=ײVb ,Mxʒ7LvIY>s%OҙR;Y̒"o{dsҙ$fX-3߫BxUp%ZKђupOP0&RME^ay&AVfUbAcG _n"2'>c to3G9>LC()L:GxYrQASШ`\Z,5[7̴.ffs0%ybɜ>ff1&*U,NZ GեIblZh(ܚ·"nHr뀸^w'ڤYbu:ZD3ꖤhPv6+,JX^X$5֚cuLx=|!eVHAU`ǔق` 9n):93 EZZqU;@IX#VeVԨd|.fXgI/T"Ǔ5!kAadі *@4s*X*봬9Q#%v\ +! r($38Q3Ё C rQ3F1!B@C20L,%Na$&^*sR^Hwj#rRzY09t)bx:# u/i`x<|a,$Xe81Kl\5FN~V$ՌSRʩE?ҁu}R +#~c Ireއ`p5+0JZq@V`F*ynˁiRlA4+Z Z< jsp߃ +^Y]0yu_lxv  p}wJ׿.ccs4ߜ-*| rQ7'o~N}.4cxw,Ѝy1X?fKᨗ28}t9̑~&f'2?)iG1e~gɺ~ty.m`|8}ty_8̾壻ϻzu:?//]6G]6 7A2^?܎1{vnr <:ϟ~nXtr?fґyL4r?gqxB)>}vEX]],=^?=%gw?h0/s]loen>M󬨺g76 ~>}v6_):N?:B~>.g' FGG$;!h;?:ю#r{xjw.G;!@L)Ȼt')!B9%dܓCCkv9.g |:]n-:?8N?k3ԺܞVGM;^G r$'Zr~tPh.ǴrB%5G'' v|4'Zs`~tPh.GБsB%EG'' |>h‘~hNќ?Nh?cV:X/ZC(ԗFQ!~4r!j]^~=M]|&wy]oRhe^{\yi<.`s/ys'@w#EW_d6l <^} JثT{=6.! ?}9vPiSAx.}3vP+f_|-s)\A;llIvPe_| #U9fCWxn<}gWK¹%s{ܑ.g!^xԖDpɗYwA7{W/;`g7iϤ;|oўIwxa젽n^^8fs/~ o웝 ɚt_6]d/[r/ǽ#|"z[٫/⧳*)51Jy[]s#ϑN*][rբ+ LnY:]_ $/Kο'6I ?j OϾl\ cK̓BEj ww) +WQ}d-k,N&vt'5+;1(VCQg;sA%^ l'[ͧ]X<Tw%s;2^SF\84`w$=ؗ-9~|=e֢ʞq/$Mx(d^=wvc.5t=jXbŘ>u|m9y TƝr}MOr'N"31Rl 8.٬T56{ST, }@ ;z=}td3 h-)2r},'T%+3I֥/ϰбOQ vdd0ҥcBhvA=e),,㊫6lǃ8xF>T"-obG?+8F7x_ +>h60.XK+6hց?J6ܩi| ^^qf<{Qy5Xƣأ6H%&1hl8`k wÑrb۬]=*{jX]HOS¦u,W.xoұB06UvaGX,&6{N$r)O0LM6B$*0v#n}` bC$Zػ ;apاbl ξ1Ps0F'\Z1Ot"."k[s"xx K\b"l,3%.YKiЮ0h4[(ntI<̃_ck4]Aη»ʵy + UaGILBV3HH=2vjÖ9me.E7bKob=<2]6FmC;;X.N* ^bG{(v;@l]ouj"0s1l>Nmx̹ ,%]qu>:Qt!=T S#fNY۹$Og mڃ6zX-yvPE]0{}{ aYd#)vFv}Ե1t+f EAcw(myӦ#7!0`GxݰVW%lLo#LlD&~3UÈ1Q ;Z~x 4tKƖкwx)ikäZa=KON/1@Ԍ̾AN +["@G;'6`hsʓ!ٸ,^φU`]ٳK}fXJ^Oͱ jj,{bX}mlx%R;CnWOkJ6K)vOO$G*NlJHyPxl*Zha^ȗ~Z%i ftv_wK tn(A;{fM/3JGΡ/K-EM/mϾ{.jxUb+7T.Ae_y~`%L`t{TKs91}餎U4ѝ\ t иdCkv&jt tk:W6]AfÇr`Be`%`kDHXצG@Y gn3r&.n2-gJ( -rx#Ҹ2=tBesM9ՠkp r7?GKi`000 N6وxc[[X 6]1[XMߊC.Q_>Ab +ܬZ68X\`@`HC'ow%>` K>BiI3L= W 2cz!n=8,-<T+,aGt cv|:[fK^~֗ʨbp `$.PJ"JE8 HOWʥ1Ka`%Vlt3l5@\T Ufa`9 F+vΙbHRXhSe@'#ӫ@ sRᏏ&f @Z ݆-0 h Uug߫'PYammk XG~4׏ @~}:3u' :ٮa\N cqt qnq`!@^n'\x*_2\e-ɍo~!ϡ&D?'sbsZ0-*O [Mn(K/M܀ +CSRzazzL2PcY) /1nK\Jo\fР`/IĦfd F/ vY'`*zB39@Ep;N+̭ft'5rN# eIE]0,NVX26p'af^6tS St ` +B6Ƽ*1Q?`2#;ࠌGHxc*i#te8 c^12GBPebG@HLԗzy?|tfgqFdv1 _x$ kZiC AZ4%M8}0ưtg0,$DC_>YS) w.ގ7mK'-`;%qHa_lƲN@xyK LeF`8\M60/3X)g&ƥ]l<CdFld Ŏmx1?|$byQ~ljT ƝjVtѸ>v"oq`G 0qF i楖Kd)1x&0{E-ޣEj]8{cK3S|7 6KlKނ3c%{ +_l0:4%sp0:[%h]/rɃEdn%礥;3K (' +hn;Qh~8FE1ab60(b"t 60ዳW\$qoq`;@!Zխr,l*0^w|igaQȴy w `M!]LYp,?lW[3X 6;GE 407,cXp"XYہ5`׬0bvLt#3ac.,2b@֊YGB +GxƟ3?[bW(6Vq1>5ˌa}ţ2Đ%u BħxDM͛9r8r:FbL'YLj83VX^Zk" .+`W~ڨcDؙN˔x_Qo( 2 +B01%EjE2NBʰ[XW;[x[T +)΄I ׂ SxmGё7A\HZbrڼGkBs϶o(i p8,cNux'猂p12b< E^^t2K1AG5d; /[,.3t,%H@6$O:&lī<EQĂMݩ 8] zr5_uHY:G(!xD +\MԲb+}\mXv6 )żQ% պX rW$? tٴt9ˑ`5x?z70/.yE= 8]p)6Wrwj_-WBx%eq9xV t9qNˠ=`˶*)"ȬcH.>I_`7K<\v3)c@̼[YB\d l9xaMFߏo8wP1!| 19KfA2Z9iI,rVu> ~*`G?*a服{>B}*dp[(S[|t17qqg(l_^?A.¨^>qsY{A,4Z`kp~nH>Js}v JR&3׏s?kQO}v-98Gs}ܮEV獮:ƽ~t]ɜZr:O~nגֲ~t]K,=G۵$tG۵4uz0y&ó ep!Kh89P?07BȂ^>GU rnJz0g +sEM)1Oܣ~.uЁ[Y'?[9ȏɮA|r3KjɨOQfkxはܣ̖AG {pPf˂3$=lY(YcчQ/ܣ̖faSMcܢY3FYx_`BZOQhbBmP/ܣКrq^?G5cceQ/ܣК1SkP%z֌;;=OQhX(|ȃzg֌Gycn#̖y`^>G--=tS'PUX]6s +[>G/e"G2|r8wP\q_Jtw^ q_jsw^+p_rw^Ko_q7ܾ ۾ Vپn!׾T 3횕l?r~:x#7,5| ^(%P^+t7ģsRlyO[793l;pw~:~-^e?*~By>Q>)\ѝ(7)KJ +{|T\}|RRR>~By.>Q>~By.>Q>~⃜WGUO(E''ܟ{Z'=^|a|T8\'~b|R082m0#57;\\;|׽ΟzW}Bf'to̹fs]L+tvN[|oɞIwxYln{&i})Bf;tF3- w3@:fWreқSl @SݙiugfN2rI[+#s[nޜ}5zsb|'כ7gj/F_oNӾ}9G{1{y5P땆|9{;g϶v?"*]4ִiWT6. -U~{uOIL>bO׫_Hq=ݦ? +~{ 45~m_f>蟆LjJKO5=???g緦OQlxvQDxڟߚz?Mla__gcx( aWҌj:u[R&III|k! FSFUQFSFWԢM卭![VZߘL|>d!MiXbMZ~lWAHm$hC:"cEi#/edrݺ^a ąDthYmy9i2Lߝ;2`lg}[kl* CO/M?jX M/BZ\IdCU%K!7ј +4a_F>jsbê)lm%&! 1q))x:6計*2B5ʸO(_P`d7,H!PnZ(!淦Vjͦ'XA#mWZGےWF7)?auiMotRf4ښ+^1\Ay}/F0$ںhnR}G&Ts{ , [5XMBZI=?1bٞS2CoJaL=~hDu9D)jvMR `aᚳ KT5諹e +}Qc}` ڢ<5'ˁ|sZw6Qi%Ss M]FI>=g3IL]YK"en!W7\=QǺ)=o#0fA>`Z[֞|/05rwr,j+"9mc9(HZ|2g*j\\VcE %,(ҞF\` ˍA£bhN>0y7#Sg+!qhyɊU-=]l\Uτ +DC2ĘE:Z95y좣 `rPHJg4֭~qɓ߳Pq~\ =aZ?uj:*{ +X)SV+fx.Q<0ֶz2{T [սFz_yCtbAIT9mB􎦍cr`wX5W)uT454Xф+;8mmWV!i55ݱ |IqbĬ˵(4&2 :yC3 Y+7MlNȐy| S %-B%@F;~>P&[ V%tddW}MWfF7hj4䇗MPЮ9-zZW'h#Oq fzpĶF\wMP" w䑝$8oh8MY1K< x&␀Az+#$dWdG@; ЭT iB40s@wB ڬ, !@WAװa,@='A\d )_ج A:=R HC={MZk{L,lgT|Zpޤ'WT`# +%Z!oqgUփPBӧBI' T#Z7tȻ˫C' @/HSg dz. +Z ,Cz{p lgZQ#, uU P Ǭ6ta7 O!z +RZada2qq'xqyR +OlP[nofw5,_[ HLPBw`P#u-ӂwlg,rg,GĔ{2+ȵ6ţ9 ٽ̚6xY4H v`u˝HHLEffLѦuL9h(jX:h)C&?v**AֆAX#8vZ0 1SFOJ υ"< o6SeM,O~[c87sOCɦ$2ŷ[9` V5Eq`&VEvů];?R8v"FYmc*o,E- +PǤ87LJA5/-Osۊ\vQn5Lt`~*`ED];&j%30k lg8on@l[&Vrkv9nӚ706oX,(:}mqL2L)PFi¨%lR e< +Ҕ\o +E/W79dbM#kMƜ|f&ϷX_ +7^g~ER + S̝1Uw)lvw۹Xѿͣ^qp MP.mwTk w+.k4і8\@9XDa Uqhvan ɀaZdg@"lO6u-wi(}]w0-)ij #bV5 Ԃ{] Wglbp6ƺ{̛cf7r [tB>ڰo>cj\@ ^p݁\@Y=&v.hr˿b1k~hZa4Z1.I ipZPtX"Ix+ .)vPf:눝VO\\AsVO1:6>0K8^ǟ Vd&7G]fFƾA(ՈS`\#G`cs/ .wFsƑ4Oᭁ&- +wV %Ÿ@fENT yi?:sE?:a'.Lݮְɸ@k| XHF띏r" X %:g#TbE3U/y[`DO@ +'6`O/ʗHnWf@#2 5_hR2HĖeï*ʳ  +7;հDDKŚ|kAA`j- dHxPۯ99ܜ| #@Z\*e/Bkb֠B'E54|uq0\Em^g&p˶C#!`u]j#[6_ ' '4**JG4) >~tg&^w#S˩qJd) Xta`rre6؉ ‹.^g\~nv EkhI؞]RNL@].m i&bjCP8<tcWx3Ԛzۯ  (2uKY,|OK8DzX^ЦooM`Dn÷ ҐZMƖ\>UK9)KeAT4J,vd~,e!g,˪ ؞ZF1²Y*VTTZ²kK +PJ5T +d ~^_7V=.\zWkQh_uSSa?k /bY)\7ߡ }2Z ( n͘a>k"t* @ASKy ( /]7[l]O`iݾR؅;Uq)Q'l/K;+Ck` &&>_=p ]Z`GmB-wiDux_w&_䠪Vbr}gS_N"WOYεAlVU6HkCgsߧysmq9YA)*j&Ȗ`h=0Ll+3)`OZ棚~ bWnTDT-b3kc?)>IA$ؽJ~R +4LȈNV~5Si0:D~ve6ne<)6ں3;jYl'J v"`ޭd+#4 nėSaܑ Hs6{[ kav&ys 2JZl{`Giirs\4LNS+SdT($`У5(^L;<ʬA`;(,^DY() 46'|[E \;vUr  +dS@VI26p<gG<$ɳE:Xq=wz)^<TG4kx|> `eMmuCtV?/^U'j{ǮŀSZU=?tE2 c.(gk׿{۲ӭ_٪C9ې8nzG.🜫hꋟ>70_iM3v53k(Hb^ ;9Zl1Ž?uPg%m!jG9X@|x5w"1pya<)m2^̟7o~kd"RkkWn|}1Je*?|j + ~HhL>}_μV@]:m3W!ye-4upV}nh˾7m>vYdl>}n{m{6gCv/}n;ݷ8-kɝ?}Ѫe>}ߧms~r`>>M1!,5m?}gM(F G۾6ݮZQ~sƹPH>}߫U.S 壏m^Mx >}߫5,ѳk;|^u+񺷰}sZH >}߯VmJ{?}IRkG۾:ٟ{ꧏ>}߯;Ky˞\"so|bgܴS{vMۗ>-7-%Hl?}oul,M~zJcL޺lMnfV]hl{&|ӷ56?LVo^ol♶/;z[#ef~_/?6w<6-\G[[~&Vblߺl̃]/'6w$6?i;fg>zUپsCWXl\Tlծzb3v8 +?l̫]obalߺOlЯ]6wv_\3ۅa}aCvtl߹klЯ]+ +b}a3vs.`3vL߹l̫w]"gY!՛f.58#Xwy׻m4?qLe!3~ +*Lw +n?G78>4jK7uekۼKp>?wwyg~P7g~BosϘ&ig˟1M!-.)f1Mߟ1Mdܟ1M!ϱ?b d1M*1Md2t#F?cCFϙGL\e (A^?zKF_}0zRK5ﵾ */~}nK)#F۔y*/O_+0y R*kA'^+?aZ* /~~{O:~赶KFE_ꌟ0z&R`kG^ꇿ?`KZ'^+?b`5MQ[6f/gү'o:}Sb}5l@A`A?^ lV9-/6oԑ1y?ۼU@~`[F//F%gwjoԆؼS$w֓O'J{%w^KFoբ2z=1zk[F//F2z)31zV4t/?Uh~襰 +}*ުgcZ~6zK;w^+Fo2z)U1zfK;X˥8lV-w?{1l*eRbNҧg[Q u &^ث'ף9j .\ͩ݋㺯6bo^l>n>}j镋}9j .\WOp7'/Fbo^>ޜ}5{sb.vSį\\YWOp7/FboN}96|1{s^b.'؛pɜ^؋'؛ps&l~sm%\vahd4ubk`_ +T7a2}-5Xj[\?_nۘbiH"4KZj`~Q+3b$mC]um]'ƅitǚsE"ϗseJFc̷[L)ֺu Tui<;Cdc qq}g]CnKwn&l1zmbu˨!qCB7c +ˮF&SsuurkcBKK/'u=öQڪI?XWmsr3}߬΍Z|Nվ֖K^>8 .U:* %uu5u3F\q60ʹhv4, j|ߜ^5w;s 62L;)hW:kn}^Ny(Mho-O;dy[KgEzUfcKmB)dG +zaB`-Q1 տxbbn˙04Q +-;X(64s7mE$ \ẕ%Ye1 +J4:@t<JJXA\4kۿ.-Z=V ɝ0yVI=0JK Za˗9ΨZ`AzC=!f3b.g[RRjAU4 +)Onĥ[nZGRSQܗ-VkO>>1yf9X֌F8|-;~ %7W_]_r Y G#Zlz$ℭe\d&~¶`<'&hPۇ\ub`ά"MUӛӈRl@N̵td:|+9E~u5n_Ңesd 6i +ZgVZF@9'tHP`Ϭ:'W5 *mbk葁@oؼQڱ9f+J|!ĸobܧyjr-0Ǵ̸6ء"}',K V©kzZ "N}`|jB'*P6 2!+ꇮ ]KUf~l!.n\cO+1ըmBw+6մ|xr:5CzCi 4 +hbqʉ禐ﹾ֜^ٵ{ S@ibuJmc +Zu`DyQ1 +6 =;]eu 6;MǢ_ *ѥ S,XOsBcp&-[4g7Mj}<*8W86P4 Gߛ f=2|8ǂ2m`s[yɏaksv):GWw>_%8} U@`"`(Į{aZ +vYXD풼YD\,W@sr\61yf)0glsz)B^\갢2)?ӵ:+]9:C "8L+n1E^Lx7Xz"է32 +L)n--4dn50>"AԪO".FV{=MlJ:EzHpM/0oNrdž՝ăQTp)=vϫ޹m":3Gx-j!BX71 ءYM-UAj9=Bw4V1>lEe'> ^bvps~(gp1"V ꅶ4ua +6 emMSy L6@\4FL.q<(o齙@ɴӜw)60Mm-#0<~ ߞw˱!ahˊkL.TqNiğ NJH3 uDJ1E3urh5m9kwnڎ`Mԧ[&ûvͱ} ,CЮn-`+z,FG XiX#0t-,1*偡HW'xm_k'Mi_CV|762SkO%opWhjr^@L _9̭|0\$ S$jLH/.iXE8m'l"{{M1yZJ[C͐X7!}uZXBe6e@Bm#q50ӛobT9łˠyŚV-BuG80쿆4n&]:1}EAHw +|JۈMj0br3hE:&gd4[pR~eJwWYJ$3oj +l'xN45&Ң0Lnwq 6%Ki8a/L>|j1V M@w~-htrVM,ml01c 䵄=5c77Xl9VLOu/k`Zd;]"ʑ2LAI{I՞1&d ChUc V!9/&n,)0ۂ1|C E񘉼YS%}2] K>j¼a^i%ljJ鶱`X7op&ĴHtw4/jk7AOL֦g4~yu Lam +jx|Ê˞>qhj,D)Tqa_NW߰G*1.3""F^s_A/6|jiuY@obEs@\'Ǡ+ SX4|iI)\ Mj%1 a +'f[#9W> MjR6*?&%w+y $,͗غ%-SP +auCC&fεPR`ƢpݛI'1&u0DaHQy F+kVUI6kpI+k$ט`}צ!+?Ԣ1VZ1HW6+WSAg1Mo*!/-Vw>JbGY +) ,8'1:5cķmRס|1h'taPd7M)#?fE[ lk3Y}1&6c#Rqo.bo;)KɹTbt_\_%_}ױNX|H:m՗Xq͜;B2-m=bWR1bS)RIdj51M-^Oi8Saby kKV'- [`Y~Rd`nk` 5I}Lɵ}jfI}9bC%sJ` z]$6kLuw( _FJif)yErfBԟ3V&s'GXUu-0 +5E|&i"77H'9SrHzﱹ><,fj)y5L|zzs1 +^섬w:@X)ÒFS~5_s.[YaEkGaK|qQ#)qC01K9Zؼ4|`r̊Z`3=0aZmy}\Fw}ㆼ,2 lyM4fK/`^FШĬ61CSwLƲ&l`|LCy~oAoYaֆ-yMЭVJ=(;4h5,:@aj23䛼`b.-Æ)'Dz&4GՀQ)N=9Xy)5eQk`6CWaK7m:<`zU"uGi +ՎL/0u`į06>LΏA$0߿'撲9.tg`wP X GaАguÛ4 +)YǴhK La#y} +:V=o@̯u@0a3c>6[u724V`[[TW:|7 +Y-,t%kbuc(OwY}1BA٫@# + q +fky#/2E%jٱޕMN6ǖ^OIrzd~s\R܇7Xm5:Slۘ-):<!H0c9imڊuYq} JE3LM螊C&Ncs"Ր?eG.֍,}/&XL"oGR߷6*3٧0;@Q--cbNmjm,a؊-?Ui|XD VΠlGc@bS]ASĒY 4J` +;1u9,y+lwb3[$_fwiԌXՠF&d%/7 ]9e6.Y ܺbpd_eF{u؇Fꞏ>}mniͬ8 w/Qmv ¬I>;7ZS.e é5o%A' Xl2W m㋝{{ ޗ()FA4;ȵ9pr&pHFBfˤ^_JR_c]׋u΅FF_ńbUB0 +Z&6N9rDҰ&{%0gA6U٤$VY'yˈ#k9HOOեqđt5@4kP7n`0rmԲF +LnR+6'DXB#laiK~ y>83*RҊv\GGJxνuKQMҽx\(3hU`@d;թbȧ:)};CrSن-P>3eÛm\o#bV0 0=96Z/Tm97 7Rwo co^+_0&'T=եݎ1RsҏTK/_֓ѯQF +#-Mz-\b"Ni^h3) a=ْ4h +/|~20UmV/Pś jgǕC0SG`n* |AyT_`Q=09}E?+QO| $JDٹΥڙU.~0+0SoÑv̯_ 3Zf9#? ~եS~(DMT^nbX=U7W\q3%lڹ~1%O8ͩ+c)`c.qg!bg L>L-aޏC.GF`Nc 5҈h[@HU ɵF6?of-րqovkPtP=V0p-35mEJdI)*Ȣ3}ߓSfg fGn֠мq#~WC +X{[fˋz`m<ǢT74aG`ܡiŞd>Jyկh/U½t#00R5C[2PɓWbn޷ꁸj@ j,f)űUmr+/e `]V]7-]yzu.ҊӰ>'[h5%0AaTSj?cr={&Ѐ_Mt:g-=؞+w,@XSM2}<v + (Y8|FT$`V Xjr_7~hp5sv`6eF1?@諍 5Lr] ?(aef`ͪUf("3lOk[ ;j>n !~soA<+uRJEw1L^wV(L*vQr"1t.hP|?c 8i؉ Č| &i0 ZcTA^ƕ?V.@ٱx QN<*يjjk,%BSH_"gLsdxN:.Q0^;t:7o_Ve-Iq)PΆqY6xc)368b|s݋mL c 7jn/|4I}Cowk) *sK<8~?֜FoGe"ͷ-<r휨Uۍ{iK5K,%0#6Z;ąy(֔cY>l%]b[vr+85#VV9qOVwH:_y%O;sW8'Uo4]H#c6.PS"%q4E<HM ) pa8SbSf, u-| W_ 8v6wNH>S׫TR VBJ01f V3VC86z顿汼V$QZlX9 +23w5k-9[G)bgڒaA㗨m9m{JFc2kD'XaGVu8 W̯f ~:"bwN +,-2Tt&~VF>+FVú;yG:c0LZ t!m2%q#o}NpNm|~`f#F)'2 Ŀ{s+߰>'d+;%?@dTñTAD6_%I0XK [D86CSՔAHhḐ:[3϶VnX 챋y2 .F.kL_-M6I=yٰFYG*?5!km3U,gʁ}sȋ{5B\hW3-AkIZI-A2l5"m">ɋCPgj 1SƱ V/ǕK6a5ZJ s$(Xi* XLj?% 7/\Zfcc>fIfG S0}+$Ua\ Fl/$75R4!c(aj>q^]f5(3sYJ_.,i+2~v_=߬rn.\h=$ ?d->?79_?@nX8HN;v3΋$*m-1HOTў~-7.8["3츉ee߄pVF1gl8Y(Ns,Q%쏾?/MNBY/v9)]މm'0Փ_>"zn$K4-y<٦NG.mhm;m-N*ܰ}s}ۜyPv>v߶M7m7"Gm+ ۮOgv/}n_#=lٶmk\>jJ&0?}ߦoN>~߻RN>~߿Q2~诟}np5n8>"Ł{UL:}n^n:}l{[e|x9/sϭϭ=}/}n~nEq2_>܊.e|yf ؚ^>P.vh{P~j;5sٌJ?pCfꢆ["f^ȍ"-1d3d/ȵE6?@nU%ٌG6?p@nU-"fU5{bfA~UO6wDb,_ +뎎Ae/Ƶ36?eWc3~G*t[f*x\Mc3Cv>ޱ + MwtUٌ?6?oWmoJzF1oIzV#Ql.%Ul.fd1O=E،ߑ.6?p-cߒ06?pMc3~G،]d9wԅUnlQ6?o!;|֕15 G(cyL&>_%mL?.~G 6*:-GL\w1r'a獦rL-FE{ϙ&agʟ1MƟ1MRdß1M!?c0}n!O?d~Fw~8w~*%^{ȷ>ߧ2]!%2])ߤ2]^3B䪝7Izתk&պ_ +x0z-Rk}'^ s>aZHR/չOl<`kG^{>bRׂޯEV~}lzg~}hk!3f/[ORLb/T) ~kE#fe_K1{Z1\>{kftm p/erHhaY>bcS~1Dr]INr# .wj&~}6MfY[uⷌؼQ~lV]-2woS~۾}mީeRbNXU^>\kOF1z)?U\~襖蝢;F5goԎSD~f[1ѥVlV-wFjZ~6z2k!譊[F//FT1z-뽘};{5[O_>J.f`l_>ޝ};/|1o{wRj'ۻsW$b<+{{wjwfZr'@s]8`ONoƶ"`p% .iRu(׾d/fG\6j"6\y2Rh9k傭 +eFyTvxVW$HvȖc-fs y* RۑDBA-zW;`[ALBlkMyp +H _[:zK[ >yh`Ős`w/&DOwN1,m,-0-2\E.%:asv}= fed_ZZ%]n̯H9)*o'wkadPAG{lim[s5H(ZҨôCb̯_j`&/\}`Uyݪi9ȵdli;tAive[0—Vlmh4x/= y&$7⇁ilkf K'̍մM;bS5לRm9=͓T9ʆLi:խXeϩ.kJZI–p~gW@5Ɓb$PtɁi P);li p1pPhCC+G@UA]_3L3cX!c)0uXGiM af8@ޖ(:qB&iؗuHW5AGO0ܦ)-U0Z0OנZcAR ,iTC.B,NE1 s !|6ZdIjPkC4p_4c/IˈifL#@֒Hk i)$yүX7E5LuSR,.vok>.jy&j"m%4V׎4PV˨1gtXMǦF^I 1I T?v*L|x%&*Zm#a2j\KeӸ%!^r枋A]nخ86M3dSg\P.8 [1!Ìk0ym%ts㳓PBFb[4{){ڡ7Us@!rcc&ߕ jA-}\ [y1F |.p%.$CPV񃺴ME pܢ⍲¬]Skfz(.+7mDqzEɇ"e ߲yGK7^s uuJ5yNi jmhݔ93.>1@:VmLt-zkix "ļ2]抰˽Ȃ&k401aGH$nP,k"Hi,yr<^ۦQkQԌA<}"fO+6D +dZUt `}kcg`S 5 \ۯ"\om9@N lc.3bN \c7p=T4p'7S100ͣRE%l+":&ƐmirK9MPay +/`#l1YY1~7;3`pm6O D I&t9AoSҰ䳍gDsP;9`F7j`eTllZ7NTьiMLAa +'A/Wo +̌(ŪEFH?(]nV&)5b7Q&sM %< Dmj̚ +ub;KHZZRynKkPD: ɴlTt92gP}Hq-׃)$\Hf *ZB7l;i;WHp\M`忚Ʀw Go /eorjv!fˢ+(S|2wD崰3=Bٶ+ 8L-03a'g#_F"I @?n;m`OgR6{Ds8!SuVd +5)޲!TTTM{PTjkHSz2җݸZ&"T920;2+"s8 -9"E ĥmpϘ[Cې^$$  MU +<ɑ<$d<Λw`rFf6u׍5$WQNl!-t~ֿݩMKkD?~ Rw+^\MUP`g mIO960E+z󎕃:$;~6k6]N 7L1jiUolpfZȖۯ'H?OFJ> +HX/H.Po5L4#ڽkoYe1PŗW{д7 Dd6Zkj nO;+;H!ȟor69 yɩ:AYjl3ajk6Y<=fƁO`0.|ꔢ9(q`@&BSkN ZnYvjղs$(^T>w"9d&{^LJ H K&(76kSBT.qi; NE jE +sA kܵUZf)74y l4@TӁ3 u>vޠQTzK `&SF309vk?b)6 p4sIY9|,B$UH6&x 7L$8TZɱ-'?rbv6EXHc{(]OWx?3ȿ b^O|CEkp-s{ ^2M< 5'r"mnѸ` i~u{ Nh_k MLh!ؿy+p;諱cj|1GrCL oۉp4  Ѻ%;g +rM:Ge?Bk(Y-dD8όHMh%8zݿwЍn!2h:tǯ +<~$ qu&'xp CgJ5 {1X^ +cְ? CcD0A5Huo;R5k rpxAL;Q$' \ԋ}Kik\s5Hy;dQVDm*ǾkE;֘D9~A62R  XO^Î_2fQWZhZsHTdsJ +,G|)(ux$*Zwe*W<2d&d~p l#ۅ>b=Z=Q!P5bwl'g\=Ba$05TLVߘ$`m3V' ]50r|dP}!l1 l`9;{rcr1/T/zZ<#nL <6~>ivPL2  h+`R +4RcS5:|W`jdR;`R -jX+Dp5* &ȶ˯F泎kj<}  % 5)Lp6,bQe0\"Z<&s &ܓ`r 42pLh +%B* lP Ol'M3uLEc'fW.N65XwaYnA62ZxHzI6[D*'Q#אI6< < +>{fRj̦\۩)YƦ'PLnN Z@g_ldEh3a@^$B,  kOb sstvѷnD,ybc].q3{SbD`cw^Y㭬{S"P>n(fTY'x>AL/R0 GΦ"{(}l{+ |pv5|C|3ʟ=W3%Mp'wT‚[ 'vRے/;ߠ BX\EW1p 0|Slb"(~•z +Q`ݯL;Ai*|Êd]1&x*bO q/|,BJ-<((N8ZLb({8Kj:e-#u(B v5 4OT5Eo}b~a@Xm9#Z",p{Q`إubGU㦁A9<)<ׂy@VZ2#+ 6)6Jger["iÄO-˩4RqꁋSFm +R8jfS +N9mq2&xPĵ +ꅝrAߘ!`\K VvF(I ʍ] oO+>'x*//Vvq?](.FXb8pΘ5ſ?((M?_?@kgZ4zEeo1DZU/$p11 Dlouz!D߳QgQ@->IQwC \QggΧƱS537?gb`?Qvn`͟#ͫ`.m˛qfY> +ڦŇi> +ݭh2m?T۰[7 wۧ>YA՛a*H3l?DS6(bnke29O/}nd*-&ZG۾,luaǶ~2 ̝]>~\-i5/mk _G۾&/>}߯i >}߯eWmkgF>~-:_>}V~c_ݷ\eY}n_+3>}߯dm[m>}Vi]Vn,dizJE֏ܕv·C}?tOg;3D>帖 O>3ix0}#.L zV.3饝/LrLse=]eo2( v'C龞oL4B Z>yqϟ|fgl&-3޸>L̗ϷiaG|Y|.72?e[z*-33_V~}Y O>33_V8t\s'72+L?5-We'7iX>-MӧO>3Co@DG8ϟ|fތ"+3]owej%'֠i= +,L̛):G/k,ϟ|fg sqI=QvԢƥf.3eoBegREͮMkNs>S'6I='Ɨ?wo#&^1yɀ_-؟017Jb iP>Od3Fb?c3F[?d g~~7)ꇌ>7ѫ7yg~~7g~~7G~~& ߤȟ1Mn$ş1M6ߥ1M$23F_Rݏx!jxB R; ע/uOV~)}LK#F/_Jf0z-R+kE"G^JaT>`k'^k>aZX ׊/EO~}/emWWp ת/}|ĵ"KF_s0zRkz~Rk +'^l>bR` ,gZ7!RzM\2RZ7N/s=]} +:hKMF;@~c}mnX}n. >ۗV|ոLo WIo~ 3~~kK]?1~$gPx~(o~???YBL?T]ʚvfKj[֗G/f#Me#9.;[ud [G|=b&/'&o c$؋;G|9bQ;#`?_;^L>v\M:mvpSf7L^M:]vawN0y9Dv6y4^L9Ev롱wN ^M:531\j7L^ΣM:viwL?{1y sgg1z䝃gwL3{1yzdAsϐQ;gna;[uvC{ (- +j`Uo.x5zseFVoٸ}]}`b7Wk|aDz5&+z5zsǫ'x֛;^>q1zscǫ'֛:.F[on}qfч6{/E F`^oy5zs͵F_o.}b撏wIW^ث؛D^m>%ng[;m)O-&[QVlLRyw߬4䋁/eG?+s:ԒkBBZ}?- {KNi1m'|zGg}ƾ}[~kom].*': +) $Uh~}'%z EY-womoCVeU7Ub*4w}Sg.o)3ƚݵ_R_P~5>eկP)衫uߘaeeu,\Oƛւ? CF!Z6ֱ"2an][]d閮.) շѲ :Z.7usjfu%!J\WĞ\ua;WDbwL9\SoH&B;j7!եb|Z ˈ6Ez +ՄdY+SpT{ | ;aȽi0T.l/^džk(Ɔ2 #]xKD"IYֺuLT6\Ak䊑5G*Zd0?G77}ű*kKsMmtAcuX/kP*5c5t [5]SZ1NbKeARZd5(&RECϰdI!(=Tk1s,r\UdO!k0'YMbQ [ 6 4C7-Ԥ7uaSn!bwj<-͚)ifD1׍% k5)̉m1ͅ3Rf`#Xb*I?l؂b2z` i{AU]ɭA5weasND]AH/yjb,k`Go ܺ"Fjj-02iT!_k\.a[im̩цZ8 *h_HGw+عy`wͰ/UrB7ӰUJZFk:1#S + hNJ1eԬQMϵUJ U0 oMYr\IBZъr_4or`<%B [ʺB.ZDJ^.USvO)˭7º. / />Xd@٦TaߢT\`(Eo9a=F0DNtLFe2WC&`Xۮy*95!5S#ZWBӳv躰r>:h3fG,[`23~FEc=`z7fЈZIYv qhd ӲcݴY [5?{F`q5 W=K3Lͥp/@l.WŸUhӷHFb0E`<2UgUq[ycre%CQPV` ml!y7l=4Lض*+v=h[7{VD!\k1SiI[%ͯu,$Y%G)Jaً^7Uݠ2sQ53T;'殙nU0a,׋ O|2a(Ѝj[79𝈅o4DϦ̄ %xa?Xyc]_. 4S)4N輚1q ;p VVh̊e*9hқoCnI6[2 bؤ7Ƶض5iM l6u kIkbs$|-uWz㹠& )`F>?Famxl.=y lgt[|mM][0N̳nQIaE}0v$E7[@/Sۇ^I8Pb%6@E\+زddĠ"i1XE8kRl2T1",}l2bl9Eb^ >8hhؤr:Rؤp1`uUű, +kNah0>fWRxU#XԾMN|mNhRA5RAM 2['#8ްI7^ +b +FW/ +Mb_MPr$h 692u pbI^h@KLcL4Y +0tm Ea4X\&,AI%k z|H0'q`$=̡ l0ҢmԓL7lҀ$mҤ=iW펅T}Ґ͌u6i0.0hDRY4*Jq͡^#6yﻀb@u}T `;1 3xCT5Vחڢ/r{4lbPExU{& `1QJ-E +Э +6yR0IJ@,iM:`0!6ygoMfOZxp"X*XX<+ fIa$jOjyT6<%RbI0* Sn2J E7C pL5vRz\i±DÈ r` Fj`4cա _/h f  7R4\^ +=KԘg/ˊ/aq&,j1hq)×!n`o,y +F͍ aY\T<89{5JVNa@ E2SՔn[d*qb"ʹ dLk g0?E`-8׸ܥ0BŐuJ2VÿNG00 ?u; Y݆nl8 [& +;̿&)щiQ@e*W|ħQaXZjHh`\/^ L +${쀦W~MW/d`S_lDaTl{zH@i(dN.if^i;:VIns5ssR,r HYPB3t7 `< [A_+oԧ[is/{hs򠙘 4X I `[A.y+X3 b׏ *Ȁ7l)D%P & ꒇv 77%mi)& +.Vu >lتrL,!lAdfC]5lV9 aM&St jc \ƁUbѧL[u/ρ + ,7P3{uruˋ\[,6!͂& ILR3o b:5Sva:g[uh,8vIS:*1|6K3)P[L@*6L@*EoA8#PɰUYY [A^(#"RMfȢϓ&?z^93xw/d0 V$'CIRfgqky$7h26XۈÕj*ıo2d]1."K˪Fb饩"RzdJ4ւبI40ՔkybLY\&bVn=C "@ ÀUyAX;9Le"l& c߬H2l,*Hhj7l(f'U6 {3O?/8)Fa e@6oR*RYEE{ dr22Q?u&b c{{ H98vЀ,| &T/U5(ϬdRխMa1,BXZOl2Cu@(3.CƔ< @ VoAC,~@ td~P9t޵~ؤYUPbȔ``,cN jbzrӬ 埝}v*qƟV_i/ِҐy! Lx{4IᔝLw.u.ɋ0.Xj")yF#FqA~~\3-@\><=MA]3[VZcsmp:* '=MT7??Þ˱uf{Q^&5T>G?KdsRc5,&{l;"P/X6űl`4[_>l.D +7Z\r8̨&xp[sٌz G?edx?Wecم5-j$Ye_>r.u?sVX v&zuZ)L !{uC +אc\[Cà]>sVx |ϵZP8|>j _9gL壟>j5o7sZH=n壟>ja7szvG{>k.|\^k -szяes֘ꭵtԷ~.\M䉤RϞ^dȉrrklMsӡ(ջsjI:Mzz߱\prͱ>M"vq͇sݤKEɗKk>'܅,O@ȖM"ҌfdV&],=.}+E%oWSM"3v.,ٟi"bVc,'ϴ:c}rLo52cΟiVY;EgZ~0e2,?k[)a^]>LGwUĔ}tPn$'bb}rL'&8Xdn7SE\>j)`VO]9呣VpoQa|,f\醴ò?^$2K]׋e5?q\e]!?4?s[s= +.5M;x*LSe]?zBK,yB}e"Ҡm0I?#3BI?#<3B@F7>eor ~< 3BF7g~F7g~vF7>シ'~F7g~F7g~Hs.Yo 󏈸>';Ї G1w 2ߗ'{_J~z/}}B譤^{)Ku#Bo5/eO>"B_J_z+ ?!^R/{UKB/O?!^R[K1B >"^gRz{KB/OT?!^KR^[K]B__ +z/~$~DVZ^/Abc "ウV_}7<ڛixOM(DZy^]kՇ@ğEн9YVwQ1yf$\?|tNR+ O +bJmZx[I:qwK@DeuaW( wߑ ثw$,]_D#%i?6N9}#M$}l*M#7@/mgHx׎ lXo~ FyvHo$|g 郃[RbVqY݉{u.$}/ۄ>RaIr=2oB7u0Xi%׿^rnutD.ܑ۩Гo'BvGގι]x;z=vypHNm2ώE}ʢBԝۅ;z?9 =:Bw$vd"܉Y]ѡ#Cr'厄N];rnvG}{9 =:w"~nzt D.ݑyГw'BvG'N];z;Zwzr,mB C}BO2O򝈼ekP"ڵHr{sUl$77\>:r{n&ﳱ7\d>.B +@]Ulu&WO7\>\`r{ssUl͕%77w܄>\Rr{(}(P|ccWO7w\>\r{sMl͵'WO7܄>\tr{sE#lmB"|ٕ]e>\rvYY*#{nkǍ SGq5AJbS16 Z j}h/8Xwd˅mҪhbXuQ>…p_-z#~eiGæ(N}:[%,ű9c҃?W-17v/-eJ[Mة҄^حEXڒ$'ی,X-ǿ3Az _R +m 밾+T/MŲy6[f}ȆNB.9%])ICF +8FJ˥[m 3K,RW9FϞW\a`ձ6J>.䨽% =flGwgՈԁf9_mcr`+pKM3m=a9bcY'n76@r;B{]KpbpUbE5J *6w`nQZ5JSZ %<%& -j5aY6Hz}b 'r!)}wXˀi386V,0?AhљQEhg.,SaoKRg %݇<{6+;I!0ڤL:a{v y0\XW2xX P^~w6xw#6~"4鍂M:AK5sP+Uz1*wX \lژh0H sk}a3aȸҚ 0 *FeXozVmv*QA1l$XzF[0LO5;Dra*;"- +*]RY7+%ɔIhZ8~!#O5bT)Š dh%Ѵ'XfSYb~e<қMz-X-겥UG,8'.[ʏ(Va R+'maڥqctEkOIAxo"<(7`1FvT%r봴U @1AZ&{}KtB?㷀#f4~+ +Ȑ;{p:2txU-@W<\Px;xbF^uS4j3G:M*6nPOcK?DT%▨?zԀJÆ\K1vš@>xpT0Pd0).aoe:=B\.*LweVeOAfb`ΗZI{3z} C` Y SÐ!l +,hz1YtF7n,NEYTmiU(֢Yw,/iQvw@ +SH] +XPvz9X\&gA4#eȄ: V6~I#B+֥z;Xt@JJlE0lFP}Lp,o~Ii-0HDd0!X6EeŤ`:o|)t}1' e5 ;pD#Lw#irFn1Mȓx Br7?$D40hxuġ###yoЖ$Ff2DKi.>ae6^Gδ[91)[]\0x O>6 Th+\:V!V +S.rޢj-)A0fFQ`|qdуe+K^J0TkL-䮯m!i1=VD2ƿqo؂ +1eJ\lHF7IX`` )j޼b{%Cc2d|P0{M =X^u|=]rSK) +1^)|; Kb+S7 VJ \N^X~`PX%{{kJ1lU$-AWo"FV0 ̚9Y5xϑ*1:BUN%im5ݴ8!^&fu88ZѤ`D9Lh0e~ #O #F jKKf< k*l"RLƳnʤK6C<[sLF~bP +JG,˽NCT및%IN1\JQb4XLDf>~EܨwN: Il!xbX*)\aC:1a aA8Tp^g>VJS%I6B584 3tXZ}~_`cNgXEaA%0u30_&{,"#F :Mt9/LRД 1SrQQ:3 !$1nÚ*:4 [KZѬʘ9bc@=؍nAТ2DVz! +/gV`jF1x1Z$͕ A_pAkA dV'IAA`Xdv+CziƟ@ 5Rr(()RkDmR"$oKIFV) +RkDR"S tnJd2}fQ)6%?D&()t8JdۍP^%?f(B(~%O.MQ~tAPo'E(~raPo𣋣D~Snw9QT.wN']DGw;O5'~rǓT.}𣻞Dv?In@𓻟D~P"C wOe=M}t=P}M.SiNNѧ 6/4S1YO\1.~ZW OD׾TxD=5 x[w X 32B/O*niI7)G>Wo&;o&o }7}Z!ϧ?$DCbˠ?%Cb˙?$dSboBM?$9>.O&2ψԟW"Wx`'&BuJ'Du_Jxz/}}BBh ܗj'kr_tz+}}B5:G*|_~z+}}D轤ZgĶF{kE#beψHRZ([9K#Bou/?"^Z {k3bۋb}{kbW"Dl^k+|%g KRoO~."}7??ųHo p_.q<:t"t~.1CWtNDǡ7CWa5:/ii/a˵yjw1L8x?7t"*kyKJGBb@w$DEoD#B85{W$roJ|;J o?kiXHuH;Py+/d|3Jgw@o)}tqc'{YKB{/~ }0]!u^/Ե#&!~Wsxp!z'_B|9ܶ::v"~mztH0EɩClУlGBo.BON Z<8vo6g\>eW'vGGNOBƝۅ;z;wzrD.ܑۉГoGBo'.BObnУn]>ۅ;z?F =:Ow"~|nztHErУssGBo.BO =9'wDn6g]>D!gv'ND2}Pz(Z6m& F'8ٻFb`e}U.f>Կ$r;Eca+A}& 'XڻJbi(}.Zڻ InbkN}*|l7Opww>zro{w]M'7Opww>nr{wU# @Oڮ$& +'x^w{j0s[ZiUϤغ +`dfj\VaؤbւY٩ >K~ݣaE O`&;RYpej5-aWYBf#0Czm*NÜt02L\(Nz5_8̂f$>61kٰe~n=|#?0T cfv2o0卽] k6-chXLfWdvU ;]2L V/ZΫ%sˑ]x Rj!XH]EnQH)T:{_dzVx ZaW(nj\-Xn>dpZy`ٻD +P1ϮֆkjV{ ݉ âNN.g^4V,vPĤW䀊t4Vk8, 3l6CS,h&bNTT ,7%bDkX`EȍO7meb5ӏfF|-"U"?fOԂ[vfXJF%}%΁W4Led?]_[W5M11`ӱs0<[&e`W<~m'6^@ց&ӊË"{° +w&0Ld0,t2́۱=^^34*պwWe0z+l}hu='[e3%yc"wf2â5 +l8O!v"0vВ2 Ktc Pڄbs%6%*m`O0'xkC,bYL+Pt~WL+N[QxڤU:2*)}a0d;n4-Qmz4T^B GđXTa Ksdb љX9iϧX sb`6$.[W=2r󵫱l z6|3 q`pmTM`͟akz`T!4aMLZ &(񸜻-z*]^u~:KQ%À2lr`\ްƵIu$ƆlPU1ؙ~cgv cA&;)Ǥ.b>:~cgCբK_0ڐy^T.0\X0Yk*<5O' l'?~m}hjz xA76Kn{=j:xpTЭ+b;6ˍ$T ZNx|Z|0b +vͰ+P^l-]@]14 %F]FOOJ#+Ҕ^Í +@o"vStîT n +F` <v0`ݰ+IF +nT 2v!D3 ]@I87&j.Dؕ @%ve.v!ō aHaW&a lUbW&o+Е `VkmͰ+p'ˍ  2Xe6Z 7&n^ޘ/Dؕ ْU3ڻ6&@ zC߈6"@ s6"@,bIqA^ë+{'€mb~'ĪpGLbPw]DSl#Hө i#XرbĺlmL,j(mDޱ%&6"  /Pc3b&@xd6yugjkTLX($6&@ ^{Lݰ S["V6,5W" 4b 66P8!տ^H@72B 6#C6 fPu"İ܅F8 Z;Tq;r/ +e3l#< +1"IwbL; 'Xl~/,w5ޖU XBM5%Ym,7o\t@ +*bq% +bGi; (, H1K H9$w@1h Huc`95("vV:sҀH nӕDrh.ܨ`CRiܸc[;{Kƍ 8f0ȡliz7L,7J׎'`TNR"g8(o Ff3R6V͞-`͹,[ 6.I Y"2c3͟pq"I#􎓕.QD\Ha|2o!2; p1(5gƫP#Dv0-.`>Z)7=M`O`N:Lkk's<*[e7"M 7"[Tu E1\&́- '˶ E,+UvLJE/`1?ʹkaz Š]tLe7uĸ ),p7$rbhPOuf(I_戱 `TE%6)%YCBuALm'$Èmzۚ&pt1Tl8H//0pf 1?@u9\,*jrR<+<웬UЀ}Fx6KY9? p#{eqc^,wMVKO +`H27,\̢'l)ul(zcˁiT? hˋevӓy?d'1jY 7JzY1vI"~9iI5oS6 +!,g+pzxlw3IJyx;CW.QX;x"|5ah@hm(-Op3j7Q.kZ0KHRo g+u c~*m$Wiz,,b)n\ӐaqzFr;Fe8<ʐ̋஀Ɇ +[CJs2+K"~% p*e.QT{h|tef'fF:ͣ"UӒ"RnKWte \]hۏIsEchsF!7s\ {Sm?(aoCl"l%J~TZy[a$T`J70㹌09x# 4.n,dH lQ.-LOkZLi$\Xa#M*lܜiY^Y{"M- pYg6X[{Wo28t}Yrq[&'Y[J.1Rn`iށEN¡w`j([0nD` [gKߚ\6vAtg$(8{mWa$kF};A70}.*DYtQwתUu,:E9:] F9x!Sj&`wB(|Mrdo.oX,Z0.xTKpQ.gipqDΰHqrt)2I[5Yد*N!qvbrp]^ +rpcZ孀r@&D#E9<6٧\3 ǺVk~m2hf}rdGr{rd1l 5Av3"OpR;z" X +NYYr`1P4g/A9L]/A)Nʑk*v(G +: -/K5Ei& ݍ182W73 /a&C>6I9AN\g\' X p2f_gn F<_ \BL' u1N,:yMЋlJ}]t"9\#s''圆MAnp6p\$6 NA + ֬NJfZR%8 D7R +8 ZX.d[(E8bAlAl#˦pQaQM$gYR,Ċ\v ~TdyBK*]@~%}Hqkd\cg@:KG;]ØXv˰' X$' (bsmrdSWqh_8)‡lv6 +89A& ߇.<-ґ8|j2ppx3-Kn/qp$F_?om CϐHqcgnᦄ~O%M19]PWnIbGGJt<ё b']%9g 1> +{Y{_?9 +endstream endobj 525 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> +78698 endobj 526 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> +[524 0 R] endobj 527 0 obj << -/Type /ExtGState -/CA 0.2509804 ->> -endobj -528 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -529 0 obj -<< -/Type /ExtGState -/CA 0.2509804 + /Resources 528 0 R + /Type /Page + /MediaBox [0 0 450 225] + /CropBox [0 0 450 225] + /BleedBox [0 0 450 225] + /TrimBox [0 0 450 225] + /Parent 529 0 R + /Contents 526 0 R >> endobj 530 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -531 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -532 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -533 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -534 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -535 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -536 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -537 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -538 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -539 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -540 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -541 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -542 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -543 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -544 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -545 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -546 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -547 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -548 0 obj -<< -/Type /ExtGState -/CA 0.14901961 ->> -endobj -549 0 obj -<< -/Type /ExtGState -/CA 0.14901961 ->> -endobj -550 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -551 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -552 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -553 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -554 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -555 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -556 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -557 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -558 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -559 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -560 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -561 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -562 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -563 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -564 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -565 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -566 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -567 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -568 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -569 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -570 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -571 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -572 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -573 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -574 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -575 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -576 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -577 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -578 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -579 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -580 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -581 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -582 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -583 0 obj -<< -/Type /ExtGState -/CA 0.2509804 ->> -endobj -584 0 obj -<< -/Type /ExtGState -/CA 0.14901961 ->> -endobj -585 0 obj -<< -/Type /ExtGState -/CA 0.14901961 ->> -endobj -586 0 obj -<< -/Type /ExtGState -/CA 0.14901961 ->> -endobj -587 0 obj -<< /Length 588 0 R /Filter /FlateDecode >> -stream -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(*%|' 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 -90457 -endobj -589 0 obj -[587 0 R] -endobj -590 0 obj -<< - /Resources 591 0 R - /Type /Page - /MediaBox [0 0 450 300] - /CropBox [0 0 450 300] - /BleedBox [0 0 450 300] - /TrimBox [0 0 450 300] - /Parent 592 0 R - /Contents 589 0 R ->> -endobj -593 0 obj << /Type /FontDescriptor /FontName /EAAAAA+mwa_cmr10 @@ -3888,88 +3455,90 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 594 0 R - /CIDSet 595 0 R + /FontFile2 531 0 R + /CIDSet 532 0 R >> endobj -594 0 obj +531 0 obj << - /Length1 6604 - /Length 596 0 R + /Length1 6624 + /Length 533 0 R /Filter /FlateDecode >> stream -xY tוߤ_eKbY^XͶ w`aW@ - ٺ$iaRN& -Nt:$@Ӥ͙n&i==3fvI,dmO޷w߽߽"wrw ֞%Slig (kqr{f_v#&cM48jr!_29:3k/ ?;;?k/Ǒ_.aO7ύxm+ Kmƛ/!_ -HA TjHeWs-ށ$<Oc4LtBC- ~($%5{Mgl2?gtAԿR/RsT?堊 *y<@ ~;|w'WU߆p.R<g$<Q~H"̣L#( K-aVi5jUN2K!R 24E}tr䤵ih^MW_'Vub99珚gG?ؤR=W@P '[ts|jen5%ikeBVH2֦\8+:MF#l3&}}IڄKkT6%<:qT~ bAMK}ɚ$6TX7󸱫YՌV{׋e(z-wCf >m@R -3Xp@~@2ay@ -t6o QPЂ{%D2M! h/KPHUfͬ2PT y&5ZPzv S)X$# * zxb3eRxۿ9LnHs|ivfWGY8%}G%y`bjx*F+5PwpT8TrwҚRy^Tbiya\72s"d$'mܷY]SVZcV Ο>{f˱=?]I.F%н8Kց# Q+`Pe6"^g+ -u9¨myrc=F`, :C>'/ -Xf'U~ւ'TԿltm3HrEj /!O)ע L0꣍7Eo=Yͳ(*v!yAGgxޮTEJpb^砕6 M,)hn9DDK U% H16ETP?+vdž`s'h5WHV"0R{)-b*?Mqpw|{}lvxo_8v̻r(1i:~aS/nRk!*2IJs QH"M0t֡RkVQ}%vKiFQu;8G`"o>'w4H601aw Z!>I2WjPܹd7 l/\*l:#ϬŅ3mg}| -bellK{[W" 1W26{fLpR_Ux%\oxZgž.3Nʹo\1Jy-C0!LTѐ(3 -Z<UEM^OoSQUE\P2LC1Y H)FBSX>^ʬ~Hfń5? al9RP!bwhdJ)a"^&< -"΀ drtcڎBJM8}UЀ|rC}[z 2Кr/?ߖVo\TyR}wᕞC)Kv}G$RCNb -SlȍȳM2A*^/ƩMa_1,~}¨Kq[,]-𤀴ݱ N "K}IEЯ=U_'$EM?-ZoY9TŤ`&.pB)#$ -/Y#qtTKh -qj6*8NRuG >.0-$`HCpxwBht}o.wRןjB,G;O>]TCeycѩML=BY6+L}+숴ۈA`s㹂D-'mZE,j 1\A6[-k6brӑ9"Pxq$aH8ݠ/IWnzՊVƴj^Nc ^OdoN.w|jG7_=7*ϴ|\u?ŶuD,Vxjgk\};Uh\RZlsÑm{ݣ#o\t浓 A29Ė#ODb~JSo0ĻEJ0V y5^' --s@E<Q4s^VŤ_ۯoRHȦ޶=5gv_̦*_?GEJ!qɉ2'FP=B [ %ٌ|rx?O|n('hث*"%%+u%_hrݕ/D+4dOYDh6jSG\Zee^K#F' 9NVw=g$(<ʞѿO +.q:pzK(U"Ie|\f4h,V6t{,L{ A -%SHćrɮ5cbmr;Կ]Fޛ:Su6@_wW/PcFRf\MTR|f{@_j4 P)d>yrը/"]:%ŚHBT۝Hr 15j|\~/cr i1$ -uCI ^Eʢ$z^K$D 0wGisY -嫋hJ{5,\F"^?–ޡ稺wlS,f굾PZkH9ZCbY2'{q2Xz2Z QcME% a<0m T3!\Â| a'na` -<k0G ȸ^s24ԙil '24 Ydc# #wE%Ĕ)P Mc{Of^,䓧24߁fHA}0 Kb4m2+7ME3Vo̊< ,5b0"vgEzX1Yk5J&hCjf 8b˔#HMi{<8 <88orT\fMMũYV#>X_ggM1aآ)68~py|[QkocG~i 7n/1W0;:wId>'wl_{!\Ԑ:X Js~Sk:,'8jA[l1̒L+$.vhȕ^)t1 +xY pq ?q@HA.J(DOiS$hTW㪎@jҺIGcGr:6:nҤv*usxPJ$w~joQYCW`x{wZo{}T89USe8n +;4{yG]:5Q؞[ýK"* +ۖ/n0 K7=@)i|/w=1]<( @jĜVux~oCpN0 0SvAt&A A**_ppW$w;p +I1ט| }%yO&g3We ߂p .\<g8< +͝%X@Fa( \6';KV)Es,C x.YNG&wy=*zW3U\%IҖ7K +'CF`\$#bLǓkKm-ᓽ}V.{DKTRpǓg5' x>{J5Hkdu!#v[kh&ifWM3Γq  +w0\zou$+2U^tE_Αm#^qtbl5%t;$#طaZxMZ}Jo읋_fbXG&QS(wCf`4h1S7kyO.ո*eѝ/utc24vS`1j.Y(*Hk%ٍ~TޞC."inԏdȲ.vZT{ǚxϜzlځ]f$ቿ7zMM^Awq4θ76WjxzSE"J>W95ǜHv`Ǫ[D=)bVĹ,gHe~L$BعAe+HWh"%Et6Z_E^a<k-K(ۭ.(aoF6IyK#ApR]cJb lO;==БV<3ieZ3~o]3GSz1}w]Nnʹ.Cl 4y,W[$ 2K~kt j6/USocMy~-2V ԄfU#C,d+uX@sՄ. z 82dd~`ղ9dkgopJJco3XV^7]].8B!$fz_}䧠GX$:j [P͢fՄ!n$!eˉhIMV*T0L@rj6*8^ͣ%]fuA?3ɒ@GYV_Ukڡ×ǯy A'#]3'ٝͻ cL9|O9/SOL7Ͱ= (PCŒB\RS7VF.@,_ f[;c[3U`%ra5Z0 C_&Bq~qC:݁^ОG*X57ᙿm>عgG_[yHo tT~ކ\]8L]FB^O8黯>׾뉙n'&ђ h~~ +ט osoSBIlF[O"EɜtXO'_q&}  haxn"e-kkt}(rKǿ(/x|z +9F'<ىX}v_c8aRL b|aV$*1:{-#ςOÉI~HÎzxwHswL{^ db!G4^N%%(c.Ѓ_fES@-x}i:OՐb^- +-=%ZjH`3ffM I= _3-۲J^J%Ț{{nӱ^->0^/ +@[OO~{DSKluh7Ԇ=ZLE#*#N&,L̠}g1˛TKniq)藑jɦqd@ۇNѺfbSu >j3ؿa5ԙWAվ5Ky|bL>cភԍkkeŘ櫝EfhT +Bb@4`y0f^OMnδg}VfM牞'*~ϋwt+׶ܙ2eUdL3O&OuEz,6KQ+iGh8iGж88ojRVnX"9fek|.45qgiHӖ,=KMk" [㖎8ж0771uDpbT%l5fN۾vkLEnD3 endstream endobj -596 0 obj -4836 +533 0 obj +4855 endobj -595 0 obj -<< /Length 597 0 R /Filter /FlateDecode >> +532 0 obj +<< /Length 534 0 R /Filter /FlateDecode >> stream -xk`aaL yL +xk`{aaL k endstream endobj -597 0 obj +534 0 obj 20 endobj -598 0 obj +535 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAA+mwa_cmr10 /Encoding /Identity-H - /ToUnicode 599 0 R - /DescendantFonts [600 0 R] + /ToUnicode 536 0 R + /DescendantFonts [537 0 R] >> endobj -600 0 obj +537 0 obj << /Type /Font /BaseFont /EAAAAA+mwa_cmr10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 593 0 R +/FontDescriptor 530 0 R /DW 0 /W [ 0 [365 500 500 500 500 500 916 500 500 276 276 833 500 750 276 500 500 651 391 443 526 555 555 443 526 750 443 ] ] >> endobj -599 0 obj -<< /Length 601 0 R /Filter /FlateDecode >> +536 0 obj +<< /Length 538 0 R /Filter /FlateDecode >> stream x]j0E -Eg!PR -^A~,SC- ^+TǑtG]Jw kXieif+5t'Lur -߲fz'+,J&(>8مSԮoV6[POzb#7*zbsurpwb%9 E7ڝc7.eo=ִ[M޺qqA (#( -O*A'O 5P,pNB!JNL@P x(q2eX;!CyCpx(/3Z/15{[ok -9[o:M[Q" +^A~,SC- ^+TǑJ]Jw kXieif+5t'Lur +߲fz'+,J&(>8مSԮoV6[POzb#7*zbsurpwb%9jIVαv~vfkZ-&oݸx8RP @(S@"> endobj -603 0 obj +540 0 obj << /Length1 2196 - /Length 605 0 R + /Length 542 0 R /Filter /FlateDecode >> stream @@ -4002,50 +3571,50 @@ p L"=Zz&="vaNg,;Pͻ'/əxwA91)s.#CZX)efNIOe;5@*P&gi'?) QI8ՍaIlG<6̻k,I BHI3ܸA7JĿn]pun/5'zAΞgyJJRLMf&`yNBNm ~ endstream endobj -605 0 obj +542 0 obj 1523 endobj -604 0 obj -<< /Length 606 0 R /Filter /FlateDecode >> +541 0 obj +<< /Length 543 0 R /Filter /FlateDecode >> stream xk`& endstream endobj -606 0 obj +543 0 obj 12 endobj -607 0 obj +544 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAB+mwa_cmsy10 /Encoding /Identity-H - /ToUnicode 608 0 R - /DescendantFonts [609 0 R] + /ToUnicode 545 0 R + /DescendantFonts [546 0 R] >> endobj -609 0 obj +546 0 obj << /Type /Font /BaseFont /EAAAAB+mwa_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 602 0 R +/FontDescriptor 539 0 R /DW 0 /W [ 0 [365 688 ] ] >> endobj -608 0 obj -<< /Length 610 0 R /Filter /FlateDecode >> +545 0 obj +<< /Length 547 0 R /Filter /FlateDecode >> stream x]Pj0 +t'iK,[N (!RfA:g#/:M8€uEU*o5P$99yc%LqK9 W|&?I#Y7np ]{4}CN}ΝN$s1׀P3 kTHҍX\T \o^o_IۤjU b.yGDt YVY}B endstream endobj -610 0 obj +547 0 obj 235 endobj -611 0 obj +548 0 obj << /Type /FontDescriptor /FontName /EAAAAC+mwb_cmsy10 @@ -4057,14 +3626,14 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 612 0 R - /CIDSet 613 0 R + /FontFile2 549 0 R + /CIDSet 550 0 R >> endobj -612 0 obj +549 0 obj << /Length1 1968 - /Length 614 0 R + /Length 551 0 R /Filter /FlateDecode >> stream @@ -4074,51 +3643,51 @@ E mbkoԊ$?< N]w~p endstream endobj -614 0 obj +551 0 obj 1292 endobj -613 0 obj -<< /Length 615 0 R /Filter /FlateDecode >> +550 0 obj +<< /Length 552 0 R /Filter /FlateDecode >> stream xk endstream endobj -615 0 obj +552 0 obj 9 endobj -616 0 obj +553 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAC+mwb_cmsy10 /Encoding /Identity-H - /ToUnicode 617 0 R - /DescendantFonts [618 0 R] + /ToUnicode 554 0 R + /DescendantFonts [555 0 R] >> endobj -618 0 obj +555 0 obj << /Type /Font /BaseFont /EAAAAC+mwb_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 611 0 R +/FontDescriptor 548 0 R /DW 0 /W [ 0 [750 776 ] ] >> endobj -617 0 obj -<< /Length 619 0 R /Filter /FlateDecode >> +554 0 obj +<< /Length 556 0 R /Filter /FlateDecode >> stream x]Pj0+l CԒX}q z0h[lE^X gBpjV& :G:g} endstream endobj -619 0 obj +556 0 obj 234 endobj -620 0 obj +557 0 obj << /Type /FontDescriptor /FontName /EAAAAD+mwb_cmmi10 @@ -4130,14 +3699,14 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 621 0 R - /CIDSet 622 0 R + /FontFile2 558 0 R + /CIDSet 559 0 R >> endobj -621 0 obj +558 0 obj << /Length1 2144 - /Length 623 0 R + /Length 560 0 R /Filter /FlateDecode >> stream @@ -4149,49 +3718,49 @@ x Vx endstream endobj -623 0 obj +560 0 obj 1452 endobj -622 0 obj -<< /Length 624 0 R /Filter /FlateDecode >> +559 0 obj +<< /Length 561 0 R /Filter /FlateDecode >> stream xk```p endstream endobj -624 0 obj +561 0 obj 13 endobj -625 0 obj +562 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAD+mwb_cmmi10 /Encoding /Identity-H - /ToUnicode 626 0 R - /DescendantFonts [627 0 R] + /ToUnicode 563 0 R + /DescendantFonts [564 0 R] >> endobj -627 0 obj +564 0 obj << /Type /Font /BaseFont /EAAAAD+mwb_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 620 0 R +/FontDescriptor 557 0 R /DW 0 /W [ 0 [750 437 ] ] >> endobj -626 0 obj -<< /Length 628 0 R /Filter /FlateDecode >> +563 0 obj +<< /Length 565 0 R /Filter /FlateDecode >> stream x]Pj0 +t'()i?FqJH?F{꜍ٛ"!W6MU hMK .z1g_C\RzP^վg%>-Ԃ=HKІX{s&׻jͷ=jU E{KѬ),Cb@ѹCV}B endstream endobj -628 0 obj +565 0 obj 234 endobj -629 0 obj +566 0 obj << /Type /FontDescriptor /FontName /EAAAAE+mwa_cmmi10 @@ -4203,14 +3772,14 @@ endobj /ItalicAngle 0 /StemV 0 /MissingWidth 500 - /FontFile2 630 0 R - /CIDSet 631 0 R + /FontFile2 567 0 R + /CIDSet 568 0 R >> endobj -630 0 obj +567 0 obj << /Length1 2100 - /Length 632 0 R + /Length 569 0 R /Filter /FlateDecode >> stream @@ -4220,68 +3789,68 @@ x n_&rs>SrV%J/| endstream endobj -632 0 obj +569 0 obj 1416 endobj -631 0 obj -<< /Length 633 0 R /Filter /FlateDecode >> +568 0 obj +<< /Length 570 0 R /Filter /FlateDecode >> stream xk```d endstream endobj -633 0 obj +570 0 obj 13 endobj -634 0 obj +571 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAAE+mwa_cmmi10 /Encoding /Identity-H - /ToUnicode 635 0 R - /DescendantFonts [636 0 R] + /ToUnicode 572 0 R + /DescendantFonts [573 0 R] >> endobj -636 0 obj +573 0 obj << /Type /Font /BaseFont /EAAAAE+mwa_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> -/FontDescriptor 629 0 R +/FontDescriptor 566 0 R /DW 0 /W [ 0 [365 500 ] ] >> endobj -635 0 obj -<< /Length 637 0 R /Filter /FlateDecode >> +572 0 obj +<< /Length 574 0 R /Filter /FlateDecode >> stream x]Pj0 +t'()i?FqJH?F{꜍ٛ"!W6MU hMK .z1g_C\RzP^վg%>-Ԃ=HKІX{s&׻jͷ=jU E{KѬ),Cb@ѹCV}B endstream endobj -637 0 obj +574 0 obj 234 endobj -592 0 obj +529 0 obj << /Type /Pages /Count 1 -/Kids [590 0 R ] >> +/Kids [527 0 R ] >> endobj -638 0 obj +575 0 obj << /Type /Catalog - /Pages 592 0 R + /Pages 529 0 R /Lang (x-unknown) >> endobj -591 0 obj +528 0 obj << /Font << - /F405 598 0 R - /F406 607 0 R - /F407 616 0 R - /F408 625 0 R - /F409 634 0 R + /F405 535 0 R + /F406 544 0 R + /F407 553 0 R + /F408 562 0 R + /F409 571 0 R >> /ProcSet [/PDF /ImageB /ImageC /Text] /ExtGState << @@ -4807,74 +4376,11 @@ endobj /GS520 521 0 R /GS521 522 0 R /GS522 523 0 R - /GS523 524 0 R - /GS524 525 0 R - /GS525 526 0 R - /GS526 527 0 R - /GS527 528 0 R - /GS528 529 0 R - /GS529 530 0 R - /GS530 531 0 R - /GS531 532 0 R - /GS532 533 0 R - /GS533 534 0 R - /GS534 535 0 R - /GS535 536 0 R - /GS536 537 0 R - /GS537 538 0 R - /GS538 539 0 R - /GS539 540 0 R - /GS540 541 0 R - /GS541 542 0 R - /GS542 543 0 R - /GS543 544 0 R - /GS544 545 0 R - /GS545 546 0 R - /GS546 547 0 R - /GS547 548 0 R - /GS548 549 0 R - /GS549 550 0 R - /GS550 551 0 R - /GS551 552 0 R - /GS552 553 0 R - /GS553 554 0 R - /GS554 555 0 R - /GS555 556 0 R - /GS556 557 0 R - /GS557 558 0 R - /GS558 559 0 R - /GS559 560 0 R - /GS560 561 0 R - /GS561 562 0 R - /GS562 563 0 R - /GS563 564 0 R - /GS564 565 0 R - /GS565 566 0 R - /GS566 567 0 R - /GS567 568 0 R - /GS568 569 0 R - /GS569 570 0 R - /GS570 571 0 R - /GS571 572 0 R - /GS572 573 0 R - /GS573 574 0 R - /GS574 575 0 R - /GS575 576 0 R - /GS576 577 0 R - /GS577 578 0 R - /GS578 579 0 R - /GS579 580 0 R - /GS580 581 0 R - /GS581 582 0 R - /GS582 583 0 R - /GS583 584 0 R - /GS584 585 0 R - /GS585 586 0 R >> >> endobj xref -0 639 +0 576 0000000000 65535 f 0000000015 00000 n 0000000145 00000 n @@ -4903,624 +4409,561 @@ xref 0000001356 00000 n 0000001409 00000 n 0000001462 00000 n -0000001515 00000 n -0000001569 00000 n -0000001623 00000 n -0000001676 00000 n -0000001729 00000 n -0000001782 00000 n -0000001835 00000 n -0000001888 00000 n -0000001941 00000 n -0000001994 00000 n -0000002047 00000 n -0000002100 00000 n -0000002153 00000 n -0000002206 00000 n -0000002259 00000 n -0000002312 00000 n -0000002365 00000 n -0000002418 00000 n -0000002471 00000 n -0000002524 00000 n -0000002577 00000 n -0000002630 00000 n -0000002683 00000 n -0000002736 00000 n -0000002789 00000 n -0000002842 00000 n -0000002895 00000 n -0000002948 00000 n -0000003001 00000 n -0000003054 00000 n -0000003107 00000 n -0000003160 00000 n -0000003213 00000 n -0000003266 00000 n -0000003319 00000 n -0000003372 00000 n -0000003425 00000 n -0000003479 00000 n -0000003533 00000 n -0000003587 00000 n -0000003640 00000 n -0000003693 00000 n -0000003746 00000 n -0000003799 00000 n -0000003852 00000 n -0000003905 00000 n -0000003958 00000 n -0000004011 00000 n -0000004064 00000 n -0000004117 00000 n -0000004170 00000 n -0000004223 00000 n -0000004276 00000 n -0000004329 00000 n -0000004382 00000 n -0000004435 00000 n -0000004488 00000 n -0000004541 00000 n -0000004594 00000 n -0000004647 00000 n -0000004700 00000 n -0000004753 00000 n -0000004806 00000 n -0000004859 00000 n -0000004912 00000 n -0000004965 00000 n -0000005019 00000 n -0000005073 00000 n -0000005126 00000 n -0000005179 00000 n -0000005232 00000 n -0000005285 00000 n -0000005338 00000 n -0000005392 00000 n -0000005446 00000 n -0000005500 00000 n -0000005554 00000 n -0000005608 00000 n -0000005662 00000 n -0000005716 00000 n -0000005770 00000 n -0000005824 00000 n -0000005878 00000 n -0000005932 00000 n -0000005986 00000 n -0000006040 00000 n -0000006094 00000 n -0000006148 00000 n -0000006202 00000 n -0000006256 00000 n -0000006310 00000 n -0000006364 00000 n -0000006418 00000 n -0000006472 00000 n -0000006526 00000 n -0000006580 00000 n -0000006634 00000 n -0000006688 00000 n -0000006742 00000 n -0000006796 00000 n -0000006850 00000 n -0000006904 00000 n -0000006959 00000 n -0000007014 00000 n -0000007069 00000 n -0000007123 00000 n -0000007177 00000 n -0000007231 00000 n -0000007285 00000 n -0000007339 00000 n -0000007393 00000 n -0000007447 00000 n -0000007501 00000 n -0000007555 00000 n -0000007609 00000 n -0000007663 00000 n -0000007717 00000 n -0000007771 00000 n -0000007825 00000 n -0000007879 00000 n -0000007933 00000 n -0000007987 00000 n -0000008041 00000 n -0000008095 00000 n -0000008149 00000 n -0000008203 00000 n -0000008257 00000 n -0000008311 00000 n -0000008365 00000 n -0000008419 00000 n -0000008473 00000 n -0000008528 00000 n -0000008583 00000 n -0000008637 00000 n -0000008691 00000 n -0000008745 00000 n -0000008799 00000 n -0000008853 00000 n -0000008907 00000 n -0000008961 00000 n -0000009015 00000 n -0000009069 00000 n -0000009123 00000 n -0000009177 00000 n -0000009231 00000 n -0000009285 00000 n -0000009339 00000 n -0000009393 00000 n -0000009447 00000 n -0000009501 00000 n -0000009555 00000 n -0000009609 00000 n -0000009663 00000 n -0000009717 00000 n -0000009771 00000 n -0000009825 00000 n -0000009879 00000 n -0000009933 00000 n -0000009987 00000 n -0000010041 00000 n -0000010095 00000 n -0000010149 00000 n -0000010203 00000 n -0000010257 00000 n -0000010311 00000 n -0000010365 00000 n -0000010419 00000 n -0000010474 00000 n -0000010529 00000 n -0000010584 00000 n -0000010638 00000 n -0000010692 00000 n -0000010746 00000 n -0000010800 00000 n -0000010854 00000 n -0000010908 00000 n -0000010962 00000 n -0000011016 00000 n -0000011070 00000 n -0000011124 00000 n -0000011178 00000 n -0000011232 00000 n -0000011286 00000 n -0000011340 00000 n -0000011394 00000 n -0000011448 00000 n -0000011502 00000 n -0000011556 00000 n -0000011610 00000 n -0000011664 00000 n -0000011718 00000 n -0000011772 00000 n -0000011826 00000 n -0000011880 00000 n -0000011934 00000 n -0000011988 00000 n -0000012043 00000 n -0000012098 00000 n -0000012152 00000 n -0000012206 00000 n -0000012260 00000 n -0000012314 00000 n -0000012368 00000 n -0000012422 00000 n -0000012476 00000 n -0000012530 00000 n -0000012584 00000 n -0000012638 00000 n -0000012692 00000 n -0000012746 00000 n -0000012800 00000 n -0000012854 00000 n -0000012908 00000 n -0000012962 00000 n -0000013016 00000 n -0000013070 00000 n -0000013124 00000 n -0000013178 00000 n -0000013232 00000 n -0000013286 00000 n -0000013340 00000 n -0000013394 00000 n -0000013448 00000 n -0000013502 00000 n -0000013556 00000 n -0000013610 00000 n -0000013664 00000 n -0000013718 00000 n -0000013772 00000 n -0000013826 00000 n -0000013880 00000 n -0000013934 00000 n -0000013989 00000 n -0000014044 00000 n -0000014099 00000 n -0000014153 00000 n -0000014207 00000 n -0000014261 00000 n -0000014315 00000 n -0000014369 00000 n -0000014423 00000 n -0000014477 00000 n -0000014531 00000 n -0000014585 00000 n -0000014639 00000 n -0000014693 00000 n -0000014747 00000 n -0000014801 00000 n -0000014855 00000 n -0000014909 00000 n -0000014963 00000 n -0000015017 00000 n -0000015071 00000 n -0000015125 00000 n -0000015179 00000 n -0000015233 00000 n -0000015287 00000 n -0000015341 00000 n -0000015395 00000 n -0000015449 00000 n -0000015503 00000 n -0000015558 00000 n -0000015613 00000 n -0000015667 00000 n -0000015721 00000 n -0000015775 00000 n -0000015829 00000 n -0000015883 00000 n -0000015937 00000 n -0000015991 00000 n -0000016045 00000 n -0000016099 00000 n -0000016153 00000 n -0000016207 00000 n -0000016261 00000 n -0000016315 00000 n -0000016369 00000 n -0000016423 00000 n -0000016477 00000 n -0000016531 00000 n -0000016585 00000 n -0000016639 00000 n -0000016693 00000 n -0000016747 00000 n -0000016801 00000 n -0000016855 00000 n -0000016909 00000 n -0000016963 00000 n -0000017017 00000 n -0000017071 00000 n -0000017125 00000 n -0000017179 00000 n -0000017233 00000 n -0000017287 00000 n -0000017341 00000 n -0000017395 00000 n -0000017449 00000 n -0000017504 00000 n -0000017559 00000 n -0000017614 00000 n -0000017668 00000 n -0000017722 00000 n -0000017776 00000 n -0000017830 00000 n -0000017884 00000 n -0000017938 00000 n -0000017992 00000 n -0000018046 00000 n -0000018100 00000 n -0000018154 00000 n -0000018208 00000 n -0000018262 00000 n -0000018316 00000 n -0000018370 00000 n -0000018424 00000 n -0000018478 00000 n -0000018532 00000 n -0000018586 00000 n -0000018640 00000 n -0000018694 00000 n -0000018748 00000 n -0000018802 00000 n -0000018856 00000 n -0000018910 00000 n -0000018964 00000 n -0000019018 00000 n -0000019073 00000 n -0000019128 00000 n -0000019182 00000 n -0000019236 00000 n -0000019290 00000 n -0000019344 00000 n -0000019398 00000 n -0000019452 00000 n -0000019506 00000 n -0000019560 00000 n -0000019614 00000 n -0000019668 00000 n -0000019722 00000 n -0000019776 00000 n -0000019830 00000 n -0000019884 00000 n -0000019938 00000 n -0000019992 00000 n -0000020046 00000 n -0000020100 00000 n -0000020154 00000 n -0000020208 00000 n -0000020262 00000 n -0000020316 00000 n -0000020370 00000 n -0000020424 00000 n -0000020478 00000 n -0000020532 00000 n -0000020586 00000 n -0000020640 00000 n -0000020694 00000 n -0000020748 00000 n -0000020802 00000 n -0000020856 00000 n -0000020910 00000 n -0000020964 00000 n -0000021019 00000 n -0000021074 00000 n -0000021129 00000 n -0000021183 00000 n -0000021237 00000 n -0000021291 00000 n -0000021345 00000 n -0000021399 00000 n -0000021453 00000 n -0000021507 00000 n -0000021561 00000 n -0000021615 00000 n -0000021669 00000 n -0000021723 00000 n -0000021777 00000 n -0000021831 00000 n -0000021885 00000 n -0000021939 00000 n -0000021993 00000 n -0000022047 00000 n -0000022101 00000 n -0000022155 00000 n -0000022209 00000 n -0000022263 00000 n -0000022317 00000 n -0000022371 00000 n -0000022425 00000 n -0000022479 00000 n -0000022533 00000 n -0000022588 00000 n -0000022643 00000 n -0000022697 00000 n -0000022751 00000 n -0000022805 00000 n -0000022859 00000 n -0000022913 00000 n -0000022967 00000 n -0000023021 00000 n -0000023075 00000 n -0000023129 00000 n -0000023183 00000 n -0000023237 00000 n -0000023291 00000 n -0000023345 00000 n -0000023399 00000 n -0000023453 00000 n -0000023507 00000 n -0000023561 00000 n -0000023615 00000 n -0000023669 00000 n -0000023723 00000 n -0000023777 00000 n -0000023831 00000 n -0000023885 00000 n -0000023939 00000 n -0000023993 00000 n -0000024047 00000 n -0000024101 00000 n -0000024155 00000 n -0000024209 00000 n -0000024263 00000 n -0000024317 00000 n -0000024371 00000 n -0000024425 00000 n -0000024479 00000 n -0000024534 00000 n -0000024589 00000 n -0000024644 00000 n -0000024698 00000 n -0000024752 00000 n -0000024806 00000 n -0000024860 00000 n -0000024914 00000 n -0000024968 00000 n -0000025022 00000 n -0000025076 00000 n -0000025130 00000 n -0000025184 00000 n -0000025238 00000 n -0000025292 00000 n -0000025346 00000 n -0000025400 00000 n -0000025454 00000 n -0000025508 00000 n -0000025562 00000 n -0000025616 00000 n -0000025670 00000 n -0000025724 00000 n -0000025778 00000 n -0000025832 00000 n -0000025886 00000 n -0000025940 00000 n -0000025994 00000 n -0000026048 00000 n -0000026103 00000 n -0000026158 00000 n -0000026212 00000 n -0000026266 00000 n -0000026320 00000 n -0000026374 00000 n -0000026428 00000 n -0000026482 00000 n -0000026536 00000 n -0000026590 00000 n -0000026644 00000 n -0000026698 00000 n -0000026752 00000 n -0000026806 00000 n -0000026860 00000 n -0000026914 00000 n -0000026968 00000 n -0000027022 00000 n -0000027076 00000 n -0000027130 00000 n -0000027184 00000 n -0000027238 00000 n -0000027292 00000 n -0000027346 00000 n -0000027400 00000 n -0000027454 00000 n -0000027508 00000 n -0000027562 00000 n -0000027616 00000 n -0000027670 00000 n -0000027724 00000 n -0000027778 00000 n -0000027832 00000 n -0000027886 00000 n -0000027940 00000 n -0000027994 00000 n -0000028049 00000 n -0000028104 00000 n -0000028159 00000 n -0000028213 00000 n -0000028267 00000 n -0000028321 00000 n -0000028375 00000 n -0000028429 00000 n -0000028483 00000 n -0000028537 00000 n -0000028591 00000 n -0000028645 00000 n -0000028699 00000 n -0000028753 00000 n -0000028807 00000 n -0000028861 00000 n -0000028915 00000 n -0000028969 00000 n -0000029023 00000 n -0000029077 00000 n -0000029131 00000 n -0000029185 00000 n -0000029239 00000 n -0000029293 00000 n -0000029347 00000 n -0000029401 00000 n -0000029455 00000 n -0000029509 00000 n -0000029563 00000 n -0000029618 00000 n -0000029673 00000 n -0000029727 00000 n -0000029781 00000 n -0000029835 00000 n -0000029889 00000 n -0000029943 00000 n -0000029997 00000 n -0000030051 00000 n -0000030105 00000 n -0000030159 00000 n -0000030213 00000 n -0000030267 00000 n -0000030321 00000 n -0000030375 00000 n -0000030429 00000 n -0000030483 00000 n -0000030537 00000 n -0000030591 00000 n -0000030645 00000 n -0000030699 00000 n -0000030753 00000 n -0000030807 00000 n -0000030861 00000 n -0000030915 00000 n -0000030969 00000 n -0000031023 00000 n -0000031077 00000 n -0000031131 00000 n -0000031185 00000 n -0000031239 00000 n -0000031293 00000 n -0000031347 00000 n -0000031401 00000 n -0000031455 00000 n -0000031509 00000 n -0000031564 00000 n -0000031619 00000 n -0000031674 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 +0000001516 00000 n +0000001570 00000 n +0000001624 00000 n +0000001677 00000 n +0000001730 00000 n +0000001783 00000 n +0000001836 00000 n +0000001889 00000 n +0000001942 00000 n +0000001995 00000 n +0000002048 00000 n +0000002101 00000 n +0000002154 00000 n +0000002207 00000 n +0000002260 00000 n +0000002313 00000 n +0000002366 00000 n +0000002419 00000 n +0000002472 00000 n +0000002525 00000 n +0000002578 00000 n +0000002631 00000 n +0000002684 00000 n +0000002737 00000 n +0000002790 00000 n +0000002843 00000 n +0000002896 00000 n +0000002949 00000 n +0000003002 00000 n +0000003055 00000 n +0000003109 00000 n +0000003163 00000 n +0000003217 00000 n +0000003270 00000 n +0000003323 00000 n +0000003376 00000 n +0000003429 00000 n +0000003482 00000 n +0000003535 00000 n +0000003588 00000 n +0000003641 00000 n +0000003694 00000 n +0000003747 00000 n +0000003800 00000 n +0000003853 00000 n +0000003906 00000 n +0000003959 00000 n +0000004012 00000 n +0000004065 00000 n +0000004118 00000 n +0000004171 00000 n +0000004224 00000 n +0000004277 00000 n +0000004330 00000 n +0000004383 00000 n +0000004436 00000 n +0000004489 00000 n +0000004542 00000 n +0000004596 00000 n +0000004650 00000 n +0000004704 00000 n +0000004757 00000 n +0000004810 00000 n +0000004863 00000 n +0000004916 00000 n +0000004969 00000 n +0000005022 00000 n +0000005075 00000 n +0000005128 00000 n +0000005181 00000 n +0000005234 00000 n +0000005287 00000 n +0000005340 00000 n +0000005394 00000 n +0000005448 00000 n +0000005502 00000 n +0000005556 00000 n +0000005610 00000 n +0000005664 00000 n +0000005718 00000 n +0000005772 00000 n +0000005826 00000 n +0000005880 00000 n +0000005934 00000 n +0000005988 00000 n +0000006042 00000 n +0000006096 00000 n +0000006150 00000 n +0000006205 00000 n +0000006260 00000 n +0000006315 00000 n +0000006369 00000 n +0000006423 00000 n +0000006477 00000 n +0000006531 00000 n +0000006585 00000 n +0000006639 00000 n +0000006693 00000 n +0000006747 00000 n +0000006801 00000 n +0000006855 00000 n +0000006909 00000 n +0000006963 00000 n +0000007017 00000 n +0000007071 00000 n +0000007125 00000 n +0000007179 00000 n +0000007233 00000 n +0000007287 00000 n +0000007341 00000 n +0000007395 00000 n +0000007449 00000 n +0000007503 00000 n +0000007557 00000 n +0000007611 00000 n +0000007665 00000 n +0000007720 00000 n +0000007775 00000 n +0000007830 00000 n +0000007884 00000 n +0000007938 00000 n +0000007992 00000 n +0000008046 00000 n +0000008100 00000 n +0000008154 00000 n +0000008208 00000 n +0000008262 00000 n +0000008316 00000 n +0000008370 00000 n +0000008424 00000 n +0000008478 00000 n +0000008532 00000 n +0000008586 00000 n +0000008640 00000 n +0000008694 00000 n +0000008748 00000 n +0000008802 00000 n +0000008856 00000 n +0000008910 00000 n +0000008964 00000 n +0000009018 00000 n +0000009072 00000 n +0000009126 00000 n +0000009180 00000 n +0000009234 00000 n +0000009288 00000 n +0000009343 00000 n +0000009398 00000 n +0000009453 00000 n +0000009507 00000 n +0000009561 00000 n +0000009615 00000 n +0000009669 00000 n +0000009723 00000 n +0000009777 00000 n +0000009831 00000 n +0000009885 00000 n +0000009939 00000 n +0000009993 00000 n +0000010047 00000 n +0000010101 00000 n +0000010155 00000 n +0000010209 00000 n +0000010263 00000 n +0000010317 00000 n +0000010371 00000 n +0000010425 00000 n +0000010479 00000 n +0000010533 00000 n +0000010587 00000 n +0000010641 00000 n +0000010695 00000 n +0000010749 00000 n +0000010803 00000 n +0000010858 00000 n +0000010913 00000 n +0000010968 00000 n +0000011022 00000 n +0000011076 00000 n +0000011130 00000 n +0000011184 00000 n +0000011238 00000 n +0000011292 00000 n +0000011346 00000 n +0000011400 00000 n +0000011454 00000 n +0000011508 00000 n +0000011562 00000 n +0000011616 00000 n +0000011670 00000 n +0000011724 00000 n +0000011778 00000 n +0000011832 00000 n +0000011886 00000 n +0000011940 00000 n +0000011994 00000 n +0000012048 00000 n +0000012102 00000 n +0000012156 00000 n +0000012210 00000 n +0000012264 00000 n +0000012318 00000 n +0000012372 00000 n +0000012426 00000 n +0000012481 00000 n +0000012536 00000 n +0000012591 00000 n +0000012645 00000 n +0000012699 00000 n +0000012753 00000 n +0000012807 00000 n +0000012861 00000 n +0000012915 00000 n +0000012969 00000 n +0000013023 00000 n +0000013077 00000 n +0000013131 00000 n +0000013185 00000 n +0000013239 00000 n +0000013293 00000 n +0000013347 00000 n +0000013401 00000 n +0000013455 00000 n +0000013509 00000 n +0000013563 00000 n +0000013617 00000 n +0000013671 00000 n +0000013725 00000 n +0000013779 00000 n +0000013833 00000 n +0000013887 00000 n +0000013941 00000 n +0000013996 00000 n +0000014051 00000 n +0000014106 00000 n +0000014160 00000 n +0000014214 00000 n +0000014268 00000 n +0000014322 00000 n +0000014376 00000 n +0000014430 00000 n +0000014484 00000 n +0000014538 00000 n +0000014592 00000 n +0000014646 00000 n +0000014700 00000 n +0000014754 00000 n +0000014808 00000 n +0000014862 00000 n +0000014916 00000 n +0000014970 00000 n +0000015024 00000 n +0000015078 00000 n +0000015132 00000 n +0000015186 00000 n +0000015240 00000 n +0000015294 00000 n +0000015348 00000 n +0000015402 00000 n +0000015456 00000 n +0000015510 00000 n +0000015564 00000 n +0000015619 00000 n +0000015674 00000 n +0000015729 00000 n +0000015783 00000 n +0000015837 00000 n +0000015891 00000 n +0000015945 00000 n +0000015999 00000 n +0000016053 00000 n +0000016107 00000 n +0000016161 00000 n +0000016215 00000 n +0000016269 00000 n +0000016323 00000 n +0000016377 00000 n +0000016431 00000 n +0000016485 00000 n +0000016539 00000 n +0000016593 00000 n +0000016647 00000 n +0000016701 00000 n +0000016755 00000 n +0000016809 00000 n +0000016863 00000 n +0000016917 00000 n +0000016971 00000 n +0000017025 00000 n +0000017079 00000 n +0000017134 00000 n +0000017189 00000 n +0000017244 00000 n +0000017298 00000 n +0000017352 00000 n +0000017406 00000 n +0000017460 00000 n +0000017514 00000 n +0000017568 00000 n +0000017622 00000 n +0000017676 00000 n +0000017730 00000 n +0000017784 00000 n +0000017838 00000 n +0000017892 00000 n +0000017946 00000 n +0000018000 00000 n +0000018054 00000 n +0000018108 00000 n +0000018162 00000 n +0000018216 00000 n +0000018270 00000 n +0000018324 00000 n +0000018378 00000 n +0000018432 00000 n +0000018486 00000 n +0000018540 00000 n +0000018594 00000 n +0000018648 00000 n +0000018702 00000 n +0000018757 00000 n +0000018812 00000 n +0000018867 00000 n +0000018921 00000 n +0000018975 00000 n +0000019029 00000 n +0000019083 00000 n +0000019137 00000 n +0000019191 00000 n +0000019245 00000 n +0000019299 00000 n +0000019353 00000 n +0000019407 00000 n +0000019461 00000 n +0000019515 00000 n +0000019569 00000 n +0000019623 00000 n +0000019677 00000 n +0000019731 00000 n +0000019785 00000 n +0000019839 00000 n +0000019893 00000 n +0000019947 00000 n +0000020001 00000 n +0000020055 00000 n +0000020109 00000 n +0000020163 00000 n +0000020217 00000 n +0000020272 00000 n +0000020327 00000 n +0000020382 00000 n +0000020436 00000 n +0000020490 00000 n +0000020544 00000 n +0000020598 00000 n +0000020652 00000 n +0000020706 00000 n +0000020760 00000 n +0000020814 00000 n +0000020868 00000 n +0000020922 00000 n +0000020976 00000 n +0000021030 00000 n +0000021084 00000 n +0000021138 00000 n +0000021192 00000 n +0000021246 00000 n +0000021300 00000 n +0000021354 00000 n +0000021408 00000 n +0000021462 00000 n +0000021516 00000 n +0000021570 00000 n +0000021624 00000 n +0000021678 00000 n +0000021732 00000 n +0000021786 00000 n +0000021840 00000 n +0000021895 00000 n +0000021950 00000 n +0000022005 00000 n +0000022059 00000 n +0000022113 00000 n +0000022167 00000 n +0000022221 00000 n +0000022275 00000 n +0000022329 00000 n +0000022383 00000 n +0000022437 00000 n +0000022491 00000 n +0000022545 00000 n +0000022599 00000 n +0000022653 00000 n +0000022707 00000 n +0000022761 00000 n +0000022815 00000 n +0000022869 00000 n +0000022923 00000 n +0000022977 00000 n +0000023031 00000 n +0000023085 00000 n +0000023139 00000 n +0000023193 00000 n +0000023247 00000 n +0000023301 00000 n +0000023355 00000 n +0000023410 00000 n +0000023465 00000 n +0000023520 00000 n +0000023574 00000 n +0000023628 00000 n +0000023682 00000 n +0000023736 00000 n +0000023790 00000 n +0000023844 00000 n +0000023898 00000 n +0000023952 00000 n +0000024006 00000 n +0000024060 00000 n +0000024114 00000 n +0000024168 00000 n +0000024222 00000 n +0000024276 00000 n +0000024330 00000 n +0000024384 00000 n +0000024438 00000 n +0000024492 00000 n +0000024546 00000 n +0000024600 00000 n +0000024654 00000 n +0000024708 00000 n +0000024762 00000 n +0000024816 00000 n +0000024870 00000 n +0000024924 00000 n +0000024978 00000 n +0000025033 00000 n +0000025088 00000 n +0000025143 00000 n +0000025197 00000 n +0000025251 00000 n +0000025305 00000 n +0000025359 00000 n +0000025413 00000 n +0000025467 00000 n +0000025521 00000 n +0000025575 00000 n +0000025629 00000 n +0000025683 00000 n +0000025737 00000 n +0000025791 00000 n +0000025845 00000 n +0000025899 00000 n +0000025953 00000 n +0000026007 00000 n +0000026061 00000 n +0000026115 00000 n +0000026169 00000 n +0000026223 00000 n +0000026277 00000 n +0000026331 00000 n +0000026385 00000 n +0000026439 00000 n +0000026493 00000 n +0000026548 00000 n +0000026603 00000 n +0000026658 00000 n +0000026712 00000 n +0000026766 00000 n +0000026820 00000 n +0000026874 00000 n +0000026928 00000 n +0000026982 00000 n +0000027036 00000 n +0000027090 00000 n +0000027144 00000 n +0000027198 00000 n +0000027252 00000 n +0000027306 00000 n +0000027360 00000 n +0000027414 00000 n +0000027468 00000 n +0000027522 00000 n +0000027576 00000 n +0000027630 00000 n +0000027684 00000 n +0000027738 00000 n +0000027792 00000 n +0000027846 00000 n +0000027900 00000 n +0000027954 00000 n +0000028008 00000 n +0000028062 00000 n +0000028116 00000 n +0000028171 00000 n +0000028226 00000 n +0000028281 00000 n +0000107057 00000 n +0000107080 00000 n +0000107107 00000 n +0000124250 00000 n +0000124111 00000 n +0000107305 00000 n +0000107560 00000 n +0000112535 00000 n +0000112513 00000 n +0000112633 00000 n +0000112653 00000 n +0000113142 00000 n +0000112812 00000 n +0000113576 00000 n +0000113597 00000 n +0000113853 00000 n +0000115496 00000 n +0000115474 00000 n +0000115586 00000 n +0000115606 00000 n +0000115997 00000 n +0000115766 00000 n +0000116310 00000 n +0000116331 00000 n +0000116583 00000 n +0000117995 00000 n +0000117973 00000 n +0000118082 00000 n +0000118101 00000 n +0000118492 00000 n +0000118261 00000 n +0000118804 00000 n +0000118825 00000 n +0000119077 00000 n +0000120649 00000 n +0000120627 00000 n +0000120740 00000 n +0000120760 00000 n +0000121151 00000 n +0000120920 00000 n +0000121463 00000 n +0000121484 00000 n +0000121740 00000 n +0000123276 00000 n +0000123254 00000 n +0000123367 00000 n +0000123387 00000 n +0000123778 00000 n +0000123547 00000 n +0000124090 00000 n +0000124173 00000 n trailer << - /Root 638 0 R + /Root 575 0 R /Info 1 0 R - /ID [<2D7A8CB2740C2EB4858ED371B800BF81> <2D7A8CB2740C2EB4858ED371B800BF81>] - /Size 639 + /ID [ ] + /Size 576 >> startxref -149290 +133086 %%EOF diff --git a/figs/detail_control_decoupling_coupled_plant_bode.png b/figs/detail_control_decoupling_coupled_plant_bode.png index 21df2b0..860a76a 100644 Binary files a/figs/detail_control_decoupling_coupled_plant_bode.png and b/figs/detail_control_decoupling_coupled_plant_bode.png differ diff --git a/figs/detail_control_decoupling_model_test.pdf b/figs/detail_control_decoupling_model_test.pdf index 2e32e26..c711094 100644 Binary files a/figs/detail_control_decoupling_model_test.pdf and b/figs/detail_control_decoupling_model_test.pdf differ diff --git a/figs/detail_control_decoupling_model_test.png b/figs/detail_control_decoupling_model_test.png index e0c1f5d..cc3a965 100644 Binary files a/figs/detail_control_decoupling_model_test.png and b/figs/detail_control_decoupling_model_test.png differ diff --git a/figs/detail_control_decoupling_model_test_CoK.pdf b/figs/detail_control_decoupling_model_test_CoK.pdf index bd134d8..67aa07a 100644 Binary files a/figs/detail_control_decoupling_model_test_CoK.pdf and b/figs/detail_control_decoupling_model_test_CoK.pdf differ diff --git a/figs/detail_control_decoupling_model_test_CoM.pdf b/figs/detail_control_decoupling_model_test_CoM.pdf index eb7419e..b5e66d2 100644 Binary files a/figs/detail_control_decoupling_model_test_CoM.pdf and b/figs/detail_control_decoupling_model_test_CoM.pdf differ diff --git a/figs/detail_control_decoupling_model_test_alt.pdf b/figs/detail_control_decoupling_model_test_alt.pdf index ff47926..6769d5d 100644 Binary files a/figs/detail_control_decoupling_model_test_alt.pdf and b/figs/detail_control_decoupling_model_test_alt.pdf differ diff --git a/figs/detail_control_decoupling_model_test_modal.pdf b/figs/detail_control_decoupling_model_test_modal.pdf index b9bfbc5..b6f28c9 100644 Binary files a/figs/detail_control_decoupling_model_test_modal.pdf and b/figs/detail_control_decoupling_model_test_modal.pdf differ diff --git a/figs/detail_control_decoupling_strut_model.pdf b/figs/detail_control_decoupling_strut_model.pdf index b0de00d..a0f2951 100644 Binary files a/figs/detail_control_decoupling_strut_model.pdf and b/figs/detail_control_decoupling_strut_model.pdf differ diff --git a/figs/inkscape/detail_control_decoupling_model_test.svg b/figs/inkscape/detail_control_decoupling_model_test.svg index 8389158..980bb76 100644 --- a/figs/inkscape/detail_control_decoupling_model_test.svg +++ b/figs/inkscape/detail_control_decoupling_model_test.svg @@ -1,12 +1,12 @@ + + + + + + + + + @@ -2050,7 +2099,7 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-39.1982, -20.2741)"> + transform="translate(-39.198222,-20.296063)"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nass-control.org b/nass-control.org index dda2352..7332608 100644 --- a/nass-control.org +++ b/nass-control.org @@ -98,8 +98,11 @@ Up to now, basic control strategy ("decentralized" control in the frame of the s Discussion about: - *Use multiple sensors*: Discussion about two sensor control VS HAC-LAC VS Sensor Fusion ? + - file:~/Cloud/research/papers/published/dehaeze19_compl_filter_shapin_using_synth/index.org + - [[file:~/Cloud/research/papers/dehaeze21_desig_compl_filte/journal/dehaeze21_desig_compl_filte.org][file:~/Cloud/research/papers/dehaeze21_desig_compl_filte/journal/dehaeze21_desig_compl_filte.org]] + - [[file:~/Cloud/research/papers/dehaeze20_optim_robus_compl_filte/matlab/dehaeze22_optim_robus_compl_filte_matlab.org]] - *Decoupling strategies* - - [ ] file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org + - file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org - *Control optimization* ** Unused @@ -124,6 +127,30 @@ Discussion about: | X | Piezoelectric | Force, Position | Vibration isolation, Model-Based, Modal control: 6x PI controllers | Stiffness of flexible joints is compensated using feedback, then the system is decoupled in the modal space | [[cite:&yang19_dynam_model_decoup_contr_flexib]] | | | Voice Coil | Force | IFF, centralized (decouple) + decentralized (coupled) | Specific geometry: decoupled force plant. Better perf with centralized IFF | [[cite:&mcinroy99_dynam;&mcinroy99_precis_fault_toler_point_using_stewar_platf;&mcinroy00_desig_contr_flexur_joint_hexap]] | +*** Table with decoupling strategies + +#+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* | +|---+---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| X | APA | Eddy current displacement | *Decentralized* (struts) PI + LPF control | [[cite:&furutani04_nanom_cuttin_machin_using_stewar]] | +| X | PZT Piezo | Strain Gauge | Decentralized position feedback | [[cite:&du14_piezo_actuat_high_precis_flexib]] | +|---+---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| | Voice Coil | Force | *Cartesian frame* decoupling | [[cite:&obrien98_lesson]] | +| X | Voice Coil | Force | Cartesian Frame, Jacobians, IFF | [[cite:&mcinroy99_dynam;&mcinroy99_precis_fault_toler_point_using_stewar_platf;&mcinroy00_desig_contr_flexur_joint_hexap]] | +| X | Hydraulic | LVDT | Decentralized (strut) vs Centralized (cartesian) | [[cite:&kim00_robus_track_contr_desig_dof_paral_manip]] | +| X | 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]] | +|---+---------------+----------------------------------------------------+---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------| +| X | Voice Coil | Geophone + Eddy Current (Struts, collocated) | Decentralized (Sky Hook) + Centralized (*modal*) Control | [[cite:&pu11_six_degree_of_freed_activ]] | +| X | 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]] | + *** "Closed-Loop" complementary filters <> @@ -851,8 +878,8 @@ Prefixes: - =detail_control_decoupling= - =detail_control_cf= -** TODO [#A] Finish writing "multiple sensor" control section -SCHEDULED: <2025-04-08 Tue> +** DONE [#A] Finish writing "multiple sensor" control section +CLOSED: [2025-04-09 Wed 13:55] SCHEDULED: <2025-04-08 Tue> ** TODO [#B] Review of control for Stewart platforms? @@ -887,10 +914,6 @@ Several considerations: :END: <> -# file:~/Cloud/research/papers/published/dehaeze19_compl_filter_shapin_using_synth/index.org -# [[file:~/Cloud/research/papers/dehaeze21_desig_compl_filte/journal/dehaeze21_desig_compl_filte.org][file:~/Cloud/research/papers/dehaeze21_desig_compl_filte/journal/dehaeze21_desig_compl_filte.org]] -# [[file:~/Cloud/research/papers/dehaeze20_optim_robus_compl_filte/matlab/dehaeze22_optim_robus_compl_filte_matlab.org]] - ** Introduction :ignore: The literature review of Stewart platforms revealed a wide diversity of designs with various sensor and actuator configurations. @@ -2207,57 +2230,37 @@ Looking forward, it would be interesting to investigate how sensor fusion (parti :END: <> -# file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org - ** Introduction :ignore: -When dealing with MIMO systems, a typical strategy is to: -- First decouple the plant dynamics (discussed in this section) -- Apply SISO control for the decoupled plant (discussed in section ref:sec:detail_control_cf) +The control of parallel manipulators (and any MIMO system in general) typically involves a two-step approach: first decoupling the plant dynamics using various strategies, which will be discussed in this section, followed by the application of SISO control for the decoupled plant (discussed in section ref:sec:detail_control_cf). -Another strategy would be to apply a multivariable control synthesis to the coupled system. -Strangely, while H-infinity synthesis is a mature technology, it use for the control of Stewart platform is not yet demonstrated. -From [[cite:&thayer02_six_axis_vibrat_isolat_system]]: -#+begin_quote -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 +When sensors are integrated within the struts, decentralized control may be applied, as the system is already well decoupled at low frequency. +For instance, [[cite:&furutani04_nanom_cuttin_machin_using_stewar]] implemented a system where each strut consists of piezoelectric stack actuators and eddy current displacement sensors, with separate PI controllers for each strut. +A similar control architecture was proposed in [[cite:&du14_piezo_actuat_high_precis_flexib]] using strain gauge sensors integrated in each strut. -- [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 +An alternative strategy involves decoupling the system in the Cartesian frame using Jacobian matrices. +As demonstrated during the study of Stewart platform kinematics, Jacobian matrices can be utilized to map actuator forces to forces and torques applied on the top platform. +This approach enables the implementation of controllers in a defined frame. +It has been applied with various sensor types including force sensors [[cite:&mcinroy00_desig_contr_flexur_joint_hexap]], relative displacement sensors [[cite:&kim00_robus_track_contr_desig_dof_paral_manip]], and inertial sensors [[cite:&li01_simul_vibrat_isolat_point_contr;&abbas14_vibrat_stewar_platf]]. +The Cartesian frame in which the system is decoupled is typically chosen at the point of interest (i.e., where the motion is of interest) or at the center of mass. -#+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]] | -| 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]] | +Modal control represents another noteworthy decoupling strategy, wherein the "local" plant inputs and outputs are mapped to the modal space. +In this approach, multiple SISO plants, each corresponding to a single mode, can be controlled independently. +This decoupling strategy has been implemented for active damping applications [[cite:&holterman05_activ_dampin_based_decoup_colloc_contr]], which is logical as it is often desirable to dampen specific modes. +The strategy has also been employed in [[cite:&pu11_six_degree_of_freed_activ]] for vibration isolation purposes using geophones, and in [[cite:&yang19_dynam_model_decoup_contr_flexib]] using force sensors. +Another completely different strategy, is to use implement a multivariable control directly on the coupled system. +$\mathcal{H}_\infty$ and $\mu\text{-synthesis}$ were applied to a Stewart platform model in [[cite:&lei08_multi_objec_robus_activ_vibrat]]. +In [[cite:&xie17_model_contr_hybrid_passiv_activ]], decentralized force feedback was first applied, followed by $\mathcal{H}_2$ synthesis for vibration isolation based on accelerometers. +$\mathcal{H}_\infty$ synthesis was also employed in [[cite:&jiao18_dynam_model_exper_analy_stewar]] for active damping based on accelerometers. +[[cite:&thayer02_six_axis_vibrat_isolat_system]] compared $\mathcal{H}_\infty$ synthesis with decentralized control in the frame of the struts. +Their experimental closed-loop results indicated that the $\mathcal{H}_\infty$ controller did not outperform the decentralized controller in the frame of the struts. +These limitations were attributed to the model's poor ability to predict off-diagonal dynamics, which is crucial for $\mathcal{H}_\infty$ synthesis. -The goal of this section is to compare the use of several methods for the decoupling of parallel manipulators. - -It is structured as follow: -- Section ref:ssec:detail_control_decoupling_model: the model used to compare/test decoupling strategies is presented -- Section ref:ssec:detail_control_decoupling_jacobian: decoupling using Jacobian matrices is presented -- Section ref:ssec:detail_control_decoupling_modal: modal decoupling is presented -- Section ref:ssec:detail_control_decoupling_svd: SVD decoupling is presented -- Section ref:ssec:detail_control_decoupling_comp: the three decoupling methods are applied on the test model and compared -- Conclusions are drawn on the three decoupling methods +The purpose of this section is to compare several methods for the decoupling of parallel manipulators, an analysis that appears to be lacking in the literature. +The analysis begins in Section ref:ssec:detail_control_decoupling_model with the introduction of a simplified parallel manipulator model that serves as the foundation for evaluating various decoupling strategies. +Sections ref:ssec:detail_control_decoupling_jacobian through ref:ssec:detail_control_decoupling_svd systematically examine three distinct approaches: Jacobian matrix decoupling, modal decoupling, and Singular Value Decomposition (SVD) decoupling, respectively. +The comparative assessment of these three methodologies, along with concluding observations, is provided in Section ref:ssec:detail_control_decoupling_comp. ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) @@ -2286,44 +2289,43 @@ freqs = logspace(0, 3, 1000); ** Test Model <> -- 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_decoupling_model_details is used -- Fully parallel manipulator: it has 3DoF, and has 3 parallels struts whose model is shown in Figure ref:fig:detail_control_decoupling_strut_model - As many DoF as actuators and sensors -- It is quite similar to the Stewart platform (parallel architecture, as many struts as DoF) +Instead of utilizing the Stewart platform for comparing decoupling strategies, a simplified parallel manipulator is employed to facilitate a more straightforward analysis. +The system illustrated in Figure ref:fig:detail_control_decoupling_model_test is used for this purpose. +It possesses three degrees of freedom (DoF) and incorporates three parallel struts. +Being a fully parallel manipulator, it is therefore quite similar to the Stewart platform. -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 +Two reference frames are defined within this model: frame $\{M\}$ with origin $O_M$ at the center of mass of the solid body, and frame $\{K\}$ with origin $O_K$ at the center of stiffness of the parallel manipulator. -#+name: fig:detail_control_decoupling_model_details -#+caption: 3DoF model used to study decoupling strategies -#+attr_latex: :options [htbp] -#+begin_figure -#+attr_latex: :caption \subcaption{\label{fig:detail_control_decoupling_model_test}Geometrical parameters} -#+attr_latex: :options {0.58\textwidth} -#+begin_subfigure -#+attr_latex: :scale 1 +#+attr_latex: :options [b]{0.60\linewidth} +#+begin_minipage +#+name: fig:detail_control_decoupling_model_test +#+caption: Model used to compare decoupling strategies +#+attr_latex: :float nil :scale 1 [[file:figs/detail_control_decoupling_model_test.png]] -#+end_subfigure -#+attr_latex: :caption \subcaption{\label{fig:detail_control_decoupling_strut_model}Strut model} -#+attr_latex: :options {0.38\textwidth} -#+begin_subfigure -#+attr_latex: :scale 1 -[[file:figs/detail_control_decoupling_strut_model.png]] -#+end_subfigure -#+end_figure +#+end_minipage +\hfill +#+attr_latex: :options [b]{0.36\linewidth} +#+begin_minipage +#+begin_scriptsize +#+latex: \centering +#+attr_latex: :environment tabularx :width \linewidth :placement [b] :align cXc +#+attr_latex: :booktabs t :float nil :center nil +| | *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 $R_z$ inertia | $5\,\text{kg}m^2$ | +#+latex: \captionof{table}{\label{tab:detail_control_decoupling_test_model_params}Model parameters} +#+end_scriptsize +#+end_minipage -First, the equation of motion are derived. -Expressing the second law of Newton on the suspended mass, expressed at its center of mass gives +The equations of motion are derived by applying Newton's second law to the suspended mass, expressed at its center of mass eqref:eq:detail_control_decoupling_model_eom, where $\bm{\mathcal{X}}_{\{M\}}$ represents the two translations and one rotation with respect to the center of mass, and $\bm{\mathcal{F}}_{\{M\}}$ denotes the forces and torque applied at the center of mass. -\begin{equation} - \bm{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} +\begin{equation}\label{eq:detail_control_decoupling_model_eom} + \bm{M}_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) = \sum \bm{\mathcal{F}}_{\{M\}}(t), \quad \bm{\mathcal{X}}_{\{M\}} = \begin{bmatrix} x \\ y \\ @@ -2335,7 +2337,7 @@ with $\bm{\mathcal{X}}_{\{M\}}$ the two translation and one rotation expressed w \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. +The Jacobian matrix $\bm{J}_{\{M\}}$ is employed to map the spring, damping, and actuator forces to XY forces and Z torque expressed at the center of mass eqref:eq:detail_control_decoupling_jacobian_CoM. \begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM} \bm{J}_{\{M\}} = \begin{bmatrix} @@ -2345,15 +2347,15 @@ In order to map the spring, damping and actuator forces to XY forces and Z torqu \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. +Subsequently, the equation of motion relating the actuator forces $\tau$ to the motion of the mass $\bm{\mathcal{X}}_{\{M\}}$ is derived eqref:eq:detail_control_decoupling_plant_cartesian. \begin{equation}\label{eq:detail_control_decoupling_plant_cartesian} \bm{M}_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{M\}} \bm{\mathcal{X}}_{\{M\}}(t) = \bm{J}_{\{M\}}^{\intercal} \bm{\tau}(t) \end{equation} -Matrices representing the payload inertia as well as the actuator stiffness and damping are shown in +The matrices representing the payload inertia, actuator stiffness, and damping are shown in eqref:eq:detail_control_decoupling_system_matrices. -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_system_matrices} \bm{M}_{\{M\}} = \begin{bmatrix} m & 0 & 0 \\ 0 & m & 0 \\ @@ -2371,28 +2373,14 @@ Matrices representing the payload inertia as well as the actuator stiffness and \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* | -|-------------+----------------------------+-------------------| -| $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$ | +The parameters employed for the subsequent analysis are summarized in Table ref:tab:detail_control_decoupling_test_model_params, which includes values for geometric parameters ($l_a$, $h_a$), mechanical properties (actuator stiffness $k$ and damping $c$), and inertial characteristics (payload mass $m$ and rotational inertia $I$). ** 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. +The dynamics in the frame of the struts are first examined. +The equation of motion relating actuator forces $\bm{\mathcal{\tau}}$ to strut relative motion $\bm{\mathcal{L}}$ is derived from equation 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\}}$ defined in eqref:eq:detail_control_decoupling_jacobian_CoM. +The obtained transfer function from $\bm{\mathcal{\tau}}$ to $\bm{\mathcal{L}}$ is shown in eqref:eq:detail_control_decoupling_plant_decentralized. #+begin_src latex :file detail_control_decoupling_control_struts.pdf \begin{tikzpicture} @@ -2405,20 +2393,19 @@ The transfer function from $\bm{\mathcal{\tau}}$ to $\bm{\mathcal{L}}$ is shown #+end_src #+RESULTS: -[[file:figs/detail_control_decoupling_control_struts.png]] +# [[file:figs/detail_control_decoupling_control_struts.png]] \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\}}^{-\intercal} \bm{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. +At low frequencies, the plant converges to a diagonal constant matrix whose diagonal elements are related to the actuator stiffnesses eqref:eq:detail_control_decoupling_plant_decentralized_low_freq. +At high frequencies, the plant converges to the mass matrix mapped in the frame of the struts, which is generally highly non-diagonal. \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; @@ -2463,9 +2450,9 @@ C = J_CoM'*Cr*J_CoM; 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_decoupling_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). +The magnitude of the coupled plant $\bm{G}_{\mathcal{L}}$ is illustrated in Figure ref:fig:detail_control_decoupling_coupled_plant_bode. +This representation confirms that at low frequencies (below the first suspension mode), the plant is well decoupled. +Depending on the symmetry present in the system, certain diagonal elements may exhibit identical values, as demonstrated for struts 2 and 3 in this example. #+begin_src matlab :exports none figure; @@ -2477,8 +2464,10 @@ for out_i = 1:3 plot(freqs, abs(squeeze(freqresp(G_L(out_i,in_i), freqs, 'Hz'))), 'k-', ... 'DisplayName', sprintf('$\\mathcal{L}_%i/\\tau_%i$', out_i, in_i)); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - xlim([freqs(1), freqs(end)]); ylim([1e-8, 1e-4]); - leg = legend('location', 'northeast', 'FontSize', 8); + xlim([freqs(1), freqs(end)]); ylim([2e-8, 4e-5]); + xticks([1e0, 1e1, 1e2]) + yticks([1e-7, 1e-6, 1e-5]) + leg = legend('location', 'southwest', 'FontSize', 8); leg.ItemTokenSize(1) = 18; if in_i == 1 @@ -2497,11 +2486,11 @@ end #+end_src #+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/detail_control_decoupling_coupled_plant_bode.pdf', 'width', 'full', 'height', 'tall'); +exportFig('figs/detail_control_decoupling_coupled_plant_bode.pdf', 'width', 'full', 'height', 600); #+end_src #+name: fig:detail_control_decoupling_coupled_plant_bode -#+caption: Magnitude of the coupled plant. +#+caption: Model dynamics from actuator forces to relative displacement sensor of each strut. #+RESULTS: [[file:figs/detail_control_decoupling_coupled_plant_bode.png]] @@ -2509,7 +2498,7 @@ exportFig('figs/detail_control_decoupling_coupled_plant_bode.pdf', 'width', 'ful <> **** Jacobian Matrix -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. +The Jacobian matrix serves a dual purpose in the decoupling process: it converts strut velocity $\dot{\mathcal{L}}$ to payload velocity and angular velocity $\dot{\bm{\mathcal{X}}}_{\{O\}}$, and it transforms actuator forces $\bm{\tau}$ to forces/torque applied on the payload $\bm{\mathcal{F}}_{\{O\}}$, as expressed in equation eqref:eq:detail_control_decoupling_jacobian. \begin{subequations}\label{eq:detail_control_decoupling_jacobian} \begin{align} @@ -2518,9 +2507,9 @@ As already explained, the Jacobian matrix can be used to both convert strut velo \end{align} \end{subequations} -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\}$ +The resulting plant (Figure ref:fig:detail_control_jacobian_decoupling_arch) have inputs and outputs with clear physical interpretations: +- $\bm{\mathcal{F}}_{\{O\}}$ represents forces/torques applied on the payload at the origin of frame $\{O\}$ +- $\bm{\mathcal{X}}_{\{O\}}$ represents translations/rotation of the payload expressed in frame $\{O\}$ #+begin_src latex :file detail_control_decoupling_control_jacobian.pdf \begin{tikzpicture} @@ -2546,18 +2535,18 @@ The obtained plan (Figure ref:fig:detail_control_jacobian_decoupling_arch) has i #+RESULTS: [[file:figs/detail_control_decoupling_control_jacobian.png]] +The transfer function from $\bm{\mathcal{F}}_{\{O\}$ to $\bm{\mathcal{X}}_{\{O\}}$, denoted $\bm{G}_{\{O\}}(s)$ can be computed using eqref:eq:detail_control_decoupling_plant_jacobian. + \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\}}^{\intercal} \bm{J}_{\{M\}}^{-\intercal} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{O\}} s^2 + \bm{J}_{\{O\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{O\}} s + \bm{J}_{\{O\}}^{\intercal} \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. +The frame $\{O\}$ can be selected according to specific requirements, but the decoupling properties are significantly influenced by this choice. +Two natural reference frames are particularly relevant: the center of mass and the center of stiffness. **** 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. +When the decoupling frame is located at the center of mass (frame $\{M\}$ in Figure ref:fig:detail_control_decoupling_model_test), the Jacobian matrix and its inverse are expressed as in eqref:eq:detail_control_decoupling_jacobian_CoM_inverse. \begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM_inverse} \bm{J}_{\{M\}} = \begin{bmatrix} @@ -2591,16 +2580,15 @@ The Jacobian matrix and its inverse are expressed in eqref:eq:detail_control_dec #+end_src #+RESULTS: -[[file:figs/detail_control_decoupling_control_jacobian_CoM.png]] # [[file:figs/detail_control_decoupling_control_jacobian_CoM.png]] -Analytical formula of the plant is eqref:eq:detail_control_decoupling_plant_CoM. +Analytical formula of the plant $\bm{G}_{\{M\}}(s)$ is derived 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\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{M\}} s + \bm{J}_{\{M\}}^{\intercal} \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. +At high frequencies, the plant converges to 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} @@ -2610,14 +2598,13 @@ At high frequency, converges towards the inverse of the mass matrix, which is a \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. +Consequently, the plant exhibits effective decoupling at frequencies above the highest suspension mode as shown in Figure ref:fig:detail_control_decoupling_jacobian_plant_CoM. +This strategy is typically employed in systems with low-frequency suspension modes [[cite:&butler11_posit_contr_lithog_equip]], where the plant approximates 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_decoupling_model_test_CoM. +The low-frequency coupling observed in this configuration has a clear physical interpretation. +When a static force is applied at the center of mass, the suspended mass rotates around the center of stiffness. +This rotation is due to torque induced by the stiffness of the first actuator (i.e. the one on the left side), which is not aligned with the force application point. +This phenomenon is illustrated in Figure ref:fig:detail_control_decoupling_model_test_CoM. #+begin_src matlab %% Jacobian Decoupling - Center of Mass @@ -2688,10 +2675,11 @@ exportFig('figs/detail_control_decoupling_jacobian_plant_CoM.pdf', 'width', 'hal #+end_src #+RESULTS: -[[file:figs/detail_control_decoupling_control_jacobian_CoK.png]] # [[file:figs/detail_control_decoupling_control_jacobian_CoK.png]] -\begin{equation} +When the decoupling frame is located at the center of stiffness, the Jacobian matrix and its inverse are expressed as in eqref:eq:detail_control_decoupling_jacobian_CoK_inverse. + +\begin{equation}\label{eq:detail_control_decoupling_jacobian_CoK_inverse} \bm{J}_{\{K\}} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & -l_a \\ @@ -2703,24 +2691,28 @@ exportFig('figs/detail_control_decoupling_jacobian_plant_CoM.pdf', 'width', 'hal \end{bmatrix} \end{equation} -Frame $\{K\}$ is chosen such that $\bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{K\}}$ is diagonal. -Typically, it can me made based on physical reasoning as is the case here. +The frame $\{K\}$ was selected based on physical reasoning, positioned in line with the side strut and equidistant between the two vertical struts. +However, it could alternatively be determined through analytical methods to ensure that $\bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{K\}}$ forms a diagonal matrix. +It should be noted that the existence of such a center of stiffness (i.e. a frame $\{K\}$ for which $\bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{K\}}$ is diagonal) is not guaranteed for arbitrary systems. +This property is typically achievable only in systems exhibiting specific symmetrical characteristics, as is the case in the present example. + +The analytical expression for the plant in this configuration was then computed ref:eq:detail_control_decoupling_plant_CoK. \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\}}^{\intercal} \bm{J}_{\{M\}}^{-\intercal} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{K\}} s^2 + \bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{K\}} s + \bm{J}_{\{K\}}^{\intercal} \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} +Figure ref:fig:detail_control_decoupling_jacobian_plant_CoK_results presents the dynamics of the plant when decoupled using the Jacobian matrix expressed at the center of stiffness. +The plant is well decoupled below the suspension mode with the lowest frequency eqref:eq:detail_control_decoupling_plant_CoK_low_freq, making it particularly suitable for systems with high stiffness. + +\begin{equation}\label{eq:detail_control_decoupling_plant_CoK_low_freq} \bm{G}_{\{K\}}(j\omega) \xrightarrow[\omega \to 0]{} \bm{J}_{\{K\}}^{-1} \bm{\mathcal{K}}^{-1} \bm{J}_{\{K\}}^{-\intercal} \end{equation} - -The physical reason for high frequency coupling is schematically shown in Figure ref:fig:detail_control_decoupling_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. +The physical reason for high-frequency coupling is illustrated in Figure ref:fig:detail_control_decoupling_model_test_CoK. +When a high-frequency force is applied at a point not aligned with the center of mass, it induces rotation around the center of mass. +This phenomenon explains the coupling observed between different degrees of freedom at higher frequencies. #+begin_src matlab %% Jacobian Decoupling - Center of Mass @@ -2783,44 +2775,32 @@ exportFig('figs/detail_control_decoupling_jacobian_plant_CoK.pdf', 'width', 'hal <> **** 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" - [[cite:&heertjes05_activ_vibrat_isolat_metrol_frames]] - IFF in modal space [[cite:&holterman05_activ_dampin_based_decoup_colloc_contr]] very interesting paper - [[cite:&pu11_six_degree_of_freed_activ]] +Modal decoupling represents an approach based on the principle that a mechanical system's behavior can be understood as a combination of contributions from various modes [[cite:&rankers98_machin]]. + +To convert the dynamics in the modal space, the equation of motion are first written with respect to the center of mass eqref:eq:detail_control_decoupling_equation_motion_CoM. \begin{equation}\label{eq:detail_control_decoupling_equation_motion_CoM} \bm{M}_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{C}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{K}_{\{M\}} \bm{\mathcal{X}}_{\{M\}}(t) = \bm{J}_{\{M\}}^{\intercal} \bm{\tau}(t) \end{equation} -Let's make a change of variables: +For modal decoupling, a change of variables is introduced eqref:eq:detail_control_decoupling_modal_coordinates where $\bm{\mathcal{X}}_{m}$ represents the modal amplitudes and $\bm{\Phi}$ is a $n \times n$[fn:detail_control_2] matrix whose columns correspond to the mode shapes of the system, computed from $\bm{M}_{\{M\}}$ and $\bm{K}_{\{M\}}$. + \begin{equation}\label{eq:detail_control_decoupling_modal_coordinates} \bm{\mathcal{X}}_{\{M\}} = \bm{\Phi} \bm{\mathcal{X}}_{m} \end{equation} -with: -- $\bm{\mathcal{X}}_{m}$ the modal amplitudes -- $\bm{\Phi}$ a matrix whose columns are the modes shapes of the system which can be computed from $\bm{M}_{\{M\}}$ and $\bm{K}_{\{M\}}$. -By pre-multiplying the equation of motion eqref:eq:detail_control_decoupling_equation_motion_CoM by $\bm{\Phi}^{\intercal}$ and using the change of variable eqref:eq:detail_control_decoupling_modal_coordinates, a new set of equation of motion are obtained +By pre-multiplying equation eqref:eq:detail_control_decoupling_equation_motion_CoM by $\bm{\Phi}^{\intercal}$ and applying the change of variable eqref:eq:detail_control_decoupling_modal_coordinates, a new set of equations of motion is obtained eqref:eq:detail_control_decoupling_equation_modal_coordinates where $\bm{\tau}_m$ represents the modal input, while $\bm{M}_m$, $\bm{C}_m$, and $\bm{K}_m$ denote the modal mass, damping, and stiffness matrices respectively. \begin{equation}\label{eq:detail_control_decoupling_equation_modal_coordinates} \underbrace{\bm{\Phi}^{\intercal} \bm{M} \bm{\Phi}}_{\bm{M}_m} \bm{\ddot{\mathcal{X}}}_m(t) + \underbrace{\bm{\Phi}^{\intercal} \bm{C} \bm{\Phi}}_{\bm{C}_m} \bm{\dot{\mathcal{X}}}_m(t) + \underbrace{\bm{\Phi}^{\intercal} \bm{K} \bm{\Phi}}_{\bm{K}_m} \bm{\mathcal{X}}_m(t) = \underbrace{\bm{\Phi}^{\intercal} \bm{J}^{\intercal} \bm{\tau}(t)}_{\bm{\tau}_m(t)} \end{equation} +The inherent mathematical structure of the mass, damping, and stiffness matrices [[cite:&lang17_under, chapt. 8]] ensures that modal matrices are diagonal [[cite:&preumont18_vibrat_contr_activ_struc_fourt_edition, chapt. 2.3]]. +This diagonalization transforms equation eqref:eq:detail_control_decoupling_equation_modal_coordinates into a set of $n$ decoupled equations, enabling independent control of each mode without cross-interaction. -- $\bm{\tau}_m$ is the modal input -- $\bm{M}_m$, $\bm{C}_m$ and $\bm{K}_m$ are the modal mass, damping and stiffness matrices - -Orthogonality of normal modes gives that the "the modal -vectors uncouple the equations of motion making each dynamic equation independent of all the others" [[cite:&lang17_under]]. -The modal matrices are diagonal. - -In order to implement such modal decoupling from the decentralized plant, architecture shown in Figure ref:fig:detail_control_decoupling_modal can be used. -The dynamics from modal inputs $\bm{\tau}_m$ to modal amplitudes $\bm{\mathcal{X}}_m$ is fully decoupled. +To implement this approach from a decentralized plant, the architecture shown in Figure ref:fig:detail_control_decoupling_modal is employed. +Inputs of the decoupling plant are the modal modal inputs $\bm{\tau}_m$ and the outputs are the modal amplitudes $\bm{\mathcal{X}}_m$. +This implementation requires knowledge of the system's equations of motion, from which the mode shapes matrix $\bm{\Phi}$ is derived. +The resulting decoupled system features diagonal elements each representing second-order resonant systems that are straightforward to control individually. #+begin_src latex :file detail_control_decoupling_modal.pdf \begin{tikzpicture} @@ -2850,67 +2830,37 @@ The dynamics from modal inputs $\bm{\tau}_m$ to modal amplitudes $\bm{\mathcal{X #+RESULTS: [[file:figs/detail_control_decoupling_modal.png]] -Modal decoupling requires to have the equations of motion of the system. -From the equations of motion (and more precisely the mass and stiffness matrices), the mode shapes $\Phi$ are computed. +**** Example :ignore: -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. +Modal decoupling was then applied to the test model. +First, the eigenvectors $\bm{\Phi}$ of $\bm{M}_{\{M\}}^{-1}\bm{K}_{\{M\}}$ were computed eqref:eq:detail_control_decoupling_modal_eigenvectors. +While analytical derivation of eigenvectors could be obtained for such a simple system, they are typically computed numerically for practical applications. -Using this decoupling strategy, it is possible to control each mode individually. - -- [ ] Do we need to measure all the states? - I think so -- [ ] Say that the eigen vectors are unitary - Are they orthogonal? -- [ ] Say that the obtained plant are second order systems - -**** Example - -From the mass matrix $\bm{M}_{\{M\}}$ and stiffness matrix $\bm{K}_{\{M\}}$ expressed at the center of mass, the eigenvectors of $\bm{M}_{\{M\}}^{-1}\bm{K}_{\{M\}}$ are computed. - -\begin{equation} - \bm{M}_{\{M\}} = \begin{bmatrix} - m & 0 & 0 \\ - 0 & m & 0 \\ - 0 & 0 & I - \end{bmatrix}, \quad - \bm{K}_{\{M\}} = \begin{bmatrix} - k & 0 & 0 \\ - 0 & k & 0 \\ - 0 & 0 & k - \end{bmatrix} +\begin{equation}\label{eq:detail_control_decoupling_modal_eigenvectors} + \bm{\Phi} = \begin{bmatrix} + \frac{I - h_a^2 m - 2 l_a^2 m - \alpha}{2 h_a m} & 0 & \frac{I - h_a^2 m - 2 l_a^2 m + \alpha}{2 h_a m} \\ + 0 & 1 & 0 \\ + 1 & 0 & 1 + \end{bmatrix},\ \alpha = \sqrt{\left( I + m (h_a^2 - 2 l_a^2) \right)^2 + 8 m^2 h_a^2 l_a^2} \end{equation} -Obtained +The numerical values for the eigenvector matrix and its inverse are shown in eqref:eq:detail_control_decoupling_modal_eigenvectors_matrices. -\begin{equation} -\bm{\Phi} = \begin{bmatrix} -\frac{I - h_a^2 m - 2 l_a^2 m - \alpha}{2 h_a m} & 0 & \frac{I - h_a^2 m - 2 l_a^2 m + \alpha}{2 h_a m} \\ -0 & 1 & 0 \\ -1 & 0 & 1 -\end{bmatrix},\ \alpha = \sqrt{\left( I + m (h_a^2 - 2 l_a^2) \right)^2 + 8 m^2 h_a^2 l_a^2} -\end{equation} - -It may be very difficult to obtain eigenvectors analytically, so typically these can be computed numerically. - -For the present test system, obtained eigen vectors are - -Eigenvectors are arranged for increasing eigenvalues (i.e. resonance frequencies). - -\begin{equation} - \bm{\phi} = \begin{bmatrix} +\begin{equation}\label{eq:detail_control_decoupling_modal_eigenvectors_matrices} + \bm{\Phi} = \begin{bmatrix} -0.905 & 0 & -0.058 \\ 0 & 1 & 0 \\ 0.424 & 0 & -0.998 \end{bmatrix}, \quad - \bm{\phi}^{-1} = \begin{bmatrix} + \bm{\Phi}^{-1} = \begin{bmatrix} -1.075 & 0 & 0.063 \\ 0 & 1 & 0 \\ -0.457 & 0 & -0.975 \end{bmatrix} \end{equation} -- [ ] Formula for the plant transfer function +The two computed matrices were implemented in the control architecture of Figure ref:fig:detail_control_decoupling_modal, resulting in three distinct second order plants as depicted in Figure ref:fig:detail_control_decoupling_modal_plant. +Each of these diagonal elements corresponds to a specific mode, as shown in Figure ref:fig:detail_control_decoupling_model_test_modal, resulting in a perfectly decoupled system. #+begin_src matlab %% Modal decoupling @@ -2944,7 +2894,7 @@ exportFig('figs/detail_control_decoupling_modal_plant.pdf', 'width', 'half', 'he #+end_src #+name: fig:detail_control_decoupling_modal_plant_modes -#+caption: Plant using modal decoupling consists of second order plants (\subref{fig:detail_control_decoupling_modal_plant}) which can be used to control separately different modes (\subref{fig:detail_control_decoupling_model_test_modal}) +#+caption: Plant using modal decoupling consists of second order plants (\subref{fig:detail_control_decoupling_modal_plant}) which can be used to invidiually address different modes illustrated in (\subref{fig:detail_control_decoupling_model_test_modal}) #+attr_latex: :options [htbp] #+begin_figure #+attr_latex: :caption \subcaption{\label{fig:detail_control_decoupling_modal_plant}Decoupled plant in modal space} @@ -2965,47 +2915,31 @@ exportFig('figs/detail_control_decoupling_modal_plant.pdf', 'width', 'half', 'he <> **** Singular Value Decomposition -Singular Value Decomposition (SVD) -- Introduction to SVD [[cite:&brunton22_data, chapt. 1]] -- Singular value is used a lot for multivariable control [[cite:&skogestad07_multiv_feedb_contr]]. - Used to study directions in multivariable systems. +Singular Value Decomposition (SVD) represents a powerful mathematical tool with extensive applications in data analysis [[cite:&brunton22_data, chapt. 1]] and multivariable control systems [[cite:&skogestad07_multiv_feedb_contr]], where it is particularly valuable for analyzing directional properties in multivariable systems. -# Should I consider only real matrices? - -The SVD is a unique matrix decomposition that exists for every complex matrix $\bm{X} \in \mathbb{C}^{n \times m}$. +The SVD constitutes a unique matrix decomposition applicable to any complex matrix $\bm{X} \in \mathbb{C}^{n \times m}$, expressed as: \begin{equation}\label{eq:detail_control_svd} \bm{X} = \bm{U} \bm{\Sigma} \bm{V}^H \end{equation} -where $\bm{U} \in \mathbb{C}^{n \times n}$ and $\bm{V} \in \mathbb{C}^{m \times m}$ are unitary matrices with orthonormal columns, and $\bm{\Sigma} \in \mathbb{R}^{n \times n}$ is a diagonal matrix with real, non-negative entries on the diagonal. - -If the matrix $\bm{X}$ is a real matrix, the obtained $\bm{U}$ and $\bm{V}$ matrices are real and can be used for decoupling purposes. - -The idea to use Singular Value Decomposition as a way to decouple a plant is not new -- [ ] Quick review of SVD controllers - [[cite:&skogestad07_multiv_feedb_contr, chapt. 3.5.4]] +where $\bm{U} \in \mathbb{C}^{n \times n}$ and $\bm{V} \in \mathbb{C}^{m \times m}$ are unitary matrices with orthonormal columns, and $\bm{\Sigma} \in \mathbb{R}^{n \times n}$ is a diagonal matrix with real, non-negative entries. +For real matrices $\bm{X}$, the resulting $\bm{U}$ and $\bm{V}$ matrices are also real, making them suitable for decoupling applications. **** Decoupling using the SVD -*Procedure*: -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 $\bm{G}(\omega_i)$. +The procedure for SVD-based decoupling begins with identifying the system dynamics from inputs to outputs, typically represented as a Frequency Response Function (FRF), which yields a complex matrix $\bm{G}(\omega_i)$ for multiple frequency points $\omega_i$. +A specific frequency is then selected for optimal decoupling, with the targeted crossover frequency $\omega_c$ often serving as an appropriate choice. +Since real matrices are required for the decoupling transformation, a real approximation of the complex measured response at the selected frequency must be computed. +In this work, the method proposed in [[cite:&kouvaritakis79_theor_pract_charac_locus_desig_method]] was used as it preserves maximal orthogonality in the directional properties of the input complex matrix. -Choose a frequency where we want to decouple the system (usually, the crossover frequency $\omega_c$ is a good choice) +Following this approximation, a real matrix $\tilde{\bm{G}}(\omega_c)$ is obtained, and SVD is performed on this matrix. +The resulting (real) unitary matrices $\bm{U}$ and $\bm{V}$ are structured such that $\bm{V}^{-\intercal} \tilde{\bm{G}}(\omega_c) \bm{U}^{-1}$ forms a diagonal matrix. +These singular input and output matrices are then applied to decouple the system as illustrated in Figure ref:fig:detail_control_decoupling_svd, and the decoupled plant is described by eqref:eq:detail_control_decoupling_plant_svd. -As /real/ V and U matrices need to be obtained, a real approximation of the complex measured response needs to be computed. -Compute a real approximation of the system's response at that frequency. -[[cite:&kouvaritakis79_theor_pract_charac_locus_desig_method]]: real matrix that preserves the most orthogonality in directions with the input complex matrix - -Then, a real matrix $\tilde{\bm{G}}(\omega_c)$ is obtained, and the SVD is performed on this real matrix. -Unitary $\bm{U}$ and $\bm{V}$ matrices are then obtained such that $\bm{V}^{-\intercal} \tilde{\bm{G}}(\omega_c) \bm{U}^{-1}$ is diagonal. - -Use the singular input and output matrices to decouple the system as shown in Figure ref:fig:detail_control_decoupling_svd - -\begin{equation} - G_{\text{SVD}}(s) = \bm{U}^{-1} \bm{G}_{\{\mathcal{L}\}}(s) \bm{V}^{-\intercal} +\begin{equation}\label{eq:detail_control_decoupling_plant_svd} + \bm{G}_{\text{SVD}}(s) = \bm{U}^{-1} \bm{G}_{\{\mathcal{L}\}}(s) \bm{V}^{-\intercal} \end{equation} #+begin_src latex :file detail_control_decoupling_svd.pdf @@ -3032,30 +2966,25 @@ Use the singular input and output matrices to decouple the system as shown in Fi #+RESULTS: [[file:figs/detail_control_decoupling_svd.png]] -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. - -- [ ] Do we loose any physical meaning of the obtained inputs and outputs? -- [ ] Can we take advantage of the fact that U and V are unitary? +Implementation of SVD decoupling requires access to the system's FRF, at least in the vicinity of the desired decoupling frequency. +This information can be obtained either experimentally or derived from a model. +While this approach ensures effective decoupling near the chosen frequency, it provides no guarantees regarding decoupling performance away from this frequency. +Furthermore, the quality of decoupling depends significantly on the accuracy of the real approximation, potentially limiting its effectiveness for plants with high damping. **** Example +Plant decoupling using the Singular Value Decomposition was then applied on the test model. +A decoupling frequency of $\SI{100}{Hz}$ was used. +The plant response at that frequency, as well as its real approximation and the obtained $\bm{U}$ and $\bm{V}$ matrices are shown in eqref:eq:detail_control_decoupling_svd_example. -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_svd_example} \begin{align} - & \bm{G}_{\{\mathcal{L}\}}(\omega_c) = 10^{-9} \begin{bmatrix} + & \bm{G}_{\{\mathcal{L}\}}(\omega_c = 2\pi \cdot 100) = 10^{-9} \begin{bmatrix} -99 - j 2.6 & 74 + j 4.2 & -74 - j 4.2 \\ 74 + j 4.2 & -247 - j 9.7 & 102 + j 7.0 \\ -74 - j 4.2 & 102 + j 7.0 & -247 - j 9.7 \end{bmatrix} \\ - & \xrightarrow[\text{approximation}]{\text{real}} \tilde{\bm{G}}_{\{\mathcal{L}\}(\omega_c)} = 10^{-9} \begin{bmatrix} + & \xrightarrow[\text{approximation}]{\text{real}} \tilde{\bm{G}}_{\{\mathcal{L}\}}(\omega_c) = 10^{-9} \begin{bmatrix} -99 & 74 & -74 \\ 74 & -247 & 102 \\ -74 & 102 & -247 @@ -3072,14 +3001,9 @@ The inputs and outputs are ordered from higher gain to lower gain at the chosen \end{align} \end{equation} -Once the $\bm{U}$ and $\bm{V}$ matrices are obtained, the decoupled plant can be computed using eqref:eq:detail_control_decoupling_plant_svd. - -\begin{equation}\label{eq:detail_control_decoupling_plant_svd} - \bm{G}_{\text{SVD}}(s) = \bm{U}^{-1} \bm{G}_{\{\mathcal{L}\}}(s) \bm{V}^{-\intercal} -\end{equation} - -The obtained plant shown in Figure ref:fig:detail_control_decoupling_svd_plant is very well decoupled. and not only around $\omega_c$. -On top of that, the diagonal terms are second order plants. +Using these $\bm{U}$ and $\bm{V}$ matrices, the decoupled plant is computed according to equation eqref:eq:detail_control_decoupling_plant_svd. +The resulting plant, depicted in Figure ref:fig:detail_control_decoupling_svd_plant, exhibits remarkable decoupling across a broad frequency range, extending well beyond the vicinity of $\omega_c$. +Additionally, the diagonal terms manifest as second-order dynamic systems, facilitating straightforward controller design. #+begin_src matlab %% SVD Decoupling @@ -3124,30 +3048,14 @@ exportFig('figs/detail_control_decoupling_svd_plant.pdf', 'width', 'wide', 'heig #+end_src #+name: fig:detail_control_decoupling_svd_plant -#+caption: Svd plant $G_m(s)$ +#+caption: Plant dynamics $\bm{G}_{\text{SVD}}(s)$ obtained after decoupling using Singular Value Decomposition #+RESULTS: [[file:figs/detail_control_decoupling_svd_plant.png]] - - -- [ ] Do we have something special when applying SVD to a collocated MIMO system? - As shown in Figure ref:fig:detail_control_decoupling_coupled_plant_bode, the plant is symmetrical. - Paper by Skogestad mention that. - "symmetric circular plants" [[cite:&hovd97_svd_contr_contr]] - - - - -A second system, identical to the first in terms of dynamics. -Just the sensor are changed. -Instead of having relative motion sensors in the frame of the struts, three relative motion sensors are used as shown in Figure ref:fig:detail_control_decoupling_model_test_alt. -Using Jacobian matrices, it is possible to compute the relative motion of each struts. -So theoretically, it should be possible to control both systems the same way. - -However, when applying the same SVD decoupling, plant of Figure ref:fig:detail_control_decoupling_svd_alt_plant is obtained. -It has much more coupling. -It is interesting to note that the coupling have local minimum near the chosen decoupling frequency. -This is very logical as the decoupling matrices were computed from the plant response at that particular frequency. +As it was surprising to obtain such a good decoupling at all frequencies, a variant system with identical dynamics but different sensor configurations was examined. +Instead of using relative motion sensors aligned with the struts, three relative motion sensors were positioned as shown in Figure ref:fig:detail_control_decoupling_model_test_alt. +Although Jacobian matrices could theoretically map between these different sensor arrangements, application of the same SVD decoupling procedure yielded the plant response shown in Figure ref:fig:detail_control_decoupling_svd_alt_plant, which exhibits significantly greater coupling. +Notably, the coupling demonstrates local minima near the decoupling frequency, consistent with the fact that the decoupling matrices were derived specifically for that frequency point. #+begin_src matlab %% Simscape model with relative motion sensor at alternative positions @@ -3229,44 +3137,34 @@ exportFig('figs/detail_control_decoupling_svd_alt_plant.pdf', 'width', 'half', ' #+end_subfigure #+end_figure +The exceptional performance of SVD decoupling on the plant with collocated sensors warrants further investigation. +This effectiveness may be attributed to the symmetrical properties of the plant, as evidenced in the Bode plots of the decentralized plant shown in Figure ref:fig:detail_control_decoupling_coupled_plant_bode. +The phenomenon potentially relates to previous research on SVD controllers applied to systems with specific symmetrical characteristics [[cite:&hovd97_svd_contr_contr]]. + ** Comparison of decoupling strategies <> -The three proposed methods may seem very similar as each of them consists of pre-multiplying and post-multiplying the plant with constant matrices. -However, the three methods also differs by a number of points which are summarized in Table ref:tab:detail_control_decoupling_strategies_comp. +While the three proposed decoupling methods may appear similar in their mathematical implementation (each involving pre-multiplication and post-multiplication of the plant with constant matrices), they differ significantly in their underlying approaches and practical implications, as summarized in Table ref:tab:detail_control_decoupling_strategies_comp. -However, each method is quite different in terms of approach, and have different pros and cons. +Each method employs a distinct conceptual framework: Jacobian decoupling is "topology-driven", relying on the geometric configuration of the system; modal decoupling is "physics-driven", based on the system's dynamical equations; and SVD decoupling is "data-driven", utilizing measured frequency response functions. -- Comparison of the three proposed methods -- Different "approach" for the three methods: - - Jacobian is based on geometry - - Modal decoupling is based on dynamical equations - - Singular Value Decoupling is based on measured frequency response function -- Depending on the decoupling method, the physical interpretation of inputs and outputs: - - With Jacobian decoupling, the inputs and outputs can be easily interpreted physically. - Inputs correspond to force/torques applied on a particular frames - Outputs corresponds to translation and rotations expressed on a particular frame - - With modal decoupling, inputs are arranged to excite individual modes. - By doing a modal analysis (using a FEA for instance) it can be understood how actuator forces are combined to individually excite the different modes. - Similarly, the outputs are combined to measure the different modes separately. - - For singular value decomposition, inputs (resp. outputs) are special directions that are ordered from maximum to minimum controllability (resp. observability), at the chosen frequency. - For plants such as parallel manipulators, it is difficult to have a physical interpretations of the decoupled plants inputs and outputs. - - [ ] It is really linked to controllability? (add reference about that) -- Decoupling quality: - - Jacobian: depending on the choice of frame, the plant may be well decoupled at low frequency (Center of Stiffness) or at high frequency (Center of Mass). - If the system is designed to have both the CoK and the CoM at the same point, the use of Jacobian matrices may lead to excellent decoupling. - - Modal: good decoupling is obtained for all frequencies. - However, this is based on a model of the plant, and differences between the model and the physical implementation may lead to large off-diagonal elements. - Diagonal elements are expected to be simple 2nd order low pass filters, which are easy to control. - - SVD: as the decoupling matrices can be computed based on measured data, no model is required. - Decoupling is expected to be good near the frequency chosen for computing the decoupling matrices, but may depend on how good the real approximation of the plant is for that particular frequency. - Whether the decoupling quality can be guaranteed away from the chosen frequency is unknown. +The physical interpretation of decoupled plant inputs and outputs varies considerably among these methods. +With Jacobian decoupling, inputs and outputs retain clear physical meaning, corresponding to forces/torques and translations/rotations in a specified reference frame. +Modal decoupling arranges inputs to excite individual modes, with outputs combined to measure these modes separately. +For SVD decoupling, inputs and outputs represent special directions ordered by decreasing controllability and observability at the chosen frequency, though physical interpretation becomes challenging for parallel manipulators. -- "Frame" of the controllers: important to be able to tuned the controllers linked to performance metrics +This difference in interpretation relates directly to the "control space" in which the controllers operate. +When these "control spaces" meaningfully relate to the control objectives, controllers can be tuned to directly match specific requirements. +For Jacobian decoupling, the controller typically operates in a frame positioned at the point where motion needs to be controlled, for instance where the light is focused in the NASS application. +Modal decoupling provides a natural framework when specific vibrational modes require targeted control. +SVD decoupling generally results in a loss of physical meaning for the "control space", potentially complicating the process of relating controller design to practical system requirements. -# Maybe not necessary -There are other aspects that were not treated here such as: -- how to integrate feedforward path and reference signals +The quality of decoupling achieved through these methods also exhibits distinct characteristics. +Jacobian decoupling performance depends on the chosen reference frame, with optimal decoupling at low frequencies when aligned at the center of stiffness, or at high frequencies when aligned with the center of mass. +Systems designed with coincident centers of mass and stiffness may achieve excellent decoupling using this approach. +Modal decoupling offers good decoupling across all frequencies, though its effectiveness relies on the accuracy of the system model, with discrepancies potentially resulting in significant off-diagonal elements. +The diagonal elements typically manifest as second-order low-pass filters, facilitating straightforward control design. +SVD decoupling can be implemented using measured data without requiring a model, with optimal performance near the chosen decoupling frequency, though its effectiveness may diminish at other frequencies and depends on the quality of the real approximation of the response at the selected frequency point. #+name: tab:detail_control_decoupling_strategies_comp #+caption: Comparison of decoupling strategies @@ -3302,11 +3200,6 @@ There are other aspects that were not treated here such as: | *Applicability* | Parallel Mechanisms | Systems whose dynamics that can be expressed with M and K matrices | Very general | | | Only small motion for the Jacobian matrix to stay constant | | Need FRF data (either experimentally or analytically) | -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 as the control is in a "frame" which corresponds to the specifications. - For active damping however, it may be reasonable to work in the modal space as different damping may be applied to different modes [[cite:&holterman05_activ_dampin_based_decoup_colloc_contr]]. - * Closed-Loop Shaping using Complementary Filters :PROPERTIES: :HEADER-ARGS:matlab+: :tangle matlab/detail_control_3_close_loop_shaping.m @@ -4541,5 +4434,5 @@ colors = colororder; #+END_SRC * Footnotes - +[fn:detail_control_2]$n$ corresponds to the number of degrees of freedom, here $n = 3$ [fn:detail_control_1]A set of two complementary filters are two transfer functions that sum to one. diff --git a/nass-control.pdf b/nass-control.pdf index b57e387..69502c5 100644 Binary files a/nass-control.pdf and b/nass-control.pdf differ diff --git a/nass-control.tex b/nass-control.tex index 514c44c..8cbf909 100644 --- a/nass-control.tex +++ b/nass-control.tex @@ -1,4 +1,4 @@ -% Created 2025-04-08 Tue 23:15 +% Created 2025-04-09 Wed 14:50 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} @@ -8,6 +8,13 @@ \author{Dehaeze Thomas} \date{\today} \title{Control Optimization} +\hypersetup{ + pdfauthor={Dehaeze Thomas}, + pdftitle={Control Optimization}, + pdfkeywords={}, + pdfsubject={}, + pdfcreator={Emacs 30.1 (Org mode 9.7.26)}, + pdflang={English}} \usepackage{biblatex} \begin{document} @@ -37,9 +44,9 @@ Several considerations: \chapter{Multiple Sensor Control} \label{sec:detail_control_sensor} -As was shown during the literature review of Stewart platforms, there is a large diversity of designs and included sensors and actuators. -Depending on the control objectives, which may include active damping, vibration isolation, or precise positioning, different sensor configurations are implemented. -The specific selection of the sensors, whether inertial sensors, force sensors, or relative position sensors, is heavily influenced by the control requirements of the system. +The literature review of Stewart platforms revealed a wide diversity of designs with various sensor and actuator configurations. +Control objectives (such as active damping, vibration isolation, or precise positioning) dictate specific sensor configurations. +The selection between inertial sensors, force sensors, or relative position sensors is primarily determined by the system's control requirements. In cases where multiple control objectives must be achieved simultaneously, as is the case for the Nano Active Stabilization System (NASS) where the Stewart platform must both position the sample and provide isolation from micro-station vibrations, combining multiple sensors within the control architecture has been demonstrated to yield significant performance benefits. From the literature, three principal approaches for combining sensors have been identified: High Authority Control-Low Authority Control (HAC-LAC), sensor fusion, and two-sensor control architectures. @@ -68,13 +75,13 @@ From the literature, three principal approaches for combining sensors have been \caption{\label{fig:detail_control_control_multiple_sensors}Different control strategies when using multiple sensors. High Authority Control / Low Authority Control (\subref{fig:detail_control_sensor_arch_hac_lac}). Sensor Fusion (\subref{fig:detail_control_sensor_arch_sensor_fusion}). Two-Sensor Control (\subref{fig:detail_control_sensor_arch_two_sensor_control})} \end{figure} -The HAC-LAC approach, used during the conceptual phase, represents a dual-loop control strategy where two control loops utilize different sensors for different purposes (Figure \ref{fig:detail_control_sensor_arch_hac_lac}). +The HAC-LAC approach, implemented during the conceptual phase, employs a dual-loop control strategy in which two control loops utilize different sensors for distinct purposes (Figure \ref{fig:detail_control_sensor_arch_hac_lac}). In \cite{li01_simul_vibrat_isolat_point_contr}, vibration isolation is provided by accelerometers collocated with the voice coil actuators, while external rotational sensors are utilized to achieve pointing control. In \cite{geng95_intel_contr_system_multip_degree}, force sensors collocated with the magnetostrictive actuators are used for active damping using decentralized IFF, and subsequently accelerometers are employed for adaptive vibration isolation. Similarly, in \cite{wang16_inves_activ_vibrat_isolat_stewar}, piezoelectric actuators with collocated force sensors are used in a decentralized manner to provide active damping while accelerometers are implemented in an adaptive feedback loop to suppress periodic vibrations. In \cite{xie17_model_contr_hybrid_passiv_activ}, force sensors are integrated in the struts for decentralized force feedback while accelerometers fixed to the top platform are employed for centralized control. -Sensor fusion, the second approach (illustrated in Figure \ref{fig:detail_control_sensor_arch_sensor_fusion}), involves filtering signals from two sensors using complementary filters\footnote{A set of two complementary filters are two transfer functions that sum to one.} that are subsequently summed to obtain an improved sensor signal. +The second approach, sensor fusion (illustrated in Figure \ref{fig:detail_control_sensor_arch_sensor_fusion}), involves filtering signals from two sensors using complementary filters\footnote{A set of two complementary filters are two transfer functions that sum to one.} and summing them to create an improved sensor signal. In \cite{hauge04_sensor_contr_space_based_six}, geophones (used at low frequency) are merged with force sensors (used at high frequency). It is demonstrated that combining both sensors using sensor fusion can improve performance compared to using the individual sensors independently. In \cite{tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip}, sensor fusion architecture is implemented with an accelerometer and a force sensor. @@ -103,6 +110,11 @@ The investigation is then extended beyond the conventional two-sensor scenario, \section{Review of Sensor Fusion} \label{ssec:detail_control_sensor_review} +Sensors used to measure physical quantities have two primary limitations: measurement accuracy which is compromised by various noise sources (including electrical noise from conditioning electronics), and limited measurement bandwidth. +Sensor fusion offers a solution to these limitations by combining multiple sensors \cite{bendat57_optim_filter_indep_measur_two}. +By strategically selecting sensors with complementary characteristics, a ``super sensor'' can be created that combines the advantages of each individual sensor. + + Measuring a physical quantity using sensors is always subject to several limitations. First, the accuracy of the measurement is affected by various noise sources, such as electrical noise from the conditioning electronics. Second, the frequency range in which the measurement is relevant is bounded by the bandwidth of the sensor. @@ -165,7 +177,7 @@ The complementary property of filters \(H_1(s)\) and \(H_2(s)\) requires that th \begin{equation}\label{eq:detail_control_sensor_comp_filter} H_1(s) + H_2(s) = 1 \end{equation} -\paragraph{Sensor Models and Sensor Normalization} +\subsubsection{Sensor Models and Sensor Normalization} To analyze sensor fusion architectures, appropriate sensor models are required. The model shown in Figure \ref{fig:detail_control_sensor_model} consists of a linear time invariant (LTI) system \(G_i(s)\) representing the sensor dynamics and an input \(n_i\) representing sensor noise. @@ -207,7 +219,7 @@ The super sensor output \(\hat{x}\) is therefore described by \eqref{eq:detail_c \includegraphics[scale=1]{figs/detail_control_sensor_fusion_super_sensor.png} \caption{\label{fig:detail_control_sensor_fusion_super_sensor}Sensor fusion architecture with two normalized sensors.} \end{figure} -\paragraph{Noise Sensor Filtering} +\subsubsection{Noise Sensor Filtering} First, consider the case where all sensors are perfectly normalized \eqref{eq:detail_control_sensor_perfect_dynamics}. The effects of imperfect normalization will be addressed subsequently. @@ -243,7 +255,7 @@ This represents the simplest form of sensor fusion using complementary filters. However, sensors typically exhibit high noise levels in different frequency regions. In such cases, to reduce the noise of the super sensor, the norm \(|H_1(j\omega)|\) should be minimized when \(\Phi_{n_1}(\omega)\) exceeds \(\Phi_{n_2}(\omega)\), and the norm \(|H_2(j\omega)|\) should be minimized when \(\Phi_{n_2}(\omega)\) exceeds \(\Phi_{n_1}(\omega)\). Therefore, by appropriately shaping the norm of the complementary filters, the noise of the super sensor can be minimized. -\paragraph{Sensor Fusion Robustness} +\subsubsection{Sensor Fusion Robustness} In practical systems, sensor normalization is rarely perfect, and condition \eqref{eq:detail_control_sensor_perfect_dynamics} is not fully satisfied. @@ -302,16 +314,15 @@ The super sensor dynamical uncertainty, and consequently the robustness of the f As it is generally desired to limit the dynamical uncertainty of the super sensor, the norm of the complementary filter \(|H_i(j\omega)|\) should be made small when \(|w_i(j\omega)|\) is large, i.e., at frequencies where the sensor dynamics is uncertain. \section{Complementary Filters Shaping} \label{ssec:detail_control_sensor_hinf_method} -As demonstrated in Section \ref{ssec:detail_control_sensor_fusion_requirements}, both the noise characteristics and robustness of the super sensor are functions of the complementary filters' norm. -Consequently, a synthesis method that enables precise shaping of complementary filter norms would provide significant practical benefits. -In this section, such a synthesis approach is developed by formulating the design objective as a standard \(\mathcal{H}_\infty\) optimization problem. -The proper design of weighting functions, which are used to specify the desired complementary filter shapes during synthesis, is discussed in detail. -Finally, the efficacy of the proposed synthesis method is validated through a simple example. -\paragraph{Synthesis Objective} +As established in Section \ref{ssec:detail_control_sensor_fusion_requirements}, the super sensor's noise characteristics and robustness are directly dependent on the complementary filters' norm. +A synthesis method enabling precise shaping of these norms would therefore offer substantial practical benefits. +This section develops such an approach by formulating the design objective as a standard \(\mathcal{H}_\infty\) optimization problem. +The methodology for designing appropriate weighting functions (which specify desired complementary filter shapes during synthesis) is examined in detail, and the efficacy of the proposed method is validated with a simple example. +\subsubsection{Synthesis Objective} The primary objective is to shape the norms of two filters \(H_1(s)\) and \(H_2(s)\) while ensuring they maintain their complementary property as defined in \eqref{eq:detail_control_sensor_comp_filter}. This is equivalent to finding proper and stable transfer functions \(H_1(s)\) and \(H_2(s)\) that satisfy conditions \eqref{eq:detail_control_sensor_hinf_cond_complementarity}, \eqref{eq:detail_control_sensor_hinf_cond_h1}, and \eqref{eq:detail_control_sensor_hinf_cond_h2}. -The functions \(W_1(s)\) and \(W_2(s)\) represent weighting transfer functions that are carefully selected to specify the maximum desired norm of the complementary filters during synthesis. +Weighting transfer functions \(W_1(s)\) and \(W_2(s)\) are strategically selected to define the maximum desired norm of the complementary filters during the synthesis process. \begin{subequations}\label{eq:detail_control_sensor_comp_filter_problem_form} \begin{align} @@ -320,7 +331,7 @@ The functions \(W_1(s)\) and \(W_2(s)\) represent weighting transfer functions t & |H_2(j\omega)| \le \frac{1}{|W_2(j\omega)|} \quad \forall\omega \label{eq:detail_control_sensor_hinf_cond_h2} \end{align} \end{subequations} -\paragraph{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis} +\subsubsection{Shaping of Complementary Filters using \(\mathcal{H}_\infty\) synthesis} The synthesis objective can be readily expressed as a standard \(\mathcal{H}_\infty\) optimization problem and solved using widely available computational tools. Consider the generalized plant \(P(s)\) illustrated in Figure \ref{fig:detail_control_sensor_h_infinity_robust_fusion_plant} and mathematically described by \eqref{eq:detail_control_sensor_generalized_plant}. @@ -365,7 +376,7 @@ Therefore, applying \(\mathcal{H}_\infty\) synthesis to the standard plant \(P(s It should be noted that there exists only an implication (not an equivalence) between the \(\mathcal{H}_\infty\) norm condition in \eqref{eq:detail_control_sensor_hinf_problem} and the initial synthesis objectives in \eqref{eq:detail_control_sensor_hinf_cond_h1} and \eqref{eq:detail_control_sensor_hinf_cond_h2}. Consequently, the optimization may be somewhat conservative with respect to the set of filters on which it operates (see \cite[,Chap. 2.8.3]{skogestad07_multiv_feedb_contr}). -\paragraph{Weighting Functions Design} +\subsubsection{Weighting Functions Design} Weighting functions play a crucial role during synthesis by specifying the maximum allowable norms for the complementary filters. The proper design of these weighting functions is essential for the successful implementation of the proposed \(\mathcal{H}_\infty\) synthesis approach. @@ -396,7 +407,7 @@ The typical magnitude response of a weighting function generated using \eqref{eq }\right)^n \end{equation} \end{minipage} -\paragraph{Validation of the proposed synthesis method} +\subsubsection{Validation of the proposed synthesis method} The proposed methodology for designing complementary filters is now applied to a simple example. Consider the design of two complementary filters \(H_1(s)\) and \(H_2(s)\) with the following requirements: @@ -443,15 +454,15 @@ This straightforward example demonstrates that the proposed methodology for shap \section{Synthesis of a set of three complementary filters} \label{ssec:detail_control_sensor_hinf_three_comp_filters} -Some applications require merging more than two sensors \cite{stoten01_fusion_kinet_data_using_compos_filter,fonseca15_compl}. -For instance, at LIGO, three sensors (an LVDT, a seismometer, and a geophone) are merged to form a super sensor \cite{matichard15_seism_isolat_advan_ligo}. +Certain applications necessitate the fusion of more than two sensors \cite{stoten01_fusion_kinet_data_using_compos_filter,fonseca15_compl}. +At LIGO, for example, a super sensor is formed by merging three distinct sensors: an LVDT, a seismometer, and a geophone \cite{matichard15_seism_isolat_advan_ligo}. -When merging \(n>2\) sensors using complementary filters, two architectures can be employed as shown in Figure \ref{fig:detail_control_sensor_fusion_three}. -The fusion can be performed either in a ``sequential'' manner where \(n-1\) sets of two complementary filters are used (Figure \ref{fig:detail_control_sensor_fusion_three_sequential}), or in a ``parallel'' manner where one set of \(n\) complementary filters is used (Figure \ref{fig:detail_control_sensor_fusion_three_parallel}). +For merging \(n>2\) sensors with complementary filters, two architectural approaches are possible, as illustrated in Figure \ref{fig:detail_control_sensor_fusion_three}. +Fusion can be implemented either ``sequentially,'' utilizing \(n-1\) sets of two complementary filters (Figure \ref{fig:detail_control_sensor_fusion_three_sequential}), or ``in parallel,'' employing a single set of \(n\) complementary filters (Figure \ref{fig:detail_control_sensor_fusion_three_parallel}). -In the sequential approach, typical sensor fusion synthesis techniques can be applied. -However, when a parallel architecture is implemented, a new synthesis method for a set of more than two complementary filters is required, as only simple analytical formulas have been proposed in the literature \cite{stoten01_fusion_kinet_data_using_compos_filter,fonseca15_compl}. -A generalization of the proposed complementary filter synthesis method is presented in this section. +While conventional sensor fusion synthesis techniques can be applied to the sequential approach, parallel architecture implementation requires a novel synthesis method for multiple complementary filters. +Previous literature has offered only simple analytical formulas for this purpose \cite{stoten01_fusion_kinet_data_using_compos_filter,fonseca15_compl}. +This section presents a generalization of the proposed complementary filter synthesis method to address this gap. \begin{figure}[htbp] \begin{subfigure}{0.58\textwidth} @@ -554,107 +565,75 @@ Looking forward, it would be interesting to investigate how sensor fusion (parti \chapter{Decoupling} \label{sec:detail_control_decoupling} -When dealing with MIMO systems, a typical strategy is to: -\begin{itemize} -\item First decouple the plant dynamics (discussed in this section) -\item Apply SISO control for the decoupled plant (discussed in section \ref{sec:detail_control_cf}) -\end{itemize} +The control of parallel manipulators (and any MIMO system in general) typically involves a two-step approach: first decoupling the plant dynamics using various strategies, which will be discussed in this section, followed by the application of SISO control for the decoupled plant (discussed in section \ref{sec:detail_control_cf}). -Another strategy would be to apply a multivariable control synthesis to the coupled system. -Strangely, while H-infinity synthesis is a mature technology, it use for the control of Stewart platform is not yet demonstrated. -From \cite{thayer02_six_axis_vibrat_isolat_system}: -\begin{quote} -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} +When sensors are integrated within the struts, decentralized control may be applied, as the system is already well decoupled at low frequency. +For instance, \cite{furutani04_nanom_cuttin_machin_using_stewar} implemented a system where each strut consists of piezoelectric stack actuators and eddy current displacement sensors, with separate PI controllers for each strut. +A similar control architecture was proposed in \cite{du14_piezo_actuat_high_precis_flexib} using strain gauge sensors integrated in each strut. -\begin{itemize} -\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} +An alternative strategy involves decoupling the system in the Cartesian frame using Jacobian matrices. +As demonstrated during the study of Stewart platform kinematics, Jacobian matrices can be utilized to map actuator forces to forces and torques applied on the top platform. +This approach enables the implementation of controllers in a defined frame. +It has been applied with various sensor types including force sensors \cite{mcinroy00_desig_contr_flexur_joint_hexap}, relative displacement sensors \cite{kim00_robus_track_contr_desig_dof_paral_manip}, and inertial sensors \cite{li01_simul_vibrat_isolat_point_contr,abbas14_vibrat_stewar_platf}. +The Cartesian frame in which the system is decoupled is typically chosen at the point of interest (i.e., where the motion is of interest) or at the center of mass. -\begin{table}[htbp] -\caption{\label{tab:detail_control_decoupling_review}Litterature review about decoupling strategy for Stewart platform control} -\centering -\scriptsize -\begin{tabularx}{0.9\linewidth}{Xccc} -\toprule -\textbf{Actuators} & \textbf{Sensors} & \textbf{Control} & \textbf{Reference}\\ -\midrule -APA & Eddy current displacement & \textbf{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}\\ -\midrule -Voice Coil & Force & \textbf{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}\\ -\midrule -Voice Coil & Geophone + Eddy Current (Struts, collocated) & Decentralized (Sky Hook) + Centralized (\textbf{modal}) Control & \cite{pu11_six_degree_of_freed_activ}\\ -Piezoelectric & Force, Position & Vibration isolation, Model-Based, \textbf{Modal control}: 6x PI controllers & \cite{yang19_dynam_model_decoup_contr_flexib}\\ -\midrule -PZT & Geophone (struts) & \textbf{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}\\ -\bottomrule -\end{tabularx} -\end{table} +Modal control represents another noteworthy decoupling strategy, wherein the ``local'' plant inputs and outputs are mapped to the modal space. +In this approach, multiple SISO plants, each corresponding to a single mode, can be controlled independently. +This decoupling strategy has been implemented for active damping applications \cite{holterman05_activ_dampin_based_decoup_colloc_contr}, which is logical as it is often desirable to dampen specific modes. +The strategy has also been employed in \cite{pu11_six_degree_of_freed_activ} for vibration isolation purposes using geophones, and in \cite{yang19_dynam_model_decoup_contr_flexib} using force sensors. +Another completely different strategy, is to use implement a multivariable control directly on the coupled system. +\(\mathcal{H}_\infty\) and \(\mu\text{-synthesis}\) were applied to a Stewart platform model in \cite{lei08_multi_objec_robus_activ_vibrat}. +In \cite{xie17_model_contr_hybrid_passiv_activ}, decentralized force feedback was first applied, followed by \(\mathcal{H}_2\) synthesis for vibration isolation based on accelerometers. +\(\mathcal{H}_\infty\) synthesis was also employed in \cite{jiao18_dynam_model_exper_analy_stewar} for active damping based on accelerometers. +\cite{thayer02_six_axis_vibrat_isolat_system} compared \(\mathcal{H}_\infty\) synthesis with decentralized control in the frame of the struts. +Their experimental closed-loop results indicated that the \(\mathcal{H}_\infty\) controller did not outperform the decentralized controller in the frame of the struts. +These limitations were attributed to the model's poor ability to predict off-diagonal dynamics, which is crucial for \(\mathcal{H}_\infty\) synthesis. -The goal of this section is to compare the use of several methods for the decoupling of parallel manipulators. - -It is structured as follow: -\begin{itemize} -\item Section \ref{ssec:detail_control_decoupling_model}: the model used to compare/test decoupling strategies is presented -\item Section \ref{ssec:detail_control_decoupling_jacobian}: decoupling using Jacobian matrices is presented -\item Section \ref{ssec:detail_control_decoupling_modal}: modal decoupling is presented -\item Section \ref{ssec:detail_control_decoupling_svd}: SVD decoupling is presented -\item Section \ref{ssec:detail_control_decoupling_comp}: the three decoupling methods are applied on the test model and compared -\item Conclusions are drawn on the three decoupling methods -\end{itemize} +The purpose of this section is to compare several methods for the decoupling of parallel manipulators, an analysis that appears to be lacking in the literature. +The analysis begins in Section \ref{ssec:detail_control_decoupling_model} with the introduction of a simplified parallel manipulator model that serves as the foundation for evaluating various decoupling strategies. +Sections \ref{ssec:detail_control_decoupling_jacobian} through \ref{ssec:detail_control_decoupling_svd} systematically examine three distinct approaches: Jacobian matrix decoupling, modal decoupling, and Singular Value Decomposition (SVD) decoupling, respectively. +The comparative assessment of these three methodologies, along with concluding observations, is provided in Section \ref{ssec:detail_control_decoupling_comp}. \section{Test Model} \label{ssec:detail_control_decoupling_model} -\begin{itemize} -\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_decoupling_model_details} is used -\item Fully parallel manipulator: it has 3DoF, and has 3 parallels struts whose model is shown in Figure \ref{fig:detail_control_decoupling_strut_model} -As many DoF as actuators and sensors -\item It is quite similar to the Stewart platform (parallel architecture, as many struts as DoF) -\end{itemize} +Instead of utilizing the Stewart platform for comparing decoupling strategies, a simplified parallel manipulator is employed to facilitate a more straightforward analysis. +The system illustrated in Figure \ref{fig:detail_control_decoupling_model_test} is used for this purpose. +It possesses three degrees of freedom (DoF) and incorporates three parallel struts. +Being a fully parallel manipulator, it is therefore quite similar to the Stewart platform. -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} +Two reference frames are defined within this model: frame \(\{M\}\) with origin \(O_M\) at the center of mass of the solid body, and frame \(\{K\}\) with origin \(O_K\) at the center of stiffness of the parallel manipulator. -\begin{figure}[htbp] -\begin{subfigure}{0.58\textwidth} +\begin{minipage}[b]{0.60\linewidth} \begin{center} \includegraphics[scale=1,scale=1]{figs/detail_control_decoupling_model_test.png} +\captionof{figure}{\label{fig:detail_control_decoupling_model_test}Model used to compare decoupling strategies} \end{center} -\subcaption{\label{fig:detail_control_decoupling_model_test}Geometrical parameters} -\end{subfigure} -\begin{subfigure}{0.38\textwidth} -\begin{center} -\includegraphics[scale=1,scale=1]{figs/detail_control_decoupling_strut_model.png} -\end{center} -\subcaption{\label{fig:detail_control_decoupling_strut_model}Strut model} -\end{subfigure} -\caption{\label{fig:detail_control_decoupling_model_details}3DoF model used to study decoupling strategies} -\end{figure} +\end{minipage} +\hfill +\begin{minipage}[b]{0.36\linewidth} +\begin{scriptsize} +\centering +\begin{tabularx}{\linewidth}{cXc} +\toprule + & \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 \(R_z\) inertia & \(5\,\text{kg}m^2\)\\ +\bottomrule +\end{tabularx} +\captionof{table}{\label{tab:detail_control_decoupling_test_model_params}Model parameters} +\end{scriptsize} +\end{minipage} -First, the equation of motion are derived. -Expressing the second law of Newton on the suspended mass, expressed at its center of mass gives +The equations of motion are derived by applying Newton's second law to the suspended mass, expressed at its center of mass \eqref{eq:detail_control_decoupling_model_eom}, where \(\bm{\mathcal{X}}_{\{M\}}\) represents the two translations and one rotation with respect to the center of mass, and \(\bm{\mathcal{F}}_{\{M\}}\) denotes the forces and torque applied at the center of mass. -\begin{equation} - \bm{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} +\begin{equation}\label{eq:detail_control_decoupling_model_eom} + \bm{M}_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) = \sum \bm{\mathcal{F}}_{\{M\}}(t), \quad \bm{\mathcal{X}}_{\{M\}} = \begin{bmatrix} x \\ y \\ @@ -666,7 +645,7 @@ with \(\bm{\mathcal{X}}_{\{M\}}\) the two translation and one rotation expressed \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. +The Jacobian matrix \(\bm{J}_{\{M\}}\) is employed to map the spring, damping, and actuator forces to XY forces and Z torque expressed at the center of mass \eqref{eq:detail_control_decoupling_jacobian_CoM}. \begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM} \bm{J}_{\{M\}} = \begin{bmatrix} @@ -676,15 +655,15 @@ In order to map the spring, damping and actuator forces to XY forces and Z torqu \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. +Subsequently, the equation of motion relating the actuator forces \(\tau\) to the motion of the mass \(\bm{\mathcal{X}}_{\{M\}}\) is derived \eqref{eq:detail_control_decoupling_plant_cartesian}. \begin{equation}\label{eq:detail_control_decoupling_plant_cartesian} \bm{M}_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{J}_{\{M\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{M\}} \bm{\mathcal{X}}_{\{M\}}(t) = \bm{J}_{\{M\}}^{\intercal} \bm{\tau}(t) \end{equation} -Matrices representing the payload inertia as well as the actuator stiffness and damping are shown in +The matrices representing the payload inertia, actuator stiffness, and damping are shown in \eqref{eq:detail_control_decoupling_system_matrices}. -\begin{equation} +\begin{equation}\label{eq:detail_control_decoupling_system_matrices} \bm{M}_{\{M\}} = \begin{bmatrix} m & 0 & 0 \\ 0 & m & 0 \\ @@ -702,64 +681,39 @@ Matrices representing the payload inertia as well as the actuator stiffness and \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} +The parameters employed for the subsequent analysis are summarized in Table \ref{tab:detail_control_decoupling_test_model_params}, which includes values for geometric parameters (\(l_a\), \(h_a\)), mechanical properties (actuator stiffness \(k\) and damping \(c\)), and inertial characteristics (payload mass \(m\) and rotational inertia \(I\)). \section{Control in the frame of the struts} \label{ssec:detail_control_decoupling_decentralized} -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} +The dynamics in the frame of the struts are first examined. +The equation of motion relating actuator forces \(\bm{\mathcal{\tau}}\) to strut relative motion \(\bm{\mathcal{L}}\) is derived from equation \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\}}\) defined in \eqref{eq:detail_control_decoupling_jacobian_CoM}. +The obtained transfer function from \(\bm{\mathcal{\tau}}\) to \(\bm{\mathcal{L}}\) is shown in \eqref{eq:detail_control_decoupling_plant_decentralized}. \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\}}^{-\intercal} \bm{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}. +At low frequencies, the plant converges to a diagonal constant matrix whose diagonal elements are related to the actuator stiffnesses \eqref{eq:detail_control_decoupling_plant_decentralized_low_freq}. +At high frequencies, the plant converges to the mass matrix mapped in the frame of the struts, which is generally highly non-diagonal. \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_decoupling_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). +The magnitude of the coupled plant \(\bm{G}_{\mathcal{L}}\) is illustrated in Figure \ref{fig:detail_control_decoupling_coupled_plant_bode}. +This representation confirms that at low frequencies (below the first suspension mode), the plant is well decoupled. +Depending on the symmetry present in the system, certain diagonal elements may exhibit identical values, as demonstrated for struts 2 and 3 in this example. \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/detail_control_decoupling_coupled_plant_bode.png} -\caption{\label{fig:detail_control_decoupling_coupled_plant_bode}Magnitude of the coupled plant.} +\caption{\label{fig:detail_control_decoupling_coupled_plant_bode}Model dynamics from actuator forces to relative displacement sensor of each strut.} \end{figure} \section{Jacobian Decoupling} \label{ssec:detail_control_decoupling_jacobian} -\paragraph{Jacobian Matrix} +\subsubsection{Jacobian Matrix} -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}. +The Jacobian matrix serves a dual purpose in the decoupling process: it converts strut velocity \(\dot{\mathcal{L}}\) to payload velocity and angular velocity \(\dot{\bm{\mathcal{X}}}_{\{O\}}\), and it transforms actuator forces \(\bm{\tau}\) to forces/torque applied on the payload \(\bm{\mathcal{F}}_{\{O\}}\), as expressed in equation \eqref{eq:detail_control_decoupling_jacobian}. \begin{subequations}\label{eq:detail_control_decoupling_jacobian} \begin{align} @@ -768,10 +722,10 @@ As already explained, the Jacobian matrix can be used to both convert strut velo \end{align} \end{subequations} -The obtained plan (Figure \ref{fig:detail_control_jacobian_decoupling_arch}) has inputs and outputs that have physical meaning: +The resulting plant (Figure \ref{fig:detail_control_jacobian_decoupling_arch}) have inputs and outputs with clear physical interpretations: \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\}\) +\item \(\bm{\mathcal{F}}_{\{O\}}\) represents forces/torques applied on the payload at the origin of frame \(\{O\}\) +\item \(\bm{\mathcal{X}}_{\{O\}}\) represents translations/rotation of the payload expressed in frame \(\{O\}\) \end{itemize} \begin{figure}[htbp] @@ -780,17 +734,17 @@ The obtained plan (Figure \ref{fig:detail_control_jacobian_decoupling_arch}) has \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 transfer function from \(\bm{\mathcal{F}}_{\{O\}\) to \(\bm{\mathcal{X}}_{\{O\}}\), denoted \(\bm{G}_{\{O\}}(s)\) can be computed using \eqref{eq:detail_control_decoupling_plant_jacobian}. + \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\}}^{\intercal} \bm{J}_{\{M\}}^{-\intercal} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{O\}} s^2 + \bm{J}_{\{O\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{O\}} s + \bm{J}_{\{O\}}^{\intercal} \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} +The frame \(\{O\}\) can be selected according to specific requirements, but the decoupling properties are significantly influenced by this choice. +Two natural reference frames are particularly relevant: the center of mass and the center of stiffness. +\subsubsection{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}. +When the decoupling frame is located at the center of mass (frame \(\{M\}\) in Figure \ref{fig:detail_control_decoupling_model_test}), the Jacobian matrix and its inverse are expressed as in \eqref{eq:detail_control_decoupling_jacobian_CoM_inverse}. \begin{equation}\label{eq:detail_control_decoupling_jacobian_CoM_inverse} \bm{J}_{\{M\}} = \begin{bmatrix} @@ -804,17 +758,13 @@ The Jacobian matrix and its inverse are expressed in \eqref{eq:detail_control_de \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}. +Analytical formula of the plant \(\bm{G}_{\{M\}}(s)\) is derived \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\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{M\}} s + \bm{J}_{\{M\}}^{\intercal} \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}. +At high frequencies, the plant converges to 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} @@ -824,16 +774,13 @@ At high frequency, converges towards the inverse of the mass matrix, which is a \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. +Consequently, the plant exhibits effective decoupling at frequencies above the highest suspension mode as shown in Figure \ref{fig:detail_control_decoupling_jacobian_plant_CoM}. +This strategy is typically employed in systems with low-frequency suspension modes \cite{butler11_posit_contr_lithog_equip}, where the plant approximates 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_decoupling_model_test_CoM}. +The low-frequency coupling observed in this configuration has a clear physical interpretation. +When a static force is applied at the center of mass, the suspended mass rotates around the center of stiffness. +This rotation is due to torque induced by the stiffness of the first actuator (i.e. the one on the left side), which is not aligned with the force application point. +This phenomenon is illustrated in Figure \ref{fig:detail_control_decoupling_model_test_CoM}. \begin{figure}[htbp] \begin{subfigure}{0.48\textwidth} @@ -850,13 +797,11 @@ this is illustrated in Figure \ref{fig:detail_control_decoupling_model_test_CoM} \end{subfigure} \caption{\label{fig:detail_control_jacobian_decoupling_plant_CoM_results}Plant decoupled using the Jacobian matrix expresssed at the center of mass (\subref{fig:detail_control_decoupling_jacobian_plant_CoM}). The physical reason for low frequency coupling is illustrated in (\subref{fig:detail_control_decoupling_model_test_CoM}).} \end{figure} -\paragraph{Center Of Stiffness} +\subsubsection{Center Of Stiffness} -\begin{center} -\includegraphics[scale=1]{figs/detail_control_decoupling_control_jacobian_CoK.png} -\label{} -\end{center} -\begin{equation} +When the decoupling frame is located at the center of stiffness, the Jacobian matrix and its inverse are expressed as in \eqref{eq:detail_control_decoupling_jacobian_CoK_inverse}. + +\begin{equation}\label{eq:detail_control_decoupling_jacobian_CoK_inverse} \bm{J}_{\{K\}} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & -l_a \\ @@ -868,24 +813,28 @@ this is illustrated in Figure \ref{fig:detail_control_decoupling_model_test_CoM} \end{bmatrix} \end{equation} -Frame \(\{K\}\) is chosen such that \(\bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{K\}}\) is diagonal. -Typically, it can me made based on physical reasoning as is the case here. +The frame \(\{K\}\) was selected based on physical reasoning, positioned in line with the side strut and equidistant between the two vertical struts. +However, it could alternatively be determined through analytical methods to ensure that \(\bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{K\}}\) forms a diagonal matrix. +It should be noted that the existence of such a center of stiffness (i.e. a frame \(\{K\}\) for which \(\bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{K}} \bm{J}_{\{K\}}\) is diagonal) is not guaranteed for arbitrary systems. +This property is typically achievable only in systems exhibiting specific symmetrical characteristics, as is the case in the present example. + +The analytical expression for the plant in this configuration was then computed \ref{eq:detail_control_decoupling_plant_CoK}. \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\}}^{\intercal} \bm{J}_{\{M\}}^{-\intercal} \bm{M}_{\{M\}} \bm{J}_{\{M\}}^{-1} \bm{J}_{\{K\}} s^2 + \bm{J}_{\{K\}}^{\intercal} \bm{\mathcal{C}} \bm{J}_{\{K\}} s + \bm{J}_{\{K\}}^{\intercal} \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} +Figure \ref{fig:detail_control_decoupling_jacobian_plant_CoK_results} presents the dynamics of the plant when decoupled using the Jacobian matrix expressed at the center of stiffness. +The plant is well decoupled below the suspension mode with the lowest frequency \eqref{eq:detail_control_decoupling_plant_CoK_low_freq}, making it particularly suitable for systems with high stiffness. + +\begin{equation}\label{eq:detail_control_decoupling_plant_CoK_low_freq} \bm{G}_{\{K\}}(j\omega) \xrightarrow[\omega \to 0]{} \bm{J}_{\{K\}}^{-1} \bm{\mathcal{K}}^{-1} \bm{J}_{\{K\}}^{-\intercal} \end{equation} - -The physical reason for high frequency coupling is schematically shown in Figure \ref{fig:detail_control_decoupling_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. +The physical reason for high-frequency coupling is illustrated in Figure \ref{fig:detail_control_decoupling_model_test_CoK}. +When a high-frequency force is applied at a point not aligned with the center of mass, it induces rotation around the center of mass. +This phenomenon explains the coupling observed between different degrees of freedom at higher frequencies. \begin{figure}[htbp] \begin{subfigure}{0.48\textwidth} @@ -904,54 +853,32 @@ Therefore, it will induce some rotation around the center of mass. \end{figure} \section{Modal Decoupling} \label{ssec:detail_control_decoupling_modal} -\begin{itemize} -\item A mechanical system consists of several modes: -\begin{itemize} -\item Modal decomposition \cite{rankers98_machin} -\end{itemize} -\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} -\begin{itemize} -\item Mode superposition \cite[, chapt. 2]{preumont94_random_vibrat_spect_analy,preumont18_vibrat_contr_activ_struc_fourt_edition} -\end{itemize} -\item The idea is to control the system in the ``modal space'' -\cite{heertjes05_activ_vibrat_isolat_metrol_frames} -IFF in modal space \cite{holterman05_activ_dampin_based_decoup_colloc_contr} very interesting paper -\cite{pu11_six_degree_of_freed_activ} -\end{itemize} +Modal decoupling represents an approach based on the principle that a mechanical system's behavior can be understood as a combination of contributions from various modes \cite{rankers98_machin}. + +To convert the dynamics in the modal space, the equation of motion are first written with respect to the center of mass \eqref{eq:detail_control_decoupling_equation_motion_CoM}. \begin{equation}\label{eq:detail_control_decoupling_equation_motion_CoM} \bm{M}_{\{M\}} \ddot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{C}_{\{M\}} \dot{\bm{\mathcal{X}}}_{\{M\}}(t) + \bm{K}_{\{M\}} \bm{\mathcal{X}}_{\{M\}}(t) = \bm{J}_{\{M\}}^{\intercal} \bm{\tau}(t) \end{equation} -Let's make a change of variables: +For modal decoupling, a change of variables is introduced \eqref{eq:detail_control_decoupling_modal_coordinates} where \(\bm{\mathcal{X}}_{m}\) represents the modal amplitudes and \(\bm{\Phi}\) is a \(n \times n\)\footnote{\(n\) corresponds to the number of degrees of freedom, here \(n = 3\)} matrix whose columns correspond to the mode shapes of the system, computed from \(\bm{M}_{\{M\}}\) and \(\bm{K}_{\{M\}}\). + \begin{equation}\label{eq:detail_control_decoupling_modal_coordinates} \bm{\mathcal{X}}_{\{M\}} = \bm{\Phi} \bm{\mathcal{X}}_{m} \end{equation} -with: -\begin{itemize} -\item \(\bm{\mathcal{X}}_{m}\) the modal amplitudes -\item \(\bm{\Phi}\) a matrix whose columns are the modes shapes of the system which can be computed from \(\bm{M}_{\{M\}}\) and \(\bm{K}_{\{M\}}\). -\end{itemize} -By pre-multiplying the equation of motion \eqref{eq:detail_control_decoupling_equation_motion_CoM} by \(\bm{\Phi}^{\intercal}\) and using the change of variable \eqref{eq:detail_control_decoupling_modal_coordinates}, a new set of equation of motion are obtained +By pre-multiplying equation \eqref{eq:detail_control_decoupling_equation_motion_CoM} by \(\bm{\Phi}^{\intercal}\) and applying the change of variable \eqref{eq:detail_control_decoupling_modal_coordinates}, a new set of equations of motion is obtained \eqref{eq:detail_control_decoupling_equation_modal_coordinates} where \(\bm{\tau}_m\) represents the modal input, while \(\bm{M}_m\), \(\bm{C}_m\), and \(\bm{K}_m\) denote the modal mass, damping, and stiffness matrices respectively. \begin{equation}\label{eq:detail_control_decoupling_equation_modal_coordinates} \underbrace{\bm{\Phi}^{\intercal} \bm{M} \bm{\Phi}}_{\bm{M}_m} \bm{\ddot{\mathcal{X}}}_m(t) + \underbrace{\bm{\Phi}^{\intercal} \bm{C} \bm{\Phi}}_{\bm{C}_m} \bm{\dot{\mathcal{X}}}_m(t) + \underbrace{\bm{\Phi}^{\intercal} \bm{K} \bm{\Phi}}_{\bm{K}_m} \bm{\mathcal{X}}_m(t) = \underbrace{\bm{\Phi}^{\intercal} \bm{J}^{\intercal} \bm{\tau}(t)}_{\bm{\tau}_m(t)} \end{equation} +The inherent mathematical structure of the mass, damping, and stiffness matrices \cite[, chapt. 8]{lang17_under} ensures that modal matrices are diagonal \cite[, chapt. 2.3]{preumont18_vibrat_contr_activ_struc_fourt_edition}. +This diagonalization transforms equation \eqref{eq:detail_control_decoupling_equation_modal_coordinates} into a set of \(n\) decoupled equations, enabling independent control of each mode without cross-interaction. -\begin{itemize} -\item \(\bm{\tau}_m\) is the modal input -\item \(\bm{M}_m\), \(\bm{C}_m\) and \(\bm{K}_m\) are the modal mass, damping and stiffness matrices -\end{itemize} - -Orthogonality of normal modes gives that the ``the modal -vectors uncouple the equations of motion making each dynamic equation independent of all the others'' \cite{lang17_under}. -The modal matrices are diagonal. - -In order to implement such modal decoupling from the decentralized plant, architecture shown in Figure \ref{fig:detail_control_decoupling_modal} can be used. -The dynamics from modal inputs \(\bm{\tau}_m\) to modal amplitudes \(\bm{\mathcal{X}}_m\) is fully decoupled. +To implement this approach from a decentralized plant, the architecture shown in Figure \ref{fig:detail_control_decoupling_modal} is employed. +Inputs of the decoupling plant are the modal modal inputs \(\bm{\tau}_m\) and the outputs are the modal amplitudes \(\bm{\mathcal{X}}_m\). +This implementation requires knowledge of the system's equations of motion, from which the mode shapes matrix \(\bm{\Phi}\) is derived. +The resulting decoupled system features diagonal elements each representing second-order resonant systems that are straightforward to control individually. \begin{figure}[htbp] \centering @@ -959,70 +886,35 @@ The dynamics from modal inputs \(\bm{\tau}_m\) to modal amplitudes \(\bm{\mathca \caption{\label{fig:detail_control_decoupling_modal}Modal Decoupling Architecture} \end{figure} -Modal decoupling requires to have the equations of motion of the system. -From the equations of motion (and more precisely the mass and stiffness matrices), the mode shapes \(\Phi\) are computed. +Modal decoupling was then applied to the test model. +First, the eigenvectors \(\bm{\Phi}\) of \(\bm{M}_{\{M\}}^{-1}\bm{K}_{\{M\}}\) were computed \eqref{eq:detail_control_decoupling_modal_eigenvectors}. +While analytical derivation of eigenvectors could be obtained for such a simple system, they are typically computed numerically for practical applications. -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. - -\begin{itemize} -\item[{$\square$}] Do we need to measure all the states? -I think so -\item[{$\square$}] Say that the eigen vectors are unitary -Are they orthogonal? -\item[{$\square$}] Say that the obtained plant are second order systems -\end{itemize} -\paragraph{Example} - -From the mass matrix \(\bm{M}_{\{M\}}\) and stiffness matrix \(\bm{K}_{\{M\}}\) expressed at the center of mass, the eigenvectors of \(\bm{M}_{\{M\}}^{-1}\bm{K}_{\{M\}}\) are computed. - -\begin{equation} - \bm{M}_{\{M\}} = \begin{bmatrix} - m & 0 & 0 \\ - 0 & m & 0 \\ - 0 & 0 & I - \end{bmatrix}, \quad - \bm{K}_{\{M\}} = \begin{bmatrix} - k & 0 & 0 \\ - 0 & k & 0 \\ - 0 & 0 & k - \end{bmatrix} +\begin{equation}\label{eq:detail_control_decoupling_modal_eigenvectors} + \bm{\Phi} = \begin{bmatrix} + \frac{I - h_a^2 m - 2 l_a^2 m - \alpha}{2 h_a m} & 0 & \frac{I - h_a^2 m - 2 l_a^2 m + \alpha}{2 h_a m} \\ + 0 & 1 & 0 \\ + 1 & 0 & 1 + \end{bmatrix},\ \alpha = \sqrt{\left( I + m (h_a^2 - 2 l_a^2) \right)^2 + 8 m^2 h_a^2 l_a^2} \end{equation} -Obtained +The numerical values for the eigenvector matrix and its inverse are shown in \eqref{eq:detail_control_decoupling_modal_eigenvectors_matrices}. -\begin{equation} -\bm{\Phi} = \begin{bmatrix} -\frac{I - h_a^2 m - 2 l_a^2 m - \alpha}{2 h_a m} & 0 & \frac{I - h_a^2 m - 2 l_a^2 m + \alpha}{2 h_a m} \\ -0 & 1 & 0 \\ -1 & 0 & 1 -\end{bmatrix},\ \alpha = \sqrt{\left( I + m (h_a^2 - 2 l_a^2) \right)^2 + 8 m^2 h_a^2 l_a^2} -\end{equation} - -It may be very difficult to obtain eigenvectors analytically, so typically these can be computed numerically. - -For the present test system, obtained eigen vectors are - -Eigenvectors are arranged for increasing eigenvalues (i.e. resonance frequencies). - -\begin{equation} - \bm{\phi} = \begin{bmatrix} +\begin{equation}\label{eq:detail_control_decoupling_modal_eigenvectors_matrices} + \bm{\Phi} = \begin{bmatrix} -0.905 & 0 & -0.058 \\ 0 & 1 & 0 \\ 0.424 & 0 & -0.998 \end{bmatrix}, \quad - \bm{\phi}^{-1} = \begin{bmatrix} + \bm{\Phi}^{-1} = \begin{bmatrix} -1.075 & 0 & 0.063 \\ 0 & 1 & 0 \\ -0.457 & 0 & -0.975 \end{bmatrix} \end{equation} -\begin{itemize} -\item[{$\square$}] Formula for the plant transfer function -\end{itemize} +The two computed matrices were implemented in the control architecture of Figure \ref{fig:detail_control_decoupling_modal}, resulting in three distinct second order plants as depicted in Figure \ref{fig:detail_control_decoupling_modal_plant}. +Each of these diagonal elements corresponds to a specific mode, as shown in Figure \ref{fig:detail_control_decoupling_model_test_modal}, resulting in a perfectly decoupled system. \begin{figure}[htbp] \begin{subfigure}{0.48\textwidth} @@ -1037,54 +929,36 @@ Eigenvectors are arranged for increasing eigenvalues (i.e. resonance frequencies \end{center} \subcaption{\label{fig:detail_control_decoupling_model_test_modal}Individually controlled modes} \end{subfigure} -\caption{\label{fig:detail_control_decoupling_modal_plant_modes}Plant using modal decoupling consists of second order plants (\subref{fig:detail_control_decoupling_modal_plant}) which can be used to control separately different modes (\subref{fig:detail_control_decoupling_model_test_modal})} +\caption{\label{fig:detail_control_decoupling_modal_plant_modes}Plant using modal decoupling consists of second order plants (\subref{fig:detail_control_decoupling_modal_plant}) which can be used to invidiually address different modes illustrated in (\subref{fig:detail_control_decoupling_model_test_modal})} \end{figure} \section{SVD Decoupling} \label{ssec:detail_control_decoupling_svd} -\paragraph{Singular Value Decomposition} +\subsubsection{Singular Value Decomposition} -Singular Value Decomposition (SVD) -\begin{itemize} -\item Introduction to SVD \cite[, chapt. 1]{brunton22_data} -\item Singular value is used a lot for multivariable control \cite{skogestad07_multiv_feedb_contr}. -Used to study directions in multivariable systems. -\end{itemize} +Singular Value Decomposition (SVD) represents a powerful mathematical tool with extensive applications in data analysis \cite[, chapt. 1]{brunton22_data} and multivariable control systems \cite{skogestad07_multiv_feedb_contr}, where it is particularly valuable for analyzing directional properties in multivariable systems. -The SVD is a unique matrix decomposition that exists for every complex matrix \(\bm{X} \in \mathbb{C}^{n \times m}\). +The SVD constitutes a unique matrix decomposition applicable to any complex matrix \(\bm{X} \in \mathbb{C}^{n \times m}\), expressed as: \begin{equation}\label{eq:detail_control_svd} \bm{X} = \bm{U} \bm{\Sigma} \bm{V}^H \end{equation} -where \(\bm{U} \in \mathbb{C}^{n \times n}\) and \(\bm{V} \in \mathbb{C}^{m \times m}\) are unitary matrices with orthonormal columns, and \(\bm{\Sigma} \in \mathbb{R}^{n \times n}\) is a diagonal matrix with real, non-negative entries on the diagonal. +where \(\bm{U} \in \mathbb{C}^{n \times n}\) and \(\bm{V} \in \mathbb{C}^{m \times m}\) are unitary matrices with orthonormal columns, and \(\bm{\Sigma} \in \mathbb{R}^{n \times n}\) is a diagonal matrix with real, non-negative entries. +For real matrices \(\bm{X}\), the resulting \(\bm{U}\) and \(\bm{V}\) matrices are also real, making them suitable for decoupling applications. +\subsubsection{Decoupling using the SVD} -If the matrix \(\bm{X}\) is a real matrix, the obtained \(\bm{U}\) and \(\bm{V}\) matrices are real and can be used for decoupling purposes. +The procedure for SVD-based decoupling begins with identifying the system dynamics from inputs to outputs, typically represented as a Frequency Response Function (FRF), which yields a complex matrix \(\bm{G}(\omega_i)\) for multiple frequency points \(\omega_i\). +A specific frequency is then selected for optimal decoupling, with the targeted crossover frequency \(\omega_c\) often serving as an appropriate choice. -The idea to use Singular Value Decomposition as a way to decouple a plant is not new -\begin{itemize} -\item[{$\square$}] Quick review of SVD controllers -\cite[, chapt. 3.5.4]{skogestad07_multiv_feedb_contr} -\end{itemize} -\paragraph{Decoupling using the SVD} +Since real matrices are required for the decoupling transformation, a real approximation of the complex measured response at the selected frequency must be computed. +In this work, the method proposed in \cite{kouvaritakis79_theor_pract_charac_locus_desig_method} was used as it preserves maximal orthogonality in the directional properties of the input complex matrix. -\textbf{Procedure}: -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 \(\bm{G}(\omega_i)\). +Following this approximation, a real matrix \(\tilde{\bm{G}}(\omega_c)\) is obtained, and SVD is performed on this matrix. +The resulting (real) unitary matrices \(\bm{U}\) and \(\bm{V}\) are structured such that \(\bm{V}^{-\intercal} \tilde{\bm{G}}(\omega_c) \bm{U}^{-1}\) forms a diagonal matrix. +These singular input and output matrices are then applied to decouple the system as illustrated in Figure \ref{fig:detail_control_decoupling_svd}, and the decoupled plant is described by \eqref{eq:detail_control_decoupling_plant_svd}. - -Choose a frequency where we want to decouple the system (usually, the crossover frequency \(\omega_c\) is a good choice) - -As \emph{real} V and U matrices need to be obtained, a real approximation of the complex measured response needs to be computed. -Compute a real approximation of the system's response at that frequency. -\cite{kouvaritakis79_theor_pract_charac_locus_desig_method}: real matrix that preserves the most orthogonality in directions with the input complex matrix - -Then, a real matrix \(\tilde{\bm{G}}(\omega_c)\) is obtained, and the SVD is performed on this real matrix. -Unitary \(\bm{U}\) and \(\bm{V}\) matrices are then obtained such that \(\bm{V}^{-\intercal} \tilde{\bm{G}}(\omega_c) \bm{U}^{-1}\) is diagonal. - -Use the singular input and output matrices to decouple the system as shown in Figure \ref{fig:detail_control_decoupling_svd} - -\begin{equation} - G_{\text{SVD}}(s) = \bm{U}^{-1} \bm{G}_{\{\mathcal{L}\}}(s) \bm{V}^{-\intercal} +\begin{equation}\label{eq:detail_control_decoupling_plant_svd} + \bm{G}_{\text{SVD}}(s) = \bm{U}^{-1} \bm{G}_{\{\mathcal{L}\}}(s) \bm{V}^{-\intercal} \end{equation} \begin{figure}[htbp] @@ -1093,31 +967,24 @@ Use the singular input and output matrices to decouple the system as shown in Fi \caption{\label{fig:detail_control_decoupling_svd}Decoupled plant \(\bm{G}_{\text{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. +Implementation of SVD decoupling requires access to the system's FRF, at least in the vicinity of the desired decoupling frequency. +This information can be obtained either experimentally or derived from a model. +While this approach ensures effective decoupling near the chosen frequency, it provides no guarantees regarding decoupling performance away from this frequency. +Furthermore, the quality of decoupling depends significantly on the accuracy of the real approximation, potentially limiting its effectiveness for plants with high damping. +\subsubsection{Example} -This method ensure good decoupling near the chosen frequency, but no guaranteed decoupling away from this frequency. +Plant decoupling using the Singular Value Decomposition was then applied on the test model. +A decoupling frequency of \(\SI{100}{Hz}\) was used. +The plant response at that frequency, as well as its real approximation and the obtained \(\bm{U}\) and \(\bm{V}\) matrices are shown in \eqref{eq:detail_control_decoupling_svd_example}. -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{equation} +\begin{equation}\label{eq:detail_control_decoupling_svd_example} \begin{align} - & \bm{G}_{\{\mathcal{L}\}}(\omega_c) = 10^{-9} \begin{bmatrix} + & \bm{G}_{\{\mathcal{L}\}}(\omega_c = 2\pi \cdot 100) = 10^{-9} \begin{bmatrix} -99 - j 2.6 & 74 + j 4.2 & -74 - j 4.2 \\ 74 + j 4.2 & -247 - j 9.7 & 102 + j 7.0 \\ -74 - j 4.2 & 102 + j 7.0 & -247 - j 9.7 \end{bmatrix} \\ - & \xrightarrow[\text{approximation}]{\text{real}} \tilde{\bm{G}}_{\{\mathcal{L}\}(\omega_c)} = 10^{-9} \begin{bmatrix} + & \xrightarrow[\text{approximation}]{\text{real}} \tilde{\bm{G}}_{\{\mathcal{L}\}}(\omega_c) = 10^{-9} \begin{bmatrix} -99 & 74 & -74 \\ 74 & -247 & 102 \\ -74 & 102 & -247 @@ -1134,43 +1001,20 @@ The inputs and outputs are ordered from higher gain to lower gain at the chosen \end{align} \end{equation} -Once the \(\bm{U}\) and \(\bm{V}\) matrices are obtained, the decoupled plant can be computed using \eqref{eq:detail_control_decoupling_plant_svd}. - -\begin{equation}\label{eq:detail_control_decoupling_plant_svd} - \bm{G}_{\text{SVD}}(s) = \bm{U}^{-1} \bm{G}_{\{\mathcal{L}\}}(s) \bm{V}^{-\intercal} -\end{equation} - -The obtained plant shown in Figure \ref{fig:detail_control_decoupling_svd_plant} is very well decoupled. and not only around \(\omega_c\). -On top of that, the diagonal terms are second order plants. +Using these \(\bm{U}\) and \(\bm{V}\) matrices, the decoupled plant is computed according to equation \eqref{eq:detail_control_decoupling_plant_svd}. +The resulting plant, depicted in Figure \ref{fig:detail_control_decoupling_svd_plant}, exhibits remarkable decoupling across a broad frequency range, extending well beyond the vicinity of \(\omega_c\). +Additionally, the diagonal terms manifest as second-order dynamic systems, facilitating straightforward controller design. \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/detail_control_decoupling_svd_plant.png} -\caption{\label{fig:detail_control_decoupling_svd_plant}Svd plant \(G_m(s)\)} +\caption{\label{fig:detail_control_decoupling_svd_plant}Plant dynamics \(\bm{G}_{\text{SVD}}(s)\) obtained after decoupling using Singular Value Decomposition} \end{figure} - - -\begin{itemize} -\item[{$\square$}] Do we have something special when applying SVD to a collocated MIMO system? -As shown in Figure \ref{fig:detail_control_decoupling_coupled_plant_bode}, the plant is symmetrical. -Paper by Skogestad mention that. -``symmetric circular plants'' \cite{hovd97_svd_contr_contr} -\end{itemize} - - - - -A second system, identical to the first in terms of dynamics. -Just the sensor are changed. -Instead of having relative motion sensors in the frame of the struts, three relative motion sensors are used as shown in Figure \ref{fig:detail_control_decoupling_model_test_alt}. -Using Jacobian matrices, it is possible to compute the relative motion of each struts. -So theoretically, it should be possible to control both systems the same way. - -However, when applying the same SVD decoupling, plant of Figure \ref{fig:detail_control_decoupling_svd_alt_plant} is obtained. -It has much more coupling. -It is interesting to note that the coupling have local minimum near the chosen decoupling frequency. -This is very logical as the decoupling matrices were computed from the plant response at that particular frequency. +As it was surprising to obtain such a good decoupling at all frequencies, a variant system with identical dynamics but different sensor configurations was examined. +Instead of using relative motion sensors aligned with the struts, three relative motion sensors were positioned as shown in Figure \ref{fig:detail_control_decoupling_model_test_alt}. +Although Jacobian matrices could theoretically map between these different sensor arrangements, application of the same SVD decoupling procedure yielded the plant response shown in Figure \ref{fig:detail_control_decoupling_svd_alt_plant}, which exhibits significantly greater coupling. +Notably, the coupling demonstrates local minima near the decoupling frequency, consistent with the fact that the decoupling matrices were derived specifically for that frequency point. \begin{figure}[htbp] \begin{subfigure}{0.48\textwidth} @@ -1187,55 +1031,34 @@ This is very logical as the decoupling matrices were computed from the plant res \end{subfigure} \caption{\label{fig:detail_control_svd_decoupling_not_symmetrical}Application of SVD decoupling on a system schematically shown in (\subref{fig:detail_control_decoupling_model_test_alt}). The obtained decoupled plant is shown in (\subref{fig:detail_control_decoupling_svd_alt_plant}).} \end{figure} + +The exceptional performance of SVD decoupling on the plant with collocated sensors warrants further investigation. +This effectiveness may be attributed to the symmetrical properties of the plant, as evidenced in the Bode plots of the decentralized plant shown in Figure \ref{fig:detail_control_decoupling_coupled_plant_bode}. +The phenomenon potentially relates to previous research on SVD controllers applied to systems with specific symmetrical characteristics \cite{hovd97_svd_contr_contr}. \section{Comparison of decoupling strategies} \label{ssec:detail_control_decoupling_comp} -The three proposed methods may seem very similar as each of them consists of pre-multiplying and post-multiplying the plant with constant matrices. -However, the three methods also differs by a number of points which are summarized in Table \ref{tab:detail_control_decoupling_strategies_comp}. +While the three proposed decoupling methods may appear similar in their mathematical implementation (each involving pre-multiplication and post-multiplication of the plant with constant matrices), they differ significantly in their underlying approaches and practical implications, as summarized in Table \ref{tab:detail_control_decoupling_strategies_comp}. -However, each method is quite different in terms of approach, and have different pros and cons. +Each method employs a distinct conceptual framework: Jacobian decoupling is ``topology-driven'', relying on the geometric configuration of the system; modal decoupling is ``physics-driven'', based on the system's dynamical equations; and SVD decoupling is ``data-driven'', utilizing measured frequency response functions. -\begin{itemize} -\item Comparison of the three proposed methods -\item Different ``approach'' for the three methods: -\begin{itemize} -\item Jacobian is based on geometry -\item Modal decoupling is based on dynamical equations -\item Singular Value Decoupling is based on measured frequency response function -\end{itemize} -\item Depending on the decoupling method, the physical interpretation of inputs and outputs: -\begin{itemize} -\item With Jacobian decoupling, the inputs and outputs can be easily interpreted physically. -Inputs correspond to force/torques applied on a particular frames -Outputs corresponds to translation and rotations expressed on a particular frame -\item With modal decoupling, inputs are arranged to excite individual modes. -By doing a modal analysis (using a FEA for instance) it can be understood how actuator forces are combined to individually excite the different modes. -Similarly, the outputs are combined to measure the different modes separately. -\item For singular value decomposition, inputs (resp. outputs) are special directions that are ordered from maximum to minimum controllability (resp. observability), at the chosen frequency. -For plants such as parallel manipulators, it is difficult to have a physical interpretations of the decoupled plants inputs and outputs. -\begin{itemize} -\item[{$\square$}] It is really linked to controllability? (add reference about that) -\end{itemize} -\end{itemize} -\item Decoupling quality: -\begin{itemize} -\item Jacobian: depending on the choice of frame, the plant may be well decoupled at low frequency (Center of Stiffness) or at high frequency (Center of Mass). -If the system is designed to have both the CoK and the CoM at the same point, the use of Jacobian matrices may lead to excellent decoupling. -\item Modal: good decoupling is obtained for all frequencies. -However, this is based on a model of the plant, and differences between the model and the physical implementation may lead to large off-diagonal elements. -Diagonal elements are expected to be simple 2nd order low pass filters, which are easy to control. -\item SVD: as the decoupling matrices can be computed based on measured data, no model is required. -Decoupling is expected to be good near the frequency chosen for computing the decoupling matrices, but may depend on how good the real approximation of the plant is for that particular frequency. -Whether the decoupling quality can be guaranteed away from the chosen frequency is unknown. -\end{itemize} +The physical interpretation of decoupled plant inputs and outputs varies considerably among these methods. +With Jacobian decoupling, inputs and outputs retain clear physical meaning, corresponding to forces/torques and translations/rotations in a specified reference frame. +Modal decoupling arranges inputs to excite individual modes, with outputs combined to measure these modes separately. +For SVD decoupling, inputs and outputs represent special directions ordered by decreasing controllability and observability at the chosen frequency, though physical interpretation becomes challenging for parallel manipulators. -\item ``Frame'' of the controllers: important to be able to tuned the controllers linked to performance metrics -\end{itemize} +This difference in interpretation relates directly to the ``control space'' in which the controllers operate. +When these ``control spaces'' meaningfully relate to the control objectives, controllers can be tuned to directly match specific requirements. +For Jacobian decoupling, the controller typically operates in a frame positioned at the point where motion needs to be controlled, for instance where the light is focused in the NASS application. +Modal decoupling provides a natural framework when specific vibrational modes require targeted control. +SVD decoupling generally results in a loss of physical meaning for the ``control space'', potentially complicating the process of relating controller design to practical system requirements. -There are other aspects that were not treated here such as: -\begin{itemize} -\item how to integrate feedforward path and reference signals -\end{itemize} +The quality of decoupling achieved through these methods also exhibits distinct characteristics. +Jacobian decoupling performance depends on the chosen reference frame, with optimal decoupling at low frequencies when aligned at the center of stiffness, or at high frequencies when aligned with the center of mass. +Systems designed with coincident centers of mass and stiffness may achieve excellent decoupling using this approach. +Modal decoupling offers good decoupling across all frequencies, though its effectiveness relies on the accuracy of the system model, with discrepancies potentially resulting in significant off-diagonal elements. +The diagonal elements typically manifest as second-order low-pass filters, facilitating straightforward control design. +SVD decoupling can be implemented using measured data without requiring a model, with optimal performance near the chosen decoupling frequency, though its effectiveness may diminish at other frequencies and depends on the quality of the real approximation of the response at the selected frequency point. \begin{table}[htbp] \caption{\label{tab:detail_control_decoupling_strategies_comp}Comparison of decoupling strategies} @@ -1275,13 +1098,6 @@ There are other aspects that were not treated here such as: \bottomrule \end{tabularx} \end{table} - -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 as the control is in a ``frame'' which corresponds to the specifications. -For active damping however, it may be reasonable to work in the modal space as different damping may be applied to different modes \cite{holterman05_activ_dampin_based_decoup_colloc_contr}. -\end{itemize} \chapter{Closed-Loop Shaping using Complementary Filters} \label{sec:detail_control_cf} @@ -1342,7 +1158,7 @@ In this paper, we propose a new controller synthesis method \end{itemize} \section{Control Architecture} \label{ssec:detail_control_cf_control_arch} -\paragraph{Virtual Sensor Fusion} +\subsubsection{Virtual Sensor Fusion} Let's consider the control architecture represented in Figure \ref{fig:detail_control_cf_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(s) + H_H(s) = 1\)). The signals are the reference signal \(r\), the output perturbation \(d_y\), the measurement noise \(n\) and the control input \(u\). @@ -1385,7 +1201,7 @@ The dynamics of the system can be rewritten \eqref{eq:detail_control_cf_sf_cl_tf 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} \end{subequations} -\paragraph{Asymptotic behavior} +\subsubsection{Asymptotic behavior} Let's take the extreme case of very high values for \(k\). In that case \(K(s)\) converges to plant inverse multiply by the inverse of the high pass filter \eqref{eq:detail_control_cf_high_k}. @@ -1434,13 +1250,13 @@ The process of designing a controller \(K(s)\) in order to obtain the desired sh The equations \eqref{eq:detail_control_cf_cl_system_y} and \eqref{eq:detail_control_cf_cl_system_u} describing the dynamics of the studied feedback architecture are not written in terms of the controller \(K(s)\) but in terms of the complementary filters \(H_L(s)\) and \(H_H(s)\). The typical specifications are then translated into the desired shapes of the complementary filters. -\paragraph{Nominal Stability (NS)} +\subsubsection{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\)), the sensitivity transfer function is equal to the high pass filter: \(S(s) = H_H(s)\). 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). Therefore stable and minimum phase complementary filters need to be used. -\paragraph{Nominal Performance (NP)} +\subsubsection{Nominal Performance (NP)} Two performance weights \(w_H\) and \(w_L\) are here defined in such a way that performance specifications are satisfied is \eqref{eq:detail_control_cf_weights} is satisfied. \begin{subequations}\label{eq:detail_control_cf_weights} @@ -1472,7 +1288,7 @@ Classical stability margins (gain and phase margins) can also be linked to the m \end{itemize} Typically, having \(|S|_{\infty} \le 2\) guarantees a gain margin of at least \(2\) and a phase margin of at least \(\SI{29}{\degree}\). -\paragraph{Response time to change of reference signal} +\subsubsection{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_cf_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_cf_arch_class_prefilter}. @@ -1489,7 +1305,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. -\paragraph{Input usage} +\subsubsection{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|\). @@ -1497,7 +1313,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_cf_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. -\paragraph{Robust Stability (RS)} +\subsubsection{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 for the design of the controller. These differences can have various origins such as unmodelled dynamics or non-linearities. @@ -1539,7 +1355,7 @@ After some algebraic manipulations, robust stability is then guaranteed by havin \begin{equation}\label{eq:detail_control_cf_condition_robust_stability} \boxed{\text{RS} \Longleftrightarrow |w_I(j\omega) H_L(j\omega)| \le 1 \quad \forall \omega} \end{equation} -\paragraph{Robust Performance (RP)} +\subsubsection{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 \eqref{eq:detail_control_cf_robust_perf_S}. @@ -1624,7 +1440,7 @@ Such filters can also be implemented in the digital domain with analytical formu \end{figure} \section{Numerical Example} \label{ssec:detail_control_cf_simulations} -\paragraph{Procedure} +\subsubsection{Procedure} In order to apply this control technique, we propose the following procedure: \begin{enumerate} @@ -1636,7 +1452,7 @@ If the synthesis fails to give filters satisfying the upper bounds previously de For simple cases, analytical formulas of complementary filters given in Section \ref{ssec:detail_control_cf_analytical_complementary_filters} can be used. \item If \(K(s) = \left( G(s) H_H(s) \right)^{-1}\) is not proper, low pass filters should be added high a high corner frequency \end{enumerate} -\paragraph{Plant} +\subsubsection{Plant} \begin{itemize} \item To test this control architecture, a simple test model is used (Figure \ref{fig:detail_control_cf_test_model}). @@ -1679,7 +1495,7 @@ The nominal plant dynamics as well as the entire set of possible plants \(\Pi_i\ \end{subfigure} \caption{\label{fig:detail_control_cf_test_model_plant}Schematic of the test system (\subref{fig:detail_control_cf_test_model}). Bode plot of the transfer function \(G(s)\) from \(F\) to \(y\) and the associated uncertainty set (\subref{fig:detail_control_cf_bode_plot_mech_sys}).} \end{figure} -\paragraph{Requirements and choice of complementary filters} +\subsubsection{Requirements and choice of complementary filters} As explained in Section \ref{ssec:detail_control_cf_trans_perf}, nominal performance requirements can be expressed as upper bounds on the complementary filter shapes. \begin{itemize} @@ -1718,7 +1534,7 @@ While the \(\mathcal{H}_\infty\) synthesis of complementary filters could be use For this simple example, analytical formulas proposed to have +2 and -2 slopes \eqref{eq:detail_control_cf_2nd_order} were used. \(\alpha = 1\) and \(\omega_0 = 2\pi \cdot 20\) were used. -\paragraph{Controller analysis} +\subsubsection{Controller analysis} The controller to be implemented is \(K(s) = \tilde{G}^{-1}(s) H_H^{-1}(s)\), with \(\tilde{G}^{-1}(s)\) is the plant inverse which needs to be stable and proper. Therefore, some low pass filters are added at high frequency \eqref{eq:detail_control_cf_test_plant_inverse}. @@ -1733,7 +1549,7 @@ The obtained bode plot of the controller times the complementary high pass filte \item a notch is located at the plant resonance (inverse) \item a lead is added near the bandwidth around \(\SI{20}{Hz}\) \end{itemize} -\paragraph{Robustness and Performance analysis} +\subsubsection{Robustness and Performance analysis} The robust stability can be access on the Nyquist plot (Figure \ref{fig:detail_control_cf_nyquist_robustness}). Even when considering all the possible plants in the uncertainty set, the nyquist plot stays away from the unstable point, indicating good robustness.