diff --git a/figs/simscape_model_gershgorin_radii.eps b/figs/simscape_model_gershgorin_radii.eps index cb124dd..802d0e2 100644 Binary files a/figs/simscape_model_gershgorin_radii.eps and b/figs/simscape_model_gershgorin_radii.eps differ diff --git a/figs/simscape_model_gershgorin_radii.pdf b/figs/simscape_model_gershgorin_radii.pdf index f1cde5a..a63ee46 100644 Binary files a/figs/simscape_model_gershgorin_radii.pdf and b/figs/simscape_model_gershgorin_radii.pdf differ diff --git a/figs/simscape_model_gershgorin_radii.png b/figs/simscape_model_gershgorin_radii.png index cdf4939..4edaa33 100644 Binary files a/figs/simscape_model_gershgorin_radii.png and b/figs/simscape_model_gershgorin_radii.png differ diff --git a/figs/simscape_model_rga.pdf b/figs/simscape_model_rga.pdf new file mode 100644 index 0000000..a29c4c6 --- /dev/null +++ b/figs/simscape_model_rga.pdf @@ -0,0 +1,2441 @@ +%PDF-1.4 +% +1 0 obj +<< +/Producer (Apache FOP Version 2.4.0-SNAPSHOT: PDFDocumentGraphics2D) +/CreationDate (D:20201123172236+01'00') +>> +endobj +2 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +3 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +4 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +5 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +6 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +7 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +8 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +9 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +10 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +11 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +12 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +13 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +14 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +15 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +16 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +17 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +18 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +19 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +20 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +21 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +22 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +23 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +24 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +25 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +26 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +27 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +28 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +29 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +30 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +31 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +32 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +33 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +34 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +35 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +36 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +37 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +38 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +39 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +40 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +41 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +42 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +43 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +44 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +45 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +46 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +47 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +48 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +49 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +50 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +51 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +52 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +53 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +54 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +55 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +56 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +57 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +58 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +59 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +60 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +61 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +62 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +63 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +64 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +65 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +66 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +67 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +68 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +69 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +70 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +71 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +72 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +73 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +74 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +75 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +76 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +77 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +78 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +79 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +80 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +81 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +82 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +83 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +84 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +85 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +86 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +87 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +88 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +89 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +90 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +91 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +92 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +93 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +94 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +95 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +96 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +97 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +98 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +99 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +100 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +101 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +102 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +103 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +104 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +105 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +106 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +107 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +108 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +109 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +110 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +111 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +112 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +113 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +114 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +115 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +116 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +117 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +118 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +119 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +120 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +121 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +122 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +123 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +124 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +125 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +126 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +127 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +128 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +129 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +130 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +131 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +132 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +133 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +134 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +135 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +136 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +137 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +138 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +139 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +140 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +141 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +142 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +143 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +144 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +145 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +146 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +147 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +148 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +149 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +150 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +151 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +152 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +153 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +154 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +155 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +156 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +157 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +158 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +159 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +160 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +161 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +162 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +163 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +164 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +165 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +166 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +167 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +168 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +169 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +170 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +171 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +172 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +173 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +174 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +175 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +176 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +177 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +178 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +179 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +180 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +181 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +182 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +183 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +184 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +185 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +186 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +187 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +188 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +189 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +190 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +191 0 obj +<< +/Type /ExtGState +/CA 0.2 +>> +endobj +192 0 obj +<< /Length 193 0 R /Filter /FlateDecode >> +stream +x̽ˮ$˲6_~D ;#8@ +D~_fQywZ]9ۻ33f/ }{+;6m*Ru?lZ?zߦM?Bvx.eڴ~MuC1MG۔_)8DSIMGTaS{B)5L޷nϏVsOťa6m +z#zش~Mu0C?6yQ-?*|PG?`+y4뾆^0jz})sesz}-1y-3jz}1=R+=ԆQG?`yS(d0<涷}FG[oz}AO>bae0r=6Z?=5,c>^_S\B2~/G)֏~WኻZy|FXZ׷~F=a"1b˸; u|&M?"4dLj/42g7Vi3XaCiCflk7VeZU""UGZeVHp8|Ð1֏޵2]r.v?Z?zתo,̴ +N %ƬZ?zת}mw\ `5tӪwzV÷Cņ3Z>zת׽m +2k7m?zV-kV\#ӏ9}n{k{NFj]%j]g.F_ڴj]g|j]gyGZ=pXE޵{k{&`!M޵{k{1}]^op]'xJ] {C)!j]knVmkv& + l}p]-ⱒ֏޵{k{Xȋ:Z>zת1Gأw(u]lz}R޵{k;nkP#QѻG[4<B^X޵{k{(Q(u]AԱd9ؗO޵{+; B?kVv6wm޺ǂGZusM}=p]P޵{p޵{O鑃߰jr>6łGZuGCwmު^ke/X ɻ6}3ϮU='LD|άw-f?:L,,k7ģcɻ6}KH/k7}t|8/ ??xעrDs}æԒ_?z& b9ZaEN}M6U玻|M;6Su}_2$}@}®Sz=go^we76w%76g/P)>"~|X'\uuf.w|"?{;߽oZ>no>noZ>no>mZ>oϯۿ>noZ>noھ>oOƳ󛞳vN&h5|S5w:\>5'N3Kˇ9Y>l͉Yk ,gNO[sX>l͉uakN|+gO[9񾜙`>l͉LYkL/g[sx9|ؚ˙֜H]4/fgs9|ؚ˙<֜d2L#s&5'3̇9ǜd>l͉1!akNT1gO[sĜYc>l͉LakտE(ӿBy4a |XgV'WOQqub|8oY]\kʍcegwRԺK jOӆ3`1wB{jCpJRoW߷1?'ߙw0ԣ}~ŹXgEFǻ.P=Z!4/&9tHBFW ׬W^3k)nY5s vn׬z. 胏?z9f3,Z۟"cqw_K"Bj݀3OdƸ^3[wW7抭=BGPs7C~?|c$:\E[!s_^9'X ֤Ր{^ܖcImZV{~7͊I%>z7iY6C>6{n6C>={n6{>={͊wX qbƏ1bϙ2x秸_LSs ^)W9S+W{~#%{N=?{^)^7<ݞ{s$^1nW9++iW{~{ī=?D=nq?A=g՞b~%> /K7{~qLfLąx秸_LvSǯs9^)W9+3bϏqbϙx؍_LgS/s"2!FdB7C> (+W{~GL8y_LSɯs&K^)W9$_K7{~)y5889̅yؚ_993/O+֜Ws~S%jOq3bϙyX_4̛=g_LSL/W{~SݞϟIs~ zCOhp_wY痼yu~uvmpi3͌O|F`wg7Һ=>3nχotO|FBwgv=͞әfϧo|w{>|f~#ݻ3ݞPnχo$z7{>}f~#{gǫ=Og=>34nχoDw{>|f~#3!ݞH|FdgՐO?wC>|f~#93͞O |F`xg7»=>3>3ngo6s>}u:3Ux3g7bƻ9>31nχoO|Fxg7rŻ=>3|~f3d~3XgSVgWSgWi=U,"|u>yfo;w"O [a zjk.L'O_[XGmz8I7W|%2w~ &ݣ lwom63x3/W zW/= ֥ܟxg^,Л xDzp/3Wky뿲W/f;YV/o2k{뿼`1݇K ~#^MHR\#W3/ -\g'w\iW:̆,#UEjXb]n?fHꋧƐAClac t*7)C"^n=&?eY7ʎP{-KJ.=?eG2L{}C_?3 +i +_p6gST|ĒcI%"'$jtgBò\fos9 c|5 k4 wR{0X"=2,s1Cb#m X2K ;{!o9-ѐa%3y|L&Q[Ruy\ހ\ji#nGZ¸hÐP3;_>z.k?bflް|O.\xbq6;ײAR&z|0S0"n)x歲C1\*HxMɠZx5$9*X~=|\hr@,ar%HCTiaW$ Sr!dX9,5 >Ǒ^ܰ%Đ-Acuh.}ŏ*X\qÔPR/a2R jmmaUIy\qT sݕ ð؀]auy`bèpˈ!wa y`bmpfo%Ҕ# L k0.1LUeÔк(*->k9zʧ8La ÈK\`ὶa VbO ^#&a3 Ul3jWè Թ[ K7Zܢ/<{2sba +}/''%j(bζ-)&1ʚ!xBi'/ +0LWlqK; P&-sJ1Lu]dAUe_&At̚a.,nى VbGióϥ!d+dW sw*!0 5{Jv9Xkrpogw&:ѰQsW^>`y;' vlve]2k [0PdщZ.|o_sa֪ 5?Lʇݻ-:a;D FX6I/ﰧW1,O~>?ޥaY +`Ƙm1RK-Lcʘ>۪q@Al[U̸Fs}02 [X q؂R@`γ715:.a +f:@"ىPB`aIbS0-m0s;!m<0ocAak +7a &(lWLk)/<[8O"øWg,k+AL[D,& kaa +4k Ë*az$ +%iUL[aLKau< [p70,9xy؂]d4 *؆-W< ca ;o˜64@{N19{&8m(OR0I<7= +?f (T?B˰$@ ~NN|}vtc>ʷa r[}E1LiZxq,c X\-xhtn kxv= 1X(]9] +sm?ֱהzX +{je„|Ū_5{"a oWȄBl[5°%7U df5_33n؂zW":vjڰ%qe4bѪakͰt&Ę" b6 #i6D#ba} +XtuG!p9rc/ž`~Xֆ!?pjX"!AUVcJ7~˦K S +E5RhpvtoaH5 +28y%` H95:ObC}@ .CqI=݆1 O ,ujsX \b<4-6B  jpt6,ka,dJs1dkt얮SS)_ؾ53񆀲 K +7tC`ݰ}[ !@'sW#-XO.uk %aE>L 2˅S Un4.1[#WLa-WD N&-:!raukd!J5 m)--YCbfMs x0!ąsj{Eip>FlRDӋ:lI `9ba ƺjxb=SVÞooD)϶HFYpKv9A8C1M'efi9SxǪ\ČYհD/'y) r؂ +QVoz7 w7laW:FT !mA[p p"a ,O0йe^fJϹm`[䲧57`ø7`x)zl s&ZxV|1 >IXKb'B0Ç-nKس +Ɠ䔖XO$!xeӣpELc6S`GX1;Y4 +u/z{~NM^1;"V va +$D6c@+a`R@,7l=ah0`csG]0E)2 $mv=U+XU= Kt*C'a |- eƳF6ËĊ!9ab~؂=(j~p:;9QW`)+1:5a"]M)V$}큎+nw'C?3Df XpFxUp0 /TB +fa W+$0,a XZA3vfcھ"GIl0`Fx| K lق$| I̩u}b~l.^ڐeà>$ָT0F!1%WQ8t j7nB#-2h7m?gL@BM óBW PPhNA!/UU_ڰk43$fG㩕 ADZV51a:#53Of|r"g` +\+JF,[W.ёINc.f5#s^~'°!n;6S +'N_8~q++aǹVY- 1zKDN1hyyb#&,%݈5x\-7w9*{Q-V* +zS<['fKbVgX ڲ'$EaEFLIk5^,5s)h2%Xd:ĥ3Kbn'$bE6d;>)U%Vd)PU"@j #>mð8GDC]=0cbY8[~-H! o! cCMpG5e)%$ؔ38j0Gł99T?1IRzqe?xքaeQ H](=<N^kLxQfA'$ka!a20&D18c e=}>biuoR8,qŰレkIOP3C +c0d)W`"HpB p羜(VX~kD' +K#X%Pflr̓ģ!øU1aLTWM @ؤ /5l1rFGNbbG*kV CR9O*k:.-ңd)j1[ǮE[!'74,0l,CCܠ%<`x^Rf#YGLc꠳dlb:6I&gF +N k@؃ծ듢ZFTI~`tp1B30l%3 9#4a̟`1#av+ǑX +|Cr C@'Xac@BbjPRJm%1^阤OB8X5Y|1Jў +Nb,(.0Q3)*ǺÖD{(% ɬsï݁/afMASXKB2xRH6[-Xvћa -kQ-pufnZxuѫl]ah +wpr~ i&$x-bW_ +Zjl;)yaJPiD̳Q­0MUۃ71^ c7YFǯe}"xQNUXTӫX<f 8t Tʲg\W2'AB!ijaI༲&kr>q  ʑw}@rl7pr0oz9LsCܰ:sEvwk 엸uUr`a`uVð#+z9{_-/2GSrC,0Iva*-ag%'=\Yt}/M 2IQ%V(:0riT\e +K0p\mppE(&J#;ak-;1-_{kaLC{ˑ.B@,ҹV +DHQ A&1=S,gX0lG9 Y`Y(\4R1q,杽).u\苯JQtyFt'v/䐒ǒNz9ISi5pԽ(N̈r|2=Zy`S},=A)w(bNY1Ì <V[Kߔvy,5qJ% 圯&6# BY/2_{8  +vRI?G;+A)^0db*O,ׁ@VLCcØ&7< +#x%V́L :&^e;alb:02=eRg/!W¹ʐA_ `\uzٌ1voe֡JY1pp/`IE`,`!X^`XRx SQ>>ixo⎒ƫl/I1ϋn/&B u&L%lV,DaQKտk{̄Ƀ [ #.=%Td/ ̥@XFZf!a?xxL[H$!"){)odXfڒ 1Xyͽ ˏuÄnAt 0V=KB,ff @.A,|l ^5Cf6m~zB L2#.UX_%a򉑷3Nqm)1,a-rl˂#{31#.vjAS ٣1D0X叕דcLôFc}k`jNelT!),9NM=E6rKN[^Eݰ/2p<~ `jzaUݰl{_D kltc4ŠB_,$8B`w6bJ[c7GZ†LqbdQ +1{Y,b.x.,$-bZDX\d{s7LS3|.22S g7E9]]Vclbgp Fl=[ЉgSE ~{ KF8Pwbbk ^JПEVz) +;V~iüS~Z*s"F8ܰHǃګ »jY9 ā =ON % ѿ=j1;7K +}uck0@j0Zﺨ !KeI8:98NF?v2"#Vey9<,I#=da* <T_1!A?{m~̳ \ͺ$嬎)Z4[BdtӰP RdiXx̒]z,Ϭ12 !a#Jacjo3(r Qjb•4Ue3:#T3akfbIKi$m=XPx*[( +7dr[`BH؃ b9S/w-e'VI52Ƀǘ)hNi8YKSBΉO*=j8"u F=d[#+{ANĢ$s$0 |'%$ed"B Nqփ zӬ43\^^:ϖ/Hd tf,#dUFfa!%1P14N,5kIcE6-]CfzF c6^:ܣa 8\'?e5{ wYMƚt!. ^eh Vd^D=/ɇQ($L>=H<R(4"&!13+pb1!s_ &lgGdgX$4NQȽF{!.̍wb\g$7(%{\q,LtX2!GoK.LKaLnUj)yQSF&1~ ^[հr,bJ[)W>vɗAl:%̐yZ +$=Y8;1}%iZorjX&Wef<>ǩCe$R*3ă' a.8n/Ϋ31`ؤHBYňS~`Z89Уْ]D0I2p骬Yw7ꨓBO5$35  Fya$tof^ё/z.Ibn (f.|J,j=KQN7dzЯ0 JAz֜N$0sgq/ĉG iTfűgKu\N$l30k(`%yۇvI2K"c@`^Y/g_XOryvxg_.b!mOž4ϸU%ȇ>4,c<"U0t6;=N$ffk\IlXUn4T"-|$yKx5|PX&k!Lg+{㓃,U_``E-~#6Dej͂lø/y!FuZaa7Ne8;$> Il|]Vd摁AEpTW2DafɃT2 _+$Q-V$T˽&e1%0pQ*ƎXgiS) UjE& sR~Kb{gi +B؁D,` iE/:AƈqI/ T#1Hb"e3A䭳""cyq:+٨4 *te0W, +rsUµYy Ѱ$]+Eh`"#c ,xn6l c 29?j,la=`V0Hl4 j`\|U5L0z~^i+W0|H_ 7~U J Uz&aI!la3X ysa.M8L0g."r4Xʎ]9Lf՗Ǯ"&4it`إSȰ)&X6bcS5UmȃM0.c UM;L0>Sܥ06 TE:L0s(-a~~s'^( )X[&EO]:L1)Q%E:Lg]&X&&Xiz +)64Ŧp`J SpbOQU8L1La}zcpb~RnaEY}`S8L1xF= +s~ +)DpM60WjhM0¨tn=V0x"~Ml#`^Jj kƦXc;Y r|aI?u8v0HcvS ^Rj tq70ŒvbxCna. hJ)ôiSvM:LTlJ)J +M:LC) yz0rbܾE9L12_ B aOK)ȱ aQ#0VؤwaaD?4v`lЬ¦Xs,aMbؔ SL u a1I)]ؔ S,v6%Q60jn6#JcS1Lh4A`B.Ѫ&P1^b@`B~azFF~/ 9V02]h-!)eŧ\ DM.LyP)L߰F6u0l|)ǤZiiraa<$\b$hȅ '̕\BK-ra)鱫 TsQ S(EHl)S)$6{Jlja%c +pV0X )-M0&&&0pv`S,L0u}V0ŞU-L1eǮ&-ja5l T S,U;!stiaS-LNͱ)&~oQ N ja) V-ZboS 0T S E,L!'tNM0 ÛZbS~S ,Q)uojaljaI@X@&MAX)hi`XbSyg +ȱ:4iׯRati60wVIK^٢&X4cW >8]W0^ 30"^J֔  DiC +l(ؐ*&=60yHؔ #f1N4lʄ &]*^ʄIdUBc 9g5PQ0cO0`RC l + *OaS(XN4_HS&-08-&TQ^M'L:3 }&]ZUMp.\N4m4ejKȱ˄ `1Xe¤C5€L1wK˄"M&Xze2a1!4_e’mk #풙d[dˆy-MNXE%ERz_S'Yl #V"k&֌:a06ˆg%&FLYgtZˆ8RNX4zW0Bi@cn:aְ)F ߰)xTLu60B )ˤ 7hU +#u ++c(u +K̫%19fڤˆmBjuhK*WM0bnM_RjTNg #F(eٴa2Dc۴ˆ!@czM01?V0bXxصˆ~˜ VXҙ|,V1]ǹh%)Ѯc +#;KOE*4T1g4OMԔIk%!Cs +#2[ߴˆ5-ZaK:փaS+, )æV1m*&FDmT #V,ˆ1VX&؅\?6ˆ!g5"FobaI܅g6’_ nܺ%Q=;E,,duīXXbXvz`S+ V/͎;„$Խ0nkR`S/LH[„я酑8aS/LĐ*ʅEѪ M0z!3 za5ŹǮ&G:v0aA=v0eڮraIG +W[„b"-eæ\WqRFoe\XCpD]¸٘ZraI(PCL^7>Rb,zaLy>he^gJ-zayꅉ’hTrUÆ^0)e >zaIyaS/\|6"zatfnIM/LaE/n,k7mE/L\cnk&g%h zaBs,za ]1>M/,I;V_հƠF؆٢0 D[jɢ@{1)`JUU0q*IƖI,d0XF&&AY9v0& J=<^su hU #F=Gb6*O΢M1Lҥ?aJIM0ަĪiVoߛ`BĠaS0XbYnaȢ6l`DB$YXV0P:I0lqi&G}^8M6$ˇM0N!=)ClɌ &ua"m\a\Xұ qbJ[Òʶ=e0I OQ)ݳTW0&59õ ic-R  +Kּ +$ {8bW09ioaVAc 㒀7Ejdyma ;_4 +9fa4]wM0*ǣ*ƍ4cW Ӵ[ƑKѣ +ja81\Uôa.h,ram4UḪƭafy<ޛj9-ߛa$6wrIEafOÌM02ga 5խТFV}7E5,03*&* ٰ,l7o0J,%le ++ e k>nlX]5e(Y_Tè8ju*quS Rz6ŦlXE2qaDړ[.*r+7!L^!:pWb-+71$ۓec[}iǾQ/ܕO2ەP[nbLE_ eIlJM  KQ/$].ۄ(qs?+YD61܋y6*geoHܟۄX ׉+ʿ]ylĨ6󪮱4}~mMyv/4'[&;o7xð~YuQ ~[b0ޟ~[x HCnY鷉DDgZ*3x"ɂv9oChmB+w&`8oV}bd61^,vmT8o9W):¸QnľML [طڲoľ-qqrb& ?ƍ[I<[Im}uio TUSD$`wmP8o MD-Cveoiqlj2Ɖ艀[ַo  Jj;@lrVllpejb;`žf¿-aUo ̿-k` 9o .Ŀ-}xL -۲$k>oˎ5vm|I[6AseceճA @NN۲ULR-e l0lD3{ *Nۂyc:o #g6mq}οݖbxaSjnl~[2ɝ~[ENm27~[LmbfΝ~[W[qC9Z%>3psyvSJM;G+7KӒ}DMh:g +nLMZ{n BFqfX3TOR~soe󉃛ji=s&yU_X)LMH଻?p`0ܟYۨ:94vfhx,;p4[ p#(cJwtU=p[qC͜EnӫLÍvӫ9pk`hqC /qpLkJlo8)en]9 7[WBYpÙLz_XQ/WVG9ҕ* ';p{im4ܸpK< iᔐ wꖉf;7ր57<<| !歄A}"vqee0 w~s\ Sp#oS¿-MH|.n۳\~Eq.tJ +~? vONYЎ;l{|`@}&~zWm?J nȷkItC d!nTtýMA}F(獲Bm6?=z[$8a'me̽"ݕ{{_ jr ;Qo梕B 8v(jB͢A}f089nP2oOU+x vf ݙy;t7D해FH5fW؛ѾPo2b DNۮJqC3boB]\2o3Ey;m'm:<kx{΅+ӗo+ìa;:2o*may[GqǼZB+d.,5+6c}fޖBxTc#vFxCW_tü]C v35.ۖ?n2oW,Q0okqǼM 6֙nWmn;qoFRMt{+6omrr`'m PpoiWm/-Xo1Z5syǽ=طߑowC-Ͱ3db!ƛ;on57U3'~i 6egm LgLT7޸ہŰ3vWT|(nSP;mPDa'mq9 R;m'qE`șz[r]Tiۓ{[J.poK&xr0]A8nGC6 4{[+[m9nI ;3oua+Xã#Ɗ6s;o-!v<&1LWY7v%Fv&Jws!>wCx{wۈ&)x[;Cx{xwۣxO_g6&x*x縥ݞ|7ۦ\qCt4xϜapnG;$|7ە)1u_Rno(Yt+ؕr{ wJwRnk㼥ɮw|7~Cyr;rǸ=W1nh/2nG-;c.uǸ=/o/ ;1ni1nONmK#r{ø%;n)1uT_)ٰkTWm(0LxW/xCm`w۲vPs/ >39#vvzGIgؙt>'w#+F|&RΤ۬gXg_Ilj v60v&ݞr@7ԏ;m7DnHEͰ3鶉qnpsY"sUfaJ0Ĺ=Jn(Gѕqi0g) (#nJʷ͌1R_=}no@'m);m I ;m箥7t!۰ۖ հ3 7&bG|׍ʷWmLTCm) P쾡f۽=+6}2nێ|[:RbWm2lD ݶcOa'< +bsۖl؉n;m=cVƁmz F|%Vvl;iewtJzڦ,O<'RTڞ2Wا~ЕjhtQm3NDRmګmvfj{Pm[qG]PmYˠ>Qm[qqGX v|s7ĵ=[dpB5&lt).dۅa? MqCͦvǂɶkvm5ɧ}7&sm#ޗbk]ٖ}%ۆvf8Ay7'>ͨMJ@Ud snjȵ.fض3m S'6ZyΨÏzm-XE+Uj[K@m<ni۪dBھk&m8Xۿcfm[iXU4HXܳY> ]Qot&mcOLmBm;hFmZ6S{+6w|m$m[g]oچ;w܄S6$|ϴm4q,]]6Ӷm*Gmg6f4yʹWm 6ηwelzھ-Sfvϡ9I R4=K.ge`mXXv?am?]t~G뙵Pi.{=1/ϟ5kgk6JR?k邵݀fQ뚵Mxݚp| Ђ5kۋ(m,Y6Ϭm|X?+ֶ̬m9mڄrɾG#j|%jWPKw>"mD$m{K芴0Bg6[痨kGg}Y8Q;Xv@mljU +W$ mggC/X(#G*k2JYUX^&ԶE枌fVp?6pv'm[!jm3fdl2g2Lmfxٝ̇ۄٶ}0̰*fԻg2wgث$ G63.Qu63}u6 6}0ی.@Sf{8f۲6Omf?Ql3k8Hf)ۖ%#Bͬ$6d2kl3+1:e66o'iwʶeAyNfvއMͬ&63Q$ȶEmut]d/E6j'pw6^/(:=B@vl#{V 5,2$_ @  f: Ume"!d&6#u6{$2&6ۖ*͌R4e ;''fK!ی0ӟ mf흊]!ۖ$C٢ac9BG6뵪Panedfmױ f>!C[2BɅd6_Kl3KYl3EqCaLt`l3CYqȶef@epy{ͬݯfLȎcY'ƶ2,0錹f6bf # twvGl[C"b5:b[ٻou6S{(sĶ +pkFl3CYGl+3cfva?Cl+zS(mfc;}@̀mF=lufT^C'u÷`ʜ-9 mELض/ a[O@Vt\#E[ l37a[7'¶r.!uZ l+\$xLk+T8۞9<=QKQl3;:2YlOYlO/!lYl+{#_[735f'x;:a[o%¶2+BT @!O9Νm wa¶45{%r"l+͒zU3a[W5RpAT$l9 +֣•ʬݲu¶𾥔60n, mXY3b[ 4P:b[Km|K5!5aޝ6wxEĶ&a{geƶ&on֤535Y&4eI&%\c[S?YJmMjw_Gƶ&Û Kcaƶ&]<:c[Z" Zv> \E¶2E_zlkdweͬւ=5s0Sl3M_zl3?az{/򵙵߱Z|mfǵ_$񵙡WL׶lՉe g\.G6bp_8f7-:m0񵙵OP|p_ |mf?Qvo+|mfmv||mfFeC2].CxmF;5-{,ӵ, m/ ͬD^:^۲veͬc^2ҒN|mf( h$-;ڝW ۖM&aIG$l[?*azlym65Lf/ +{ ͬ ,Hm^&""c2 ;d۲E_,Eȶe:A Q3d2kswl3ù9A/ql[>P!Mٶ}Z$ȶel8WERbl3ڸjmY0Im˰v:d۲)#d۲d2iw62ԶS*B-CQ!(B-{j(m@rm.=uȶe[eNٶȡBmo[ւض,#b`[8Hm^No;bۢ/"-nDض'̑m m"ضQGl#RSWe@l[9.lz@l[ve m)Hmˬضضlg@l#{P^$I@l[ضXfĶem=j853-Xضm;nAuƶeCǓ޲ضW"ۖY?ۖlĉmYQt39צm˞ ۖ_&,=e۲cKYl[uW!ۈ8"B-#P!ۖBm͐mˎ>%mҮRbl#Cݻ߰mto~mYqQ#c۲S>DۖyoZ͌mz&c۲#ƥfƶe&Rضſs}l@,[͌m6du6΍mwmէmF`{{UKl[f>bP͐m6&mEP!ۖ*Ɵ m&:e꒿S-kY ʼnm܁{<-CymYbжe;;hϥ mIڶ FO6`)D@ۖ m`N`S+mέ#H#i6Td"m[v&bv m[yU$m#_BuҶeW'ҶedQ?؝Qۖ1X ꇹPۖݜFԶeRk˞iwֶe045  MGRͨmdh6W%qBm[^BqHڶR%&0-2Ycn@m[Yd8&gBm#Cj2qPۈ톰ڶzPȶWQۖv:Dm 苧;mف]wbm#{޾Xۖa˲Ff3uֶa Nx:-;T> wYmt wgm#k[0FҞ(򤳶-km*mC*<Κiۇ1@۶rlvm# {*mu1Om˶R|YhƄ>Tq0gXMp0,qۖխN[#nԨwwmmf9ᶑ\:pYܶh?_U'Q̹f62~.mLlrmd=垀^-69q۲}e̖;!ͶHф>Hmd z{b8U։X0#qm8DMp m-o@n#d@5#,t@n#k_D:r㙐Ȱ˾)1uYmQ{p^l\Ea[tY mHR֡ +ZJp㳪ݶ'oFrKAÎ;t6F-q\:t!t +MҘۇ) Hݶ1_K7R1Vuy&62,ۇlF,P/bUֱv.bQpEYn `gLm>]^lXȌ%qv$wnDOՌFCql>Cq< +mDr`m{T + emOSGmdم牺m +0߇;ub;N=JQ6Q +NHݶ :uYO}#u3@Pszvnܭ@tѯ>1ʅ,;JLmdS21nW֙Ȱa -pbnA+G-Lm~fD趭f- FrLn"#ۡ۶{zSn#3:ݶnv>Nuۖ*YnsݶJXnJjEm G> `wk4o̹ۈ0p<{ogƎF6`+Kw\r& w{1X`E@F֖ k۶)HFfmPI& +m,pZml,o v۶L@kSCY'oc_-2y{cU:y+Kmɶr۶@BOdo1-JE6a*@em{<):| ~]$6"rjmd%lf63E6!Nu{k:},iu:)ҷqrsCGo)F}S"D97}gk4D68:afof!6NSQнv@n"}8~YH8Fs8@-ӷ*Co[=B[,=lOm?(F7F7Je]ږU3܇6U(ۨƈ0Ԡ_KHھv'zBE7Jq +l'5Q 6RUZqv'p[ѯ <5w x_pˤV/F $dnKQP ܻ=6:w'NMntb|:{c{,'iwn; 6~v}$6z2a#~d4Lm4׽`L~J:zd|6'A"yNVgA"o18#y؝+"y}pcGu>o +>Aev׶Ň.@F~'3nL޶rZENƕ~ۨAFUĘm+ҥd"on2eU"o.$.R"o[$ NmH҈޶;@NrwUGط@F"Byp=|#x۪rVpCmТ>EaQYn[˃灻G( +G6mxuyniKPݶx #N߶lC]YokAr Y푿}gvx=psCK-#v6vrnP^nO n\/m}Bp%xMn\Ŗgm[j۴Fmqs):g3ք-o".J$pc({ەtr2 l#۶QP$pFÀn{($BaJGY'p9;Hj&p[t$bNnk8-`#ԊZG6V kaj՞u6'ؼ&琏'lV3~{vh۝ma8Mqkm%;m%*rE70&71厢Xo~nL{n{?DxOqܣjඡ֕]j,^^ۧ ٌ>=T~m6|˯מ?w6z#:u~n+K[Gx97lFlP}lOn،qtjk9]??G pX; e (%2+x pCdZ>" g/1OnC%# 463 X_D7ȿTl\3_胎 nĢT:tGw eD7|O@)`и p_h)AM^jt' u+PM# V4Ńѻ)jF_Sct 2,b" '?\^`- ț},7J0b 2 NFCm`>p-uǟ?auæToIؒgpc [~pa- A=ng_`Q6G~CЦܘaܼ]jA+|]6mDPd:ѴA6+#v5XH{8kw+gƸ> +D6\6:pE_X;T^mhki OW;nB_ Xg/0mm쇵vTn|{my6x+@elәH@1 +@;DF;zdd(D~ sv\a}+CL.L2S=>ЖrPdP٠0x9 |a5 -ޥ=Abs-6t@w!d08f!=`3Aa'248Rɀmop =FW#5m`qR0Tr9 sgk4(\ͻ}dUt^B5.]Pꄬ.epmNBP'K2nB=P3ײvAWvQtb%0ne,%9vdf)g7p-hB((D9`W1}24ԡD\ > Ka@xBD-dmhwj-ډA.l4$۔sHf~O0âkML^*::rqY{>{XUGPW o9=6X{]mVFFK!j>\;1J2Up2,)S=dX\dZ0R@.o#ʫTHMr_'x| NKٰXk)o|]f%2Џo GhmW:@5=34a d05d8OY;qG}@'ݟn6C`XaѴBY7!i +9 {h7'9Ði/Rahah'I!=67 0R%oXZVX+zÐu 0d׏a`!:yÐ<դ ޗTWAH6 Q4>k"DI0i;/u*0dua}+YÊu7|a.iWmr@6FmX12^r?-iÐJ˂6A6IAjE'o2pdQ0Di CKtqIlAÓ.^,ʂ7 y=la6ߍa0Ğް؋|h0i8l}=Kްx,{>,7^#V$ L±.YcU+0 Z[M am5^ [/%>eo"u؇9'uX~aX +;j]֓;#Pa_)}a +opa{B2þhsja4 2þ7Ma8u(C1㞬A.]ISY}~ISQY +'y/y؇nNB&yn,vNl+j?a=>p>mۑuhywϒ=LlY~C= D vXua Гp{< +Āܮ%aI {soʒ? :a,a/<~,uևWM'>;Ue҇w?a@પeR{?]F\ jݞamYnqEI +{&{[XQa^R\Yigacw7Yʒ= 5OP2z Ca9l 30# CMZ$Ht0 ,>40ϲ?M'X[@,(s']&+bجxkiG@p@G+eօ@,0'6Xx1 p1 {I, ĂbgJYv[!vzvVYrY;.b8\ksqerq3!&~](ĞeʳC~]R<;nׅC?;M\o]Xiw҈$I#MI#^A6Ƥ;1?&GF %qv1lzFi%x҈aj;i8qF`0jRY4bmrY# xF D5ü:]&g[LJl{w_&1V_ʲFޏ;Fpdֈ9%.4b>o XV%؎},y1+Cύ1eX45bi%ʲFM1Dbɛ"vh0ĐmfvDE 7ԬEC1k7%؍ْhE.,bwt[X s,b+ +"z1B#f +ׁ 1lR 0kľ'Dg-b/q>[Pl @E ]ͪF6nne-,bE`# ²"-ua# e1,%b;_$bt(1%%bm|8nϲD v p!kO?1:KT]W6)$fO-$b82,g lJgX[~}v]W1mՕC1z!ֆ/v hHYvq~!֮MI{f^$[CT\Hk;u%Y"v򰵮$bChg{iDLP]IĀ<$bFA"1Ngط}sC,脢lp&xCceCcm]9z1,;ַ7I +s'pg?Y"₱"YX@i\$bc _$bGhիsFa(-$b}toju%{’CL~u7boL +1@dEbyV1b'u3&w&ا,G1(iXbfhl6HܻgY v۲ 1}BMN\- bbօA=+_Q6Ĭ€2 f5a û/ovyea^ѻ6]W4Ā]5l2u,3͇ )@abh0\.6[mG XWw {B vO@y( Nlǭ  bYS_a(aX˓5:9a:څZ? ~n}gbgW6.zׅ?օ?P5BvT.aLk}XX&}cM0aE&ys\da',#N(˅<0ΑfP:ajt{Q+aru60"@,a6OU wحN: DsyfwX{{w>aݾ׍0R҆໛amaFڰ. XhÞ"Bva]2ІGS٨ ClԆ+٬ +*^iÈJKmna0e5M _XÞkFh -P6ZPDɯa񔪮avK(6Xn(aa0|Nv9{Ü򆁷N5+oXVЧlf8@0ו8}-aĩյ8 e-qX[^Yv.aXdq>y59 \u&u؉pR %׬CE9ڨ4}.Y.0m+a\ȰCP9wU6>0.e8v%uQfź9*x ۭ.a>Fq;tM#m%CO,2guXaR:pJZY]OraN]újak)89IO^7.aQ)Ҩ{hP<{gVlTu+apAsکlpVַ;̪l 0lvK:2"[]NJ#κT)^rѳPZ٨{]UPia>a/O'qݪ:_N?aw0IT6ðB,K sֿ7~nfoاjٕ7:`7 1>ݲ&4NQ6z~*ax k[ҋ0C3a^hÞ )aް{0G/a8Þad]Y6NB&c]9+qHƜfq qXelgM Ivk:pd$kî&'mqx۬ C>GI#ҵ6P5e Se6,X&kQ(0H&i]XÞue kŇh c_YmR)ְ6|yK0&q8[Pz앳52e5-$ isjy! s^Yr]mm 3"eP3 /Yv~۠Fi! )gX{ ;XWҰݭ4 /I`YA iX0U&օ4LH9x% ۿ{s1 К=ޙab4Gu) ̾a^mVZҰ;a8A<ΰXbfgcg 39amJvvJpu^:Oa0;}Uaov$ ֥3 Y^Mq?.aZiajֆ9Py OB` m#l { c5lS+p]ZúeY#d ٬ް6:wN0e[6{"7[6aX6[^Iü {! 3J]:1am2+zrfYFg'6: 68@W68ä^(:/u #顮a'ge B3lXRm:\) +lRmnY8Ʒp٢}b3urqәγ#ʺtm؋W6:ü(rvu +ºtVTWҰ64Iz, {tSWҰBJ]Jüb! a]8Ocl cw]X.<acP6Za]Q1;am0a-a.aƕMưv ^da sV`_(vY4+670c7x6*Pi+oR'~ UJk+rRJ昶2̹2eV.a^߲P(aBjT B]*.7ʰ }I-aA5+vUa^\)$0o](8X(aE 2u +'OVΰbbtq(+gϧ8;ԠXΰV +Vΰ[G3 -D,o\9e sF{]:lɲB3 'f|hva^Fg|&g*rmrD]3l.a0/a8>eeX[Yx ܱ]2a8f6IxO+a<7_('2oΰqf l[.aKiXAwe4 .\.al3a]9:h O3N1&gXv}c ŕ3& gX{"yfgX/ruV^fgnuu _lt]ҨKiiue SsBǺq7.au( d ! c 4̲6k1k8Qf +ŭ0f.0&/5` ^e O2k<5̲6Mfk3ۏ)XØ}{a[d c+գ5ѧ "Gm3Xz 0f/'5{,;a7 0fWaG5,cvvYE1Î?a̾efY{$sHdc;79YT +fYaxZ[8[<0˸3Ø^a̬~ǭbƬ%sdK06Ø2AQ1t%Dq'ueesiR1۷. +0eV餬Øb۲cvbØKI2ZeL a>$wt>yWIjWaʄJ0.+"<%`] gWaP0M0eQnIƬY)gY)|0flP0EߦWa:9ÔòcDDul|W7$u3߅H0Emvqaۍ9Ô$s2;wP0E68֬ Sv"j46?hWֵa ,ʺ6L S\3jxq]҆M(Qa?I \6L(֭aW` ӣ%e|%AG<Ρ&m Vk4DJ0evk41eA0Mʧafkfo~naݾ0oWEmfUL0NYS6f3|Q/J])ֵa)yq5X׆ij ӬC lŪjmBI짲 Ӣ{%0-fnY*6vISDme8E a^%m3#ʺ6XQƬ'6Y۶`]L5k,C#YІ1Sed0fL"iØuv҆1;w(0f\0d/ clČ0fh 0fK߶IL5k,fH+hØʤkØ]maa5k,{ڐsW7jØ=ƨ8+5zwfo35 ۨZGoa~ c @a]M*0ffj1jqFo#Ԭ {Z-Gm3[a̬Õb cGmEʬYƬaԆ1¨ :0F'umή ~ c&xVM0FgQa҆1c㫲 La[( c5'2Q$ cۂ52n` cf_|x +O52`Xla̠%aڼ ֭ah c&g[,kyI^˿4](֥a Ee C>G4̲ +4n4VHaƨ=z׉ueEQƌRʺ2̲ a̎v)Iaګe q0fDfXa3Dh c$h0˞ipvY/-Øa:( c#Gaeň̟. Le5@fY{;ւ/&T/̲}yfY[~ ct?ta.ү]MS]e#2,{"kօ1m,K'F]eWO0fv."Iua.UЅYpV$]3LNvEf^daQDdat +0fXnuYeb"R8,ÉEb]fqAYe, 0fda +0P.(-IYv0څi[5,۞,ȴwXwYR4 VQfTYYG-F,ٶ0,kwIwe]fYttY[vllfYۜe 8$ʺ+2S*]a=xb]aa +N0=[ʺ+2+:+p+D 0@uXw!qȜ]a-fs2^,̢_s]YT^, daR8W%7R, A8}YF%` tanM0 x,mlI.̲]d%]U&~yb5,{l Sٓ.LŎo G00laYqX!C unn g7u[eWTla]la˟ 06n0+ٔh c (u[ey|F[e6_+q\an5M0v~uWe،trYN0L|G[UjTYYfMXd i,kpaNY>h-*jΆJ0",+ܞ,XkOY!CCrIf3 b^.2kb]uam[QT҅Y0之0ˮv};0[taź睫lad\YVx ,s+EͶ0+l@YxMQ-̲;daGN{Š3,WPY?IYf?dTY)uWPYaׁUml餌/, F +cjV!Þ.*̲[,̚Ua¬uRDSeo%QEGoiI0+nYϺ*Ǘ 갶67jEͮbdP]aR~.I˂* 鼟)r\O(bu)1QwI'&Y!cs¯ C֮G'xVLyz)Y|-a@xmg k&%`{\5[]fMQPKr[hLP&IQ"$aΧ$IL/J1YɅeAl/+0tc!#Ih+6cZ$aN޼Z# h\jj(K0>&ITq_$ ܅[="5K@yh3( CvƸ 3w6I€׀a$f*)-rDEc+ +)8萸%*&pұ0NP+p()W6Y3m"e1&&>'" l +ނGE;7J0p|"9 &K"9)5,8Š)ewflz# c=ջ WtuΓ# $ \(5+€F [0c~]f9`%]c9kwR z0B`)LY#\F~;XZ둭:@lWne +v0JosaRwZ`@–߆k˶$Z)@˾(fiߠf;H;]`=v7'9ݴU JIr0., r0^R #}`%=ւ:"~0uT$ +°9دԚ a6] fLYP݄m" @Wa&iOv[yKڂ#  +GYw8_gpZ:aM0ܶfEq5(0 ߨq,ax6;p% 6kkCn yB,$H/$pc4%aWײ +f9uIqR ,n%&EѬ~<" WzIf! P an檟! K{NbW18+aXȠ5 °2VԴ0ŠZz K6ergnaQiE2 +l]vQ5cB‹ kIaũ}..~:OV(&AFڢRshCZ2(bߥ? a&hpgV͆0ۢvaf^ 2T= ao͆0SEC"v +n2!d M̄N! *J0$=~M4qJ.efGBlJ0{- ʻ8qf?24az0~^լ.hKz0DD9.6)P`vq԰z5p=T&l .u%7nԺ:f7ݭw$]W`SBUa2pAy=rb6,pXr0 xzKaPo@V*,C;8 9YˮL38f9@b˂HT20)V$: +N+h_;+ ̞7%\FCx},PJb;'.~n3s a{uΆ0#x\1"i2$g7R[iڝ +iJI>'62qdG6~<]QNɋ2Pȸ@MDm?nj&66ek6ʏ +a^l\/* m<~'67~,agsk۶Sԑ $ k)/g"ky$d26< mIʡmD{`FT8 `ৎmLeFf4l>#l '$ö+Mumum#JH/X$um:¶QC,xF$B2lJ;5öb @ڶy /mdsa(^+m,?b~Rm#;TQYm`{<жh9}mhۨ\@ 0mU hۨzٌaV:¶qpJ\2md:WmdFaJm|66wmϳc3l•׷lc<ѶӢ͜@ mY[m&ʹmDӈ,δmdf*«'6>= m9m߽Rqm#kt=N2mP!mJ(#mNmd?Pm}2nYU>M sz߁0J'62 &h۶RƳ@FWKm#cOaVѦe62Nm:¶֓WG6N\SXԑ `m|`m#ۭNY`mH`m#{vnd62@nʬ왵~sڶ62mD?@efm#+﹝68ΰmdO}m[Ƚkm#qlY`vl 'g:62#ʰmdj md" F}'ɰm+626l3÷>!axbmJaf6$X#k;; xbmY#k+-&{'&L鑵mqt'.X>"-qΨmR,Ih!DxmN^ΠJm<@(9I8B́چYYDh+yݎmXqwm`gi'v׌X,q?ylanW- +%6j(ߡ d(؈}lV%HFɵnm c( ݲ; ge ۡ+}l(}lâ$On/X7 gvWhO6 S1V|gvoܛ jmdl\)JdN(ΌKag=`BlE#btڌnG2cmn٦ ٳx\d ۇ#du<e ,*- /:1$!P[m!/6}bu ?7BQޞeʶi$iF'^HFYy)7v:)Cע!?.L}8J;Sq~mΘ Ff6[N9g̜Wgl6&6tf1aR m} +3bQFOLja3e 6OG6w1K|l?ll؏y3ehvPΘ̘킆` W2f,\͐mOe%F(+;'6PMF .(ۜh9I;SQ2NL~wV͔x>/b@'6Ieswl#Xپ%?ol lKE|ljY v֍ f!GPh'&ж +^0!lm}}m3h,8A':F6A7ƒCY"mnGI۸FHxТ5QLMwf6H w9eԶm`&Զj۽}Bm_UQۥ/'Ug+ }`@xcNqG{Ψ8<ƚQۥkͨvuƚZρgֶ?낵&Й}]QFmLn'(HIpu$mhF9?(K&6wYev9X{nW!blӎ}wX9mDg{^*͜ |l?(˜m+#mlrb@@Qg|+Fw#gp g㬺8۟fu{~̘me{e3eVKYl,[bmuvdӁvwlS fɯ ~F+s?1Ă] e%c}پܫ+6'ȶ]ΐ_tl5Jغl'XmTne6 mԭ)ۿf7'k̶-u 0'Y>ll&vofcflU3gMgv8O9ۢg='mZWmw^nÜ3gFóٌز t(@~l mHX+R5yi"&66(_ok6 v{JmAncD>wniϡ:d&mΤmzDm- + vn=gרoØQo/gԶun7F,Q +Tֶ,DgFmjDq®h@m/m >yQuvDm?`If&ֲPNelgy&6_pg:vfmnQ6QKamߗ43lM.2Ӷ m !um=˰mL6_Gj^mcf{;7;/U+pGl͸mI&zm}m![W6Ǿ:S{mzo~cunlnJpg<.2϶(3cmsrnVpv ܶj5p}x^0J53p]|&v8>:{ nh['y$nwncWE>"{p;|,#pvCWppJev0ߺk&n$L3q '3q r:\.gۯm8#Q~ں_YFn!.D~l nт8wsY1 nP61/FO*~- n>͵@6%ى2dQg6ꊸ qLm9vV]mԿn fmx]ř}{EmUO6|ZpJ۾.cW@Ku+v+mՙj, ͸m`9{m')A wmőn +q:wiۨ"f>_-h&DnW)P>D.q+XO'Ne#nrΌۆ ȕ}q(Zn̮p3nCn6Wpv_q6O]mN` ܾ;__K޶/xۻpxc]m{m) iuF, o"Lܾq&}E6e3qЭ:5*nc܆aQ6"Xz>.$%rmbkݩ òJAF6wZf6(%۝U@nвm5F@nY.!I 6vlerWm1E+v-ۗcYm<|3v1_]rɄKvQފ%*+v-'ܐm;V:Mmۮ \z6\g[ۇ9]z*/ m۲г+ۗuInO§zAQrm4X K6'LuI.3xlY_-G=OVvr(X}nEn{?mAe#w?njYa!ln8.#%wPiՂ}َy]`6=bQ=b+v-mwE3v^1g6/e#vc|>n /en3w0_]r'o+vE۽a޾ "o3yZt[̭۬KvC.'vmG>-֍h`o6WU6`fo㷼)l 懲Ǚ#|G .DY n&óbo|푽3{2| -~>o1v*9{do{ iGEgvfvG3|M/'u v7̂֙>lج+v},>>,۟Q v{(6o u. dp\W-nq]ˮ4zufw:g7Nf8úp6nm |SGvyɖ#~5'>eչE3~'G6x +&mսo__:mSY9;-}p-Rm + +sv<^mT6nXǭeoT6o5/ܶU)n ={I/RTY;XWn{$8~۲s{S ni>~p6! 7*:e;oAg}}|]@߆l虾`+jno?C}`F6P[ـ{~e`QcGנ-ظeow/kh"wm=+6 gs?k癿}*t߶?k6 融mW /۽\}/܄^9c{o?$ I \8<,,V푿]TUog17*.܅XK7v< m|4}ۗgMncVegMnC7>/(-g0KzWn(Vj(_o0Y%H{p;oeφ_QGNe`D!='EfVoo30ӺS;} +V3|'5n9_-&4o- -jXizY/4mFNmԙJ4VDo3"JYGo3i۬tUM"o3S):yY[ˊۖ2k$o3C0IH%5-Q(x*mFUlM}(mf{w2TA2ql:wY6o,EYo[Tͬ=2X˔ڭ*Jlo3Cs3;wۢ6ۼ.b"wqf6rn,Kmf^6یVֱ>QYDZõͨ],Imf@%6>Omf&gvE2Vhn3:fdfv_~D6jCc} v۲C5sqFYn3윸p- +mFmmfFemٞdzff&gkw63?JmF|\$6"횱:v; m׵׌fP{2b)!0un3"wY/LJmf +nu63,wkw63H9o[vmf`Q̌ǿ 1NMw9awYOme +!wRڋywjn3C⡨c=ۖQೈfVGͨk$uʜ豊ܚP{ֱʼ-a]Xaۊ^$63 ݱۊ/یa~`n3iW&Zu趲WEN ͌WeVtmlmEݹۖu3Sbn+:qۊn#t[[46# mekHV>0 EEg9sۣݙ̸UcY`n/ܞܞ^nO/3P_dNVIꑺ)Dᏺ߀:u[kn+sDnu֗D˅#PKmep?שۺw'U3v[YD:bۺu[jnpS5.QփN֘wD8bg_3v[C.$2g$Ft<ċVfE:v[O2jn롄-0Grw26Nm=nɊ"u[ϊWjn+;Tez_*Nm=閰ڷA8b5k`Mfm6o#v[ٲ,`5A뭬c5aj&d#v[x$0ۚuKnkw'r5Y2eI'&vMmMjw_G& +2qvgYnkƣs5ٗ8!RD8|' bPcc₋RKmDYn3cNւbE՟+mfKmfOEͨ%6^̎ Jye ú;u۲ +YvcNe Rk.#w'6p>Nn3C~.p-ی4Lf>BW]n3CSρL쏚ګP66¶:™mo3n6f~g o3V޶ rxf`cvWU8v یPo(cг޶5S ]oz?6#fEeAئی~fۖ]?{_o3kcD%6k}#|m2?{g$$٫ >fNYX2 Q |@K.zjgZw6B;doOSmh;fokH+dS\mgg}ђ&Fb#{؈~dB6oi>{6)m糷9!{=W,={do!8ACMi!zЈ$ +dGmCu>y mle!y]˓H&FlH66B6ي}nmc(6{]Q.z,pزu6fv1zf⣷ɦc>{X[(go~wmcSCb!|X4;oǮ*mlԭ;oamlB%6ҷv1~X{'9x&Ae2m2TLKxJ6ka,ok2G6ټ=p1F.ې8M_Г]1,={oYImfKg#ⷕAɎLB6ΠϞ=4D'oe1~lc66)ЇosDBMCy.{ԝ!{ n?M|6f_d핅-2mT0M&G$sd4m-&n d4d?4X({Q’&;ldoUclS lzmiaɰM69#zlq}->zm6/-壷a*dX{\䣷M"Im2Bm"E}6{V~q#x[mZI2MHm.xHUw&|6S- n[@(WDXF6g&;yLMef &BR{|6 "MfBIl$o'ktmgs䓷vE1yGُsm2DO +a`F6il2MȄm:ow]mvOK + nӅo vM֮%mvjmvGK&k3rEWm T=lK&DYlo1}lSbMdHk?>} rmU%~lM!~{fmM֛Mh%sde.w&HA. &s#{ ic7Vb#l1l3i &ko>d?HrQx#{}Cw &42>ɑd贷O[ `9rB7Y̳5n؈ۯD"Pe&kF7rM"ghͣZ#d.l:-AlDp9&F>y;(=" s]K&[M$)6~ؿGq `=M6(Kl$p3unK^ѐ sn2 iH%)4֭w8n0.LɰL֘0p[n{_Gg# /ֳn d\5p!Lvz8k/&[x:)'J'M6cٶ|7؉Sk# ^ @m!9L+O&[j)#{>^;M~B#MZv2]7'pe4۴'p3dyvE;EpcWCtgF7o&2͔hXGHÜgd! B>nu#X<>{fa_Jjv`{g 6wM4-C7s#.Dp,w`u}?`\7؎xM;/6"Gpm#!{Av{H6%n.2 B1n~ zvj׭Dm`81a4#yۻbS+S7&#p", .8" 6_h8J7$R +>lğ1w8*~-6&dp2>m3gz]k BF2gpᤧϪ|7 c=> +|7 ;B9`L[!`nB+E>kKcKcD +3=B9rYfX=A# ] =F-\7J7|7X~]Cz=/Gv!|V"6BAcB].eOS{S>oՂF +7d%ovҫ-S7n}9]!lE*n n ,'Y~|7n;fp!vd. +0vCpyzn0$كG7'7!`]C9aZL+6B R}7n J7r-`pMOB,;Jt CP7n0:!ܜx e{@CWC]7X['ͩ3!`aElp6,.+[`[(s7FY5B] 7V?'Sk9] 7WM1\lMEdnr`CnRrCG$ڷ%'qY:$qs<$h! JljzHZLJҞ\7& +IY8棸#-}7P: Ҭ%?_9z|7T\O^ D|7X[.mS77`[ fm&aq>T1 IlDqs é(nlA; Ծͽjq(n 'QؗDdvQ< +Q`SmO]Ji(nd!{m.{eō}s^ʥYاo3@KPc7Xv6{,n;N@3G7!Vy"ҞAT,nHi.'7w}7O6r,ogq`18dq ]޿m/Y8[[qzYjQVSvY8:T؍f!<d.aĊYldqPMJY8(m,nhOణōtY3heq-u9#P]{hF7 +MN6B#2)m?iQܬyR\}7N&*:'qxjo0Ԡ[aFHf۹ْIܬkO¤7OF"Nyq$nm"rUI(UEV5)q%qW)֭;p%ɿL|7:);j0 胻dP!OJ"6ӞڶmaiCu ܬn_Vn VTn bv.E7QӊeLl?" nAbov!PtςfB#YنJi\7*pqv[ n[#YԆ(|7 "Kfpv ܳ"pX ܬx9"'pي}7޼mCh$pmMY>3 s ܘu8!Od՝ r=O*yܘõ N- e >I`ܜ!#NpZ -{}6f܈v${H'e!,oc)dp|W5J1+? .?򷱚moYzϐGygǾn#yA>{+VJ.OUaiz*ܩ2$6*pcGmzrB7OƖy>~_[keH^(Fc1?,"'p= +mWtu ܶÞ=~Ԋ_Znt^3=QĄ >BED.}= ܘS]OJl!}H&'sܘ fY"mk(ۦ4;o=I;o@d}֘2=SiF7}(p|66-^m>hLسC,!>aN.Sv^, n͕ 97;]7+d9n.OiF7=.Q2p&ꐿWY.v!#6{T-94qb#hft}}|bvUry#یuB}6Í}^ȷ>BIz]7Fr^JC +]#{p=(YQ0|,'pk;gO^yÿ.@W nȋ|7E!>Z;/çpS P} #A3[!ZH^Y7RQ| +7ܩݧp#8ºY_OfJ, +mN{} +7<;f=>{pƲ=R8tM L~ I?-nUݞp7 ;zC +PM# oe7)j,#NOQ3 ^BY}~ 5#p'Lnb%n0n<48Kеpm=z +js6KP6BRT:0m`C:Oi` + _ }='C2 KG;䶟5ô_=;8PQ1DPjC tϴ ǵZ)kmhm `Q19pm]Jrwf698Z[}vs ?;bYm9!5'U 4[T+[İƃK EL# sPNeꆘ~ƜoreG &BgqJP0dϸۺ?Γ~Ö+*jT}{L6{VЮ͢lyq=LG*+co + '1q <@Hae7tm`kّn~k ;9V[kVPô +6lhYE&F!atgMm3_HE7 6CMsdOQUܽ3ˤ:wjo]Np[Н5BG6m=Pl2#to^1 syCl߉4v˽ducDH!n(^4cC**gFnOD,RCY?AYᲷL`#SDvtQ?0 mz 0bgc`P.m2 Bl̩Rk_xT 珢K [j]h5'y3 % a2QG؈`wd3CsXEPlYl:Ivs(XҶ4fecnl5\, ikaa+$ k0cqJo膹1`&Vl8i+ڐ`gv7`0m>a@<T<<Upi m g`h2m) 66Н-W,~RY1Tz k<(b_ۊйž j s omzS+>Խ++fe3(6)؆ "ǃW0J !%jE0PFκu#=B`H%a1hVG% +`C+9-M m 0vaJd;K/ ؁(͓[D`;bGQͷQD21M 8}ǿc=)g8c?R!q])7li|ײ\0a(kO~>?2QX7lê]`qlj>`Qp5pׂ{FM**Ta X1}%f4fU{ +`~ZIմa.gb | 2k07}X8~Y̛pV}*!Md8;@o فP + {o쟀Čk`8P~0!1w!;iĆ;l1#hF(smj p\ +&"sywz1cSPrpi3qaݦa@kÛÀQ0,vou;b0.|3mOJ0W|00$Zkao2!w]^o 0n-ot0v}w{oJ +ް (u6a`jۯt0UO [fa`h)؎ [ѡv ;Puwoо Cp_߸UNՔv~r L&&0c;z]dabfKAf զW O{-ޗuab 0C/.Ll՚$lG]z;/L옻ŒtT.Loq] 3\;İ*4lab&fwԅʾL 3fdN&֐Z.LT^Ѕۺ0Đ9[|aboj0.w01kl.ءڄ`  012[bJHl厶0̂,ĖMlab;J-Lֈ #†Ծvؐm`9[py[NdN&0^wԅ] +MlpvYׅ !4{.L + _1-,b&*xD,}aB': 3P]b&fw􅉱z_!l .R0> +0 RbCfluA&\)0/ ɚA&E)6abثWa^aزu mpab01d Ì ^&Lz_P*_خ$ C@w _6Op01.b&֣0LlۭN1 ?Ć0L Sl%0lvwU10CGA&vӃ Ì)$01[ cX 0^wn 1&vʙaK/ ;ÄJ +0,01+2eةpZ 3z t:abE{czL&8ݏ1L1L.ap0 r?0E9g ;Ķ01uc +cR' 3N;P3LΊ R AF r0!lb&fw4m` 3O +50ad&:Ġ?.O$zcرXE001Ȝ2APQF?0EA&f?wT٦ab{cygٝ&֫x5;0i9k،"2g ,6ab1YM&v4YlXİb&g k0 k1 kX/o08` [q+6ab%'s01b mة ;jPw,E&fwԆ-!ӆ0K+6L1mXgHw#s0a&40~Rab>]Ć6Ll]019mn&ԾX.Y4̐ +( N4L ݮ0ܠ YN&vh1hf8 mX 0c@7L 3IlxVEZoX?01Ő9oX~[]zo!7&09oX[^&oi&v01TٟaF"q͛UoĆ7Llh[lxlS0b& UlxÌv)01KϺ7Llab훷[{ĎK;)&_cyÌX^&Ԧv:of&/Rxo؁E 3KT6LdBȣP xڠ3w7 9R$za.lsm,iPІ + WX6L`8qsabnņ8L=k=0w ]0cO)A&6301yq~|abm@BʉÌͶ8Lq>bC&vXqw·~oX!0UJ w p1%6aV p4L)bC&vh'KÄa6K3LlGquoGpѲA&Ӊ9e^< eX{l]'6aPvP 6abx ;*ÌZIabs07wTcn%6ab0!+_Ȅ-%z_؊E2 ;' Y_|p Z\ab+h-5׻0+> +;{w[zjpm{U OU;UX +0c#&01K+nwtרEzW1DI\abm7߀w]ժWs蟜+LPvVp=b&Ϯ02(&^ uapO] 6tab.L]s$y]1,ĺ8Œ-* aDŒ+0 df 6y[ذ!1>S5mabl0cE_daBO^f^ņ,L 6{[ٌ3rf _\O&vN9Y!.QflIW]aB(0c?6TaBL s0cLJ>Ć*&sW~ UuJUaJ]aNfMwY[!Ҋ,LK܃, ;,̘uY6\[ h r0c ^Na 3.[J[z„miþTf@,6laP"'c 3*- -ZS^fhdYM)daư&# 3f+0cƜ+̐7 +3Rd +3I!4TaC$ +3v8#s04{UG~U1+k's0cY1wPk/fsjq-NfYb0tg +3vRyQv0X!MLazl`f %PG S19U6өŒs^f Ii* TaƐn uSF5bCf u"{Qkh׫ŒqcɩŒO̩Œ఻ūΑTaƤ*̘FwTp +3v)*Z,ݫȞ֐ +3~SSoUa6U SS15,btNSSvk(0cLavv9SoSS1:s:SJm0Œ-GI9Q6h{Q̃(إ] #PZ 3={Œ7h0cRQF0s0c*((Ea.+:(:0c[Ć(.ׄm/AFj[{e{Luf 1Ҷ02t(0cyŒIEf [zQ1.Ef<. 020Ma֞Lalm=0Ո)lMa a +[c+g +3fxS14ً֛px0Efņ)lSfՄ0C}HzEavV QOl=azv'l!NfJeE&Ѣ{KG-aƬM[ˆp K O/Şbf #'9fl߇Xl@V"lmox'`Cpj^F֮3QӃ1rU _Q< R޾׃ao]^M< =ʘ,iy 2o$6`dx)O&9P/m\uu5?f} \V h^Fj!aYoG7 ;Ro/Xq`ZAf(6`OM8Ć\k̹&kQx'7؊I~܈j0["ޢ"8CҼ3wWqs΍]QK^zn0\xs"v{UktV\` _ ymT{7oL&6Q'6!V O$ 6ӡz`4z7Gct93DZ6ҡU05Mvϳ!nΆK; +b0PmA "B!;e#1 >_z|P!h I/k6+{`DeUF7F^K7VGdn0Ƌ\D`>P_ Zx7wӞm ~X`v +.]{gx9f: r0D^T +H!zp,; tiv0aLb"[vذ-> v ̧ņGm[I0soCz+g;8 v49=S2ڃxH[`Lf¼aуORk&}`$虲(#{+ lF^lF,<6ĴAlȐ:rV?-lUAF4ޠ[[7lz{`DS z0NUlZrz06XW]GF4# 39=㇎ -['V`d`FxmFdw,4`fS}Fu"za;sv0cȩusX~)4`VF9;`d݆; -[z;1``Sf :PAV`~yG9.z0cW߮| 99sFqn0CX f gkKn0c] 7Dz`P +n0jgAf0:` 7P?) n02s7/vK n01lb f &487l18= ` ߇KlOq»!Cc);R^Μo ߋc F&SY<fڻP0c f"ӿ fbLKx0m9H7;RIl}bm?f`&vl6ap3#f35fbֶyG)zLSz؊Plnu3kf ̌l0!0;tf+ ؼKfbL U ݾ3'03vγ^`&vo!ّfړlqA`&6^`& '0k T^`ÄA`&f!w4}0m`0 f0D6 fb + Lr3131kDl fbņLlÞ0%LB0kova03g`&kӂL\?̌(ĆL H1-io0۶KذI fbZ\"k31LLLlQFpmfa&9zuhS+̌( +3^-fbk*xvhxq36$n]}6$fb}/H.6ḩ߆.2ΧLlpa&FXw 0 yqfbd=a&4yG؂{0Z/LlΩ8pG]ba&f5`wp Yf.D 3i?Y3 ;X̄T^b&F4{ʽĬ3Qb&FsYi0fbs}a9>0fss}a9>039>0f0fsfs}a9̌}s}a9>0#fs}a9>0fs}a9>0fs}s}a9>0fs}a9>0fs}a9>0fs}a9> fs}a9>0f}a9:f0fs}3 ǻrw*̺~QYkfVa.ע0{r& >dV]bdQ] ZXĢ¬=mM +3hRlTf80CUYsav8NYf.X8#uStE=.1k/Ub=u WDEbvE1gQb] PMeQbv!DR_u][b1sbvqy]t"י5f.+hЇ3d&-f.X姨1;:كR4f.@h̰ +W${јMbc沌Ǭ6{VىP~;*ެXHvEfEU,0lO3w?YdaYvǮ8"3YdaF0,;̞1(WfEj̍EaF0,*ܛ( (܋(K˵K +̞y=*0{&U`L:왬T3ɩT̞IU=*0c"0{&U`L}GW3Iqb`6&`LJQ`̿왷W;ΒY&TٳGT f,0=:j0;P~3=j0{k`;0=0/ +G Ufʷ*̞sUOר(TUwMYR!sH +3o +ᬪ3 V f'p, c`5jG̜øDV fl㰟+3g* *3},̼&+P/gU`vъu˜?P c-E`姥+skY[vRf*H fN f,̮vX fV9-P4TOb0ן&]`l]`f`R Tڜ쾫3)b`a7 +3Uf8)0[ +txQ|EaUa:zq~0~k'`O⭢0CMebf\b1p$bXOY,fmq%Y.V Š nUo.^|f6W^|f=g֞ [ƾE>7Y_Lqgfvgf;ό,dgόF*3koqȼ̮ڻvyg6woޛl::6N eY֙aFO23ޯbEfvV]f3e6//.m:*.'c&&LflxNy̰hRj2UdnS,cv^βLo3EcvMR^4f֍f1b֭oK7ٮlbW+o]4f',we]1;cvmSgc-1kϱŋy̎o 4MfG,3&kk%{ÛLgo23ǔ *3C.Fe7 Ffv\RU1K]"3cًEҫlY^df$/26mX;+23U2KO~.3c̺fk٥WYc̮Vo63ܿzl-Bf~W*^df +KGbdfjdfcWe'o.Yeyl=ڄi2 ̐b?U\f˲eƅ/Qv^r1!ڴ²$3٧3tfә}:әu>٧3tfLә}:Og>٧3tf3sagʒ,3+ +>DϬ0'4+  Bœ,(4+ +sBļЬ '4+  BœЬ0'4K, +sBĂЬ0'4+  BœЬ0'4K, +sFœ,`4+ JœҬ04K,( +sJœ,4+) +sJĂҬ04K,( +{f9YbWf=JҬ04+) JYBWf9YbjVc5+Y Zœ,5+i +sZȢ֬05+i Zœ׬05K,x +s^Ăج06+̹ nœ۬06K, +snœ,6+̹ nœ۬#{fma726K, +snœ,h7+챛%f9Yanf9YbnVӛ +zœ,7+ћv~=ڽެ07+ћ%f=zެ07+ћ%f9YaNoYԛ +rzĂެ07K, +szœ, +szpţެ07+ zœ, +szœ,7+ +szĂެ07+ zœ,7+ +s~Ă߬07+ ~œ߬07K, +sĂ0g8+ œ0g8K, +sĂ0g8+ œ0g8K, +sœ,8+) œ08K,( +sœ,8+) +sĂ08K,( +sœ,+ +sœ,8+) +sĂ08K,( +sœ,8+9 +sĂ08+9 œ,8+q8 +œ0g9K[ +Je +œ嬰r,g9YbrVc9+豜%,g,`9+豜,gYarVc9K(X +sœ,`9+l,gYarV%+ș +sĂ|VУ>K( +kWW%g=곂,>+̩ +{gEYaN}VS%g=계0>+̩[ >+̩ œ0>K, +sĂ0>+̩ œ0>K, +sœ,>+̩"œ0>K, +sœ,>+̹ œ0>K, +sœ,>+̹ +sĂ0>K, +sœ,>+̹ +sĂ0>+̹"œ,>+̹ +sĂ0'?+ œ0?K, +sĂ0?+ œ0?K, +sœ, @+  œ0'@, + +sœ- @+% h9Za΀ h9Za΀XP6h8ZbVs%h9 ZaNXH +rĜ'A+I  ZDQV$hy ZANV%$h=- A+I0'AK,H +sœ- A+I +sĂ0'AK,H +sœ-1/A+Y +sȢ0gAK,X +sœ-`A+Y +sĂ0gA+Y œ-`A+Y +sĂ0gA+Y œ0AK,h +sĂ0'B+̙"&œ 0gBK, +s.œ -B+x\hZaNV%lh9ZaNXСth9ZbV%|h9Za·X|h9ZbVh9!ZaNXh9!ZbAVh%ZaNXPh9%ZbAVS( +Jœ0DK+ +rJĂ0D+) J%ZANYTh=J0DK,( +JB-1ÉVsh'ZaΉVs%h9)ZbAVh)ZaNV%h9)ZbAV#E쑢%h=R)Zf^V#E쑢eh=V̼NJVcEk*{h=Z̼GV٣Ek*{hy-ZeGעUh*{hy-ZeGXТUh2Z-Ze-3EѢUx2^/ZeËV󢽰E+{*{h 3ZaN† 9ZaΎ†0G{a GU*{iAZe GU2EZe"-)*{i=̜"GV٣H+*"ǑVH9*z$i=̼$!I葤e%i=ļ$GVِe%i=KZfΒVcI챤e-i KZFޒVcI챤e,i=KZfޒVcI[*{,i=̼&GV٣Ik*{4i=Ă&GפUh*{ZfD퓨yI>ZeD퓨EI^'Q쓨}>'Q쓨}>'Q쓨}>ZeD-OI2$jD-OI2$jDOI$j}>'Q쓨}>'Q쓨}>'Qs쓨OV'Q$j}O'Q$j}O'Q$j}I>ZfD퓨eI>ZfD퓨eI*$jD-O>'Q쓨}>'Q쓨}5>ZeD퓨yI>ZfD퓨eI>ZfD퓨I*$j }O'Q$j}O'Q$j}O'Q{AD(QC ڤHpI=P#۰*jdmUwt,iwv!,ss5oB١Fc" 1BeXT]NPSԝjdtsyΜ cwVH"s +52W?j`ؐw1P#as +5K j@(_ jdmr S3VebΠFv0 +c7 jdmxbΠFv0K[61gP#[xyg Lw6H29Ҿ FMΜA̲lPc,Ƞ:ŜAlPJ7E;3᩺ĜAmwMwgي3 P#΃#P#Ns? }ӈsid_wҧ1ڗ(ڭp1O#[/YFvptg}Ym@ +4 $5id+l.bNFD&id'OkriDˢ<*O#1ӧ]bȂ> ]E(wbNF/3>̺hO<ǜ= /^iohO#k=ўFf wEzs4 K!As42$ٝF}N#;.<ٻs˾N#Zw&id8Or4"t54 731o.}Ffiw6!f3a7ھ`N#kkms42;9 /`N#k+a}/FޕXFsE$ٜFv)N4UNw o*idA9qY{[4ӈ6&|YFsxgqY{E4v=i?b8j,N#[솎41Rw֦ܰ6`םiD'7MH55:odM#9XkԝiD% +46&ً"Ji#p(4 ]0Fi YF`3B3h8eQDeuYFvq~geXi46:id˦CT29eΞ;*ӌ042M{0M=~0mF L#kK{Da2v/L#; lc42t2 46 +46 Z9a 4ihidm89aYW; 4m)bNFf46Twid%9Ŝ06XFaSP̂K#;ڤK#kC=&їFf5wv/ =a{~.vV⬇K#kK#kK#[Zs4 qIB|id9_^s,w}id,s4;ؓ#|id\?9_4;Xl*|id9_/=4{w1Fȸ +|idh% +4G?w֥]/Lrk 42bNFU%didK 42Q.1'K#;s!.s4 +m]ids42s4 k:J#R`s4s)ACpm`r4"wG 4U%YFv,zkDUEɝUi;CJ#=;;4 wgnI#k7cѓ3ȐRw[ٮAYG#[$hd2Nz%z̛3p~9=>0z4>w֣1sz4;w֣>FmgbޝhdyhdBF٭91A +b42N1'Fٮ/&91ىsp1'F[l~g1YfỶl?b40y +1YtŃm,F#;, b40w.b42lbN%ۣ M;Bar^4awaE#۱[Chv)hdsrZ4}cAFfw֢2obNfdAFvqsZ4DYш0_h`5hdzg+CYvbΊF(X?ոw팁 h+Νh`Wi~GR40#Ƥ(EyVhwvDk϶- %s9 9%х(@DcJ4!J4,*wRIn((рRDdh;&ۢ*ڿF4MB{)D#X}B4s81/DY5#D#9!1X;JlĜ %/6!rF!e觢 |`·FtчM5p{C 1C3ȝuh@EIĉ!th`m-ӡ]4,&и4Gن4쿽 =*֙a6n-,C١˃ R.4HxX9iBkiO1BC19?3BCm>gpƃB0Rb΅c?e%9BĂ U,wO8g0MHMgh񛽬 gc;5u3|Q~:<؛0"@ {;зfQ~3~鹽lA.~Glo;Q~Bwَr$? M"vD6PZegs(?Ck, dA~!xX~gbN~`q߻3xzٚÒQ~>6;CXmrt;tޝg<._D3M&jo%%j5|ƕMq!gn%O3l&k21hse2݊)N5 ĜTh9"NN d>Õ<'A??&qV1=ݗ=i(O3K t:Ŝ@:Ma#S.l𞡔`E{RfӾ0g8j_ E8;1=CwRIyϐ 3HFP7{NmCyg'7UgxvqӒ=~g.kl'y<ċ9 }GD ;v$O-U3e-x-$5 +ppI е^2 w<.b ]m  |ghZ$z7v&[TGڟ7d;CҼ 3Nmk`;[=mgh6pasv[n/vƾyۨ>O6-vvׂ͒a;CXdߋ´ZP nuh;gRŝlgnpUvvƾ]tA)%2Tg`CN=&3AA 3o=gXdųk0Ieo*F Y&m96m9Egmo(9l$b p,g`Mx %M wr-~KՈ uh؅fc^q]Q1guC!(lnq3L1K7Yb*180 g3zC]4!lﻟlƶO gZX8>ۯܝ JM{=8Ap6[wɜ sg(Aghg8PiP!&Gp63iW{!Ab D{lf9:zg3kK^^p + /s˟ 8C5BYc+mg|'/V 0vLb j϶ PӪ m_fQpdZlgQf 8kO&/8>Ǭ; VojUQpvX>0!]crQpfg{Ru p^p6#6؆Y)̀ڸ8ٞta.V 7k$ b "m<@+X,9{o+ɯlS &ÀdK<<;^+"S{W=2Jյ$d=gfԈвoFj64ͨ܀7 QatfNǎo&Ma?"K JlF_]2~q3D 4XoY2 vX&}ysiy35/4jRʅ_F+QWe6ɞ/JYR΅_F,Kqs!P/)..2˂\eKH5 ÕHVzY=6_e&.nn #TZvra.c&,첛.㴪+;@6ˤe+ܐhԒtAN+K }mVtu!5jH.kU\Fe! ?B.c`U6˸s\vs]ex!ѽ;viݬypYe[Vߵ[v^e:'mUK-/26mI2sn JMU0mnBr˺͹r︳\v^eܵ\FkZetCj 62f +..ó @t݃=t.3fp<)u:.cmg0*ffpYt.,N6xef  .[vT_eX܀*-JK`- ZMYe70CԨΙ6B*j[Ɣ0C,2ntr݌lYe&z[FGh [v3_e5(rneF^e,)5e7H.$r\V掭ز`q c7c2h^kVl `˸?gv &oe> cXe4RnsH-C1L-$j٨2E;ewiZ(p-1fn( ܲ'nK贀Fmݥ\R;l ݥ\6j#lr]ev!H.i lt(첻6Fmdݵ]6j#lFv-Qe'Fm:B/k3lFz٭/Qenݵ^6j#6,6nB/ b ncB/^xm>XeydH/M 6-\nsB/ͽ 욱Wvc_e`e=⊕]GVv#Yehe!.{[+G췲]'Wv}..{į+ w+/,>VvziE߹MbExT lZetl9:l=VH+챲ZeJ/{Vzc Ǖ^XpBuŗu +/qB0ib=R+po&vHȕ]7؀+AZebBLezSxY$6n8^VYLe|o`W ~'=vn _&K;g/k!ye7J/H_oZHr6x<N7 f;&ٍ5hv=qsFH3ao0rUj5VWA2 0n֩361^eZJ0{̬|0/fܶ;.h`F]fU_f`0}F,5̸ht=l@M;R,2`UcܬfC0Clf+k-`{^+n6"̤Pə6!̂Y n_vc-2hMtX_F{_g_vmeR$Le2~eESd+ !:_U-tj/& !eDe5+AR6ЪxfYr ؛6ˈVf,\+,۹EMXE +0c9rWYRs0c]z{offe]fM*.~Bg2Ƌ2&JSXe~q`/Ԩwl `v3PkK0ZA%fs\]fiaV.Id Ua&i ì,:0V&f ,Rs03 +a0sN b|bv;՜i3,b4Iմ dVV?1kUmw d ? Ȍ/6 N#܁lq 2#ʹr.{3Ȭ9M|d֌ܰidF9wR+L{d֘m 2 CӞ@´dVak6 3m2+HڂBl@f†صdf%/5{7 3#d&kAf#چd,!uK2Pɬev$3ޒ̺dƵ7m&Yde- ;fKy6@fɒv $nd1+f3 $$3>$C2>$C2ɬKهd!}Hfiiهd!}Hfهd!܏.43@2_~?W7R2ӏoq~݀d΂44A{z>7^"_?P_˿eh v"KkWpENJ^{{yۂ \42+JJ0y&q0&AyAV (Oֿ*t>]Y3> a)4;ϐ̗sm7ӛ?rYނ?{M ~J)LcesC\dJr[bz(ĝ݌؆%%hⷿW{6DſMM o&~߻J4+72g*G뿏&.z^#-nڋFx-MܮBnǂ/bLVLߦB&w*_ oL^&VU\0NNFpHV[EG,#̩+ZoUe͡&W֪GhUzUyJmW)?&>hC荺V/KzoW>*VUoW=*hRa}6a~M`kQ^*|Kh[UϏ*t6ejz~\/]ުGhz!; Zuz~\/4,j+Z^XW^ѪG\5U^ѪGBSdO֪Gh#{u cG/h~ltPFGhc{e>LQ?ުGhc{eQuZuz~lN&~֪Ghc{V>zE+ɩ +:U^Ѫ>Ƕ_5flHAW>٦?֮+ԞlS)|aͷȕfIr?-%լGn4(pko7 !46f>nQ^iڬo7k|-Лu({l?Y}Y_GPu(%5Z^ͺ}f}mO eko7k|l(mѷQ>N)FYݬMK{}Y_Wsglf?nFy)~gͺf}mnKn,f?v6U\[ݬhDz̉GnFy:4d֬GnFy:*mYݬu(>,_ݬčq:|f}m'C(6+m'x+o7kv6“+6.|Q_ `jSn|Q_܏ ؛}F}qF|26=6tkۍbyHFc|Q_ɤkW(ۍb΄sG~\|IϜCШ(՜'?vE3{ xѷ(1I}'٨F+|eqc6ˣ-?*S]@7vܜ?꼹9cΛ2$OK-'on͜5u7 +exoc_Cenޚ?T=%{{{PE~SC ۻ굷ukoo*ޞ?Ԫ=R{{{PiRS긷uqoo*ޞ?½={{{PL[5o^j!~eU>ysk&ͭ]ffrul^ܖewywkFͭ[f;7ftml\ݖ 5ul&L1{[3[1ond3Ƽ55lL0I̻[3Z0ond3¼5=zwk&#ٚ潭 hfK7f2hܚpfysk&zͭ ff˙wf4fܚPfyskow1uF h;ûR@G H"l;5g~7,J~.^{OКR+mp \-SCxT lᏏCn}vxGIswGSoDArwmɯ#+MwkwF{Ĕď77w)|&:iC).7eU[Z\I-%7? (]4MVu}&̏Nλ~IX$6?O%B>voK5\vK?IxjI4XK%7?_OӷE/^cɶ)x19-q +^ו/=ќ`֜.=ќT֎,=рH֎+=s='ݚ2Oxۻ:7Dͦޜw7{;lx{)7c7ވp1.Zǻfq֌Y?ӞjޞWy?ӞcޞW ?Ӟ\ޞW ?ӞUޞW ?ӞNޞW +?՞Gxhϋ n'{{^$h{l,Ʒ̦ʽnʶMО5~ϴg'UF,gc[{^PT{&G=/&ОޞWy$?ӞޞW#?Ӟ ޞW"?ӞޞW!?52g3*g3*39yW?st1Y7UnϴgvWU6l϶ʷ_~XFQJLC{^ԁ|o΋̓q26/y=rq~frm5Uϴfk7UOOM>ʰʩљyh{E3-y7S=2e؞Φз ~"[N*F5~O îK3-8@?ˉY??-VC秢yu^b09/ em3 whƻ7xޱ=o>3py|3 wlϛ7ޱ=o>3߰w|3mОg:33 wlϛ7߱=o>3~|3 wlϛ70ߡ=>3P||z|oϿCtf>g؞7oc{|f!y3|"3 xlϛ7=o>3P|33<6gҫ9ﯽ|%yq<6g؞7oc{|fOyczuTE\R\Ca#}(Fi +4z}:?hVp&EK]~8[fsuġ3j hI ?0'13 ȉjϬ="!Lmwߛ1 谞Rֿ96`2)`?MV3 ;#k=I 8p!kgI|1fxVSL+Vm"J*DKO_z?,ĀV%NPMGǔ1Rc|Ŀ1 1f1wI4ܣ5iQ+0Rg4w .nM䪿h=4N`hsPc,Rn"A0Św(Y_[D6c!\Kk_o37&cfګ fn4 Wd9pSw-΁T#..雐2t5 FZUNJF@H%$/뗀"_4D!MhkhzU1ҿE.FRmq oe41mt/sbRڤ )5  7c0z _k5ƁCƥq3b|CQE5ѮÈ,ب fнԫ+U9_dC5nׯdaN qxz +C6M2|}/p}lnyG4 !!!$9,>ϧ|G{Ur{*wOzה1\49rB4Oz+Iҹr'«hœ|oLٴ\,u\\ƶp#YDuQ ZӰ8"̑!(fE-Y,*֑3 /oM-\# 9p+#Me !_+Ljo|"ȉXg[:b$h x(@r5 m;z+폨;d,$4YX}>ĴXZWVE}ޮxժ<"'xI6(LCWu÷a˰ 3i] Чt^3XEq@s>2Wߦa\F<{0Qޒƺ']opR0R`}L4dG:rtqGޝ\5!e5 Ms3u'԰ń.E&1 auրYlTӰx4G~XEq)dp; 4.aJxvNbQ})}6if7j b[Vz`ҭ'H-Xʐj/"SCk I#ihH2bӢhhj% OB4l? +Yd%jt*ոx-rc kxC*!05"׺G)`?ȔG7bfKG{^_-bMòAaTFqۢءfቇbRL@(n&fEꡌhRµ&!059j 0Y Cf{x +^6UJu190:7̡vmDM)r.iԸYj 5K[Lvv>C%yZO30 LtδdFցhXb圜?רl;JDb.ٚ<=9k其XKB }?mKFLR[^إqSB730}!gKF8!M>xmjfT 2 cmrMC&cV$)`3p8bF}%%W!IۉCmC5@#~!<(B'e&MVqPř&G_y}㳞cf!j]_ȸ]%*^6p!Ag[3&i0y]@S!:zUo#Z %1!a[7bn^0QDѺ3+lƲ ]_'M؞CnR+P\&[6p!KԮO3s-y$?hxywUBy<ۻ؃L!F(~ԅa/sx)Cz]QL-#EL!*^:äCv])qM՜p4݆S'?%o F#i갹yhX""Ij}E`8/jl,丅c_ֵA}R#1ъNdV Eï`7xyan˚xO ߕ@C_rOUm^ՂCC%Q7ǩDzȢ"(7ξ5У0l17i74I*!t(- XVFXN6U̥ȌCY;jP Ы"AD|=Ư ׫c@ǡU]zW%^.?5_7a9dÒRTN8ΎYrd(aF|XC_Ո7u"dg[5DL "IF^"{!X`UVqA"f# ;)^v#D#N(Q4NQX$ZD Z4.ar>p 3^&(ajPÿ[}1F<ؐy"$ čO$cMBIEHވ ؕ.alN<V|]=wUcn[.V X/7=jFиWă>ռc!hЧl pS vUV$X^qUrutPaX_7@\jȤc׫xŁ^ޭ-#k+dž5;Xѫ;{.:!Ȫ|6cѿ=&4*^BE.T=34 [AZsC%,R]Ax|Cύ=9k#u7Ɨ$j52pqmQp;4H\H tؿhUhh4DC|^fS +5.aشI4 ['A3,0n7L9&#C֔C(L Az^q[@;9d6$+ pqx`'鵪>?4v\^yԨ0#1[{ISPusD2M&i<*rȍ*AX]fa!?W*!4Є,j1h&~4M_-41Rմ+AZ4qC_dԊ8䨅pP]hL +aҳhL-ka _"4MbTxהCjAXb *rJ$ܢа%T &ai);qihXrpU&!%(JŹC$Lk&s0)4 Ҋ5$"n[{ ]NahZ jn;BnUvY󶨡*^}2Ox3tO5,vDkנɛGOb|vPC O\ޮX pV0m=CL b P!r`TLê }@sAan87.8PQ$I!z+.`t2oedp+VbUzURp0O ]DhK :vC/SM+LD1k.>w1Xy+@ hh.#bʰ-LC;јtD,$ې(]w~5RaRK$ِ;ҷZ2>K!4D% +Y{hJVrZ Cv* n'vD +,#^ި}Ӵn$i细Efp+>SH,,ܺ!֝n0h)\ XDZ}* +12IGt stukxp)aF&,I'rC59׿sY5'XZ!Sܑ'z%0ݐi4{#B;Wq ͒LC0CYFTТ5$m%fy[ ':M\|VU4m;d%&xsC\b`1L<1.q4ZaS2|vW>!%<89KV1V4qHS\4 +Il) A jx,CD4<-2%8ji0jRAc#٨\jt ZIM'tԘBe԰All݋`5"{!ԘG +nt]ھ׋%1F%!"VrِL |Q6-{1J$ϣ%8S KZ j%ܡY s*J6 $CS/{q0H %3\(ZYY=5s=Zb I֠Ft49zrx|gn<;5qz2zX3ˎ5鏍ن]&J5:&1Gz4M+Ds1W_t&z, jGu@o ?@c.M^_ZhSۍ䞾h.x9(g<EԬ:wș-:qGhƟ35=X@eZI7YXZײ 4G)Ztvv2ECh6aJ^,%G$BC L1 fи; XEǁnC#xE2Y;D =7+("K13M,NyZefb0KN+уƌsb'3¢I si|){p.h%,ndm'l"fl9#"DZPż +ˎ.$IH69 + M /{ K\nI\?at'y +%c&*o?y9F-h:G9Vi'2jU-kg:8k Txl鸓t􃄉;W.c dvT^m(ۧ5_KFsV$E"a~jPSK7/0Y)IFz)d.$)nXbFbbѣT\]QgN͝7L*Ub-#xjAZ]X}$g´bIxFMvmrdѣasHR&bAG@tyqQY S4i'5퉛C,? 5~%@`2PY`iIpm,URdZZJ؍}H1F$xjnۅUEL>X9|[KuJR##MwfU%eU嘆F^71)pP K&n Ԕ1ռL< I}+]>醱jaˮs("d="O\T~KsZa}K/GfF.EH'!E`1(RQ#z)塕~^$)Nhp2I,]ƺ6"tșTB"w5Y]Jy ʯq|<( 7D)qqvSYQZ$-L9r*t@˦5 FMriX߈m4&H_:fEK Q'MWt섖C#+SpA8x8YzfJ_-MrU0` ,p4'55p;S#t|,dӔܫ$i޴҈$8}Z +@D%*jk&68մfvg{¢ XKO"G֤&aήB JALmfă?nF-Y1*4Ї3 *CspV/jAk W &IvU7J`$v|ZҀf椏"aT#t`O+x2Q-B66~ױ>5g Sىs7 5.B<TYܦMRN\` 1~bJGdkN/(dهAT*"P@Q]ۏ̩1EK|H8O(+^GMp}H'b&09yTVW757N^JŤig&}Ep䚶%* +M̜Tb`a#:(G!23Yw]]VXUՍQU@nYK*=]uBYG +5Dj$R$.&ʲgz|eBO DvZVCjV1&<[ra^-E,:nb +JGd'^h%2 _LLκ.93K!SB&G85,r:d.=I=?G\LSKQ\-2sjmM|NDl*qo?5YqukVt2;B0$DR!9&'U!KʇegG<8LAxG.y|З) O g ֳ$H:7-v[_ǪUre>RX1 C^Ƴxk=%,1ǥ#kg; ݐ6Nd38QYtybm|T!*,4U%R,7#yRj9رJ$iņ gqW +V|<”^.Vv5bNťtz]a}կ k "=kjXbAI N-m8l[԰0gZGؑԒRQ\T^Jf1!jTIIג +,i$BK̨T`!{,C7dKJAn'&JYvCFZHS0/Ŀ(rfZQ6.N,Q]K!Zҷ41M[a͡xe=(ƕ:ɠsG_z!RRvԚnx\X|jXx,=b&dƨ$˾=6*W޲@gM˺F81opVh^ĊnVJJѝzS-j;.9ND/$x2Mu{L=d]^٤1-1[qݸ2ñ܂%-r~ȁ /vĬVbT,jb.C(T V̸`^>:J)jEPDLPTCc`tYL\WCfdކj2'~Hx)n9rv}877}aPPAJo?-.e2w%#$f1TzoʗN9X+s8QJƋN%7#DK9NԎ$}817&8%L#ڃ101Pf Ġ(99*tH ^b4(^8X+GʺMBmMHt7Q;8G3+5$9] 'v̺4NB;pbIuSN|*NkjBڕn9XP+N. D2NKqi8Q#W؄pJbu)|L'J9g6h Rpo5WN3Cn'jd )aT $cJm8IVPݹ d̼&S"&)dܝDMi7#tpbq9(y9󛒄rLm8l4#ϛv8Q #GS7lќΙD-n7Q:~oDR|S?WzS,I[zg71/jBobeLv_zq29WzL7m7aNP3LM1y38^6ӛ.s7j>Bojz\M<LoǪYQ/f6æ ؙԘ)J'4 &o]@oj.o4Ȇȹ›nޤ)M&nW8ML= '&Ia7'ބPO +3tM +3dUnob"n o*Zg֡O<2xVVXc ބQobE댟 Ă6˹^M ™n3#\ ևd4iYB~7`n @H/{7ѓN|lTlǴTU0_ d~UޤT~{j"7'P@nB@ź\MZ Ln°kC }gl7X0q6u׷OfnS &&{AfnLm6X4ْd6e;m61H2mY!I)v&nSή'6,&rMY"Z9aн$Ĵ;)=> y4ax7JXM4o6e4+Z˚6@ChSewZmʏ|DSMEp6q`6]>]mB]p%n"˨\Mxe:.&EVlg6ئG׊mQ4SK ~TO&&qN)&hgn7S_a&jKDU&zt@mJ.aKm‹Ól@mJ.^ސ3sX-&!Ԋmjj&ڌm⦀&;`4rj8ZW_M<ΙMYMMf<7 I}F7ah sE7Eטn\MW+\MxA0jvI]D䦖;JntvgrdMdnhtnMMJM_s%7J6)pcMwlMϴansn’qz4mD7IJ݄gL 3Ft%60)nJtѤB#Fz1f|:x|giMwvpiq[L-'̶v2uҊ6&֘6;Y+LpuQJp Ns4՗a&89^0m$8i#I'}XN,4chOa"8ݨ0 )ghÉ)$jc'l_l8.P LL!NٙpRD1id815pJQSszE85tJHpW~Bpz<Tt/\ Nƕe ZNxN\{FSʅs8֤?XNBp*t5BpB\NDֵ~(E{؂pM>Wžͱ"6~nP:m6<`K3IͰi 3b2rOg_MVnco~7y Ds7PBW~[;65/N2Bp + iHp{LnFS]>mLpBj 0vLp|sCp)6[I& ɶ]LNY\ ~/i7C_M 4\MxC ԪYlmMMD&S}nf4:FV?V'Q6'>-'~ ^ip+ =!Z ;Sspb5fpJ7'6̷ZwĦo7ݚ9˰_Mx:s7+d[*+6lMWΊoԯkմқ江;zu}қyoDޤG"&XkY$G߄a4D\N#]ߤI Aut4͟{o/W|SRzMYoS7'|Ÿ8!sp,Q6M]Vl .ߔZ \MQ&Nf~Syy8n0m8=V9;DD&SiHX׹~7]6~ ~7y:N +u\MYLM](% >kQT.6 +prcpMǞ;mS"Bp2spJ=lE8A8$@ h&LMzYқۯM1q`CoH[MU_ћ8ބǮsof~S`W&9` +i8VԵtѾ6b͋ > IvLN#bo…oLgBI6D{dI9- 7um7DS |&x6J%nMђ36&LNO7ը[\;zSԌIBM[Mͦ Y "&la7aT MX=h obXxSfnM-&:xoM,)&<~{>z"!E&^⟛$-&lW~%(;~S*YM5jV|ӃѶ7`oM=uM><"&mMG_lM初4ӛ,-`Dorv&k9F~d}˴iOaorEOw&'t $ޞ]YMَ؆D2SI3m&8~Q9+ZoNvCp +B8w'+w6'9DpX[udCp:ļ\@'9w,VԦDsGpj3†ScDp/++  PXJpj~N;*mNg6dCi# >} Sunm:_V}4M'ߛN|j4'/{S + VSU6f,2 NF IaOp Tuf[Nhd4l҂pb+)·[N/װ S"U6!0=uVAz `IBSI˴ ļ' WSCP'AwP΂pj`E8fɛ2 'fˆ<\N$] bO_Ngʄpc蘦dp )\?ݑZ NL+] Nl;wl~h()M)Hi3$WS\ *.'] +pbm4m8yLNF_NF?M*H!ݹ8Ii3re^NWܧ^N-T6R4p}p={986lNxGpj<5m&8%r-ɴDn{LΤ}3ъpR[&uha8]YSr%yqĩm Nw!NCRyn!Ne qn qJr nJjq;S?e@Ԝw 'Y"21e8]d$I3élNvbqnN;Sspf"B0? 21.2N,Ꜧ>S;SGoN;Tt=unNΕ1c8'i3Im20SO121Fm@sp0 éɦiÉv:. `$ '5; 2zh8+8)cpT;ZmCpٚ.p~k7inM4snM݌rp)xW~&R7]|,DM\blo̬W| MemM6&u9wX~o2soJ}uoҘrO^M6[~U`&mMZ}nMM6h 4)wߔV|S I1Eej7i27[MEߤrߔkL48R[7i756B0B݆$-&I7i7=.}7bf7% ]0?+N6m&87h8iŹ8 Ù6jGmNYvpR[sp2ôspZznN~nM +7&ICsM&s?oov+YMWX8L)ञ$U4[SO Z!"nڈp>EFmNrE8];S3 ‰RZNa8tmf8FٹE8U3;!.TK?M'YZkp׳[N=ipR.ȹ85 +lN}57öwS4⛊mME)XvD7b7}M|7}M|7}M}M7}M|ߤ7}M}M|7}M|$ߤt~M|h|7}M|7}M|ӏo>o~|M|7}M|7}M|7}M|7}M|t~M|7}M|7}M|7}M|7}M|7}M|7}M|7}M|77}M|7}M|7oj_7@'jM؂oGN&']ȝ3G>U-M᧝o-C8r7ڷM=x&"8gzm4֦6қ ϴItBMtob{&|BH9obwtGWn&n Ui7zmj܉*9\9wӍxlEM̆njal^rƣi7|+No#dҍąXEUn&5Y9ĘJGMЪ&=a +MiV6n]3]n&IqRH&.$ssn&:x)0ob%s7Y:ve !J>כlq1D"sq.Λ(*H{p.O&~`,&K&6>߄{;©7l`lp~ftm{Y '" xu ~$[N{bl'-qK}}qㄭGYƩ'-3N00*N^-]2(N5vh'ũeƩʌ"g eS}owSxiq/ G C'T؜UܴgslqK݈lVr:8IN)[$9s"jt8s 9a릳Y4״ 9q>{B,Й qS9dIwnJ͌8MIq[q}:e9"N2Md'Nɏ|,uOq'}:#eĉE4Im8ᠸSj9/ֲt-kF򈓙pym8Nl ũ8lK"(NzUǔ8[:St/tjPˈӎC#N' 1Hq/XF;%I,Nw0xIO_{>p'8 e-N#:O:Q loL&qEڲ=/Mzαig.zӽNh^oJ&̓{haEMIo:d7^oڷҲ4 w3Y$.tF* FOFI>ؠeIoLn*:OZ~e~[M[~\$4 t` Ɵ M"MIo$ 0yı?LoD|wzxқ{lz~"?/"FnVxMoN&d~s<&#%iL^j i3:\'Mx>r44߄KM$3NE&;VFM2Ip8f ^EI7'^'m{}'<ޒkYp]d۲91%N-2̀spn8d+(T +Q@2 -;uBpz6&- +NxlNU[i<ԏ #ӆ{$-Nߤup*::NdڏWnK NH8Ti6O8}ӻ34ϟ<<{N04[m757?0{K 7mf +[Л8ګ-`֛v&YuMߪ7mhI&@&Bo12[?Hބwjotg[Mg筙ovn~9oDߴ.@'!M{c~7B<)2gst4DeoVJz +@7gt|Y04E,'9˸tܜFp|9j8muM)NטQ̬d 96% ]J*Nb -M 7☂}fiȀo'N%+ +plp}S?+j_Nx.qIH˂EI(8_N%8+2oR٢$WҲߴS|n|S?go]m7:+ A4E…|Le |!?ټtjPS +F WLotV%}:lp5l pC%lplRp†ƃ-NR}3鐓iYpw}  'y͖'lptmp.|"hKI^:2=eE8+̳2:[0nbr -x+ eIp:7 +NCZp"в(ȯ&̞&ئ1z8+dTq9p8a4 8n_Nc +pMTm 81+I^iYpz'd [3 NM~Xβ&eaOoR;->tߴ??wg"ߑjzпЛA[ԛW1z7қm7,bSЛ䡆rCYo: +l*Mj WEz,zez[^t.޶қtd z1-&ޤؼt9iQozbb7\YVzV1ݣ shi%i zӫ+3قtDϤ7sCo 'כz& !MH\v&]s֛eo**Tkƛ +؇-MFe9d7x>i o›䛹t`U›o LMb xL-M9Ȥ7ɶMsS7=cxy黓&ʬ~Nқc_4;MniJx{7ɊQ޴ě6 DaBoR-Ms^֛vj+‚?yڸЛtMM[MЛV77M&?ry ei^%V)M}0Lo]9lo*א3tOd7Cq[Mz>L2ߴ+M߄@KԛJ*Mz-zA,MBk79٧7A K[M:}-1%M˙V+yϊom7ajB9.7.^M'?FWzS)ЛNމOz:y7x1?lo)M%u)Jv65LnZA>E4>S&s&,+I&8EtӊnT~NatSTY&YvEiGXMWEZa v#$%؂$2Ln9ta7=)^h7h7p6.ZMܷVx1ݤGȾtI[Mzm&>oKi DJvG*TN; il^MjT.޻ȼje7'I4f,m^Mc-M$t0tck[Mv!MۘsvXvn_ZMcinQ1Ln/mI7m\Լ·nDZ֛*&ߖ|x ,,n7liKiSo8}7 |74+Ho +m 8Ʀ 8m8mЙn B+NNhKi;eI6IK~N5c ~ +hol:gIOꙢߤs/p*rkKii8]J2Jp=m8`Z&m 8hih7STndk?SB$38ؼ}7Ֆ~Hmlo8o7K[MW~'Xߤ[𛰙E %M-M"MX&oKi?XM:-MvP$:Y&] і~[ ;~Q(MgZy.&mڒo֛f[M: mYow[ԛh,&}Pq^Mccƛ̭&]Vxܶ›tI+vӮn*[M-& [ě*.&=%4tο^t{[ME&%t⛮-yH~Spr7mm`(08=-p.?N"MI6}bS bF ϠnYXs& +eG6i4l&6<$&٤MI6̄&6Y6&mBYWWX&mua&1jÑMl yIl&6Q#[$:I[?mK61I~!ҠMl&6ּ&٦$05 ͺMlmb;lĆumb1ُmMl2tmޞV=G6mb; +Mlr6&6,an.(!e&6܁tnn_Mlǣ`s0`nf&ئz&mTbn[kȸML4;*6BGɺMl¤mmb{qn\iM©/mI8I[ֲMl'7i8i4tlUԊulh+9~trcdFy4l6,ͰMl؎?dttlLclɿQF!sj&~DE.:s|ܯ.obq.lo輩&Moϓ"7ag:ov]%71mb|6>ᛴmMڎ Ml{ߤmt㛴!aobWߤ 7nQa$IM57iP&qߤ钗%䛴%M0H~C!&m;J& ga"{oҶP-Mr٦ߤmnt~6Znft]|tS4o7iSāmM1Mp0`7iym'ěoII|6W围]­I3|c&mr 3䛴qf|_7 ߤj7|$ː&ߤo&M^Chz6<ޤ >Ч7iL#7i957IAe'ě=2U2tmM0TQE7iôkޤ &q*7i+ho:,MڞMRM*VE6&m4~6.moҶa6&is围viMj So6g:I'I.6&mpҋ07ihlSo&4&Mx&mۼk&icr| +䛴c5㛴ڤMI +6=7iMMI[ttj&may%I6M+7U wzl&m<|c^IӜ&io҆qz{M&ߤ ˛Wf&is)M-w直 T7i3k7It&"UX񛴕m&I74>}-ߤL.ioҶ>h7I;u4\%MڰᛤFMڰ{eMoҶpo +4BM*4M97iNAoW<7IT;p҆ iNHX<{d'm3΁,$홫भJEpo4FaoD[IY(/[I_v~6lN|ƛ直K7IIۉJBI@ &ߤ]_loV䉷6 ߤ R7 $m9io17w{$IgYI>8j7IEx)loҦ $&i*mIǤ[I9 $m~<$ *Np]׍; mri +N0jasdJ:m +Nx.*N*X +$7 Fpv{IpЛmNʜ~'iHM z(c4'Ȏpv*mNd(8 C8I\`NtcG8IX8[IG% lpBƞ 'i셺$x3 $ OT$ G ZIځПNҰdIVy`39IvP| 8Imp~t6'iVl&p^48IΕH9ipE9 8I㰷f&.Oi&i:a~4Hbè}5$Mo77`i<$y`DYi7}J7G`~+oe~nCd~.UMIy:ook~\dIwor ĵ$joBEdz~Z?'7IfZIWD7IH~4y| iMh//7Iqo/7I;86&iXB>MEQ֜$遏PƗMIFNo*͢9Xax}MIځ}*I֝T|hyI:2Mn>&loMq|4i$7IT_p*Q +j'IPR'[IڮI۵Z'iH +N'KNҰU[I8Il_S#MIډ5j˦ऩ&^ئMN+aC6PT2SӛخwJFpvv'&< xMIvc^ pbU4 !n<lpkF ')8i/ߊ -8iq`_t|]6&篎ob{u՛xiLSobM*vbd&4&g7iO&&17f&-֯7t&r&~d&w׹o: +ob; g*ذCM񛴽JmMl& f&gIҥ+&Ć[lobg MlGobF|SJ1|6\a|~MlCu|[u囘>-MlޱMIXM7ɤ?iob)6&:p 7j&&;S_ȶéBǼYUgxW}l2"סrc{0(F*VW}ysx9/T\5r ܭ<*ٮ]C>Ms6f?l~Yf?،`l`l6f`l6f`l~66k?If`l&`l~6f?`l~6f??`l~6f?`l~6f?`l~6f?`l~6f?،`~6~6f?L6f?_?،if?~"`~6_Ͱ+ 1H]5UE;gͰU7hg֬YY3l55Y>Kم6#k+׮uˏ\ bǰ˼kv uyu9qˮ%k.& ëcqkva 5ۂ5z f@&f 'Lkv/2gQ58ȷ-T3]_Gp2'7pP xB{X*jvڄ?\D&IpGp ޙ7Ͱi¢i3 ̛fd$ [.}a&4?z2pN)f^zg4F)q`aI,f f8ͣfyB[G@0_nUA=fXS-@3H03fcsq[f]ɁEЬbh)f/]z>, m!U,GsY)t4=aϿ>ʠY?2YZpנ>sd4ÝۍZ0I4Ä՛tg/{fIҢgWձ03z֜Y?/YI93Ǚ:ma}AU<=KUaA*zfF@4zf^3Ԍ$[0S!S[pfXuQkYE[6̙} yf~OJ̰%}FYo=k=&Ь;{2hVCp!sA/d YyЬr-@(=%Ьb[:A.ˠ~}e ]̰xUR5 +KZ[줙@"vQ3{53,giZY3,?b󚙬Oa E +53<"43,W{53ޥEl˚Y-:-4*k֚Y3ж8}Eͬ^ٲf;ٮal}GߝhfUiJY'̪_6U "jf3v6'?mUƩd̰'MagͬY3۹SN>y03@2뿽sj?[2뭐ΖY?:peWl2}Ӷd,~Jk7oe?L,:%̬gY`f/flA3{uVR[if=53H%ͬOb3-̞1cˆ]83oY81w7kf6 -hfrG\)I3_^dl l l" l lʄ3333r3<322@s&&#̦{&n&`-3C%l 0t23\&o ',I/,3E̬(od2fp3;DŽfo3VY^afrfvdض̎qܒeT’eKu2OXXfjK.%̬caqw[afcKY6-`fY |w6鐿cf\YR-7EN3 3éDZ>W-cfU˘Y"=rZ03:F VSĊff촄z03.:oe=kA]O,Yfم};SY`fff -cfl K-13njK̬eLϰ <% v +Yf/j+l܁A9l+=U3菄9-bf!-bfPߋ$3ad4ح6\=\Ǵ̠JNyLA3YkA3dh֯pg{mu|Ytk{[qf/g!gLjoK^gș]-ׅgvq3WK=^,<3,Q"-{fYpfU?9g#?83wș\sfسW83jřa~YcpfA3h&  ,fohvbl8hvb]֗ݜ 4¢-f/I|,fEb頻氟h&=4s͈,8ۻɎZpfG˜məf șa~])J _ꔽi&٢ivso4Yuiv igJfe kfFmKӬ0`[fqYfZ!l␶$Ơiq+ Gɇ-f2LZ8hnAYL0oM3J菐MSؼid|/,L3y*%-fxEӬ_3̦Nhl+miaP4F4;uzJ4r\f2EѬ/:fhKѬeztt47L4k 0[.fc14F5(hdz lXf47.L3ٖ%iVX"t[$&Hi/Hf^;Yfo-E WbeҬ ipg4iw}ے4' z ͰA)iւ4+/)i6OLc %i?NH$*tH3֖u$i舌iV=i&l4+8ِM3K=آi66LlْiV2&XMgKӬ k]FZyfX~%+hw%Ll4-@Yh۴^ ѬoTXfX\fϖHWٱ̢DS D3?H4镬HC)iv%jvp5O-iUUWY)zTt516ma~:dɪfْj6/T[.Y3Q֖8fT3]f^jU3YPقj6Tw'RE ̪`3jlI55T3.Zf׮ӠٳuPdjvsjPnUqR m=;kb +Zi ֬R\fmk֌[k6,]3.ok ϸآk6y.]3|Hˮ$-fnR_fpauh5{t5{ _f܇O]돕k6گ\CVX}`# ̚aBؠ"k_̚zB^2ju _ ,f2:-fs39 .= <)ӊ5ӳds̚aȠk8 ֬(:vɚm6xĚq5Iod]t!\5Ý\k?qa56Ml٭SfDJ˰6_l6"lRYf2uퟸf3ǖ\Gk6kꦲEkvDfakΖ\qr᚝.\f -f-aWNXfܓVYk ɡ% +S`QK?j~jV\{h\b^2;[`N,Y`ja1UV+LL՛tB5lA5;1 +`hhI5uB5#U3KÖX{t l/X~269Ț+앫f͸?ĚY9k_UͦLPrVO5f?ՌTS~YfT㧚Tj駚Tj&TjTjS~O5O50Ji-f9,5㚥f\МkqR\kq|Yj5K͸fY,%㚥f!9,5f`lBYJ6Kf9,5#fhmRhmBsYj6Kf9,5cfl3߼mR3Yh6KfY,%cflkflԌmR3YjF7 f,4Ǜfx oR3Yj7 f,4Ǜf|ԌoR3Yj7 f,5㛅|ԌoR3Yj7 f,7 g,5怳 pR3YjpRkF8 g,5C扳>,$Gf q#R3Yjq#R3Yj8 g,4gf-_rAR3Yh9K g9,5!g!9,5f3,%Þf᳔ |BsYj?SsYj|BsYj>Kgy,5fЬ|BsYjF>KgV>Kg,4+dԌ|R3Yh>KR2Yh>Kg,4gfԌ}R2o>Kg,4f ~ڇ`~R3Yh?Kg,4fԌR3Yh?Kg,4知fԌR3Yj?g-4f R3Zj@ h] Zh@KhY-%Cf!R3Zh@Kh-4Gf!R3o@Kh-4fAR3ZhAR2ZjA !h-5 ER2ZjA )h-5fTQBs +ZjFA+h-5fQBs +ZjFAK(h9-5fQBs +ZjFAK(h9-5)h!9-5ԌQB +ZJFAK(hy-5ԌQBs +ZjFAK(h9-5àfaBs ZjAK8h9-5㠥fМR3ZhBK@h9-5f 4R3ZhBKHh -4'vZhNBKHh +-4Gf( R3ZjB Yh -4f8>-$ǡf8ԌR3 oDK̀h-4f@ R3 ZjR3 ZhDK̀h-4f@>-$f@ R3"ZhNDK͈hM-'fDԌR3"ZjR3"ZhNDK͐h-4DK͐h}$ZHDK͐h-4gfLМ1RL1RLج&VfM>-D ͙h}&Zn5rLܦ5rLجGhY-D3b&ZngfM>-6kh}&ZlD3rLجgh9-D͚h}&ZnErP>-6h},ZlEcb,ZnE[颥f`E2ڢ}4ZlF[Idi>-Fh}4Znr4ZNrh,G6iCh}4ZlFKh-4Gh!9-5CfhR34ZhFKR24ZhFKhy-5Ch!9-?-4gflԌRlR38ZhNGKh-46uPR3:ZhNGKh-4ǣh)7ϣfxRxR3-4f R3@ZhHKi 7i}@ZlH3r,ۇf?V{$-6)i}JZlVISbsJZjFIK(i9%-5fМQR3JZhNIK(iy%-OIK(i9%-5fdR1LZhIK0i9&-5äfǤdaR3LZhIK0i9&-IK0i9&-5äf4ׂqR3NZhIK8i9'-5㤥4串fZpBsNkI 9i9'͵अfZpBsNZhIs-@i9(͵ff[BsPZhJs-@iy(74k0(IؖO[Ӥ[h/Ӥ2E &M~\4I=f4i%slO[Ӑ/w5i.l&ITIOvn;MoN?dg3vK `I{;M/+Mv\d4IY=4if4i?SӐ0v;،& [C6I 95MZy|,MIo& 4e:+ x:b4MrE+MZ?;[in(lJӆ{Ҝ&s4m،&z4i{k[iڶ]JK">&a[idPV6،&Mg>`I9y+ `ZҴf4i:E+M[>lJvc74gif4iʗҤUمܢ&MκٌM-ZiҎJ&;q[Ҥɂ$6cI+r,iJOD +Ҥm4v橻Ҥ4m#Yi{ܼwX&M~hIzXiahViJ&/[$eҤ7;Ҥj}Ax+MlJӶV_6ci6 & vJZҤaJҴ&GE*MQy4i{W$Z$ORb +o /IA6#iR4Ľٌ&Ki&a R~j^Jyiڜ&m7& ^6#IJ-Jip[x_ڽ&EKiѢ&/4i/36#I#3ҤOн&m34)$s3(M&*[&Iz.4iwI-:i E'MۮIcE0qҤ9'MYjpt(qҤ=E'MڭdIO?& ɤI9cҤaA~IV!f3LV9 & &>SҤ`kd4io!it/_H4s!iҶ4~xysHiIv'ITw=H4pWHGҤzX6W~$|nLHGҤE9AҤP4iE # +EF^0Ҥ]g4i8eٌ&^xH_񜑆V^} oHVik`3D4""M.hHvߦ$ʄ4ixҤ 6#|Uٌ&ME(I;i$W 4irZf4iU\4iI@~F2@Z|4izE M^ & 7%9 Hdx4IկG'm-hǣ)fx4iM/#ϣIP<4 +js<Z?x4I곆IӝT-hh|hd4 Ѥ-+h_NG+Z&Iau4)abt4[ѤQ :YV6C}hѤwy ,:$adt4ioW=XMZft4iX?ъJZo$&m?fm4,l4i{+`nyoFv?jEM߱}6r]9 MEҜ&M\h<64c[6m4iUMSohHxtF[ +f^roF?:C^'S[Ѥ7~x 7}zMZ?V7-/;yi4ikOU,?N:ֱE Q@>iBC硞z z+6K=lB+rhBCðA9^6gf,44l Phr=&#d54GagQdD$ +Qh`f(2(a 9 OG0!g댄#3ł7аYL!@hX ȡAh_{ouorǠ tm$1.<> 1HoAyV(hFA=A= =w42 #8E`N[@hXp  4L,1а+@lh@sL00 O"6hPt0j .`K@+ VG/ 4|8ٌV^<e3&kb?3аcg3b{>Mփ| 4;l@ 2h<'aD+f4n7-vbU}žX=vs@xMi{> >by xq{ban?l|: Э,}آL GZ.SA0YhxL8H g@ﯟ1{PvY'ؓr,'-hxBͭ @ $=ηvh^2y[mz4ϸ> ;ϱCyz h2q}ZohH+zi@ӷ~?h8d`ͯ5_; (r}4?^E@۱thnа׺gPq[`> A<^>ßELt"6gx!i4+g%]7J7/aīS$F> + 5}Y q?wd7>R 駉'e_g3ܚh|<|+b y!y 98E쑕> +@M7E ,|#=b~N; _/|&֔njQ>>(gyEJ/]2lF>{^E?f|^?xzI32ڷKo]"|c0M:쒉> +l,}%R:g`l~. !.d3n;^rױEg + vvމ왌2yxXس*//3xTj=fG=d3/1M=e2Q/6JWz1ճ[姤SϰO02 ɽz=z 0=c,|ͨg6ytgU>wz-\G h>lQ=ݨdH/zcٌ 7Gް꙼?+ha05[ҡgX%[ҡgrruU/AtKӣg"x)͡g8S z&.. 7Odyݛgwܢyn`0A&10э-gOu\|3۽y Z4^l=I-gsk(ͳStq٧h<;qُZy༳*#18Aa V}rm;6㼳"ۜlwnx =yr&gb;t GqN;E[NRqܙ\OM8Lw]gw;]Ҳ߂pg26Ý})/;~Uҁ;SKf3 nX7t.Sb3Yh,F;eVgHsڙlY]σhg8xlǬ{YA;vkgxVrVΰYigOvHOnʲσhgtaNm⵳ib3.KŚhQ;A kA;&KC 7)߀Ϙvhg;`^;ClO3rg7;ۿuC-bg»JQaڣwZD[)v6鄝mvmLfؙ vaQ ..] w%agܿbsنۺ#"ag);W ^~/;6C ;)> i;giΰ #v텕I̭dz?<=u:YYlV&gm9?i9WM;8 3||8{Lfqppެi;7 FSlÅgcl*lěΛoǩ56l3w,Mf/fcl!䖉xkXf4:f$g55uޙlAŬGstTH73]77%n6nv&G1n9M1ͦ>:o6XWռ<1,UΛMy8ϊf{*x.8oZdql.17bjЍ78f7N|(xToɢo?dztGM}|Jΰ)p6aE2g@gSqg!4?c gS'qg~$7ΰ)p"7afuYgloXbu6.ѪB̀yY`Ƀp6@l"eYĉLpSd8Y&sp gQ g062ly4 d[F}woFpD8* gSrlOqQgrAv7IA qs`aŅ{&!ζhl6Vp̗ gygk׉p,nD8̄Lt6rQ gB먈['&`Fq1؉[<0~#ƹQ g2)Ip&MO&r>٘fc,vʉ1pg3*p[,D8{p)_g-gpp61΀3Ep[T8 'a4ή;MpQrY{%ϔL8U~fYf7#L}}&fꛁaY۶%fu,ʻgb߬5?alꛭ{bfz7kov)7 Ix{;Oy۲EY/fK}Qf7k?7k߱_*x~4f֙fq}9e> +,fx-kٶAED7Ȧz{%~R<ݞ1ֵ͖-7RnUlS)Sl a;*,,nvWYXfSlcq7e_f@7COL}87Yolꛭb5-f{|+p>]V99αm6֐mv_561{6np[mDlJ}Ş)m7+eY)m0gSl, 7vGEof&*lˁN;gSڬO4i>?fϸЛf~Y<⻾)mmc2BA6:Qpٳt8J,VEMqf9(q5TUY_?{TYtIm[<Mm2Y)<)mm6֣eS,X<2Λ mv]-hr_a=@mfm^f5~<}gjjjm-6[D6YMmhkƌ^鞩mN6Ym6-+lA8J''Y'6Yl>'4fc;:66%m>ד=S +,F2L7[\7[rq ݬoʲovsocݟ&P-2pG8o7k{=fm'tϡo6Y%oz_fPV6rHs>ulV2,U8>JmVfcPmcIve9W4ɣnr~fk0k֎ل5Kj?6kPFjzsլ +PBxt7gb#fbncxnɚ9>Gɚslʚ)ٔ5{?fqXssٖ*R5Tb13fٲjvr_Y\BMTa^&Y\--qpѦg-6{է5f`5#.l\&+|1f}XZ6͖(a>eS,n@f;6 f`m\>JFsD +׬:J,n1智fs,έ\i5q˾5;fajfs'?6f}`l>6}`l>Yl>6>6fUfWfYcrfͤlf `3kI#f&l&`3k qcf@6%ͬMLf@64ͬl& e3K YLf@64ͬlfmfH64ͬlf d3i$YfX65ͤlf d3iHYf6ͬmf h3iDYf҈64ͬmf h3iDYf҈64ͬmf h3nLYf҈65ͤmf h3iDYf6iI"f6F5ͤmf l3k6D;_4ͬmf l3nlY$ͬnf p3iY$nf p3kI#f75 x3kYLf7F5ͬMLf77ͬof |3iY$ͬof 3ig8vgR85Τpf 3iY$pf 3kI#g8F qbg8F5άp&3kYLg8F5άMLg84άp&3kYLg84άpf 3n YLg84ά]Τpf 3kI#$pf 3kI#g8F YLg8F5άpƍ3k84άpf 3iYLg&pf 3i$Yg҈8F o1qf 3k`I#g8FƙiYLg8&ƙ50άq&3k8ƙ42άqf 3idY{LLg. +g8ș5@Τrfm"g9Fș5@Τrf 3kI#d,sƍ3kYL1gր9F̙5`άs&mC0gր9F̙5`Τsf 3kI#@g:FЙ5άt&3k I#Hg@:ҙ5άu&3k@YLRg:Fԙ5άu&3k@YLbg;ؙ4άv&3k;ؙ4άvf 3iYhgP;ڙ4άvf 3iYhgP;ڙ4άxf 3i$Y%Ϥxf 3k I#H<63K I#g@<5 Ϭy& 3K@I#gր4Ϭ|f 3iYgX?4Ϭf 3iğYg҈?b՜g҈?4,f 3iYh@5Фf 4iYh@5Фf 4iYh6,f 4i$Yh҈@4$,f 4iDYhҀ@5 Фf 4nLYhҐ@5 Фf 4k@I#hҐ@5 Фf 4k`I#h֦& 4k`I#h@%0Ьƍ 4k`I#hAF5@Ь&4kYM)h@AF 5`Ь&4kYM9hA4rЬ&4kYHh@B4Ьf $4i$Y{N MIh@B4Ьf $4i$Y HhHB4ЬfmJhHB5Фf $4n,Y Hh҈B5Фf ,4kBD5Фf ,4k`I# `h֦&44kY Mih@CF5Ь]Ьf 84n̡Y$f @4i$Yh^$5 ѬMMhD&42Ѭ&L4k`Y&$2ѬfmhDD6M4oDF&iy&64ѼMeiB4Ѵm0& Q4oE6Q4my*iCTѴmhަ U4oSE6U4my*I#TѴmhަ U4oSE6U4my*iCTѴRъvh@F+EmhF+eiB۴ѼMMhަmhFvh& q4oGӆ8yp4Mh&mhG85ѤfmhG85Ѥf p4kI#,&p4kqch֦&t4k_,Mh@G:4ѬMMhրG<4Ѭf |4iY|4)Y iHB5Ҥfm +i@HB5Ҥf 4kSHDB5Ҭ&4k Y!M i֦&4k Y!M i@HB4"Ҭf 4iDY#MiHF76ҬM#4Ҵm"i& 4oSIӆJ¬iC%TҼM%M*iަ4kY%M)i@IL4bҬf 4iĤY&3i&f 4iĤY&0i҈Iv1iVIFL5`Ҥf 4kI#&d,&4kY&M1iրIFLɤY&M1iրIL5qҬf 4iY'M9iIFN4iI"'8iI&N4rҤFM4iI"'8iIFN5ҤFM4iI"( BiJFP5Ҥ1ƍ4lqb( BiJR6Ҹƅ4l*qc) .qc* RiܾT6Ҹ1ƍ4lJqc+JV6Ҹƍ4lqc,ciKX6Ҹ1ƍ4lqc-kiTKZ7ҰƉ4lqc-kiK^7Ҡ)Ɖ4n aS0iL`7Ӱmqa0iL`7Ӱ Ɖ4l +qc0iL&b5ӠFI4j"A32i9FM4jBAS2iԄLfd5!ӠFM4jBAS2iԄLfd5!Ө M4JbA33iLffM4JbQ3m67Ө4jbQ5 iDM&j4SӨFM4hƦQ6 iԄM&l4cӨ FM4hʦQ6iЌM&l4cӨ FMشM&n5qӠFM4hQ7iM&r5ӠFM4j_,+4jbA3;iN4LjaS;m6ӰMOæz՜Oä|6fs> iؔO4lʧa>m&Ӱ)6iؔOæ|lƧaR> i39M4lʧ|6f3> iؔO4lʧaS>jMi_j9-om? +[gjAc8Z``$>N`J"qz{k{!%1M_>/sn*-}}X\N} e1}W)>_?kxrLEhC*އ^㑮cULeoQ{֯J~߷UtL}.ె7fC?_ov~G a[|/ۛ_n/'K׽&]& 4LL zR;@mBm'>jN{ޚvq]vlcV?fo| ?i| ?foCck[T[;i^~˴{Ŕ~p~gzi/,e}5<9ω'^ʿ +endstream +endobj +193 0 obj +159821 +endobj +194 0 obj +[192 0 R] +endobj +195 0 obj +<< + /Resources 196 0 R + /Type /Page + /MediaBox [0 0 334 298] + /CropBox [0 0 334 298] + /BleedBox [0 0 334 298] + /TrimBox [0 0 334 298] + /Parent 197 0 R + /Contents 194 0 R +>> +endobj +198 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAA+mwa_cmsy10 + /FontBBox [-28 -959 1123 778] + /Flags 33 + /CapHeight 683 + /Ascent 778 + /Descent -959 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 199 0 R + /CIDSet 200 0 R +>> +endobj +199 0 obj +<< + /Length1 2020 + /Length 201 0 R + /Filter /FlateDecode +>> +stream +xU]lU,RbivZ̶[ +XhvmeY +vI;Nw7ݲ(hbQテ!`1IbM !>@&3. *m{Y0x ,6ppr`"ЇmhysM7=vO',^ĨxP#_o7Mv]cY&%H9>!q0cs3#7I}5U*Q9H#,/N-*QM-v᱓6:bw]Y/*M6eC o9iml aŐPhqlF͛c #I6l84hcFBC1'), 45K:`whoi~Ctw¼^GsQ訋^++?[fYjVjR<sY(^F-6|uAݬwͶ2"kb}VT5HURvVTJa:?L̲!8^sn`#Y%_Fnirj脗yJfB61p,ז+]Nc8 ;׊'qfMût⮞zRwJ>N$G%^P ةQî'=k7 L.a>6X> +stream +xk``h +endstream +endobj +202 0 obj +12 +endobj +203 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAA+mwa_cmsy10 + /Encoding /Identity-H + /ToUnicode 204 0 R + /DescendantFonts [205 0 R] +>> +endobj +205 0 obj +<< /Type /Font +/BaseFont /EAAAAA+mwa_cmsy10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 198 0 R +/DW 0 +/W [ 0 [365 0 ] ] +>> +endobj +204 0 obj +<< /Length 206 0 R /Filter /FlateDecode >> +stream +x]Pj0 +t=,N(Y +9t[[N m琿*cah{lN^X gBpjV& +:G:g<\7^3GZghr4u#K?8PrW2< Dq$s 5jˠ9H$݈ŭL%UM5-`T *>vge#ZR:^ʁc } +endstream +endobj +206 0 obj +236 +endobj +207 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAB+mwb_cmsy10 + /FontBBox [11 -215 942 727] + /Flags 33 + /CapHeight 0 + /Ascent 727 + /Descent -215 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 208 0 R + /CIDSet 209 0 R +>> +endobj +208 0 obj +<< + /Length1 1992 + /Length 210 0 R + /Filter /FlateDecode +>> +stream +xUmle=Ҏ{`3^wLz׭s%["AZC[خueAM/CD%:_r4!HBb  m >s/^:jxiZ |'T~lTvvSdg҆70$\qm#U7s3lxl~b{gUg +l;"9I=g,Q!_^~uK_2 +y'.zWJYN,1qPo~eev2EcQw)8fg33 uk5Uuen(H",͍!UYl3&񆞄Mzmb'LHU3vUYy1VMHi=iD%S˺\> 5'- JnML1DIO&^S|r]O>Rl͹-6Wl0ȹAсQMU%EƉRXɤ0Yk4+R%nH+0EYL2&'kQU􀪜EX􊰨$-p&L"aMXTTao BUrIU̺vua7YKn-&#*ĸ9 Ony}-4h"'\YxkC%B5nń`9U;[ֽq_.|[_ޮٰT]ɚ` +U;͞6c%Z!_FΈghyF'ʌ +hR}Bfp'ޥ.Kd km ѽwBxc[EwqrSaw0/;`l>pJv.BLXG uLr0*`-,`l^sMtFS 4ioh:F֠SO KxzGI;MJ$El-Z (;Iˎ9DHu<&*+qdlU;Aԡ٩L*=-m InEb&+ -R@feVbFј*@gKӇQ]'Igt&?H{U5JQ#TG*;Ixtld> +stream +xk +endstream +endobj +211 0 obj +9 +endobj +212 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAB+mwb_cmsy10 + /Encoding /Identity-H + /ToUnicode 213 0 R + /DescendantFonts [214 0 R] +>> +endobj +214 0 obj +<< /Type /Font +/BaseFont /EAAAAB+mwb_cmsy10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 207 0 R +/DW 0 +/W [ 0 [750 776 ] ] +>> +endobj +213 0 obj +<< /Length 215 0 R /Filter /FlateDecode >> +stream +x]Pj0+l CԒX}q z0h[lE^X gBpjV& +:G:g} +endstream +endobj +215 0 obj +234 +endobj +216 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAC+mwa_cmmi10 + /FontBBox [-34 -250 1047 750] + /Flags 33 + /CapHeight 683 + /Ascent 750 + /Descent -250 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 217 0 R + /CIDSet 218 0 R +>> +endobj +217 0 obj +<< + /Length1 4492 + /Length 219 0 R + /Filter /FlateDecode +>> +stream +xX}P[ו?/=}>}"Y` IHd ! c[p`p:IIu&;4uS'umّl֓xѴ4֓vndI?;['{Cz>t9sRq{mJw-7{bnrZ_".89}t`px)ˎߨ=iʣ*6y̡#;Y C]H3/ _?=2Ëy@v&w#ȣ={s VSퟛ/ ?| 3TŅPif;]$a +OyxYxq +ihHB#4*uz_s}Ľ]~= %8wϙw_ٽLμϼ\eQZKGI ъ_5xy,_%iJ6>Yy\p +m= _p=5nЉַ߲YS.nJhЋ:X/3}g鉝Jx 3ti՚n@2)+:%CL-[fYyr*ufh؇e[-w BuWۇ}Y?͎ ?xqkώH:Mn&ʚ˸m j䙮NܛV]r 2; +?.Խ6wT!5 ^U-8Uz@邱έ|VV^JVV/SL_ t7.)aX3hn pD :Va(s}|Q @16s;0\&m]ؓ//Z$\fT1~VZ:\ NJynǍg;7 ++oz0FaжMZNPq7FP7# " MvmMdWňĵhfic&j7T5n dS45&jkNk[WC)BN3W4&5!NG:Ϡ1!!R t'kúkg4^xpC??ADY_,1tnag8OS9w~u06rrXb9t.FrUn|jUqߠ 7YeeG$*G+ ^iKX{gV)_T ӡ練䱶r5A }qC7 vn=T+\ӥ_SKݟlo#6Я6?<-+,cD|po,!WU3Oݒ*D[, AW.t x9vёDɑmd"iǝaTۈzN&ͲZ '^*]*ۧ<zVCM9]ѣɞ{B~eSا%V;OձF5܎ŝ]Ca pMA_m8C[߾q=}LoQ:U8#e#5;!j'W/*$Q[HލLj]5;ղ!+6%^O1}G-#6aԊtyc?D_[UДdn~^' +Ptݹ봃Cl +q%N^03mϷ2ų{ġy- H?/c\eu[c^Cx5vI^Kk+P"x&>csSNJS!a< ՖLP &jyRX}.bw}tm4lWAO-xzTcA'o~8}fg ӗ!Ip]y6~V#oC%}f\ct=i*D3`%'J4cS907J4HŠ]f4A%thHfq̹^yd`N6S0 y82CifH7,ڦ`>LEMցu-m 6k,8GqMf\_$ofVr!ԥVlVa#x뛝;:?5?$Xss", Sܗ>-Fiy@ rH},nݳ#3;=;45{ ,o-榕4.0Ѻ=h M(<3633CZ$^iq<{HNNjըo\k(Q ?y bX4W.*͉*-g"˅ |R96, avxX15*B!qpF +endstream +endobj +219 0 obj +3315 +endobj +218 0 obj +<< /Length 220 0 R /Filter /FlateDecode >> +stream +xk```rY  +endstream +endobj +220 0 obj +18 +endobj +221 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAC+mwa_cmmi10 + /Encoding /Identity-H + /ToUnicode 222 0 R + /DescendantFonts [223 0 R] +>> +endobj +223 0 obj +<< /Type /Font +/BaseFont /EAAAAC+mwa_cmmi10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 216 0 R +/DW 0 +/W [ 0 [365 758 786 750 612 583 827 344 276 411 828 ] ] +>> +endobj +222 0 obj +<< /Length 224 0 R /Filter /FlateDecode >> +stream +x]j0 :NC()дJjh8})PO%d)hѻe:miDh搤.aQnPnUj ɻjlv)tpCL>4ΨzU 9*_N!OX8pB=V9Xflam']( )%/LS”2c:3L+s Qqce-Ӎ,W*}q:Crv.4fA]Y C]h棕 +endstream +endobj +224 0 obj +280 +endobj +225 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAD+mwa_cmr10 + /FontBBox [-43 -250 1008 750] + /Flags 33 + /CapHeight 683 + /Ascent 750 + /Descent -250 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 226 0 R + /CIDSet 227 0 R +>> +endobj +226 0 obj +<< + /Length1 6436 + /Length 228 0 R + /Filter /FlateDecode +>> +stream +xY T[יiEHB -H!  /`#m` ؉v؍]lǓɸ>i>陴viSI{i&gy%y$;I;޻ـ9덅[4qDS$/v̍0  ~2>;O& ʉZGN@6KgI/ٻ0Pӳi_@%}nfxa +`) ݾkxf52f> &ܟKa#KxKA%|&&K4<{??o3x RpspN#0[a#$VAڠ  aA8+|?{S"{cn13<0I |gp{ZZ\W2| ^\Q< g< +'!Bs/,<#ai l1ٺ,FR*c%:vK} )m]ܥ)lPSp$Ⱥޞ]ы艾.fIΉ1[o_o_UVAkãIr/^nP2u+m@DGm j ߾~E7R-7JvLvwF$:mxwjL1<7wLo/KnȰ'\)n$E6Cz?j7*%e*@L%8qϐ4) $ /(Q\G*?5)k"]WIZjg[@7+ x񒂛K,C"\da^vj$28 ncb ' }5ƽAx V S-T#N`AQ,yf}_e(lW: &2goWBrPFq5.Yu 46-*{A +۠5qU䝌X.b&FV5H/bW.ҏ'iy;hgO5Ģ \6˧2,])EI:Õʬ DmXgٸYAh%{D  *j%ifhh6l UFj#!vPM +`kk~}9x"5Gxzvxt]ߗ60U&Wlb# +OӞZo j +R(8J% qgA)T>ؠ갡v丂:4B\=JݲM5*_:O&G Pk)-J,IbR\0 hЬellVZ \#kt nf26uյlvFd9ܙt4qpSPjO_[|LEJ?opGj=¥^1%ab 6~Y +6<lL%UY. Jށ} Z Yc.di6ijxf,l= -SkuFa4,.owgG~vp'Z ,ϿbNOrfMo@2"JO f;`†,^LDٖ:d-H@H,5Hhu!3Yg.Ɏk:G;w,_rPg_|#oΗv 81U|.xA:75WGKЁZOʨ@@eQ+h&fXf8q&n?9{ +}LY5ai3Nֺ:gS+IOxU&Ժ~Kp:URgZн7ȇ$|4E{*Vc/Mt,aA_lSGz\ +`遦4On۩G3Y/Y{qǶN64^޺(+rzvj`@]fWkԶ<:&`_cUۃA_eP dLi6YmX+XIcVx[qS|#/f~`ٰe[L52_L_yW)<)TlkQCQ +f(EA1%)XfG=L18.C~"UK@:.).>Z*ʫ*VU^TN*^ثb2$S+L#$QTfƖ%fG?Z~jit0:|Oo>)2ұ`ΦXzYª2“F$V7Th1P*"*MHODB*0/mڽ`e.+W{ .^)JKVLdևraqQL@kwA;v@ K)0^}DH(1R5ȃ' :j5?7/3FQzRȣ-%ꅱVt.nbc" kvA0gSj-xZ~=μF{հ.30Tr?||G(V^#Z 7D>Ml',z'ܹ5gs6؀tJ!{Z?vj +kC{QRKKx$O2,--$*Uy*Q_qE!kW<'%(ξGq+ڬARyf X^$ZO\+St;o@?xVa& l4$k"5%tD C BsxӧIMR9xkFwyCeW??,q:+{+7|ixtt˕rK_lWSlzf1T9\_%=ܾ6>Ҷ学eNLg v5lh¡dzרLo/^ +fe9z֔+#9{ɱ 5100%=(,`e2DHN~s*™, E$˄TNS_au;WFFZ7Wx=y;׸CORU{cg?>3?Lg3W?{bm%.]UkЪѹ+Px<+SM'Jk{GɎ-@/䃩'b:DE>I=gwOеf3zjcQ[AxF>vT3ٔDoOx&/-٘\0-R8nbEX,{o`s:1 Uj .ɓ wk\ue LGPp%Dhv9;| ߩ[P1va/`},wLJ_Y"MѐK* zjNOɣRR˨EɿTlY ~+S%/@w1tMc_]ὫrPIXA?tpʕr 4@zyp +|^.nu#=.%JuyOvDlz8dG VRբ&)&azMeɚsA͍-AAE.yh4QMFFuY}z&+[ CaItff08ɉG)%FA!9*Sj9w@s{8AÍI$&xB__}L$9he);u +Zͪ윎m[㧴' ->XF}~!7א_IO]O@L{Y qE$Aȶ̛numٍ Jyxw稴3 +{4y2rSJ\6w#]>-#PEnh1ҽLޣUZ$:j}>!4 ^W Wp<-mBUwšPޓYBF虧32Yx%# 4+z9i$̀32 vܘ9zC>~%# 4&,"I +CUTA Ina$LbidZ X+HO$6/kcԏw9WLv$iW 4lIb Aٹ={emx~rھ:h^NOc؞cʪճ]t}vzzl]~cӁ6Z`mcWr90m̞*>3Lw!16oz;{qyCZ{v؞T{!J*dOt8P̑ۇ3?Hebe6ݢRnQl{]-[|Yax%XE 1 +endstream +endobj +228 0 obj +4773 +endobj +227 0 obj +<< /Length 229 0 R /Filter /FlateDecode >> +stream +xk0cdX*0[ +endstream +endobj +229 0 obj +20 +endobj +230 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAD+mwa_cmr10 + /Encoding /Identity-H + /ToUnicode 231 0 R + /DescendantFonts [232 0 R] +>> +endobj +232 0 obj +<< /Type /Font +/BaseFont /EAAAAD+mwa_cmr10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 225 0 R +/DW 0 +/W [ 0 [365 500 500 500 651 391 443 526 555 555 443 526 276 750 443 276 500 500 916 500 500 276 388 555 388 388 776 ] ] +>> +endobj +231 0 obj +<< /Length 233 0 R /Filter /FlateDecode >> +stream +x]j0E +-Eg!PR +^A~,C- ^+.T\J]Jw kXieif+5t'Lur +߲f2NWX +MP2}q ?]߬"]mb?GZot}U"P)')>C,QFHBhwݸ5xcYʻu;㔃P JA (Sb"GP$HzGA)@-Qu +,(@jWWTO}%cۚBֺ~amNf0*`ʃ +endstream +endobj +233 0 obj +355 +endobj +197 0 obj +<< /Type /Pages +/Count 1 +/Kids [195 0 R ] >> +endobj +234 0 obj +<< + /Type /Catalog + /Pages 197 0 R + /Lang (x-unknown) +>> +endobj +196 0 obj +<< + /Font << + /F1360 203 0 R + /F1358 212 0 R + /F1357 221 0 R + /F1359 230 0 R +>> + /ProcSet [/PDF /ImageB /ImageC /Text] + /ExtGState << + /GS1 2 0 R + /GS2 3 0 R + /GS3 4 0 R + /GS4 5 0 R + /GS5 6 0 R + /GS6 7 0 R + /GS7 8 0 R + /GS8 9 0 R + /GS9 10 0 R + /GS10 11 0 R + /GS11 12 0 R + /GS12 13 0 R + /GS13 14 0 R + /GS14 15 0 R + /GS15 16 0 R + /GS16 17 0 R + /GS17 18 0 R + /GS18 19 0 R + /GS19 20 0 R + /GS20 21 0 R + /GS21 22 0 R + /GS22 23 0 R + /GS23 24 0 R + /GS24 25 0 R + /GS25 26 0 R + /GS26 27 0 R + /GS27 28 0 R + /GS28 29 0 R + /GS29 30 0 R + /GS30 31 0 R + /GS31 32 0 R + /GS32 33 0 R + /GS33 34 0 R + /GS34 35 0 R + /GS35 36 0 R + /GS36 37 0 R + /GS37 38 0 R + /GS38 39 0 R + /GS39 40 0 R + /GS40 41 0 R + /GS41 42 0 R + /GS42 43 0 R + /GS43 44 0 R + /GS44 45 0 R + /GS45 46 0 R + /GS46 47 0 R + /GS47 48 0 R + /GS48 49 0 R + /GS49 50 0 R + /GS50 51 0 R + /GS51 52 0 R + /GS52 53 0 R + /GS53 54 0 R + /GS54 55 0 R + /GS55 56 0 R + /GS56 57 0 R + /GS57 58 0 R + /GS58 59 0 R + /GS59 60 0 R + /GS60 61 0 R + /GS61 62 0 R + /GS62 63 0 R + /GS63 64 0 R + /GS64 65 0 R + /GS65 66 0 R + /GS66 67 0 R + /GS67 68 0 R + /GS68 69 0 R + /GS69 70 0 R + /GS70 71 0 R + /GS71 72 0 R + /GS72 73 0 R + /GS73 74 0 R + /GS74 75 0 R + /GS75 76 0 R + /GS76 77 0 R + /GS77 78 0 R + /GS78 79 0 R + /GS79 80 0 R + /GS80 81 0 R + /GS81 82 0 R + /GS82 83 0 R + /GS83 84 0 R + /GS84 85 0 R + /GS85 86 0 R + /GS86 87 0 R + /GS87 88 0 R + /GS88 89 0 R + /GS89 90 0 R + /GS90 91 0 R + /GS91 92 0 R + /GS92 93 0 R + /GS93 94 0 R + /GS94 95 0 R + /GS95 96 0 R + /GS96 97 0 R + /GS97 98 0 R + /GS98 99 0 R + /GS99 100 0 R + /GS100 101 0 R + /GS101 102 0 R + /GS102 103 0 R + /GS103 104 0 R + /GS104 105 0 R + /GS105 106 0 R + /GS106 107 0 R + /GS107 108 0 R + /GS108 109 0 R + /GS109 110 0 R + /GS110 111 0 R + /GS111 112 0 R + /GS112 113 0 R + /GS113 114 0 R + /GS114 115 0 R + /GS115 116 0 R + /GS116 117 0 R + /GS117 118 0 R + /GS118 119 0 R + /GS119 120 0 R + /GS120 121 0 R + /GS121 122 0 R + /GS122 123 0 R + /GS123 124 0 R + /GS124 125 0 R + /GS125 126 0 R + /GS126 127 0 R + /GS127 128 0 R + /GS128 129 0 R + /GS129 130 0 R + /GS130 131 0 R + /GS131 132 0 R + /GS132 133 0 R + /GS133 134 0 R + /GS134 135 0 R + /GS135 136 0 R + /GS136 137 0 R + /GS137 138 0 R + /GS138 139 0 R + /GS139 140 0 R + /GS140 141 0 R + /GS141 142 0 R + /GS142 143 0 R + /GS143 144 0 R + /GS144 145 0 R + /GS145 146 0 R + /GS146 147 0 R + /GS147 148 0 R + /GS148 149 0 R + /GS149 150 0 R + /GS150 151 0 R + /GS151 152 0 R + /GS152 153 0 R + /GS153 154 0 R + /GS154 155 0 R + /GS155 156 0 R + /GS156 157 0 R + /GS157 158 0 R + /GS158 159 0 R + /GS159 160 0 R + /GS160 161 0 R + /GS161 162 0 R + /GS162 163 0 R + /GS163 164 0 R + /GS164 165 0 R + /GS165 166 0 R + /GS166 167 0 R + /GS167 168 0 R + /GS168 169 0 R + /GS169 170 0 R + /GS170 171 0 R + /GS171 172 0 R + /GS172 173 0 R + /GS173 174 0 R + /GS174 175 0 R + /GS175 176 0 R + /GS176 177 0 R + /GS177 178 0 R + /GS178 179 0 R + /GS179 180 0 R + /GS180 181 0 R + /GS181 182 0 R + /GS182 183 0 R + /GS183 184 0 R + /GS184 185 0 R + /GS185 186 0 R + /GS186 187 0 R + /GS187 188 0 R + /GS188 189 0 R + /GS189 190 0 R + /GS190 191 0 R +>> +>> +endobj +xref +0 235 +0000000000 65535 f +0000000015 00000 n +0000000145 00000 n +0000000197 00000 n +0000000249 00000 n +0000000301 00000 n +0000000353 00000 n +0000000405 00000 n +0000000457 00000 n +0000000509 00000 n +0000000561 00000 n +0000000614 00000 n +0000000667 00000 n +0000000720 00000 n +0000000773 00000 n +0000000826 00000 n +0000000879 00000 n +0000000932 00000 n +0000000985 00000 n +0000001038 00000 n +0000001091 00000 n +0000001144 00000 n +0000001197 00000 n +0000001250 00000 n +0000001303 00000 n +0000001356 00000 n +0000001409 00000 n +0000001463 00000 n +0000001517 00000 n +0000001571 00000 n +0000001625 00000 n +0000001678 00000 n +0000001731 00000 n +0000001784 00000 n +0000001837 00000 n +0000001890 00000 n +0000001943 00000 n +0000001996 00000 n +0000002049 00000 n +0000002102 00000 n +0000002155 00000 n +0000002208 00000 n +0000002261 00000 n +0000002314 00000 n +0000002367 00000 n +0000002420 00000 n +0000002473 00000 n +0000002526 00000 n +0000002579 00000 n +0000002632 00000 n +0000002685 00000 n +0000002738 00000 n +0000002791 00000 n +0000002844 00000 n +0000002897 00000 n +0000002950 00000 n +0000003003 00000 n +0000003056 00000 n +0000003109 00000 n +0000003162 00000 n +0000003215 00000 n +0000003268 00000 n +0000003321 00000 n +0000003374 00000 n +0000003427 00000 n +0000003480 00000 n +0000003533 00000 n +0000003586 00000 n +0000003639 00000 n +0000003692 00000 n +0000003745 00000 n +0000003798 00000 n +0000003851 00000 n +0000003904 00000 n +0000003957 00000 n +0000004010 00000 n +0000004063 00000 n +0000004116 00000 n +0000004169 00000 n +0000004222 00000 n +0000004275 00000 n +0000004329 00000 n +0000004383 00000 n +0000004437 00000 n +0000004491 00000 n +0000004545 00000 n +0000004599 00000 n +0000004646 00000 n +0000004693 00000 n +0000004740 00000 n +0000004787 00000 n +0000004834 00000 n +0000004881 00000 n +0000004928 00000 n +0000004975 00000 n +0000005022 00000 n +0000005069 00000 n +0000005116 00000 n +0000005163 00000 n +0000005210 00000 n +0000005257 00000 n +0000005305 00000 n +0000005353 00000 n +0000005401 00000 n +0000005455 00000 n +0000005509 00000 n +0000005563 00000 n +0000005617 00000 n +0000005671 00000 n +0000005725 00000 n +0000005779 00000 n +0000005833 00000 n +0000005887 00000 n +0000005941 00000 n +0000005995 00000 n +0000006049 00000 n +0000006103 00000 n +0000006157 00000 n +0000006211 00000 n +0000006265 00000 n +0000006319 00000 n +0000006373 00000 n +0000006427 00000 n +0000006481 00000 n +0000006535 00000 n +0000006589 00000 n +0000006643 00000 n +0000006697 00000 n +0000006752 00000 n +0000006807 00000 n +0000006862 00000 n +0000006917 00000 n +0000006971 00000 n +0000007025 00000 n +0000007079 00000 n +0000007133 00000 n +0000007187 00000 n +0000007241 00000 n +0000007295 00000 n +0000007349 00000 n +0000007403 00000 n +0000007457 00000 n +0000007511 00000 n +0000007565 00000 n +0000007619 00000 n +0000007673 00000 n +0000007727 00000 n +0000007781 00000 n +0000007835 00000 n +0000007889 00000 n +0000007943 00000 n +0000007997 00000 n +0000008051 00000 n +0000008105 00000 n +0000008159 00000 n +0000008213 00000 n +0000008267 00000 n +0000008321 00000 n +0000008375 00000 n +0000008429 00000 n +0000008483 00000 n +0000008537 00000 n +0000008591 00000 n +0000008645 00000 n +0000008699 00000 n +0000008753 00000 n +0000008807 00000 n +0000008861 00000 n +0000008915 00000 n +0000008969 00000 n +0000009023 00000 n +0000009077 00000 n +0000009131 00000 n +0000009185 00000 n +0000009239 00000 n +0000009293 00000 n +0000009347 00000 n +0000009401 00000 n +0000009455 00000 n +0000009509 00000 n +0000009563 00000 n +0000009617 00000 n +0000009672 00000 n +0000009727 00000 n +0000009782 00000 n +0000009837 00000 n +0000009892 00000 n +0000009947 00000 n +0000009995 00000 n +0000010043 00000 n +0000010091 00000 n +0000010139 00000 n +0000010187 00000 n +0000170086 00000 n +0000170110 00000 n +0000170137 00000 n +0000186388 00000 n +0000186249 00000 n +0000170335 00000 n +0000170591 00000 n +0000172067 00000 n +0000172045 00000 n +0000172157 00000 n +0000172177 00000 n +0000172566 00000 n +0000172337 00000 n +0000172880 00000 n +0000172901 00000 n +0000173153 00000 n +0000174597 00000 n +0000174575 00000 n +0000174684 00000 n +0000174703 00000 n +0000175094 00000 n +0000174863 00000 n +0000175406 00000 n +0000175427 00000 n +0000175683 00000 n +0000179118 00000 n +0000179096 00000 n +0000179214 00000 n +0000179234 00000 n +0000179661 00000 n +0000179394 00000 n +0000180019 00000 n +0000180040 00000 n +0000180295 00000 n +0000185188 00000 n +0000185166 00000 n +0000185286 00000 n +0000185306 00000 n +0000185795 00000 n +0000185465 00000 n +0000186228 00000 n +0000186311 00000 n +trailer +<< + /Root 234 0 R + /Info 1 0 R + /ID [<61517667E7223FB906FE495BC0F880C3> <61517667E7223FB906FE495BC0F880C3>] + /Size 235 +>> +startxref +189568 +%%EOF diff --git a/figs/simscape_model_rga.png b/figs/simscape_model_rga.png new file mode 100644 index 0000000..16288aa Binary files /dev/null and b/figs/simscape_model_rga.png differ diff --git a/gravimeter/script.m b/gravimeter/script.m index c7d3b57..dee8039 100644 --- a/gravimeter/script.m +++ b/gravimeter/script.m @@ -281,7 +281,6 @@ for in_i = 2:6 set(gca,'ColorOrderIndex',3) plot(freqs, Gr_jacobian(:,in_i), 'HandleVisibility', 'off'); end -plot(freqs, 0.5*ones(size(freqs)), 'k--', 'DisplayName', 'Limit') set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); hold off; xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii') diff --git a/index.html b/index.html index 428152c..e1b0b08 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + SVD Control @@ -30,46 +30,48 @@

Table of Contents

-
-

1 Gravimeter - Simscape Model

+
+

1 Gravimeter - Simscape Model

-
-

1.1 Introduction

+
+

1.1 Introduction

-
+

gravimeter_model.png

Figure 1: Model of the gravimeter

@@ -77,8 +79,8 @@
-
-

1.2 Simscape Model - Parameters

+
+

1.2 Simscape Model - Parameters

open('gravimeter.slx')
@@ -109,8 +111,8 @@ g = 0; % Gravity [m/s2]
 
-
-

1.3 System Identification - Without Gravity

+
+

1.3 System Identification - Without Gravity

%% Name of the Simulink File
@@ -133,11 +135,11 @@ G.OutputName = {'Ax1', 
 

-The inputs and outputs of the plant are shown in Figure 2. +The inputs and outputs of the plant are shown in Figure 2.

-
+

gravimeter_plant_schematic.png

Figure 2: Schematic of the gravimeter plant

@@ -155,7 +157,7 @@ The inputs and outputs of the plant are shown in Figure 2< We can check the poles of the plant:

-
+
 -0.000183495485977108 +       13.546056874877i
 -0.000183495485977108 -       13.546056874877i
 -7.49842878906757e-05 +      8.65934902322567i
@@ -178,11 +180,11 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
 
 
 

-The bode plot of all elements of the plant are shown in Figure 3. +The bode plot of all elements of the plant are shown in Figure 3.

-
+

open_loop_tf.png

Figure 3: Open Loop Transfer Function from 3 Actuators to 4 Accelerometers

@@ -190,15 +192,15 @@ The bode plot of all elements of the plant are shown in Figure -

1.4 Physical Decoupling using the Jacobian

+
+

1.4 Physical Decoupling using the Jacobian

- +

-Consider the control architecture shown in Figure 4. +Consider the control architecture shown in Figure 4.

@@ -207,7 +209,7 @@ The Jacobian matrix \(J_{a}\) is used to compute the vertical acceleration, hori

-We thus define a new plant as defined in Figure 4. +We thus define a new plant as defined in Figure 4. \[ G_x(s) = J_a G(s) J_{\tau}^{-T} \]

@@ -216,7 +218,7 @@ We thus define a new plant as defined in Figure 4.

-
+

gravimeter_decouple_jacobian.png

Figure 4: Decoupled plant \(\bm{G}_x\) using the Jacobian matrix \(J\)

@@ -245,11 +247,11 @@ Gx.OutputName = {'Dx',

-The diagonal and off-diagonal elements of \(G_x\) are shown in Figure 5. +The diagonal and off-diagonal elements of \(G_x\) are shown in Figure 5.

-
+

gravimeter_jacobian_plant.png

Figure 5: Diagonal and off-diagonal elements of \(G_x\)

@@ -257,11 +259,11 @@ The diagonal and off-diagonal elements of \(G_x\) are shown in Figure -

1.5 Real Approximation of \(G\) at the decoupling frequency

+
+

1.5 Real Approximation of \(G\) at the decoupling frequency

- +

@@ -316,11 +318,11 @@ H1 = inv(D*real(H1'*

-
-

1.6 SVD Decoupling

+
+

1.6 SVD Decoupling

- +

@@ -334,11 +336,11 @@ First, the Singular Value Decomposition of \(H_1\) is performed:

-The obtained matrices \(U\) and \(V\) are used to decouple the system as shown in Figure 6. +The obtained matrices \(U\) and \(V\) are used to decouple the system as shown in Figure 6.

-
+

gravimeter_decouple_svd.png

Figure 6: Decoupled plant \(\bm{G}_{SVD}\) using the Singular Value Decomposition

@@ -355,11 +357,11 @@ The decoupled plant is then:

-The diagonal and off-diagonal elements of the “SVD” plant are shown in Figure 7. +The diagonal and off-diagonal elements of the “SVD” plant are shown in Figure 7.

-
+

gravimeter_svd_plant.png

Figure 7: Diagonal and off-diagonal elements of \(G_{svd}\)

@@ -367,11 +369,11 @@ The diagonal and off-diagonal elements of the “SVD” plant are shown
-
-

1.7 Verification of the decoupling using the “Gershgorin Radii”

+
+

1.7 Verification of the decoupling using the “Gershgorin Radii”

- +

@@ -392,7 +394,7 @@ This is computed over the following frequencies.

-
+

simscape_model_gershgorin_radii.png

Figure 8: Gershgorin Radii of the Coupled and Decoupled plants

@@ -400,30 +402,30 @@ This is computed over the following frequencies.
-
-

1.8 Obtained Decoupled Plants

+
+

1.8 Obtained Decoupled Plants

- +

-The bode plot of the diagonal and off-diagonal elements of \(G_{SVD}\) are shown in Figure 9. +The bode plot of the diagonal and off-diagonal elements of \(G_{SVD}\) are shown in Figure 9.

-
+

simscape_model_decoupled_plant_svd.png

Figure 9: Decoupled Plant using SVD

-Similarly, the bode plots of the diagonal elements and off-diagonal elements of the decoupled plant \(G_x(s)\) using the Jacobian are shown in Figure 10. +Similarly, the bode plots of the diagonal elements and off-diagonal elements of the decoupled plant \(G_x(s)\) using the Jacobian are shown in Figure 10.

-
+

simscape_model_decoupled_plant_jacobian.png

Figure 10: Gravimeter Platform Plant from forces (resp. torques) applied by the legs to the acceleration (resp. angular acceleration) of the platform as well as all the coupling terms between the two (non-diagonal terms of the transfer function matrix)

@@ -431,12 +433,12 @@ Similarly, the bode plots of the diagonal elements and off-diagonal elements of
-
-

1.9 Diagonal Controller

+
+

1.9 Diagonal Controller

- -The control diagram for the centralized control is shown in Figure 11. + +The control diagram for the centralized control is shown in Figure 11.

@@ -445,19 +447,19 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied

-
+

centralized_control.png

Figure 11: Control Diagram for the Centralized control

-The SVD control architecture is shown in Figure 12. +The SVD control architecture is shown in Figure 12. The matrices \(U\) and \(V\) are used to decoupled the plant \(G\).

-
+

svd_control.png

Figure 12: Control Diagram for the SVD control

@@ -494,11 +496,11 @@ G_svd = feedback(G, inv(V')

-The obtained diagonal elements of the loop gains are shown in Figure 13. +The obtained diagonal elements of the loop gains are shown in Figure 13.

-
+

gravimeter_comp_loop_gain_diagonal.png

Figure 13: Comparison of the diagonal elements of the loop gains for the SVD control architecture and the Jacobian one

@@ -506,11 +508,11 @@ The obtained diagonal elements of the loop gains are shown in Figure -

1.10 Closed-Loop system Performances

+
+

1.10 Closed-Loop system Performances

- +

@@ -541,11 +543,11 @@ ans =

-The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure 14. +The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure 14.

-
+

gravimeter_platform_simscape_cl_transmissibility.png

Figure 14: Obtained Transmissibility

@@ -554,11 +556,11 @@ The obtained transmissibility in Open-loop, for the centralized control as well
-
-

2 Stewart Platform - Simscape Model

+
+

2 Stewart Platform - Simscape Model

-In this analysis, we wish to applied SVD control to the Stewart Platform shown in Figure 15. +In this analysis, we wish to applied SVD control to the Stewart Platform shown in Figure 15.

@@ -571,7 +573,7 @@ Some notes about the system: -

+

SP_assembly.png

Figure 15: Stewart Platform CAD View

@@ -581,22 +583,22 @@ Some notes about the system: The analysis of the SVD control applied to the Stewart platform is performed in the following sections:

    -
  • Section 2.1: The parameters of the Simscape model of the Stewart platform are defined
  • -
  • Section 2.2: The plant is identified from the Simscape model and the system coupling is shown
  • -
  • Section 2.3: The plant is first decoupled using the Jacobian
  • -
  • Section 2.4: A real approximation of the plant is computed for further decoupling using the Singular Value Decomposition (SVD)
  • -
  • Section 2.5: The decoupling is performed thanks to the SVD
  • -
  • Section 1.7: The effectiveness of the decoupling with the Jacobian and SVD are compared using the Gershorin Radii
  • -
  • Section 2.7: The dynamics of the decoupled plants are shown
  • -
  • Section 2.8: A diagonal controller is defined to control the decoupled plant
  • -
  • Section 2.9: Finally, the closed loop system properties are studied
  • +
  • Section 2.1: The parameters of the Simscape model of the Stewart platform are defined
  • +
  • Section 2.2: The plant is identified from the Simscape model and the system coupling is shown
  • +
  • Section 2.3: The plant is first decoupled using the Jacobian
  • +
  • Section 2.4: A real approximation of the plant is computed for further decoupling using the Singular Value Decomposition (SVD)
  • +
  • Section 2.5: The decoupling is performed thanks to the SVD
  • +
  • Section 1.7: The effectiveness of the decoupling with the Jacobian and SVD are compared using the Gershorin Radii
  • +
  • Section 2.8: The dynamics of the decoupled plants are shown
  • +
  • Section 2.9: A diagonal controller is defined to control the decoupled plant
  • +
  • Section 2.10: Finally, the closed loop system properties are studied
-
-

2.1 Simscape Model - Parameters

+
+

2.1 Simscape Model - Parameters

- +

open('drone_platform.slx');
@@ -617,6 +619,14 @@ cz = 0.025;
 
+

+We suppose the sensor is perfectly positioned. +

+
+
sens_pos_error = zeros(3,1);
+
+
+

Gravity:

@@ -629,7 +639,7 @@ Gravity: We load the Jacobian (previously computed from the geometry):

-
load('./jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J');
+
load('jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J');
 
@@ -644,14 +654,14 @@ Kc = tf(zeros(6));
-
+

stewart_simscape.png

Figure 16: General view of the Simscape Model

-
+

stewart_platform_details.png

Figure 17: Simscape model of the Stewart platform

@@ -659,15 +669,15 @@ Kc = tf(zeros(6));
-
-

2.2 Identification of the plant

+
+

2.2 Identification of the plant

- +

-The plant shown in Figure 18 is identified from the Simscape model. +The plant shown in Figure 18 is identified from the Simscape model.

@@ -683,7 +693,7 @@ The outputs are the 6 accelerations measured by the inertial unit.

-
+

stewart_platform_plant.png

Figure 18: Considered plant \(\bm{G} = \begin{bmatrix}G_d\\G_u\end{bmatrix}\). \(D_w\) is the translation/rotation of the support, \(\tau\) the actuator forces, \(a\) the acceleration/angular acceleration of the top platform

@@ -725,7 +735,7 @@ State-space model with 6 outputs, 12 inputs, and 24 states.

-The elements of the transfer matrix \(\bm{G}\) corresponding to the transfer function from actuator forces \(\tau\) to the measured acceleration \(a\) are shown in Figure 19. +The elements of the transfer matrix \(\bm{G}\) corresponding to the transfer function from actuator forces \(\tau\) to the measured acceleration \(a\) are shown in Figure 19.

@@ -733,7 +743,7 @@ One can easily see that the system is strongly coupled.

-
+

stewart_platform_coupled_plant.png

Figure 19: Magnitude of all 36 elements of the transfer function matrix \(G_u\)

@@ -741,17 +751,94 @@ One can easily see that the system is strongly coupled.
-
-

2.3 Physical Decoupling using the Jacobian

+
+

2.3 Physical Decoupling using the Jacobian

- -Consider the control architecture shown in Figure 20. + +Consider the control architecture shown in Figure 20. The Jacobian matrix is used to transform forces/torques applied on the top platform to the equivalent forces applied by each actuator.

+

+The Jacobian matrix is computed from the geometry of the platform (position and orientation of the actuators). +

-
+ + + +++ ++ ++ ++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: Computed Jacobian Matrix
0.8110.00.584-0.018-0.0080.025
-0.406-0.7030.584-0.016-0.012-0.025
-0.4060.7030.5840.016-0.0120.025
0.8110.00.5840.018-0.008-0.025
-0.406-0.7030.5840.0020.0190.025
-0.4060.7030.584-0.0020.019-0.025
+ + +

plant_decouple_jacobian.png

Figure 20: Decoupled plant \(\bm{G}_x\) using the Jacobian matrix \(J\)

@@ -774,11 +861,11 @@ Gx.InputName = {'Fx',
-
-

2.4 Real Approximation of \(G\) at the decoupling frequency

+
+

2.4 Real Approximation of \(G\) at the decoupling frequency

- +

@@ -801,7 +888,7 @@ H1 = inv(D*real(H1'*

- +@@ -881,7 +968,7 @@ This can be verified below where only the real value of \(G_u(\omega_c)\) is sho

Table 2: Real approximate of \(G\) at the decoupling frequency \(\omega_c\)Table 3: Real approximate of \(G\) at the decoupling frequency \(\omega_c\)
- +@@ -955,11 +1042,11 @@ This can be verified below where only the real value of \(G_u(\omega_c)\) is sho -
-

2.5 SVD Decoupling

+
+

2.5 SVD Decoupling

- +

@@ -972,12 +1059,158 @@ First, the Singular Value Decomposition of \(H_1\) is performed:

+
Table 4: Real part of \(G\) at the decoupling frequency \(\omega_c\)
+ + +++ ++ ++ ++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5: Obtained matrix \(U\)
-0.0057e-066e-11-3e-06-10.1
-7e-06-0.005-9e-09-5e-09-0.1-1
4e-08-2e-10-6e-11-13e-06-3e-07
-0.002-1-5e-062e-100.00060.005
1-0.002-1e-082e-08-0.0050.0006
-4e-095e-06-16e-11-2e-09-1e-08
+ + + + +++ ++ ++ ++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6: Obtained matrix \(V\)
-0.20.5-0.4-0.4-0.6-0.2
-0.30.50.4-0.40.50.3
-0.3-0.5-0.4-0.40.4-0.4
-0.2-0.50.4-0.4-0.50.3
0.6-0.06-0.4-0.40.10.6
0.60.060.4-0.4-0.006-0.6
+

-The obtained matrices \(U\) and \(V\) are used to decouple the system as shown in Figure 21. +The obtained matrices \(U\) and \(V\) are used to decouple the system as shown in Figure 21.

-
+

plant_decouple_svd.png

Figure 21: Decoupled plant \(\bm{G}_{SVD}\) using the Singular Value Decomposition

@@ -995,11 +1228,11 @@ The decoupled plant is then:
-
-

2.6 Verification of the decoupling using the “Gershgorin Radii”

+
+

2.6 Verification of the decoupling using the “Gershgorin Radii”

- +

@@ -1014,13 +1247,8 @@ The “Gershgorin Radii” of a matrix \(S\) is defined by:

This is computed over the following frequencies.

-
-
freqs = logspace(-2, 2, 1000); % [Hz]
-
-
- -
+

simscape_model_gershgorin_radii.png

Figure 22: Gershgorin Radii of the Coupled and Decoupled plants

@@ -1028,43 +1256,69 @@ This is computed over the following frequencies.
-
-

2.7 Obtained Decoupled Plants

+
+

2.7 Verification of the decoupling using the “Relative Gain Array”

- +The relative gain array (RGA) is defined as: +

+\begin{equation} + \Lambda\big(G(s)\big) = G(s) \times \big( G(s)^{-1} \big)^T +\end{equation} +

+where \(\times\) denotes an element by element multiplication and \(G(s)\) is an \(n \times n\) square transfer matrix.

-The bode plot of the diagonal and off-diagonal elements of \(G_{SVD}\) are shown in Figure 9. +The obtained RGA elements are shown in Figure 23.

-
-

simscape_model_decoupled_plant_svd.png +

+

simscape_model_rga.png

-

Figure 23: Decoupled Plant using SVD

-
- -

-Similarly, the bode plots of the diagonal elements and off-diagonal elements of the decoupled plant \(G_x(s)\) using the Jacobian are shown in Figure 10. -

- - -
-

simscape_model_decoupled_plant_jacobian.png -

-

Figure 24: Stewart Platform Plant from forces (resp. torques) applied by the legs to the acceleration (resp. angular acceleration) of the platform as well as all the coupling terms between the two (non-diagonal terms of the transfer function matrix)

+

Figure 23: Obtained norm of RGA elements for the SVD decoupled plant and the Jacobian decoupled plant

-
-

2.8 Diagonal Controller

+
+

2.8 Obtained Decoupled Plants

- -The control diagram for the centralized control is shown in Figure 11. + +

+ +

+The bode plot of the diagonal and off-diagonal elements of \(G_{SVD}\) are shown in Figure 9. +

+ + +
+

simscape_model_decoupled_plant_svd.png +

+

Figure 24: Decoupled Plant using SVD

+
+ +

+Similarly, the bode plots of the diagonal elements and off-diagonal elements of the decoupled plant \(G_x(s)\) using the Jacobian are shown in Figure 10. +

+ + +
+

simscape_model_decoupled_plant_jacobian.png +

+

Figure 25: Stewart Platform Plant from forces (resp. torques) applied by the legs to the acceleration (resp. angular acceleration) of the platform as well as all the coupling terms between the two (non-diagonal terms of the transfer function matrix)

+
+
+
+ +
+

2.9 Diagonal Controller

+
+

+ +The control diagram for the centralized control is shown in Figure 11.

@@ -1073,22 +1327,22 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied

-
+

centralized_control.png

-

Figure 25: Control Diagram for the Centralized control

+

Figure 26: Control Diagram for the Centralized control

-The SVD control architecture is shown in Figure 12. +The SVD control architecture is shown in Figure 12. The matrices \(U\) and \(V\) are used to decoupled the plant \(G\).

-
+

svd_control.png

-

Figure 26: Control Diagram for the SVD control

+

Figure 27: Control Diagram for the SVD control

@@ -1122,23 +1376,23 @@ G_svd = feedback(G, inv(V')

-The obtained diagonal elements of the loop gains are shown in Figure 27. +The obtained diagonal elements of the loop gains are shown in Figure 28.

-
+

stewart_comp_loop_gain_diagonal.png

-

Figure 27: Comparison of the diagonal elements of the loop gains for the SVD control architecture and the Jacobian one

+

Figure 28: Comparison of the diagonal elements of the loop gains for the SVD control architecture and the Jacobian one

-
-

2.9 Closed-Loop system Performances

-
+
+

2.10 Closed-Loop system Performances

+

- +

@@ -1169,14 +1423,63 @@ ans =

-The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure 28. +The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure 29.

-
+

stewart_platform_simscape_cl_transmissibility.png

-

Figure 28: Obtained Transmissibility

+

Figure 29: Obtained Transmissibility

+
+
+
+ +
+

2.11 Small error on the sensor location   no_export

+
+

+Let’s now consider a small position error of the sensor: +

+
+
sens_pos_error = [105 5 -1]*1e-3; % [m]
+
+
+ +

+The system is identified again: +

+
+
Gx = Gu*inv(J');
+Gx.InputName  = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
+
+
+ +
+
Gsvd = inv(U)*Gu*inv(V');
+
+
+ +
+
L_cen = K_cen*Gx;
+G_cen = feedback(G, pinv(J')*K_cen, [7:12], [1:6]);
+
+
+ +
+
L_svd = K_svd*Gsvd;
+G_svd = feedback(G, inv(V')*K_svd*inv(U), [7:12], [1:6]);
+
+
+ +
+
isstable(G_cen)
+
+
+ +
+
isstable(G_svd)
+
@@ -1184,7 +1487,7 @@ The obtained transmissibility in Open-loop, for the centralized control as well

Author: Dehaeze Thomas

-

Created: 2020-11-16 lun. 14:57

+

Created: 2020-11-23 lun. 18:00

diff --git a/index.org b/index.org index dadf915..42edec1 100644 --- a/index.org +++ b/index.org @@ -442,7 +442,6 @@ This is computed over the following frequencies. set(gca,'ColorOrderIndex',3) plot(freqs, Gr_jacobian(:,in_i), 'HandleVisibility', 'off'); end - plot(freqs, 0.5*ones(size(freqs)), 'k--', 'DisplayName', 'Limit') set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); hold off; xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii') @@ -1382,6 +1381,10 @@ The analysis of the SVD control applied to the Stewart platform is performed in addpath('STEP'); #+end_src +#+begin_src matlab + freqs = logspace(-1, 2, 1000); +#+end_src + ** Jacobian :noexport: First, the position of the "joints" (points of force application) are estimated and the Jacobian computed. #+begin_src matlab :tangle no @@ -1413,7 +1416,7 @@ First, the position of the "joints" (points of force application) are estimated J = [As' , cross(Ab, As)']; - save('./jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J'); + save('stewart_platform/jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J'); #+end_src ** Simscape Model - Parameters @@ -1433,6 +1436,11 @@ Definition of spring parameters: cz = 0.025; #+end_src +We suppose the sensor is perfectly positioned. +#+begin_src matlab + sens_pos_error = zeros(3,1); +#+end_src + Gravity: #+begin_src matlab g = 0; @@ -1440,7 +1448,7 @@ Gravity: We load the Jacobian (previously computed from the geometry): #+begin_src matlab - load('./jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J'); + load('jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J'); #+end_src We initialize other parameters: @@ -1524,8 +1532,6 @@ The elements of the transfer matrix $\bm{G}$ corresponding to the transfer funct One can easily see that the system is strongly coupled. #+begin_src matlab :exports none - freqs = logspace(-1, 2, 1000); - figure; % Magnitude @@ -1563,6 +1569,21 @@ One can easily see that the system is strongly coupled. Consider the control architecture shown in Figure [[fig:plant_decouple_jacobian]]. The Jacobian matrix is used to transform forces/torques applied on the top platform to the equivalent forces applied by each actuator. +The Jacobian matrix is computed from the geometry of the platform (position and orientation of the actuators). + +#+begin_src matlab :exports results :results value table replace :tangle no + data2orgtable(J, {}, {}, ' %.3f '); +#+end_src + +#+caption: Computed Jacobian Matrix +#+RESULTS: +| 0.811 | 0.0 | 0.584 | -0.018 | -0.008 | 0.025 | +| -0.406 | -0.703 | 0.584 | -0.016 | -0.012 | -0.025 | +| -0.406 | 0.703 | 0.584 | 0.016 | -0.012 | 0.025 | +| 0.811 | 0.0 | 0.584 | 0.018 | -0.008 | -0.025 | +| -0.406 | -0.703 | 0.584 | 0.002 | 0.019 | 0.025 | +| -0.406 | 0.703 | 0.584 | -0.002 | 0.019 | -0.025 | + #+begin_src latex :file plant_decouple_jacobian.pdf :tangle no :exports results \begin{tikzpicture} \node[block] (G) {$G_u$}; @@ -1633,6 +1654,7 @@ This can be verified below where only the real value of $G_u(\omega_c)$ is shown data2orgtable(real(evalfr(Gu, j*wc)), {}, {}, ' %.1f '); #+end_src +#+caption: Real part of $G$ at the decoupling frequency $\omega_c$ #+RESULTS: | 4.4 | -2.1 | -2.1 | 4.4 | -2.4 | -2.4 | | -0.2 | -3.9 | 3.9 | 0.2 | -3.8 | 3.8 | @@ -1651,6 +1673,32 @@ First, the Singular Value Decomposition of $H_1$ is performed: [U,~,V] = svd(H1); #+end_src +#+begin_src matlab :exports results :results value table replace :tangle no + data2orgtable(U, {}, {}, ' %.1g '); +#+end_src + +#+caption: Obtained matrix $U$ +#+RESULTS: +| -0.005 | 7e-06 | 6e-11 | -3e-06 | -1 | 0.1 | +| -7e-06 | -0.005 | -9e-09 | -5e-09 | -0.1 | -1 | +| 4e-08 | -2e-10 | -6e-11 | -1 | 3e-06 | -3e-07 | +| -0.002 | -1 | -5e-06 | 2e-10 | 0.0006 | 0.005 | +| 1 | -0.002 | -1e-08 | 2e-08 | -0.005 | 0.0006 | +| -4e-09 | 5e-06 | -1 | 6e-11 | -2e-09 | -1e-08 | + +#+begin_src matlab :exports results :results value table replace :tangle no + data2orgtable(V, {}, {}, ' %.1g '); +#+end_src + +#+caption: Obtained matrix $V$ +#+RESULTS: +| -0.2 | 0.5 | -0.4 | -0.4 | -0.6 | -0.2 | +| -0.3 | 0.5 | 0.4 | -0.4 | 0.5 | 0.3 | +| -0.3 | -0.5 | -0.4 | -0.4 | 0.4 | -0.4 | +| -0.2 | -0.5 | 0.4 | -0.4 | -0.5 | 0.3 | +| 0.6 | -0.06 | -0.4 | -0.4 | 0.1 | 0.6 | +| 0.6 | 0.06 | 0.4 | -0.4 | -0.006 | -0.6 | + The obtained matrices $U$ and $V$ are used to decouple the system as shown in Figure [[fig:plant_decouple_svd]]. #+begin_src latex :file plant_decouple_svd.pdf :tangle no :exports results @@ -1694,10 +1742,6 @@ The "Gershgorin Radii" of a matrix $S$ is defined by: \[ \zeta_i(j\omega) = \frac{\sum\limits_{j\neq i}|S_{ij}(j\omega)|}{|S_{ii}(j\omega)|} \] This is computed over the following frequencies. -#+begin_src matlab - freqs = logspace(-2, 2, 1000); % [Hz] -#+end_src - #+begin_src matlab :exports none % Gershgorin Radii for the coupled plant: Gr_coupled = zeros(length(freqs), size(Gu,2)); @@ -1735,7 +1779,6 @@ This is computed over the following frequencies. set(gca,'ColorOrderIndex',3) plot(freqs, Gr_jacobian(:,in_i), 'HandleVisibility', 'off'); end - plot(freqs, 0.5*ones(size(freqs)), 'k--', 'DisplayName', 'Limit') set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); hold off; xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii') @@ -1752,14 +1795,105 @@ This is computed over the following frequencies. #+RESULTS: [[file:figs/simscape_model_gershgorin_radii.png]] +** Verification of the decoupling using the "Relative Gain Array" +The relative gain array (RGA) is defined as: +\begin{equation} + \Lambda\big(G(s)\big) = G(s) \times \big( G(s)^{-1} \big)^T +\end{equation} +where $\times$ denotes an element by element multiplication and $G(s)$ is an $n \times n$ square transfer matrix. + +The obtained RGA elements are shown in Figure [[fig:simscape_model_rga]]. + +#+begin_src matlab :exports none + % Relative Gain Array for the coupled plant: + RGA_coupled = zeros(length(freqs), size(Gu,1), size(Gu,2)); + Gu_inv = inv(Gu); + for f_i = 1:length(freqs) + RGA_coupled(f_i, :, :) = abs(evalfr(Gu, j*2*pi*freqs(f_i)).*evalfr(Gu_inv, j*2*pi*freqs(f_i))'); + end + + % Relative Gain Array for the decoupled plant using SVD: + RGA_svd = zeros(length(freqs), size(Gsvd,1), size(Gsvd,2)); + Gsvd_inv = inv(Gsvd); + for f_i = 1:length(freqs) + RGA_svd(f_i, :, :) = abs(evalfr(Gsvd, j*2*pi*freqs(f_i)).*evalfr(Gsvd_inv, j*2*pi*freqs(f_i))'); + end + + % Relative Gain Array for the decoupled plant using the Jacobian: + RGA_x = zeros(length(freqs), size(Gx,1), size(Gx,2)); + Gx_inv = inv(Gx); + for f_i = 1:length(freqs) + RGA_x(f_i, :, :) = abs(evalfr(Gx, j*2*pi*freqs(f_i)).*evalfr(Gx_inv, j*2*pi*freqs(f_i))'); + end +#+end_src + +#+begin_src matlab :exports none + figure; + tiledlayout(1, 2, 'TileSpacing', 'None', 'Padding', 'None'); + + ax1 = nexttile; + hold on; + for i_in = 1:6 + for i_out = [1:i_in-1, i_in+1:6] + plot(freqs, RGA_svd(:, i_out, i_in), '--', 'color', [0 0 0 0.2], ... + 'HandleVisibility', 'off'); + end + end + plot(freqs, RGA_svd(:, 1, 2), '--', 'color', [0 0 0 0.2], ... + 'DisplayName', '$RGA_{SVD}(i,j),\ i \neq j$'); + + plot(freqs, RGA_svd(:, 1, 1), 'k-', ... + 'DisplayName', '$RGA_{SVD}(i,i)$'); + for ch_i = 1:6 + plot(freqs, RGA_svd(:, ch_i, ch_i), 'k-', ... + 'HandleVisibility', 'off'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('Magnitude'); xlabel('Frequency [Hz]'); + legend('location', 'southwest'); + + ax2 = nexttile; + hold on; + for i_in = 1:6 + for i_out = [1:i_in-1, i_in+1:6] + plot(freqs, RGA_x(:, i_out, i_in), '--', 'color', [0 0 0 0.2], ... + 'HandleVisibility', 'off'); + end + end + plot(freqs, RGA_x(:, 1, 2), '--', 'color', [0 0 0 0.2], ... + 'DisplayName', '$RGA_{X}(i,j),\ i \neq j$'); + + plot(freqs, RGA_x(:, 1, 1), 'k-', ... + 'DisplayName', '$RGA_{X}(i,i)$'); + for ch_i = 1:6 + plot(freqs, RGA_x(:, ch_i, ch_i), 'k-', ... + 'HandleVisibility', 'off'); + end + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); + legend('location', 'southwest'); + + linkaxes([ax1,ax2],'y'); + ylim([1e-5, 1e1]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace + exportFig('figs/simscape_model_rga.pdf', 'width', 'wide', 'height', 'tall'); +#+end_src + +#+name: fig:simscape_model_rga +#+caption: Obtained norm of RGA elements for the SVD decoupled plant and the Jacobian decoupled plant +#+RESULTS: +[[file:figs/simscape_model_rga.png]] + ** Obtained Decoupled Plants <> The bode plot of the diagonal and off-diagonal elements of $G_{SVD}$ are shown in Figure [[fig:simscape_model_decoupled_plant_svd]]. #+begin_src matlab :exports none - freqs = logspace(-1, 2, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None'); @@ -1812,8 +1946,6 @@ The bode plot of the diagonal and off-diagonal elements of $G_{SVD}$ are shown i Similarly, the bode plots of the diagonal elements and off-diagonal elements of the decoupled plant $G_x(s)$ using the Jacobian are shown in Figure [[fig:simscape_model_decoupled_plant_jacobian]]. #+begin_src matlab :exports none - freqs = logspace(-1, 2, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None'); @@ -1956,8 +2088,6 @@ $G_0$ is tuned such that the crossover frequency corresponding to the diagonal t The obtained diagonal elements of the loop gains are shown in Figure [[fig:stewart_comp_loop_gain_diagonal]]. #+begin_src matlab :exports none - freqs = logspace(-1, 2, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None'); @@ -2038,8 +2168,6 @@ Let's first verify the stability of the closed-loop systems: The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure [[fig:stewart_platform_simscape_cl_transmissibility]]. #+begin_src matlab :exports results - freqs = logspace(-2, 2, 1000); - figure; tiledlayout(2, 2, 'TileSpacing', 'None', 'Padding', 'None'); @@ -2102,6 +2230,159 @@ The obtained transmissibility in Open-loop, for the centralized control as well #+RESULTS: [[file:figs/stewart_platform_simscape_cl_transmissibility.png]] +** Small error on the sensor location :no_export: +Let's now consider a small position error of the sensor: +#+begin_src matlab + sens_pos_error = [105 5 -1]*1e-3; % [m] +#+end_src + +The system is identified again: +#+begin_src matlab :exports none + %% Name of the Simulink File + mdl = 'drone_platform'; + + %% Input/Output definition + clear io; io_i = 1; + io(io_i) = linio([mdl, '/Dw'], 1, 'openinput'); io_i = io_i + 1; % Ground Motion + io(io_i) = linio([mdl, '/V-T'], 1, 'openinput'); io_i = io_i + 1; % Actuator Forces + io(io_i) = linio([mdl, '/Inertial Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Top platform acceleration + + G = linearize(mdl, io); + G.InputName = {'Dwx', 'Dwy', 'Dwz', 'Rwx', 'Rwy', 'Rwz', ... + 'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; + G.OutputName = {'Ax', 'Ay', 'Az', 'Arx', 'Ary', 'Arz'}; + + % Plant + Gu = G(:, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}); + % Disturbance dynamics + Gd = G(:, {'Dwx', 'Dwy', 'Dwz', 'Rwx', 'Rwy', 'Rwz'}); +#+end_src + +#+begin_src matlab + Gx = Gu*inv(J'); + Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'}; +#+end_src + +#+begin_src matlab + Gsvd = inv(U)*Gu*inv(V'); +#+end_src + +#+begin_src matlab :exports none + % Gershgorin Radii for the coupled plant: + Gr_coupled = zeros(length(freqs), size(Gu,2)); + H = abs(squeeze(freqresp(Gu, freqs, 'Hz'))); + for out_i = 1:size(Gu,2) + Gr_coupled(:, out_i) = squeeze((sum(H(out_i,:,:)) - H(out_i,out_i,:))./H(out_i, out_i, :)); + end + + % Gershgorin Radii for the decoupled plant using SVD: + Gr_decoupled = zeros(length(freqs), size(Gsvd,2)); + H = abs(squeeze(freqresp(Gsvd, freqs, 'Hz'))); + for out_i = 1:size(Gsvd,2) + Gr_decoupled(:, out_i) = squeeze((sum(H(out_i,:,:)) - H(out_i,out_i,:))./H(out_i, out_i, :)); + end + + % Gershgorin Radii for the decoupled plant using the Jacobian: + Gr_jacobian = zeros(length(freqs), size(Gx,2)); + H = abs(squeeze(freqresp(Gx, freqs, 'Hz'))); + for out_i = 1:size(Gx,2) + Gr_jacobian(:, out_i) = squeeze((sum(H(out_i,:,:)) - H(out_i,out_i,:))./H(out_i, out_i, :)); + end +#+end_src + +#+begin_src matlab :exports results + figure; + hold on; + plot(freqs, Gr_coupled(:,1), 'DisplayName', 'Coupled'); + plot(freqs, Gr_decoupled(:,1), 'DisplayName', 'SVD'); + plot(freqs, Gr_jacobian(:,1), 'DisplayName', 'Jacobian'); + for in_i = 2:6 + set(gca,'ColorOrderIndex',1) + plot(freqs, Gr_coupled(:,in_i), 'HandleVisibility', 'off'); + set(gca,'ColorOrderIndex',2) + plot(freqs, Gr_decoupled(:,in_i), 'HandleVisibility', 'off'); + set(gca,'ColorOrderIndex',3) + plot(freqs, Gr_jacobian(:,in_i), 'HandleVisibility', 'off'); + end + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + hold off; + xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii') + legend('location', 'northwest'); + ylim([1e-3, 1e3]); +#+end_src + +#+begin_src matlab + L_cen = K_cen*Gx; + G_cen = feedback(G, pinv(J')*K_cen, [7:12], [1:6]); +#+end_src + +#+begin_src matlab + L_svd = K_svd*Gsvd; + G_svd = feedback(G, inv(V')*K_svd*inv(U), [7:12], [1:6]); +#+end_src + +#+begin_src matlab :results output replace text + isstable(G_cen) +#+end_src + +#+begin_src matlab :results output replace text + isstable(G_svd) +#+end_src + +#+begin_src matlab :exports results + figure; + tiledlayout(2, 2, 'TileSpacing', 'None', 'Padding', 'None'); + + ax1 = nexttile; + hold on; + plot(freqs, abs(squeeze(freqresp(G( 'Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Open-Loop'); + plot(freqs, abs(squeeze(freqresp(G_cen('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Centralized'); + plot(freqs, abs(squeeze(freqresp(G_svd('Ax', 'Dwx')/s^2, freqs, 'Hz'))), '--', 'DisplayName', 'SVD'); + set(gca,'ColorOrderIndex',1) + plot(freqs, abs(squeeze(freqresp(G( 'Ay', 'Dwy')/s^2, freqs, 'Hz'))), 'HandleVisibility', 'off'); + plot(freqs, abs(squeeze(freqresp(G_cen('Ay', 'Dwy')/s^2, freqs, 'Hz'))), 'HandleVisibility', 'off'); + plot(freqs, abs(squeeze(freqresp(G_svd('Ay', 'Dwy')/s^2, freqs, 'Hz'))), '--', 'HandleVisibility', 'off'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('$D_x/D_{w,x}$, $D_y/D_{w, y}$'); set(gca, 'XTickLabel',[]); + legend('location', 'southwest'); + + ax2 = nexttile; + hold on; + plot(freqs, abs(squeeze(freqresp(G( 'Az', 'Dwz')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_cen('Az', 'Dwz')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_svd('Az', 'Dwz')/s^2, freqs, 'Hz'))), '--'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('$D_z/D_{w,z}$'); set(gca, 'XTickLabel',[]); + + ax3 = nexttile; + hold on; + plot(freqs, abs(squeeze(freqresp(G( 'Arx', 'Rwx')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_cen('Arx', 'Rwx')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_svd('Arx', 'Rwx')/s^2, freqs, 'Hz'))), '--'); + set(gca,'ColorOrderIndex',1) + plot(freqs, abs(squeeze(freqresp(G( 'Ary', 'Rwy')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_cen('Ary', 'Rwy')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_svd('Ary', 'Rwy')/s^2, freqs, 'Hz'))), '--'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('$R_x/R_{w,x}$, $R_y/R_{w,y}$'); xlabel('Frequency [Hz]'); + + ax4 = nexttile; + hold on; + plot(freqs, abs(squeeze(freqresp(G( 'Arz', 'Rwz')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_cen('Arz', 'Rwz')/s^2, freqs, 'Hz')))); + plot(freqs, abs(squeeze(freqresp(G_svd('Arz', 'Rwz')/s^2, freqs, 'Hz'))), '--'); + hold off; + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + ylabel('$R_z/R_{w,z}$'); xlabel('Frequency [Hz]'); + + linkaxes([ax1,ax2,ax3,ax4],'xy'); + xlim([freqs(1), freqs(end)]); + ylim([1e-3, 1e2]); +#+end_src + * Stewart Platform - Analytical Model :noexport: :PROPERTIES: :header-args:matlab+: :tangle stewart_platform/analytical_model.m diff --git a/stewart_platform/drone_platform.slx b/stewart_platform/drone_platform.slx index f796276..46fcbe2 100644 Binary files a/stewart_platform/drone_platform.slx and b/stewart_platform/drone_platform.slx differ diff --git a/stewart_platform/jacobian.mat b/stewart_platform/jacobian.mat new file mode 100644 index 0000000..0d2e3d0 Binary files /dev/null and b/stewart_platform/jacobian.mat differ diff --git a/stewart_platform/simscape_model.m b/stewart_platform/simscape_model.m index e1a0276..9abdc03 100644 --- a/stewart_platform/simscape_model.m +++ b/stewart_platform/simscape_model.m @@ -6,6 +6,8 @@ s = zpk('s'); addpath('STEP'); +freqs = logspace(-1, 2, 1000); + % Simscape Model - Parameters % <> @@ -25,6 +27,12 @@ cz = 0.025; +% We suppose the sensor is perfectly positioned. + +sens_pos_error = zeros(3,1); + + + % Gravity: g = 0; @@ -33,7 +41,7 @@ g = 0; % We load the Jacobian (previously computed from the geometry): -load('./jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J'); +load('jacobian.mat', 'Aa', 'Ab', 'As', 'l', 'J'); @@ -86,8 +94,6 @@ size(G) % One can easily see that the system is strongly coupled. -freqs = logspace(-1, 2, 1000); - figure; % Magnitude @@ -174,8 +180,6 @@ Gsvd = inv(U)*Gu*inv(V'); % This is computed over the following frequencies. -freqs = logspace(-2, 2, 1000); % [Hz] - % Gershgorin Radii for the coupled plant: Gr_coupled = zeros(length(freqs), size(Gu,2)); H = abs(squeeze(freqresp(Gu, freqs, 'Hz'))); @@ -210,21 +214,99 @@ for in_i = 2:6 set(gca,'ColorOrderIndex',3) plot(freqs, Gr_jacobian(:,in_i), 'HandleVisibility', 'off'); end -plot(freqs, 0.5*ones(size(freqs)), 'k--', 'DisplayName', 'Limit') set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); hold off; xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii') legend('location', 'northwest'); ylim([1e-3, 1e3]); +% Verification of the decoupling using the "Relative Gain Array" +% The relative gain array (RGA) is defined as: +% \begin{equation} +% \Lambda\big(G(s)\big) = G(s) \times \big( G(s)^{-1} \big)^T +% \end{equation} +% where $\times$ denotes an element by element multiplication and $G(s)$ is an $n \times n$ square transfer matrix. + +% The obtained RGA elements are shown in Figure [[fig:simscape_model_rga]]. + + +% Relative Gain Array for the coupled plant: +RGA_coupled = zeros(length(freqs), size(Gu,1), size(Gu,2)); +Gu_inv = inv(Gu); +for f_i = 1:length(freqs) + RGA_coupled(f_i, :, :) = abs(evalfr(Gu, j*2*pi*freqs(f_i)).*evalfr(Gu_inv, j*2*pi*freqs(f_i))'); +end + +% Relative Gain Array for the decoupled plant using SVD: +RGA_svd = zeros(length(freqs), size(Gsvd,1), size(Gsvd,2)); +Gsvd_inv = inv(Gsvd); +for f_i = 1:length(freqs) + RGA_svd(f_i, :, :) = abs(evalfr(Gsvd, j*2*pi*freqs(f_i)).*evalfr(Gsvd_inv, j*2*pi*freqs(f_i))'); +end + +% Relative Gain Array for the decoupled plant using the Jacobian: +RGA_x = zeros(length(freqs), size(Gx,1), size(Gx,2)); +Gx_inv = inv(Gx); +for f_i = 1:length(freqs) + RGA_x(f_i, :, :) = abs(evalfr(Gx, j*2*pi*freqs(f_i)).*evalfr(Gx_inv, j*2*pi*freqs(f_i))'); +end + +figure; +tiledlayout(1, 2, 'TileSpacing', 'None', 'Padding', 'None'); + +ax1 = nexttile; +hold on; +for i_in = 1:6 + for i_out = [1:i_in-1, i_in+1:6] + plot(freqs, RGA_svd(:, i_out, i_in), '--', 'color', [0 0 0 0.2], ... + 'HandleVisibility', 'off'); + end +end +plot(freqs, RGA_svd(:, 1, 2), '--', 'color', [0 0 0 0.2], ... + 'DisplayName', '$RGA_{SVD}(i,j),\ i \neq j$'); + +plot(freqs, RGA_svd(:, 1, 1), 'k-', ... + 'DisplayName', '$RGA_{SVD}(i,i)$'); +for ch_i = 1:6 + plot(freqs, RGA_svd(:, ch_i, ch_i), 'k-', ... + 'HandleVisibility', 'off'); +end +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('Magnitude'); xlabel('Frequency [Hz]'); +legend('location', 'southwest'); + +ax2 = nexttile; +hold on; +for i_in = 1:6 + for i_out = [1:i_in-1, i_in+1:6] + plot(freqs, RGA_x(:, i_out, i_in), '--', 'color', [0 0 0 0.2], ... + 'HandleVisibility', 'off'); + end +end +plot(freqs, RGA_x(:, 1, 2), '--', 'color', [0 0 0 0.2], ... + 'DisplayName', '$RGA_{X}(i,j),\ i \neq j$'); + +plot(freqs, RGA_x(:, 1, 1), 'k-', ... + 'DisplayName', '$RGA_{X}(i,i)$'); +for ch_i = 1:6 + plot(freqs, RGA_x(:, ch_i, ch_i), 'k-', ... + 'HandleVisibility', 'off'); +end +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +legend('location', 'southwest'); + +linkaxes([ax1,ax2],'y'); +ylim([1e-5, 1e1]); + % Obtained Decoupled Plants % <> % The bode plot of the diagonal and off-diagonal elements of $G_{SVD}$ are shown in Figure [[fig:simscape_model_decoupled_plant_svd]]. -freqs = logspace(-1, 2, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None'); @@ -274,8 +356,6 @@ linkaxes([ax1,ax2],'x'); % Similarly, the bode plots of the diagonal elements and off-diagonal elements of the decoupled plant $G_x(s)$ using the Jacobian are shown in Figure [[fig:simscape_model_decoupled_plant_jacobian]]. -freqs = logspace(-1, 2, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None'); @@ -350,8 +430,6 @@ G_svd = feedback(G, inv(V')*K_svd*inv(U), [7:12], [1:6]); % The obtained diagonal elements of the loop gains are shown in Figure [[fig:stewart_comp_loop_gain_diagonal]]. -freqs = logspace(-1, 2, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None'); @@ -424,7 +502,140 @@ isstable(G_svd) % The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure [[fig:stewart_platform_simscape_cl_transmissibility]]. -freqs = logspace(-2, 2, 1000); +figure; +tiledlayout(2, 2, 'TileSpacing', 'None', 'Padding', 'None'); + +ax1 = nexttile; +hold on; +plot(freqs, abs(squeeze(freqresp(G( 'Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Open-Loop'); +plot(freqs, abs(squeeze(freqresp(G_cen('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Centralized'); +plot(freqs, abs(squeeze(freqresp(G_svd('Ax', 'Dwx')/s^2, freqs, 'Hz'))), '--', 'DisplayName', 'SVD'); +set(gca,'ColorOrderIndex',1) +plot(freqs, abs(squeeze(freqresp(G( 'Ay', 'Dwy')/s^2, freqs, 'Hz'))), 'HandleVisibility', 'off'); +plot(freqs, abs(squeeze(freqresp(G_cen('Ay', 'Dwy')/s^2, freqs, 'Hz'))), 'HandleVisibility', 'off'); +plot(freqs, abs(squeeze(freqresp(G_svd('Ay', 'Dwy')/s^2, freqs, 'Hz'))), '--', 'HandleVisibility', 'off'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('$D_x/D_{w,x}$, $D_y/D_{w, y}$'); set(gca, 'XTickLabel',[]); +legend('location', 'southwest'); + +ax2 = nexttile; +hold on; +plot(freqs, abs(squeeze(freqresp(G( 'Az', 'Dwz')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_cen('Az', 'Dwz')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_svd('Az', 'Dwz')/s^2, freqs, 'Hz'))), '--'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('$D_z/D_{w,z}$'); set(gca, 'XTickLabel',[]); + +ax3 = nexttile; +hold on; +plot(freqs, abs(squeeze(freqresp(G( 'Arx', 'Rwx')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_cen('Arx', 'Rwx')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_svd('Arx', 'Rwx')/s^2, freqs, 'Hz'))), '--'); +set(gca,'ColorOrderIndex',1) +plot(freqs, abs(squeeze(freqresp(G( 'Ary', 'Rwy')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_cen('Ary', 'Rwy')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_svd('Ary', 'Rwy')/s^2, freqs, 'Hz'))), '--'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('$R_x/R_{w,x}$, $R_y/R_{w,y}$'); xlabel('Frequency [Hz]'); + +ax4 = nexttile; +hold on; +plot(freqs, abs(squeeze(freqresp(G( 'Arz', 'Rwz')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_cen('Arz', 'Rwz')/s^2, freqs, 'Hz')))); +plot(freqs, abs(squeeze(freqresp(G_svd('Arz', 'Rwz')/s^2, freqs, 'Hz'))), '--'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('$R_z/R_{w,z}$'); xlabel('Frequency [Hz]'); + +linkaxes([ax1,ax2,ax3,ax4],'xy'); +xlim([freqs(1), freqs(end)]); +ylim([1e-3, 1e2]); + +% Small error on the sensor location :no_export: +% Let's now consider a small position error of the sensor: + +sens_pos_error = [105 5 -1]*1e-3; % [m] + + + +% The system is identified again: + +%% Name of the Simulink File +mdl = 'drone_platform'; + +%% Input/Output definition +clear io; io_i = 1; +io(io_i) = linio([mdl, '/Dw'], 1, 'openinput'); io_i = io_i + 1; % Ground Motion +io(io_i) = linio([mdl, '/V-T'], 1, 'openinput'); io_i = io_i + 1; % Actuator Forces +io(io_i) = linio([mdl, '/Inertial Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Top platform acceleration + +G = linearize(mdl, io); +G.InputName = {'Dwx', 'Dwy', 'Dwz', 'Rwx', 'Rwy', 'Rwz', ... + 'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; +G.OutputName = {'Ax', 'Ay', 'Az', 'Arx', 'Ary', 'Arz'}; + +% Plant +Gu = G(:, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}); +% Disturbance dynamics +Gd = G(:, {'Dwx', 'Dwy', 'Dwz', 'Rwx', 'Rwy', 'Rwz'}); + +Gx = Gu*inv(J'); +Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'}; + +Gsvd = inv(U)*Gu*inv(V'); + +% Gershgorin Radii for the coupled plant: +Gr_coupled = zeros(length(freqs), size(Gu,2)); +H = abs(squeeze(freqresp(Gu, freqs, 'Hz'))); +for out_i = 1:size(Gu,2) + Gr_coupled(:, out_i) = squeeze((sum(H(out_i,:,:)) - H(out_i,out_i,:))./H(out_i, out_i, :)); +end + +% Gershgorin Radii for the decoupled plant using SVD: +Gr_decoupled = zeros(length(freqs), size(Gsvd,2)); +H = abs(squeeze(freqresp(Gsvd, freqs, 'Hz'))); +for out_i = 1:size(Gsvd,2) + Gr_decoupled(:, out_i) = squeeze((sum(H(out_i,:,:)) - H(out_i,out_i,:))./H(out_i, out_i, :)); +end + +% Gershgorin Radii for the decoupled plant using the Jacobian: +Gr_jacobian = zeros(length(freqs), size(Gx,2)); +H = abs(squeeze(freqresp(Gx, freqs, 'Hz'))); +for out_i = 1:size(Gx,2) + Gr_jacobian(:, out_i) = squeeze((sum(H(out_i,:,:)) - H(out_i,out_i,:))./H(out_i, out_i, :)); +end + +figure; +hold on; +plot(freqs, Gr_coupled(:,1), 'DisplayName', 'Coupled'); +plot(freqs, Gr_decoupled(:,1), 'DisplayName', 'SVD'); +plot(freqs, Gr_jacobian(:,1), 'DisplayName', 'Jacobian'); +for in_i = 2:6 + set(gca,'ColorOrderIndex',1) + plot(freqs, Gr_coupled(:,in_i), 'HandleVisibility', 'off'); + set(gca,'ColorOrderIndex',2) + plot(freqs, Gr_decoupled(:,in_i), 'HandleVisibility', 'off'); + set(gca,'ColorOrderIndex',3) + plot(freqs, Gr_jacobian(:,in_i), 'HandleVisibility', 'off'); +end +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +hold off; +xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii') +legend('location', 'northwest'); +ylim([1e-3, 1e3]); + +L_cen = K_cen*Gx; +G_cen = feedback(G, pinv(J')*K_cen, [7:12], [1:6]); + +L_svd = K_svd*Gsvd; +G_svd = feedback(G, inv(V')*K_svd*inv(U), [7:12], [1:6]); + +isstable(G_cen) + +isstable(G_svd) figure; tiledlayout(2, 2, 'TileSpacing', 'None', 'Padding', 'None');