diff --git a/figs/test_struts_comp_dy_tuned_model_frf_enc.pdf b/figs/test_struts_comp_dy_tuned_model_frf_enc.pdf new file mode 100644 index 0000000..ac20fd9 --- /dev/null +++ b/figs/test_struts_comp_dy_tuned_model_frf_enc.pdf @@ -0,0 +1,2476 @@ +%PDF-1.4 +% +1 0 obj +<< +/Producer (Apache FOP Version 2.4.0-SNAPSHOT: PDFDocumentGraphics2D) +/CreationDate (D:20240327165625+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.14901961 +>> +endobj +20 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +21 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +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.2509804 +>> +endobj +27 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +28 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +29 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +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.14901961 +>> +endobj +67 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +68 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +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.2509804 +>> +endobj +81 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +82 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +83 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +84 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +85 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +86 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +87 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +88 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +89 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +90 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +91 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +92 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +93 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +94 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +95 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +96 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +97 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +98 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +99 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +100 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +101 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +102 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +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.2509804 +>> +endobj +128 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +129 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +130 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +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.14901961 +>> +endobj +134 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +135 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +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.14901961 +>> +endobj +154 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +155 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +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.2509804 +>> +endobj +182 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +183 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +184 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +185 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +186 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +187 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +188 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +189 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +190 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +191 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +192 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +193 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +194 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +195 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +196 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +197 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +198 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +199 0 obj +<< +/Type /ExtGState +/CA 0.2509804 +>> +endobj +200 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +201 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +202 0 obj +<< +/Type /ExtGState +/CA 0.14901961 +>> +endobj +203 0 obj +<< /Length 204 0 R /Filter /FlateDecode >> +stream +xĽˎmɲϧ𻻄J* pz@PBu~]F̈d挝r55ov?v:׏?[?5껬~3ǮUoۿ\O^Oۿog?ݻZ,ooVޛ?ԕ[gѝOЇL=X}so.|>p)zc>|>PUz>>澌?=݇|yW{>t}h}k^駧C=pçyg{}(ӝhS;e矞rR~hW]-;;l_{֮x^V)wokdy ϋJ5'=~zʶ>r_ \|Nw/zAZx^~z?U:̩>Vw/~z?u*U+ŧ$gݗv݋$g%Zǟ$g]R$݋$'FA8Og*UB̹7/:~&9ur7jY~z?Koj5{ӳ,pЋ%5$af/z?>%jǟ$gٱ kӳMܤМvN|l~&7˺Zܣ+OO?=ۋ2 3Cӳ,}s's^< g}#vgg{3YZ.5?zӳ,hS;5O?=ۋIN-lx^Lr`}g{CY!PV.>l/~&9xTd'y?Jy/grS'U_Ϥ&|R@+qAH2<ۇIѹȐ\r=LV$9ua³-X~˳=X?_y\x{FϮxhד?^A?zq,ZCmtzX_:Яm^ag[WGgn^? +6{uh(Q٫3QpۋøWG!mn^?a{u(r>ͽZ=w1jkwt/nKWŭν_%K*ֿ|U^̀j܋[U{q`+/_׶5 ֿd|U^ۋ[pEq{q_ m/nsmI-BK[_딮ῨmޙW"no΢mz"]Oa$k}ww?u/>g __d{>Hz?z_.mo?oޮ& 5k~Jک/'ZkF7;CؿC~moƊ_pМ@4=ZoO |hai2KZ}:w߰-1_҂oZ8I ZGQB'Evo?{c&_ شM_р9 +"6 Ț,_ N}7Dh`/fsH|ɥߕy8zTxL_רVDD<4Аl#EckΧV_c?L ~/aJ3~lϴ5?S|}h O%S?L}4d~jϴ5&>O0ЩNKFc?M-~/ď0ֿf?6tg?OjKBL_siSӆh ?! +?$L_iz3~lO%S?L ~94f>4&?O0=Y4ֿ?D'ZYOShkNC?M.~4ֿ?ÄgZAS*~.00F_~t}oSʹϿal~no6Z7ܚV/+_?IKáϿaf~jo3Z7\/ ?_?K'I|n_8?7Z7, _?ss/öϿ2l~io5?7b7> _?Cs/ÞϿk0f~ib4? w矚W~O+3_?S/k2p~n_7?{_?Hr}l4}dXӹRzYߤ=>gs hQ6_ci T{_\O'Z3oby"Ski An{mf?5cM}VzŌ_0c+fw.K.K=!v$wu,EnN͘W}_憷o[&/hqJ}7 A\Ҝkݿ}kk }7)AS.}79A\iJ9Үe*%o)%Mk}/YA,X.|gn*Hb1jiHLVX=ԴYj% l6n%d/hڷU n @6U~USʐ_?Ո7ĝtUc GE]р 'gB\)tc4li}ɫ5$a6ӫMmQ. #qa'mVϱ!~&`V4fZN-4VV`:b Ӽ\;ZGF77Wfm`RcJaկ:%XKt4Eߗ7d[IݛHcVP=JQ&TZXy:񆔍$eTMiCIk뛤)nW_D7NI΅&kaA bui|]"]|IZKW|zׇw8Rc ӵ9&ۿ ۰^)N5 L6VE!ԨH_"\bZ.9I0j6dkƒHXr&F yV%a=F&S-lxҦJoh5E4(̅iHNptcj`Zq a}ytholM@htU[`:k$ΐm34hq"G##$-%L ږN&\\jFXI}k31Q3Q˖}T)zCP9p1Lw'N +_ f)'0n$ hmؠbֈ9Z'mnlD0܄-f˱2AМ&EDMS֗FÎm=w]%0|89<; -Rlu_Hc +(K/ ]mRV0wPb`z^rLÎ宾}IX:x˗SmaQi` L!?lBiK"`\V0dX$@/.ia&9"-7"ccP¤%q!fcaJEFjAmI0hDQ[FʾڻSNϤso%&-aǖOm֢"jݤ0(-ѵ@-itf]tx1DYR/8=},]Jtp0x }38ejQ`Z2cCPռ?u&L;Bk {0M0]-!^d2y)FoHa3]IvL2H-v*D :ZK%Oqбʆd{K%&Sjp}wvs +hki;sbLZ3.66FHX6ah(mr0M+tT.[{CpyW$F-u>hc mX^~6A-)av5Yڶ2^3\D ^P6N{ab]Kؖ1xd_~Xo51]Ha;!,Tp+tзZFD(fKOnOkLy]=Ph8lc<-y@\s`-״ +g%5ɣ Jnzt.fRuF9z&]c7^fpk6]uͅ3az\75ehɧNN0_Һq Cc&MgbZ&]|{I.Sf9.4 [zNEr%@ r`wsezhT@jvJ+ OI"m# ;H6k=Ր ,y.>ީyHz-v3lF@rjņYcL#ĺ)̳u08p0h;"z̲d`kXM swiiVuGQ:ۥSD}pZ-gl|Ӟp6 )_wC'ꗌWPBIWBKӨ<6`Xmj֣FkWĪXqpqѺ IO|-vtj P^e |{D:}TI,o2takر$? 9=i.ze1óqHtv6ȽI-& 57[䇎:3'+&> wi.>>/C_@\8dtDVb͗6ѢYQ?Tj74-Ջ74]IZo LZ>WK ~1`T$- /%z$12`p㥑@t>jO)ݱ4bLH+`(Fi楑ܼ<)LG)fAG:tz LGxE{Kpfi{`965 ō|U:w0_vvA;gIŒ6(:Κ֨us\8e^GXk=0L| >]Gؖ'k&9!0 ;0G4-c䮙8y4&IZ۱+(2e';&i@ZڼQT]cJ$rͲV}&\0w2nlYPvk^YyNDt.L +6mn$Tz@3fG3Ihii;ybw:U$%:"_r*F6w@RJ'8qx`ǷFbLE? 2{Id+0b :& +h`4oަovN3R(!ү|q.KMK,P&qX+ǰ9/z̤:( #v/H!'w[mªQo"ӕ +W :K`w91D5s twM6b2Gk2NqthR4yPalYќT*vcChZjz%]91m\>[k|#0n%@حcnn,} ^c u4H+ +sMˁiF}ey݌v"Say2t,$ˎC \ixi&YhO\6OMEX2I1dI#WIj!uZwm5k6UI!Ofmcpm1]f+&H!^6?HsBU?_>WCB09?_ @q\daŰZv¹.Ɉ7P=KI?nvAy=DrՌCXaoħ8UcA +`!%:)i 1 C`:v(ڥ$鋝`k4v~{YydX\}j9w3i(и7%[s~`#E'ԕιt):\q+K14-0iƛ]=ai # D:t0qZIql2<[q|zS;LḰyXH.ㄡUCLo-NP6w>BX,ŕiI1~ + krɖ5{tpLޔs%t2.ųLE5 6򤭳f'N\7pV;e.;KE d}9hs֍?za,|5fhdHɸXDP׊N{fg7HŰHK0>l[ 1"-W+čz}`[^;0mKrhb\L!( e'Yq*qLtARB!mMAPJ8a0/\#钑فIa:ajZ`ŕ`F]ǥC܅V&5؜iKr`\xذde!1Cj7U|0Ye0tZa>; +U.i˅0-[.p(\YG$d#&s pظJ)6O=$λ1c lJfu\-4DyLjϫ\VJOm-XE]v;\{6%d-UKGljԉ+GcE +q3fX,m?AA^-N)~t$P'+n> +gy7q[$ݧ" nz;*~ehԑ +]VBZc!Ȧ]?zM4\H(fỾ`(́Y%c:󊃔<#0eI]wRKOܜZ !$ 8Od ˰b-v,kʦ=j,nU/gݱ30"5۴i\ +8 Ӹ6^#w1{X,NI txUo.f'}d"8AV6ְ-ij$|a=`6mgn6?0}ϭ}!i_Y j5֮?/n-h[4'6L +Q:)"2[ 0iW̆K5*$11b~zςͻyiX;3t|s(*}IX֟}';LR0(ʦd`1art%s/$*?W(m0eFT9nL<DZdžndž&f_/d&ڵ($cD3VeCv%I87 hݴ]=4A4` &\Dr0?N\IyW, ,0MƛYx)tZQS*] [jW=ZT:& CZmGW4+S$5+^%fu9EY1̂GzϜ0 ->\}rRVquB5&;/$@},UČqĶ0!T/ܳz/]+L\rq EH !윁#pUo#B -_Mls5(J1r\`Twؤ~ -mճ/SP.g HiwΜnZ7-V +. Q)[p} U1S51w$􉈊mi\!3I*[y[CYm[b qr Hd3n6۬l FɆRgK51Y}~cI,gG,m A.ive{´+$-3sZ s68 i^վ0 0r1{! L>7B[IۊkI^~"`=!ֶ_їJh{UFIMq30 +yZD݅S}] [9cP%B]%Td8t]iG)Zynn;l%- 1 h$Dvu #F +GgBw<yexɊ& +=z {dhY=cc4RÑ#3|.Ts~̇W*. H #;H޹a}w|!%ލ'KƱKnU0Ѹi4}NĘÓ|4=cbb#N{i +HBD[yTrR<9ȣv1!7U}$Q-2P\6H O稰pҴ`{-a㝀i|}3`eWمڤq%_0Ε.FqfTeM4>xzg`2jwԒr Ȓjʇ!s]%VNb~]oNN& rĵV+ GdQ6Kʜz:\ ņMeGIa?6I__yjj򔛋Ns쒘)V0bj`͝>(W:nVt4Wky-{9#1j'_%B<0(M/X<כ%f9ҐR=? vF`c\[(Xp$/=kSy%ԟ+*iW_ +Td᤟;X4 =. 6HF#wo8x IS'/RwJBt@$C5-˥ݕ +"?5Hsg"ð:Hʮ KI+ѱs;-2^t[O[!4?5p"  r[~b'WEsF'z}AjCW1!y\4OlYN iR0,-}nN^pғrܒ#X"@cv16x0{ I;1t%w en<:?J.g$VCs!П!XGZJ\ÝވJF79 t:(omHQЍ1,.Cs#:0u #y dwJp ­_<{7\> (s!=a$"qmrY,Tg0h/^r;)ykX/i4CT ̕U1 ZRa2friPqY>E`Luq! YD~bU y;5 8x)dgC;3pj{WXPVX\H,Ȳ /uvtCɍ oijDcVCq؈jFv ȱt8SN/9̓ؗ1+Fv +eē؝firp& $_$]8-NB.)ĝIhqLoy?ihŽqۀWna:x؍c["okG\ LXD cU!]`X`%/ +|BULwj-LfEE61]<60WRT|.;ZbE5 q>t{,Ol> aAA:hTIY-;}cz(q' aKy;cWBװWm_`$rgk[srWw-c',ٴl@֥6?]zww\%c;!\I:釓ѱE5"ٱϋMwmnIr;+Û(3-Pt 'V-Va~!wIV3`FwFpJx kD%#$ǹXRZF=_K40lWv1pw4i93QoS6(,i1`7-)նdz +)xfw6֎- WrM}>|MǠ٩u;gP!:'I&t.<))@;-:N ,Yd8 3YGCH98Z<9$ps;-Mڶ{wtԷmhvr鷱*3p߮F`h~Es4gJTY>w_3 i.ߧg_hKa?0 %m̐V>" t$0~Ypdbhk>謊ε#4g{k@;[$:v 7YX J]*H<gM)XIjQq365-F:O/mtL-@} Wc+Kjx[KEXX%iv34H:EyuhuoF<=3 +ܯvlfnxorf}{.\`;-<\A"$XGK22sڡ:~ut܉M:0'1Qї34vU,F~4Oe{v[b z +̄㸕FjN@^(?f g:;dxDE:BFYI;&-vp> td{ru<*4^Ïpz8-͎Ɉ26.΃=>;aYX-I~:sˣ~È$G:bZc|H:n (:C̮JL[AeBhw]zƪH[Ine[9L3Gt P=`!żW$Ag#vy uuZIC4INRe  +oppT%p5PNoZj#~u+_W3 WyX9^lpvpMd!F#4΀$[ de%]]qH + +qz'; ; $w/Wv!|&JO3@'&dq2仗;5+$^x_wv- +):v83d؍~1d8cp!t + +0$ 7X;1h3ȓ!.bKbAk*58@kd8 `Âw.o n'9$Z`bd͇yVhEX"r?Z*HOYHA#hZ6`\Z& +7p vṬT -S*_kUa mp_Jͱ jd;S7Pz`_7Fz\`]b j~?+II +c0g2.WVD +v=HwŷT~<܆N X +aS .((;vrQՃU}`X7ۈYAj(Ls}쭚4}woCCO HJY\L,q)qwuv[ w`Жe{J1j5tE, {92 rcPc:9dCn.(a87ܧ޶z O'1ϫn +-KhnOJ1FO/ !mI]ad[dk?E [l #sX\RI fC콊v31 )r~1=e,k/ٌ= @]Y_tY +)dWֶ*!ߜu5Alc̓rNv8e, G(׊C{W|Qo\u{= +C͉Ǟm<@Xi%"%1B'ŵ8d l&t7ʅR=mn5.1ӧzlD[\긧CnNK*k y7鲔o 5$,.ojǠۑtRıIӕ`(B~n׽RpQKJA8Y"Xp”Y]z{xTW8·]_" #W(S<,bw|0e,0nHCp,5Xdz>5 nps v62҄'/5T#1S<5ס3Ӄ2÷H@cIF@4,$tBq41zm)-1-.fù\BS@$-JeAl Gy[;8 \3r\go:+y,Ո#pA\"ʪE IU!ZNZ=Mmo$Iemb>~cF?2񾆝Hv9As#T isV@vEKu#E]1f_p[aꆧmصL}A +uGLD0%ͳ<Cw`#xJّ!!AeG[Z'2 #ċhӗ4"؉Jbc>`lyu Pkp]ȫřX7Lyy&2R Q@b +*-!B1ܭhJ2Х&l~f)HJgfF%Qu ɳsTr2csƆ#;jYQbAW&uI`= ٹG,V+Ϫ=}z͎p> ek(e+NCvegxjFq7cʴaa'm`y p uNʴ60=L} c1LVq˜6vG'oXF-`hWc<^I\S$c/% d񚴕iĢ%J hE9I]ߕf<ٝO|9KZ\MIx bReD]wsd9 7뾏6 ڍj]1V#eNLIcd.WvPi5k#`R;{#~ gЦ~cD7+FHUj#(;Ң +aqt8Qo1,'Aۘ ~+ :#x5]Yw0i-􋘭9thE ϣ~O>P8y(Wxwj4{;yo{exy 5gTslmUNk5TpQf sUǢ[b5_Յ|e)xt08))cXV`ÄXECst4(9ipK ZVkb|` 6 ӽ>UkR0xZ#}u=Խ]A9f 6꼀@hVAr:&[m)vdž2vvmj֎`-y '^b-rF$7AOs79gAcAHT%v":~۾ L+cS'1ׁawCNrzԎΩ'e3Hj}8WNs*ގ4' +&l[UF7\Ie:NO3l;S#ЊΆ؞鐣]FA [I&~d?hF5Ēeuz?V:mŽにw;ݺ8vICJBߕٌ(X=j*,6B dLj5jUpߴP{b +d: )mEZR _yqyae+ |Nxps:̎ 5A_Wa!C߰ A4[HeXmMİb'R m,Ó4zQ0s霨[jM\}Ǖt,pt n%OeA> ^eAtxj ^М#+_"]]04=@@&bUtЈ2@}\attgi@JIA"ADEXZxA5,e"xn&m r$Fe#{&S7*ĀM$SiqEtɼLbGQ xBem^[0<)Ip=v$l9~j +.r"1"2 ݒqdTe R*#0O5C̝)d$q| eRWdF\;(_k6g 9I4q0jz5=k`p_]yB\V>p2ԂQְ, 4mBnݻڪ+}+ _/|2`IJ yύfT#83I\8, }^ׄݤ?aY*( ;'%4Ċ IcBB]b+sRپԷ'6q7[?FmhDL{ MF Z׾J&-,aYYQlsX]gZ-XǛ'by\H\Ͻ0"5J}x~#2%`Okpe'.Իy58;tz0CakNpr8/RO0'qrzw\ 7w~Q3cqhk4?wm'x`[3oOY~TȷFݞIJ)ŧvՔ}.i3x2ٯ]xPY2>EiaijewZ0&|R6 Iqlb%Xq+ +6;*rd!j[ +FJC*V! ;>UA Cd&̶s,=Frd8X+Wn^~1΂ؐSH`ƺ劢xٔ0p{Pf"8ILqxo4Xwr:ye/7n; ! +4)d+f2 ;1f^!nzٷ[=Zۙ6-C +WpGpU#&cny[&7c4"#ĸ5W|zl4N~+u76+Mc; 3rʼ+e&Ýa$3: _Qی+Jc|7n)s;vUbb!Bx"6u$gy"Ul+=WN(+H؝|+pYX_b:} &i+(iV.K,J=hZxI;$j,t'UgYAM6A-oȡwW(U&U?knCjٻf: 4SVo1+U"t= o޽;>>j`d3S5îO_x)ˋ^a>nqMlG,0 0Xep[HfѦ]+"y=f&'a4꤅侖bh -[)/ξlTB\u(܆L|bH1^q\N3mB Hwðܻ%agew`j 9+?@@ފոlf\ˆCU+wC4{pjqf}o8C<;;I{b9= +bsbLHϯCD{'XʊŊ1MMcVŲWU5216@*0G<:"p>` pw7,eOG6-]Al\%aMLk=*9`w.4vd55c0) Lf5Qapvv;Z7qf9̩_VQNp ?؁oaҕuIx#jKt. aguz' @gPO,1s|!l4|&2׆rDf`@Ϗ"Z8yex&\}Btڢqrps`͵u[8\,-=)N1 +yvJR :qĴjt+r #fܥ)A?`A`NםE (n$F=YZ6X/ɂ)̌c&m5y L%q␘lqH0,Y5Gh/6/䆨l +##yř e}]gqd\μ +VZ'iM-[ %W hw@snJPWV>sdn /YA7pzm6 >`iT=N~2Ixe# +PIV)&9TiaFwaPƣZ7^6 kPW~vN[pC˛ݽ rI f7H:LX Ka֋EYdYe&'LV`9rJ|#^Ɣ8풺 hV|8ǓPpZ5u$}<'1 BgL-(].wOZ,d/_\\[0m6anjt^i%әPm!$G?uU[:\be}ص'ω%e줄r +h^y,.-@I q>*Z&5p[ۗqDȾ~"538!i "+ 6ˋ';F1ѓ JK ӴtVX끥a؝_;F jѝ /qce}ߑ<7Ar/n8-_9T`-,] +?h95͠r}Bi +vi,KwIJ./ 3TЭ_b'Bg=H}ggi-,WPƵ0?"7 +rKxY9X;N9L* ve&^,q}1lB-[m4+v\,Lޕ#:> {>OsN0JZYDpqqs>3 ٺX %ջ))xm e~q7nքիqEO#W +vnA5eX™@=j^U?SYAhu@e~w~} +yK Xj(Oe㜨5X]ӄ~=ٸ67B%BQa/5Ễ ALMV %\ Yz޹R),o8,V÷/ܣHX7lZHn}+:%y;QIgR"Jbz?6*:y׶ ̓_ O1{Q戏hdy11gtLL UvL #x+6S[5 /o# *]!{:=ʴ=ҙYqU# J$QkV +:bbJדcӉFTU[\ ;IVȭ;:q2gbpi)/Za[Üם֎3+'[cPoc /NۦZ(.+kaSR%}f`&N^m^~A0ts]fmV@l64W8j(4_Fcr +%2֜NA v"%WTj1ڴ 8s]xݕn쇑>3@C_=%/z'A;l7%ry%[;K^vZ<;pρ-԰~ ,T:#CB`E@? +j1yݬ(`w24eEw%h7ZFgsxFxsvQm*cdޣ1u:a. oX>Bz(hAA!%ە]3 4ƔZ%jcÊet 2$؎Ciy`QLM%#s{fSz+uN# R#b`]GLA N9j̡V_Y0nHH4(Jǣ6fU>NHC9FSapZVrsY ||8>,'T(} ?ҖA9*qx`s!TP_I +jۙ܃h/\uM`)3WT'UY~5`2t#r-c~wۥQ&oqO#o~#ͻYx#}z_o~+o?~+ۿ Q!b>O08@P) +LR` <N|2l."01c4>هF$pIn NnϻT:K*+9iO{818sg:Խ0z ղNB8)rg[`|;jAn[\>ڨ|Xc.' {g7/bMm1Z? T +Ӳw@Ւ)kxA>YY/.l(+DZe50M"';$ QSfnBE<{b=Ӆ ;*4(SP1Y$;֜0ΉmH1ˋfo&o8'%8h0\Xw.c K1:BXF?‏00Pv`W&e'0)ŋ͉{pLrJG?Ok&K> +8il`kF3g$|Gr.5\?qoc,gU ,I$h?}f=3:Ȥ$jW]mxHILFFP$!D):fwno#KyzJ$lIձ-c8$EPò>In4ǴlU'\K|8\,,0be2IYC 1+1 c2 0y}G7ϓ +=YfIMR*2^[+*ܜ\?ma$"L^)/`0μrOHϺ>0X˜Ӽ:: in.U,F 0 +qT3ePSJ7[CB^ΟF86O!eWE<: C}epı:AEU߂$M&yjN]R6?0&).~w5D,@+͏VORa#nʰ!v wl'k&U%'yq4_/1rRt 4O-f̪dmǒk ӑYv뮚܎0ʦW="}ny+] 3=&T?]a;%dT㊼yCPr6f>Va&tOF5|Qj;hw,8š!eȈ:NF o K-5%᎗J,7ȁ9!K|Ϯf*b[~ʇOIJ Y/0!JvG`Z7<FnaK#tɱB1$*%0[e:Q51{_qUhp}~L00ۊ,Lh:r &?8L# Z1 Vmd|SÞm*lM&1wBN0WHa8d:+;Ӡm{AvC{6۠/ aשׂC4ǯYC4sOw sʧۢ 'x ds`[<Ԯ- +(6x EXf xzb/Pp2g!e۩;Z<UoC}ɥ [^.yL{ޑyV/qʛJPh/*ѾWHŕIcw$lTlD'a-XibTC2qVM70mq=^ZC9FҕS=ad6w!j *IUGʂi[Va +#qU<*I٭ 6қN)v&i2UG Usſx1`b"qWus;:!AR6md̰< +cJ.tFû],.A֏$!_aHN7w;8h1*Fd4Qb +ťQ%R&F,ͲeV6jw x̒} +L~}#@Jw `8vP$}l3_}M,sVF䜦,P E(8HFUXcN8=WZ ܣJ' +%ևK5*˥h?,;)'adl=nZ4%m}xP}O`&X a\Y]=ͪdm8b9=Lf; +U'b`Y>9lHFtc5nG,ɓq +t$3q|QYM6õbMH&tC@XxAxHٱd[*`W$qԾ|"!(l$ʬ& Ld09XPU'v1ac5l'2'5)qᢵ]Ԡд{O) J岄&1107c G c08ᥳT%;NjP%lq.jPUz(Zh N'Y"0/xUSv př`$aAUIDt2*\ Ď5rLTd㳫ׁU'zgaT@`i$g0e7=Mעp׮=K46A"A/.f6t+"kYks~ +,8) 8BѺ ;|@2H UD=ʍfAq`$B25#IXujyI +<p NA!t5湴5ٽ vQL HQ6]wZPilƟ`d8YuX㚻SZ'?r\ Q(Jo,A2KA*OrE=RʐjHnsQ !^c$u19؜jzAY#+<A1+u`DUwLr) + ڰ*q:|  6IT |{~1 5 M |T|P}qcڔ7P"OLo0mɫDܖu*3yr+D8i7y G2a efb;@YrGoD bscHyL "PcQ|t M&<\N"t+# byny2ݸNI"@EӅ7͋ D6N(AT]{ 4j 1bA:v12p1* !" Ty}{)ZL Q:) rrp^Vi1Zdgm]bOd xDh֡U~(8Wߋ{ Y waf|iv0dׄt Fk-b4 +Nm3 +ԴVTФAJBITKjR}mTL;2\F%tƓ9ӪI^axܸ@҇@NQX߫H`UOj;.qe0 +'ͷaTJ4Br:u]N2i-H +mol q%DY(J Dpm76O_ %z֐6>p3\gڍ L#=eme~( CwUOBd1̻)h cotUe;qò +JYv1v%帾b~=bUbs27L hBٚ}iL㯋 $$=v~{`/!2T7[ 3_Z: k΀]l ,mN>"$ۍލw#@0^^HWln0USPcհt0@*SQBV@||rG%=0@ϊZ5BQ! 樟qrZ>.Y5Ss!6ڧ&w#w=ڍ Ĺ6|v#>#M27%TGw{|zN t|;=v82+8n| )#LcuޫCU`ܶ G!hoSoD/g)FuvdJ`j݈y $ va'Ďo)@WL`]t!TvaF:Nd8@pAFx8vҁ `>>;ʆ@ChǐWL"P r :hpt>|pnOk +1tT6cock*xBtTݳ4k\B+$NVBׂYttyȁ| ?d4;/>N 95q)I#7OTǎIP;}zOK@$)( E Q;ڨr<7E>\{$Ir$< r`&F#,ˆfg0AJH#a*G5{6@:Y$>[@ Zد 3Uma)]VDub.U?;y_Yq8 7AM."OaE %+9DR4Me-̭;@'" 6O>i{"پ% ۴Eʪ;ŲN>,8{|z@C +:#Mo}fѪ-q> w`goca*+0@r1@PW%d/97hX܃,OF˸@|`䙱/ +$t.ވ~̍2`yApl<`'!oNB uZw")?0KA@N:kxL %4h ge =5Yx1>%#2"Bi{dt &S^`;GE/-`Ё!%SA`MnaĮaW:@ڞY8N`'Hi&]t vbr;@E`;l" 0I|R!u[vQ1̙0[jvPeťcbTO!LT6=*rS(Cl "^`'HfYd );vH`' !X/,bSt5g G!fX8Nlr`=l ^fc¢yOpɾaLPt:yXic.g,\; *ݘ$ϢIr O^d u@'(ZK*;{yf N l/iHP<ؤz +EiHu7.lRVaW t $9enAmHC2cIQ0:b +El(Qaf} (! DY0F81@ ],0̇ҵHi5@ +iq)N.XJN.rqxJ>9@i쎚WZt.=.= $*D t{&HkbɩM j| B9>9"kxeJ1磔QIq^A$a9[%~3^I]M=Uˑ$RZ8Mcg3b c-cb'3Hu2}$&ᦁli#u uvRrٱ$Kyr8kUW {cGG L9\ IAٕ|"iЎSՋ$ҙ8U q(Fה ~{k;zd_pA+l?H`̓A̭s҇= qR`'?Hl gʂX?H|w_ xx9 XS?H1yv|Fl ~B;7nXd/d@g"K̡h1AnVzH#0y0 +o1S+(4ۦة$ IkȼA/zPXH`'=H.ZrуbNUIX`'=HCF veɌ&GPA L%IeDvSEʆMz?/~v,6zL!$]Frq1t>!uh;Id¨Z {Dz`!r)[A@"۸Ac fKTr@~V"u;)#j< !a{Y0B:MM J@'CLh|1U^9!$l2;)B`0, +n"$l;)Bb|+@EH"xL")'Es\K#-(BAkdW$"JY#I +khB7ah'E ?#ς"ɱM*"tv-T(BR듃vQD*^BQw/E&#>,8)BWR)˂"Ć<{qjK'E{ɤqqf'EH +e%o^XƝ[ȮۖblaQ,[--pŀ׮±#$eJ̨X!0u:Nr ,!)jVn!43vq;8B4ZeV N!4{`G[݉]!iC"3#$*m^tqӈf71C`> ς#Ăq5EED!yWG3~67D"gq']D;|#—= )3`U!h0=ec%;#40ev$U?tʩ#HLlͦ +|bZ)LI?B97lIQ%bIi$.!B_ "J_=\Gv.ʴ=< sz^^]OpFٙȒ%INLڞ!dEb:v8(mm$I?n6.γ$:%9w=8 ^.Ӟﺖ# k-Nŷ"1ؖ%`e-KH9Ŷ,mnӀl-M4V㲱?ո ,z1.'i\v-etr;;\fӹ̆e"2/e( wx.#=e9ثuY)ƺz/e$m!tψs:Q\v0u8sW2e.OËu -le cښe^͋w!]OC=vx.h.g{ثu=V:K XA; uY5fs=a1WZvz>&X_e#l . V2ՅӺ̟e l.-׫uga|.5HXԗ|ښ-eX>=j]vJ{Z~Fj]Ee(5֋s'[ssYase<ʦź 'c#.e<;.i/e\O.o w KO_wR8-e@Kju.>s<_g^ոe#2$ո - he|3`yI^ˆehe6獽AD"Ÿ¸;粋j\F)=e[`SӸ ipSW2zJ=|١9[fKT|-3W2,\ŸPKi\ft+an4.ij`޸6)%q  +_e7yW2 SX:>l̓/ָ3V2l{hi\bw㲌ix;?2NT1.ӱ+r>lW]sMl1.K:l1.K,{8{=,@t[(oDeZ67[I4.c[ոl:/e>j[ˈ1f0.%'[R2"\=}4.;s +ԋq>Eܟe^2NOSŹllٚ/ehsZ_/e:-ܽeӹnt.cG~x +Ż~.+Jo +1hwyYO2,y=Pi]*ZM ú #ù 9 +4Nvs.nep'8 [:wy: 9/eW}.8ke<4x.^)$OC .cA?ːFIap|<\ՃuYZ-LߧsY8wh՝_ˊe@o5je"jxYlav.݀!g-eX /eI38eEؙ/2u|o_f95Ž 1َ+X^`?0/;9_e9mZ~zF﫞eE?˪**Ź|:K/e.C(a72Q 6YbtN@Ϧy(yy:j^1hݼ (/Ӿ@ ^n/e6ݩO223/#\Ui_r`}Y&E]6dJt.RtwpÎ]F?]FM4|z[@twGdeO34/cci}1ob^f%f^#5!4<].2e72)v#yJĒߛ 10ed[|"0zQ .ż FTBż̦GJi5/a״ռSfx5/ jߚ {T? yfýQpӽ >o}u/kEӽHaxý T1nedL<˨"[#eطP ~ڗacþqٓr$2/rZ(f_֔j^b_1Φ_l<ſ=˔c7eRq0w/#٪_O2~xºbӿYÿ<ͿLHiDv/#ݏiKAfh0{ؗ1ؗQA{˘c?[ kwb726zYwI-j>2>neD:>=m}z Rvz-e8Ҕѫq/#AuyŽl6meOe +^3^W%bː=Jh/Cv}N+ +W2VF; 1cLe?nv2&&Aa_v kh[b_v7J_EO*w2sRR2驳L1p5/=4w_(vտL䓣ÿL_VG_$ޘe72m/(\"-m`7,G?+2J5=˒TR3V2OS||éL`6 ^X˚K^:ÿLZT.2uR[_6Í0ZPbGv30#!=3Hw-b`Fr;KO|50C+V3n 6dL y(a`&E!ƀVL1C2jJ6nu/CYN;3f! Mr?OG^0mv/3́PҶ傮24#";Y7ⴭ[8=eBBe&Cv/YQD_yE\˨~>n<_&߬ /e;iimv/6-Y!e0|aAR=_f8[z!×*Y5%2L|I\ˤLQ-e}[_ˈ;(P#W_8=2?z!_$_nFGu/S>Zuտ 뎑}yGШtڗI70\X-Y2a;{Xcq/2&epceC 0/۩>׻q'[yy0eUWwYB}W^8Xi^FZ"0]y[XepPvV +չ uҋe״ӿzq.CL!:.щ]eDlaj]F J`72U^-gue +&l.ˈ[XxxL˺LTnebOu\i]-v.j*Rݺ6/Tj]ƒ/ed͝,ӹ.q.ϲ] }Y<۾V2b2[ӚH2 :q[,`h5yLXhF&n,C)-e hed[Y,˨ %,˒;iouY ;kz,sKn2#SH{Щ0-X$1^MH1Vb-e81vQm>ʹߦ ]< "B|մ7ӲOge0-cF]ePԭ~-hஔl: M}ZlIbejQ|t}[㜍1d*{rٖe:QG b\y,qfu@iNvQGk1.l>t&f\Y^n\V{!r|7.GHtdb\F2D[q,.9v5.S5㠐d]DTm.f)9/إJTsNj\VĥTոLdC.U"'R)le9t*.eʍBs7Ÿ +Aݍ˪b;;Ubsz]Dn`q97kU܍˨ZoY{;!QQ{-d,2t=P227dBG{-c?vod7Dݷ)m4gCȦp풜H[KѬNŷ÷ځqmvjSնl_ +W2mԳJm؍x-VV2E (1\|`md]t-e` +I$z[M%oٮ]Qjz-#5`/o-fĔ^lˠqutDmnY {m'Ogaw2QXR4qڝ]DXUDSh-#%Eۖ!T;!XͶH=n[ُ͸ml(|obZh^LO}eA5͵EbVәt-5nL+ŵL- Ͷ qqi.e rG\m`0_]U1eC nz`*1Ylc.2bKn-#J& mSCBfn[Ft)>.Y"V!G!k㤵:.Y=˻!û'hݷlpХJD`S?ö _lږW`oޓ/eCƿyJ/ecUK^|$X|ո "2aѹe Nj\@#k/eLz7.cCY\{-NaCYݷ +me0\$1.A"qa8 P;ˀ("չlHH!v8qˎ\Z>e 1fj]'/5˺7_x,unyзZQ8xX&l*24EQجLZn華[u0;^`428lduԞ]72%02a[2.20h<[(H z2JPU2DY2E'Hmݍx$k,2jSˆg1.#1UzȫsE8u8~goss[E;"Yl˺;mL-迨)~-S1d mFdwL-d6@ۖQbw۲*ڨ=l˺l5n[ƇuɻmYoQ5l(yؖĠ9m$oVT2wo\?-ݷԮ-W2\'|y]eɿ[˺ӻS" k=˺ԉV-e"]ޙwVqٓ]e.):Qu'6֦ b]ֵ=X8 m`wv>e]"0@w.۲^ˤ+neCti>źL2F y.A L]] Z4\e!'~L]Fi,Zˆ$0] ݼlD/W2e ջshǭeRedgT0}ne]Ea.똉c.Ӌ>Rf72p[xx)&^n.C߾yӻIQ0.#v +B2z/l.lˡ>qcź+uo:պ kn<ښuחU +f]V~=DO\Fr$;(nm[0q2"FH \!ELeȿk\[-eMmg sUݜ˂չl Ϋu캚:ju. +Y]\.-e;ߴn\Xb\Xt?v-CfؤmT{SP, +f[&4E~f[&{:lrѼb[V qږ5,W2-}Z}dkM$.2ݎAk E[%kٷᵸ:D1j[Ʊ-4&?[mGi[FQtt÷: W26e%e rkdoNPʴ[l8bb`72cR0eK\_l)Z`72Tϲ͈>0W2Ml.lMKmbjMb[ƩOGv-4byؖIw^j-mĭe̯mD"*y.em{snq-co\81tӵd{vs-g˫iBCglMͳm/}b72W iYR/eU;*/emRoeh2$iYֱiV^LXӏi5-vNjiYp~0-, {ŵz]`ꊟ-ed}Njm2%\[XM?lī?+V2)&>l2{a~l˨8-ei5.2ajb[F@G۲,X4eYɂ橸mT&a[F-CW_m(E_r-r7 {ɇmeQ5b[FV5Ͷ۲pI[\z/emmeim\m8'hxؖ{lږ%&yؖAQoէeɦ42F:j-CbE?2ra[FFZm\~ +&rs-Sٲ/e:rkYR[e,pkY3wSkiYxp-e|?^\dzjxq-C=GxRe v26`u><(óLr^wHeп<[x%O^.v[lQ[V1MoJz/υ6_5ʢ]ms'-oAe0[2,fsߝ9L + )'q/ʀo>=)T)z'O1HxZ봑t/]^睿0lw% 0(=V ?DhD{O;^q4?ܢq2o3K.eՉ5W|F,rw|3ۿF_z,ә?Ekۛ(򹂔 ZW[,{%ؘ|GƳ(x%r>Aje[/=جzSّmsxm&m[P0wm_s&]whuqv YZ/8wB$bb|*ı N,zNSij˟D~K˟DyvOۚNzNPR˟D{گ˟~'=;Now6H3xpg'?߉gZ]˟D<(8s`zϘG2D'?߉gyjX~'ޟ1n猹N?ch߮h&Xk Ү@ꌚkpkj_~7p@\Ns-z σ")"mXn/ޟՋd+щ_xTTжqOPztO{}:;>w{T^ȀY]Ogs!uhqg/nzuthvw~}@-a iNn/ O6=^p, +t\˟MO[bӛHϦN]V?ݍ͝Q@ݸnl +ʾoqvS6IzϦOXm8nv7~6ʫ)yOowgS fkv'~6)9zq*nv7~8Bog(nn7PLD7z?C)}!;q*TcCtQ-_fPjEnlϡPLݸnlO[bٍPNNٍnf7~6֙?ݍ͡XDq y?ۍ94速z?ݍ͡8Aٍ۟Pc3Xv7~6"$ʢ{q۝uV/owg3m}3 Nl^B;q۝0S8;q۝$e6/owg3[H?&! +Wp 񛜆'eO#o5۴q|R ~YsVYYGѩ8L{_/Ƿf\N{?=~gVOjQ`Jwi[?X]Nr{?+~G!+iYB|o,*wbg^xi,ӊT/TZ#V;b{S"ߛiM;?j֟ZNϪ{?-?~GiYg|oo(0^a;;geZR4wZߛiQ;?ZFV^O iY(|oo^a[?JX#cOhY|ko,?:7ZZi? oXrN{?5~'-gXd>o=a:)ݿxVȟ/vUsmw߈urε_Ο#hwHsrQG?\7B7/Ͽ\7K?FoϿ\7 +7/Ͽ|x'ȟrUsmw߈wrε_Ο#hwtrG?Fsi篒5/Ͽ\7k?FvϿ\7Bk?FaϿ|o9;aGϗ9⹴WΥ_Οv.rUsiJk뿛?\[6]U4z@雵1>,SL䟟LCۏfSƆ@shM -$.(Q~7ZW{k Ro#H(?3l8۫r |6z|pT OG۩6m1ʶkWYHOűm#l˾=;c҅Y8D)įWe6>>K\ͯguo5A1Cs4æڶ" }/1/y;n"=`L]0=oź6fߨy׳le2:C[SL +K0Ci5=m2݃ݱj<a{7@iglgצVc;9`Ş4]#m~|lt Zrsn0PueSs=1fa!Ӷũݙ +Ŷ-}$!v~0w}ٝN~Ijآ_2ll 7j`0Cltlم]fb̐=0J; Zc6k5 n55qagy+l8)C^kӯi@Vp9)na;ɦ8l X.U"nݯٙưi0{&ӾMX|jmSέLi;OŧO[~n8ka97{i债v OQthJx5;m &H)k|Y4lv^V1{/aƶ9n̸*YdHrٜgڜyzP~h>9fg{16Ԫ$Fu&-ذͼ=uo;{6kV}ؘ~VN  js`ToĚЃf֪iOV{ >"HZ69}v;h0;kR`R+}dk|y٪{ގZ_v{ jZ|PxJ4lyheFMCC)s=gc7xBUUD7Z +]a} )IXRQ +9`6d51ٷkzޕJ{LCbbnDMf恝E֚*m2S|L hH.g= +Ll"G`5 ̀?cFQloS/qCaIܝ{"`* &h@9ψQEI6,62Q`O"|֫x'FY隍{E#*>3_٠;ѻ%ʶK0[lPոDC[m /nk+m;d{ +Oؖ;ٻyhJH#za/f4! YndW +͚l?>FI;A Lt=o2ʾӾsq}lft # +9iSxy Gl,\~aoӦnٖ{n"68'dFV7 P+xt r%6dle8fj+c u؈+)[4^_a4?d7r6Gh)AdbkKo7GBʦВY7"\|XPm:AE %{j C4CAhHښR M]{@ʹ諱[dq7e}؞wl}bXf3 1H8f#:LLlFm;+<Ya'b_MB.֙|"qCMlc 5GـHD mHx|Xt!ȫ6_Ytn퓱E Wz=+qؿ~L̖lBUv#%n&+HDtmH7[NbkE/G|ze% î-XCӆbG`6mOfo&bd_^Nm>Uv֎')meS<4̾0[.<{߼ @6왭y2F4lK$͔˸MG0N3uf:}ck><1ctvX^jϖ\ @O(_3"qKlYiUK9ld#ǬŬlbOry(1 +@&UCzV Xs-8<9!4NQm m8#gwb,Z-ꉵ+ˤd&p!Ei_si[0I8@p:Fw-bo |LIvIEAnٔ0QG%&-m&Yl3}\t +I eNa7Ul&&[E[`, +m|Y:l}nٰY#88ȓ겈Vf,#0xɃ| kM8"?GRYlK({D*G!$-<^"iMųP\}DL@UgO7ȾMҽlIRGԦ/^=m=mo+=lwc~əikڒ 5lCI<M6!f $"43Lg{w5)0[j'٪u>6۳ª-HX,z}mٗAִAfOkafx a{EZ~f}d׶}Z6ټgˎm}a\skN6^8#0uM[lXmb~<"#xῳi;)6QUʧ{Y6ٍIɵ9}Y{ E/̴ +F{+ٔ$Gc[X`Vژ5Xvr/Y\hv@% y~> $`ölK:k~#ejCrw.ך/ +`-9 0ƜG`\^:>zT1mdMgifWkWfӭaƁ+} +:żVTr۽1¾xE} Il)J:#\v%vbHAU|$HޑZyVK4y ,|ZB|N!99gǖ vؘqRPpf13&Sv)0푺Rͽ7]; 02EC#`a"ۄjtFP%5!@ ҾʞC+50[IVƍMNL`;4M3?6(d mfk'|Btن}_,]5[S WVw(c֊V϶jSlVxº&ʃ\XƏf=%#9rz10 7QtLk*i^C# ՍI,2qU_P` +ہ=6l5  +Y{P 6ضp쐕?Gbf_g&[IϑS{NZٛKK*')) -%,QmH8NQUfxyXwO#nY׏;<1lRr ulڪ]crBQ zu?KΚ2Yz1ŋ/asop{ll],Y +4%;watf;&kLJFJli]d}2z m6ve)F䯈uqE1?w-[$H'sebm:'b vp";Euh +v;cE7ݞ>R`.%6F=F\ZfNw*C`TnKl;vaڸ N:1bX67= X* #^ەм`@WM,-ٓN\QT]~JG0hmlŠ01XJR㈨/Eq8i45iq~0~бdnfc0VX<ݵqCYmjU, VDK<^ 38 m9l$ǁm m;`sS>:#׮ ؉* Rhl+ F?c{-]~uf_ 62Gbv50H~f!.^ jT`Wux$M iKͭ6V0[y[ٯdVM7,"V+1H֠C+6WjV~~k ό@J"J +Ec~{nJ*Rq}2anLZS뜌WD8D['s*"1Ho%;fRB"fC*h bgcuTcstK~ 1T iĬ_|~(K.ιo2q1~a_pf,"/@N71mǦv7YTA֐wi}Rs1pMm2inqT +yRr]^?b"~f4k`''bUN6Di bΦ* Ӌ$. [3$a,QBqY9=fdV<ue4"by8uP΍F XKW`Xb35alGE(H= +q1ΛT:rs PtZqڹƝ\c1IVwoi߸ōuzTIz)Ƌj*.ck~Hx4CHJ+0n|N"b MhMUDzAsTJ؅> Z>xݡ &M:%i`dϷ۾&d'"d|d/@L&/DMZ-O*b M"[J)x"T]rJ6N9G1/bُ/m :ep8ZQAbX) 73UcV {USNPL${v>' $<c-㢃xwF2.=qc6Z"^@V1_fwZ.ǩXߦU~K6GmA֬E4݂شL߁ +q2\1Tʁbc&tbb3BCG"og3&, ~ৎVfL`9S cs023p;DcWcDXbAU{G1} ]d̹q{U^9J<]-`W7V֤X,Lګ@K,a֪2j&'d?!8J$IajC#c%iwbY[cOLo|1{r%blb^76MO3+S^ؐS alHn百z2I:>o|RFxJ}"jNiRQV8$ Q~EXR7yƴcqGjJuY$o¨}a;M>dUR=4 %;bJ^ƒ*1ܛvx3ZD{z]ˁzb/\W| &ùc_MwXo6bhO=H:噏B64\Y"X|s-Bw'zM+n:;fb)JiֻNeT3 +٦6ЁapӤM:t- +eiv(KFBԳBYPǻHǛc{YÐ$zi[9/EQwܛ&lcpk=TUC kO)vwQWEK +{sc=^B .Dx!]*uڟ0&~t6XbP$U❙|?5+)djL,Cb\()D^;Vo9c*6+bJA4<|ze^B .w=YomaofBɶeOhĴzk=xZאSU{JliJUD;'w۩zP4>O]|^mP3KY̿Ŵ('#7J?ij_ߌ Yb}̾7= 9*) +KX 114|]e0&%!Liv4}l+J!=e#JD8gnGו=2+€[0DоMS 2^1lwjV13\3'qVJYVR`ORҷ%Q=ӏU:glmҠ9i6>L5])&~7ׂ۫`)W ϒ}%WT)uFl\nǷD/UDIq/Z\!}XI`Y']-1F1NWp9g^K-ҐbJщva9#ĪR2!9g 5La0]㡟I603R|.A=85]06H,~o-e;0B$vuɆ8Q؛Eno'izidg q HlNH\M:j4׼YDj^$^|w֐ 'q*qS\eI!n+٩8cf؇=d6SY۬b'>l;>rLv$T[g7=~yZ;9{bƪr-"ىem7 Aܕ5oaikIPsH9e<OډV'$\qHHI֢OeÕ[i߁EbڸrbП Vi6v77R,ӿ&eba9 $! :*v9;rg.zi96&n}WIQ6}=_'3*Y%#Bbh׏ğjQ(g`G"7C + }4}m'ɾyW~"bẻMgy]=CiK+dx-j@bm3|NˤZج!{j=t9n0و.wNboEMN\bK(3NBPNľ~f?r3ԛglJ2q.s#j7$-R6_r87[,SX} p\C1 +JӚ@ŸQ=)O$<uƏvnjRHn+$!O W|jo`a}%[Ln*f֬aYa QDp1n$ȀdUX0F2Gz]R&F: ?<1U"螒O8J.B( !P1ݘGz|!l7Uo66Ͷ;wΐbA@b(LdNοX*=!o{+B8yb+L@_/9)uVV@%M#35;ܖY(vNqt(VYZ#(%XʲPJr$3FYn+c.ϼ3D3!)N;]|ϩ;?{P滻 +U֕*o;ZWfͬ&nHA#,wR.|'>lSH|}Cm5> ƈdIQݲ@**bƊ+{]Fs]: F5t +KU%@/$Y=g. $:/*7CNZxɵ[Dכ^ _QN5(?yRtD%6o+VE\KAWI*BY:!xMh tqsN |2:!a?|=~~T#XeLBvqO7>}yݯ6ߑ[b|Vc{:u󡬪@_>ÞNh}oݓtLجpqdcK~-I16PK(FORGKBPȡȑw.4>'Yva!|5wF H#% d8n( +1Џ|?Qa8eCڤ$kp!԰^zf36Dcy3\N"R.>dBS7.~;+LA0[9s/z aWRs\/<6Lևilj }m:O.؛IocקyB3[X~`nXSc".444Vy- iX-LbE`Cqgfm"> B܌ݕ9m&~+a/9RLez U5_胺OɬǾ?DxZj`'(u˴|*0t.[|~Z[/Gs=/4 vԝo}),F^-&BG}6Fc`C.U Wz9[y@lfnDuP/sOlgo[pb6PG^wY[PIT2Ȏuӣ0%`߾븈RsR`Z*j´+ȅ&_>؀N{#dlc1o,=`sTSm>]_Z^Z?Mc7A#N4(T@^%TۅŬn@j{$%*V:1u3o}v~xJPMVÖ5XT0l6(q(LnPB|tf>T6Gg%K1k=ĔPitwő[j +K$A|%OYE VG yI I]N3)R|so,Y /TZ +'F*J; Wom4Kmc| i|b zHYK* CwXӅ ;B19JU9rԳ>a$Sb%o1QٷdRjiX(8P؛Z8]WJ@旗Up>W@)`9qs ws +ۄ#i*yv33ȐTrTtG,s+w( 1vڠysC$H"ҕP#8ǐk!z_5u4*% +֯MeϮ3$jD;Jco8cS[Iԯ!*K:/ +Dwֻ^G-ϣ+ +Ü^ۋ_`4^]:>FHbȍzOa/]Jo EU{vwbѬ^ߣSyH{#wRtntVaWؖۄ8Vtq&[ǍKmY{NW&6Ձ+@C 0}kSyNI嵈KZ^ƯK8_+a,U]8* ~έxq9`?<ǪƜ ģJ+`^t zS#Bŭ0Q?`@#,VIAX?K౻췊ncC7_}^֩]69uak\jHmV%rXBuF;ȦtE^,h9]c@k"V=g4xɝ}ྗ-u8W>TTLoIXR +<(cRK-y8}V"0+mzSx +W6l҃+r/&Bn<)َ(Sb֌ѐf5RY_.~@['e'EWHz />=5Ŵ&x^J3Fr*n>߭՞fG*<{JgqHus$oOO 2$a{Iyz4qΞr؉|;O$ǽ7D&RXDdS\ +~TM71Ld~[*`$^W2۾pI8v4xWWvzm]"$;-5JJ]OT7=$Hw~!sryΖ-=*5 pw0} T yC/(`'5$$px/Z؛Sctq(!##`ywK.XwBM/a>u2NU1VsdB^5IVc$-Yu('WW.,ch$Xh$+,\.g4b/6e(ŏ)wjw7"1YXB*9BHUXՓ<"4QC:?R4K-K0ҙ/A鹓J`dZuM6Ai|\{_|'qltwQ"XKQaEwr+&tU6ݡXڟѴL>~kda/ڂLYxJ$/iX8t|q{&gUJW);)l}@ODA|"@ջ9rN,#ͬ¼Vvvit\*<2"vLMM%$wb1O%nB@M=6"vMXw\;CT[+ή J}I%&o`N!s0»V1.i$.hxtn׍ɮ1<L,ִ=CO;zG2OR)C.8W f?^U>=Rzfor'XĎyܰwB6LU/^t3/T;7m+E_4&}RE3%VA2`I粟17'?ukm[}QdxAe&ig+L*YB"nOJ5!ILJ<=XmPZz9Ed׍`KTI}dOHe2To&%HmA߿ +y;(P1ʜJ:P-/ac1CI$c[Z$T8elcIH&S{jbޛQ/8WqއM_t7 +M/7jټ$d5 ++r%Gc>ј'|qbg>),ee؟ʏ&/L3Ȝ3zbHla<ێ>>]ƭ' k1[oVײ$܍JA_%~묺mnӎ] +?kC(,iNr7tA.$frA.tQ|/s9@)N\brdIIH:1C{t7u|}SBmD9_\[Oa1yYfdN,V+$Y[(g|sz?f_GюOtLѲr5Yd"4$:Iu#{v)'{q_81NP\Sl?"pq[cvYT^$X" +ԽY7} X􍎟 mr_?ׯ@JbnkuAbkTf+ ;BcD evyr+DaX`X ͼƲӢV۟9Xj`\κ~x <xjwvldKmc~{>Q}NmeIZW2 Zp +y˜.O@`xf|SL!w>/ژU51s!t/0MQn:ILǩR⼰qq>];밟 -1E\#OShӔS49M^Z c&֊K vjPiڻ3#Un;|"OKm}}]!XZ2up;?aכCCj+; C,-@z"Xk:9o,D}hMˆ-,Og1gW +κ*0&h9珌c$ϴ6 ÄSZLJVra`TƔe:71nđu3<@硃WfTcCҪ4FTZ\wȔ:-in!οL)ś\GUP~Ogd$&WPD bvʗJбp(Ҟ8=L .gh8WVhu)ı:v~G* /D[#4VH(^G&n1[QiS+='v5նc.$`]q> 48,֋*;\bɢ@XZAUAoZjH46g@x쫤*&Un*'aΙB?ZzO AЕb`P>Y0]ҏi慰8d3ru7}Ĩ;#ADN4nȲrcz$|{a" x"U#@iUxJFTӗ"R9)m",/7abCӣ+?<Pl,EMfI$lİyܦf̙ ْKXYHpZ exk0M<.em5&t`_Z _Qz,%%6f{)+e%1 ,1q-fQ.>;l[;pB- G>Fuo R1]GX[}r՞tO]TfZRVSall+?<Qh +kJZޑ{ͺ040VF/,AUis" I^,3tDwZcSsIkBn՞*E!e"Pzs^l[*`H; ]jޱq/kKl*uww<7UGb=8YtU&ڙ댈m(uacb㳳'O?[aU*ǟ8h9 A7|ٔOġ|?B0 .>͖ۢgy +Ivus׽RhX2nu7[|4i}%݅lwN7Q3ٷL`l{׾^ ZdO>X<13hN,,C%RǽT9h0Q..}-z|{Ea`~c/P,~wsƩLSCs\ %Gv?"JÁIG&FrT7zO-aGm:,~R,a|Bs~;$ԵLɺ0;;+`o?'o 6~=R %v%^܋f_$YWa +!w0 S[ܑ*l?cc|DwN%́S4՚WOd](VCF4O pBҿ+JNP[E4gDŽcH7/,9d"Qq?j蔂lh8|ǽOP-hUGe;cήrh譎*a%nvTbIf|JISeV7t Q.CM >@Z{Kلq䢧lm,OV;Ll)O!d4Ya WN}~(>2B,e: ,&IZ$&q71VW7pPנK-7QqAa1HrGj瓩]- Ty($ݞ¾T6HCEh_ΓqB#&0]hbnGĐlj +gRJ#́X&#&5aT#D?dH$] c/ {#Bqﵣmd[G<'b2]nlFhb=vZjRN˫VA\z0uCa1#ڄA~xf,,4p@w*)CJG-H}<Ȩ31X ǹ%v|I6m6h bXdVSDw9CAҫV!LXLqoA{1. sW3ЇffK:N01)lViխSa {ݳ[\=sB\bGPO:s5!I0מQc*Ee @ʉQnӤP0W0z,! +8u-g-)Z +]&SHslY YP,$<R=MmF* S/9)bdi +*tא@abwVMTMf\#0z5jP4_wRnb]m\bPʓ8-'KoRj"&׮#MH61Ht q׵fA1pXIz~^7GE`Bt0hc]"o?ڄ]QNc?C:/iOl]$~]{+(^c@5>J[FP Ml7nVa0tsƔv_ YFX9yRcJc9Yة7Cv &TPnfKL +ɥN +M|^$d{96-4ןID$h8$7ObYlc+&a Iw`Ҡ:t1pmzM[jT0.`-'>3̖zNJz]c_zJ(|5f-H'stI<|ռB Ad?te4z:-io\X (+??_q=??,cE$!Mf^@Wv1Z!.lўa&X'Y01 5}ۘ7sJ, @On-"Z8 ,Vͬa M'JhR3_Ćm̎INL7e #'{Aada9d&mlNSpCS-D<Db̜$6^ =}MIJؓ2@AsbȗIC`VdK G:c% *zm䗯^l]F ј/BC_S ’<*LZD26J,fK=H z4dQ:$4FI((_TXPbH r4Pwփ`x|>Z]X|ZAj時}0cd[ƜM\"2 +OU0j"KKLhe%a~Z"(0"䆰L kˆ鉕԰!SZH{Qa8΍YunZ#KI{bȎ*d)ȝ + Xs + 2 +/ +Xa۟c=ص5]ƽ01c6~ObVb Fi}0r6abK kԜDگ_;ݒC_ MVM(-kQTXDh6mĹT-ſۓDkac9K2YEHui c[,α-66[he#;Q_T0 s(Z'Ɔ-_A%u{v`LLdpy o-بAjz`/h 8P.~ ؑ FDicmE4_xֳu9~!lx>[]a68 I|?$dkLl[T˿g1sJC0~Zg&%F8۹c Ұ-/X[g#o?˸"X v>%Na.gbo :k"౸ nL{S{`o%a0K >/1^-ܫlnMOK{U}) uiأP"}~}ݥEƎ՜Ķ}"c61gL +($a-KTƶshx(/Ἱ㑕ajod!NZcWeEY\j2`Ls?3W-]kJT!ǚذHBZJÁG}hzP)"~^HvYp>tǦ0᚞](lRphA~y\xZоۢ #͑0aHX,P0Hw܉7ylk5!3m&׈!յ6G`.gqM^<M*N0&Zǿ%}m- +aoU>EfZM!TTͧ"$_#8,{a+_oX@}m I,1~ a Ce5\nÕvkΨ8y+,>'ţH0éDgӵ">CwYj6)Xj=<n-;{& +zHxw.>W8xȗ\9u t1678k|,~<ش[bK6F%@KW>`1Hz @Ha-h>~.gb~\}yV\k{$Hs -Zn7Ǐj\1l hU:l_4*jq|wͷ@MJ=9Ȧ;c cdu ,>qą@lWEDv {.a>ȹz(U*ZB iDC#ivةFRylq +g )_-cJӊ;# p' Z@'zwt/8MG/a8XY.ޖ.E5!b~gtⅻI-.*p6J, n'GñI۲;J0K ADVr.0%vٻ} a1 {|, ƺF.nd?V{o>1Gȧ%E21bºcE^åD"9GLXM 2rA@0HqЅ_=etDf1*1ae ze)20MVsc/arf%vZ"}GcI!u;7-Q#ʔqBsT_[,wh`)͡n҇'X?G.2|g[2&U7e1lCE7+?2,@vSI*8J~#18YR#z84vd06ŽwK}yc,wj_#UI<  j[$?ap0$du:MCIXTW4N 8ZtaoPH͙*4BIlrs&_ցAp1# `M4AHqrSw-qg"@?Z!&yhJ&l!sk Il7,!X +gAKAnXIxۦm2|M[W 4N+~[ SR6z` 鄱A4rGwV[bnhDcVxޗmϿE7gфYW,[ #Nj$'k F@W{܂[47M,! ^B{R_A[Wk1$~@YnY*1ǿFͫDBXnh: ;B"N;-32:}=L ^6]m3Rt9~3b:˜nƃU+IKll!# y;7g^p#y9" _DeϪ;\?R7}.@ge&rSC_(nVaʉ`8(ǚ۩ R땕%k렁@.lޜa@ĉ=4;ZPXR \-^1py??RC᪻b85*" !lxL,bҙm%XRa/2z2[hʴ!YVAb>O,Ƭیc"SUQowYrwK}Y + Jc3{K<۲5'q0983R4F@`3 ҬF[]o)ۚؔ9,wM*`tI++^mrPSIpx]`h-7b&MrC ^b`mۤC2B\ +GͩuVD' +Yx;yqdR <.FU(S:,ÌF--{SĨ &PٍzʒJ캅j4F}&"0gڶS,ڃ;9ҧʲ5H"i%xVB91(^ +`.tbMӪtlA ﳰ8mM>,~ h` 7~3mYEc&61y&V-)͔QI ux +[,PGvHe}$q% !|$bw:tۣ?lQStmݢq/HjKu ~o,TztTa6BxQhD#6[F +$!-EU[3HjFjR(MZdOTZho6n1 0A/Y`2fGDdh@ 6ʐ\4Fe_~/`ۡ@lr̡_J1M$@PLJ1y0)p}MLpTe.jCBL1h{?J͏X<0KIxXВKsP0EXjSPH59 ?cMH:;Sb"KkXk`uZqMameQ?a?&^M hvsZl +Ī#'G5lIBY*f:0-ݝnJ*R0`v@Ww6fE9(qWPJp~ +>u96YD+nĩoZx _ouzX.o验ľ^gr<7MEpVe:PyKj# -y,eДv8AURIe-Xt'cWm`H(6?o"5T]e/v)?e,%d+fQL67_edT͇=KiF ؀|CqmwSaB"9U`q ˸`=ؿ߇v"4E-EAɞ!bgd-wESIAŮI0CK~"MC0;N"j "_M]NdMFznQ ̯J8-f؎Q&" Ju\WKg#GD^"luOK}bJsC6whlJI(e-#Bvp[l}K=0Q嘊H,!*Ku%kn@1ʛ`dm:IЦrp>.̦*c ˆ:Ml~|krNcRd%useHLyD0M޿ +xlD׮"%a8$8\ѷo1`miΈ}>?t`bl\Z'?y)" )nxƺGUX2 I|)Nc|\KdkU F$R_6~1֤ Y&I"A;%L T0'_Q1BE?6li>&vO^:Ǫa %x{K|OTJC.c:!d$^'26g$そZ75ktvD.OGB.yqn&f, T F{f.(T(쓒쒒 l)+){;rowb,U5[W(^QS;/^L5>M: yK8++!zNP5MmW`~.H;]寅MN A|VǒJTSX=-]4Fq0nʛ@TG!Q +1 q9#ą{I[`/!CP}"N1 `fc:)MIZ_K[ f-;@|$f}4֠|>2J_]&-K-c:#z̾&nSbʤ.vMao~c<&EV冽"@K?v:(P\EWOYM%e+XYcE%O- ' O +䟚|\:%4 >XV~Ut v8ب + 5+.D]2+[iG~+I٢Yҫ*;S"+i)>tŷu\C92`+h5Mu^0{c;.fVI?h'b=xDN{ st^Tym8+M>*Ĭ?=?Kx%J,$HF :~V/ Z܊\f< f[Ty*m1 SJ2E[rt&T{eMқ\2{>rx"ř}؎`#.ҏZSqg/<a)b}iv!hXt[dB4#Nt fDU,$EY0|\! tt0o{YmUVC!(adH㇚ݖk@{.|~m7Uj4<)>lKIv4<لy֬l.>0xLBbKl2 勅~; +w^-,S2'L(-)>;ʟ a{ Y'.+ɔ>]lh/^0V A@.?vʼn (;խ}]?kCfqn)]t?g3|[gŌS|( u(tz:S$0usNi2="N"-NSq)umKFu7ʀ u:zT +9.|EJŶ`Xٟʁ4 o=<"[QvRҴ.U9ToeSCs9jJL̩@gx=ybtftR.yJ Ɏn,ai!c qF__݁2bMx GV˒*9hzr~q +#|a~܁\i{-kT|r}uM؛C]F`;JiUE42Tb:",IgG[[!N.۞Rq4 @ _A0RJM77L=8;SUcM?oӪDgdqNmz>XZ:[rdT7!u4@A2Mku\dta+Պ-fF%{͘xZ&fڱ(1aw͌Y۹!zЙ]",Uw9rgG(mRnT GSbҒ63#-F}Rʬ0Tb^K`&mG +2cYsh|t9VrР5gئB!nю)lM1a73RYt gCUeژ7]؛؂e[baOlnٲ|!(v(3>t5tO֬ Vv`Pmw?]7#S:.6Vm'ӧ3|!ṃv74aZ'k0(iy$ :_dG,N,]TQKXjKyvGfcl !C@-m젂 8xbtzv)%MlfxoVWzLXvm}ِ9ӗMN/iՆ! 4Lk*c UNsDlB3GUR- zp1ے"?]Ԛ`K32!qGEsMy>9,ƞ%X>Hnk2ٶᐿ^]HM>`}^-]P1]Gj&xIB腂NI2fR_lUO]U'yS`_.m.JDh|Bq2J/-o[Ktd}>H`IK6| 61W\iƻ)g?9SCnQZK, ;KgSi s۠:u~k5=S\),.n&=NfI&fj0t +Nkz=ɽLޠ{AA }Mܡ1(duZs,oD|;tu|6\^spW1Ѹ7݄~el_sXzMa1v;YxEq./TXF#1V~Gi}?]MY%tK3${vf6X ?L0z  |byO,l#L2ng? 0xTĝm@cZ7c/bDd8Z%Fםoc/-EƓى KhF>‡ SR5B<@-qS,0v=0m +ק^9ЎY=|IGNj-g^{w$lկrd"/4ƹ=^dJ[%Z Y\_ Ǔ!۞c3й{bkÅa7i* +;iё"6 NC7fvYwK Hco["w ;; bǷ! kLccKߋIط +MYݹHF )׻Uc4TL Y3QgFBP9.G!1#z}G$3ڞABܥ~nN EhEl,Ӧ)ҁ=M%HM-,F|Np[xN7 +$R)|SZo;pޡ/?ohRї>j}dG4?Et?بu%_kemDleƼI?6j==?Ľ$s&FZ[ծ[Q~@fg7$@`BEI5!TH^UYEN*{QE:frJE +8?ѯ/TX]+O*jl9ڡj&uQT_;dԔ)%T!FZ2V7aC3}U9T& 5@^=ɨ{$F9&SUyQc%kZ`q'^5UŞƾ:jqxt:tJ1wpkQcp516Ctȡ8ekQ+XIGM%FIGMz'2<_KOt9;[o:j,ZtQGo:j`vQ5=h75YcoBUpPNvai-nx꓌Qe(dMTQ4Z7V今ڠoK56x+ݓpdzn"jlQJ~P딶5M;˳ ;4:ϡ,yPf;$X߇L]IB .WMB䮉' 5Lޚ%hb./,3PwLS妠Le+Z-҆ +jj^l&j.yJn/-5R`8MDuO M7546VÖ6 &L9[Kmi,mjrZ uaM@ʑd&ư;ʝ~ +Sݙd!VJakx|5]@N +CY&o W6sJ|QA*5_S4xV~ )Ua752jy7lPQa_$VfBnjQsqM@\qꓛ ^]AM>6]AY&!;[ԒsЂSA-RLPPXw5.MKfЩ~(x +yrhM5 +7UnQP#)4i0jQ*$`&FR&5~S@rPcyK!cS@_TOx~lɚc+*ܐƂ)r"ۦRҏVD@*ic&}$Tԗs(Q9h^K@M +R6~4rAS?GKx5SBXfЮٻ~_@ӤP3L@aS@-'K"zWPցu4jleV [j\V읉åЖp ]3lILSB_Uw]B~F:$(8S uH6CAMdZ䩒ض\]m)Q~=ԨbSl;D +$S('NnfZ-8z$Ԩٰ%VQc1`jtRBٱ%VxP.KWIv 5UJII N "\=q&\B +r +.FW'y$$]Ny%=[PcȅW[jҋ<sj5#gk- 5+` S5$hl쏛(%خ6ve> +- 5![jMޮօvܛN 5Ɛ +psdrv1Y,-aPcE7 MCKUjPcer;5ا,5}j#HAjlxҰ%6SBm棻@!z0ç&!F E;4jQ6ՙ%D 1&KQ|]BrFz'FֽIbiɴP>FX}HQa*&wIQbW$4Ԩt϶]A*X{jѐMDew5 +el/v3 =N5S|F65LTNS?T=fC@؏465!0/vxj7bI0HR1“2iSBMoaSBM8 LIMBMPcSB4sd*0CB}Xz {jŸg!&̩S &&X-Oy)&={~**KEf6 5>O2X3!5,E;[ ,=XKRt 5I 2iKBM(Cz\^mIqxkըKt$!FaS!(6 +IdÖ=y2-CDLdbw56R%ii*%q.UUjQq)=hgQ1F]zm)>w5qn]cnkkSDM$Jfmj +B3aw 5nPuf)uSC%Q 5%vܚ.$^qJd6 (u]DMD)3bQ QCFDԨUE`xu ݕdQ'Ș}+*vs)u`R$-Zq!&MqM +mP7(-`]ʪޔ]&mJL.k PcvH=MB-8զ + &kIm5ВGv 5 +"u*Oe}wKCMIĢ1]B1.bfœ6bI@L>4HG6->Ը(DOjC6e:H䚻~2cuЦ~ni,~1֗jb|cv<:~!gAViS>LRsOJ(Q&=WCS> :Oe=j74ɋfƑ)&9Mi!& p.HiRzQ^.&eR<4.ZӬ4tkO 2bra)Fbvg_fv4))' T"exZ664H~EKmi &WnJC=MuYDhWOiY_>Ӹ TOI ?mirR#iUƣڕ'࡞&Z-S5ӨNXT D)s`x7W^Dr Jݦ×Vݔf NcmҤaK;?|זڥӮ3uH1eE*=Ә{ +v50`Oc*saJYi,&{эa;\qhi\z:B;4 +QEN4uWC:qF3ڥ" b4}J8Ȕ=$>d.vѸziI4qNch:)aK:-17;eO4Ya[ +i7ܵӨʭOc5vs0`<ذ/vDZ'!*.S:(ߠzѰ% ,ɰ%8]mi1O`~Nc,R?ɰXY\ mjQအbSٵӲ٤S];@RP [iEAyh'`IIq4䬎հư[goN+B_؃iu{j% \?niuy"qNc Nc\ +˳)kơFR5h6M;pIUs4훖٦I;` >i]v#ø[i8p +I4 i"Xn&2΃8$gPNb:u2hJ V$ڒN29 iai۴ӨYvo];Sǩf6H܆ۏS;M8:Г vXu%z޵ӄ213\rmj g*CN +f,styS:MH}٫`kr 9q*)х>N4!EFH#csW ̄=~4 +fg0"4%DYp{i0D400tQft\lJE4 TJv 3Q>!TP>]Œ2+ +&kQvcpaƌ:M 3aɩmf"h\ljQhJ\5(br_>v 3 +-a=W94e ֮a&ޒHwÖٕ]ÌuMv 3 aخavIثO 3V*ALpw3lRSLze1cʜ-ɱMČ'B>a1#SM0cOJ_{fE0y%J&shEy0KJh0c>@) 3i2f⍭m0c4H~0lix΂SL܀kbkQcKì0kR'˘B e%Qv 9s.5ˣeFlNxGK-SOsa.ʌe)ш\*DS_MrGKBYdoX3'78@Yf%;u 8{!mNjٰMmMCMqs]MwVhȲoFcf *f?ۤ"ŏih<9i&Fe;/Ni4zY1aMf'ceFwE6i4Inh\'IOi4Ϊ"p*1Յ^ȱVYg)b++m]lIDs1tH7&=Ni4 w=KQP&tHQ")VnI1eLOh`صxUڵј;%M6]MqF|,MlF)R{H1`9%Ֆ6ZTqFcP#hLE_A6PsٴѨ>S:ј`FdXYweB6œqFc7m4*Jǖ6C~YMdkqC/ [h"H1tF wYᩍƚ) +Ѻ}FezyM!+mhc笺i9k8MmZiKMswi4Ul&]m7lF!$.&'k|ܥXO5)F2h"/H).%I 4Z]0Et&").&\+ HZt2[ă񤋖^颥EƣN冯S.Oϓ䦋{EcrMFE˂2dјù0E`ӈ?h²yv.W@9)m9eфbZTES) tIoh4 &i 24NU4XYER[h,.L`^!F&QC_֏(٫zTEc3S(li2!'Q4!k?^ќxEDјL;D(0%n]+}EY'ڃ )7婛(.UxEwQ4n]d$ɸ&&WN(`Ǔ(9*DxE1(ڠS])vEϢh,xEÆ92wTO'tŴMR4~&.>d>;d͔IMQTOhUYÏ'E4JFrSDh&ZeMS"'I4WxD[%&yp +??]?_Suد~?Wy~o_b lcjٯ3GOAP½/?/?{w0W|\c?^ @x~>o>#Ͽ_ӄR=~4gee/_?K`9y?(W;OO趂(boM[ē(wvUTs)|KB7fK +tQx*dU]W\ +" $]Bl!+|xm/#덞_m v~9@ڙsXm@?6?A+ags$&o `C̨|n~jy_S=7EY.g7,>`wu d}#Gr {?_nʴb{WOy'‹_>+s=o?>?4G`,ky`[p !ɐOcx߂di`PӻЊa%e48<޷Aqy-) eZdZ<޷ysTx/ɻ+ܭY9bzsDA1 $7V`Yy?>>w~Y|`!7ؚZT}ǟޞ6RsCg񁅔Y!mQiz{XHm<>:맶zŹ:?;y6OoC +{:Y5ڜ)Ȓʖlg񁷩`iRE<>6el7-%GTzR-e{Pip:OoCk~Ovi"kl_ޞŇ4u=4?=)Y.nƸ>OoSkJs۟ޞǧ֔4,yz{ZSTEcКl?yzwCk* pyHDXy{RQ\<>Ue8-1y|hM)C1L5%;2Υy|hM!& x,Ķyz{Z <<>dBĶod۳~fK~3n+8r$xsLcJ8's;ĭ'6C|ga;Ezchh ~ [5({_g;=?/>=_M"ǻ~ڸoozoJooo/oߟoov_o>T}{}} ~[O3] g{o3}yӻր_9ޗG5<ܝ/~ktz_pw<}y[CFџǿM<9w/}{Q}y{ē[o}ONݷǿC v7F;_ dNj"@X}JH~'~p' ?yf)ĽdӢ7F2نvFYJ>_~y*9'W+/~wކo}6<3yFwƿ5~cǼiC[?ld~g[> o~W>q}6,3?yFw<{_6 oG>1}6$5Fwƿڀ~czS>nއ]73yӶƿu1}Oֵۘ|a;{6mov)֮}O۔ޕi{;߻?mK~k[1> ]5öƿunDbLǿw5onmOۚżi;߻?mc~c{6~VGmo]+Uu'۔/z*JρCAzwhBorAm_໱W|9>_&݈+ +SEyh?o3r\9oG_Q}g+ ]Eyw믈=o3r}ߍ'POq &8 iE zcCo3ri}ߍ WD|7"/Aj-m_"˱WT|9>_f+ Eyw>3nߨgQ_g0/EA+z Bs/_P9*D6w/Co728nl~k=]Q}.#t.]0#)jr & +pk@0[x5;`p6e3Fm D^+(I7Ӆ(ŒW'ŒQFO78gN!qDļa1Z #(XdwtUWڐYO!exF +0*fGmWakIIĚ`d?jf=3bM7FYq(Igchȶu x%,cxI!}/X9=h\ƑGfj:WO56vO;Ԧ!Vbd?J^z U&^HB X{!&/h$m4E#K2qk5y*OXơ0]zY9zctABɒٵSx-*9TG 0dcci(/11Ä?#k*-CtqgZl|ւ |Xb)kYL)sɔ~UEl O>|#p1b r{=ԎyŸb$^Wr#9`ɽ r:ɡ6>@ "G ?/~SL%{e+Px՟uԉ᣼'7 tUMKXi5m02-yf̯^wRtjb??xoրLk\4zY . q7^00:C7[(4`m:%2#ǯNC2ẒwO:x^x^~fANۑ)]:WVK^tGB̻bMPO@iCXWlWPY+)⛒u+-:B 32*AV`040=EKs-)T6V,|GƮ7Oa +,u%B)A0p uSfsNص2)bo‚kVRH ̂w`L ^G\"ˀEƧ %ָ*u-?2$|يўFS# *u,b@x;Neo_(dJdW | BhW; p AIըIJH#fǰ'ò +d +iA( b/ +V +_uaY![P_n!S cpOþ^e~;qmn= +7fZ#}J1$z6 /a^$1@ Nb7 v+&L.|W1DVPs6ȣxyE8-)B1[8eQ[ytQ`: +F~X#}hAeؠK%IxFpI&U^䗌-D.]G{W [:q}`0lr'`!Zk .ae}s/ (szH.[:tU:R8/Dw6_x Әs:J:=|1A6>_|X zu0˂H@wAf=N||Xs'wF*N8=?EcJ\՗ HA+ڱSh|řQ4Q\"#wsTY~0py+x S DQ9vb*XAnul/+G2@T= a;Q!A v:-S|*ӝn_ct, }MppcQ`fD@xD /I.7ct(Z򂛈焷l>ؠob! [vL? 6~z@& x + @/^Gv7Bk_xLgif/X3}i;OmS@,:x;8V w{O|7Qñ:$Uc0hC͌AlK܏NrvaU>LENg٥O9X84phu1X́Kw}&k3T]!菧1J>''yI 1aQ6}$뢽ŭ ,cOr!@n o_ n&>/FβI #٘EC` ZpɾB XէY㞂yFؙ1"n.b-q,p󚃥ˊhκqn'R +>d`7|p&pJw/S|xz)kV-\^ :ðڻEp3-0R,Yf`Xex!O#K/ 7k-E⫎ֱ^7ܑsgYY}gnX{s, e*TTR0 V!ũU9/LjlbHV;NDc42]e8eXO//? [޶'HaI Od17x8 +Q GByw3'Y81?Fw!<=tarQ<|kA+c@$*:<|:ؚ͕t`H Lk^yX#%86 G#|gSV}V +C^NY*zG.`}q"RXfl8 Ubˌ7hʓ+Ra@\8R.sH{k ǚ`:+@.^!{̓~WYd(c XaE >.![5`dAN$!>,={"q,+0J~r4`f|?0v;xlO9d{DdO }4>;;b[;$73Pυ\Pa*s#NY|8tXpEr}0sM wN[HHܰ輅5a{4g< sLy˜M4FyakDLI*y"8mn[`d ql0([ N;\X cŌ0J =_KfY/AvXՐ`5F D`3IJ\6.8/~81EpM25ωiN… c{̇e"Y4J(9x'sW4G"x&Iz%s˾% :8nN%Q|s1Þ/,:;D&sexEb +6Tu6aHpmb=,q!U|ᗮW^v*1<'U+sPr#4 }3n5)}q%q'\k<7k a} ;8 20}@`T,dwNj S8}l*Pv \*AS;IEK j3˗H3cku}%Z􍃌KE]x+j Mԛ؅ZY ",ZtSax6?PpԊ''+Z +08'~H!qv΢xNx3pI$6 +a:YzYLR`ܷF1= &qCe,ncYۭHffOʒ_&kfzqzI:O%/k?bzq;5C {\F_E IÑ#8>~qYv`co$`Y&j |fC/7 F nGXrV,O6֯aEW4vZ_vdCnԭ") 'BdAXm0t_l|$MF0Z LAZ5 O7DfT1q+ ]g&  +568}|aEqV[e20HCM(<-i-6xz$eΆORTOL2K3?1bǖҪ:{5 G#Wj \Kd*氄XEBWJ%m o@2+])1#MiyNf @|ppcks߉M7jQQ/ڼ,ˆ.bt 1AIKb˅ĺfŰLM¡Hv"qUE&5f-$cbs8X1u)R;=Z ^*ga/&8Xd`BkꢖoC +رHYdQv`ENGfHԦ`R Oe㐰@-vLpXtIVU_1)pb2pn^iέΰ*[,X!pR!8s22ڼR= ?;lzA p6P*&Y UV۹Rw\,D@զljj #-գ2f#8Hlq)FZlӎz!Nkp|}5'E5;fB1%|ۑF&'ٲ} 'FiONL\1&zYÍ Ϫ'~Axf'x `"eA+:!]>uqRK%+}u]uѽL0'1?Y )mjNkhe;RRKv6 98,ӳO57VKl ݿHMN`z 6 +eS{`tLՓtY/6b'/ xE5+a_)^uOWgQs ʽx%X~, էRDdlnXyE]v:U3}N+A1؁[7iXEb[2"Km |mg:vyh#y; ͩ}[sO]Ҵe[yqT"5AslA_oS3pn¼3ҌyϐFY,}NApcCF4م<+ uf&ś +T)XX_b'LA,MlR d32kaJ80;Vz_F&scx^#w٘UcC&A:V} +Ld>{RR*MӥLLRhG2m +{Pq`7 v,pXLS%oE0P,Q qKb" +>`m0g{U_ 6Թ:.{vi'tB2g{'#yaX/BX4'x$4%Yl65Hm= +hIrbel慬ھHIq֓\pvD_ԧYi 1EO&4_XBOf g0՚FLcb}Hh3Nڹ84Df 0E jҼ2[S;`%Vzz sLn>خa ,>9Qj!VpXIeU|%܈ (WYNՃ`A=&X}E +/\1`'HV pRF3NBW;Mc6 WJzeIH1vELr}u ,y㬹K;E乃 Ȟ Q&8a=̖}‚| aG>ѐI\}nmj~MoX<͚ F)̺B\aIReŊ'ަ>:B%u7ur =Tbcx:X*^j)oO9a]!1:d?-+X>Я5[a$|c+qG!_{; ̧!5n1ʶ,Y/+cH0_ 5?& ƎU)ύ4hn)'x*A8 +A#:sz'% g9mj\,yeWX}]X乛]~1+rDd2B!]:Xٲ8dXZ§ #QF{z pp"r&"\2.;IQ vi\om3ܚy,7b=^ܤa,T YռӾMU0l Aj<_ D,k`d5Q@0Wց=/s%%avkL{13Ne ,:-6؍Ia9֝;8.uZG7FܦQd M8ل) }9|0ɌZߖt 5 Df}'2~0"`/T+UgppHͱM! d7 \\[sd6+e[&>6;_ 8l¤7e{P&[Nx"9A ,h z|υTd/%ڙtp -t dI +;)SfylMqC/ه5ls-ڷ z5y}ZY]i]:MYd):a(\GI\d1@!iu?jew) qE)I<g [*E,:Avd;H711kTYLy9s`MZ_)삟G $s>ERϞbu 3/얰FJȞ$!8V_eEUHl=hbWnb+OPrX8 ;}9f] JǼrdR<#,V#cd[25ϐmI? sGRwKNM7ڸ9@ +Kf|f_Xj u.PI4;keqk*\[2gHZpcVU[{  +sr9jKC,jM̱9ش C}Ϊ1dƩSȐtHTwGʜPo&lOC%dgmϘkd[ +gZ7&Mx-\9E)أԘ +ͻME*sbgaWU/kW*MZP&:"g>oSa%42I ,O7ǛlJk&- x&LoԘ#`wBjI9 k4:v&=c( 3Jqg>Umpl +hZB6f%q6$w[f0$@gKVzπ9'I 8;ڟBRaDa9$ W*/mė?ٸ:H0fm T`]+嘜`vY8JU:(MA: [LLW \(ݛg,jwp ,`W}b!lrRfrL BIe>?$|11+R|5:;l{#bEnCG!vP⨀FTˤWRq8M!uꉭ82Eɵ4alNߴjDyQX=gU :tHQ畳ăy1׭r}86iyaeP { ++2쪁* _i3|MۏX5)%y],=.̟F7IRrag̦A7 +}T +MmB mv\6ռ*A/E'w(:&^4A6GrBu)L/BTb$3gif"wBPLs,!hsLwO1Yr XȂ<Β$b]Ibu؁`BI fEHa2{exf{+1MR8[-)R(q3Azv;=$Q⥢dhm"+F`\Q-Q52!>*9챒d 5br.ZYP،6K[͟d%tac{LxTB5[3&` ĕR4WT^%qL4-K[d ʾRF9hLɳ)$P`5ꗍ,+2A^H:(dדqoFvWF+rɸHWO7v^)(4af ;יb )ns>X #)icBtjNr```ӑc͜Gb{!kJ&.k}I;(:N5J@)d%Į1t3S sFP *XRJ98uydɕ%LxDMp4ݭ +sMb|VV&K>LKe5,pcf1PF52;B!u̔ҔTɩ;0ثԏl!UqA! +nUku6eVs[a0ּ[6[Y%+*b`"AKk&5N `KEqEGgFtOz0糬0N\b3G-SlzK>Ac+YZND d WJLDE'*hpps4t:"`m薸 Bphѷa"W*ظB sr +;II!طU圑&p*NW琓^@較[w#(,&!`iĀN{&!ΖsBdפtpP`]Z&Y3Mp+Y-U="ՂBp?tlR}bj(q׶J1:Yn Y o +veB6u 8{O9`\[i2ϘT]I4DVRZ`P5z~hri7>l;8k\*KT6[1;ya11rh֢J"XJWĔLZS$y1ӚUa:l;<_IoszlH +1%:f,/p"?.mPZ* efߐ~FCUeȇ֧ x(O%E½4 &]xm%l! |ĒzA5!%S^bYϮ'2ո)Xr%+nZX:Mq[W2U[ 2cZs$"6N."/ؕ%`ŊaacSIƔ4?mkwf:Au). `( SNq,9Gޣ̙=EvVcy VFk{/nÑAEMu#'J$ehrA4+r%!*`Q`M*&%`iWn?Lb+eHs޹gibVTd* +in"{6Z:Y6Z.;w0-ij73TS PIL_lagbB1^XvW6im-kpVXL&[T7+#xc]Xt4 W *G+7&yVZɦvZϮznVlgCqE5nEhGNY^k0}w4G)^ \Ønc[S^{ OPXAnHjER=)1z5x*In{Jm̀;O^yl-o.Fjq,=ah}~arr8a<.JZQ8&أU֖J{@36ԝuHɤ.-U)AS3 b1>9,B{b +UȎ4' 2kWI0Tp1qMKGZ@fR HŖuo<<\S2-vlJbکWk0Fco]N,m^¶43(z-"&LK#6Br7 ()Z(`v +Jr菶tg ܨufMݾ3juԀqb&1 +`icçAy^eRWig3&XLU=[:XB19Yjy ,coYU- +Uקw&uT3h=Z8o?\``UZ+-ix%:ՏT`މ fFMh\֎tI+KU5$64NF[Qy{^DZ`Yfco¦Ns2ٯ&WкgKgcZn5 {\uBA#B} Tuv˝9Yhz¸9f_%Ap5lco Y$Ei%Od|ׄPy8;(QmUҧMb8"͚cY|X2+܁a֦#ͱ&,W:Ş+ NjGY&C_4 I+u}[N+)bY֩G 5{NLm]|']n'&"{ օ&=k 8<3n>[]E5Ln= +7({+IUa 98 "m]"kYYm3sV!n&('iuz>sJVI4Kx 6:]*(c`^0>@i}]*opZ3ىåY3 M'2r%UjW4eìb*nsBmͧRD?+>7tҰ\CDȶVz,+-*&icn`f%uŸ +D$bi8 # 3)z_XTE{*B3F1%:<|G"/wyk`bp6TC7p5HbAZ].&_V'ը҅^~4@@3,g9,LNk^h(z!g/ .V#L_U+vucDa_ 8V9^;Hu˃ѓ R!;u!sr݊OҞ"+j]emn=Kdm"uF}rSelRIt%(kV Ly3%pSXF/E!( g[Z>g[)_ˮ5ϧ/Pd/a@$ܐuzZ6$j71dkoɪjd+/8.sPn ifU!aUwO;ʭ9#q׷2/q.F=/O e352~}Vc"_ JѳC| hY2B}Ec{L] S>Bib`*31 +}db hO+~ +qy5#R7]5l +>1i 5ҬKrIF#f5qlE.#DŽܵHj[Va#q^Sc!qRB+aD*RF4V}3uj1=0"=8E;<_ +@qР5Wc3m=|]\?3 Vs0Xbށ8ڛ@رR?m3##/%Aa?U:&>lCޕj=749'7Dyg/ [ (Q- rt+q9S~Lq.a|Ⳟhjhe7J URa^۸g4ijw%e%)|=W DY |xz^,9 VtC\v^cq}\Cޥ1hP5 @2*DOkb.0ѼFB@NK8*qA B޿% 09Ė8}rCW[0_yawjmn +pZc.Wdz\ѥ}|sC@oVsdy+g4fY%V+D{s +LMtufۇ 4砸R8uec3H|!>nߌHf`_yS"aCU3yD]{{_h a]iHbs.-br(SgHAK|.뱖8}5# B !.-En#W%>k7U F*m၃8/䶎_:!pH}ۣKiRX wG;pp3Π~JK*<?}lMN| +qވQUq/NbWa,*5>Xb7K)vm{s _iM:V"!-_㿈r3+?o9ĹyEK?kf=-VO~,*jIo YXAxh& #ǹp,m>2N?yb!"?IW_sT'Z@ WۺX&f+>wpq_y3^L]~UJ^qiDk^F8qU8󶙏@f)ű4AgKL2Ӝ"_zyЈw="%FHN$ @"P K9"U%Yzi*kiԭ61TĹN i3؜Zܱ-'q!'}˦ j|^1xYQ5ʧN h Z-fh ΫRꤽ͑zUZqr0ϥrUH<^bwPBAkA|ܯ|ln,1fEI9,ʩFaêqGmgeRSDZ|l7ew嫊(ĹQuSGrO_r +f&!_]pьh}/|llDJ1@YC&f`ꡢUYvzR9aa7Qj9Dc"ɏggm_DBC$D6YǏzXigqZoey}BD1So1b\d^$l).-s aiFx "#'% Cn,U,;Qp> _Zm8vDōzK28Ҍ-W/5'(Ft9l\ZDS9=FY€e5w2&o-˗F aMq$rQs`}QBF3_ 5 +Zt.4|Z wQލu4pQ[O-::D 눋EoYdFw݄8Uܩ;[\"9xg%@?&['uW v8jT-{ n$Gػki{ܡF4WS6n W󬷴`V0qo1̔maK ŷhҺv5䡅VNmPsI ň%ƒ"6՝|%7?3B-XBSf7n׍q$jS)K8CD>06қ M.G!HS]r<}XVKm2+E-"l *F+XנA|UrZhw#z'+6b0oe) +.bV!.gȰtDoxy}|9@lx}OCBE@xLhFG !E*4A;96]f1MZ@,έM8'J5[hiZzY'!6muޒ8ۚ߳wd_SFs~zKp@6+oCǔ4I=cb9%V*"PKXDΤ6X3"Aybh"'f{#=*Ms'uJ 1ғwoߑa'ۭzieu }y;U4yߒ_5%0@_TCr7פTg(eǥa̪l^_ݡ.M3죁o"xN~]1P>C0UC粦s+rs&m;=NPmb +dlW{!9EMj~!/o絵{s^yd9thm3yn{q aPz4uc=<\f)^hi,q@BTFHeH1SfB­E}}+=G"Mj_Ӌ.VYpqc}KMZ"KIvϵPyc3dK)ͲgU{ L{P+ AWZv!J_6KEڵ6\!uھfP)3zPSׯnx-cf}a$d" ϊDbbi)zмXR: +}!sw"#.^q0x IK!=f2N:'34֏)衏@K5ad"(?;1WZT^Nغ] Tk%A6Dh8._u折Oe7LzKxt1BTce6M% @Fk~ꍧ6FG, /|"[vZXWuTJnvcvS`$]"}w,^׵+jh{ 4޴.wQ`sU1op&xچ'z. gSk/y7g{c""WÔP!d ɖYu [_/Gz/SI%gin !=Iع|=__Rkz*IJ,6"Vk[S^M4lM|7K{%3ZK|,\J U!Yrt݌_6 @VIR`'#'hmTe(f/S_ Mr:` +j4QimL] ``u+XϏ]ޟƣ˧GlJ\1\o1ORer67qތ&K0$'5bhRϮv3 D?at1;u GudAd`ZjwÜʼvLJ];+`HDz-7WJbjC{.K-6&?1<3bdzFf+%(=ʔK{j,=6tD $Br+=^i֝iZNC]ČK٢Q4L6#/lv9J +uY|%j25aZitW'(#Kn~fZG;ĥ ͮebigv#SsAlk`ui9!ۮK ;L#xh\!:@+eanUҞ7zV+5K+׵g0q[hGl4>$ʫ߯rkdz{gU9SC"AUSXψ4͚Bh6}\pFAvhMVĪMhK.Jk4&6-@kdR8,&7>g8%s5i2wfy]Ĺ6I.%uGv󑬷o^ mUfi7A{b俉4RL~Uh15?󗭜w߽t,h2S7ה*mΐE[dtg +rw_[6Q`Ú2E2e|î]g~"4VC<^̃-*ɼvf~HU;V"d. WZiٗJ4%gW\nmdfkۺیwe`G~|*\V. /J16D߻MzM+mi~s{4KP3H;jmHVn߸l*Ə`? v,[L9 a-*h30p&V]~Yu<͸Ef͇k=ʥe!Z9(\xǖaC%˔_fai#\\74k]S3O8-6-K%3?KFgpכ{\*}.2vG4+[?& dbuuaYn򽭝mF6(sN}J^{4bmNh3amc\rk:9j 22po\݈A1PamKѳMȹA>O%VMkQ^,f.- 8Fqse@Krښ~nh&ˠ= M;'.CgmisxY8מ\T׻vM-_܌42=4;yމhD[z~`^V('GT!Xr YUCJG<וVq `#inVv@ C>攚X)gX'%\GWX\[2 }9VrC϶7M +aWBpAnsi= ZCg12X.޴9V痐_:!5߭B{wtKmzLHF0/t_ +/@& ~s Հ.sϑVojt\!_i/Ug2ie`<RV7ʂK1[o2o]i$8i3$"a)4]If>ҿ)]Jzs(J^\,BY,=L[:JQhɰRi~(lk*t(+/XKߝ>CcH߻pz! +ᩨ2|Ҋ?h\# m4Ofd8d9 pdv]\S,f8"H/3/QĺKkn?g[KĬ8J76Z7J(p'EI|4 j-LM?h'wh|F&J\b!o jMfR[>ihOQ#m.\FT$CŞnE"=Aˆ57a%+Ic_4Cט-žt4.mG|ϵu5|4maO;l9^ubU&t[s/s$lچŒ9c[nһ_$q 7-iз*^nBCɥcINqcg_ Ǣ*O5M!36*^猩b߹/;VNJ'`ĥUqor!Pm. Af܏Ve% T5aCll% +{ɞA :;fN+$pG([][m[bAV݌z3?}.ǯ;p3>)U9#48uǻk-ʰ~LPhhT~Y]318ܿO8B5*u] *eԗrh4KbGPxD {=ŕ=/63KVGך"!bhwhD W]AWi0$p@WU\c mF+J34OV REILI[)FhA +R}g7<4<-wg@HāvZ|m<HʕmcoGd+ϕza6c;D:y<Ÿ=TX/s@c)MԡHVkޜK%]60H&yE0w,G?9^_{)0:Ze*.m5Mڜp(auTiT5W"sulK$aߧv]hm8)=Zh>7R-j +(H#Z+鲳0^uV ]$;} !kWniTuţu/2H}7jI1-j]M'9.NU)41|wjxl'a!~燀母DZ :1t4Fag*mfwityH/M(ՈG$0Đ5S^$s%tN{̏IY!>#U[׆o4F&r~yժC)^Cʑ<&s4w4h 6+WC;/'Vlm96 %Z,ex n*x0ڼ Au<^yTʶ24L)J*MݖLi XtwbRQ 'HvasqӓF%ܛh)!k̼=;yiu=c0 '0anZC +MiHs#X]#p@d^Iw[$vfpSUU, "clRH:c_]nhj_ p&<7>4fI GC^!>,#[ٹny•y_f5 +c遤6[ =$q@yJo`=pCSӈw>q#1o;3>R3qAEc6t!;aQB޹wݶ.XyA4ًעs8 T³kI'xuCV]iaivp0ѬF1_*/|`i0d8U;ϵ5$JO4@B+¼j M $G-gݦVb?G]^2`V8[IS9mC(=fI0/sӠGB5e1"c%5%wuUXxYu_~yk#[.:wh*'e{uD^' s[pXCo75@k4yWs rD Vj"L/a5dlk:ښ?Nrf3Rg(2G&ɔg>3X<<ggHh+*f %% pMA+͍ϙizt Ԙ7{ R$\{e$HV׸&fg(^d, ,ph-q t}4B'ѩxLm]L$Rj{>8=ƕ/*op=;E&EE@L/%^c01 lb7һp}l#`geo3V”6C6WGO+w&\ɚ2a6C1ugK!oB]9B]l/׉z8iI^ڱsI9 D"vJs9/l\F^ h%3c#"> jNRcLC".9=>iG@z&]+8Yg^D촬@P_3? A'׸|KV'JķrqZcr-aS^u\4RD?2f';D c-yQj1i4S}#*SQ[*,W`.nsv;ڙoo :+";W//xi1Vsy4/AZp|da̭\}hr\Yfd? PEEf%,M!.5|zi!RS AtH,"u"LӠrzhꪙ\T[(iK'T E(:8DVnF9 ]v0T)1h+L PZIk C%t~9sCSg|9KĈU5qD?վ?40AeIıXm% X\؇:H9SII$v]ioC{z|(#p4bz)T3)SPNY\_dT6TT%ɿ8Iz MRwPKq[z$#GGt&L:?QHqLLe r9iv;,*1u񛖪|k`2Q|Xfv^:E ga9;bREX_$cpqg4_^(b|q`_xLl_u5|3ԵFCB X"F+he;'ԃ>:/ټI'XR]BR!?A,#-cA/S]9 Ց-rTh׎ U_g,QaSTۀ7&2KavԪq5M\ kMef8.`)VL_]abzgID!6QePڼLZ0`t\%.?oΪٜ'~<G7)퓘,p !^2 ` 4R`C*g{>5|(Ui +!Z,Š@:EҚϳHMVd8_ǽ.u@7iXլ^]d ܯ,Ӊ)O{6K<4̝k)0,o@a¬EE +LɍݸҼ!C 0 B*-g715 S|9oY6. 31Gxf_CE\!(b(A#ײDZ%5CڲCf_Ld+\NyM~߁6[f\0&.T + MCCtiiy6kY4(IRû=%"f Ѩ(a/?x_xUMim~'#\?Pbyք+,ƶ{h9Rf\ ZJ,}ٰ4ɡs\u_+x7!޴BTWV5^Ż௥ Y몋ѫM8I_$KЮ.Xe*?!~OMi?%6F9F{f tHXGd9<*[3/b =c]3i+R'r}Va#׌. +6 + -剏C E ~cyg-⼪)ONxߊx[Sk?X q4Eb ꀽuѻ +rz l8nksIĶ2.[Md +2JCHӗ.!qVc_&$jx/: C+!ǭQ נo)C|r^ t>jhYf.T_ d?X#k)4jS&DJ4ϕˠ!, f'DGKrDMHqQLeӅ|C6=*Cu_2R"G45}K"W-9rk纎`yђV%4 p"-K$58Ñmn9A\nNЮp=OλVH5^.4wR/ʂhif'\z!olB 2(G" FC\3bP5Zf/K0JMIY1deJl.dk^ ABv/w(%vbó!e6a:E7D @bHh"]TDD]ew01lazLUJx$ҳLX/$[bd7l.1.Ѩq /RrX;z. ID|Tzr/$4]56b2]gkZa: \ |o\љgLXD. ZGbbWlC5jV)7ӆУą8Tʵ3Hɿ{:OΚǾ6k!̧9w:s~1i[U ]'ꮅg.e8\|şa8M"AN^氚UMp8o1vDَ~w% HGC61h0/V$lKޭ k2m5F3`~egx F}ENd[`ۡ0kMZ$u-{sJH]9o.GWW\_Z=(hw^oݱpn@E/ +\V+{ܲ6܏lY0D-RӾjus2m"J+ \FH5#+/!Us [1$a%V`h(9jrqq^}{ұ"IeF'x/g(1 E"~@hdDı?Xtz 'CE&1;3pgj)E V!3guaZ؉RȔr0`S]$TMDhUb]Ĝ-t2xu益*U=ͻ{ݕ7uF";&#`0b.i.xXx.')a&ȿhmW^HbGu5kN cYD3![ḱghv>%XFs,Wt5`}MM(Ju:sK\ &f `!(&ҢϛDI\x@ڪQ[]ؒtvOiuQk *Y2V/G14K% [: +qg̓][SO1tqFO5|0tfpq_FMU.ȸxGUv^d e"GPAvP5zLf$H_bTy=F6юbpdiz7HjtƦUSc\ F7pr=N.%qZ^"eq'7*[fs\[7 "Z$&^u'iG& +qY֕t!?wG&&N#~1\dU_b$?Ahv6ܢ.{iUsoH!ys,`5HZQ,r$cE )otpe6jNDY;q.ËdWNˤ W/Ųr^ _"e]..ĒhO!wEH yʉBxEt$aI!y[l¬["Zٓ/+Bb-҈n~!0jՁ 9%O, =T<ȩyu <\dgJc-$h)~$f,]}jT[t'pY+jwT&>](d8{4 C݊n&hwF3-O$X _WZl8oFP]Ls]`mߑC>&_d?*ܸah~{kqPOąWg$I'Rn'mz3D9,6Kҩn5RoouVC 2@}c)hd0 Ȑ#Q}95fG9a*AKF,L 'u }-̪+t%5kX¼iQa|$V54%BHz2g:L _`6=028]0 hq"]1h .vsi F##G@/s4eeBz"Za +3&. 6*9UQvpEǠF>MmgL\8']u0/iW%'5b` x]ybݤjݙGˀ˜oU*^|WejOsНCA}$ Yn{<1?xtw7@}"=m@ͥp@} hw8#X1﮸أYⲔ7r '3>xm@Zxś#|T~#o~A{yݻ!IX7x}Z} 2ּ iQd7:A(lOy@6;}Qv3'Hd}8&C~x{'xsoſo6GrP>xJ<'GxdnKZ}*6kFkƁp8kr;x3ϡl>x;Wiw@{\;xƲ^o +jjο74cwoU5\;wV\;wsjE۪k;j< +xs'CܮxYic'7I4퓀G? %k~M@hQ; f!ή> x؎4>!x5cauON<ҥ(x_fI#{r \$ا' ++-(<<#:Ix255o\6@2]Ul6i"?6+q%t! c0>@H;£f«v7du-S2ydbVm,~; |=Hx^M[vյDŽ2 + Lmy<,3Ƽ,v91xr[q?X/>{9xˬ1C6^ȍ?8xuk6]N85z.y G+*<\[rJjiAy١ `[neõGKIKWwʓ `Or &m@8_ 1aW3W5A9AP"lQv ^j@<r}6bv-7px3Nȋ+0JBatz79xX܌g +!n!(<GN?>-ywy[ֹ +O +w?Px=u[NҮ79-ډc3«; 9 +b_6`n+z-!, OfLH爯M O}Xx24Yx<>!,<9qy \Yx#1P\/ OCr(5qm ǧ'Gև0Pxq/+nH0{!mg5~yV}?Xx͒(Z[5dGK]7<8Px=wqawDMy݋𚞃 +N@4ҹ:~^y|~BujF=sėeSw)f꾌,<Ďeu%xEk,<|#K“8޶v/ +_^Āu~ux5B\0<~0ՖC|axJ湆^Yx*#]ax =Q^='QPdD%Ygg1[=8Xx?8䶠,pxY$Nfpxhde"Ql4^cE;/+a&&n8IG"; /[5q0ivժrAUaѯ4gP(w/*)P'ƺON"A-K{qx6O&qqd83EG-u`a5uѕ;2f'0<4skó׵Z`xr3m׹^_tAΝ2hK^Zr'_^øG3>F cJJ[£v8Sj,<DVC|YxN;z? +rX^G9=|{89CLk׍5t!^,xIS_B '"&>ý[^^^tqf|_BO6A£hGYZ + vh7\|Ix|6Ȍ? ћ $< =q$<Yvױd Ǖ" uzs40 q#1-=..n$<`HY&$<>ܑs}N^v@!n$<~Xx:3t ׼~.M' B!č1kk/Gw|y9AxL^ƒxF8_n < +I5^%n <ǣsh- GjnОiqػxsTrqᱎ0 &b^{\Hx߁L aV[ j^ v0 ō^;x5TۃWJn#-m#e?Hxʠ<3 4[NA7E7$qcBZ6&uq06nJ.mqCOwvh:wPrߑ8CI3;ԍFSpu~j N.n{ɹn[ɾjȥ$č} 'IwLs%yeIB ` q#Q7A:,Iʿ At ei!xHͻ|hRʭHM Zg"\w['NE DߩG{}'PO]kvXwrqCe-V͉ [?*Dj1X !]wT_dɾ1RNw;wnKֹױ'N xH\87%6?wICg;N0' ^kɾcɾƞ7]/ɾKJp2`߉[d;|5)}:fI#n~WkG7(=:>w$FӡfBw|kn;e3ʵ~g̺hjN1~h.;bU;uWO*>w7">xAci)Ox\#'t]ܬ~W46q7d=;wfk3qqW 21^7Lq݌#'NŲ0']Bw4dlm;oj/!n;Bл_ޙt'4FhS ;$qQ*+{;7]N'']n6c +>wP0}cͦ\w\^~GA^?N}*576[Լ}HZ&;r/9}gE>w^?F}7 7e7f+ny!`=u˴Oᖝ)_~Gn!xĈ8sG ~ǺKObٝ Rl1}nj}Z2h{'>wlBwyg;MJ4o_]]_Q _Jgrt +~@iw8sކ~()O?|omTgۿſu~0W+^?Sa]3.ǀJ+^V eF߯+^]_8F/ 7W>=sp}_r_M7K.dIg +}AEѼ7!eipn +%~a:orW=5[E.WFݵJ77|aA[Px~zMS5nOA6t&67g<#f߀ +o%zb*#;ߵ5ͳ繰\3O olxhn]5&?}uvá~6Fja~:?r3ϓȉ}u%O.v+w?x;JsoJWo(v]%2rnjB_r6lup7đ 0\v_I [s1=;nuɛ?bS +endstream +endobj +204 0 obj +141105 +endobj +205 0 obj +[203 0 R] +endobj +206 0 obj +<< + /Resources 207 0 R + /Type /Page + /MediaBox [0 0 450 184] + /CropBox [0 0 450 184] + /BleedBox [0 0 450 184] + /TrimBox [0 0 450 184] + /Parent 208 0 R + /Contents 205 0 R +>> +endobj +209 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAA+mwb_cmsy10 + /FontBBox [11 -215 942 727] + /Flags 33 + /CapHeight 0 + /Ascent 727 + /Descent -215 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 210 0 R + /CIDSet 211 0 R +>> +endobj +210 0 obj +<< + /Length1 1968 + /Length 212 0 R + /Filter /FlateDecode +>> +stream +xU]hWdj~VlTdc.JI5%[ddv3l\@%VRP|"E&yhb +Eh+BK>(g&Z[sιw=  w#ʡOfH#9iodp?*M7ߚ.,L|+?Js9NFHޞ#EVɛrŹvd䪂5I\8Yێ~di([fwHpgJVyn-4c/͚%KF= =+6q*>yx'2Qa'؆HU_um8"oBYGa1>2.RO]Fq#1M ֆ낵5U~(LB'emꈪ,wȼhs"LJUNUY} vMJI9#k4Jˆ]J&GF#Ԗiu.r}аqp4bK#94*w[;lv#̙bw)*9*_Ӳh$m^7㚪 J6/kˌ.2lAvVb !y-hZݙ-Q0YۜفΰHU!+W4Jb9$%i5f KOUȤtJ7UUU:}πs.H.?ڒ-2GGTIsaL >nM# EB3z)$|TXnnt1_ ;β\;r70ŭF$$KS&;=վvn~;uIo{Q9 FG\ ѽ( ]|?+ObTSa0OzQ˾i&֐tr0Ca}aBՋY1ho8Uz`PMɣ@x1zVLT\]?i'leW2i4)FYM=.w$Pf<'+$ib$J1PVia6?R> +stream +xk +endstream +endobj +213 0 obj +9 +endobj +214 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAA+mwb_cmsy10 + /Encoding /Identity-H + /ToUnicode 215 0 R + /DescendantFonts [216 0 R] +>> +endobj +216 0 obj +<< /Type /Font +/BaseFont /EAAAAA+mwb_cmsy10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 209 0 R +/DW 0 +/W [ 0 [750 776 ] ] +>> +endobj +215 0 obj +<< /Length 217 0 R /Filter /FlateDecode >> +stream +x]Pj0+l CԒX}q z0h[lE^X gBpjV& +:G:g} +endstream +endobj +217 0 obj +234 +endobj +218 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAB+mwa_cmmi10 + /FontBBox [-34 -250 1047 750] + /Flags 33 + /CapHeight 683 + /Ascent 750 + /Descent -250 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 219 0 R + /CIDSet 220 0 R +>> +endobj +219 0 obj +<< + /Length1 2872 + /Length 221 0 R + /Filter /FlateDecode +>> +stream +xV}L[?}`0`Xy@0wL $5MxL0|Q5eM֮h˴vz4JESU]?}ULNZyDUj{wν9w0S@4WW6 ;ڽ \{@*'g)SqG׵dB͡=J6XG>9=lb tf}鮠 -ʱYve:Pd?ç\bvoF@\.WI)a/>܄k2\yx.y8O4L0 @ aIo}>p߱ﳯ?gO'٣.ssg'{Mz>DWQLngI5܁\7uXGp8g \s4r= q8 (dHG滠@|Κ%k\Tb,6u*>(tpI'fc*8]{S #*>]NTZ* +dO**݀=2QA'V$iiw܎m5#`kVTm*2bS&F sGk;ٻ23׌;?ϫe6̂Fr[JjkL]ݼJ *BT. 82\k*)|!֠cS{GFTVJ jl]|wKt]3oHb̂ +E/ɂJ&펫؈¡9t ܢT-"8~cX헁w+<:?|+UB+f5[D7 vs\Op +e6qwuBX4 +T@ѻ8HmU(j 4*%\YD6Ng5e!Ϻ<umWA + +ڈZa"B]fnQtUaS?<əvŖSg*@,U?ڤFX7>T}>j8սhѱӤ-b&k&+&׆υ21#{Gv:L ?Β-j"#]DlYt}@Q]fBU&QZfcGJ1z m#aNs`Q(ȇ$udTXt& +DY2'ɫHMJU1%f䎄Hn|2qI竭j޵]xw&]PLo'n FϿ&Z:~Q,TK̡D!xA + Cj{p!A7i1p}'jhE,uh3x \c8}>c3<3 )yG_ڈƢ?RGDvɝ=>JMQmm xYɦ|TdzĂ6-'Ą듕Xfdfp ǏO,$Ң L";> +stream +xk`&D +endstream +endobj +222 0 obj +15 +endobj +223 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAB+mwa_cmmi10 + /Encoding /Identity-H + /ToUnicode 224 0 R + /DescendantFonts [225 0 R] +>> +endobj +225 0 obj +<< /Type /Font +/BaseFont /EAAAAB+mwa_cmmi10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 218 0 R +/DW 0 +/W [ 0 [365 520 490 570 ] ] +>> +endobj +224 0 obj +<< /Length 226 0 R /Filter /FlateDecode >> +stream +x]Pj0+l'P\ +>A~,\A, Y>+ ]cV3aY=wF`ފ(m.^ 8jST5H-†hw~NQΙ%1gpxv#HT%zmF8|n8 PRܽ ϩz?jU qkK&{dՠ;[jU%cFwsH?I}LN)6OYT~>҂w +endstream +endobj +226 0 obj +248 +endobj +227 0 obj +<< + /Type /FontDescriptor + /FontName /EAAAAC+mwa_cmr10 + /FontBBox [-43 -250 1008 750] + /Flags 33 + /CapHeight 683 + /Ascent 750 + /Descent -250 + /ItalicAngle 0 + /StemV 0 + /MissingWidth 500 + /FontFile2 228 0 R + /CIDSet 229 0 R +>> +endobj +228 0 obj +<< + /Length1 8284 + /Length 230 0 R + /Filter /FlateDecode +>> +stream +xY p[>ݤ+ɲvYekɶ,ˊ-/,8xKINJ(eR4ByIǿ7'7"-D/Xql?1MKKq5ɩtm[yzvqHA (h'9ukwϰسuxޅ`pn80 +`-tBCj !BJ&IJ~^eg321R:IߠMgyjo +}0SvEMM3 ox*9eÿ%tiӌ?+laQ{U7sw;YWƗ8+}+xl A3tChKbv68N8paqDfYqƑHU{ތ};dwwϰ(nAёQfM19P{( +qI͂pZQ 6"]3|^\jP7~y}k>o݌.l"'}bk c34ģ86d, F0s +'@{e*_*ĕz6|V1{>0"ތ'5v`t@SJ/I?=űDS؅ha/I͟UP.I'y0:J^˶0.aWKIOCXͤJAkP9e@A >vEA ^rI +ZoqL#(@Pȡ?vJ]Rzy*4rs8Υ(+]_-dK|rT{$_;?$Ä^}>CxQ2EYtFQQv Mt)zOJNgͤPEq=9\J+  gUKTF nb!9 +E/M\T;6F-(^P;ED@A,3RV|ȿ + +]F%b>,;gɝ NϽ7E@  .p@q-'zedRdggih%'k%.Q6h{Arr`SlW׬zŪqCU㆟vOîP;d29#DAt6*SǻRH R˵KYiW3 +M3J Ւ0)+ C:dO~w=R7BI%d ~xӿ 0ꒈJ n0j[OjAZ5Sz]\8wH_ΪTsV!iYvɮoͩ¬fr!G6m_]m_sL}Y$?؈m5DC虽Ar*J^K +qZ~qiCzax}$:Xkd<5W Yˇ`HNĚv,^pN#1^E׉M{AWS[j^$|gݩ{zEM=U=iSZRWdq rZ|NryS\g*Oj#A{ E*G5Xzmrۧ^;}|pti&=kD7G׎Πw腵ص^!p dG!w:[&M:jM >%ڋJ:Bevh&b({䎶ږzrq+9s׭N>t9^Ƹ쀪H=#odTI8jQ*\ҠX+YPiJeTNt `258KRo9ٹ`O*G#/U4V*W"?mĨAIHܙ2'Y z-R+sidGyW +92MpDt! }QϮ޺6R fKݻ +=iaTI9Zj[K2d +N #Ʉ3$sމwPoӻ6嗉) mOpz'B1TCCPKs!rɑ9f)ET jPfh2v`YSߛٱr㮗&F>ݺż=Xݟtn^v :CYrb]ε &4;,]o:D);8)]Ya^"EF]@D1V2H3#i-(#lKjR-UcE b#.LS1iF'R8ƹUUuڑEyRUWgzܰap՘"9;H/Ë + +\S{׶-9|s]gmyrYI3t{F6 J",B]*!Lc7Q( `_0XXbN!I|AeWWltC~Gٚ+xXJz+ sUt&!vely\KNV*ޏ!vN() e!D}\f\ю];?9ȕ  "$#'eTT:cnbnHuR+q{t2%>WpGz:5-,suddG'i`ϒ]s ۘJ;ʤBh5'4"O-HxBz "Ye `yBHpTIOu(ypd'?xypYG8ѹdșw jk/$#k[vhXT`BZ蓳:h)DR-D}ټ^pOd{NW$';S!E'tL?w/pOo iO>Z*rc>oL +'R,27| +7Kq[7ṡ_Cb!hpN%22V+"(K ++Eta  p ,~abKW6\sQ১s?8x%/4FNF`$IG*cKnRT +)Fp"-՘lW Vm%rJ+u1q⧓7-oCZ?ׂuh8Z;T6޷-"E#+ Z|mN%>y3yHVtBMQO]8HaVg% 8J#EA+d)+eYm.PA9)d+^Pba]lÊhVPXEJ_mFY_Kexef s[= 1R]jDgR*="+VհJ $k QK2:I r-mh Ukj +-.YI#4A>WֆwόhJN:jo4Ed-ޡowrBc!QɸW~vvGαOxiҥєhu^jZ1NY@GE6F>S-]YrcZ3#vc= sbYfDSU +N!0>;K2,5ósfRޔ'y|qs8O1shde7$∱6W>z j1 ۈ劀'q<]јf +Q0^3KsJbfDRn&D +g p%2 ghkm/DfO*꥝΍ٝv[uʒլ-|b4zյ'kž#]@~Csp*+ު9ѨX83#)EdAO])zk,\Zb{^ޖM SHYhc\֨T6b0x$BLcR0jqk|݃]#-aY&'S4ןlJ4z.+4iQowEר͙ñ+kcb*U˶/^2wdȁMM,uQbIc%v%2x&Mm$( )`1o*8?0mb&6|ۡ5ɠ +ٲ; +?t5:oyAO ]Zm0HN{ .3tȸ׊a['^!sTM7w7{ϧw_}vel^Qr 7x3O 檊맞+{vpG,&ۑafod"W՝ uWyQ VbZ_l3?fU0xw\ !d̠WV#%%#\HN>da-eB$rbiL + F@Ik%m6I4ZwMhIiX۶ |0Cba ٓ27SrOg&{x7z#n]f_!Oo=%FXS'k©Э'njvsQBN6u PɄp}+ 1{|oֱIJrV'4  u?%i8hĨe_%xQJRG +t +/A_Zn%\\8:xa<)O)ttL,d}8$ SBX} +6ݧq3g=g!N9`@ &.~m +r}a +RvVX3tnA)pGnSh;weKNVhTNgFAeqŇO4LnIl޴ݚP`WV{qbԦqkp۔mpjpRY~kf\hܸ}dr׺lp//](:c0Ɖm~ +'(O?Bm[!wU%2_N_eڇNcoйmI3edTFt,a׬)G-EEbOo) +endstream +endobj +230 0 obj +6062 +endobj +229 0 obj +<< /Length 231 0 R /Filter /FlateDecode >> +stream +xk`[ U| } +endstream +endobj +231 0 obj +20 +endobj +232 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /EAAAAC+mwa_cmr10 + /Encoding /Identity-H + /ToUnicode 233 0 R + /DescendantFonts [234 0 R] +>> +endobj +234 0 obj +<< /Type /Font +/BaseFont /EAAAAC+mwa_cmr10 +/CIDToGIDMap /Identity +/Subtype /CIDFontType2 +/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> +/FontDescriptor 227 0 R +/DW 0 +/W [ 0 [365 500 500 500 500 651 391 443 526 555 555 443 526 276 750 443 276 500 500 500 750 833 555 276 276 388 555 500 750 555 916 500 394 305 500 722 276 ] ] +>> +endobj +233 0 obj +<< /Length 235 0 R /Filter /FlateDecode >> +stream +x]j0E +-E%N!PR +YA~,SC# Y+N#͵Gtr(ЛFvk0$:wn!\_d1 #]NEzV +}ėa 7|}CR;ͿKsg:l}.F9r6=B"KyV'Ex[I5ൡݙt5borj||裡t)T +endstream +endobj +235 0 obj +396 +endobj +208 0 obj +<< /Type /Pages +/Count 1 +/Kids [206 0 R ] >> +endobj +236 0 obj +<< + /Type /Catalog + /Pages 208 0 R + /Lang (x-unknown) +>> +endobj +207 0 obj +<< + /Font << + /F270 214 0 R + /F271 223 0 R + /F268 232 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 + /GS191 192 0 R + /GS192 193 0 R + /GS193 194 0 R + /GS194 195 0 R + /GS195 196 0 R + /GS196 197 0 R + /GS197 198 0 R + /GS198 199 0 R + /GS199 200 0 R + /GS200 201 0 R + /GS201 202 0 R +>> +>> +endobj +xref +0 237 +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 +0000001092 00000 n +0000001146 00000 n +0000001200 00000 n +0000001253 00000 n +0000001306 00000 n +0000001359 00000 n +0000001412 00000 n +0000001465 00000 n +0000001518 00000 n +0000001571 00000 n +0000001624 00000 n +0000001677 00000 n +0000001730 00000 n +0000001783 00000 n +0000001836 00000 n +0000001889 00000 n +0000001942 00000 n +0000001995 00000 n +0000002048 00000 n +0000002101 00000 n +0000002154 00000 n +0000002207 00000 n +0000002260 00000 n +0000002313 00000 n +0000002366 00000 n +0000002419 00000 n +0000002472 00000 n +0000002525 00000 n +0000002578 00000 n +0000002631 00000 n +0000002684 00000 n +0000002737 00000 n +0000002790 00000 n +0000002843 00000 n +0000002896 00000 n +0000002949 00000 n +0000003002 00000 n +0000003055 00000 n +0000003108 00000 n +0000003161 00000 n +0000003214 00000 n +0000003267 00000 n +0000003320 00000 n +0000003373 00000 n +0000003426 00000 n +0000003479 00000 n +0000003532 00000 n +0000003586 00000 n +0000003640 00000 n +0000003694 00000 n +0000003747 00000 n +0000003800 00000 n +0000003853 00000 n +0000003906 00000 n +0000003959 00000 n +0000004012 00000 n +0000004065 00000 n +0000004118 00000 n +0000004171 00000 n +0000004224 00000 n +0000004277 00000 n +0000004330 00000 n +0000004383 00000 n +0000004436 00000 n +0000004489 00000 n +0000004542 00000 n +0000004595 00000 n +0000004649 00000 n +0000004703 00000 n +0000004757 00000 n +0000004810 00000 n +0000004863 00000 n +0000004916 00000 n +0000004969 00000 n +0000005022 00000 n +0000005075 00000 n +0000005128 00000 n +0000005181 00000 n +0000005234 00000 n +0000005287 00000 n +0000005340 00000 n +0000005394 00000 n +0000005448 00000 n +0000005502 00000 n +0000005556 00000 n +0000005610 00000 n +0000005664 00000 n +0000005718 00000 n +0000005772 00000 n +0000005826 00000 n +0000005880 00000 n +0000005934 00000 n +0000005988 00000 n +0000006042 00000 n +0000006096 00000 n +0000006150 00000 n +0000006204 00000 n +0000006258 00000 n +0000006312 00000 n +0000006366 00000 n +0000006420 00000 n +0000006474 00000 n +0000006528 00000 n +0000006582 00000 n +0000006636 00000 n +0000006690 00000 n +0000006744 00000 n +0000006798 00000 n +0000006852 00000 n +0000006906 00000 n +0000006960 00000 n +0000007014 00000 n +0000007068 00000 n +0000007122 00000 n +0000007177 00000 n +0000007232 00000 n +0000007287 00000 n +0000007341 00000 n +0000007395 00000 n +0000007449 00000 n +0000007503 00000 n +0000007557 00000 n +0000007611 00000 n +0000007665 00000 n +0000007719 00000 n +0000007773 00000 n +0000007827 00000 n +0000007881 00000 n +0000007935 00000 n +0000007989 00000 n +0000008043 00000 n +0000008097 00000 n +0000008151 00000 n +0000008205 00000 n +0000008260 00000 n +0000008315 00000 n +0000008370 00000 n +0000008424 00000 n +0000008478 00000 n +0000008532 00000 n +0000008586 00000 n +0000008640 00000 n +0000008694 00000 n +0000008748 00000 n +0000008802 00000 n +0000008856 00000 n +0000008910 00000 n +0000008964 00000 n +0000009018 00000 n +0000009072 00000 n +0000009126 00000 n +0000009180 00000 n +0000009234 00000 n +0000009288 00000 n +0000009342 00000 n +0000009396 00000 n +0000009450 00000 n +0000009504 00000 n +0000009558 00000 n +0000009612 00000 n +0000009666 00000 n +0000009720 00000 n +0000009774 00000 n +0000009828 00000 n +0000009882 00000 n +0000009936 00000 n +0000009990 00000 n +0000010044 00000 n +0000010098 00000 n +0000010152 00000 n +0000010206 00000 n +0000010260 00000 n +0000010314 00000 n +0000010368 00000 n +0000010422 00000 n +0000010476 00000 n +0000010530 00000 n +0000010584 00000 n +0000010638 00000 n +0000010692 00000 n +0000010746 00000 n +0000010801 00000 n +0000010856 00000 n +0000010911 00000 n +0000152094 00000 n +0000152118 00000 n +0000152145 00000 n +0000165880 00000 n +0000165741 00000 n +0000152343 00000 n +0000152595 00000 n +0000154007 00000 n +0000153985 00000 n +0000154094 00000 n +0000154113 00000 n +0000154504 00000 n +0000154273 00000 n +0000154816 00000 n +0000154837 00000 n +0000155093 00000 n +0000157303 00000 n +0000157281 00000 n +0000157396 00000 n +0000157416 00000 n +0000157815 00000 n +0000157576 00000 n +0000158141 00000 n +0000158162 00000 n +0000158417 00000 n +0000164599 00000 n +0000164577 00000 n +0000164697 00000 n +0000164717 00000 n +0000165246 00000 n +0000164876 00000 n +0000165720 00000 n +0000165803 00000 n +trailer +<< + /Root 236 0 R + /Info 1 0 R + /ID [ ] + /Size 237 +>> +startxref +169227 +%%EOF diff --git a/figs/test_struts_comp_dy_tuned_model_frf_enc.png b/figs/test_struts_comp_dy_tuned_model_frf_enc.png new file mode 100644 index 0000000..892d081 Binary files /dev/null and b/figs/test_struts_comp_dy_tuned_model_frf_enc.png differ diff --git a/figs/test_struts_effect_misalignment_x.pdf b/figs/test_struts_effect_misalignment_x.pdf new file mode 100644 index 0000000..9ce6319 Binary files /dev/null and b/figs/test_struts_effect_misalignment_x.pdf differ diff --git a/figs/test_struts_effect_misalignment_x.png b/figs/test_struts_effect_misalignment_x.png new file mode 100644 index 0000000..4675df4 Binary files /dev/null and b/figs/test_struts_effect_misalignment_x.png differ diff --git a/figs/test_struts_effect_misalignment_y.pdf b/figs/test_struts_effect_misalignment_y.pdf new file mode 100644 index 0000000..1b7c24a Binary files /dev/null and b/figs/test_struts_effect_misalignment_y.pdf differ diff --git a/figs/test_struts_effect_misalignment_y.png b/figs/test_struts_effect_misalignment_y.png new file mode 100644 index 0000000..04c7065 Binary files /dev/null and b/figs/test_struts_effect_misalignment_y.png differ diff --git a/test-bench-struts.org b/test-bench-struts.org index a70def7..e7792db 100644 --- a/test-bench-struts.org +++ b/test-bench-struts.org @@ -73,16 +73,6 @@ (add-to-list 'org-export-filter-headline-functions 'my-latex-filter-removeOrgAutoLabels) -;; Remove all org comments in the output LaTeX file -(defun delete-org-comments (backend) - (loop for comment in (reverse (org-element-map (org-element-parse-buffer) - 'comment 'identity)) - do - (setf (buffer-substring (org-element-property :begin comment) - (org-element-property :end comment)) - ""))) -(add-hook 'org-export-before-processing-hook 'delete-org-comments) - ;; Use no package by default (setq org-latex-packages-alist nil) (setq org-latex-default-packages-alist nil) @@ -214,6 +204,9 @@ This cylindrical tool is here to protect the flexible joints when tightening the ** Mounting Procedure +- [ ] Better explain the mounting procedure +- [ ] Speak about the "locating" pins that are used to aligned the APA with the two flexible joints + The mounting procedure is as follows: 1. Screw flexible joints inside the cylindrical interface element shown in Figure ref:fig:test_struts_cylindrical_mounting 2. Fix the two interface elements. One of the two should be clamped, the other one should have its axial rotation free. @@ -295,13 +288,13 @@ From a Finite Element Model of the struts, it have been found that three main re #+caption: Spurious resonances of the struts estimated from a Finite Element Model #+attr_latex: :options [htbp] #+begin_figure -#+attr_latex: :caption \subcaption{\label{fig:test_struts_mode_shapes_3}X-bending mode (189Hz)} +#+attr_latex: :caption \subcaption{\label{fig:test_struts_mode_shapes_1}X-bending mode (189Hz)} #+attr_latex: :options {0.33\textwidth} #+begin_subfigure #+attr_latex: :width 0.9\linewidth [[file:figs/test_struts_mode_shapes_1.png]] #+end_subfigure -#+attr_latex: :caption \subcaption{\label{fig:test_struts_mode_shapes_3}Y-bending mode (285Hz)} +#+attr_latex: :caption \subcaption{\label{fig:test_struts_mode_shapes_2}Y-bending mode (285Hz)} #+attr_latex: :options {0.33\textwidth} #+begin_subfigure #+attr_latex: :width 0.9\linewidth @@ -441,13 +434,13 @@ exportFig('figs/test_struts_spur_res_frf_enc.pdf', 'width', 'half', 'height', 'n #+attr_latex: :caption \subcaption{\label{fig:test_struts_spur_res_frf_no_enc}without encoder} #+attr_latex: :options {0.49\textwidth} #+begin_subfigure -#+attr_latex: :width \linewidth +#+attr_latex: :width 0.95\linewidth [[file:figs/test_struts_spur_res_frf_no_enc.png]] #+end_subfigure #+attr_latex: :caption \subcaption{\label{fig:test_struts_spur_res_frf_enc}with the encoder} #+attr_latex: :options {0.49\textwidth} #+begin_subfigure -#+attr_latex: :width \linewidth +#+attr_latex: :width 0.95\linewidth [[file:figs/test_struts_spur_res_frf_enc.png]] #+end_subfigure #+end_figure @@ -653,7 +646,7 @@ exportFig('figs/test_struts_effect_encoder_iff.pdf', 'width', 'half', 'height', #+end_src #+name: fig:test_struts_effect_encoder -#+caption: Effect of having the encoder fixed to the struts on the measured dynamics from $u$ to $d_a$ (\subref{fig:test_struts_effect_encoder_int}) and from $u$ to $V_s$ cref:fig:test_struts_effect_encoder_iff +#+caption: Effect of having the encoder fixed to the struts on the measured dynamics from $u$ to $d_a$ (\subref{fig:test_struts_effect_encoder_int}) and from $u$ to $V_s$ (\subref{fig:test_struts_effect_encoder_iff}) #+attr_latex: :options [htbp] #+begin_figure #+attr_latex: :caption \subcaption{\label{fig:test_struts_effect_encoder_int}$u$ to $d_a$} @@ -914,7 +907,7 @@ exportFig('figs/test_struts_comp_enc_plants.pdf', 'width', 'wide', 'height', 'ta #+end_src #+name: fig:test_struts_comp_enc_plants -#+caption: Estimated FRF for the DVF plant (transfer function from $u$ to the encoder $d_e$) +#+caption: Estimated frequency response functions from $u$ to the encoder $d_e$ for all the mounted struts #+RESULTS: [[file:figs/test_struts_comp_enc_plants.png]] @@ -1000,10 +993,11 @@ io(io_i) = linio([mdl, '/da'], 1, 'openoutput'); io_i = io_i + 1; % Interferomet #+end_src #+begin_src matlab +%% Frequency vector [Hz] freqs = logspace(1, log10(2000), 1000); #+end_src -** Comparison with the Model +** Model dynamics <> #+begin_src matlab %% Load measured FRF for comparison @@ -1074,7 +1068,7 @@ ylabel('Amplitude $d_a/u$ [m/V]'); set(gca, 'XTickLabel',[]); hold off; ylim([1e-8, 1e-3]); leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); -leg.ItemTokenSize(1) = 15 +leg.ItemTokenSize(1) = 15; ax2a = nexttile; hold on; @@ -1120,7 +1114,7 @@ ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]); hold off; ylim([1e-8, 1e-3]); leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); -leg.ItemTokenSize(1) = 15 +leg.ItemTokenSize(1) = 15; ax2a = nexttile; hold on; @@ -1166,7 +1160,7 @@ ylabel('Amplitude $V_s/u$ [V/V]'); set(gca, 'XTickLabel',[]); hold off; ylim([1e-2, 1e2]); leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1); -leg.ItemTokenSize(1) = 15 +leg.ItemTokenSize(1) = 15; ax2a = nexttile; hold on; @@ -1214,204 +1208,43 @@ exportFig('figs/test_struts_comp_frf_flexible_model_iff.pdf', 'width', 400, 'hei #+end_subfigure #+end_figure -** Effect of a misalignment of the APA and flexible joints on the transfer function from actuator to encoder +** Effect of strut misalignment <> -*** Introduction :ignore: -As shown in Figure ref:fig:test_struts_comp_enc_plants, the dynamics from actuator to encoder for all the struts is very different. +As was shown in Figure ref:fig:test_struts_comp_enc_plants, the identified dynamics from DAC voltage $u$ to encoder measured displacement $d_e$ are very different from one strut to the other. -This could be explained by a large variability in the alignment of the flexible joints and the APA (at the time, the alignment pins were not used). - -Depending on the alignment, the spurious resonances of the struts (Figure ref:fig:test_struts_mode_shapes) can be excited differently. - -For instance, consider Figure ref:fig:test_struts_misalign_schematic where there is a misalignment in the $y$ direction. -In such case, the mode at 200Hz is foreseen to be more excited as the misalignment $d_y$ increases and therefore the dynamics from the actuator to the encoder should also change around 200Hz. +In this section, it is investigated whether poor alignment of the strut (flexible joints with respect to the APA) can explain such dynamics. +For instance, consider Figure ref:fig:test_struts_misalign_schematic where there is a misalignment in the $y$ direction between the two flexible joints (well aligned thanks to the mounting procedure in Section ref:sec:test_struts_mounting) and the APA300ML. +In such case, the "x-bending" mode at 200Hz (see Figure ref:fig:test_struts_meas_x_bending) can be expected to be more excited, and thus the dynamics from the actuator to the encoder should be affected at frequencies around 200Hz. #+name: fig:test_struts_misalign_schematic #+caption: Mis-alignement between the joints and the APA #+attr_latex: :width 0.8\linewidth [[file:figs/test_struts_misalign_schematic.png]] -If the misalignment is in the $x$ direction, the mode at 285Hz should be more affected whereas a misalignment in the $z$ direction should not affect these resonances. +To verify this assumption, the dynamics from output DAC voltage $u$ to the measured displacement by the encoder $d_e$ is computed using the Simscape model with flexible APA for several misalignment in the $y$ direction. +Obtained dynamics are shown in Figure ref:fig:test_struts_effect_misalignment_y. +The alignment of the APA with the flexible joints as a *huge* influence on the dynamics from actuator voltage to measured displacement by the encoder. +The misalignment in the $y$ direction mostly influences: +- the presence of the flexible mode at 200Hz (see mode shape in Figure ref:fig:test_struts_mode_shapes_1) +- the location of the complex conjugate zero between the first two resonances: + - if $d_y < 0$: there is no zero between the two resonances and possibly not even between the second and third ones + - if $d_y > 0$: there is a complex conjugate zero between the first two resonances +- the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero) -Such statement is studied in this section. +The same can be done for a misalignment in the $x$ direction. +The obtained dynamics are shown in Figure ref:fig:test_struts_effect_misalignment_x where it is shown that misalignment in the $x$ direction mostly influences the presence of the flexible mode at 300Hz (see mode shape in Figure ref:fig:test_struts_mode_shapes_2). -*** Measured misalignment of the APA and flexible joints - -The misalignment between the two flexible joints and the APA has been measured for all the struts: -- the strut is fixed to the mounting bench -- using an indicator, the height difference from the flexible joints and the APA is measured both for the top and bottom joints and on both sides -- then it is possible to obtain the misalignment for both flexible joints - -The raw measurements are shown in Table ref:tab:meas_misalignment_struts_raw. - -As the flexible joint's "thickness" is 1mm larger than the APA "thickness", ideally (i.e. if it were perfectly centered) we would measure =-0.50mm= each time. +Comparing the experimental frequency response functions for all the APA in Figure ref:fig:test_struts_comp_enc_plants with the model dynamics for several $y$ misalignments in Figure ref:fig:test_struts_effect_misalignment_y indicates a clear similarity. +This similarity suggests that the identified differences in dynamics are caused by the misalignment. #+begin_src matlab -strut_nums = [1, 2, 3, 4, 5]; +%% Effect of a misalignment in Y-Direction +% Considered misalignment in the Y direction +dy_aligns = [-0.5, -0.1, 0.1, 0.5]*1e-3; % [m] -% R Top B Top R Bot B Bot -strut_align = [[-0.40, -0.60, -0.16, -0.82] % Strut 1 - [-0.67, -0.30, -0.34, -0.63] % Strut 2 - [-0.07, -0.88, -0.16, -0.79] % Strut 3 - [-0.48, -0.46, 0.07, -1.00] % Strut 4 - [-0.33, -0.64, -0.48, -0.52]]; % Strut 5 -#+end_src - -#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) - data2orgtable(strut_align, {'1', '2', '3', '4', '5'}, {'*Strut*', '*R Top*', '*B Top*', '*R Bot*', '*B Bot*'}, ' %.2f '); -#+end_src - -#+name: tab:meas_misalignment_struts_raw -#+caption: Measured misalignments of the struts (=R= means "red" side, and =B= means "black side") in [mm] -#+attr_latex: :environment tabularx :width 0.4\linewidth :align cllll -#+attr_latex: :center t :booktabs t :float t -#+RESULTS: -| *Strut* | *R Top* | *B Top* | *R Bot* | *B Bot* | -|---------+---------+---------+---------+---------| -| 1 | -0.4 | -0.6 | -0.16 | -0.82 | -| 2 | -0.67 | -0.3 | -0.34 | -0.63 | -| 3 | -0.07 | -0.88 | -0.16 | -0.79 | -| 4 | -0.48 | -0.46 | 0.07 | -1.0 | -| 5 | -0.33 | -0.64 | -0.48 | -0.52 | - -Also, the sum of the measured distances on each side should be 1mm (equal to the thickness difference between the flexible joint and the APA). -This is verified in Table ref:tab:meas_misalignment_struts_thickness. - -#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) - data2orgtable([strut_align(:,1) + strut_align(:,2), strut_align(:,3) + strut_align(:,4)], {'1', '2', '3', '4', '5'}, {'*Strut*', '*Top*', '*Bot*'}, ' %.2f '); -#+end_src - -#+name: tab:meas_misalignment_struts_thickness -#+caption: Measured thickness difference between the flexible joints and the APA in [mm] -#+attr_latex: :environment tabularx :width 0.2\linewidth :align cll -#+attr_latex: :center t :booktabs t :float t -#+RESULTS: -| *Strut* | *Top* | *Bot* | -|---------+-------+-------| -| 1 | -1.0 | -0.98 | -| 2 | -0.97 | -0.97 | -| 3 | -0.95 | -0.95 | -| 4 | -0.94 | -0.93 | -| 5 | -0.97 | -1.0 | - -The differences of the measured distances on each side corresponds to the misalignment on that same side (Table ref:tab:meas_misalignment_struts_results). - -#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) - data2orgtable([(strut_align(:,1) - strut_align(:,2))/2, (strut_align(:,3) - strut_align(:,4))/2], {'1', '2', '3', '4', '5'}, {'*Strut*', '*Top*', '*Bot*'}, ' %.3f '); -#+end_src - -#+name: tab:meas_misalignment_struts_results -#+caption: Measured thickness difference between the flexible joints and the APA in [mm] -#+attr_latex: :environment tabularx :width 0.25\linewidth :align cll -#+attr_latex: :center t :booktabs t :float t -#+RESULTS: -| *Strut* | *Top* | *Bot* | -|---------+--------+-------| -| 1 | 0.1 | 0.33 | -| 2 | -0.185 | 0.145 | -| 3 | 0.405 | 0.315 | -| 4 | -0.01 | 0.535 | -| 5 | 0.155 | 0.02 | - -#+begin_important -The misalignment of the APA and flexible joints is quite large and variable from one strut to the other. -#+end_important - -*** Perfectly aligned APA -Let's first consider that the strut is perfectly mounted such that the two flexible joints and the APA are aligned. -#+begin_src matlab -%% Initialize Simscape data -n_hexapod.flex_bot = initializeBotFlexibleJoint('type', '4dof'); -n_hexapod.flex_top = initializeTopFlexibleJoint('type', '4dof'); -n_hexapod.actuator = initializeAPA('type', 'flexible'); -#+end_src - -And define the inputs and outputs of the models: -- Input: voltage generated by the DAC -- Output: measured displacement by the encoder - -The transfer function is identified and shown in Figure ref:fig:comp_enc_frf_align_perfect. -#+begin_src matlab -%% Identification -Gs = exp(-s*1e-4)*linearize(mdl, io, 0.0, opts); -Gs.InputName = {'u'}; -Gs.OutputName = {'Vs', 'de', 'da'}; -#+end_src - -From Figure ref:fig:comp_enc_frf_align_perfect, it is clear that: -1. The model with perfect alignment is not matching the measured FRF -2. The mode at 200Hz is not present in the identified dynamics of the Simscape model -3. The measured FRF have different shapes - -#+begin_src matlab :exports none -%% Measured FRF from Vs to de and identified dynamics using the flexible APA -freqs = 2*logspace(0, 3, 1000); - -figure; -tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); - -ax1 = nexttile([2,1]); -hold on; -plot(f, abs(enc_frf(:, i)), 'color', [0,0,0,0.2], ... - 'DisplayName', 'Meas. FRF'); -for i = 2:length(strut_nums) - plot(f, abs(enc_frf(:, i)), 'color', [0,0,0,0.2], ... - 'HandleVisibility', 'off'); -end -set(gca,'ColorOrderIndex',1); -plot(freqs, abs(squeeze(freqresp(Gs('de', 'u'), freqs, 'Hz'))), '-', ... - 'DisplayName', 'Model') -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]); -hold off; -ylim([1e-8, 1e-3]); -legend('location', 'northeast'); - -ax2 = nexttile; -hold on; -for i = 1:length(strut_nums) - plot(f, 180/pi*angle(enc_frf(:, i)), 'color', [0,0,0,0.2]); -end -set(gca,'ColorOrderIndex',1); -plot(freqs, 180/pi*angle(squeeze(freqresp(Gs('de', 'u'), freqs, 'Hz'))), '-') -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); -xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); -hold off; -yticks(-360:90:360); ylim([-180, 180]); - -linkaxes([ax1,ax2],'x'); -xlim([10, 2e3]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/comp_enc_frf_align_perfect.pdf', 'width', 'wide', 'height', 'tall'); -#+end_src - -#+name: fig:comp_enc_frf_align_perfect -#+caption: Comparison of the model with a perfectly aligned APA and flexible joints with the measured FRF from actuator to encoder -#+RESULTS: -[[file:figs/comp_enc_frf_align_perfect.png]] - -#+begin_question -Why is the flexible mode of the strut at 200Hz is not seen in the model in Figure ref:fig:comp_enc_frf_align_perfect? - -Probably because the presence of this mode is not due because of the "unbalanced" mass of the encoder, but rather because of the misalignment of the APA with respect to the two flexible joints. -This will be verified in the next sections. -#+end_question - -*** Effect of a misalignment in y -Let's compute the transfer function from output DAC voltage $V_s$ to the measured displacement by the encoder $d_e$ for several misalignment in the $y$ direction: -#+begin_src matlab -%% Considered misalignments -dy_aligns = [-0.5, -0.1, 0, 0.1, 0.5]*1e-3; % [m] -#+end_src - -#+begin_src matlab -%% Transfer functions from u to de for all the misalignment in y direction -Gs_align = {zeros(length(dy_aligns), 1)}; +% Transfer functions from u to de for all the misalignment in y direction +Gs_dy_align = {zeros(length(dy_aligns), 1)}; for i = 1:length(dy_aligns) n_hexapod.actuator = initializeAPA('type', 'flexible', 'd_align_bot', [0; dy_aligns(i); 0], 'd_align_top', [0; dy_aligns(i); 0]); @@ -1420,76 +1253,15 @@ for i = 1:length(dy_aligns) G.InputName = {'u'}; G.OutputName = {'Vs', 'de', 'da'}; - Gs_align(i) = {G}; + Gs_dy_align(i) = {G}; end -#+end_src -The obtained dynamics are shown in Figure ref:fig:effect_misalignment_y. +%% Effect of a misalignment in X-Direction +% Considered misalignment in the X direction +dx_aligns = [-0.1, -0.05, 0.05, 0.1]*1e-3; % [m] -#+begin_src matlab :exports none -%% Transfer function from Vs to de - effect of x-misalignment -freqs = 2*logspace(0, 3, 1000); - -figure; -tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); - -ax1 = nexttile([2,1]); -hold on; -for i = 1:length(dy_aligns) - plot(freqs, abs(squeeze(freqresp(Gs_align{i}('de', 'u'), freqs, 'Hz'))), ... - 'DisplayName', sprintf('$d_y = %.1f$ [mm]', 1e3*dy_aligns(i))); -end -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]); -hold off; -ylim([1e-8, 1e-3]); -legend('location', 'northeast'); - -ax2 = nexttile; -hold on; -for i = 1:length(dy_aligns) - plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_align{i}('de', 'u'), freqs, 'Hz')))); -end -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); -xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); -hold off; -yticks(-360:90:360); ylim([-180, 180]); - -linkaxes([ax1,ax2],'x'); -xlim([10, 2e3]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/effect_misalignment_y.pdf', 'width', 'wide', 'height', 'tall'); -#+end_src - -#+name: fig:effect_misalignment_y -#+caption: Effect of a misalignement in the $y$ direction -#+RESULTS: -[[file:figs/effect_misalignment_y.png]] - -#+begin_important -The alignment of the APA with the flexible joints as a *huge* influence on the dynamics from actuator voltage to measured displacement by the encoder. -The misalignment in the $y$ direction mostly influences: -- the presence of the flexible mode at 200Hz -- the location of the complex conjugate zero between the first two resonances: - - if $d_y < 0$: there is no zero between the two resonances and possibly not even between the second and third ones - - if $d_y > 0$: there is a complex conjugate zero between the first two resonances -- the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero) -#+end_important - -*** Effect of a misalignment in x -Let's compute the transfer function from output DAC voltage to the measured displacement by the encoder for several misalignment in the $x$ direction: -#+begin_src matlab -%% Considered misalignments -dx_aligns = [-0.1, -0.05, 0, 0.05, 0.1]*1e-3; % [m] -#+end_src - -#+begin_src matlab -%% Transfer functions from u to de for all the misalignment in x direction -Gs_align = {zeros(length(dx_aligns), 1)}; +% Transfer functions from u to de for all the misalignment in x direction +Gs_dx_align = {zeros(length(dx_aligns), 1)}; for i = 1:length(dx_aligns) n_hexapod.actuator = initializeAPA('type', 'flexible', 'd_align_bot', [dx_aligns(i); 0; 0], 'd_align_top', [dx_aligns(i); 0; 0]); @@ -1498,36 +1270,37 @@ for i = 1:length(dx_aligns) G.InputName = {'u'}; G.OutputName = {'Vs', 'de', 'da'}; - Gs_align(i) = {G}; + Gs_dx_align(i) = {G}; end #+end_src -The obtained dynamics are shown in Figure ref:fig:effect_misalignment_x. #+begin_src matlab :exports none %% Transfer function from Vs to de - effect of x-misalignment -freqs = 2*logspace(0, 3, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); ax1 = nexttile([2,1]); hold on; -for i = 1:length(dx_aligns) - plot(freqs, abs(squeeze(freqresp(Gs_align{i}('de', 'u'), freqs, 'Hz'))), ... - 'DisplayName', sprintf('$d_x = %.2f$ [mm]', 1e3*dx_aligns(i))); +for i = 1:length(dy_aligns) + plot(freqs, abs(squeeze(freqresp(Gs_dy_align{i}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', sprintf('$d_y = %.1f$ [mm]', 1e3*dy_aligns(i))); end +plot(freqs, abs(squeeze(freqresp(Gs_flex('de', 'u'), freqs, 'Hz'))), 'k-', ... + 'DisplayName', 'aligned'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]); hold off; ylim([1e-8, 1e-3]); -legend('location', 'northeast'); +leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +leg.ItemTokenSize(1) = 15; ax2 = nexttile; hold on; -for i = 1:length(dx_aligns) - plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_align{i}('de', 'u'), freqs, 'Hz')))); +for i = 1:length(dy_aligns) + plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_dy_align{i}('de', 'u'), freqs, 'Hz')))); end +plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_flex('de', 'u'), freqs, 'Hz'))), 'k-'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); @@ -1538,32 +1311,147 @@ linkaxes([ax1,ax2],'x'); xlim([10, 2e3]); #+end_src -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/effect_misalignment_x.pdf', 'width', 'wide', 'height', 'tall'); +#+begin_src matlab :tangle no :exports results :results file none +exportFig('figs/test_struts_effect_misalignment_y.pdf', 'width', 'half', 'height', 'tall'); #+end_src -#+name: fig:effect_misalignment_x -#+caption: Effect of a misalignement in the $x$ direction -#+RESULTS: -[[file:figs/effect_misalignment_x.png]] +#+begin_src matlab :exports none +%% Transfer function from Vs to de - effect of x-misalignment +figure; +tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); -#+begin_important -The misalignment in the $x$ direction mostly influences the presence of the flexible mode at 300Hz. -#+end_important +ax1 = nexttile([2,1]); +hold on; +for i = 1:length(dx_aligns) + plot(freqs, abs(squeeze(freqresp(Gs_dx_align{i}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', sprintf('$d_x = %.1f$ [mm]', 1e3*dx_aligns(i))); +end +plot(freqs, abs(squeeze(freqresp(Gs_flex('de', 'u'), freqs, 'Hz'))), 'k-', ... + 'DisplayName', 'aligned'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('Amplitude $d_e/u$ [m/V]'); set(gca, 'XTickLabel',[]); +hold off; +ylim([1e-8, 1e-3]); +leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 1); +leg.ItemTokenSize(1) = 15; + +ax2 = nexttile; +hold on; +for i = 1:length(dx_aligns) + plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_dx_align{i}('de', 'u'), freqs, 'Hz')))); +end +plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_flex('de', 'u'), freqs, 'Hz'))), 'k-'); +hold off; +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); +xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); +hold off; +yticks(-360:90:360); ylim([-180, 180]); + +linkaxes([ax1,ax2],'x'); +xlim([10, 2e3]); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file none +exportFig('figs/test_struts_effect_misalignment_x.pdf', 'width', 'half', 'height', 'tall'); +#+end_src + +#+name: fig:test_struts_effect_misalignment +#+caption: Effect of a misalignment between the flexible joints and the APA300ML in the $y$ direction (\subref{fig:test_struts_effect_misalignment_y}) and in the $x$ direction (\subref{fig:test_struts_effect_misalignment_x}) +#+attr_latex: :options [htbp] +#+begin_figure +#+attr_latex: :caption \subcaption{\label{fig:test_struts_effect_misalignment_y}Misalignment along $y$} +#+attr_latex: :options {0.49\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.95\linewidth +[[file:figs/test_struts_effect_misalignment_y.png]] +#+end_subfigure +#+attr_latex: :caption \subcaption{\label{fig:test_struts_effect_misalignment_x}Misalignment along $x$} +#+attr_latex: :options {0.49\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.95\linewidth +[[file:figs/test_struts_effect_misalignment_x.png]] +#+end_subfigure +#+end_figure + +** Measured strut misalignment +<> + +During the first mounting of the struts presented in Section ref:sec:test_struts_mounting, the positioning pins used to position the APA with respect to the flexible joints in the $y$ directions were not used (not received at the time). +Therefore, large $y$ misalignments may be expected. + +In order to estimate the misalignments between the two flexible joints and the APA: +- the struts are fixed horizontally to the mounting bench as shown in Figure ref:fig:test_struts_mounting_step_3 but without the encoder +- using a length gauge[fn:2], the height difference from the flexible joints surface and the APA shell surface is measured both for the top and bottom joints and on both sides +- as the thickness of the flexible joint is $21\,mm$ and the thickness of the APA shell is $20\,mm$, $0.5\,mm$ of height different should be measured is the two are perfectly aligned + +Large variations in the $y$ misalignment are found from one strut to the other (results are summarized in Table ref:tab:test_struts_meas_y_misalignment). + +To check the validity of the measurement, it can be verified that sum of the measured thickness difference on each side is $1\,mm$ (equal to the thickness difference between the flexible joint and the APA). +This thickness differences for all the struts were found to be between $0.94\,mm$ and $1.00\,mm$ which indicate low errors as compared to the misalignments found in Table ref:tab:test_struts_meas_y_misalignment. -*** Comparison with identified misalignment #+begin_src matlab +%% Measurement of the y misalignment between the APA and the flexible joints +% Mesured struts +strut_nums = [1, 2, 3, 4, 5]; + +% Measured height differences in [mm] +% R ("red" side), B ("black" side) +% R Top B Top R Bot B Bot +strut_align = [[-0.40, -0.60, -0.16, -0.82] % Strut 1 + [-0.67, -0.30, -0.34, -0.63] % Strut 2 + [-0.07, -0.88, -0.16, -0.79] % Strut 3 + [-0.48, -0.46, 0.07, -1.00] % Strut 4 + [-0.33, -0.64, -0.48, -0.52]]; % Strut 5 + +% Verification that the thickness difference between the APA shell and the flexible joints is 1mm +thichness_diff_top = strut_align(:,1) + strut_align(:,2); % [mm] +thichness_diff_bot = strut_align(:,1) + strut_align(:,2); % [mm] + +% Estimation of the dy misalignment +dy_bot = (strut_align(:,1) - strut_align(:,2))/2; % [mm] +dy_top = (strut_align(:,3) - strut_align(:,4))/2; % [mm] +#+end_src + +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) +data2orgtable([dy_bot, dy_top] , {'1', '2', '3', '4', '5'}, {'*Strut*', '*Bot*', '*Top*'}, ' %.2f '); +#+end_src + +#+name: tab:test_struts_meas_y_misalignment +#+caption: Measured $y$ misalignment at the top and bottom of the APA. Measurements are in $mm$ +#+attr_latex: :environment tabularx :width 0.25\linewidth :align ccc +#+attr_latex: :center t :booktabs t +#+RESULTS: +| *Strut* | *Bot* | *Top* | +|---------+-------+-------| +| 1 | 0.1 | 0.33 | +| 2 | -0.19 | 0.14 | +| 3 | 0.41 | 0.32 | +| 4 | -0.01 | 0.54 | +| 5 | 0.15 | 0.02 | + +By using the measured $y$ misalignment in the Simscape model with the flexible APA model, the measured dynamics from $u$ to $d_e$ can be approached as shown in Figure ref:fig:test_struts_comp_dy_tuned_model_frf_enc. +Even better match in the dynamics can be obtained by fine tuning both the $x$ and $y$ misalignments (yellow curves in Figure ref:fig:test_struts_comp_dy_tuned_model_frf_enc). + + +This confirms that the misalignment between the APA and the strut axis (determined by the two flexible joints) is critical and is inducing large variations in the dynamics from DAC voltage $u$ to encoder measured displacement $d_e$. +If encoders are to be used when fixed on the struts, it is therefore very important to properly align the APA and the flexible joints when mounting the struts. + + +In the next section, the struts are re-assembled with a "positioning pin" to better align the APA with the flexible joints. +With a better alignment, the amplitude of the spurious resonances are expected to decrease as was shown in Figure ref:fig:test_struts_effect_misalignment_y. + +#+begin_src matlab +%% Idenfity the dynamics from u to de - misalignement estimated from measurement +Gs_y_align = {zeros(size(strut_align,1), 1)}; + +% Measured dy alignment strut_align = 1e-3*[[-0.60, -0.82, -0.40, -0.16] [-0.30, -0.63, -0.67, -0.34] [-0.88, -0.79, -0.07, -0.16] [-0.48, 0.07, -0.46, -1.00] [-0.33, -0.48, -0.64, -0.52] [-0.34, -0.42, -0.63, -0.57]]; -#+end_src - -#+begin_src matlab -%% Idenfity the transfer function from actuator to encoder for all cases -Gs_align = {zeros(size(strut_align,1), 1)}; for i = 1:size(strut_align,1) n_hexapod.actuator = initializeAPA('type', 'flexible', ... @@ -1574,79 +1462,18 @@ for i = 1:size(strut_align,1) G.InputName = {'u'}; G.OutputName = {'Vs', 'de', 'da'}; - Gs_align(i) = {G}; + Gs_y_align(i) = {G}; end -#+end_src -#+begin_src matlab :exports none -%% Comparison of the plants (encoder output) when tuning the misalignment -freqs = 2*logspace(0, 3, 1000); - -figure; -tiledlayout(2, 3, 'TileSpacing', 'Compact', 'Padding', 'None'); -ax1 = nexttile(); -hold on; -plot(f, abs(enc_frf(:, 1))); -plot(freqs, abs(squeeze(freqresp(Gs_align{1}('de', 'u'), freqs, 'Hz')))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/V]'); - -ax2 = nexttile(); -hold on; -plot(f, abs(enc_frf(:, 2))); -plot(freqs, abs(squeeze(freqresp(Gs_align{2}('de', 'u'), freqs, 'Hz')))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -set(gca, 'XTickLabel',[]); set(gca, 'YTickLabel',[]); - -ax3 = nexttile(4); -hold on; -plot(f, abs(enc_frf(:, 3)), 'DisplayName', 'Meas.'); -plot(freqs, abs(squeeze(freqresp(Gs_align{3}('de', 'u'), freqs, 'Hz'))), ... - 'DisplayName', 'Model'); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); ylabel('Amplitude [m/V]'); -legend('location', 'southwest', 'FontSize', 8); - -ax4 = nexttile(5); -hold on; -plot(f, abs(enc_frf(:, 4))); -plot(freqs, abs(squeeze(freqresp(Gs_align{4}('de', 'u'), freqs, 'Hz')))); -hold off; -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - -ax5 = nexttile(6); -hold on; -plot(f, abs(enc_frf(:, 5))); -plot(freqs, abs(squeeze(freqresp(Gs_align{5}('de', 'u'), freqs, 'Hz')))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); - -linkaxes([ax1,ax2,ax3,ax4,ax5],'xy'); -xlim([20, 2e3]); ylim([1e-8, 1e-3]); -#+end_src - -*** Find the misalignment of each strut -From the previous analysis on the effect of a $x$ and $y$ misalignment, it is possible to estimate the $x,y$ misalignment of the measured struts. - -The misalignment that gives the best match for the FRF are defined below. -#+begin_src matlab -%% Tuned misalignment [m] +%% Idenfity the dynamics from u to de - misalignement tuned to have the best match d_aligns = [[-0.05, -0.3, 0]; [ 0, 0.5, 0]; [-0.1, -0.3, 0]; [ 0, 0.3, 0]; [-0.05, 0.05, 0]]'*1e-3; -#+end_src -For each misalignment, the dynamics from the DAC voltage to the encoder measurement is identified. -#+begin_src matlab -%% Idenfity the transfer function from actuator to encoder for all cases -Gs_align = {zeros(size(d_aligns,2), 1)}; +% Idenfity the transfer function from actuator to encoder for all cases +Gs_xy_align = {zeros(size(d_aligns,2), 1)}; for i = 1:5 n_hexapod.actuator = initializeAPA('type', 'flexible', 'd_align_top', d_aligns(:,i), 'd_align_bot', d_aligns(:,i)); @@ -1655,155 +1482,78 @@ for i = 1:5 G.InputName = {'u'}; G.OutputName = {'Vs', 'de', 'da'}; - Gs_align(i) = {G}; + Gs_xy_align(i) = {G}; end #+end_src -The results are shown in Figure ref:fig:comp_all_struts_corrected_misalign. #+begin_src matlab :exports none %% Comparison of the plants (encoder output) when tuning the misalignment -freqs = 2*logspace(0, 3, 1000); - figure; -tiledlayout(2, 3, 'TileSpacing', 'Compact', 'Padding', 'None'); +tiledlayout(1, 3, 'TileSpacing', 'Compact', 'Padding', 'None'); + ax1 = nexttile(); hold on; -plot(f, abs(enc_frf(:, 1))); -plot(freqs, abs(squeeze(freqresp(Gs_align{1}('de', 'u'), freqs, 'Hz')))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/V]'); - -ax2 = nexttile(); -hold on; -plot(f, abs(enc_frf(:, 2))); -plot(freqs, abs(squeeze(freqresp(Gs_align{2}('de', 'u'), freqs, 'Hz')))); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -set(gca, 'XTickLabel',[]); set(gca, 'YTickLabel',[]); - -ax3 = nexttile(); -hold on; -plot(f, abs(enc_frf(:, 3)), 'DisplayName', 'Meas.'); -plot(freqs, abs(squeeze(freqresp(Gs_align{3}('de', 'u'), freqs, 'Hz'))), ... - 'DisplayName', 'Model'); +plot(f, abs(enc_frf(:, 1)), 'DisplayName', 'Measurement'); +plot(freqs, abs(squeeze(freqresp(Gs_y_align{1}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', '$d_y$ from meas'); +plot(freqs, abs(squeeze(freqresp(Gs_xy_align{1}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', 'Tuned $d_x$, $d_y$'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); xlabel('Frequency [Hz]'); ylabel('Amplitude [m/V]'); -legend('location', 'southwest', 'FontSize', 8); +leg = legend('location', 'southwest', 'FontSize', 8); +leg.ItemTokenSize(1) = 15; +title('Strut 1'); +xticks([1e1, 1e2, 1e3]); -ax4 = nexttile(5); +ax2 = nexttile(); hold on; -plot(f, abs(enc_frf(:, 4))); -plot(freqs, abs(squeeze(freqresp(Gs_align{4}('de', 'u'), freqs, 'Hz')))); -hold off; -xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); - -ax5 = nexttile(6); -hold on; -plot(f, abs(enc_frf(:, 5))); -plot(freqs, abs(squeeze(freqresp(Gs_align{5}('de', 'u'), freqs, 'Hz')))); +plot(f, abs(enc_frf(:, 2)), 'DisplayName', 'Measurement'); +plot(freqs, abs(squeeze(freqresp(Gs_y_align{2}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', '$d_y$ from meas'); +plot(freqs, abs(squeeze(freqresp(Gs_xy_align{2}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', 'Tuned $d_x$, $d_y$'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +leg = legend('location', 'southwest', 'FontSize', 8); +leg.ItemTokenSize(1) = 15; +title('Strut 2'); +xticks([1e1, 1e2, 1e3]); -linkaxes([ax1,ax2,ax3,ax4,ax5],'xy'); -xlim([20, 2e3]); ylim([1e-8, 1e-3]); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/comp_all_struts_corrected_misalign.pdf', 'width', 'full', 'height', 'tall'); -#+end_src - -#+name: fig:comp_all_struts_corrected_misalign -#+caption: Comparison (model and measurements) of the FRF from DAC voltage u to measured displacement by the encoders for all the struts -#+RESULTS: -[[file:figs/comp_all_struts_corrected_misalign.png]] - -#+begin_important -By tuning the misalignment of the APA with respect to the flexible joints, it is possible to obtain a good fit between the model and the measurements (Figure ref:fig:comp_all_struts_corrected_misalign). - -If encoders are to be used when fixed on the struts, it is therefore very important to properly align the APA and the flexible joints when mounting the struts. - -In the future, a "pin" will be used to better align the APA with the flexible joints. -We can expect the amplitude of the spurious resonances to decrease. -#+end_important - -*** Paper :noexport: -#+begin_src matlab :exports none -%% Comparison of the plants (encoder output) when tuning the misalignment -freqs = 2*logspace(0, 3, 1000); - -colors = colororder; - -figure; -tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); -ax1 = nexttile([2,1]); +ax3 = nexttile(); hold on; -plot(f, abs(enc_frf(:,1)), 'color', [colors(1,:),0.2], ... - 'DisplayName', 'FRF - $d_{e,i}/V_{a,i}$') -for i = 2:5 - plot(f, abs(enc_frf(:,i)), 'color', [colors(1,:),0.2], ... - 'HandleVisibility', 'off'); -end - -plot(f, abs(int_frf(:,1)), 'color', [colors(2,:),0.2], ... - 'DisplayName', 'FRF - $d_{a,i}/V_{a,i}$') -for i = 2:5 - plot(f, abs(int_frf(:,i)), 'color', [colors(2,:),0.2], ... - 'HandleVisibility', 'off'); -end -plot(freqs, abs(squeeze(freqresp(Gs_align{1}('de', 'u'), freqs, 'Hz'))), '--', 'color', colors(1,:), ... - 'DisplayName', 'Model - $d_{e,i}/V_{a,i}$') -for i = 2:5 - plot(freqs, abs(squeeze(freqresp(Gs_align{i}('de', 'u'), freqs, 'Hz'))), '--', 'color', colors(1,:), ... - 'HandleVisibility', 'off'); -end -plot(freqs, abs(squeeze(freqresp(Gs('da', 'u'), freqs, 'Hz'))), '--', 'color', colors(2,:), ... - 'DisplayName', 'Model - $d_{a,i}/V_{a,i}$') +plot(f, abs(enc_frf(:, 3)), 'DisplayName', 'Measuremnet'); +plot(freqs, abs(squeeze(freqresp(Gs_y_align{3}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', '$d_y$ from meas'); +plot(freqs, abs(squeeze(freqresp(Gs_xy_align{3}('de', 'u'), freqs, 'Hz'))), ... + 'DisplayName', 'Tuned $d_x$, $d_y$'); hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); -set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/V]'); -ylim([1e-8, 1e-3]); -legend('location', 'southwest') +xlabel('Frequency [Hz]'); set(gca, 'YTickLabel',[]); +leg = legend('location', 'southwest', 'FontSize', 8); +leg.ItemTokenSize(1) = 15; +title('Strut 3'); +xticks([1e1, 1e2, 1e3]); -ax2 = nexttile; -hold on; -for i = 1:5 - plot(f, 180/pi*angle(enc_frf(:,i)), 'color', [colors(1,:),0.2]); - plot(f, 180/pi*(angle(int_frf(:, i)) - angle(squeeze(freqresp(exp(-s*2*1e-4), f, 'Hz')))), 'color', [colors(2,:),0.2]); - plot(freqs, 180/pi*angle(squeeze(freqresp(Gs_align{i}('de', 'u'), freqs, 'Hz'))), '--', 'color', colors(1,:)); -end -plot(freqs, 180/pi*angle(squeeze(freqresp(Gs('da', 'u'), freqs, 'Hz'))), '--', 'color', colors(2,:)); -hold off; -set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); -ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); -ylim([-180, 180]); -yticks([-180, -90, 0, 90, 180]); - -linkaxes([ax1,ax2],'x'); -xlim([20, 2e3]); +linkaxes([ax1,ax2,ax3],'xy'); +xlim([10, 2e3]); ylim([1e-8, 1e-3]); #+end_src #+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/frf_struts_enc_int.pdf', 'width', 'normal', 'height', 'full'); +exportFig('figs/test_struts_comp_dy_tuned_model_frf_enc.pdf', 'width', 'full', 'height', 'normal'); #+end_src -#+name: fig:frf_struts_enc_int -#+caption: +#+name: fig:test_struts_comp_dy_tuned_model_frf_enc +#+caption: Comparison of the frequency response functions from DAC voltage $u$ to measured displacement $d_e$ by the encoders for three struts. In blue the measured dynamics, in red the dynamics extracted from the model with the $y$ misalignment estimated from measurements, in yellow the dynamics extracted from the model when both the $x$ and $y$ misalignments are tuned #+RESULTS: -[[file:figs/frf_struts_enc_int.png]] +[[file:figs/test_struts_comp_dy_tuned_model_frf_enc.png]] - -** TODO Comparison of all the (re-aligned) Struts +** Proper struts alignment <> -- [ ] Should this be included here? -*** Introduction :ignore: The struts are re-aligned and measured using the same test bench. -*** Measured misalignment of the APA and flexible joints The misalignment between the APA and the flexible joints are measured. The results are defined below and summarized in Table ref:tab:meas_misalignment_struts_new_raw. @@ -1823,7 +1573,7 @@ strut_align = [[-0.54, -0.50, -0.50, -0.52] % strut 1 #+end_src #+name: tab:meas_misalignment_struts_new_raw -#+caption: Measured misalignments of the struts (=R= means "red" side, and =B= means "black side") in [mm] +#+caption: Measured misalignment of the struts (=R= means "red" side, and =B= means "black side") in [mm] #+attr_latex: :environment tabularx :width 0.45\linewidth :align cllll #+attr_latex: :center t :booktabs t :float t #+RESULTS: @@ -1881,7 +1631,6 @@ The differences of the measured distances on each side corresponds to the misali After using the alignment pins, the misalignment of the APA and flexible joints are much smaller ($< 50\,\mu m$ for all the struts). #+end_important -*** FRF Identification - Setup The excitation signal is a low pass filtered white noise. Both the encoder and the force sensor voltage are measured. @@ -1912,7 +1661,6 @@ We get the frequency vector that will be the same for all the frequency domain a [~, f] = tfestimate(leg_noise{1}.u, leg_noise{1}.de, win, Noverlap, Nfft, 1/Ts); #+end_src -*** FRF Identification - Encoder In this section, the dynamics from $u$ to $d_e$ (encoder) is identified. Then, the transfer function from the DAC output voltage $u$ to the measured displacement by the encoder $d_e$ is computed: @@ -1979,8 +1727,6 @@ exportFig('figs/struts_align_frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', ' Even though the struts are much better aligned, we still observe high variability between the struts for the transfer function from $u$ to $d_e$. #+end_important -*** Conclusion - #+begin_important Having the struts well aligned does not change significantly the obtained dynamics. #+end_important @@ -2041,8 +1787,6 @@ end The obtained dynamics from DAC voltage to encoder measurements are compared in Figure ref:fig:effect_enc_bending_stiff. #+begin_src matlab :exports none %% Plot the obtained transfer functions for all the bending stiffnesses -freqs = 2*logspace(1, 3, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); @@ -2120,8 +1864,6 @@ end The obtained dynamics from DAC voltage to encoder measurements are compared in Figure ref:fig:effect_enc_axial_stiff. #+begin_src matlab :exports none %% Plot the obtained transfer functions for all the axial stiffnesses -freqs = 2*logspace(1, 3, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); @@ -2207,8 +1949,6 @@ end The results are shown in Figure ref:fig:effect_enc_bending_damp. #+begin_src matlab :exports none %% Plot the obtained transfer functions for all the bending stiffnesses -freqs = 2*logspace(1, 3, 1000); - figure; tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); @@ -2651,5 +2391,5 @@ actuator.cs = args.cs; % Damping of one stack [N/m] #+end_src * Footnotes - -[fn:1]Faro Arm Platinum 4ft, accuracy of $\pm 13\mu m$ +[fn:2]Heidenhain MT25, specified accuracy of $\pm 0.5\,\mu m$ +[fn:1]Faro Arm Platinum 4ft, specified accuracy of $\pm 13\mu m$ diff --git a/test-bench-struts.pdf b/test-bench-struts.pdf index 80313a2..bed5b69 100644 Binary files a/test-bench-struts.pdf and b/test-bench-struts.pdf differ diff --git a/test-bench-struts.tex b/test-bench-struts.tex index d5a39a0..cd90855 100644 --- a/test-bench-struts.tex +++ b/test-bench-struts.tex @@ -1,4 +1,4 @@ -% Created 2024-03-27 Wed 14:27 +% Created 2024-03-27 Wed 16:59 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} @@ -75,7 +75,7 @@ This is very important in order to not loose any stroke when the struts will be A CAD view of the mounting bench is shown in Figure \ref{fig:test_struts_mounting_bench_first_concept}. -Faro arm\footnote{Faro Arm Platinum 4ft, accuracy of \(\pm 13\mu m\)} +Faro arm\footnote{Faro Arm Platinum 4ft, specified accuracy of \(\pm 13\mu m\)} \begin{figure}[htbp] \centering @@ -107,6 +107,11 @@ The flexible joints are rigidly fixed to cylindrical tools shown in Figures \ref This cylindrical tool is here to protect the flexible joints when tightening the screws and therefore applying large torque. \section{Mounting Procedure} +\begin{itemize} +\item[{$\square$}] Better explain the mounting procedure +\item[{$\square$}] Speak about the ``locating'' pins that are used to aligned the APA with the two flexible joints +\end{itemize} + The mounting procedure is as follows: \begin{enumerate} \item Screw flexible joints inside the cylindrical interface element shown in Figure \ref{fig:test_struts_cylindrical_mounting} @@ -183,13 +188,13 @@ From a Finite Element Model of the struts, it have been found that three main re \begin{center} \includegraphics[scale=1,width=0.9\linewidth]{figs/test_struts_mode_shapes_1.png} \end{center} -\subcaption{\label{fig:test_struts_mode_shapes_3}X-bending mode (189Hz)} +\subcaption{\label{fig:test_struts_mode_shapes_1}X-bending mode (189Hz)} \end{subfigure} \begin{subfigure}{0.33\textwidth} \begin{center} \includegraphics[scale=1,width=0.9\linewidth]{figs/test_struts_mode_shapes_2.png} \end{center} -\subcaption{\label{fig:test_struts_mode_shapes_3}Y-bending mode (285Hz)} +\subcaption{\label{fig:test_struts_mode_shapes_2}Y-bending mode (285Hz)} \end{subfigure} \begin{subfigure}{0.33\textwidth} \begin{center} @@ -237,13 +242,13 @@ The obtained frequency response functions are shown in Figure \ref{fig:test_stru \begin{figure}[htbp] \begin{subfigure}{0.49\textwidth} \begin{center} -\includegraphics[scale=1,width=\linewidth]{figs/test_struts_spur_res_frf_no_enc.png} +\includegraphics[scale=1,width=0.95\linewidth]{figs/test_struts_spur_res_frf_no_enc.png} \end{center} \subcaption{\label{fig:test_struts_spur_res_frf_no_enc}without encoder} \end{subfigure} \begin{subfigure}{0.49\textwidth} \begin{center} -\includegraphics[scale=1,width=\linewidth]{figs/test_struts_spur_res_frf_enc.png} +\includegraphics[scale=1,width=0.95\linewidth]{figs/test_struts_spur_res_frf_enc.png} \end{center} \subcaption{\label{fig:test_struts_spur_res_frf_enc}with the encoder} \end{subfigure} @@ -321,7 +326,7 @@ This means that the IFF control strategy should be as effective whether or not t \end{center} \subcaption{\label{fig:test_struts_effect_encoder_iff}$u$ to $V_s$} \end{subfigure} -\caption{\label{fig:test_struts_effect_encoder}Effect of having the encoder fixed to the struts on the measured dynamics from \(u\) to \(d_a\) (\subref{fig:test_struts_effect_encoder_int}) and from \(u\) to \(V_s\) \cref{fig:test_struts_effect_encoder_iff}} +\caption{\label{fig:test_struts_effect_encoder}Effect of having the encoder fixed to the struts on the measured dynamics from \(u\) to \(d_a\) (\subref{fig:test_struts_effect_encoder_int}) and from \(u\) to \(V_s\) (\subref{fig:test_struts_effect_encoder_iff})} \end{figure} \section{Comparison of the encoder and interferometer} \label{ssec:test_struts_comp_enc_int} @@ -378,7 +383,7 @@ All of this will be studied in Section \ref{sec:test_struts_simscape} using the \begin{figure}[htbp] \centering \includegraphics[scale=1]{figs/test_struts_comp_enc_plants.png} -\caption{\label{fig:test_struts_comp_enc_plants}Estimated FRF for the DVF plant (transfer function from \(u\) to the encoder \(d_e\))} +\caption{\label{fig:test_struts_comp_enc_plants}Estimated frequency response functions from \(u\) to the encoder \(d_e\) for all the mounted struts} \end{figure} \begin{important} All the struts are giving very consistent behavior from the excitation voltage \(u\) to the force sensor generated voltage \(V_s\) and to the interferometer measured displacement \(d_a\). @@ -409,7 +414,7 @@ It is found that the misalignment has a large impact on the dynamics from \(u\) \item Section \ref{ssec:test_struts_effect_joint_stiffness}: the effect of the flexible joint's stiffness on the dynamics is studied. It is found that the axial stiffness of the joints has a large impact on the location of the zeros on the transfer function from \(V_s\) to \(d_e\). \end{itemize} -\section{Comparison with the Model} +\section{Model dynamics} \label{ssec:test_struts_comp_model} Two models of the APA300ML are used here for comparison: \begin{itemize} @@ -449,16 +454,14 @@ For the flexible model, it will be shown in the next section that by adding some \end{subfigure} \caption{\label{fig:test_struts_comp_frf_flexible_model}Comparison of the measured dynamics and of the Simscape dynamics using the ``flexible'' APA300ML model (Super-Element extracted from a Finite Element Model).} \end{figure} -\section{Effect of a misalignment of the APA and flexible joints on the transfer function from actuator to encoder} +\section{Effect of strut misalignment} \label{ssec:test_struts_effect_misalignment} -As shown in Figure \ref{fig:test_struts_comp_enc_plants}, the dynamics from actuator to encoder for all the struts is very different. -This could be explained by a large variability in the alignment of the flexible joints and the APA (at the time, the alignment pins were not used). +As was shown in Figure \ref{fig:test_struts_comp_enc_plants}, the identified dynamics from DAC voltage \(u\) to encoder measured displacement \(d_e\) are very different from one strut to the other. -Depending on the alignment, the spurious resonances of the struts (Figure \ref{fig:test_struts_mode_shapes}) can be excited differently. - -For instance, consider Figure \ref{fig:test_struts_misalign_schematic} where there is a misalignment in the \(y\) direction. -In such case, the mode at 200Hz is foreseen to be more excited as the misalignment \(d_y\) increases and therefore the dynamics from the actuator to the encoder should also change around 200Hz. +In this section, it is investigated whether poor alignment of the strut (flexible joints with respect to the APA) can explain such dynamics. +For instance, consider Figure \ref{fig:test_struts_misalign_schematic} where there is a misalignment in the \(y\) direction between the two flexible joints (well aligned thanks to the mounting procedure in Section \ref{sec:test_struts_mounting}) and the APA300ML. +In such case, the ``x-bending'' mode at 200Hz (see Figure \ref{fig:test_struts_meas_x_bending}) can be expected to be more excited, and thus the dynamics from the actuator to the encoder should be affected at frequencies around 200Hz. \begin{figure}[htbp] \centering @@ -466,121 +469,12 @@ In such case, the mode at 200Hz is foreseen to be more excited as the misalignme \caption{\label{fig:test_struts_misalign_schematic}Mis-alignement between the joints and the APA} \end{figure} -If the misalignment is in the \(x\) direction, the mode at 285Hz should be more affected whereas a misalignment in the \(z\) direction should not affect these resonances. - -Such statement is studied in this section. -\subsection{Measured misalignment of the APA and flexible joints} - -The misalignment between the two flexible joints and the APA has been measured for all the struts: -\begin{itemize} -\item the strut is fixed to the mounting bench -\item using an indicator, the height difference from the flexible joints and the APA is measured both for the top and bottom joints and on both sides -\item then it is possible to obtain the misalignment for both flexible joints -\end{itemize} - -The raw measurements are shown in Table \ref{tab:meas_misalignment_struts_raw}. - -As the flexible joint's ``thickness'' is 1mm larger than the APA ``thickness'', ideally (i.e. if it were perfectly centered) we would measure \texttt{-0.50mm} each time. - -\begin{table}[htbp] -\caption{\label{tab:meas_misalignment_struts_raw}Measured misalignments of the struts (\texttt{R} means ``red'' side, and \texttt{B} means ``black side'') in [mm]} -\centering -\begin{tabularx}{0.4\linewidth}{cllll} -\toprule -\textbf{Strut} & \textbf{R Top} & \textbf{B Top} & \textbf{R Bot} & \textbf{B Bot}\\ -\midrule -1 & -0.4 & -0.6 & -0.16 & -0.82\\ -2 & -0.67 & -0.3 & -0.34 & -0.63\\ -3 & -0.07 & -0.88 & -0.16 & -0.79\\ -4 & -0.48 & -0.46 & 0.07 & -1.0\\ -5 & -0.33 & -0.64 & -0.48 & -0.52\\ -\bottomrule -\end{tabularx} -\end{table} - -Also, the sum of the measured distances on each side should be 1mm (equal to the thickness difference between the flexible joint and the APA). -This is verified in Table \ref{tab:meas_misalignment_struts_thickness}. - -\begin{table}[htbp] -\caption{\label{tab:meas_misalignment_struts_thickness}Measured thickness difference between the flexible joints and the APA in [mm]} -\centering -\begin{tabularx}{0.2\linewidth}{cll} -\toprule -\textbf{Strut} & \textbf{Top} & \textbf{Bot}\\ -\midrule -1 & -1.0 & -0.98\\ -2 & -0.97 & -0.97\\ -3 & -0.95 & -0.95\\ -4 & -0.94 & -0.93\\ -5 & -0.97 & -1.0\\ -\bottomrule -\end{tabularx} -\end{table} - -The differences of the measured distances on each side corresponds to the misalignment on that same side (Table \ref{tab:meas_misalignment_struts_results}). - -\begin{table}[htbp] -\caption{\label{tab:meas_misalignment_struts_results}Measured thickness difference between the flexible joints and the APA in [mm]} -\centering -\begin{tabularx}{0.25\linewidth}{cll} -\toprule -\textbf{Strut} & \textbf{Top} & \textbf{Bot}\\ -\midrule -1 & 0.1 & 0.33\\ -2 & -0.185 & 0.145\\ -3 & 0.405 & 0.315\\ -4 & -0.01 & 0.535\\ -5 & 0.155 & 0.02\\ -\bottomrule -\end{tabularx} -\end{table} - -\begin{important} -The misalignment of the APA and flexible joints is quite large and variable from one strut to the other. -\end{important} -\subsection{Perfectly aligned APA} -Let's first consider that the strut is perfectly mounted such that the two flexible joints and the APA are aligned. -And define the inputs and outputs of the models: -\begin{itemize} -\item Input: voltage generated by the DAC -\item Output: measured displacement by the encoder -\end{itemize} - -The transfer function is identified and shown in Figure \ref{fig:comp_enc_frf_align_perfect}. -From Figure \ref{fig:comp_enc_frf_align_perfect}, it is clear that: -\begin{enumerate} -\item The model with perfect alignment is not matching the measured FRF -\item The mode at 200Hz is not present in the identified dynamics of the Simscape model -\item The measured FRF have different shapes -\end{enumerate} - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/comp_enc_frf_align_perfect.png} -\caption{\label{fig:comp_enc_frf_align_perfect}Comparison of the model with a perfectly aligned APA and flexible joints with the measured FRF from actuator to encoder} -\end{figure} - -\begin{question} -Why is the flexible mode of the strut at 200Hz is not seen in the model in Figure \ref{fig:comp_enc_frf_align_perfect}? - -Probably because the presence of this mode is not due because of the ``unbalanced'' mass of the encoder, but rather because of the misalignment of the APA with respect to the two flexible joints. -This will be verified in the next sections. -\end{question} -\subsection{Effect of a misalignment in y} -Let's compute the transfer function from output DAC voltage \(V_s\) to the measured displacement by the encoder \(d_e\) for several misalignment in the \(y\) direction: -The obtained dynamics are shown in Figure \ref{fig:effect_misalignment_y}. - -\begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/effect_misalignment_y.png} -\caption{\label{fig:effect_misalignment_y}Effect of a misalignement in the \(y\) direction} -\end{figure} - -\begin{important} +To verify this assumption, the dynamics from output DAC voltage \(u\) to the measured displacement by the encoder \(d_e\) is computed using the Simscape model with flexible APA for several misalignment in the \(y\) direction. +Obtained dynamics are shown in Figure \ref{fig:test_struts_effect_misalignment_y}. The alignment of the APA with the flexible joints as a \textbf{huge} influence on the dynamics from actuator voltage to measured displacement by the encoder. The misalignment in the \(y\) direction mostly influences: \begin{itemize} -\item the presence of the flexible mode at 200Hz +\item the presence of the flexible mode at 200Hz (see mode shape in Figure \ref{fig:test_struts_mode_shapes_1}) \item the location of the complex conjugate zero between the first two resonances: \begin{itemize} \item if \(d_y < 0\): there is no zero between the two resonances and possibly not even between the second and third ones @@ -588,40 +482,78 @@ The misalignment in the \(y\) direction mostly influences: \end{itemize} \item the location of the high frequency complex conjugate zeros at 500Hz (secondary effect, as the axial stiffness of the joint also has large effect on the position of this zero) \end{itemize} -\end{important} -\subsection{Effect of a misalignment in x} -Let's compute the transfer function from output DAC voltage to the measured displacement by the encoder for several misalignment in the \(x\) direction: -The obtained dynamics are shown in Figure \ref{fig:effect_misalignment_x}. + +The same can be done for a misalignment in the \(x\) direction. +The obtained dynamics are shown in Figure \ref{fig:test_struts_effect_misalignment_x} where it is shown that misalignment in the \(x\) direction mostly influences the presence of the flexible mode at 300Hz (see mode shape in Figure \ref{fig:test_struts_mode_shapes_2}). + +Comparing the experimental frequency response functions for all the APA in Figure \ref{fig:test_struts_comp_enc_plants} with the model dynamics for several \(y\) misalignments in Figure \ref{fig:test_struts_effect_misalignment_y} indicates a clear similarity. +This similarity suggests that the identified differences in dynamics are caused by the misalignment. + \begin{figure}[htbp] -\centering -\includegraphics[scale=1]{figs/effect_misalignment_x.png} -\caption{\label{fig:effect_misalignment_x}Effect of a misalignement in the \(x\) direction} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/test_struts_effect_misalignment_y.png} +\end{center} +\subcaption{\label{fig:test_struts_effect_misalignment_y}Misalignment along $y$} +\end{subfigure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/test_struts_effect_misalignment_x.png} +\end{center} +\subcaption{\label{fig:test_struts_effect_misalignment_x}Misalignment along $x$} +\end{subfigure} +\caption{\label{fig:test_struts_effect_misalignment}Effect of a misalignment between the flexible joints and the APA300ML in the \(y\) direction (\subref{fig:test_struts_effect_misalignment_y}) and in the \(x\) direction (\subref{fig:test_struts_effect_misalignment_x})} \end{figure} +\section{Measured strut misalignment} +\label{ssec:test_struts_meas_misalignment} -\begin{important} -The misalignment in the \(x\) direction mostly influences the presence of the flexible mode at 300Hz. -\end{important} -\subsection{Comparison with identified misalignment} -\subsection{Find the misalignment of each strut} -From the previous analysis on the effect of a \(x\) and \(y\) misalignment, it is possible to estimate the \(x,y\) misalignment of the measured struts. +During the first mounting of the struts presented in Section \ref{sec:test_struts_mounting}, the positioning pins used to position the APA with respect to the flexible joints in the \(y\) directions were not used (not received at the time). +Therefore, large \(y\) misalignments may be expected. -The misalignment that gives the best match for the FRF are defined below. -For each misalignment, the dynamics from the DAC voltage to the encoder measurement is identified. -The results are shown in Figure \ref{fig:comp_all_struts_corrected_misalign}. -\begin{figure}[htbp] +In order to estimate the misalignments between the two flexible joints and the APA: +\begin{itemize} +\item the struts are fixed horizontally to the mounting bench as shown in Figure \ref{fig:test_struts_mounting_step_3} but without the encoder +\item using a length gauge\footnote{Heidenhain MT25, specified accuracy of \(\pm 0.5\,\mu m\)}, the height difference from the flexible joints surface and the APA shell surface is measured both for the top and bottom joints and on both sides +\item as the thickness of the flexible joint is \(21\,mm\) and the thickness of the APA shell is \(20\,mm\), \(0.5\,mm\) of height different should be measured is the two are perfectly aligned +\end{itemize} + +Large variations in the \(y\) misalignment are found from one strut to the other (results are summarized in Table \ref{tab:test_struts_meas_y_misalignment}). + +To check the validity of the measurement, it can be verified that sum of the measured thickness difference on each side is \(1\,mm\) (equal to the thickness difference between the flexible joint and the APA). +This thickness differences for all the struts were found to be between \(0.94\,mm\) and \(1.00\,mm\) which indicate low errors as compared to the misalignments found in Table \ref{tab:test_struts_meas_y_misalignment}. + +\begin{table}[htbp] +\caption{\label{tab:test_struts_meas_y_misalignment}Measured \(y\) misalignment at the top and bottom of the APA. Measurements are in \(mm\)} \centering -\includegraphics[scale=1]{figs/comp_all_struts_corrected_misalign.png} -\caption{\label{fig:comp_all_struts_corrected_misalign}Comparison (model and measurements) of the FRF from DAC voltage u to measured displacement by the encoders for all the struts} -\end{figure} +\begin{tabularx}{0.25\linewidth}{ccc} +\toprule +\textbf{Strut} & \textbf{Bot} & \textbf{Top}\\ +\midrule +1 & 0.1 & 0.33\\ +2 & -0.19 & 0.14\\ +3 & 0.41 & 0.32\\ +4 & -0.01 & 0.54\\ +5 & 0.15 & 0.02\\ +\bottomrule +\end{tabularx} +\end{table} -\begin{important} -By tuning the misalignment of the APA with respect to the flexible joints, it is possible to obtain a good fit between the model and the measurements (Figure \ref{fig:comp_all_struts_corrected_misalign}). +By using the measured \(y\) misalignment in the Simscape model with the flexible APA model, the measured dynamics from \(u\) to \(d_e\) can be approached as shown in Figure \ref{fig:test_struts_comp_dy_tuned_model_frf_enc}. +Even better match in the dynamics can be obtained by fine tuning both the \(x\) and \(y\) misalignments (yellow curves in Figure \ref{fig:test_struts_comp_dy_tuned_model_frf_enc}). + +This confirms that the misalignment between the APA and the strut axis (determined by the two flexible joints) is critical and is inducing large variations in the dynamics from DAC voltage \(u\) to encoder measured displacement \(d_e\). If encoders are to be used when fixed on the struts, it is therefore very important to properly align the APA and the flexible joints when mounting the struts. -In the future, a ``pin'' will be used to better align the APA with the flexible joints. -We can expect the amplitude of the spurious resonances to decrease. -\end{important} + +In the next section, the struts are re-assembled with a ``positioning pin'' to better align the APA with the flexible joints. +With a better alignment, the amplitude of the spurious resonances are expected to decrease as was shown in Figure \ref{fig:test_struts_effect_misalignment_y}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/test_struts_comp_dy_tuned_model_frf_enc.png} +\caption{\label{fig:test_struts_comp_dy_tuned_model_frf_enc}Comparison of the frequency response functions from DAC voltage \(u\) to measured displacement \(d_e\) by the encoders for three struts. The \(y\) misalignment between the APA and the flexible joints have been estimated} +\end{figure} \section{Comparison of all the (re-aligned) Struts} \label{sec:test_struts_meas_all_aligned_struts} \begin{itemize} @@ -635,7 +567,7 @@ The misalignment between the APA and the flexible joints are measured. The results are defined below and summarized in Table \ref{tab:meas_misalignment_struts_new_raw}. \begin{table}[htbp] -\caption{\label{tab:meas_misalignment_struts_new_raw}Measured misalignments of the struts (\texttt{R} means ``red'' side, and \texttt{B} means ``black side'') in [mm]} +\caption{\label{tab:meas_misalignment_struts_new_raw}Measured misalignment of the struts (\texttt{R} means ``red'' side, and \texttt{B} means ``black side'') in [mm]} \centering \begin{tabularx}{0.45\linewidth}{cllll} \toprule