From 9167bfaed08c0bef78b3383f286f374fc3205684 Mon Sep 17 00:00:00 2001 From: heibaiying <2806718453@qq.com> Date: Thu, 11 Jul 2019 14:23:00 +0800 Subject: [PATCH] =?UTF-8?q?elasticsearch=20=E5=9F=BA=E7=A1=80=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Elasticsearch基础.md | 152 ++++++++++++++++++ .../ElasticSearch+Kibana单机环境搭建.md | 9 +- pictures/kibana-tool.png | Bin 0 -> 36221 bytes 3 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 notes/Elasticsearch基础.md create mode 100644 pictures/kibana-tool.png diff --git a/notes/Elasticsearch基础.md b/notes/Elasticsearch基础.md new file mode 100644 index 0000000..ddcc555 --- /dev/null +++ b/notes/Elasticsearch基础.md @@ -0,0 +1,152 @@ +# Elasticsearch 基本操作 + + +## 一、索引管理 + + +### 1.1 新建索引 + +使用指定配置创建索引,这里指定分片的数量为 3; 副本系数为 2,即每个分片两个副本;默认情况下分片数量和副本系数都是 1。需要注意的是创建索引时,索引名称只能是小写,长度不能超过 255 个字符,同时尽量不要包含特殊字符,不能以`-`,`_`,`+`等字符开头。 + +```json +PUT weibo +{ + "settings" : { + "number_of_shards" : 3, + "number_of_replicas" : 2 + } +} +``` + +### 1.2 修改配置 + +ES 支持修改索引的副本系数,语法如下: + +```json +PUT weibo/_settings +{ + "number_of_replicas": 1 +} +``` + +需要注意的是 ES 不支持随意修改索引的分片数,这与 ES 分片的路由机制有关,ES 使用以下公式来决定每条数据存储在哪个具体的分片上: + +```java +shard = hash(routing) % number_of_shards +``` + +routing 是一个任意字符串,默认是 `_id` ,同时也支持自定义。ES 对其进行哈希运算然后按 number_of_shards 进行取余,之后就计算出存储分片的序号。基于这个原因,所以 ES 不允许对 number_of_shards 进行修改,因为这会导致已有数据存储位置的计算规则失效。 + +### 1.3 查看与删除 + +查看索引及其配置信息的语法分别如下: + +```shell +# 查看索引信息 +GET weibo +# 查看索引配置信息 +GET weibo/_settings +``` + +删除索引的语法如下: + +```json +DELETE weibo +``` + +### 1.4 打开与关闭 + +ES 中的索引支持打开和关闭操作,索引关闭不能进行读写操作,后其占用的系统资源也会随之减少。索引打开和关闭的语法为: + +```shell +# 关闭索引 +POST weibo/_close +# 打开索引 +POST weibo/_open +``` + +ES 支持一次关闭多个索引,多个索引名之间使用逗号分隔,同时也支持通配符和`_all`关键字,示例如下: + +```shell +# 关闭多个索引,ignore_unavailable=true代表如果其中某个索引不存在,则忽略该索引 +POST weibo1,weibo2,weibo3/_close?ignore_unavailable=true +# 支持通配符 +POST weibo*/_close +# 关闭集群中所有索引 +POST _all/_close +``` + +## 二、文档管理 + +### 2.1 新建文档 + +```json +PUT weibo/_doc/1 +{ + "user" : "kimchy", + "post_date" : "2009-11-15T14:12:12", + "message" : "trying out Elasticsearch" +} +``` + +这里需要注意的是在 7.x 版本后 ES 已经不推荐使用文档类型,所以这里的`_doc`其表示端点名称而不是文档类型。此时输出如下: + +```json +{ + "_index" : "weibo", + "_type" : "_doc", + "_id" : "1", + "_version" : 1, + "result" : "created", + "_shards" : { + "total" : 2, + "successful" : 1, + "failed" : 0 + }, + "_seq_no" : 0, + "_primary_term" : 1 +} + +``` + +#### **_id** + +在输出中可以看到`_id`的值为 1,这是在创建时指定的。如果创建时没有指定,则由 ES 自动生成。 + +#### **_version** + +`_version`代表当前文档的版本号,基于它可以实现乐观锁的效果,需要配合version_type 使用,version_type 有以下可选值: + ++ **interna** :当给定的版本号与文档版本号相同时候,才执行对应的操作; + ++ **external 或 external_gt** :如果给定版本号大于存储文档的版本或者原文档不存在时,才执行对应的操作,给定版本号将用作新的版本。 + ++ **external_gte** :和上一条类似,等价于 gt + equal ,即给定版本号大于或等于存储文档的版本或者原文档不存在时,才执行对应的操作。 + + 示例:`PUT weibo/_doc/1?version=2&version_type=external { ... }` + +#### **_shards** + +输出结果中的`_shards`节点下有三个参数,其含义分别如下: + +- **total** :操作涉及到的分片综述,这里由于创建`weibo`索引时指定主分片数量和副本系数都是1,所以 只有 1个 primary 分片和 1 个 replica 分片,故其总数为 2; +- **successful** :这里我采用的是单节点的 ES , replica 分片实际上是不存在的。因为按照 ES 的规则,primary 分片及其对应的replica 分片不能处于同一台主机上,因为处于同一台主机上时无法达到容错的效果。所以这里只有 primary 分片写入数据成功,故值为1; +- **failed** :执行复制操作失败的 replica 分片的数量,这里由于 replica 分片本生就不存在所以值为 0。 + +#### routing + +在上面我们提到,ES 的分片路由规则默认进行哈希的对象是`_id`,如果你想指定使用其他字段,则可以使用`routing`参数进行指定,示例如下: + +```console +POST weibo/_doc?routing=kimchy +{ + "user" : "kimchy", + "post_date" : "2009-11-15T14:12:12", + "message" : "trying out Elasticsearch" +} +``` + +### 2.2 查询文档 + +## 三、映射详解 + diff --git a/notes/installation/ElasticSearch+Kibana单机环境搭建.md b/notes/installation/ElasticSearch+Kibana单机环境搭建.md index 89eeed0..66db4f9 100644 --- a/notes/installation/ElasticSearch+Kibana单机环境搭建.md +++ b/notes/installation/ElasticSearch+Kibana单机环境搭建.md @@ -95,7 +95,6 @@ root hard nofile 65536
uQ$-@XLZyv*NZ$}5{)Z_XDY3B|<< z$+1Nu(Mz!ba1I+s2}L*2FQy^ihy#sjI0AZLuAU!%P#9QkkUg4y5`ARV zM}c-KB^puv^XYmtajGMGw{Uk_UynR57S>6)0=CBtWz^**ODU9LoNM*9uc^4^xIjiV z%crj5Q@$;#xB6{aO&Po%uJm9XrxA$`P+Tu>>Q~LcEpm?K8^RXhOP%Ge#j$?MlT$^p zM0Gd2DSoQ_F9nlEvCLc<`NPTBOvXpULsom4Xx)d3%-+M^sk!BT4y3HkT@Tm8oGL?D z18hR17M!6B#`D*t-e~^(#mWrI)6WwFi_n!$-a@NL9z>73DXHdvhWpXMS*|^$dM0}H zud73^xO3$`{j%-)$3z$W5KtbuzCPWiIuLxYS@70+Q!n%+jyx6! _)X1X}wHiHhqGwEBA!nP3e@i+Jjmm z_Rf1*z^6-*wCI)DgIOw``g+g6@kV@@^HyyvOyzxToS%crAY&NXRqq{4!Y9-Vr8bYN zz}G-5Y%A|2SFMNHTqWkzS%GO!&b2H~I$~aEZLniz>Jy&&(tAnK{C}dx$A2N51MXa_ zEl)>BP?jgnHPVHN`tI-wf5QLZREJ_k>F(xT)!X0yOx%#Fyu5r!(>YG_^J&ZrZ`Y3D zZza(Kzwp#5M1(B08{L#8O!D+kH>rG{&avclrc`1WE*eoaEBGp#xHzO}8EHoRkR65$ zL?J%st3sZ0Qz+@5+cT5nD!Dpt0i1~5T$2ydxVF4LY&BokyXqCKg#o`kVdLudMeely ze**cwx X8{GsiVy5<*f^ z6}ha b$p$Tv|oQge5Dc&hwT)CFM<`wNN~odzArNU+eaCV*KS%dBt~aq-BH z1B%PsCZM<8-uMAY7nzdj|Kd3#yrF3ilfso-Keg<>@A)ed+ar0!NSof+==sf7y^X~< z8EUjA`i~PudQr&1Dya28Ecn*8xP|L~9~S;c{(lo{{tuck=r2y?hHp9&&GUxM*#8O) zXrZH_p<%u&|4Y7zfy@>wAUm77y0)%kU|?WemGB?=KeHpnbNDNVXVtu)JpK+o!_^Y` zKOJl${Yq>$#FO8+IF9!Z)x?|G_sys|N`FIjI2$9H!wrVt$!I$2lU--q-BjaOQrLNP zjD?qYD*K1_yFD+}?YObCCaylHOGPTvkB%hoAY`Kt-XU5F5i`G*;%mLq#Jqi2*%_l` z^gMEeIT)Cn#eWEqCZP_+gJa$>><$G9=ENon*K!Y#@e@>?QT+pmhPBH!Q!HkELejaK zx^vhfE7ar&@GLsbOc#gh91LrgPbLhm4e)!!aGj3ub`>Y%BwZc)4aHAUl-t-C)}UDw z ~>RMBkQ=gk@I&Pa?U=rP-X_1?$I^mF5iLPI@e<;zODmL}=cNrTk0;b$LB z=2TQtGnyMuC-iHozhDzZYBXEDjKLHQ2}1+WdS8iYvvhz0w^+6;dDY`m^>SqovP{?7 z)}D(~8%5!`GY{M`^3fe`^~?~y<>uFt =Bap~EYN2|Y*aSu91lp_Zm|$+4jLpf@r zK~>5#rU+i~Ut7lq<3?+`K_iVm-fQAKNiURz)c&x|`Fa(Eog{2ivpAggORR&sJ+u9p z@aZ_*X=pyB<6xz H3k(oDPSfzev(Aq)6n7_^ZD0mb=Ib5|FcKFDk>2P@Jb zA?3XWOSSDlM@J~O9U5(bj34xG9~sH6ph1+e>V%CS&7tZ=c6wcT1Ixs)+ve9rewX znL4rbEPW#1nRjYSy788<- ichbT8X_;kX7wJ9Z7l77J|qI}huYa^n(rzPU)qckGPYC{p0 G0Pf!%j|KPmiStfE%-huWg347u!sM>Sua)8`lWy@ AaixHWB()Nny9L<+B=)gPjhqkD@3QK^c
?ywx~&Q5=ZpP%CE33dOhh0| z{qzH;rEFT$!VD*ehv*h#ks&p!MjI&llI%I3%R1lpBJ@d#nSx8Ycex6$RrpUeIc8cM zPz132bfpYVb80^{+71ip^d6_Y3fJM{7-qgtM&p#$|5$w@Zu`1Js)+W?>U;?GN*AcN z-_k$al_Q#P#^3_m^fJ0`DJnHaOE<~wNaDh<@;x^@Pp;ehV`Q4-jqrjJoDQBVvTdr6 zZv-p8D_ wu<*`9ML6}Gz`$eG_qcdBa3hvH#%oqIHc2N%By58Xn~?mq_uf* z?p0y=?Sgla^TCU*( kWTa eQO&0rbfGF1qB!3yt^OI@+PQMrtqO%E5#v-`pI zl>XqqT7c@WvC5I)v{XVDP9R&^E%~6Ss@WbOiV`U+O9?h;df#FWbN39OtAK_7rjDt5 zzDWQn0|D7V{Tj~b^n+%vmzym;A2^x)22ojHyg_6T>S^PSKWWMe#XV6MZ3axH@XIss ziT!kn9iKH_n_~Uyovl1SkbRio3BA>C-H0I1ke{})Wsws-rf1~>j^dr>9L6)0vl@gd z1!&|Kn}q9AVM9BaCIwFu& K2}$FuB;wzA>8Px7PXR-rpkp3IlI@tbtYK3)hL5^O#_9+aifoGYWEK%N7B zd~UK}W!5EP`ofLH(G?}D2S49*>gl!AW&y~8{$4}{x14<_b7xzD5T=)Mdm4?ndd`OS zaZae!#Y^3~z?3oBQmtw|kdCn>J@t2 x$I&6$%@}iV48Y&Qzub4o-59;syUYBgj{1V>AXhwHy6T?Z5nJAp?aEik zl@a(Yj$0aDO_%drs*%7hA##%Xa^*QoTVl`2SE(WVrh<><&x^RFur2L_D&Esq6$_9n z^P+^N9Jc-V*5T-1K8@gU6<&ubv2Mwk7M+*R*AQF26QSz4 wVl6G6{}S;o)dD> z2U;$t6t;=W#41m{zwQR)%0jL4V$dVFcseTW>udsNx)=PWu5bUu>P9g`_r>pYQ$q^} zQ%`p+69lg6TN)jPd~Kx8IfIR>GwH?wFMYgd)a31@`lU?drmi_AG8h_~h*C3TZ+9~b z6B(qu?#aCl)(6m)__WnF4|Xgf4@ V5% z@(pF}oIFYrcz-i6JT#y6Gs7qGBJeTKC;jA;;b+d-4 Ri`IqD4wzW3;0oVtG=*|zNC?s&@ +*SL gf z1N`aQ%B%7KYke=?$iW0=TKqH2&x4eHIlbyto~p0U+nQXE-dHMKTB-nYzNKLvwD;@V zn_jSDW}`Z)>uPRQJkb!9ckE_mVE@khht%Rp|K{9vFcVR3)Z>bP#k&gI_j&HA2mL<{ z|Cnq}yCB{+m458C30S(+TGFLyJ{{4blHyJEMb=E{PKV^4BV6Ps>%_pR;#(*CPuB;t zdT;ghE0yDeP>3+6C`l57v#*A3q{v#+O%RS|0$>N0@N;cmWXzc8kZTYCNdw(+o8H `Sb zF8(Fz9o1JkRa;x0n{dvC1 |_r?Z%!)DiZ6}7N^_hQ^n*>M z?l(6ZwmoWqSw` &E1kXd7Anxega`;)&~zcCcim_{u!?@OLXO8^xc( zJ$7R}elL+cDXin6=wBaW_Otrh=_pM0e((b)Dl4m2K *cZ}3K zLA!mA9rRu|%R1_EhmWHdl8?w9`kO@l&;kZ&Xn#f(XXHj0iLB@&EJw2sDIKzkUjC^H z+9 D7)+wD{wkI^5 z%+SH6qB?9b<~lRTYW_XDYdKJT@ptYJ^=`rsns;V6yk4wa4vI^VaMk9RyJRIcsi4m^ zEx}g15ka@CE!j?5kKXI1;a#l_^eRVqf#)DgkD>r))Z$w-Oz_9y=U57c>AW^i_rFuZ zt6w_L^~X^uWk~O`5O#r%ylT+mtBx|{n~9wqT??|;>OpUG9_Yb= {#+{(UTIB)f zPAS;WKtwaqwI8=4D}A|tUjxS-W^-m|lN%kM8O|}D-BDv&*2N)nGO=2)C;6BG_7lUF zoFkLE$X;PR2Js8BwT0ry5}=Tf$Xff}_95eZWwn#Ch(AumB=*j=Rdxix1TJHe{C?#F zZqN6@kx`NvfT>_(@Id~B;y1{x@t^Y)3sjryWV`-_!|^%?vedTP0 %|ss10X8q;iRnDA^aN`l6}Qzd@mMvtc$=>1lx62$t=W*lV0*4xOMF*9DC zAt2G`*;yDM+?k^krQUiLmzuEJUAX*)`JnNPc9*T#AOVd*5{T;KkB~WtZf020-xfGj z^sS;fj_y^gXgwTIC(P4#XoW-N{J+*%Y*#m*TU!xoA>2Phj{cGUc<3*&Y+GxJt2JpV zgR`4kj*156bp>5!*dsIO1BBUT=?3C~=kNL=25asJUh0z3!jKbt8yI`tL=8=B-(Y5q zzTEG~UQm^V(qLiK^s(jn1urScD~i7R%;zOsD@05fWczLy_BnIqDB}4?=$x^Da?LTh zTR-!aw@(kS(5ngBe)c#Wu_|OydcVWd&*1F!=-!28>h8y)W;x=i;B00J6`_9mhjx8U z{K8M &ap_C`HP$mF`cVtVY-(7Dv$w#CE)8j})?m{8^|Pb#ZR>?{xdGtfm#^ zTN7m*OHnNWQawbw-Q`i+&>UWAv9DDefYT}J%R+>Gko>)ORMRwEh0bU>)W@c8l1g8W zHW^xS*ezrHX8TkXHZZbz)In^a>tr*!C*iNKG=zjlJs7-P0~w8Y*n)>` Wt*E)p4Mk~f5{tM >}$wo8Q- =^s22@|hn(qrQAJ^vZ z8!m) c?$2lPhHFB%-t{Riw(=?#UgD2}K#GAUEQ3&ZzvE%8|4Z{c?+<|0 zazGQuptOoD{A6jWff?7+!+I=vRSru~D%$wm&9pAANhj|aoqD}w0EaoADvudW`#~|} z%de~F2^HsNhMqEL9G#tY3;O!4If5FYa87^s$3!3Z0127%iS6ZHf``(kSXd@EQ)b`y zj82#0ekU|lS@i3vR7hZvP%MV2YB|_s`A|Xg@YwqQ %LG}R(@V@6Y2T! zkP->Q663o{zayI B@!f51L2KYq zLtE`_4l}SMS4EZ^f`1_*Dr#Zt5SEgnQ#Rm`^gS?k6Ti{R&Wf-K*)5zFX`XE6@lpOt zobI1MW8~`bAwNHLQpe ?RmHIezFjbngCB9H&eU=|KLmm_3%VMFQ zv+Z*@r~Ll?x?~znQnJH(2gqJhPavEUi)_)zxRRRty=GcnSjl4iZLhlyl`$3e*65Yg zhvDO$KE#00VeJKXi=;M9Ln`{|{DR?a f69*cgc>OYquwEwO!HtH7A37{=O%3SEc4R z-slm&YX~nflM&mebH6bM2H*Dcuu51Uk(k(i2K65RK4|YHLa-MgDNIl Nws}N_aFKB*Zy|5&4#8MBKpr{ZgL!x#40HX5^a)`Bc4b$LDgY4u;I$7?VyHOXE zK@+^S!e37`A!xI!Grf5L=RJx)2}!#W-N@5WG#87@+*V{Qkqgp904a7CpUp lBdY2oJyhpgZbM=1wmWNnxj-$Zw;%mm*-~!|iQg zf8QVzV17OJv16m21jk_eyx0D9Z)w}FdjCI9gw$rW$|*9eo9pY7(|{h{hlChZU(VZ9 z4or`b>tLg9$rN)Fq(UIu#(Ue;jDRhPJM?V`2{M^u+dshnve5(yR5H{h2b(;$GfvNl zwtl|<`|E-Uhw~tagW<_VOW<){oSb@7Ug)a%0W|qZI!o|E@~^bu3gZ#U%UB@?-iE%Q z|0->U`pQ?SRa)1P2D8?7#AH1F_Hnw6C!NR<%Xe1wmxy=X|D|wu4~A$V3t9h_HF |*|^TfBW8xY(lKOc6H#5qH^TL3$uh^4tmt*L+3oEu1XX zsQmsRTL1%D!Zo_oiYqi-1W2wqaaY^U=^YrraUmd67SxiHn@{xrXFWJ~7O&U-BprL^ zGvRP!5g+jEM=qjgi5CU`)Kyu$+9V)Ns;1-Hlk>Er zyA89P-=fQ{UUU3NQO(Y+SwNSQWdMrNg;|WS%}HAj?};;`0%U7JAk{e*S;UrBcAt4# zpL)K@ZxSv3=ITuE`aEunQ#8XOp-s~yU@Yb#?9{_NBs9qm_XQn-U+ofs%(4Y!te!Y= z7zAJA$2X+c<{-tLio;{F(prF?8u)-$i@5~(m4&%# gG;VkJEJ=YbTB%2wVjRR96NrI(IAzB(=33QAQl!EtI@| zmROdBbO+Z9LVRm O#ka z0yd>4c(Zn7Mb5eS#?DYTnQDZ`)U>NYIqjhebD3bRAC*4xoDLLzxS#UCO;H5iPtM#1 zTpO#kPEDF@1L^FgJ-#%URO)zpA;tK}^}vy~?Pkpqe!p!xmzVtJQ$~fN)EAxh(DFyO zOWFF;PV|R|B9LG$H9qFWg!756Yg ~BRp)6`s73VNWG8paamzrOtCih0#k1(=s%saWh9g*sog zh*mqkejKx&K)BH2goqO_-MWR3r1P!USRb}Mfc>bDTUjqhh-x}F#k$?BuV-N3^Didp zlRY}J 9`U$ d5vP7$`WH59 zG cA%d+vKaE6iAIN> zLa^D+p7iPBOkRWic;jLG7N6*1S~SO{D}7lADuDY54EAdAn-NOHg}0?bPu+qClzK3g ztE<1i JviQ~aX*Hn@zSlqJMrFqs;9b~3QKVALn-l|+T; zI5yhBxLq8?btkCF3j^KXD0>N?9*lL~sIa2N)Kk4N~zix~n$39y317wq=cs z0jmC-gQqJp_qjG7{`ux_gFb||2^qm}+S_ux$83N~sQ8o%{8;dB98eC1Tmj Qm=cm%R z&AC{`DjOAi>(?8mbSL}8xjG^)A8%~+E`Q%(?&ZWSvFD!?^_`uZ*gTYk1qM8J&YKN$ zA=q}k)y5ZwuHaFl-<)3K5?JOoZK}CR%q&bA=HYJSZiu{_@==2;f>CTT3%UQ@+rP!@ zN0&-)lU*813>M@+dD }@mn!NK7Nzox@E}~BQvQy$@grw>W=5xKV?68M^%5H3Il+N$R zxK8IAjsy&RdQ&sc%cQ{Cf#9?l9bE4qwYg&R*>oqN3+niQPi`^A!qoHK4aMwezifj6 zaKA6rHqCl|5T7jHrBfE?%L4x>#L1rGhP!^-IlVNU(0~f-BczEjK^EFd@UPfh-0#iV zV0na4JexT#zIp;7HSJy=j$W3>)I|;&>=Otut%;#Pm+zCCGJ|v+{CO*X59Xo7yQ=uS zBYM`fm3~g#n36*BDyXu!OnJDfp`&5xH{=jp3XnkRR7E`P=^dX0c >+~!Zldx68*?#tui;1 z0NQzZp6LXTDz|^#7zR4Op)Ac4yCnrL*h>>on`qSnw_jY`vDefTgQQ15N4zer&hwZd z00KQVeB`Bw^XmE<3oEmyl~6a~)}=*5qxiNgA_2w<%eBwXP2zAYKDbPvdt~%5=Eh6L zwzV*6Fcjf_Be2R_-<|F9iU66ObKbV_AT5G)*=Jp7*zdhdkCLk{M!;J{qGUi)ljW7u z)%Da9Aoyi=mf`>FT)Gr;+I0Qts?o=;_GXw_{18-_MUV6{?{r^DS xveiLMG~zaU*(SqTUuy+B9gkB(+t% z`*ZAW$IWUez9k>Kg4k6TC=AxOR(Dt^ }Xiq%8|h3(MrLCwO)ozA2P<)O+VKQI&$*KsBLt34|v5l*R;)>4e50i z%R5-~*dQY|Y(`$Pvp}t54agF>inm#20oHNj?JUy_uggq}A{Be1sSjGNI$%F@VH5|F zG-`yliN9(EJ;sT#ncI3GZ1bbI+yNjjP|iGAA}T~1;CWH>5eKwrTvacGr^Crpxng9_ zca8D8vH3$(R#abI=fd2lN?LzvJuIx4dds=+r#8Qfjyw;{btOHSu74MLdi(-{e!oZL zaw3DrCQ1V<{T3qw4MjHN9GbE)(U7`25@e5!ovqGn5DCFr=kyH?CDQdu_Fe@S)nEl7 zG?;=vOZRvrhLSp^MMd>ZwIgrHJO~8Y$D}F7A;VCy4$x;L31GGnvI?+3Csp XB|Iv&wJQ$sO9a<{A!JW_*gl4>ZAw z6@e>3WR)OatgQzk<}B4i5Y`B2B%&n{xsJjCcz;-KytrOUqYTPu$>;G9?fjm0Y0%7< zBgbb7e%}`zO{=o+vRfbZ)}u}=JK=C9@A$5wL;c~N{QmXJL#|d-k>A0j-0LZA0mo1t zXI_stb5`&@g>Ee=8*V)$Qpqe|0$dsngvs!<_o9I$u)BVr>2t~;nSL){Th}ldHwN;t zoI>O2bh%iYSSs#&l=B9u!A JEYikabNMB`O%+U>{(j=YKmA3_UTo8qw?ZhU zTkk|CN+aVDHGUl*FimyUbwqVW=*-6kcNdR6g`oiP6m?Y4N5x=&UY#Wz@rS0&M6A+! zAM?!#qKpIU_xJT9`cj|I8p~-YeiZRHU~fy-tj|nr?|;Oc5A1iq1T3%Ar@_;dFM6#J z`%2cr-kg*^TWz&X!OtWbyzP=*ihW$qDM%eF0;{f`nCjlUj50xn+6JHD=Q8`Z3c8Gh z`v44;DBIs+SrmDH1Jhn+SDyIZ6a;Oarq`Pq=^B)hOx$lkcHqMRJ4Sa5oNbs{Pb@_m zSHQ#FCD-Vms+uNJ*sZOY4`=#-Up~7&x7cI@KZ+ivM&7sV;2Wh^ I8S zUkf>!@TMfN&s-zEbquw35Qiw(U?qdwiKlD-JP(WqTc0;mhK@{XSPISe +a%_DRiRn_)E|Y^(kqZ08E{> z$crGC`KG~kx2cqBX64EtQRs(ZNro&$7aD^EAG0@=l7{t;6l!W}QxB JQ!O zXC0=tEXbNeu?Ts UbMwMsX?|S-FqNyn81WBy;uk9v{`b=Y!9!J zz0G@0;R-Q>aSPB^mwRB;>f#jVt?tKA1KaD<4oH%U{s zdeJ8B^$}RiZc5a_*;)={nZr^$D$!Gi|17t4{mGLpW=K($P<1W?yIbwp&;SQE^TZvL z-g$kh8SYqz7k0Zi`&ar+81TW=Q$m|tXc|mSJE9MI8U_@>j}t_u!msY}Ra(HYhXk1| zL5wp(=h+SO4EHrh98sCSD_zQi@e~vkpuX#PTSFOLNzBTwo}P}cn-KbZ7e0aRgX_0< zr@d~%4p~Sk6j)O}EFFG9u3B2c6ED&wy^QqQTHN+B)=<6K+lfl8Yhp58{149bt*=Kf z_IiTmnyk Tlgl8}I_jd|T~Qj|Xu@~tR8 zm_5zv$?fXqR9aobL<=;vY7d`ILH?nFEjYQeB$=eZiTn9YSEtyZLRNzp `rLa6y68z6w_vp}TrP>G7CM&DCIPPNcJSEf*NNY?wm{Np!|ZB)Y3*83iz(NP za7pB}#^e+?Cmu}2nZB$(o3AX1?{RL~nu ;u>Dt zzSg35>cQ6N=auU}V0-miMc77N6>)88I=jdd(B @utyjE!eCCfkRd7WE9IP-PVlr0lF5Tie zak7@|@^as)HV6^&4W@l{(J=7y@^H)orha1}u#YG6eG@dtZB0Fitti%{8qLbl5Gj3E zW9#LChJ3rj$qoY0?mA4FUaC>AyB5OhM5|ved4YEG0m^ST)#-T+a#_#~7(71eU90nR zYJN=$u*>smmFl9)DwSQ(BB`lrUu~}E+cBOJSdmp7#MK&m%l2VqN$eUB+LJ(QBl^o< z@3yWabBlK&V6;z>eVqG~h_`gZFfkpkQJKP_X4JVr0v%1Itdd?T(Bwx~L0x>_%&~ya z)Q{RVE(96i!?HM32nr5$pmJ)T#Qz+yCoT!t5m$_JI=;|dtX 24DY3 z4YF?8$(a|rq>{Wh)uWEU`!&(YPSlC9UtE1x5S%@>{o8$q3pKwQG-OlTwA!^eL-yNx zZ*tY!>tF}CFyD}zmZq0-XFcQmqHm-(e_qf;(QlIol2o&gb96e@b{mt%X*u#xkOw*! zkAvIm+BGS@y3dI#dx3%iY=4MX8x|YUf+K{%h>jih#c_MX9@y-KcAVxp^Tg H80<#07az5ZYuh!_9#8A~EmAVdUjy6ck_HK`VEi z9Ia_PyTEsY!|l-eoXH3cX{K~EweOpYsv`B-%Hx6)szHdQOa83k@szNeyHmrn>YF|3 zWq%z@16@3n(Vj8)cv2mI6|HH~50za-$93F9SSY|qS2#;)B=Vgd&eq``DDA)qXBhI8 z9VjT|v99=kK0`VlBj56YY{&tq4T;_G$xBsfP41LU` &SRr<6#3}Zq%-W^NyU=RK z!ttX`WS#%iqV9Fa%vk`lz4DE0Da;TJrLo%Z7ECaMO)08K!o j>xoq`8pmdzy5uc0#+BmzX0y7~-m1KE z6<$_){#rE9(8esJaw9m>|E*?7LIF39 Ve{rf&VW6!4hIOF&^z0}UuAKQs60o%oGAy#*aTDBPvDaYzq& z&}pyiNL|)3g7Dd4p?fhAJtMDDdANBD%|fi#Uw^ixek`%vQi9s}Epp~p{r$f6JM?qj zcyeh|g&Z{X0!n!|7CG^z2+>xP-15Y^l=3-n1MdC&y{l&q-|i=mA?zJ0rAZM68*FnG zlg)ZU =6zP;PdX@5^( zV#y@;8)!V5r9h!=@=n#4RLlYz9t*~;nyuDX1x?8r2ru?`v}wYt*|c6UF|?y%^ZVf2 zQu7CuawiMrVwYEsE*GqfK%p&1jlyjn2L}6>;&)Z@cH{Gd%(}gsUfUYgjubBI)kZ9g zdC+hiy92ro=o;isS^uFd5 nyzCy)DF|jh#JRWG6pPfYcJ&O(jL4YMHHMX~6&b6K*>rFJ zeMo&ZjypH!MSjz3L&lGx1}?fIBX}X9Ns7DOMnq@h;WPc80}-(ade)CrYWjJ3atFp- zlNps-i9Z4ZOP46EgUQ*OZRxGWN8H*1&9X$^dmY<>K+2)CjQ}rqduoW3q?9Sk^+ju< zpipOS LW!-zt6;VGd<2bq=uHG)NTuy! zowQiZ+9i|E`ESYD{@Hvmb-avSKKEyWRkM{t@N!}BocT}>+~2IJG{+V}n-;(qqVE;a zQplpy#eJFW#gj{8)l&pPNg#Z75rdpuy+ID
!kRLglCyybgYCu+&V` zt|A&ssNKWnT`o%S-LangL+AC5&>D^obp>z)KYJiyf?`R%&U597$6N9?MDK7^NazjalPnnGAm`D|ZC ztjEL-EuuSWE58*`*!txk^H*kn)WbTq_@3(SnfFT^v^D)EA{V!d_A7SmgFw7G!7Nwe z6AcVE9@+zaDnc);Gj*MfU#mbL7PEelq|oMI&~S3KZ#2?2>J{VVXH1LrM-QuVTkv esrokvRfoZ5C7h-@ XX`zx3Z>I)z+nk@Z0b{M_jvS1!mh@^2h!C(q zQz%VC(GpgPDMqyNpK$hBA`vl0TlVtZ-6Bx%cBq!2q0JnZdY(p`0F~e)LL$++XzE5o z_X(ogQjud!Z>vXv@Xa~{eyWO6>oq|k!WOr7EmZ*4Lc3n#vMP3X2-9Og%6Iy#DIS5V zO5Ol&6A#ZBu^yI(q z0?TGfZQj5OG#ASZG)KiA8ss?tSb^;fRwVjs$%Z?|e-woYP&Qv+9!Fi}?@Z}2Set7` zY6pIaT{7NszSuOVd3ReWAUlYED$jOL z!>`Bl_|$2v$xO|U6S(^(7(wuy>5=N{>Jgr=FvG@7&By|iUp*y_SJQ@?-d9FdE_X`A z0F#nn`MBtl66$WOoS=RKgP@3;XO7L2(34Da8yZ7!uWX}Ot)aC!Q(2;9^_2q<51a8C zQlOxDH)l-2Gig0I8%w8 4C_h?`7C#E3#e17oeB{dwgm~a~BPzuuKgihD(#m(hz z^Ms=HOKn(45Mx&yqw!V4kl1%O+WNVxyO<8YAYSZj;^ n9W9)Z{mWQ3T`A>mLj>-6B00gu@pGVS#9C18^LA#4H3OU5m=`SE z1a+xpbOGk8=60Fa3m#_?Ov>^hED =wZjWM$JZdAJA4$05V5eZ0 zztL4?^sJjYA7;ur+8t1H54O| O?ub3?7hW!s;VM+Cvx-SI4=}u?$I_qLdc|=*q1N4w-L6vH-NE2SfPr#G zV0LEh-2j!*m&>N@BuDU`C)4!yJxcWnhanP1U8{O8&mxb-BZXf%HFHPpx)M$8lANQ) z#JwJg5!c #E>R& z&$`mJRVd5rF@*l47TL%144+8-ry$k`WwvX~9I`!)U{;s f&`+3bhb>JYv ztHb>JWp)bBK#P7WYzgi>(f)p_{X|qiD+!OuV!Eugk?GNgl9f`M!r_rZLKoSyS4crq zPu6wW@hP^XR*}9g*ULAJVLATSQxSPkDd)HR9Cm3tFDLL)stHAR^-3)vO{8M0&!|V$ zds%lo*n|&*xJwz6efVu&Zhwb8qSm2wW7j4BYvk2b5XxAJbl!#ga<(UGzsSp>RPwVW z=SY^;Z!`7G9-P;cLrqzo0@zX!pLKfi^j~dOh3!>ib!f)(64@EqG-9yjASO-RRiBbi z@Ug)U4>4~qMD$mWhQhe!X8`8NBP|i$?iMZl?RM~yj9^wZyrWhycG>RL%IeF5BE^ID zj+@^xj1iYJ-jIk|R%T;7snXj&R($uWs~I^BBSb>mdh_au3j 7I^subhHEcKJ>NeBsRjFUtJv3VtO@-ge~z&%1*!gEz;z@{9;RtpR(D zUh)@A4ws0bg{ERtucjhwyI0+F8!?B5W$pIztz_-bKKAB_bGLKSxEaS4_2FJ
>`t-7|<8K9>m>uSFD9Tg4&Sf}DapR+e*RQv<*0 zG??{Cl>NP^#1#Ly!EI-2L}9z3J_AZK&S;~*1QDV+yY`hl(2iOxUKO~Vs5fIp{tyxE zlm6H#xmjy<;u9OS-Eux}#0I%}lHMBPeJ2Nom9K>pHuB8`r1nyIWLa`&W-|oYGxw zE))wlO7N*0oCMJy1oGQkI37`b*T5+dE<8HQ$a$<>?MuI)X3yI7nb?-8*c==6`}I~8 z*~9Kce!H-u1j6bU_roHZ#k()~n+6%qzu=ePHW1_KbUJQPkx)~$;!*0a-?k!I*#kwT zK%VBhLD4t$bWWLlQHii=rAK5a&-Wgc9qVoyG4A%2=*tGp9iKaXn&7o;;}2o2o&|?j z%(gP#=n2P#v|1UYWXd3XEpoFjyAZ>629W8iJ~NWUT-QMvM1CRS_zC?Xl#%PSf$$=u69F-d$_+4YoKx z?%3)oCJ%$Aeoa%}ePobL+{d({F{CISUTe> ngdGWog`p%h!Vj>Ur7Y+HjK<@VFW3YTWC;d_i8;u>P{OLeeRM zlf9ZAKHLQ3n2$McQResqihiC~9Ovb> ;Y%uAWK7Y$y&H~n%9NxOY4-RfEd;!s*nH9gp-YG<_aqdM6 zIjDR^ XFOVzZ&xSaLDMB?ccqs;ZP@K%-rvae3YaaMU-k?Et?BP`rW#F zUu&zh-?E8Tv?J#kD-q3{X>|#P`fkWFR8yJj%_6?#MzGP@xkilNDH@Hxo7-Zg8o5(B zC)a13{@2SKHv))@Wu@%$DIT2du>PFZQS%`k5FgG^HoI2vQbl$%*qxJG)9-R`+~}w& z_3ksbMW)KuwEi3f!NWvI5v|X_2T75UEI=pI?NkHwwnhFdC64my73FVWu;<3sG }XERG;8T? z?k&yEepUpkem3_t2lQUzq`O3rn@;|znlh#2fB?9CkhyujtDC0EtM=oEQzrh7b&$F> z?UFUjOVkv{+_g6RFsYNdcKA5nnh_0SxW>l%x`TOPa{5pfA%`!JAeJRkZnh!Rf%{T) z%r32<^HVae09X39X-mo1=%?-d>?0Ob{($>c!7Xf19as3 IoN~+jxxH MPUK-QP{w`43`0*OZnX)CkHw z9rmQ5NUk4}oMC=_>W*=DA#pz8{GA6Z#e%PD7sQa(O?V~`SNAIZN1ibtHn!92)NNlJ z(~H2er86+d_a@b+ $zseTcJZTI_MZ&7;7gwOe$EB7r#Z zJ=l8hIDUKbklo|Gf>?5dEk4z6zVl-fx{qy}aM`Es>@tJC02e&&RCPJ_>>PuB8=<2k zk083Zc4LD%t=+BVt#jX-igu5vHfeHsM4J)buc$V~r#p-!oZG0hc+Nqn;A-dsZ-6m$ zv|NX#AlAS(*`&yX?DjP#;{!w4#xnv^{j=L5T~}43?^G07h~Lbwjcl#aj`6YDQHT-m zI(zpZ)dN>vWXD+6%$(HyspyKV9TPq M(op07hj zC_RA?DS?8J$QRv;LsqL1o%SKFwlp=`av9FTaPP|es$Sbh41lys{bTG^HNKJ#pHno( zhCb<&U5P4%8kn-;hsuSFvc?C-weZ^k@>kRpBaC1})DY_rYTH%1+Vi&%vg`#45tKYy zRrdp;)>r)@*dTSTrK<*-;Dy}{94)vxPrFQ%NXp4Ns8lZVmFe*g{FHcMUzObb1Jz5Y z2x5^s^G23%v|>KNB(hbmlS8Q6)~{{*itNR6d0DB`VnuHsI|MfNCoH4BzWRdq+ddeR zt0sM_7O`?mM*xPepPhSBn}K(046{l;JbqiFEa~Xcqx0?Rd19qjLC(6hfxh{Ui^KO} z8XTxXdwgG_xR^wFVsXQzOkJuthwkql5rN^k{5qk-M+P_yV-_bZY-Zw1T9JfEE>47( zx47dyRO=N2XL=X|o6% `AKWg0RQI@yp9p4}RJsKh=+DuV?5Pts_!Zr!FA-GQ9Yv1I*Z= z`by1Syk3;<%{E2;FVR_Mw#_pl2x;GWjv(d3sWwi7LwIUyn_kD_#-b$)Ve{s_$l!AC zC22^<1TY#NGpeoavPKy(G80|Op&!C~#}mi$Rhz=s#X208m&OsY5%M$kD~;tzs37B5 zVFzgD!zN vbc~MZI9K41uO<-~{tjj(I+s;j#jD zUPhs(ul##_v9y9HbAHv~{{AUjlb*1AgT=zNl&@M);g;lu!)Zq4B%DayGc_NFRZ-?h zud-8NyV@E39Pm9uuW` edU%)(c) ofgNp-7W>ZZ=kS0^XHt(DLVAIbY5pyrr@T4k^!SYle;`W7dv+KXv^5s!m#H2~Spy zTcQ@~NX63!<+giAmR5DvnyYA$I=Ca93yw3?z?Zebx%Z5=x_|G+qMMbHJ-?nt2EC89 zM~Cr|plye-MosZeHr{&z_@p?~j>7hy;o}o*t3G*m(o<`F7epOeBG-?Em#ST1y$e;{ zl|i^BmFujQa4+V@?mSQC; J=a^1Gj(9YfO&NfJK#lGj-(>7c^{!-8(A zo@b0kf`4tK=Ut2Vq!aCrm3vMuN;k!>*5!K7@R__Rz{Tn=7A&Z +V7}*&vVu~&Q`&OczvCmgl$E>E+2TgZW65>7j}d!Z^-`~rBl>wkc*YE~ z@**tsx!U%_`$x~x_Ds%|nEA==)$-%6;Cm00MCKRgE$$N&7X9l`N>>%1;_6_6tz^*n zF_tiF&*dgsTc#d^5U!+9ZQD}FYy8-v;F1YtZs4i d#1MF&NM>fV zhN7>=Rn$rJa#-)IRexU+k^Nrcw8h=T_D2RkFPbsO<>`bB^%Z86IogeBn3|gEt;d;E zrh~ezH?}x$?ipmf45@>}(JjKk(YHWgGr2o{QN{hrR@pX9wj}8w<4SFYPBE4oP2CM6 z1>VGfcb$tXv`IorUa!8{Q_@6kMGMojBe^USmz{OuA~Nlsc$&!a` N4UR0`{hvQQ{{PJp;(mAzt93!(nrD0@l*7~N}BrC5?tVs zLHhl@okAO(-K5>kXfB)afH$yjQsCmhMIIS|wjd1yW1qOZ|LM&cY*#Sz|B;75xY83a z6W7CBw;p3&$K@CW-HtJL4gkde;G!t)u@9nYU}0FQRssH6?Jz7TE_O9+4+$BTLRt!U zpF4is_j!XK#@5{e ID&o8@h0_G=Fu|pk48S_pM8>8WZd2n3s~kmex6fVRc$QkU z%PhdM%Xi=DMX;TtecDIlNyzU*Z{2d%aH4QdgYvGvmocfno2n;%NA0wEr26+x31=)$ zAE~Ly4%i(*|5ShNV~(D-r+8o%PlZMG)|;I;`8#HZ^dv(6#`@})47~UijRvj2qP4#_ zANL&GDY?~(Vo^ET=^b##Wx4)@-Gugo5V_o_CK1(ZNeAl?Z=J*M{;e5x_FMr<;f~)c z^EPu3Pu1q;{w-Z{m7W-Bk=OP4a3)qh;KXf~Bp;<2KYHrRpYr$ DPuBjvBJOo@CC5l+v)>Fz0U(D!l{h&S6mqEK1uamXs4=q6c9|a>}`zQ zlN3H9){}MZ-XUuO{bPK$l&q)zT3iH}T6{|6_aD-d$wtrj+p@#7 !)6nw03D>-7V=uqQpHOAI;z3tcDj8S5jv#0fs zcTtN(OHgApe$&&>2UFwWe9z7>mc&Pcl# QlCEHg*#(f|z`6``x`__B1{p`PL0aC@(toU1>1&s(Y z>081$KleWQocFY;2;MRnpryrdR#&j)d@pW|scuZbKvhMC>y zVtD =PL?GxJm9zN5HL;5O@j*f2cQb{v_F-OBqZK1ag zc-b{e?>$K;vmAkVpN3)+5w(C-cbyrEDC2W!kh0lz^L>Byd07<*ju+vsCRKt6nJE3i zc4*{u2IUl~k#SCMP-S@ljkzi$!-GNk&P3~5kHw!nY-J!Tmp2O6o14T%x{30}EIyBS zH@hdxbRplvCoa?FKtJp58N9?+!fP*R5GVTN!JE4DwHMUtez6f>#q?60Q$0yKXVqb% z5?bN%@eWNnYz|6k-eQQdOA46UqYZ3++u`gTrjX|Q-X2Q!fAM8^?eDr-y^D}>tz!hF z>)6wGi)mfxmx<-Zwvm7N4JepRHNnKcpt&nuhpA%3s5N^AW<3)fOcSj9`D?kh%pi|- ze&=IlrKHNnPrsiP@|!-XaC#Ctd_67BXjbrvyK&nN?7%oQoyMG eLy5J@LO^aVPnFH|AQI}s!ik2KqNgq%4((9y{zVmR{9I%{s5&v-+ z;&`hhNgM~VB;_s7it?|5q)A}V)WSi++Xnt>vwbuh8Obw-%1lP9J<`wl9}F?{KNw>A z+j8&Kgz9_H;^A~ZpIRy+svi9vm>Es1?)Q2tq#Q#v)<1Jxl+(!6V5_RnQm4!_qO9z1 z15#{CWcI~V#ih9Q0DK1}qO+KGg2f3Q7nIw-AyD`$4V55@hAr6p!+kVLJ!1Flo6`UC z_@&EKci|n$b|%FwhE&g?-@PW+*mo4tIqMzYZdu$F I5Bp8< zVwz`Vim;`)g$Z9;o&n4kBR|p1; !?S{+(EAGNIFa!_}WW+GP^0k!w&AL9FTi<88GSbY+KJCp3}y0 zgnYX+0|SJg6eLa0xZOB&Z@^i<`;Cgmb-GIl{@=ZPh`QR7mA_*vN?#!S+Dteg_)OtK zkwwiyIwE+=+?Z5(+#pO6FpomcmcJ@^hc}%3H{NvVf%I(rd3LuNS%;ib(m-FN;=aot zUx60DsH$!H^MJrq)_ykOBjoGisLFD99~mgQ`Lu0$L@C$$@@qw|t;aG~S92>`78`Y7 z{qN({c??)XF#gqMBJ{My%AV5En!A|W`{!)~YColBPnLx>&U(0G${ld6ab`x`%4|~Z z?`1zRu}eK1>hZK~{KZ-_*Wk0Tw3rbP1WF2=KTmS{b`J7iSkP{i;@->ZUFF#iGIA3O z^@_?DuL@}dJ#N+Px*jxude*|!(lIA>05U!?yk5fuI84B=ip#iuI?IuqS+JDBFD$IJ zcJO+ycu55Ie2UKU2c5{w_rHIvI}CFATQki#IjR60cQkn$@<`*D*Ymb()w?lvj=zM& zuNs3S%%1x7?sFba3_uTG!YiiUIwPw{qE|0N(xd>Vsz6=q@BID4H?aQ`PjXyLfbN-z zH%UUH5^=>PWgo=nGBddl#uY`1a4><;d!ox!2;|PYo(UNqDQzo;4gnsiB4t9dkPPbm z@2lAJPG41dHRrWAen=HQ{}L$zEA^mmxv7LR 2 z>yYUE>3tN+nnk}bMGQqUaa!kHgXyhgY0ppd*=)C|7}1KfXCuDs7HNQRjXW?|Y}Gb2 z1RD$5tFEf97V}$Q(l4<29C+KlR_>Qm!?gntYx4xxF(50FfE<^Hd1K}BV6%tYx@`(& z{f0J%etHA4__m0N#n`BLNm=(sEx~>zcwwE~M0t`%QGfcWkx4SQI!+~vnlGmaiueL? z+cCuq-2>C|3-?yNWh2R-^>3|ThP<@2Sqk8UyqtB$%nZM{o#$p{rmQ_{rP#Vtkc%~E zhhe3?)?-@U#OX6EpHEYbQ@P|}A99M_cBdpo#vwFFJ)y#Ybov( r@jJ( zLLtqZjGOO@m}E_VG3Qpsp%SMT7Z<_s=I_4vj!BlurS-d5VUn_{c@M5RDGaa7`@9cy z1q>|&Qs?H=4~8@TA!)ha(dZh&<=jsnq4*r`Lh~3I*8(6eIIzB8agypTaLdzT&Kd}I zn<{I+Z0ra^7FB{D9kQ0*r-i@vObmZP=ov=_`1?2v*&`F7whknH*Rd%TBL{bG2;?4o z90;cMeGO0z&?=W-lU{vE?t23G7vndXS=^9ubt|YR<(a(J=Pt^=Cib=f`ue9EA;#~v zrbz8-J~B}aMB}<+oug7PZ&RZ|CGNb&Qfy5PoA~nmnUrR??SpBj%t$y@&8! 6R>Gfw0-9iSzioz0P7e(lR8-`+m;SEW4qn%P_|`(rM}J)l9DP1! ziE-54-aYBDc>aZ1FruR7hOkb~sWP~^lG8|kO>$LLRsNDlrKiIEKsk+=E;f}`*{YB7 z5Qy+}kW!9iGJ$V{c4>_E)SU%Xc{R>EJC-!QC0`l~w0c5hBUO_2Z0HA^F9qzPecC>q z#vXvAw9eo9Q}k6Q35vq#+sQ`~Ugl#jg!-d&IB-$$+iPK6G5d*$k_&N2w?F|tZ!5GX zYws|}-DlxE!I iJ%wP? z#MN?*29e%azJm!`n)H)iR$fbz&RcR)((Cki8>rK9lBj-S63sVIz`HSu@PL)gYY>o! z=nb6}-0i$V(S0($< -oDBNAMmsu$5@Nb>n5OA|p>=!k?6U>=&cQg^=Ndx&Gz1 zY<9^YQwD)_o-9f7d+F9BdS`PPk^$eJLhGv~NtK08MdueQq8})`Kug3r=N9OVA<$zJ z!(k&A$&sahUohF9i+ie-+&_I#%O+vS2X7qzaWbIgg}47K@qa4x`#&oG{@DS2!G|t> zN1)7R>w-L5B$wjDll`dF6uREPzDewlKqjFLhAl3NSQw1&5ZHco2478fAdYU8e&f85 zZe=Bh0(KuMyx$!pg3ujHUgU`~4V=+)*sQl(xP*rR6|%_BeWK=`33Q;VSTq%v@?Ji# z7=;q}xbN-iGAiyQ5oS}gy*IB=7>S4q<&PG( zZk4?s=Sgo1$#>hbCw??b%ArpHxZ&sDt`mi3L@jI58bq*e9xnThyk+9vkwMn6FE*;l z1N{8Rc6*PGnE5ON#_{$%rX};Ds97f}bvI^tX-HL7lxc3E-N{5xaQ{q>4xp~A$XGk# zSi~ISoMh qt$Ha!!^ zN(x7A{^1t91>;JRfL)5Wh&5{pUl`1SbJ>77T{wR^vs11b?VX+_O$FpCWlMZ!{c|8? zR^5P^i9UpvN@Th@GXOud)9!?xby6ysC2`)6*>n`TDESC@Db>i^B1yRJ`lFP=J^^3b z=9}%iUO4pEAT8r;4R%L^rtnb=B0$>5$476_%##@WddJ^bTVEBkGQ#x808Dq8iyzgq zT`Gbq2dUGM96`vEfBJ+CCw 2dWN#lt*81Z{0o;~ z-1_uDVM3?VOI6-i01-ku*Xh=@j4dwMO$oGr#bvXu$=RthQ4jrg;U~Sn(}2@)hT9Z6 zk3#8ouS9mg1h ~(N9XSa2q*%8hwuWv8f@R4jU?oac4D~ZahjTas1%i6U{-9$3<45~hWib!_|Sub zVpe52|9f`3yRU?Q#iN8r*%xKkfyDK>QBJgPZ5%D(@+>G;T>LnB+hf7GQp$6!-+?&P z($)rV-31{4^E6?~T~dhnr avnPogYy%MvC5669NH%|E|14&DxtMkV2JR$U-G68Fl8rfKy%mMn4 zyEAkNPuq;b+_b6zV@zvwIk(LI)aU_mg;#Hv$XM-hO-Z(rE}&ooG_yR5oSN$MCfkmj z)I0q4^gien4*+mcbT@BWecX3VbyF2De)#~n*_yQe3FGZ$@0?5qs}Lheya<$VG4$Jh zXTUZlo_2if?4=wABMf`~F;Y*H{{a$&|BqblpUQdQ% yc3Bq{;5(EfF&+&1^eAW$SH>MmXNw_VmP=-KfX%nEs!7B37sL$; z# f45LiaIc3Oc(@+>MhJ5nZ_wRqG3>AX6 zWV2L$d;HJEa_Z?(Cf#eHYA~6=bHT~wU*{fk%Sb8L`txf6Cn^p5v(^s5J?2;glo9Ip z?;mJSD=% p4w}Yl9q!zASf(Ec}NRTtb89 z?pwk4FZ)sns9d5N3vkmzyEWf`CxL X*PefuqHg2M=o&yT zut_o5NfO#$iI;cV=bd*Af4-ncgCC-T@)Sj|F Q zc2B+|(?Pr%PZXC8w%{T_B*r93Q0L*H*tLI8-ZD8j$+G!N_)3*45hFX8s@PvTvxocd z?5kLsoUn}~N`1D(3cAp}-@JrR=qxrhdFw$&IF-_)1N-K^zgs4>t$r(5zG`+sb$_g# z*%kJ`{&)#%j{iP)@h`{reH{sYf@58aB}IBH*SzxI%7Kf~+rRC)sdB-j4t1ztR0|*r zu2MM40-7`c5)?8sGh>$z)c(kdb<+d!4A_1@7G@v-E+N-kiRrHQaAKl1dV&c>2UEwR zQl0fy_8WN%Dl{fBfeN}?Od6kCbe}y0yX&sA2n388Dn8mX%?U$-B#`iI_bozXwEyPI zSWAxF!hk=ZLqIvq_SycTjq6WrJIfW_rrY{*jqj5N>`$t?`apK)aJfv96#x?j42oi< zO=~B$>^nyP4S#Xh%(3mW2_R5|V4s1dOC!4awE2J*C7<_YwDVA~+A+|7r~4 amJ4g&e~4j?a^ zTrn_e -6T^#$WOLTBX|IsX(VLM= C`SVVVC?Tfj;KgiGtW4rT=`yw-B3kn~=v7%a#HTT_$ zF@V9X_a}NdLABmz_8mE))GEXmVVVxsW@%__;48l}w8}Y!R%=;2Si`>G1uR~*5>1jM ze|WxpybDO*!eB#34XyC4GT@0}GXo6_1Yl;TTmJ#2kA=Zc4SlTb{ye@6C6kqGN6ciu zikJM;(}$iByeNnc-#WmIwOIcwxH9nN0Kwjn^t4Z=cAQVK+PbrUU;$Vx&a=ZNh1I?| z3<-qY?ds5in)HAqq5bIM<=wV F2XMt&e*KTVwE6?1($rm~k~rmER3g^^ zB2bRy?gpnvJ6VnKg9m*8EaRVj_4t390 iL8^0oCD$&8xux~Rvv-h(oaN$_L$>`E7qAp<9 zZ^!ckq9o(%(Q7R7%RkQB-P-$q&=oHC|Ew!Hyl>r@&&YiRCDrup&KF?E_r2ABb+AfD z J2r$1Lsk&2imRVJ1RTIEQ_|+ 2W(Fo$2*?>&C~K~qibLdNw+U-~USsI)!L z4sd2Gc1}F0NIIi6L>}TKR2W0? ``F?b7%DXsmLGx+yJbl>IM>ibBD$QLdaG=hEO#(IOVoZBk4C~>H1+(F1i zwVy!bPEIO6ysrzX%YR}dQ9H#+!g9mJ36tuHMIMU+Md@7^*vxG2x^4cBSe>4Heu`ZV zs%Hec`sy3=mVC6v)r^DIU*k{is <4oHact{`t1T+&_Z0t^tZ4@yMz&jjbBdTIN8IH zuNUlQEjt$6c9##{L?nUdS0E6veOfWiavzTOs(~jBATJY+6Tp#w-7yb6ioMsq&$8#n z?>}<=|9;ZlI4)I^w^v} oKK MMMdqEHRd(H}JLjQEw*`;x zif>MC1p01DI$6h9q|k^T3e~MU@nXgCe4!Rif$K#G^A!4-1)qABCHF>F`Xy#>xuC(B zPmMJ$VKqxyU4EHQ+Ja%$l}jM#M%(s34I1{vdG~jH#Pmc6=SAOYtB&hAn{*SGRLRds zXtxx_nFN{36)% dE89k#)MCgjoxl_)68 z0h^^0O5?-2fKPHB|6o738ftn|-uw55VLwtp#l|Sr_4oKWW&DAFwpfGdx>vmU{B)LF z#|fD)0+sO;1g|mCh!p(gq#7BWT)4I6P;CYFaNr~8i%Gz={`AQxlv4`7tR5*SXy5kp zXQ{ a?;&w@T<3wosmw7xi+%Q|r=sI_N+l{La*tcKQcX&4+GHwL2`E1Cbc zH0 =pl|WuFO$@2UTH7W6!k>m{Cs)<4Q2wRUAdmHVFiAL!=Rd!FnV@_OVV}P z8tFSGW(0+{qH$HV|C$g+0&%h1v3+N!bZMllcEg`kLyJ!xiyiSA#w>~1f!>^j;dhd} zgv#tkwCPaEa5QvZ*v8-eBbzZJZgO+2wcZ VLgYSd6I-rY}dHT^7M&YZ6ohm0ywsNGMV4m^Y>Geuc znXJE#29Q?XZ2c`%xr(OB%d2edxUb|HJMShGz{>6t+S{{lgr=|L1a7Gb dS897lO*N+r{`?Oiv9M? z2dnoA)2&q7XLGaYs-t&7GKn-$BV@KYNmJ;k*_z7OnvI~Q)7*~MM0K!lYNQ0N #p&WlErVa13JrHJOyK6f)2;2&nyw5gaD|K;KD%EdC+Gt>nTH#E@$ow7~ z>xdZ=QID*mv`dp)iR6q}x(w%uyGqm&j_$>Ld%RjJuM#OkTPjwLlrMKS_ap@gGVP30 zD_keKtNf=Ljko$lW_W8iw>k;(%QbYt$GTh(A#+`nA<-HLsP<)XnzFEQr7(ln*cYy9 z$E_HKILnga3HpsuE=nei?QFM&n2LxcR#UMk<8pWFrC@n~JtumkWev{+3K%|;s; z-6e7h%yR|^V8uc;DGx)(AZpdE(u7NFVZ#A9hl=flORM7wevw=ur#Rb3yhbdQr9l(H zj8*59wS(J3C~t$v=~q;Fk*{ N9AebXaY}xY(8D-%?j1PA$ea`jY zwKDB<+SosD2>F-0Qt-pJ6&cS8HIRe0nH8*FR21c05Dd*fLHBR8+3i Nnc97edFkY7rGW9_hT?o2Rga7j}7-zZ41bS|Y=j_?YnFrqTo7vV8 z5tSLH+2>l@9CNCuC8!&r%!(UUU5mM}bzqw7?#v6?k%9+TGgIdg*HOGF@~P{_8p~f< z6{)F3%ycX8l_UA!#P$KNn{d{POZiMo>SkJR+-yRYel+?>yD=Tvn6MxcSxE0Jmg&O@ z!xpW(M|o3ij55{Yf28;hwT6s(HdUHs^f8PO3B-!?3iqq2;XlHCuBL&TyUD$sOm^LT ziC#7(Pk77izQMI(IaULI3ri1HFa1K7HOu}5NEk?uHL{O?C~U51M1T|8YPwGCCVsD3 zJ!c!Tm{dZnUaDTk7T$=|hpTnPKl8&{M8;3Z64v*-pP0p`S5?~kU&)LcIps_6vGZ5@ ziEe$h*wcDjQT#R2omH5{pwnjDd~&}jb3OZ-22+5VC|$Ni#c|SV2>X!9Xj=6w?ajcE z2iu10NldsUY?j}^klGilkdvZxavWlG$S-;06>Wt^ct9U#l-2S>c+5Fo=s{RTTc81^ zHns}qzZ^og_3fTfuBFub?6rNw1}usaRokVn%El)rE5rL#1eA?RwPTC 3 e{-yRMK0f}k zyvsEUI1Rh*x>GV1puMp(T|Wu>d8+-(!QUlgS@P3#%buT<#h?nf-e7{Vq|OV=Y-#+S z=G*6LN9p83U3`Kh4aNf-w4DJru%72kqs`E+EK7-jPI!jaLdeUEwiZ^${o~y=KEi^z ziD0){ir#7LkaYJ@HMz)dajTAP{S|WS#Bv;c`ijLUK k zM+=yFLv!_Or^} Uk_k!@R0ffWGe=*f-i`+A6n6XOeivdd;$8Co5EOAxIq{lrN8qQ5vgnx{D?g)IWtz1h{sh84fVRzXD$t=20j zxl-l*J(KqB`E$f(3Yp-x+1#~n!nF47HQsO|$tz$r) 8%G({@iFC~B{1 zI&<#y$b5K37mi3EeIJ?mq+#uC(IaM3F8fy++dF9K^!R!tpEMw%ArNInjfcnwPhbBp DRbyM& literal 0 HcmV?d00001