From d20c4dcae913e9dee52d33125c74bdad77fbd680 Mon Sep 17 00:00:00 2001 From: Ziv <16467659+ziv1234@users.noreply.github.com> Date: Tue, 11 Feb 2020 13:02:39 +0200 Subject: [PATCH] Dynalite Integration Documentation (#10866) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * stub * initial stuff * initial work * starting work * initil work for the Dynalite component * fixes some place where it still says "hue" instead of "dynalite" * :pencil2: Tweak * updated the header per klaasnicolaas instructions * :pencil2: Tweak * :pencil2: Tweaks * ⬆️ Bump ha_version Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/dynalite.markdown | 140 ++++++++++++++++++++ source/images/supported_brands/dynalite.png | Bin 0 -> 26362 bytes 2 files changed, 140 insertions(+) create mode 100755 source/_integrations/dynalite.markdown create mode 100755 source/images/supported_brands/dynalite.png diff --git a/source/_integrations/dynalite.markdown b/source/_integrations/dynalite.markdown new file mode 100755 index 00000000000..456245f3eea --- /dev/null +++ b/source/_integrations/dynalite.markdown @@ -0,0 +1,140 @@ +--- +title: "Philips Dynalite" +description: "Instructions on setting up Philips Dynalite within Home Assistant." +logo: dynalite.png +ha_category: + - Hub + - Light +ha_iot_class: Local Push +ha_release: 0.106 +--- + +Philips Dynalite support is integrated into Home Assistant as a hub that can drive the light platforms. + +There is currently support for the following device types within Home Assistant: + +- Lights + +A Philips Dynalite hub connects to the Dynet network, which is composed of areas, channels, and preset. + +A Dynalite area typically (although not necessarily) defines some physical area, such as a room. + +Each area can have one or more channels that correspond to the different devices they control. A channel can relate to a dimmable light, or other devices, such as a cover. + +Additionally, each area can have one or more presets that determine the behavior of all the channels, and sometimes trigger additional actions. Typically, preset 1 in an area means 'on', and preset '4' means off. Additional presets could be used for scenes and dimming. + +## Configuration + +Since Philips Dynalite has virtually no auto-discover capabilities, it needs to be configured via the `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +dynalite: + bridges: + - host: DEVICE_IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP address of the bridge (e.g., 192.168.1.10). + required: true + type: string +port: + description: Port number of the bridge. + required: false + type: integer + default: 12345 +name: + description: Name for the bridge. + required: false + type: string + default: dynalite +log_level: + description: Log level for the libraries. + required: false + type: string + default: info +autodiscover: + description: Enable auto-discover. As Dynalite does not support autodiscovery, this tracks event on your network, so if you turn on a light, it will be added to Home Assistant. + required: false + type: boolean + default: true +polltimer: + description: Polling interval for devices in transition. Value in seconds. When devices are in transition (e.g., a light fading), it will ask for a new state every X seconds until it is at the target level. + required: false + type: float + default: 1.0 +area: + description: Definition for the various Dynalite areas. + required: true + type: map + keys: + 'AREA_NUMBER': + description: The Dynalite area number, 1-255. + required: true + type: map + keys: + name: + description: Name of the area. + required: true + type: string + fade: + description: Fade time for the area, in seconds. + required: false + type: float + default: 2.0 + channel: + description: Map of the channels in this area. + required: false + type: map + keys: + 'CHANNEL_NUMBER': + description: The Dynalite channel number in the area, 1-255. + required: true + type: map + keys: + name: + description: Name of the channel. + required: false + type: string + default: \"AREA_NAME Channel CHANNEL_NUMBER\" + fade: + description: Fade time for the channel, in seconds. + required: false + type: float + default: 2.0 +{% endconfiguration %} + +## Examples + +```yaml +# Example configuration.yaml entry specifying optional parameters +dynalite: + bridges: + - host: DEVICE_IP_ADDRESS + port: 12345 + autodiscover: true + polltimer: 1 + areacreate: auto + log_level: debug + area: + '2': + name: Living Room + channel: + '2': + name: Entrance Spot + fade: 10.0 + '3': + name: Dining Table +``` + +## Initial configuration and discovery + +Maybe the most difficult thing about a Dynalite system is finding out the areas and channel mapping. If you have them or have access to the Dynalite software and your configuration files, this could be easy, +but in the likely case that your system was installed by an integrator, you will have to discover them on your own. + +This is where the `autodiscover` option comes handy. If it is on, the component will track the Dynet network and every time a device is used, it will be added to Home Assistant. It will initially show as "Area 123 Channel 7", but you can then add it to your `configuration.yaml` with the correct configuration. + +For example, you would go to your kitchen light and turn it on. Now you log into Home Assistant and see what the channel was. If there was more than one discovered (e.g., someone turned off the living room lights), you can try one, turn it on and off in Home Assistant and see which light it affects. + +The initial process can be a bit time consuming and tedious, but it only has to be done once. Once you are done configuring, it is better to set `autodiscover` to `false`, since there are many "fake" channels and areas that the system uses for internal communication and you do not want to have visible. diff --git a/source/images/supported_brands/dynalite.png b/source/images/supported_brands/dynalite.png new file mode 100755 index 0000000000000000000000000000000000000000..7751c6b564a93826be2478bc1ffcb83965daae76 GIT binary patch literal 26362 zcmV)sK$yRYP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DW{*ikK~#8N?R^J) z7e)F$sPqmZmb2XHsn_%@cj}#|(mUxrAv94GELgB$7dtA5B1KdXr1#z-3B9H_s&qmU zLdv)8zW?WWclS#I0l{+T@AJ`GazG zzrE75XQnjlzEkSOZkKx9Go@DS4!M3{mOS*qVR?0~$c|!>JX6Gld&Lm(BIM!E8{h4c z$WM<-&`3i%eBqI>QF-#t>;qDOWIm+PKS-BXA~JY(nRFa}LOP9fOP5h10mEJL>a=|E zFi+DE14+03;FZqr?UjxrMY?@yNZ@CA();sF$-wh{NajVzD0IuiBeNy!ixU#?r73}* z8xsFTzI?SJk3|!oX>ODJlWGs>j>TL&cYOOfC&+!FN3VHq%Pw`AjmN|AhEdF<6xn(l*YRrLQi6@n3le4i!_1ExrW`0dg#K22(cZ z1X-SXN-k?TR_aC|zlc@RFmRUqt;aM;+zT)wKeF-mqeXICk4aLe>lCRUu~zB^uaql- zrplmE>#YU>WcrM4d{-Ra#q)1h9hVwyzLQ$PtEExIN@)@}Q|^6iuIxNv<;nY!a`WWA z-qUeyiPVcumYUr&q;^k$E1Go*2JhBS&wk@~U8QY$J!>UQ`>27b2O!7Kpk z{X#!dIr5pFr+Cd*1>!1l=m;3$-5GnNQRp109S7;#BTX9hNS7v&TL2n>D{z@K3{R2< zahXylCR3Wk?v!Rx>*ey0x7ORw{^w|Rtw|REHGy{+t#%3X8NQ=mo67|Mvf#4Lk z*F0|S-(LrZa-h_ZE^lT@gYZOY1Zm$WW`{J3+$0^JPqY{q0>}#*L* zV3RiH$t4}8NkhDAllYy|1o__g=pxC$%P?Oz!n)mga#!z}(ja7oH0Y5fwYsMRz&oW; zINmQ{i8KyaA&tV;0npnaRkz9IksGB&c!Jy*yyN<(FJ=%J?J6CX0gqvh+h$E8}E$x^>pHr^uz8pA62&yy=8 z1GWY8r6f++b3*QVbOEI0M$}0*G!cLu?-u&eZux4f$V*d-<({XKq-M9dXk>Ou)9%^O zT+lEDZf*9w0O7FZI6a1I!o$C=O24lPW#FVji5am^ z{`t%rY2NW8i5NUx_OR6hm3qyyBr()!mBb_f_(MCoivEA50sv;{jH8f7%M}EaxXq$A z$n~K!Wj7e*m>rVA{a1JU8ce-L8uiJNdawQE5%U8Gwize|ICVj<01(J%G3&)XD~s+KnQ%NvFY^RZ^-X0-Bblmq?vX z^P%SN0?@OhMa*WoHEyn~gYikAG3-1FN!)88w1rL3BKAogNX#qZmde0!n-s*ffo-8h zRX!=ZOm1A9Wk~f7Q}GU&(iovp2tmADb^v%RC(E#6Z-LzY=whiEoGA6X?}oOJBG<*N zl9wiAYNJJ2y9;F;Jnsj&wEc8Q)>Ns7GB$`xl3U~F%4c)aB@L=V?1=qRyW?DFD5(H? zuGB{T#C)I~# zwLfDO{r^m4q>rW_l3HEn0RTDD7!sugr115@-wFhts-(m~KEUwt;(VzcFk5OtrKZ~5 zG$uiAiX1N)xUL|6&Q`r+cSFKLRSjJ#p>J)Fqqy$ai22~lY^c+n-r6O#0~66`WJsOZ zbZH#3T{;f7RbT{yX(=Re^|mu1`E#wtC3=JWF>a26n0Ybn4uJTM-V3CD_!gK0d!;tj z`0mT)>94kExuF4UG*6m0n;tV0r++|@?~?N5(oVC`Xh9o@f_4GP_^&6I$xcXO$DUmc z5Z~E zWTYAzzC*5y+a!Mo94nc)o&(Nn^9$mqwEl8z?kc4$(Q>78q)^;ziQHD0~&&B7Zl}L?Fv!y=DRUayML3BUeI0cy{y_OQM_RcKcP8_Ls;%=BJ5NYqwD9#qWh34QU*{ zTK@6)V%ZK<5>yPUcb|~kU~AV2TMwHU(i9+W5xGoW{3cnS?MUq8JVSa6+at9CR?B6O z#&vsam-->|CHnp4g2zbj(fg!s$LZ223br#E$oeo>YKAP6e>}HIre%xOz~NmTyqc&> z?a2q>@I9!{k3emnXcxbVs_1MYxQ0yIC3Qj;N)6b4^?JZQjaehtMT}Q9nII+_PJzi5 zE0TKPl3D1mk=*#L3J7gkA=$hA^0CROUkZi5}TR{r{Uf;J0wgh|CBw#J0P!QUr7l$MnoxV|qHNd3u9fFTZ?~nKX?JSzm!KAzm~=v_ zwI+!7t4&-lc$xg`spYa0MyvzS#69_PH`M9+VH=@&?1HMCE?34bmlr3b=yO>wROeHU zc_rq9OlTFWw6Uojmn?Mx=SdVmOi4X*EmZ8biiF4XA;96F&S4*fP4)ShA}%7n0#hE*y4?%H%t4M6a12xjJ$*$TOH;AK)a=3Y%ZR+Np6Xs zCrJRYBMG-0E0VwVovuSPb)e4H1t_nMTOrSn+o?8ZDWJ>oTH2RvkIInmghYV2?L4X9 zV=ts*nluW7I{m~_Nd<_Rh6-%ro&veM?-HpSx)H$JC6~o*l`DEIl4r(muAm05&MlC8 z9$y9Nis$RQq(WjZ!1Fh%-Mjs$OXA+yBA2zBFAbqh)Pd$vt2^okb<{W>^%I>0$-P(_ zcbh7)L$^vY3k@pqnje_rj^MFrxmnO}6u*Z9wG>+RQ4IoXMK;^6h^|T2+`vr^#tIEqgD%S@?yZ%`0eRt(9t4^OY;e}^E0WOH zmdll0#>(Yg7f3VYT|YWQYR6|n#ZK3{t=DOp^#6FB-ftPorzLR}RZ*ox)$rZPyQNO> zVyOe&oUQU)(5a)|>07`@fSt2uGTmR$P1JW=e6(G)m>J4cKNqlY)pH`>K zOJW7_5rDY+Vrjr$WU8}h3~qq!`ts-$1rBXulF#Sa%J)4~BL7&JEK;o%8k`x!*+>K3CP?A4K#aII5UP5otEgHvcD{Txd!N(`Ss?X#Q-bc1I^mg6`!c0@e6}=< zPS(%_jM^wHQJM$LlWRJDDWeu0Q=8KT#w64KpdDMVAwyOIOzeftQLqQUwLw*KN^3S4 zv=eh6n%cjn6bO08o=MQXDTEy%z=@WS)YcVN8xRWr)}zjf2-plfXrCdEjihGGvB4^vpVWfA%RI z7Af?Ylu*# z3EHt#H;zM0=K(Pr6R4_9q7vkmav&x^w;ltC`_7Zv5s6Zp6E`5$u8vwJ&y37apwNEh zF9RD8nh)dG6-W)Jy|tjC*YB|tD)TbAXTXv(K%5Voc%jq_MHzeNN)3R$b}Y1z=;hE% zW=Z{SQz40G$aQh^CGPWmGBwpyJDJaL0lXf(#o;1Db|3X>+zGr-0Rrox6u)c$*>U*x z>b-Jlw*{#8ooEoy2!*eMR4= zhv)?Y%~u)C@hGB1-5%>Bode=TfS3TLB;F1X-_du0 z)Qn7$8ojdRvhLdfh$IPqf1gZA7a0rla$J(gH*0;eEV)F%^L4@rso8#(zH3AJLx-)D z`v9C&v^IP%0*6CPcRey+>H@@dp-R_48Joo?%2VIvY9q!#&^m$d$ewSK$77DiPs`OA z$K}fQpGw;oH_E3g+>(f!_Tc3>bjQxXS-VBK*H&$C}cRAnbU690W-bj}kko24o zK$WynwB>dQVEShOIuEnCf#8+#HC2%(ADzq$CgVv3|79M1>zHO z4?x^7oE>Jn<+7L*Y0-V9JU?Nl=3%)+vbjN74A*3jNABk_q~&+wEqjQ^3)1rCmOcqm zA9i%Zz=hJJ%T&20V50mX?0dN`WU@34gc-mNz6dlBXe6$nir#6y3>>x5(nb(y1aQcW zggRGA>@&@$d2X0ymG5*FRjWpzzBBU})aE&A`_fOiS@c%9uG=`3yksOtK2eJD2zDCr zbD3%SysPlbxcvZeyJulTLaNk>ru*Y=X@tfg_^oxSPJ_u6{T$*^5WkuZb$Ttpy8||6 zrZfoKA>CftL3TY2;%p1VwPLc7E?2IM*e18fE|86AdDwaoOga^@=S*n`o4Ph^=Q{LX zhU9JpJGNmI?9AAm(j2Px?J-Mb;+j%btG`))LN0ARAJ5&Vy~>RMvQ|&5lnj8l1O;GG z*YC-b`})q2M!|TWsNGU0CQF*dtdN1@xBEftfC~-XWZa}67L)zq9MTd=+Uu59gHohk z*A;Sk_Y~OBo6$(FlcsSSq-o?vF7TQW~co zEtG%6j+O@PzLACj^Q1ul?A0!_q*1p;(lmInGzgk4O*(un|B0O>>1dUx_I|r&zg%|D zXL#mPX&N|FE^j|p?vMReGJqaS`iX4JJtY5(8X?WwPm*SVE2LiMxpHO5H}d>fEA`o4 z6AhY=DOJlT2jUXEs$1(V3wn0{Pay4Ej+MsU=1BeE`LMC)p>CE*)38K@1Zffi6Qt7= zxjAC044t=I&6bmv1`SDTRG7ttZ}1AF@wfJA6;+W%WZLY5URks`Pv&nem3i9?S+vb1 zOEw$=vzi_|85qc{MaHtF@TEKkQ~A~DQp1#_SH}cdJ`w@9@dAZKfn-S)dS~xo3|^V`e^W(@~kRtyGro5Lvdx zkmXy8KXnX}U+^S2dCLQ0Vo;i6+}A1(FB8W_oQH+yBq7TB-bd@^TCfn**nqx_wL zBoCQ}Z@pbTXAyuMiZt4(l?_#7N@AJ3H+8oR_-wPp4M~vLAxYBzv+eT!^nJ2C+ojT% z4GjILIlfFcQLD5neJczxq25)UMtqezT}803z>!|?3nd2u4NX^ndG0YR5aX~W0s-ve zxntW>LNguRGRbb54+23z>C3=lmk+6YNI?*r9x$j^!Q!MLSe?!+uQPuwFXExmYlj%`DZ+a(Zz{Yfx328r@s#Mw9yAR2eCErvJZ7g9 z^Wft-d#KbfG;dy~-#C9sxHiiyG5@J2Ow0!;;1pD|_?+?t`!$@`m_GqZ(}L=V(=o>W z0+y46a*nZYt7iJlN9}0j>pcU+9tAN8&#YP$;Qx2>0~U;>__2?v&N5zuX}ay?N)Cw2 zOJXN2SKx8`O!BG%-=G%G^`dNM_j$ZWVbZD^u0X~EoqMfyxDfE`^&0g0R3HNgIVVlC znI0p!O*5P2fV8`XaRjcCVWw&UK{&h1>os#rOU>(f$>%fI<9Rw2(Rm)Ojh~2o}49{S%c5}mP9_2Z&>2o}0+9~r?3!Wp7WTd%@$7*}~yj#su^IAPM z%#DDJE|lkjD$l~}yCEGH?O|t~v}6n(srS0j8rTa4X<7o<3tQS}Sn?iueu($!jdz~Ryd63X zVy89HGFO4PiYx*@Ttc=}DU4q-mB4}%cXquop=>bz~y~cunIIcd0wx?epB?H=b>q*ASQzX$O>W-qM9(CY|CpdkDKP8s?!QSukT=fzBGc_Txgnk z4K*5ev;G*qUHH-aExAQNp=_qxZxf3FzYkxx^?KW&JgSl-Q(F@A9kr75%;WRTf^DrfF{I#prgaEu12qwH zX0QgKRKr2zXw?A0YalQ6>0bQaT8i>fLnxRcle)?-75E`qhA*L#-NDfxP z@Z`Me$|)LQ1*o+Z?BVi+gccaVhq&JlWJp-QO-u+dsN!mRkMlk-s;bi@0QInDR*uT4 z!hR52)*~dN>CLf|RWn_dO$-$`x!6{xUHU>uX&O82WPF}VVl*yWtaFbILhm_ym&+5u z&GZg92}}~6p&&;7U3m^rSLoP63fm^O(&M^g+s0~yT~@>o!#f1&i9W&tHtOC#!~`Jg zI5C<8)`DKIa`vbqB@3^XB*qb0Lj%C&wUa1;@th&1GM>vp8^Bg_i%5SIZO1ia>}>NE-0@6y1zz8^qp9K}Sre7$`i_VdUC&E zerHEt5TOie6I%s#%4Jk73Q$F-iL7xUAhsBY()3IaZ>a%BQ>hJRZJ_Z;M`&08COGVS z4ZkE-5Yw-T|18O7gNQ*vM4(Xm8o5jl0O#>uk^^E~%e14EOw;`r#_PQVFkcLG7KmwE z>!U2&|3X2`6y(i=3&A-YfuA++M0L%i7b8Iv8 z83Byt@7$`491yF_GK~T|n(_D+)^`8Jk`wHFhuNsTkT8#SHjxmP1VcsCsNq2 ztLSX9RMNA73}&s=Cbq!kQ{U+`sRD?N(;y}x@^Ub@-iLH{#}=Q5{EX8!@o5m7c#d%z z#K4IIVuxI&OKoBYoPH3S7KoAF9%8aOwn)fx6XQq@hyki3JL)XLy{)VpSugl8e6viC z<*|kQr{Vg2dTbh#5dR-NHq7zJvn7u$a9TiQs0e0b1k!cW6Ris?&1n!@&-7NZvPTtF zk)ObbCV#;zmw>InSU#U#C`Y(f&MtPOr%_^Gs}EJ2k!lZHjR3Fv^0RH=6JoSZk?t6n z-tV%BG>35B5M|JDViGP~hdca3RFx6HYpK&VlLH9pjCa&&i1z&ro&qW^7 z0wK$51pNMP|Kw8^( z+FR8-T}9_6@W^Fg9<`Hkd=Vg~CG1fU;>2>BL?9F_cso+aca&)y0?>Yk_T;2}T7gWn z?Dy6^hDu@w#Ezsw{Evb79>ndoPb(#)QP;`S0A{ER#HZD1ytk^;OvSWLdGH>V+ofNf z)-s+K#FY{1zn|XBDzmDMQvMA*!B)XF-(SpQ3weEPxG{{0P@W&4VX(EHGU03d2N;0um1Wy zw$3D<>5DQ<98q$6Lr(nU(=`QQ63Ez znGZwzc$r7)J8#FMF^n_3=G%JgGo!p-_j`K5X{3B*RUrN^5V2%^U%Lf|V6`v(vV@H5 z1B_1ZbVCnFFMx2~)MtBoA>HLjN4Lv*{M7_i^s@*b`B{EhG!pOgoI6GshWWW3d(EK; zw)$;AdXt>Sh&|uF7kEr9LVtbI(-hZhdIAFf#2Rj6q|f7f1otV3Ef-YY?+W&~%<&$N zC9&~6=OR32A1_3Bn8#K0^XR_~VpXU4YsWQqyS?Z1^a7Auc)i{#ApZh{dVCvUG>;9# z0Ei6*u|treuk-7Z@OcK?(MklrUZAg!P8Ib)T`$A0HMdG3j+VjXHNTWLD+MUp?)mus zkJ`tJ-EMc4w7v*3V4j`^Y-K^|*8y=A{qG3ieG8!dsI08)Ve1u89Ec zyd-@k^acJHlqpoGn2? zA=0BqFX_~&<7sCN$79RuJz_^y(N7>po%TU;!j6Sa%h_KdN$Xcj-+sL%Dmp^?KR!Uh z!XjxK+cvb~5$g0|sMBfU%^NI5>Fwl1N-HTlfT*(NNKuM3rv})MfrNK`!TWrs=Mn4N zn1S#7lwJhkd@jCe1b(L=Uen-r34q*N6Z}RAnn*g|s}ivM!A_!tbbGDnis|sqSJ_E^ z65;!uD&O#)4i%pRs$t*q%M$^NkL4dv#<|}nUbSjf<3)>>NXL$yB|JP*+O%oIX1^|g zTWP0Q75y{N*tZILi*b%i(SZ-7 zaK~-p&1fQ}srBX9w!cX6p~1Me9}HTkAjbC^p|^mcpjhjX7n0cUddEY}j>YGm2p&*L z>=4cuBmAb-X#kTu&+=^$&H_yZ5R;Ie3pj$9hWGrEAa?RBUk)cI{dypF==kyD4e+u3 z9a?y(u2wm1+6)D8L`0OdYSpR&h;e)+j(>9RbQPT@uVD`Hdd)9+jCy@(XL5@4=-EdC z1H+{6!;eD}$ND8Pz=^;4;&pA4lY0k9QOZ?fWLzqeRYQui8_MBqdZx}sIOvzeBz!9! zVp3MKuncK!_Ovf6K@u+jcvTYr*6C~zvu<2}v@cgmxQEMygMJwhlK^C9rYpxHzdCmG zf0s~z3cb?~m>o&nxpP;Eii)8m_N&uX^vjW9m~R`V`GL=8KBAl@^4!3IgC2is;PVm? z5H5XsKMs?oygE$~=Sf*fqMX>(LrT+{0l?M7%%~==+&XeJ`xZG>@CAU%#eE?seC{Z( z#~AH%o4s-RVMcbAJob2hG!Vhkp+iU6x|LJ6CEhB_{~ZvM0LpUe^pAs>1hD;}i9x>v zi2o{9)$d8q$KIt zt1o~SArJQ%ApQD1`6|=EZhni`P2JWlMM@4lC1pEXz%;%D;W8;pxmr%<1c;}2IeQ3Ewpg4Mo=;T7dt9E9APkbYpY(fV zfDK}=g4kL}cdwX5W2H2!tCa5io0RUjT~2K4AfjeCVe;b zg_oX_py195;u~+gk-p!PkWR;mNjU!1Y+~e_%I{>K{#VJc)#)DtFUm;Mk?ES+QNJi% z6o`?CW51Px7uRUtR+uE=5U#0BJZsh*zdGHzb!)YWk)OX~3omKSLh@By6rilE>;`0A zVFJa45G3&5k=GvN`+NNE!tagv-D_Vyiy)aF#Ptf(883uTwqSs9gME5lLjJmBE$*q{ zc8Rj;q5vqvSyGjR`<}x+6&A`PA^ugwS9%XV?u*PbA!!Xj+*1MqgQQQNzL3O^TOc+p zNo*~^OSO6rDu11LPfQkX-ghGIRcHw^z#n;FKo0_Wg=5G_YK<<*=Iz_%(I*B-*We%t zkBXG8zpy06`z_{k@a^tI9na%2>gsmHZ^C=Gx0C&*2xZevJ5c84cGRy*KS>fhgqv!k zz!g+!6kLaxP~kevWJjwcUbt}adDZDN33*+M50#JKrpW7pL5%c&L;4C0L3sjD?m_VT zPUBc-A)(A?t?Yqo5AYiDTg3bDyWPI@ixBdA1kd%)MRo}BR96Xhb=)8!&hniG;U51& zc{qL@VVr%c1SP1PI?dkc?h+W(RUUr04?x_{2C-p-n22;{OmW*802;s*c6!;vRCsnQ zKs-cGyq3)f3j1!#w4u+w{Hk;a2$tZm2?BG)Lsw}fU1>)tp^T*{*RKlZiw1FOsM$4^J5s|llc^(qpp;DWe%s{5FPtPLcZLhJVd7d?k>0E@gJrI`j7-fp$ z{b0r~5f_e7sZETssN)8nsq0QVgtF@zTe#o9C;&dDJ!E7}OtB`Xh$Nl^#D-yxK&UWb z0!%x`6!U4*<9StY1|eT{r-TjtnH6CTU4g>JPo6S#(95q&Kyb7~$M%pv|M|}q)M=D& zA>V<=KZo$XTTusH>{EV&ort>|`ETL(u%mxbLS4|?1@DV`)HyvcPpFajC%=?lYbX8L zggUl|m+WUDa8m^a>se+kJL#`Wc$QA?#|J#CbIP%a3F4TT*z=APqrlf7j|w1$O8t9$ zvbz&(vja%M;@7vCF>Bj;cVohc@vB7oJ`L&&2Kf;Is7eH8gm#%~nznxhFSA(U|t(tU|C=qBSh_Ad&6IJ>u*AKd}5#Q=$F z6ZZs&1E5Zy2C+k?VU9F?=JUv3Crj9TL!Rp4a(jonT%K1nodaU^nYI{t^A@Pn{RT+4 zfKZ8ujFEt@0l$bkje1zX{PA8Fq%x!Keo;vbP;vb>5Z{x59%~HN`Dq}R{La3`PbdqQ zsj4865m$!tHM398A`8TJc(>M-6xTuBpaIXW#k$4V0oaWk>E{bp;)#*?0p;ZNk z1kni)B%HpKmYONOdOjk7fuYj-;fEzCB&edtR=EifVy{!?bNhO_-NrDF$2S0G@S7S( zS4))^U@zM*dd{4=qhEgcWeE!ID(&01J?9V;j+fy0qCK{7kJ`kjqqaOpKHE`O9eIrJ zx|-MU{rv{kE)Iw~lI_<94Y% z)U#%-YCM1bLY2hjZQ`P$B6Ybuc<`WPWMoKgZZ3b%>exbl7bJ!8VgHJcszXeuV4Y8# zm6atqIXSXt&mP&md-p~}>GC{#b0|(0N*|Q}(J9`oD{V_tmRHx^FAp=oH|1?HCCKmBBb?Q`k z;e{8Vsl-T!4jpK6u%1w7og_X!US4_S6`476rj(ZQA!Gw1kF+va#1XXI(@`N6U*Zz9_S1&0;Y~58Ag~5TUW6Q@9d%<2E~533ZTW0fv22 zxd?+i+NSBsw|3%U8nzcK8uInwStawuI0Z$dYzZ=6gLtwmpT~u5 zSU&5SpbEazcm~>AL(tM$9~2DYm$s0im!+nrOYhzf1GF7=U_Uf8T*1hmX1Y<5$-~3L zB{(=(fz1yvXU?389a~hVJ9mZJ1xehdovPCSXK~-Yee2GhJ6G<#_gOFh*$(?uJt@+Y#d-CLI+A)=rv-i$r%T~zUci*jz5CI8NNqX|+ z$$zD#W#~I{NR02xcZ`mXt?k*4 zwmyeF_d&s-5`uigBcdb{&tYAK@mXOJ0AGl7>e5--b!aai4*f{hZP=jdwAb*y?lHU- zI=0HwkRk66e&*>x5*QEyoA?ob?=%Ta^*O%xdpySbzyIyG-^#!5zhD0KpZn#54?mPO zt5&H`G|E4m6_k*eAW;C*gAbwMMuXh7TaX0fTSr8peqv*!Yd`?rrL%NEeRuBMMILzI z0eSDe_hibHDdz++vYoYe-w*Qiz-OgxyADvzk!MJlzIPProWZFF#`C%4qj6t<%SQA8 zJDX~z*PCIw-M6_6Q3(zG^(HY)BF>UyYRjLNqHfduH@(l0R7;iR$zz|%#KNyph9uM@ahshBuIx# zhYtM&(xG=y5=}X1Nb|+B% z>NK9-91>I>dgvhq2(Lf$%=14P#12iHHtjFt#(ksUAQ0QO?O>1diZ0JHckVoubZl^5 zdP&W})n9z^#VupUj+6WEe?Z@tz-I%%_axBTfyvm&bn6zV*XTmZGPBpcZ{J5{;>5|i z7n4H(a15mG0!Yj*0K#1Sc0=4OXddmBELn>DI-=nV)jY_kU63ysv^}2Hrfqv=Y67AQ z>N+SmL_)*EBr-Zm0)hgiSD)VU=8(6vV+%lj13=bs;xlQ;kaq_^^UQNv2WNt~JmLM{ zpE7m2K94{d@%iV}s{9ihNTWuL8qvRhfBn|o0s<9O4$#=>umNI26c`i=fOnIY_@TU>YkN^gy47ADPHTE0FbxI$)jwC@bH&75I*I!1`dBc#Ub9t}E)QGwS`w zQSPcO|7O0X&sfJ33#I^ap?M=1J&DIwA3>S84Q@vZvw$;Zy_}&%X}C??M?aS1$w2__ z9a5UnLOdC@M6yvWIn{yhOT?Q|M@rI~OHs{z7J&oj*e&`{wPLzLlJd% zttMtxO%3XFlY%(*C8u8_h1>5y`NE)ek3o6ynkMBG)NVEmeh_;^E7+meUVH75C!Tmp z88jv)PMMm=adGkT{r6LZ(z&p(fa<}eU{I(J`}nZ{z-Lqqiin6%1|{RL!I(9Bt}-a4 zO53*WE7-&U&lSUl4O4LNIeZ4}F%G6T0SL~!#@4wA4ar}+ckh8pjL^pC%P&VGJMl~6 z)vMQP<72DJYY!YacJnvijAz+Y%Cao4zy79d*sw{C9m|7V##KzvP!|=;#*Le0*s#yE zK?{K7pp@n>-!&_X>X=M|M$jJ2x<(5FLPMp?^SE3tnJ{4jq|}4@u6!07nnxb(Co^Wv zl+5fbDK0I6-O1H1VIiF=k{!uAW$d_dXyD?Np~=JqOOKwtWzAX@HfVe+-vQ!cK>YpW zsrrowkhk9+;;8Qa<#`el6Gu>;9X@=xj2bmshP?BhbdT@p2i_~MzAmFikChQ$d?_Qp z{8EMv9ZHRid60C733al9jT+9!e==;i0@2Yn2vok)cN4#ttZc1E(p^W69Gja0etZ9e zj}+{DRy25$_fasUrDteDZXnToc4Lbn_G z;kDP^u-*kis1tx265UIpp(S=tg;X43B7k3g z^;KnLGAJ2E> z9Xo!Xn7Ga_iD`>2Sg=4Ie6Xd0@!4mehaE?oMf@Nnf%!Va((w0APo6xv{U@IcQz^}c zj#>#o!~4zxu|v=}A_4;g@Q%@1zfV8?j7*^VdV_;iJ^NjAx|AA{&Lh91u~@{ zCDpLupUd&Q{B!OAaj_uwOX3k{OJWilBb|x}3Y#)*#?Y4szp4!iK@|`jti982k8i%m zXKLrynM4rd-Y(#S@q7nI3Nw$5o43l5yu5qyjaGR)=7ZodHGom?+Og#`WCce>pC9z1 zs@+aw#)hO>v#W0P8OAE6cY5Xl-W#D}t0V@jZ}6J3k=DPd9Y<&+^2bVEN*gJHq;sXz z7BklZuL0ml79?TLW%#Wvp7a({ly)C%RjyLRxz@;|)EZ*KH?oXhk^1kv`_aM9!7wYq z<3UmJ5*QiE<-u55yrd==I4 z62xo(E`_920E21kp|bs6TkpR=w!udqeXLT3mHont?8O8?@!=?aK)QImL%nSn*DG!Cj()dGNa70P%nrTt&O04mdTFqNpXDAn@HyDtQ)kQ;U!5*TIXMP`dozj>9I8$nt+ZkQ>&oHKrMsX5;TTi1jJK0(+mKn zH2(baFDeCbd73_b*68P+e?cX81issix7?!R#GW5fE)9j2=6N9e?-PNviogz8see4Z7C_5S!p} zs+&9_vmb;eI#Ny~|3}I)eh2lHsxv`L>4!jdmQpyY4y1EqIRRDHD5V<9GM>;CPr&!c zlM5PAJ$JT-m-_F%`_Z8Q067fx5g7|J2{!SAEnCTwMN4JCfMK<~p0X3_A;KOisd@T!g! zQXLhpy|1hw0)SGcpx~q*oJdpC0Wex+1u%~3LaAvu6%ohUD?MPqYYi#Y_>uX+__6rW zkf$?FTujOBcDqhN4X+33tIxAQ9Lt`)3d2J`M)=r&MZTQua1}vGCTF8CeE4Tu5Pu_p zNDmzCot_Q#zFoVv3ScrqXlNLK(Lu+FQLffVyA}Cq4>wfRRg6EAa9#HpPD)y@QlI6f zJ(1N9~v4Wk3RaSy!hhav$k9xSXz%}I6sF-NE_h0{( z9}XPitv8!4BNeLkpB;6Yl8Q5+y=Eyu$JI(!%886XNZ8*2xOG&OC2$O?&ID2}K#gNx zS_3IexefO3>$oQw!G&N+c~B$6@S)%YFeST^jt@Wb$YV#t!GEFQA=(i+V#Ek>m$|s> zCz4nr0m6Nyxp#i?2U3^;RX*c#NaGp+DuV@DN?>2kB^o4`07v;)#vH2Gmq5L~R!;1s zm9`A!fIK~sT~P?2?Q^Gr(TMR^sCbVGt*p#3Z}HKfouNB z4^UYfv6F%wAN**P%5Ci4X{7f%d*Hl9S(#fqj|haw$SC>r(@zz|boM}=7c|VYb?eqY zEnBf%T0@hdnidaL`c!eLczvfO>E6A2@1!l+rd=C}?G80CC{X(J?JJ3Elc-DlT#H`)G#6=W6%Hw`z0|6NkW-!?AWo|DZ~!IAw%AQc2iIR z#HPt{Szm>FD#Qa`gd@=IJCGm_|qp4vL zh>=mTa?34_$Cl}MY-wwT@9gi`nlNF)RCbO9hlI+19(YL2tdbH}0Iwn4I(+9=06X`I z4z}aYlEfrryPEwlYz*1y*RfMK8T#>X$v?(fS>$K)pG@cT8oQ{aL6zQM4bLRV@w6V| z1~?_HiI`~sFu)?aAn{;}s!GcMP*3)Ms_K%!4EuQf zLg@MDpa0WygPxb55ZLi(3|@ajU4$u#uj2t!(hZ>BuU@lOS_8yXcNjv$LMu3Hz$Vkh z<6)nzwxcT8#9pr%0A^KZk1=D$bmA}*RcbbX@4d(20I9Gm;+#2i!l(kWGmYvrz^q%F zmZu8=G4k!tQ3aYRY-Brj=ptiAkE6Emvq8+>X{RT6#099+Q>V`u?MPzv*b1<0ViNda z0YZiO#CXP(FTVIfx^?TO!0XlfVSlF->hmn1LO5&&02ScpB4|--skMcMMFBJ+lAos_ z{v#UN1kG6FE~fJu-fbLbbsu>{+!^;mu(kjQ>H)x)i4Oqr0<M-LF;LRw2wFI=!x{(avAa%e9kR(aCWz6n_}IwsJPRO)=3r3$&#EE56vo$)Q#<~I zN29$oQv|B;2^~UldRwU$f?+BJXJv%a_!k8r0ie23_|ao|(y|o*0|3(|EAD32?LkT+d20ji-2V0KmkI4nv95YL}K zKkWPOzgI_wL4yX#qDAVAbU~6B`Rj&i_!c90zJLG00TU-qwukpR$*3>KviJNKlf<-% z&(*P2o*YR`jfVk~CT!XD-L)KuE2Be)4oyKrt(r({@Y%ctizF*+7aPkZ_@3vTAVET7 z?)TVoXztv(YblMXy|rr9TC%e;&``Vn=rc?OaT&h7VV12&Gl8>IDaww7gav@p0hn~! z!k0o_#p^@Lc_9JKT{U1Q*O%gLu$7PYMWwIDoy7pB1!B`Iz21Jb5&(S?Wm3;AujxBX zSlU$gsVAR3syI~#4^JKe?zN?{O*KrjYv5Oh6Ug?bE~7V!LI@s>NHhs zNMWiV zqhqlg+UWOKe@R-m{wIN$l$e;>Y8bz15F`J|DJdzc z{?d+Z+pfJNCIMR@YBhGU3ntVf-Ky>?C@5I=)KgDs9}cygZzp`Md4g_&reqBS8E$QYX!3HJFHcI@IBRU8VxkWt{=dStT=i%{($HSQk32vfNT!w zTOAFH16CWr95+tqxeaWBm;pd%$Jo)V`;p}fQf=6$pG#;+q^iK?i`_;jFaNy<8STN ztBNU-7y1$f|bACdiQOCL}awu z#3a)=j)pu%3iduH#TkDUZz{k`^_eOv?O;1N;Bcj1Dft=EVtA-69RMJ0hYF`ts}c}9 z1c`fub}~U68qr-`+LEB$JWYKYt-K2$8O*L z^pdq_QgLzdRR<3q)-hvxe^I5LHf`EjAjU_nkjKfBu3NIRcj;I!r8pf%Qd8;bW>naV zi9`@5BqXZZ&a?z^S()piL5!LYL|DCc?b>_j1VPo7jZbADMtL1)kFh9!5Y8)|#t6oI z0zo%oLz;mII!;UiP#@3E&XxZCpHO?4{TI}j#*7&!Zg=Gys{NKg+@nX2DRFUeD0>%q z=Go_@ppYFq5@=t(XhPjU50yK^!=skRb?*fb2TOlQ<)Ts@@=*{&cy6(JkC)2v>~JZ| zya5syAa=kD;QGOAOSfXE+pYtz0E;PrTt4Kg-7D>YSPB~Z&Hyn0dJ5mQq0j5qF7o7* z47vB-2PCgR{SAgaoT!cekl7U51TeGIm7O!C^w2v}ntnUV0J}F6ws8)}jydFo za-q>t&_X&}Ahym~ZeMmyDNAcAvj0}8)~jbE{V&u+V=bsE{+^;Kp zY~8j))mPfZ=K?V*;cD1@^w4TRMzw}xLgl&VbR|}fYIFM+wTT@<+^vvO2O}dRTYUcc zNVVlT^z!)Qx_O|^KtjH^@dWp($Ce|B=}yT8iw+mX#bp-_Vm#Lm;+Zqg58^ZFEJ}aVkA^vO=WAO2GVtDI%U7xoLPTU7OsFs!H0UKx7P-fMq>^du zfh3+Gg}EI7;;X^<00%pbs75P5a1J%v%z@+spo^2Q5uFg4ZTbo^-5L>sFGQoF))ru!+k6V5{dER1=^t&|CFBO8UcSYrdC~ zw7Z}-*F>3MuiIW+w2>Xq(tcMPUdzqEUTO}BHGrgUD%HY5qa-@2y9A*!h7bGV7m>s$ zp@MkV?!C%z>`1CioyN;wWf<1BrU2O0TnU6Tc*4TMH00;!vx4?$;!3Dnx6oT?%M-wq z!f(CxwmNE5Mh=K6iRs8fCNC}hd6JkQ<`_3s+_&G>O%=`wVz=Af2k$aHAt9mT+Oc|in93&yA1NOFaoSi@;aM-^e=_~3*{MZo ztR@@Yh4*qui>ffs&lNbj!Cr8tJHj25@?+n2?|-0j~qf9}5IBpT{!tTmg>XjsabzUB^xm6BaA`vMmr(f|dbPhMa)j z`<0x^Yzws$k~o{TrVRuFg#b>c+6u`ByR&#FRPIu`G}1*9Fgtm&88jt(sUDr_>tCJ+ zK%|!iVxe?IL7S)99T)-|ctGAj?HBkA@m2xum4t4$1 z@;MC+gTHs$w%u7~oLiFE4jGq9HA>+qs3ipPPm#nZNrfRMhZMwl`TilDbAh-#4IMi4 zns?rLM|&Nqg0*SW=A4V%A>GYyzWJuA($-9?@HG39p8&kOQ8vwkLriPdtWgjVJhX{R zOD|lV{;41?EG!IPvSbPD_6Jc$`iNV8>Fk_}kMF5!G1bF_#C5VWIh8)qa`^C3T?oEB z9Xxz+z<1wIRBs?k>@i=Bl`^;c{{)C>9xKm z0Fa{XzXOQrKm+jeet_5u5EH7T@*s8yvhEPCTl*-9d@*{I3axqbbtsVpo7m)pZgwGDH*w{EpO4{I;#Hfs$eFhB)X469?EJF7NDdCLw>Q(<9Y<;d^u9 z$doBFg6zvbnb4T7WqokNdIgXr2*oTkZvyaax67jd$P`H8F5=F-%5vr)TFa~sOabSoF1>D}W18Ptfq&EUfdYi)rib$SyWoLa&r-n@A$ z7f0|f&Exf%F4L4+hDu^*trY%6gW;Ji`6;&pzyvFTY6mDMLCg*=0-KXFwEVTj$6+!j zo(>=Yb+tzyeN35)(&@S92GO}dRcf!-xFA3yZKaZU`}RGJckD=3hC3gKQ6X1DJ*E!R z2*-4@Y{(%df|x4U6Hh$t2Qdk0ZbDj_G5iI<~F8(;knm7u7N)B~2wiomdDc&a8UljW^ZV117{{hGCv}c^;%0gfzO;ZC+m9 zfJu`kYkl&0UqOQZFP%Lu1jMA!(1&81=cGb!wkhAg|%eaI*u` z>(i--;9Vs;dzj{-^&+bzKO;;^A&EVZY6Ps00MH)bOT_~ad+DPLz_?Sc6!XaI0F^V& zd$O6SD_>d=E|3CxZE5c`c+fw@1nJKn>IQi9;iQe5{o!!PkBt+vQt+X4Rgf7oX8dmQ_raM zAr<83Umpwk-&9)Wme{y>)gG)#`mxD~zYckvb727s#0kH+BqpfHpl3?rRjby9a_pND zh}r^e_CbSQ;sobVx7%~plC|d}wBjm>IX28jfq9M^#g482ojQG?Anw<%{}h@H{8l}C z_7)B$g8qZX>4H4A9703yU$PdBa~h6Y>#<>G0?24mrkRO}%r z?n+6W;7ESH+~2Z|D^MP)EtekvBT$v*&=na3 zjm7^2#B}x`sQ8ZMd#CXm%w>YuYfe>Cdu6)?R9HM74bx*j-;XbpciLksEtU%yP@QJr zIPq^?5+nb~%VF=cA!a@BTZV>4UbH%m@9Lk$1YSvnthf{4r90;BE}yCMi9M#NLrkW} z$c4FiDJqs;c@&QxcYsW0xu){gq2{aZebx9H8iGK&gNJF)s@KyC+(^6V5mV(Sk zDNeZ-b^B7q&ZHLv_j|XEoUqCb(e0!Q{UouYOW()21ydNhs0y%Zc+~ zu#57Y_Sh342x0(DXEVje$2aD%k27`dd?3dC6_&gmIB?*#94F>f!H5XX`;Asf42g6j zo+l${-iq zx&%O4Erq%50R~7qN@3cZly(esY2+^@U|LOUn5pnt03%tuo@{CY5Yu154`PyOderrd zXyqdO4v3d5<(gPXTfyxTV%hR2Bh~PEILrjiyyQJ-39tsxfT)dY_e@(8GjPn=Oe`Nw z0NC;-%4wo1H2t(;)^rJx~(Ej?b|3xb43! ziRrOLsaTn_$Ab^H3MGiBMzY_5^MOI5QN~cTc~elw5kF=Vm!|;(o*Do!YJKo~QJpR; z`|YdK#l>Y)*k8bUVgtk_jwVi=_>(-gz+dV+otvAxtnZ_bs5ju<_uMOU7A=xf;2Bea z=dm_j$1jh81Svi^K#DVO6eF3vyLfHdodhmH?fhn5B1U?BDbDzpn4U$r|0I-N+ueiN z+86|%>BI+s6E%G$Gh&j>vE=n&3=LawxlmIQ0YuPn}FXTB{@Oj zNx2-rtz*q=CSa-RBbWfNx`k>S%FA-ADNqxVxt1K+ag!A1QTt1IzcWA=uQ{v15xZIPZV=-S-s4 z=^0r%Y{l`_p1t}=N=h0(?3D=g&eGm#Ru_}%D+7m`^tiedZ)+jOF?>sd z?w53PCisx=X%IK`n&y71y9;zw>Klev-7W_{GYB9KkJ9ddC7%7EWpX^K{sQ;HX@r8icFwLcSMz@8F7k~ZCbI+<58XGnq z)72Do)_mggkzsIAXu-F8QUcL%1_gJMC!g*wC6?dxAEDW(It^79xGROwqbIoF!82e2T)#O zsm!_15;*k5A+X$9S}dHJ0^P_zy#-`KCl zDv0TP@xn{GA)!O#gTsSc(%Xs>h#>#qqYuU9^^8Uf9_lfC+B=Q>9!EImHZI7gA3Ml6 zgvQ2{w{*<-}Kg7Lk15V_^dWoyl37#UHyid$zV-v6QWKp3IGs) z1`sDCBvb$~B;X`8tb=%r^j~uB_T&AZuoeY?rc{1cM7|dqCu;`?)11U-qTX8L=j%^~ zeX1G@7h|BC>CD-)BqKZ9S)OM-o)g03GYQw!CI&sk^M3vMt>F-4BpS&3|8uXbO<3-C zd&IMD!l6A*%%LW()#lr%olue{rTYd-ar*60t(!_2hns9^=gA?U>i|ShsncqUE8{vy zx{hLaxN0XQId^Gr1CZ8p&YZ=xdw0%}AT&^6q0tf(-Ah74qR=P?=wuI%$qp^vhsMNY zk93k0=Y+|rwCm8I)YCb{9!Opn%HxJaHnO;M5bSsLqehjh9gmQ8DKv@NQjq#*DLeQ& z^5N1!rK%xlArMpj`0?Yq@VB%6ROil}<>QY(RvQ=B(M*sDbjv(66{r@kPgmyPdReex z*~HY~4hytdZ%G<=w4iNY_M|obJY!K_Z)ktz3*Lz|AaHb;%Pv>qVa9@cl{OPti_7YByXcZ`rbC-I3Rb zva+(r*eD?F3--NJkiHjJyQCymZ74ikuD#&~XG66J0Cx)7c>l^CKGRr=^PW7;%E_Ac z{0oE7Sag!O`0moCeLFnwa~6km)dAT1!-7Q zO46LnP z&uOk$gU5q08kB!S77B`}AH+c-FLa>o#a7 zB{enH2j8!E@7}uY&dHM}??L&fE}zxuwQ=LdmCru=Eb5Qjqu$ZHByw;3KDrd?xPck37)YwRKv-^#P#bXAPoE-Y<2R*Mn*|AzEwD^ciz~f8p2^{&OVDWGnH*l?@R4Kxrs6yWff9IkLn%tR zQjYDoU*s4C#X1PzBX}FN%B!1a&izN^C0vV{+ni7$v&AC=kx|KrZ@lrAF5fe4+6u=_O4yKp?)8g z4?g(lGv*2Ae}b9`>(go&B6ZaauAz-aijRAT>F}LY60=-PzkdA&Uelcp%M;>s$y!Qc zhGD}$<67L@{9HFwBLTpV+sT>!OUAwS`kQJ;vkcU_CQO*98w;#hu}VGH$Q$$LFFI=* z7u-5y)v7hhQw&^(n>^+S4*J4#TN&eY)KM_g-sCCg)} z%ls}L|DpgS0D2D^>YGf{P0_{g_B+$a-=^zGpZZktGCN2?+MmUhc7qt{S3&|eg^dgq z7pknYI9*A~@8sx?5b@-Fiwrn^%%y9~scdqpd~lyHjDY!Jz~Lx+CMp(&1CalNh2M~xaAN7qI6PBRZK zEXeOPV88(Gyx>=-31Y5I&BlV7RL`EhRh>q?k3i7>5*9IrjVa%Oe8Kl(juku9@}t;{#MH;x}b~ z2lHZsVAV;W=E-x$v(9+@zylAlL1Uw*yCRyV&)Tkqb|-hw@X@h?mYrq0mX&cvo59`5 zloZ6e$r@ErdQff?^VE1bnb}YBwmc~L$u~=J*40v$-5hptQ*rHV3@-aK;#1Bdl3hz(KdJouz%NR`T|1gXP%%y#OG}j zRa^%?l>BXha&qe(Qks5~l%et9@;u)3%f*+{Ts%8(kmBw4$cY^Rax8Oz7$sahl#A8; zfWRSVzN0OLO*am7FD6TsMyN2H1gUiy-5>dp$TU=e2t4O||U(u^OQE#6~~Kfy7DtGzzsh@I?5 z>EOYGcW&LfP2Y#k7X;m@Q$Nin#NM2jsW35n z6crVJ%pE@HC(QRCPdGp((1s5m0S)AANlZfBtigBZvcHqouivQds01^4jQOyEb@+_= zF`n8S{TH~x35lzcYF?(PAoe+iFMFfaVUR#p(B8pxUT>+YDPVeQLp7hID$Y%79WJW6 zBHsh`Z;9tiEmG&7`uCj6ubhgj7EAcV@pq~V#&@*mnq**l@XtPDbEjj zSq8oQs(d{Ba~VJBd)cye18@ub8MqP;f$K*#W?;PX7*F!JJelVyTin_D_DGc zBSnr3KpXQBuFpg|g7+X4XP3Bq+)@a6aB3qJ50CyqD6O~`6A7_gAl|QMQ!PGn*(xXq*6?I~j%Dz!P7gI0cB1U4K$3PL2i;qc+3 z_R>98ht`UfYbxDa_)Nm{{Oa^iA>7{)OuyYeB|`_GZv6Wb+;EifWt9IN zm&=7bUAjLpfY1l!{TT1?6s`?J8b@kR!0}6Z^BIKlaJ(#T&6I-KxzBM7hlTEnX@@9liSmBUGPl+ z@7;zWTewpP?>ptTKn%{-zaCGCs?(6j+OY*x-hgMSB<2KvA8uB>gNi9YOfU3PNH*g* z5^x(ZdiT=yWrN6&g$hCtHXc794^C4AI8gxqYzuqwc#mNo^&pDbTe}`1OM3!@VfqSK zLV97Ebk*b*shTH;u$Vv1cs`HnGJhG*1w@V`55k4?+9ie;Ij|?5k7m%h%HGo;#u*m@ zQ1IgToXhj<-*47Ig|e*lt=6HX@;g9~aIGW1n6$p=_=2Ja)GEfe1zn zMxJ0uvlS%naxxXllfY|8AA@&ZfNNdwyFzcU3D+J*`U`fuEKkVmWjtd%kMa9DfTUZS z60iuPc}&7FL9EN%mM4^dID&R;;rd7fRliZ5F(}v5Uc>yvYsl;N_3?N=mBeR~$7f9U z_{^ty3>KMQb`Q3sw74urIHv87uV@h!ksNlL)Yz6!aX-y_gJo$ zpeA1Xm`v~Q?WX6I4P@L?4{1&vrOyPw%s8(-DT2xA?4jT;7i_A}XOVD!iRIhHtzsOH zGb?|Pf0J>OYKOH4(ZauVyIEqZ{Lxu zLm*tgIyxp+4jwr~8z_U|hkA6uHgOeIQ5F44WJ_XQ6aea;N@1$gP{;Fbzy0>c+z*$7 z<^=Jh{T^fMq>|WWy8djKRUodSD*B%jLF{t5DwW19J9WCAo0LI7`t-sux3 zO0V6$d#^S5A;NOCeE)-wi0fQCNtHTXMOE}$Ab__8k;yfcNnXRZf7q~L4Hqt2qBCnK zed$<2f7^nBLY+^n2|=)*tJLW#s-oWlb?VgVO3rNIY@cp{f$9Rtjx0KqbD{%%Y^P0| z;a@1PimIrJenSL-+QQ{=>*nCj#^02_40OmRn7{h!o3k7>aNn&^zc0wyql&7iihgAZ z3k$oFORaDf4F1yoVfw+pQ$WPU({Xd8$!@Hg}wUht= N002ovPDHLkV1jjS4<-Nr literal 0 HcmV?d00001