From 44ade10d7780336d9091e09787972e94b6fd8b25 Mon Sep 17 00:00:00 2001 From: Rui Oliveira <70754369+ruioliveira02@users.noreply.github.com> Date: Thu, 18 May 2023 22:35:26 +0100 Subject: [PATCH] Add membership card (#283) * Basic card * Responsiveness * Ability to set parameters on card * Fix warning * Implement suggestions * Change name * Update seeds --- lib/atomic/organizations.ex | 12 ++- lib/atomic/organizations/card.ex | 37 +++++++++ lib/atomic/organizations/organization.ex | 17 ++++ lib/atomic/uploaders/card.ex | 27 +++++++ lib/atomic_web/endpoint.ex | 6 ++ lib/atomic_web/live/card_live/show.ex | 23 ++++++ lib/atomic_web/live/card_live/show.html.heex | 24 ++++++ .../live/organization_live/form_component.ex | 24 ++++++ .../form_component.html.heex | 73 ++++++++++++++++++ lib/atomic_web/router.ex | 2 + .../migrations/20230430092354_add_cards.exs | 10 +++ priv/repo/seeds/organizations.exs | 30 +++++++ priv/static/images/card.png | Bin 0 -> 1484867 bytes 13 files changed, 282 insertions(+), 3 deletions(-) create mode 100644 lib/atomic/organizations/card.ex create mode 100644 lib/atomic/uploaders/card.ex create mode 100644 lib/atomic_web/live/card_live/show.ex create mode 100644 lib/atomic_web/live/card_live/show.html.heex create mode 100644 priv/repo/migrations/20230430092354_add_cards.exs create mode 100644 priv/static/images/card.png diff --git a/lib/atomic/organizations.ex b/lib/atomic/organizations.ex index 5cf67167a..ba924e2d9 100644 --- a/lib/atomic/organizations.ex +++ b/lib/atomic/organizations.ex @@ -69,19 +69,25 @@ defmodule Atomic.Organizations do ## Examples - iex> update_organization(organization, %{field: new_value}) + iex> update_organization(organization, %{field: new_value}, nil) {:ok, %Organization{}} - iex> update_organization(organization, %{field: bad_value}) + iex> update_organization(organization, %{field: bad_value}, nil) {:error, %Ecto.Changeset{}} """ - def update_organization(%Organization{} = organization, attrs) do + def update_organization(%Organization{} = organization, attrs, _after_save \\ &{:ok, &1}) do organization |> Organization.changeset(attrs) |> Repo.update() end + def update_card_image(%Organization{} = organization, attrs) do + organization + |> Organization.card_changeset(attrs) + |> Repo.update() + end + @doc """ Deletes a organization. diff --git a/lib/atomic/organizations/card.ex b/lib/atomic/organizations/card.ex new file mode 100644 index 000000000..7c56db645 --- /dev/null +++ b/lib/atomic/organizations/card.ex @@ -0,0 +1,37 @@ +defmodule Atomic.Organizations.Card do + @moduledoc """ + The membership card for an organization + """ + use Atomic.Schema + import Ecto.Changeset + + @optional_fields [ + :name_size, + :name_color, + :name_x, + :name_y, + :number_size, + :number_color, + :number_x, + :number_y + ] + + @primary_key false + embedded_schema do + field :name_size, :float + field :name_color, :string + field :name_x, :float + field :name_y, :float + field :number_size, :float + field :number_color, :string + field :number_x, :float + field :number_y, :float + end + + # TODO: Validations + + def changeset(card, attrs) do + card + |> cast(attrs, @optional_fields) + end +end diff --git a/lib/atomic/organizations/organization.ex b/lib/atomic/organizations/organization.ex index a872d3d68..596f7fc97 100644 --- a/lib/atomic/organizations/organization.ex +++ b/lib/atomic/organizations/organization.ex @@ -5,6 +5,8 @@ defmodule Atomic.Organizations.Organization do alias Atomic.Activities.Location alias Atomic.Organizations.Membership alias Atomic.Partnerships.Partner + alias Atomic.Organizations.Card + alias Atomic.Uploaders @required_fields ~w(name description)a @optional_fields [] @@ -12,6 +14,7 @@ defmodule Atomic.Organizations.Organization do schema "organizations" do field :name, :string field :description, :string + field :card_image, Uploaders.Card.Type has_many :departments, Department, on_replace: :delete_if_exists, @@ -28,6 +31,7 @@ defmodule Atomic.Organizations.Organization do preload_order: [asc: :name] embeds_one :location, Location, on_replace: :delete + embeds_one :card, Card, on_replace: :delete timestamps() end @@ -37,11 +41,24 @@ defmodule Atomic.Organizations.Organization do organization |> cast(attrs, @required_fields ++ @optional_fields) |> validate_required(@required_fields) + |> cast_attachments(attrs, [:card_image]) |> validate_location() + |> validate_card() end defp validate_location(changeset) do changeset |> cast_embed(:location, with: &Location.changeset/2) end + + defp validate_card(changeset) do + changeset + |> cast_embed(:card, with: &Card.changeset/2) + end + + def card_changeset(organization, attrs) do + organization + |> cast_attachments(attrs, [:card_image]) + |> validate_card() + end end diff --git a/lib/atomic/uploaders/card.ex b/lib/atomic/uploaders/card.ex new file mode 100644 index 000000000..1857687ca --- /dev/null +++ b/lib/atomic/uploaders/card.ex @@ -0,0 +1,27 @@ +defmodule Atomic.Uploaders.Card do + use Waffle.Definition + use Waffle.Ecto.Definition + alias Atomic.Organizations.Organization + + @versions [:original] + @extension_whitelist ~w(.svg .jpg .jpeg .gif .png) + + def validate({file, _}) do + file.file_name + |> Path.extname() + |> String.downcase() + |> then(&Enum.member?(@extension_whitelist, &1)) + |> case do + true -> :ok + false -> {:error, "invalid file type"} + end + end + + def filename(version, _) do + version + end + + def storage_dir(_version, {_file, %Organization{} = scope}) do + "uploads/atomic/cards/#{scope.id}" + end +end diff --git a/lib/atomic_web/endpoint.ex b/lib/atomic_web/endpoint.ex index 2ca48c25d..59f02fcf0 100644 --- a/lib/atomic_web/endpoint.ex +++ b/lib/atomic_web/endpoint.ex @@ -22,6 +22,12 @@ defmodule AtomicWeb.Endpoint do gzip: false, only: ~w(assets fonts images favicon.ico robots.txt) + plug(Plug.Static, + at: "/uploads", + from: Path.expand("./priv/uploads"), + gzip: false + ) + # Code reloading can be explicitly enabled under the # :code_reloader configuration of your endpoint. if code_reloading? do diff --git a/lib/atomic_web/live/card_live/show.ex b/lib/atomic_web/live/card_live/show.ex new file mode 100644 index 000000000..85b17d763 --- /dev/null +++ b/lib/atomic_web/live/card_live/show.ex @@ -0,0 +1,23 @@ +defmodule AtomicWeb.CardLive.Show do + use AtomicWeb, :live_view + + alias Atomic.Organizations + alias Atomic.Uploaders + + @impl true + def mount(_params, _session, socket) do + {:ok, socket} + end + + @impl true + def handle_params(%{"membership_id" => id}, _, socket) do + membership = Organizations.get_membership!(id, [:user, :organization]) + + {:noreply, + socket + |> assign(:page_title, page_title(socket.assigns.live_action)) + |> assign(:membership, membership)} + end + + defp page_title(:show), do: "Membership Card" +end diff --git a/lib/atomic_web/live/card_live/show.html.heex b/lib/atomic_web/live/card_live/show.html.heex new file mode 100644 index 000000000..3dedf9161 --- /dev/null +++ b/lib/atomic_web/live/card_live/show.html.heex @@ -0,0 +1,24 @@ +<%= if @membership.organization.card_image != nil do %> +
+to_string(@membership.organization.card.name_size) <> "vw; color: " <> @membership.organization.card.name_color <> "; transform: translate(" <> to_string(@membership.organization.card.name_x) <> "%, " <> to_string(@membership.organization.card.name_y) <> "%);"} + > + <%= @membership.user.name %> +
+to_string(@membership.organization.card.number_size) <> "vw; color: " <> @membership.organization.card.number_color <> "; transform: translate(" <> to_string(@membership.organization.card.number_x) <> "%, " <> to_string(@membership.organization.card.number_y) <> "%);"} + > + <%= @membership.number %> +
+or drag and drop
++ PNG, JPG, GIF up to 10MB +
+<%= Phoenix.Naming.humanize(err) %>
+ <% end %> +X++`32)!V&1DuY6QsK=fBbO*0$w5OW9#JU>AOAt^+EQ z)34LED1W2RuFY;Bn(wY!td&~nST>{!`#$!rN>{QHsOKdUTOy>yt;?- zt-7DKAG9xV!F<8JUpm7u@hX!lR&i_c+2pUuv2oz*2x@)mkFjrJbz@hk>8S5B_cM7i z@iGNoSG ``ZR*`+!NIX Pp{^1VbDnm3BXG(0jIu^Z%Hl4&TGei{e(&kIKCmM) zNHrp|*ScOce9%shbINB*Zc4J`YV@ToLH+Cc8C!1K`|ZB%tr5Gdxs0_sM&nmp{9Lo| ze;Tzl{`~Rgr-}7~Jz_+yKkC!F5AW=}AeoMbPLiW7eK(ne6JZv~HubC9Ke!za9J4Hp zZTtp_8a(RB=BpYHXcZ}8d}<=)w$mDZ&;3dQzyUb{jUj3BP4Wfug+0R)+l9%>HMA>2 zH(7-hR=>9N`&+H1`@h7o(@sfjHzZe)&6N%9WeUuQ4*2GJB%g6oh*N-vvD1yKU(dN! zN1GU%bhI?LMy~9y09Qs=^p-1DT=-v8>ckYsc+g`J2gdu-D@#fNTYR^DkFM^9hgUg= zol58G>-4P lQfVDeY0rwh<2nA7I)Y1L`KuHAP3+0yn^ibKzc^^qm` z9B@u?%K#6Az^z9uatJyxf-%)F#4u(sw=g*|8L%?2i*aTiUEs80Lmo>}$>HMR8&SC@ ze;U~S;k0mHa8%$SXWWz0ZP~-oLm##j7TuH8U$7 )q7f4pRUHL-BJjf2`;9Rdx3}7#v3Y>ogWK@dQJ- A!t!B&|uE->L`dD=^pT=`=3t0(BkD)i4_f64bZ z8*fAt zLf|gh6^I|jh`!QuX%;GwA z-<>jdehNxyK!sNI=~we$XRny>9y)b_;)ac+kdx{d5?@ESfH{_x{9 zo;N1*Cf0_pJ9Z~{yE>+ya#BP`yYRr@|8(O68`d^iMV=*jse@Bb)Ob?F($dmFMnk5+ zjXAy!{X4NHu1`k&?u{@SeG&s)gJr|LR(Iu$_eQb{h3~fX1uIKxc#Q77M^glMhE0cr ztBWgBD-X+YYwX|Kft`Q1@TO9w&Q;u1T)w4w%UcHO$ZdQW!tNlvpdl1abH4kjTDv#9 zy*^4Pm?j7_jxdHdN-Sj7HXI7~xil=D|4MbfZ82?XcTygSn|*(^xR`@2o<3LLmDI9o zN(L}prK@c%TLpv8=&K}){kqHsS9fl8FIVOnes#dmwq)*QqeEuG?Zefm6T&hG?_;TA zO*K?Ca>C__8(;egGKg)uTHop<7ryI%9nUSTDQf2Ff1=P88I=4jIiPe>OVTl8(*5fE zdTQ={p|SYbmmE=m(C(i-A={-$kJX*H+$)K|Ym6 k6)vq*D7u-T2$)#zm-kBc$(H*EU0 zVc#o6z#z^FvA7h!)UN=wyYut2bKWA}r{ 1 zV#;V>e8z^@rQpHO@+ukO0u=;7$S*KE1tT}ie0ora@>N$&Ru = z3L+arRa*@WG!E1~F6#K}H>sD5I^(&j7 (9=-kjhL0o zCmsuH7fTx+pHHrTqmu9uL*0I|@w8y{`Sj7*L(E5#`EMh{Q1^c|^D;C3ZHT9nB(tH0 zHlw_YyA7id&nuo+%u 406_ox#j(U=0w)gaO731Xv002Ay0Uj53J6=9f zQBmGk{Ji}9+^7-U9=^_=7Czk09xQ)n@?U%uY&@*o9b7#fT$~yI;%i~);^isH%>0+2 zfBybHPa7YH|CZ$J@sDMp7RdWo4=*3jE8c(dMv+SV)hed#;A8XANWtNgjk5 ;EKu=V9Y6@A3&H)Kf~&%H0Mf+}_3WAH@IK z`42(~-oMuVFS_` n-Yv@i()gVOXNBFHw)E zE9$_%bPx|umqA05K~q(bed~k%X9cgVMA3`w;p(W7qLVe*nm>7vH6!rF5?4ly>a+s7 zpwe=Lj<$lg^_l_}b 9(b8Qk@@d@nLaSg92Ej#}4l16#)s zvpu&z2`4CHwEd+#S9W|4%3uaN*<$Z@vdinbKGX``b==R9*yFy&qQ)Q$3X_q~XBz(> zJ&MbI_;?Mb(g$E@`mOwrDE>G0zgS**?-qm$^*9!W{s&V3!Q W29kxKqwJL4&VgJg{7U+l-&xTJ_mG`e|{NI=7 ze?U^(F?ng)_xSsX{VmU$7`4-L!M_jbTnog?w757%QZ_sj!g}b#)wa(HUL(Kj;G6gv z^Y1y{#gd>Hq3e0rBWV)Vho}Fc5H0P$nBj@lRvBv%VZA(`Y&~l4@VrwGJWYRYYHAke z>D5qV;mj2%#e_5(Hj9mqPw(hsV^hD8mp%!2z7lxcuI7l&$j!SX{qH5e#-b1UeE-a0 z34rH{G89Wh(fz`INf-M|x~ed=sz-|z>*eKS$$I~;&?97|0<4Pn-*LRYWc<*fxOi!5 zNsD6F7*20o^^c(^SC~QlDAiAwN?jZ)#~X7}V`#}>y(rxzny~BeL{7Gr?PaK(wGWI4 zGUaH=5c~o-aLK!K`=q69RxcF)4xQY>Sq(H$O+O3pwMYKHJ{Ugas2!*NdFs-XK2&8< z>%XKoF`b0+`fs>Z92~rxCa5qcPQ9#VI-v`b(L1r~%nU}-DK%9!|Jzj&$>bll_A)jE zq#vVMe$x2+%cF&XmFpQcGnakaYGbH4t^qZTAlo8?wHLC!=-+bg?P5Gqqa|RTcIJ{l zQYa$S-@1oofxh_%!XF{qi^wVvrb@LL*ZuvQ_q__!!jh7vaJ>X cTzCXt>Nz4ihHR!^Ke?L%-fG164rj&8~6lfjwm& v)voToVz-dpXmEeV%NW>DMt5IcIn z$0iy&-9B>darPf~8r;j2?c`kDy;Eg-5$rr2&cOz64LUCTYOz}c|CY<;oiFW&+`me9 zm-ak1Pw_Nq-Jpkxe$9+KE-fkS8!WrF;F#LW$j86V4%pi(ZcC*tEi`LwmVk_mq ?Dt^ zLn mj_vPTZh9YWp4PqMGW1>06>iOr|&? zgOM+HjChv}hwgh@JMzbH$qmVTvO8H1leJVZfD9Fj_r>YRLIoE3?htbtl3 z5~4dpd7QB9!2Lij_I9O?jnBO6zcTMEmv?cD8>MIu7oQx8A@}W4c9Mzi?N$3n>bJ9? zkg~`kHXvJb`d$7iEQMw1*Jvu72fV$b4un<|`X44Tti{0ERCrkp28 EmC9Gt|75jEZG$cK*pva} z%WjFJ080;Pw0kUoersORREF=r&fNOg`dR9<`ZlmC#jkVqD)sICd0X+@%5?AVkd^{} zp|9Cd2)mV*ak3a )?=TSz^`hv!#(;}dZA@dLFgwxJn%cSo6y5d`Eo-SoB| z7UCgvucJB|axjMzSTOw3>y>tm+jBcMzuRY=oP5&l+t=fEJYwRr(dM`BM*!vz@O1UW zbDF#QS>ujrH%-OiYc(9vj^)!MyL32Fzzmx@b%P610H?N%&awE}0HTuiLZw}~zp;&b zJ93Wp1Ob2Ui=`~$)7MDGF8pzLK{#m3azD$! }+&0gUYyPLsA$2G y&?y)E-L9*&dQGdm?* zF9 !$U+!g=6GHYqk8=j_J&EuO6D6)E4J<^!43MCzI7@)058+%S;Te7Ef~_v^qog z4R*`gy2ymHWP#@DT84zO3(94G9P^uX<5jA&b94xC_U`EU#nbydVp{FJKP@I#&^9YD z)A1hDT;Mvact827wWg>~3)# ONqEjE5VfGFNldP&7TRLv(028g?_h^*db zv8A|Q1#HAVKRj5twAxL_Z;q>n$i(w95F;nd?~%PbkeAYjh;w|k^0j-=d|v$+omM+B zokNY?R@v&U^s{@P%X%L6niQ?P#N#Xt>8mBCoxF{KC6z^E8h&g1~R_VsTy_($F-o zYlTY})1#U; tJdOXRf!|?ks!d A} zTdWCr8KQ>pV>pdVieqcnH?gAmvA=fh2o$?w8#d@!Sy*oTz#y>N2zIMU+S ?mp zS5)ZxQX4A|FIeVsnV^Cx0x#Fr@cHYInvbm7y_pt* )-; 8q~he0qCz zX*#J>N2PBiO}6$Iv(J_BobQT*N~!b>9 Nm6CGn!fsozD V+WnDVGT-g?T+%i+{PCu&iR7F(BQWJ8=Y|q3eka(EhsC-Y jHz4nKGqP1$V)6|X7**SD$ZUo>fQGNe%YwVQLN;#Qy7H{Q`L$6p3-KO zi;cOlC9DWy(^^WUmZf>j2)FpU;?U~|{GtD#-g)Z#bc&t$Jka+!vk~+_!ZtaPfEJa7 z#-rUxU}qi+&d6p`j<|iF9p{?}cfr9~AiwK-r%+~>Cs0|Y#WC41w8CN6U90Y#h<|U( zZvL3fJ!$8IM)CtpfL`}3YWnVH8?E~!-S7CPbz;eh9#dqpfNi|P*Tm%pSh)kZ^Z<#e zQOw0p;8zeW*BmzUsZB|uT3YD~c+p!ah+ZPY$@?S4k!fJP1W YSK@nx@2ReiH0F@ zZ<61K~oSB}XB;Hnd~?_^k6aNGrY{)LV|Lv(@xos|^>_x3*scvt_lSK#<}?FZOhd zB(MB#@MwK%rBf17{)7_r+vU2J|7Xo2W_<$#ORUz2nTTaM-s@1d=fn=A70gZ(IS~<| zF}rf+(D<9%GXF_X@4h?mOU)&V{?zlSK^Erf-KWqjUzPSOb^`Yq38f9sjHR&(-QCkdv(mQY?|)6%a{9Nrd%8hD~W zs+0$9zi!u|#CI~tIc*q9Ky!1%^4Bc<7RA7Z+}@n!btcV+GwYJT18KhgkZjs2;2X^^ z`-w?*yKnr8LC2+_emhq-9H(2o^-RE^(S2I=wkobB2V>qvi2u*(NwYI9-*^4&uwwuF zw^DG2BxTS2Sm 8!+9wOu6Wr z+ZBDz-0AQI#8YWD<`-CC{Bo(Pedt}sajc$nD&+Q|{%R<3lLDf9T |ZgXZSSuD-b8Z zLG0qGzoH8%`s56Q=UQn92L&99L1Yu>Y-zTtE1X%sgV|DWNA$cdlMR~^0L<_zhZi&J zhq|tlt!)WF`ugkLW1^>TLEyUSyxYTIOyDlFzK1!_j_esnyJ~Ow!>w8G{!PqF54r41 zhxDD_)A-< hXQgNH7geic?Rxj~ ztb6xI!dz2CkEYMm^nvrqHfuJ )RQKf3jPN!G7h K0Q4ZYY3B-|X0dGpnG*)MuWr;|dO>K2ayMuwV_b?VknwX1Y>5p+Rt4 zJ~cPwS*)3^c9F6ayzXtQlvvsLDxG@P=EdaeB&m;hLG!(Rn4RsB!bf#Piy+HUxmhl- zUri|~$#@oUF#8CZh}=IIMros_y2pJj?O~^v$rA?v3`JlPL5Z4KH7@FM-&(9VJ-jgg z(`Xc)!S=#kDpRGsREuIUNbA`d6zA-c=*ICVxiS%XNeqY5U5}H+lHKD=@{A~Bc}hn1 zJroawe0&Mq+ZCh0MTjHjk8vbnS%Q__^3A$Uou@8YnxnlpkVwbf<~5gd3zLoI(y6#y zd6lvLZDj<+~1r2;j|B`uH`*mqI-pk5~!6 z4eF4G+ZqzezZIzL!~TdmVa$K|6kICvRi!nOpEdSMUxHjRj3O#BmS@fQ75iG)FT!!n zf+*UdGBP*E67o3|so1YNBA4q+Js |NSPWX$;wS(hKj%9TgE6M2uVhuCtN zFbm|3NV=+}Xy%WyGgQLjHfS`Xk9=q#!iB0US4T9De=aFFq4%C?-&QE2k%7Hmz}`gN zxwB~kX aQ~d5oq|IV4 tS gZ^e=Sdy$JD=ZmC0uwN#u4+AxcSUEN<|yOEK=yNnDrrGf4wrD-u=27 z=|%}@BNqLd_Vd_cB(r|}JdzORd;c-}9mI9u3}WgoXer3z@{Hfo>p4s5I16ML1r6_8 z!r}?tw?vPpd#@_?*wd`}3 3-)N$}XUi;pW+#%Zu z_l@VNVB%oW_f>GSr) 79H`G6V$a;Yd2V#G-hH%7fC{)KK4H796WdhFYS98*_zN}T;L3}f}FeK%~ zZ0Sq;t^I!bJ(rB1V7lqyJ$f&AoE6^(JOkr09)2yqqofn!9kJ_O{?@9Yx5@>}5j?{u zMYjRJHCywT#4e6i2c%~*#B#>l_( 9o!zuW+uNG@_p`iZB?p;%>-L!V zu(ta7bMHuRu?nt5reter*(ORZ@hA14%}VeS(M7~CWJR PqJKIVuWiWxGK6J_L)PtVZB@6>n$yB6A=ehb9A&8&52G(cq z%)l9OrJAb5T^)1tV ZX6L=BDmVjYXo#;osHu<_a%~>y-yihbAG+I^8uNxf z?`?Z{Hstb{%krHhlwYjG*-(1=LT8BVe4|?WyttkAQ;Z)n?%hrFovyz#J>0BZQle+& zohgg{ne$BSQJ5y^1;a{Ri`RjD@BVDt@R;fDIeIPvsupWlbx<_U8&lz}Ho+Dye5VE~ zFC8k~ccUlWf${}(;yn|kBOVmoDN8Bc{gPV-I!xXaxQipY18-t|jrpQeeW^CXTXm!H zBnD9imj%~A7C>tiNSDk_iZYODd%75&^?0k*(?BPR8~J!BMgUFT2L8EXo?aekJYJy^ zxCRl ! zb!j-#K>-&@!?R?xHrbxFQxP+56*ZeS$QM-DD;#-k!kV;bds{;bMp4AA-u?as^q%jA zhc5`gKjR7@8Fu>*TE7B)R6QLqmPNWJOUDb26)VNqqwW*|&>&C-uOgPqQc|K2I~#P$ z96nm_e(<1?oBiU)Hfefw+P9br1hr)KwuGbP=Xj31H($(diklnL+!ZS6J%&VK8T3lI zMuAR90En7JnZe4io#)C_q4KEZBBQv1`LGHS5N;OB;2Q-lqMcEw%+yL1ucJOA3J;>p zv6#Uc6vl1xzR _&kQaRwu@J{mkK*F+}Bo9pgvkm$7$x8 zzWb~)z@;}z1e40CTB{Cgab;A`Nk;;VuP4d=DEn65VELw;+em(BccxMPVk(?lmsgPe zp!&gz-Q1~DTe9HQZ0xTkZy}y&-=Dc|M+X%;x8v1`!RgDTH4|EcqBmZ};VIGY7%JJm zDhwVirmTULiVyBEZ+4@=%8*)K`;Ljbk03eedp9Mm6F%p2xr>2P)9u6?GaMkhBsI@2 zAus2zw=zwW&ALf;aq|^}r1*YX?Qh2=2tpzHvd7imGGbCrDS;BhSWxZjK!AOGp81mvZ z*%RU)wuS-OtfOnbf`yO45vZ6qHdGMYh4T!qOZIiA+#Wg>9r2D#SP>P>$}^R^qTrV6 z 8X2YQrJ3cQ!HCpaxANsdt*GARFIuC%ltL<6VELCt-=t{#CZYFY($wvFav)u6}% zDyZ~(T-OLHe1CcgRK~qgL`~mS;$82)FS4Mm;M&OkU3^na?*X&^lx_|uA87?vow#cX z&V2)H;?a_$Qm0| ^B-K!A6T$_8X$1>umg%f^=%(PoZeG zm@#>C65|}23-s5g1a&eA{N$(S)6QWG5Z50kyC?^%vpu|(aHOr<=ChQOIAt$73hhZ9 zH4{vN&l*7duTQM`tI4M$&%cbI^=_;P>Y$mF!f_Ix9BGPNaoaung7PheQ+L>0diS>{ z14%2C8OR|AC5n|{cKARO%@z+<`}A#v4qE&lahil5Kb}W@C2x`#5Z}V4YR-g8ThB3O z-vKG>sLwZ# *cH*6?BpY+I z3^XKA42Yq7r=L%}U4)d$Mm1eSyQ*Dotg>_!{RjTp2gO^#C8ZNxB}0fEt2PCbV3bwr zmgw4L6hl7FeGMsxZzG;E1$@X9->WMH)@{ds%BtMHQ}&`Ekz*4gS0T2@njn$hxJ@TT z>)Pib;S>nx8B!(PY|gXndE2|?K3NcJbv~&T8-Lp1R%uR4?o;i3PV$s3gJ_|4ZQP!( zrTR>6bNfpOFy*bcwsplLjsUfRUjwh`W1^{4zpvq|lOlfF7%QYuQvhIaG;ihiSG0*t zQ&d56N7uOp(O{NtD+{J0j4$ aKMEm(??7D&`m4WCVuZe$(fg7 zBfcpE-X8Al2xt<(@IBn@cHS$kZUw@craZ-Vj>{Q}mzl0+w4~q0 ^^;?^FEFcLWF3)vXE@U8I`JHnpryNJ zU*OnTz2^x8R!$sE3GqHiS8?-%$mjU; cxikJdzeLw%U$rb9pz#pLa( zu=LBbMB)1smO^g?QS}Y4>5$479!tUZXn}Y6w1-pXKyhI9h`8@5O?&rGqBT|0HB^y1 z9xmeZEiW>q2TBE0*4j^Z%=1>?69ko}M;opPvgiwcjEIni>vt$tULNZQTyMne4vBls z$md-Icv}q+@i91ruQlksA0Bi+XtH7bK0vfqIMpIm2JjBecEiAwjC%;?QFPzZI!@(% zzH=(Md_lYt@me-8rwvck25b}Yl)V%=DaCM}2b+@G8(Y0KZN2E1h^mp8;w%whPNsd5 z_(oc;akqUl`)1TVENX-Ix`$9QpZMUB|Cfh}_PZN-m+aBj*MnON8DHZ|1b(O>Onb{O z-jy)7{s?;7Pd)&3Z)ef`q6H7E0tgAe5U@D`Ts655TEW$&u4#zxQ`d49%)P?>l?)4( zV4>5k$>aX t`W*rL43J0tdE9MPZTqO`f*Yc>8Zk3kj6CzDxaJ{7>iT+b;x&g5jnjcX z3ri(^BWA-*Qs1KLk`}!-R;skDC4aRzqctH7oHBFR`!k2Ii@6(BQBJf17Y3?SfK0VM zMEE+1UMc=5wEyKL_sOL?Fm-K|j4AyF-Yr%hZAi#Cz~m008`utnCA3blyGTyiDXfoL zD^&QRo0s>4fBWaw{>;9mVjk!}gAO<&yYM75F{12X-E}li1XSAGHselfa|@*t#GiJg z5HC9AqN+1my=KC>It-$!V@84V25#y5Z}&^L3-?Tpz1%r>(F0#L4#8%=YR$P@J)x`I zmcqRs2Z=VD? 6eS z$;~I+0V|;Rh?yE&=>F_-V3}tw>Ed?Jo&-7>-MBcLdxsoaegGSyQhbAHy{}C@Fu}aV zs@E|lM~uePY@5*POwJ!MC~4NM!B>%SO{04Y>dC^z`p3^ks5Np)p)+_C5hV6o|jd z#xr?O#T}o&j|Fh1g~r%!9=vGM9_WXwC>(D%7fhh?(^*_M#`@$@Pr4RSSP+Z?M)E )Wmj~|SWuLJsHOO|(0aE(Fge^O<~ zPFpPQcMR}!Djd97!_Kk;Dx#bV_Z7z%(9f}dB2lS%w2gyIRK8&I3Gi#IHTGvzF(45< z;pw?n9Q{|xpe7vU_LTJ42~<9Vqf!IwNq^-5(17NsMwV^s>N94lC+dqqlODBH`T~|0 z-|>+i8>}?gLXS(zOWlCurR-S+F*vptDQ|j;LVt!vhK{@kW}dDaZd#a0h6Wb|l+qn! z6XuZ$O9YqWC 7&@&tWdjVkssv#@360 mJ(gVR zWazQ?#^paGhrJxce(FD6nk#!Tjf;8UgLDoqlBTEF4PoM#_Z!$AJn1Wh2R@&Fy>9!v zK^n1~nv78hOzH }9d*u&I`+77he zzeB#aJkO);w4ycCA7Y^%uu3CMV}1SOm zL$Ho0$5ehJPt6BBp3MR$#eXw zs3{8o6<*and{>Q#SoQ)iL!{4p$#k%C;UiA_WQqH6s<0L^bTBie0Y7sIuy4EG%|s0X zuVVIkGEY5`;h7(>xV6xh+sk^tmYabMA)jZ8DijKcK9!iL6fSrq}PH#jm^VF~IX} zKSM{s0fFq4G{R?l&fB^bwV`ys?Eh+$pRC8N3x$0}0TLxn7#tYf@2Qksq|EZ0A!l6g zyaxl_S;9{-ipRG1+uA9iq`c_04G+u9Mp#ZBb3zQUD7IEE_~>&LpmG~63G=#J0L*H? zE^GD;qG_fOBnS^vw%?35J6Fe|#&k-xlOxcprt-eQYK{rC^^jPm>u2#_35&QUPh^o( zyiYZ={RS a4Gy!T#%!B4!?Vl}cow9>jcTSsk zqWpdh15RLrvB(|zxCmB%gMRU#%l5b84L$Ybbk{jn;in2Uu2A;s`=LE>$cMYhenrs5 z%mZ7`tnUkf?mQ4{xBpg{sd`*&E7r=H_MGNLCPcJ+ 2W-%);x4J&(K_0*9%x(+HyW E3{}f* z3O1Y2p=-pF@zq6)BG2RNR$JbH5aU@_+YE^uH}aY-WLh1jtIE83ye1bEan~--wR*pw z$>+Mt9u@2?B76I9sOY}pGzia}ZVZ}t36pKrC4Qpa_1Lz#iS&JvV_$mH-yh PuuMq1H~ zmQ_2Ji-%)#_H6ka0;at;YCW9$u7zCZ{Ll?5O=kGn(X*f#;uewH{rd)wu5-cXn;pR2 zzyx^1*N&CDot#>|QEbU3_O*26>fHKpmdHK$?qt=+H!SP!LQ?iEqKM4^PD+
19w9%D4jeya%l#1o zeXs#EmdOO|u8%S6PZZdE@dYH1Rg?WXCks@of4^kelPrsA4 wWf zIuHQ8x*@*m7Y|rwL6x)xpAk{ch4DV>kt5%@m_k9GQYne?cWnZWH5kK++(%DK`>=Op z+gsf357qnXik#0;k#3l5X^o*C7u91ff9|5aGZd2F$&PtGwxb?$FDYfzVPyxBzns=w zog!oJmMl~7*V);}n7+D)OQ7=jaOuw;{vX%B+DT?nWLh*(={KGwgwla4fuX5>lX@t) z&P#MbMdTXoKg-{p; 7TxT)t=y_ zMXdr5mbCmPPiTFhwPgcUKX}9reBD0c5r{c(jCaiPB-8wr2(UPOj_{Yn<65vw*i0~! zSZa69!wNygc40m*%>+UA-)aQ$BuatN(jF_Rw>-43Yg#=$*r#+lQNl=2Qy1Gsxeh1F zW}zrgr!ejvD%J;(qMA3zZgK*sl!;NdN|p3}gMk|PavL7P3*^Kg_G9L {vBvRFi>9?89`f10!8oZ`N~#Kh__``*e!P#G3T$v4ll{V zWFuJD6dhK*P;nCdJXQOKF4VhsW8%U1_^tvTT_{QwH69u3L1Q2^t~kwKX*rK)cWH;U zDqHgqUVH~wy@w@fM#>ENFI3i$)j1Z*X<141`9u`4J*Zz20q@7#1F7y+(&NVx$ksGq zE9J?ka(r%LFu|$BSN$~0kh?ag_r3exGQMzgzdfTz=E~>{9x4(L&2XHRT*%E4{I;JS z7wEpj26^p&a3m6>0)Gb{RL4(CA{M1)@S2ZLfx9%pwA9tyBURq3tG^KQvWu|$Q(K6W z7wS<|N{ ^F e|s zVeFu*jG5K4UvDfA2Q!QycfZH^DgBs JgZ|2fOj zErv6lbGZ9VQ}Fjd`)Tv(erc+Eyx$>(nj`3&va3DimS~Ru=DlYwpG!~lMsFKvwuFHL zmg{lEkT#w3eS3oTGDt=KZir8=x4e~S2Z##q+HSUYQsKnX>+KWqMLT6>Cx$;|9jqG1 zkdcMnS1>~0qW=SLiu>AmSf_)a{Ee^Fl%6BPsOBO6;CGDnECZm$#J8tj9nnvJN%Q=- zxdf}P3Iv)Xy*qL}*}q?(Fsi%w!S(lrUs{Kz=#d`6_O 5(pkyx9zy83oP_B3Xj~HN032`KL2Mb_9_ODU^_@b6k zh3P`3VX8z_K;q1K!Bs*pnQ!+3Nr^NUhcl%5156RWlV&4kVni|^Dz9=EPrMEC#rylu zu;TXGoV=bNFi{AZ!)w$LS#iYKC+H7T=KhZY&siG0b7eD!MVI3} zd7KL8R+vb>p&XJp=6X&s(RfqS@##wU!6`n{trH2F%loL{Wuje!Tf|KqAn2+B_OLr# zTD{$bgOKL;pPAJjr@Og(LFYD_8QG=RLj$c@(w#eY9>HdGa3r*K-8H0c(AzsjzR5RH zGMs&PclJ5(P}AwBzsqM gAAn!FFD_nFg>HPu%bILj)I~GK8APq6U6P)O`Xve@2tC5I_g{yo9pSImmLJ{eyIO> zl=EVD@4gG%*lUlNAr8Fxtb25phxqj}51d@~aOD=-xHgI-;Cn^kE0Ibna^>%Hto!iL zakG&mw$~+v=Sw|p?TL+fo=< 7ASEq25=9q5s9x zyT>#6|NrB!QmH6Og|OvNlA@@D*^ 4KktwG{l1=A*wO$~+0;Crb+o0u135a) zR-Y#ph_I$o0=5kkw1~y0q;UH&xuYrYb^)1RVt0LT>kamLJQ);~lJ>I8D}ggNSBcyH zaiKPyG$Dhx7dotc(h7HXT2(d0G *TIHzmQ;bGAh206A-^qY6vrk`fA}6z+_#9b1 zF=wX+`vac$C&0DWQPkt7M_Ym;C#eTmw izY=?ZiMQ5|p!guU_V z1-En%7X&tw6B#MP!d(B_N+y^$<=UgD%8FPuHNk}^`r~Mf9*n03D6}A80JhFuD=@7O z=KabveZsv1sD)>|Rt-4|-yw>!$#7aG(~~#T13a0$aY57Wja#UpA;4zwyteNn$7$X* zPT4`<%E@n0HG_hf)aYh9L3i5Nj{nxY<4yJc9C^Ndr!P_Fj*|?BqfIM*Q&BU@_V;ut z=d`?0lzDYF=S>Xe9rh#VCLG@g^|4`j@)t=KgIYNUgt>QM{T^4_KYPp+p7NQb5O_eI zNbFW!Lz6`UNoP(EIJJ;$=QX9eUmD8z`uy~2Y>w|U sOYE z$Z_TdBI`~!iEf*b{wtWJ<3Zs0ZMyy3*4%u;VT=*8ow}!76HN;^99@*;5iQPz?g7uu z0xa9 -QKsO(RX)j zzoaWW3p7Q|Js3fDE9>Fv*Y)^SX?!|~U-PKHcA3 $p zHV42{-T O7!b)B2Ck zp^Mc6hoNvlhH;}p(u#SO25>iX9{?$Zqw`W8;OIMl?V|pr!r!_1wXbisVS7~>)
5$GpMWoe?i{mrBbk~MMs7PRKhv2oYW}3Cp9|MkgOC(&y zlmXCDOdr6alWW2nvj4cD5jb$0gmeGaVWeI bd%|_m4w5{TH8SLV<>52;bQHs zR7!OLp*Age;}-T=xM}xw*|N>|f?pPc?i56iG0sP{85DDElqm5Td}Cu&keOR>pbhO& z*3I2>&o6tQuzxRI9Qb>=qpJh$ti-2z@S6%Zaleu_ {%`OCl|bD%~yZIR_flv_eV?z=g35Xq}K@aa*0J<(1{8H 8n}0ICF1 z@Vv+YhBtMWsN_xp60T$UHkA7+&tRvpT@a*)>m6(Zlo_$kM;U%3LEbqGarcboYb26P z6 S{=*q~0)`6Z?u4Nt0} z)P=PucN0?4cYWjFAs^8epGEkxb$?Lzecp3)olfFho$5_d{MWT1^@Za~`GbLN2H2U& z8jY0=r;p%buq16cU#cL-Y@K>Lo|3M(J0DtnO5My~{=Af5>nh(?>E2K#|GJ(@_nad} zR2QP0UXe{M*+_K?YDc8e%$ki@%W~1wqgc9HqD@IqZ`IXOG-hlJ=G2XC+l#fapqJCm zIqe$lFVK-rep+`Dk@H>%m2sX;<@#Im&`SL9QNEM$X2xQ+kwx+&xsm=bRMntfAAa46 zu<#jc->sw6gFLoK4)ioC$_hx?%Z-@K`6>r?#S6)04Z03Y-DUf4-XdPulxDsY*=sg-c w&cqr~sl;AW&8R#WS~Vc)DS zIiQ(|r1Tape&mfEv8s5E;$d9A*7Mh? 6RcM65pZ)K%FTMOj0MB0)!! z&kj~<+bUd>t8-a0#>Gf!8WY8S!#$g4zfsZ6GriJ+^rt7tX893ur3IrEZVDAXo&NL~ zqc 8=z0c}iWDps9t`cs&&(TOuewX3I{q>UgK9%ok98X{g6J`-gT6nH; zL^$uM%&C_%AEj{S-LUy>>h%!}XWo{}empm2yvKRRB &oFYxHMGzv#q4(Kw4!OCJ%Vgd(RFn02m!Ss6cICEhY z^Cb=0ZGNebdP;GnDNA(U!gD_djob7OM#$K?9%awqASM2`KmoUV$l1>o;&&8lw6nG~ z%|uSsB3XX8#VJb*f->Ss$ZvyEL(^e|s*SB#^JN|CI)BooD0-3m?WZ|LC-3a0-@)5| z){=S8nr0Fb+)_d7UD0J>&Oz9#SGuo&*d^JH*nBQKmNXSwpLM978EX9+;Z)tBozGRe z*g#<*kBMx4aE85ie_7t;=rhX&@6^z`dT@MR$`j&~^3 sdRk3IC9#(f!!txLm>EIXeo5%XE{C!a-YwIuqKg5&UM zb%d3LH^qrC$bzPy
dWscmjB7rfSh2TR zn^jy6{)2Z}|8+K1q>F@veL{3?#ORRhErRN`vCF>Q{%Ya0B}sCTk4!z6M{N0+w)5Hf zVEyItDNU>&$zX?Cvo$1zey=mqYBo|w5fU|TU=F xfg0iQQMZAP^rU|dl!ZK>6; zlLJp7sf0#ek#v`TV<%IH5@@Eh2n31P4+h 9in2i3!iYP#jl{bzdcPwy}d(I<_qJ z%kvkVv8UQm74A-Vp#z>I)71vKWgDG^5Z1mD{+I@5rX%qjteIRtfLRsZ5n#Mb&vE)R z9`V9(fNeV}uyKQcrMHg0Mh8RagX3vy*j$9_h5)x5hU?527Eb-JIE2%z;Z*N{Bt O)mUStXN1oUJ%}sF75UMPV7wD+!gJ0eWOp=$lS|wIEsX6F%IQ zEAsi^9Fj##X4PRuBQ@@3CR3R}@kMvSw*4M6tQGumiOV8$T^%C@W}S7M8ieXR4mC$f zuU4*wSZ%uP=FcAxlOc79vy0_ltl_d5G@Od0Cu>REl&wzUj&8L6|ENrF#=6~fp9j!~ zdf_Qo_1`PznKu9ma(LRW(RQv&a(9ONGuS`yCICJt6fw5@pD;yNK>T1q#N{7@H;BPX z2IZ1gVSP{IYy$h|0B|Ji0pOy2z8p79?ThNKwUz(tvjqYe&&_74oCS3ER *75KLI|8tXsINw=?N5MaSxP1U zVMxEmBRg2XNKt(v6d(+ *5=;kb0H`R z&ylR;9FXFP6MGanN2g~cC(KhZ6OZQWpJWAESc#PXZ8wpL+V5|XxX}+4g|*;1wM} rupMm^_D=2{ z%{D(M?IDWa8wG&115utT6h(T1R!*v%A%5{r0x< =#s9tywRa
$0~^&qc{rLCjcxFM`bND@j( z==-CZ(+?THmjA{%P@0_(m466KTo^bhnISNvjds(+ehhMpbT~2VhB>}*B@+}= zw^pPhEUD2m>4@)T$8 IJ$15IOW7G&Zo>o~p z3CmNbpM_TEy_fbgr=)Zl86j`SZYvPJJdNj_e?We{|Ji&BSWdHuyc>;P9AkP{%w@9k zP#KD6vfR`Mea>uNrZe>ouYMSnDY0ZZLF>-M=>^= ny+r-h(SwqwlP$R#JM{vrkOBgOkGH>A%~qyOc7b(r0qTeQ=PB7w!6~s zDtXV+;q$bEAsbn6cRBs#;q9_ECBqa*8yu32&v|z+e=7yfrS%4PE4u4D%~q^4bH!K1 zR*%g8Q7>UG2vRocX$GZGPI|?OAbC}?I4W0WJHIbz&n@1Jc97| _naH0H*ewL--jaOXWzE;s5GXXuaaDbA08?`k#QfC-P4#_-ScXX zX$kIQ2c*13i{FzJPC+u 4y+ fLs2=M6kptlp-$6XtR(9t z&kLi)a`{6fH=_jG8!M@<<%d5Kb-e(M|MC}1#?GY$A%@eAH48ko&vAlZB^_mdOYG5_ zg2rqpf8H9bX^JTF8l}u;#)$FCuPyA9KrUS;d{V}|>ocnLUzL;dYHK$_PF!K+A3_Oo zOQWHyrGH0hPyS+4lzV#eRA(1iESu3@;-XfdEG-p=XEo2_1IYu>RHel@L5C%m?8(^Y z8`>-c-=c-p9@LXP*!_Gkoz<#k{QX?kD#my)VneKTsUBB8-()wcsCf!-K$m21o9%dT zZ7Z1D5}2hAD>|A^tTF21HvTnkMX13q<%e3-)zv>T+xticsG1O4sLqcT1R {rM>Gmx}!MSukAMS!x$}RrAQ~^Uriz} zPA@b@)aO#3#mZs{uN7bayfkCK^gwV-SF8E)FBQY`uea=&8%t7M9b5H(gKyq~U)RM! z&nNZ@%#oe%z~UZJ&OQvb?C21%UX@3xR`h5;o@EU+atyZqPNYKCMS J6dnvT>Rs{uTb0GZ?Y=vM*aM(U-|WcbxH`01zL0E}_UA#zAzuHmA| zp?_){*|tyc#H!XC7%M%)zfp&VXYSn1bg8-hn)MW5U4%d<&;XVQx(%>A?MK6O0d>rr zCDG*<=Rp`D_;3gSM0|JQh7#i?q}+jFUxD>fO>1X!Xo{oss}f~&hY%ONde4i%I+ip7 zeoJ2Skp+5im7;(ws6YxYEVbnYAOrDS(w7H*q=&`-z5qMJPM!$>4_e17fQ4QR2e_er zK-Ux5_7ITV_VEF9k-210niJHP@h9VZZ1MZ(y9p>cNZ>pA@0qcV{~qV>#;y|&4`Qy) zJO><350y?Bu9WQSWeEGhUq{@&fSWIM*R9pf1N~E7>ON`{lpa@_w_UUiq0uM*v|h^w zT~;4+ikW|M5*nB*)-PvMW2w{96B52F>w@rn!GB+0?Rp~^7jVwGSx(`}JCGuVna!i+ zk_W!#_O=~6JePXu+wyNUVVhVGwQjz?p_{IGAP+oXDSvD*>6~1+OZBwQ>&W5pK81^s zXSbv4UZ%=h&7Q59Sr^6+h|T5ZRBi;qG$jeqHZ{*b mzJJTWYhlWc3uUlJJ z-@&BIKq^m|0ckpaQ5$;jo5K74 _xY$pGZ!k`;U2Sj`9?s pU#S$7nE zZj{cGW%T5<(G(=w8CJ3H_fu=ni+5S+K0S5G6`R4>2PU9A5mwQ0lEM*?=k)0F2OGk_ zBj+SiOk0$Y(QYj#XOp>?MBaH#mF*Wle6Ibt^PL7)o1a117eD 3hCG%$z7t*T1sU5!%6Id&wuwr3S?*iog$Bs4ur_U&+o1)g;ac`E`EM zGHUy{xN`CPUd`t&FZ_|hZC3?$arM7H`Aom}v14?>g?o`#;|OsG&M9CBincKJC`BnI zw?l%5<&WNZ(0a=8bg^2BX}$fIc1JU|;!E>A=eUN2AC18Ccx%kI5x1N~oe2d zb{WYRq|`naVKRc=HI4`R47zUYN*psuVhIN2;`&YB4{dm;$s=YLgZ+xZkmRnPLA2}f z(FbDM337ME)ovt6tEnb0N}tyMuU9o3B=^}91BJLvDTPDZ2k+K^9 yMb=iA08 Nz`kA*UU8KA6HYMLy_OwU$+GvQ0B3vb9TazCs$y-fTeso+qpc9i+;+H8T!o6W_ zmVa@|1Ew|Txwe`8+`>zILtHAXU60$MsCZ`M;b8@qVM}!Q-4=G52WLttk`O1L)5eLW z=)ab-CO>m@1C3IGj+*r0mws~GW$uMc5VTJ^jqD;rq70I=&Cbk3!-+UD3#a&L2AQ0e zaQp9E7^!nHFBTi|bO-FM5LHuEE~r+ErVf{{hdeSoz8Gg?RgrpR#G*VVw}?0^UuUOU zAm!6jg$@alg$*RK4FGd0h}g*TY4(ynQ8l%c0P*fv@$+(WCdkT_bRHKqx3B#X GLw!WBPclNpS^A|P#WCbN^Mqfd zHIHH1XPxZ?NW{>e8>NI3zBwJFE$y^oofSRYQpumJpaP@n;o*K$eR2|C8r*q+UFlPX zZ9rXNY%W8dyPc=laKTuA|4=soADpNGRJVIYMDeSHCOFE;PPl%Tm#71I-LHH?M~Xt* zpn_=~>Mb8i4y7IQo?>5Uxeg|S>n$^~uR_$m{c5sX6xeyATi! }(aP&}6> !EoSk2G4$i8g=CYjCBvS>%J fbU+?M@leGGf?EKgbv_AY**& z!sk9+VpWwcas9}NdY#PVH*!|)>iNNH^4C3JJ}vgPLON&+bg0M%3(FG4PxNbtX4EM- z=rxE$si04*Rd*K@f(e F2$#x +r)=oQP-TAZhuaXKxSj^WB~F}rYBauG9uo*^_HuFkr^(HG1XN_{;Rkwg`F%4$ zfQ794Qw96m7xx2a&r4(gN}VGnwU@y3y1i-w27Pu{DrIkL_&m`^dmbBq-lJM-`t myAf)6<#wS XK P`!-2 zRn;sj8}k?!@QZoik@FGMYn-6Sj~9www@^XP4|I!o@Fy>%fHojki&o~6Yufihdgd=Z zMPKO80BqYQ4_${}RYBeR{k4>lzQ {ixcoTsl~}5zz6ZH4mu9KUT@|#0!+{Tf{11Zp_8`u5S5{ z;L39}U!}iedS4DDEW=C7=cn+HU-%BY1?Qf|6*OtU-@*)&^jGT`Y{Ti~9nM+)`%pjB z>ElGk{t=2vVi!X0-G~KL6baEb;MfGtiKAaOUpQ7>I*4sKg`?J_p-*GeR^JLr6OFFb zrQX J7X(=UPa8LC3 k!4OB{_&BL!ztSkoi_%IZ^kf9h52gjuN|7)!;~EGrh`7% zUpk1cSs&S#eeI9-HMJ(<;?xI7{=Dn$`Ri9Z_bVSTJl7E `N O8IqSUK{ksa;K-@)~ zjbmr(QEEjanHu{1ZQt{ECL(tjR)EK~Z=`HO?LG?103{bvCtX0H?zH0l(m@rSQlj|O z66?FDH}os@1z^ByBtq%V&=ipn2@2nMQN z7Z!33dg0C**xOJ-NxekXY51W5`P*DU*XveKc8ax^|NNDrz0*e_t7$GbSAS96%t$~i z-3kS>e~?<#&DgR>zikJ3Ne|;8K0{5G^7~hURL5t{9*BB3x&ci^e|o6VBT=55zBsM# zqUaFAl+hik)P<=Nj(h98Gf=@wnXJK-_@%D3TYI~2D`@;=E(uOqIShVP&(po@G|zS* z*QQ3&%-q)Q5>VgkX6aDet49|p!~2ElMK9HUAlJ7IYrEHqmkPmeRlp4|qPD&j4A!Hn z&joBmJ)b!>`_|<+Ha2T`Iwtt!;F9~cO=H95rEkVZzPK#C>W-+QSgqj;IrhffjOp_? z9$%3+>pT!B3HDpo=G>nip+Nb0LV){0=eE36XK2$ nn3EAsr2ZyFB_2x&&3XUB_G{oXf0Wmt|VcDx9XO6Q?%L790ZWK9@S zY{dK!Z11XjEBKnOph 6>{kY)>+mzz_(PUY&$8WKIdGH@T zIfpp$Mp$s3KPG1-WDI@p;t!?P^c88u__Z+?% >#KgOFwz-| z#G+b!arf$9jgSHlFTc)~tGq(&7`PaoIkH@}9dvrMV5^pTrQU#o`{_UI*$6GFUQ!}8 z+ZzKpLqFsDrvhU4TluNsR$nxL96H7J3~mfke0?`C6IP1LWXIATS#a;_b{0tS{@svq z)%$?N$26ft!=?Nc+9_9n@#A_^nxg1Pz 5qGWUpxW-JA)2C#4rFo!V)B z&8q$pR#{u+MrEe+eb`Ab!i~j#tD$|UR#ofg4HEcmzL(!kux+=|O`kT7Yz?%`LUy%c z{xmGli!xsk=++XHe@gS-SMb>HSrXfN=z*U_$pkDGGbB~rcED{a`{SjGQfG0|QnT@Q zqV?}~4!2utn&sN|`9m8riJfZ~Bum!%hL8KGj)pB5_&q>-e18%UoxMlr)(C#qVp;(k zW8-fj-u$jWm8aH6o*%a<6 C_@(k zlv0K+Y~|QkAmUQhy?o^N3g@U30DFIZS*ahmcF+x|zYs%LvlE|>05#MmT1}!q@#)NO ziRxXhx`2YiB^uai-#aVh@mRfd5Z5(3qb{X%yf~{iT9NYXp6%$^Df!waKtt>O3m9gz zI4D)-^{g6|*w-)1@+^4Uc7)}uQ5OWSy3)4tK^Elvt=ZFI0du%X5vbEQC6*4Vke#M% zYD7lb5E#Fn Qt%Cb7AkZVs=^uzF`}eW_ zVH4FA!utP;c?R;t$@6PheyY- Wb2F9IVl-ZRr8D#a?DBebA{?`21 z>EDp<^GW%`h;VF}y3#gesJvN$>b y>HKre292+W z=s&YxvM=O2Xi8q!ZW_O+p %yf)xOYwXS-7dLp1CZ6v^ zvW=haWr`H#iEp1BI(eW}SBc+QVCQ*a5A!3{jmJhU3?Y)kAXI~ZTp=I3gB|Zw=XW76 zYjV~e&Aj~*QTGqzYyc*C$S=L!U5cM;yQ|I *4dLK=7u zYg-6h^XY`Fz15SiGq4zbbp~tG7w4bTi=p<{BwNYj)&G3zcHirUjmz9HhxvSDWRixX zZ_;3_qLVE?pjIX%a{1DBB<9j<_)`flscpGC1C6sx(A02rYFwwSS!;D#PH(KKOH%i; zTVRcO|IffaWwVuwq&MOQIfXL!_apjK#ZFYi!}+J=?@Sg&B{HHWU2Lv6w@t{@Y^sp5 z76Suf{&VW=Jag^*drUF<+DR-jH)bYJFy@-=i`0UL>T-fGNe$6-DT7kC@cH&8fk&f` z0T+^H#DmU>n2Bo2byr&+M3Ag?F6+b>`<@C!4=SS(n6JCA=Zm3d^1&)%U6iF9_XeZk zh`1wHL`DK07OwgkdL{`jWYjZGky4Pv3+KaSBhlBfa)FBUKKk23sL`9#c?!GtX7>Va z*ON%!n50c@O{eFjScPUq%v^JPK;6wEr+d4K3FK2EUYq9^wFLT>9KKg~debJizglXx zSEV)%cr%JIQybaUd=UTJC}+G2MmO|6%d(g^KL}l0@s556!8;S;1%lGL-CL?WPd+F- z${Q7V%vDi8i!kw29z{yupUvf4tSOR06jN-lfFZeYf5aPNnmdPD?_MW`pgDhE@l?{# z_nb+bFFH#wEFDSRZzzBMjN)80YJRArm&lgg9pPlTXuA4pnl0o+O}46ki|kjs-X>U1 z&e}{vS!#}-KCby8d%8e?w7GG&g0qwa`9uBN?33mJne4g+I#-L!Pc`#80JR|a6s=51 z=5Wz8q@Ngl-7jbIp58cesp3!8+}Wek6q;$5tkm>6q&n}_;Sj_#xsI9pq;K?dyE_w- zqR92pN`b8tbus!c#DiAnoN$)VNAC05`@Wsrz+GE#oF;$PUM{NuobfaGle#I$@{fX! z&wgr?3}W73YckPoIPP-;?D*RLM|1HYkaC1|Mthfh&M+X?0D?#r-l3<11N Xf0@T^(WGrs*liZ)7y-V DEo=?Gq0oXXiw}miG^Pq5G(bs@9;jY zuM9d67ujW7@`!NB@5Hu;W*i`Sn5DNn+?iq8Sk!&ROip~0#Ou}15ss`#Th)*C%!%d= zsBazxml4IVIiKzIOEIHJtaaDt2~W}b6@}cACVQWZrcBIzwWONExl!j;4E4{UZi;+T zt@HQLFAq{Zjb#uITwOW-9FDPZPGzzwdqj|qDSFg3#^38VPz!MSz>Tf2EGc5h-Z>A9 zqWi|rUpG5LfPAY>#gJ>u16>J@J8drC4 _ zN3zmH^|IM MCgXeVM*=f>+Zc`I<}`jL`@8iZ95R(0F Bfu$=xC ztj00YYsSQpfBWDGcmq%dr!T!pdvR6P=m6B=&)cu+vzB}II~;`UA_qqzq*MW_JehTv zD}P5!Z1>)e0FD3WN#tGAOa(8Yg6VH1<-QM0!xVq)_3eb~KA6eBX7>hQ=Fb;ikT|Du zZ1(a^KdH1(@54Q}pGJj_ynHL|6?wOAq3eh+pv<(}9}WHb0>C4>s>0FUz;4>%_xz22 z$(5})3141pJ>}7F^1oDG=eJ`mSe^Wj8NlX06o~V3%>nKqeWJv_GX8qx7oeC2RnFdo zDQ1)kJS+9N{3-8Q0TFrivt&O|*smIDL*R=MK#Yj?XCPt|ApRFc@xdoTM*vwVT>1=N z&(x8c!q3YH*f$*L1-f@FA5jL-61zSCo?#VWn@>$-ksxP&{8N8kyV7>9ey7YBjBNYp zhQkcu(qW=(3GuF8?^aR1(MU>8@D5*jxw =3kpQ8ugj!`1B;`Mzfw z4)dMaX*X!<6 *+K(mUd;vRt%BFY!T~N%TG&Ah;YesJ^y0Q@B z=QdbyN58EkD)GzWq{p}aE*y )Ij}g(4S=fJq5mfIUi5E z`IUP47s=I`J|)lcYM58vnAFfG)6JV{6$BnXjpMp3>Ear(*gnt^_s4hj0@jvhe{tlw zSz?6sU&R|5@18RozsVcdL-GPsz}~k5p$6-%GYe7$I_wU;m&HG1qe5_{^2^%O8}qbY zy$ zvF*tzY%XMHF${c&ZELL8|L1;?lS+GC^Ai$Q&coO%I5-Wtgx5=$@`1;Jp-|3@c~Il* z>)fiEle)(a*4;>iKE1=6^n>f?vbfP 1YBU}2Xy0~_YxvP;i-p3P`;aM zts))Zqd74r{eNaR(`>I=_GkZZjKch@&UDMe@g&to9q+&?*#b`R*jgwyUZO8Xa*s1^ zZ74^mLIidC+u)Rl7sTb5IE&Z-p)#IMyPkzG$>wZL?jP7W+Y4Ep*|7*d|JbFJoUMh< z3J1{u$VuXI&1xzBzI1#drB8>qTFbvRstDEH+U@d0YTCPZ3H^M!MzdwiTZ)p2*spmP z)(bP!UKHtehMcW>m$&NuG}n>$9w)&fe^ LiCx0G6q6^E; ja2bx-j4YXlHYd6& zm;DRqJ1Fs}mbAl>VH;07pG>>>woAewgE_ue`L(pao+ilFYiDPFX7DGCc yRfZNm|6&va=GSGP*)8R)J0g{7VN3& z^r*{E)NtI08{jCS8z8Y+vorUaNa!_?JPQHiS)rjMttk#C{W>9 *9tFniIAD&R z6yV+e9klFHz)HuC9x8!fdn@l)#ngP7hV^Rvi|AHd_c_)Tx{;{8ic|JcXlCUn`A#hS zS(if+v!8dJ)p@G5K%du6@D)paj$CVC=)*R%z%oiq8ogjLl_;!<8d(LRx~I@v3wXn2 z7P+7R9YL*rPjL!Z8{*s<95Oq|Zrbj~T_9#6b}CL65wd*;5b lL5G<7Gjkv z_^f132N+OUpf_*n)^ a{^J&V9UULxRBWoXejIVBUrs#PGPZg z$dGD68gg(JCxdFCz24@2Z_5XJ)%zdA6*zIPcO|N bDVF%t8Ni>!Tz{a;HS!etN5K0?Yu*q9hBn5m!8& U@ zru&clC_pb2_&S5>S9tagcIROi7SU+n9rPc|aIO=pxvwDas)$O%hWjzi6i_`yvAZgu z&H24OiP^(DzkF$@2!aR+mHyRIJH^aT=BQ51InLYGFL>;$X@o+~@trrCm>HaQXI2h{ z`wJsKPuZ;2hIcdNL)dLNSSLQEo761)LSi?J!xCu3MPi%()>D*;A@y#sSx08#7k;j@ zY0!EZ=_i5GRDmE8%)3XO*7~DsH>o7%UV; _z^q?*IE`?Rh|F-O#km}Zao8P(6ZHJWmRd4p>0Sc_f#_&r zd W%G;O-_syiE3fjb}I*n6G)iR z4; 55;BP#*u2<||ANqFHg*GMMK)ry#dv24LI!qwR?;=Ta}?+Y;2r34 z8Q~SV&*cRFJBMZ1D_Co2^V*uMbK*5JvZpH5-LpxD*0{QjQq`{GK&voc3OllVJdH;y zM07-^?D!dA+!20w)(!WNwvQnhQ=r4B>ZT*CE<_-Dn=TlaTgexK-O2e`?1f-4K8mA1 zHDTe-P`*hoVN+j5ICXgnObRaKWUONlC__OYwVgz3VyZ?=)-ly9B)a(d#RPepqRXJ` z%awg$iJZO<=;_tRUaG8)sx%R iif>*)&<2XMSB&L!#C9;pQ^Oq;j zVvgx_w<0`H-}-`K8smq-YqcHPTw4oT>Ksi6Cz+kN#rpAv5C>QsM0o4T^7Da#U4-Tm z&SO#sCVF!ij^*pynzDOfo3B$EOoO B4X3sm>D>7d?QP&5cS4oQ%pn}mcrL0 zpw~Lpp>$ekB6yLQ0`+B{hcO#}AOAa{v;FmeJPSvk{F>TQ50$^0eUCme0iPdU_KIV{ z!_R2tVsjdoi{afc&mni<@hSM?My7uo{6gb#HP+NqNNvi_QncgH!CL3f8Rt*yFiI2C z(puam|N1)kva1Yf!Pl4x{Tk$AXU}oI;sd4S(@cHnK4-tbtPhL)P9uy6lh^TEoYi4U zpbXcZ2C`hjn !Y)a=-)rvNHm;qFZY@Tw+Y^XAw8JO8hvb_2Kx5FoQ#mhW ~+A7t}F8M(-W-HmKbn(>5mj|R0dzs zxE?!ipJOEVByj5&^YIFE(jdqzgMtFGXM(4cN79)YQ#Cb(kWu}MHZvdK503sAal9yZ zLmxx?53>B#v4EouilGf14=WDee*okSfdL63sl_TH|K${=qV|j}M`68`m@nf>{UYnW zo(IXDXG*!ZiS_N=MZVS2)@Eeq&E4Xen}CJQI*q3AUc!hQAa!r@z;a)WpM<0q+dvbd zpp{r0h}-(zdI^qoE?H);^79L+r68LFk2K09&Km*_@7uGpZ3UahE9{)Rn|HEjQLXZk z@KZ$4TB;kf5s$8F&F(O0@@9_UMFLG&II>opni&QSaF`!yO z!iu0teQon*g-MK4Rb6Yh2^riIWN;@}T(tU1%Cs!gA &l->ELfX0(;Sxdj$O$7^{HjZxCCo_?*(&f0Gf13z1Nxs#WYxxMtg ztp%SJ{BzA&xx~ndb0Z-IX2Fd!mk_Q gRhcA#`qG?tT*~a31%X-Kn!?nTYz&NzRpl|MR-Ys1G{@yMS$(rKzHh zmuM$g%uwH`tE?QKy}kM~a+$Y~Mp}GGmJae$%+wZuD^qgfG8=#ODl4PNbCMmA4mzuY zZ@__QlX&MJ7nXe?EWO5oF!$s_vnO>cO}O*%TJwKlXCDuXYlS*Y@3j2M5mjBk4kCs| z;#eC$GqKfZ!g7=9Yd;7g_f22p3N@-xSCMXJf_!P`Jt)Q?B~Q8IHuQ=ne=Y*P){c*y zM3#>n3)k`dLM<7@OI7qMC1<0zNdvzYlIbcO>-pF!v)KJ{mAc(w!n@i9uZC+&hdE2v zgyAM{g|#5Y8AMao; d2G z<&xX4&fmc`8e7rI@8* fBiN9KLO(*;ohDAG{6%!O!S(uRpX6)Mye`$$_ zeBY6=o!YH)#Gvt@Zo4JJ@b|sZr~PsccM5VkWG*wD>A_Ez*cU34cvG96LMI@KqgFnO zu|{4#M6DU+bp +PP(J)ATax|vhFm|gb5Ea)`Vf+y z6&N(| ~TouA%_j3b@O^o*$;Q{hH_arSir%wLJzsEhH}->NGb7jSem`tg$@~+#eLW+c!3P^ zVg6a8>TbX4D@$Z9ZB+Xb@HN=J66~M}&HOvTef2)Nduw0|_am$S(rVuX$Ggh|Q_V&G zH7AU8AGStcpp66p(pkY5#TzNEODi!Rl%esEElX$)C>GZ>W0{h%1*VR$=irV`?s?_S zv;8CML~wwm@}{b5_x53 dA2-={^CBH{E8sJUV6BtXO^OPX_eQV@zv<2!|3T~pPnBpm9-dP^w4;MV zqdk~OxIkCs8X>Roo~>ePZ&lDtp)+HhD+t{rZ*}DX@Zia5Mq_%4jLRj(paJcy?dzDZ z)Gg~O)u5eQBA#o|tyYT1!wiwFs YPB_Wi~d&t1% zg+u8Ze!b>|F-%lNuy014JEvmRQ3iBH)n{s(szmg wQ;;-kzt`llRRL+FPu}{3Kyi*s8q*yYk} ~ p>(QE8f zo2bInE?X^q-N}S*hCkuw{2&b6%}8}gOW2>2c60(~_S4c$ndJhZu+tT5Fd!6BqvojN zpMt+#WO>cF!xQk@0CAnztODdD12{e>!r^7qeqMbRHv73*LnYwx)>U?-&*Mslj3mB- z|Kkrykq-p($|Q+B4frwLoYttffiL?xUXi~OKNAtYi+zgAskY`CNs%fOo9olp^CugT z&cUyfW`iYH)YLbgQNL*{NzVAURUFR(aoW;t4-hx%A2(x__o>mnFYBQ4!GW6_uxs`4 zObpE1ML9l}_fmCet}DX|wUfB%; ~Um0o}h(h(Z%}CM ER88!Iy&i(*_xnQOTXlw<>s~fM#MXbvC z+DO*INzftn*;$MA8?OOE#XVhGhk2;T>ybD(>!-21TL0U6@r>?igNmZW(9FdSUf|eq z(oW+Qeq$NOGm~h&O0 w;%~rPD cz{!Kb>rm6Id(UvpFp>-D7qcg;Z`;3F8Yp;YV+BDk{!}Pt6X%2&VV# zbYVNXRAD=olEaW@&nL`^pR{$qDTWPn%CKc>=f@?F#OoP2DV~AwYkv{*fAb_Q;Kx?# zi~Fas8JcH6Ki@y#+4x6*9aHndU;39_Y(_hl3>IRJraxfY?{Zf=n@2A;#E-iUxtvY_ z6`%jsQPFU|YyI93tQN;lv*@w*AO*ceh>_;kLB(5Dpe$ADq1l&_b$z^B@wu*qKfFh7 z>}nH%_0$fNA%X(O2e(60|0r1=e{+`CM%p&BAKOBGrcP_dl2Vl=)0{&IAClL`Bu{m) zuVzXqwQUTu1}^G7?H8HcmD859`|B F+EY?whe-^pec-!&OvbB(^3d`fjq9vocvmqu6cmzG24C)5Cq0&$3BYjx;S| ztt6Z#U#CKt1nGAi$X6<@G^g5wLHUjJcWFYc0Vn!8Muhq1M&IU^N5NIKvS-g*7ipK{ zqKD)hEfFNmNpkG|xrbb#t>W`;2%B@-j&)<;W6g!pMn|TeKR&C+iH_!?9-5%hR* a9Ujma4Koq#plxZ-eL zZJ>ivC;42%UraK<7HWzl&X0X*3NkLm9O5&CpY~h(8T7EQ*@{0T6jh}dW1lC4sLfE*nEpQ5yWus z&w7`9DDM{r2~Zy9Bep0!R-5G|NyL)I?Gz+=ihkUdJ#LX1jyB_6iN(kcjH42*F4>mW z9%uNG5dMi^e|NRc$s^4ErdQo1kkVIJwLst{1j&RyOu#;w^pU74H~0slxTZB>qT6|g z-871lh{I5XO(aGpQy >L$q{~rmE2kPqQ5CVm1+nLF|7q z*t(`_RYf38($uAEh)*&4n4k%sy6K6bD^<*D-9<8rXItlwa-x~_cBZY}mW2bfj7eGB z7rS(q-ya1LfAQ|{!^D%eE1c{8W)kYWS67>k&GCr~udI6ObGR#im{Z?~ yEld5Ed_Y~36-83nEsu0T)b25= zYqA>dhV;h)XS-xQKq v?U-PQS+_b?5)rt gA0w(ujvr <&NAI&(<<#%S?9R2f=O#qms55_K?p9S>DsO7Z0Bs zRYToq1&3(PF-d$;P$l>&=gC5IkQe%HlBDeBYVNXqF6ne2SBpDFdq^_0t$yPO 78NGAqtjEl$MY)mvH9*X+XY%A1r+`LbhnV-*^N1as8oSYXB++f zMdkYE^II?)k8DDp#^J|E!te*5h=K4P^ZE0Q?SH-Yc60tjz(!mTR~;)e#-}V(!<5fso;gy$v<0l;ed+TP3X0ZW6# z?~e0EdJnG3)fwTYTOXdgdLVf7w-Z^0=j+WJ0N0m;3;TvmE^YgCt^ q6xaAxrhN8KN*rf7 z>otdfcihxE`E+=-vF-QBi?q#GU%*?4)eq7CfppABg#{ar5COPQPg5d}FKVsYdEC%g zX+9R|=mi#_7dDAEuW^@R8@Q?6xWi3sO<=b7DT#QJQQ&Z1IBt-Q#)b)&k7!WTA^guC}n`Nfv4s$Nu1H1}6k zG39~*LE9&c?o62@6*K06cM2>Ie+~o%6#N*u!tjWah%&|^4ljxnpC49GF)cc?ir#qG zxh|J^;_RB*4jH|(rrvR#aS@p!%k?(ar&G{T?TwwDc8cC5 DKh^rV?pgHRXW>;|2ckhFj<(`J8#1&TG9x9^A&C zQy%*1p3%yVKZh(ii|0mj`%45>cZjc*F&wCIKcCTbXfE}ZwYC}VvW<&X6(~ic5{By1 z7mABui4P0qC-=+g!_DurD6b_=KeN%S(jQ(se}w^wG;~K^D`=zI9~Z;2FkH%!O@~67 zmPIuQaeDQ%8;F`Oo$=$LN)G$g0y$Wmd^Yz;hU3Z`!P%cm2&wNmEe^M1{p6{Ko#GM> zzE$h)m$Wiq*hBdqN8cisvZ>j`)@$5p-(tb1Q;<4$CXRoCiuap2ZjxngYSpKP_dPj( zB)wyNX~aq*L-2_JKVK3t_7eZSuRe&S*40z-V@vBoQFHhEemswCy%~}8#>y7^-B1xo zqNwJgzc^&Ylc5^o@&&tS(Qpy+sg$#KJ|KjIki-|0l$$>H5mpxL9veF^ufYEr>b&6M z9%-rU5I2{KFty{*&_L_S1eYAj-j=;^ZtE#z;DAE91$&b|2^@CaxHeiR@`=l6Mqos0 z?31dgB&Kn0%d6BIH<3Yay!D30f&uLgXm3+nJZlCYGb<7p!CIN$jAizqq;s5VNp4i_ybe^p3mn!>nOZYHj_cEqw$GQ{iC a^L&K zz;QM2-gK6tkoS7PAgevGlt}VxP1&6!HP%D*dQ0yif~CczP|s#0rZW xVPud0#N<+hjo+e1Bw zS; 3+3fhwAaw2D`nUSKm-g^nrBgdph4Fs1DB?GbSID^jI<@*--O z(N}SI)C(^aEkZk^Hd3J4+@HNrmmX4~=TFOGW>rgw$%8QEFtW6C|G8w6>nwBzz z|D*Bl=aan f1JR@c@9@U|;O6rt(5ZsG95 zJz3E0s*1-xG_RezSmP&e@zW})9$Ucui#LO>#lPq_zj0*D8v|!vFzxH028xo{ zLW@(?0SjE3Lx#p%ta0WpG~~PTm{;qlABa_wqN-7m691u;WU`YZDwQ^%F%?YW1QnB6 z=$b?FXGpIFm~*a(6p>Dg`cKFPa2e@i4p-$IYQpnq_3B;gZH>|nzTVAeV)C@zE9iYA zNaUp|PaJGt 90MAn%EH-yxZIRZt ^HL)z;| zHv)eigVaZ3^=Il&FZdmuZT`Fw5^%vejj_$xOZEA^0k;jsY3%Ei@9uL4kUhcRm$yMn z3uz85#K1^~;q=DTZDN@VC;-{i;rK;VY0uL!hf-@qCYo+8EDLGGxd&V^3)IEtIqv9$ z*8h7qgC-32=#znJ-w;ark=x5onT#}TQb-`$v%7j 6V$uT}u5a_9&;=H82jx~TR4 zd)xE!C+6H?BPfcbe%uusL^`9MTAUXI+P?HdP`#JohD$?@UuO}X`%~?$ZC e%vYwQD9LJ~9l6jhx4 z@g%V- a<)+Y@ax?clu+#_+_Eo(3mf+6N z&XCz$1!Xgn{!plnBe_jHqpD_!LI4SRmcAVpko#+tmE{;5d+Ge*iaKM>`$k1ayET}P z?!qhEdr#QjE|!%>RB U`>-{+&)Y{<@>ci%k&EBt)x+) zjY|3~R(n`^vEAH-=l0qh_m^MmIix(32ylGA*NwgPQeDSUd6X%*9}eSwZq3IBl3;qv zWPevGVG=13q&*t8yGP!G{Mb=Q99Oc@A#iVHGIliZoO*aC)!spzpB 3e3C}Uto4! zLQ7}YUH1EkEiDhp$(pL1q*+?w0`GpDU0@VaFs9pu?-_}=MW|L!F1TPRRK ONa zrSGZMi|2dGZ}8X O{+t;>8W`^*#Ojrit z?i$G}afSgZ3A<_MdZIQ{S(&M!BjznMS)s3ZC<`v zKtOl;<>qGE`a0fz<8EF=QsXVwXCH;&xX2{#>JaJ%;Ub&Bo&n)v()I|pp9?KcPZ(-y z&0S#R?ICL9b>C0CANa{v+g9uN?+HnVr4* iU=C?XBA<1Ekjhk}H5^oIeye2V*!`TZ`^P)aMo=rerrguFg_cmDV;#&W=V z1-hZ#Pv{ZR4NBu|%rj*2zvN)D((KF1O9KEw?G6O@7G|M1G%>HTltyBK2~WV7#KQhy zEy(e2+=A%}pyK73KkY8ymYE@cUSh@qZ}4{(S8NeC%& =FrZF&4i8;nJ{xR2IAV-{Wld;}+%(u`-m*Md+jhZ{ozzAkv_#`J1DcWgZY5#Q zD!8)T0V?EZHM&~Ej!Ed6{|=-&3NmL~Z_~J&RIJt(!-tZAw-R*ua`Wpvpod!s65jY& z#txlzkJ|Z46gV2KO7&{~WQTxMMoST~-GR!wS0xX5P`C7QRVL7CpsPi@vsl%1-bA+Q zjTTm=N=Q&ZO~GxWzoNPNl0%KfO%%l-hFM$W%$E>5kv4YhJ~t{cy)(0wQR7GLX=;4_ zORwQJLA*%b82f~Ge&qgh#WCJy=j7SjwjNePBE`9|5~oN|Yw8lTqtzsIIl?yvV~sLY zEnzYb3_oZC=eiB1FVM`EM2cTs#vhF#OBU>j;#-HM34gW8kh%lIqTda!V LR#}#8p@{OQd z$_};|Cx<~B73GpwJA*BX>o4P8`B^NrBB=;*I|$#8-M?u#1I#TW8aEm~1nuJ)6xo4p z^Qe3!n5vU;z2?5{Y<0;6W!-DYaERp4{C8`#_oR}la`U*zlJitB{u}jB;J6Z~J$Xzu zq4aA&W?r4gw4u`{YC0fPuz!?s|3C-Yf|2}p&^Ykd^Szmxk|f`0!{=rE44d9ta8 kcc-+~(S@b3x;;-WOXM8IDTe wrwE!|Fjblrbj~uzzf%ZYv>SdjXJ%D z9{h%-R=6}%IP>L(eKk 2J4QHBW@1PSzqO4lYa;hVFNRf@3 z)QkVy`oEsyb{%8NWz1USx1Ui0Q10vlmJ4^=ze@G9h=h-W?1jw%tUYr+Ep^p)oxka7 zq>|2BhCuGZmF2{703;Kajld7J0TfoYYJBF*e%4D+q*&yPj&Y<;5vuh~GkOO9up1-; zpzp|H3$Rrt#W?(mZew!<6#Gx#-1RCWo&F;bP9!^yD&PpW{r=>r`@jm!he;bh4&8qA zq$C}P9Ej`ht;zG;W|L057;LLff*}5z?GV85fGH6O0M>d}W^e5Qq~Wc*@6YkWUDm5S z`ZRP~s7L>w!%fzMJ3!7L%lL8l7w&Q(mh`qQ_ZY|*7|mD%YhL7xxzaMg2sb`$iT>2( z-AzvHNM(NMQ!-(K5Y7XlZ@$s`w!1b`;ZnTKn>iikas9t+1@*tAhi+!*`fRy>=lVz{ z%|=N2xAvu)Zi7>D?D>srN*A48?&$>`gliK#p2YpS!1wP>_P@FPPoW?ciKl{OE1Ui^ zAFUHr<3bLH8+UK>-DP=!<+wj@edTXV8~n32ljU>Axb1$~l`^@kn^isWyCN+3h$)6$ z=GV!Z=p?Pnxa>8LEl~EpIGMUY)43HOE71|y`}y3oU8F-u8+!5WQdJU+G^#<)M!3g7 zRA4vzFJkScdioi~_N6pB$7We$#KJgCmeL>2uR71C1+crv3ka+6Uhc4Kmcvd*;r6Tg zA_bxGqx0MyyA)j=8*BPIc}p$enLi {~wc@4>2@ z5T7$%Z&^UiQPbL|vt`u!bMKz4e2_+p4%2zZ?+skOmyuhsn-eE52|Ir<-F7Mc_ aAtCcEQOiwwt!E{!TYlj z@X&}yQMrC>^$!yRgqB|`werlFz u_Zh?5RWc~4o8_1xNWuvE*^JGgzFpsF# zVL;ZGr?yM>{+cnQ>LiGeAu*==u>DdntId7*dkfp8UzyQ?Iv9!SZ9Yr^Vksl*a^&y% z2s~$A1op=u^lmX*h#}k5p30KqOq#fY!zYn%Otz^m&qRi$y57fsISrDKNN4uvEAUR? zg|6qM|A1v(6LzC|-HqZuuT6>bK--oad67ODY_NvnB!fZAaQraeDaNP(=i1CW)y{RZ zN#>z@RTD>s_JezrRB!GB?q@jZG~G^9G*By*&_Ve|Otjw>#XX`(!V8IlJ73m1f?N5~ z+nY$9CqB5WyqoGqOKbjVdM?BS*Vds3Y^7>oWM=2s#%xhkxhroltI=O?{Jl=*hH+6f z`!{E^+!vOMe8*+TdwvWGvbe=txsA*`Eg)VEC)?WU^hT2c+cmISbik@nx$tEIGLd)V zE^+b2&H`CoRmC4ch<>-WE_2Icoh%fX@=b|!I1}1Er(okz1ruI=+#|F<4AEdr>L030 z=pwHfjM1zcNx!PRT02~xUZLp|;u7kxd0U^GZYJ7?bPq^{+z5 r9xAN{S6o~<`^hdTq5T~we>!VQp7~}prZ}H#gvo+bhmwsts z$e@}1c{|(W6w$ig{z`_UGuQ%TI6M36khA_3vfV5(U6wtqS#NECGBuqf0+X7ZnN#w0 zM_Wf2uMt#hPVO{%((7)rz43-5Zl+7**L&kD7}b7N+lZSNpR6?Rrz-noGvtd!pnAYr zH#arO$HC+jiU=UZNvc PBy>!HZ_LQS#9_GB7Hq@bp)Nef8VW5wPQjo^EP`>cY1Wafb}lr@dy+63CA@jUPzc z>D_~WMjIJ9dmW--ywgdG4txF^x`fd&5`@;;!(1EujbPRM@11Oorx1HflCiTu=oO3# zCRRjWSJZzIoVS?inLH-K`%J)dG>O=Hf124t3l8O3lN+NIEvZIvh7A`Sxv{3;VnSBM z6634!>GRIr=B3!}JIDF%RAI{ZBOmq`orTueHuq*BFu-+fdfia{EOz_1(8(jJ^G1`a zTCFp$dH3Y#LKIYH?KFA^u3XP{EbQ+wUw l0vc)d#u}X zZSrGYvLxZ<`g*Qg8$G|;aNF%bCiqm-qP+jKdwZ>Tl~3=&2i2hId&A%M(f4$>{yth9 z`61hLkFD?WR6^2x812*QLI9CyURkcMtYVs0koZY%E wI3Hr z6nA`+WPkR0?nsOT$3!WB=@-J(eE@}>E-UC5YwGV81p3bh@Ps2#O0$pynBbZAxqmHu zaRs^0%09oC`U=4N%^hHro~us@w2tUX`e-}-X74ombYiZ>FyJi!Al8yECXX{zNf7j2 zsh`DaR9 Dyyi(t<-Ip%VlwIcWG)u%*uwd?(k-NGWpz;5Qki4bl;^Fv4!L)W*0 zFo0Ari2 +65A!2|N+htrs7Oqw4c@LLG|_d$I(QgMw`vHY)EZQpQcG3H~EhoF}j zpb+q+Jj<)#_cw57G#0*)1Ed*h4n%-#LNsmnovmlr`a^*XNEY)i-P|HHJXFPDJcV<< zBR9F4y!G5DU}y4ncMfvk#PZCkLb)(id5b6p-g@q{Ldrt2@rGe1oW^v@1mVc+*jJj5 zbXS7Ie^^IUd~^IW u!0rCx|bR znC<;vVj#xH$nWNv5cPkFTWN}zZLZRDoL@qs6;k9RgmjoTc&8k-K}iMYMNdAfP)|hM zi{%g5;XwmaDzdTWvFv~5jd7*06j %UkqPss-Yv~IIgC`^US>YQgo7ugnE(57& z;*mzR?+`M4EfOh<0}mHNGi{F)OV{ ;o$A;|8mW9?~2<@H;9CepFyoteX64dmYx hb9ugTi6!IEPK@)GEv*yddO0AnTt>!p1&qSSagqMv#CiWn+Cq=BI>3*F;-uZK zDuKYk`gf`QRs;)HcK^kv$2EiO#W4b+HYvNZ0oFQC)&)YBIWAOSGU8#U3OTU99nbie z1I^K&uq_xYJmJfi5HK@~Yq?6N?5ZnuCwoI;H1!e_yz|VwD6eIYf`wG**Z-PdDby6< zIYYX#;;8SV^@0J>Y~x8l)*he(dcoDH_Q@SOLDoFRAU0OfH*@DnTJ8Z`g|H`EXmg0i zi`os@9+tU(iEr?ngj4*S&dis0V?@2y4Cq>}CsP9HEi8k}*Bk6#9N4g6`Y#|WJ-9E+ z-L_|vmtSom2U)^oRW_0=>uWMp@$H9!&pjpFOZin8CiA2i_}W{IG)~wp8WEz0uE2fe zrh(59MTA)X+k$;yE*dC>nvV_*Hg4LKu7kQz`5EN%A>6rdlW*DhM7ZOa_p}phiZoWU zEgIc}oz_BHin@jc)Ut;Hxd*wa6XW-opr$=b2=tzMDOy^FGG@AtkW1;pNkoF0NS=Fd zu+_Ri`3bhemXy0SemnC-M;e6cX3h%2|M4%9H>FY#ng*(GvFfYoE+_w1Lx0w|H|JPs z@-BdtafI7TRYu-Db93F7hsexI)_av;=PmF_j&ZG*Md*_G?~{@$!$%&sh*`r@$Hc#V zs2?>!>s%*aGiKV%@Egmj{#;7w+wSuKTV2`x;EJlOp>86AUGk3$9ch1uwz|HjguXqA zh}>6@@$s52MwN`i=*pM{{a{A%PpViDX4OYw?C2>=)4r#`g!3xOtT?dkY3PLhk~laz zEl@DM*lFV%+6lS$1-ztuQiz@Wo)h?T+iYo9l^i%x*6&Y7v{0798viC7x|QbzIZlW( z{8}wqED70429r3g-=B=TpG=$XbMgj-O83YIGhu<=d2pwx`JX2d1p%|hHbF~6H3w)~ zH*f7|@S?m%zAfMfv>3c+(3rY-)eE&c*f6^m L6yP?XvCBJ14)dI82;+x71P%-=+sH8spN z)3)z-Qsz5@r0k)d)0ErBG<{9nX|P5~4fO}r2CMJ&LE}4&B-m-@A4VU?#ziv{SuC)7 z6 6oed0&*^Sy#;eL(ErR+BzPnnpvPrPzW|z;`<0ITjeRYocfrMSX zP;zbHWa!_K(s}qo@p5v&vvXBPJh?LhMjg&qXlHCQ^}Kh9Fu>~E&D-=PgZ$1n-4nt; zE;5ewD4GFk9W0(p`KLmL8p*Skjk3y=LrYG2(81=bp&;*_k-TOn+bgn2M{vG+u;JQq z{UlA>b+ts&<-`tCAQHU7WqUmcCx9XUUROk#_O{+4{>}-Dg}FJN1a}lAxnb4uF|w}; z4}d!WT~;0?mmQiJw23 8gsTBgR-+rS7L)a-C9|QDcs3`s6)$Gy~Nf8EQ05vmV7|Tf1D2OCWgHlDSafbVj2lMnf?8F-l-e7(QDLz zN$&vD!MoNo(=M`uV-y42!6PE`M{kxqeM(Tu=iGfCm_0M_{Iu0t^76rvr*79eo$W`) zNQFwQ(n$=u#U;^%4?LK-Qm=b;S3;EkPDS+tCKoB>KhKZno(}Zq?0tSVCvZu!Cs!NF zn(2ic+qnxGRx(sf%Nmj7YGkraHY1WD^WU25aK0y{85~n&C!R;-SIOFg4c_{n3C}UJ zpA>iy!pAqp>F3ezg{ofKntL2fDPF}+KlCJe4ipRR4-cqnI~v@p0r21u*OPxx(=i(u zvs(N$3dOIOE8}>co;**vZ{5L-^Y)h>nW(ZvRi1uM{ZDQ_etBBTp)@X@ z8B{#kvKU%@2t{&S6MC3(mF3;4p;>J+wqCol?(uSkvC`M^dU`{z`4*T(SmHwF*_3y` zVz# 8X!rX| y^CX~LA%yG{)&hqUDx--wS!P$?&}~)_V&Y$Y z5j|#NS=yEcFWsbg8eJXcZMMr^`WcAV44ugq#mXCh^KDuG3v-1H=%U$>$km7{O|8qc zO~zt-#XeO7lm; !iR-%oJA?WL#NrcZcdC@&Aq>#;@pT0%T9%jaQ05yfJC z&oU>jjXm^tEq-zNW8jLxAdV}uWi!T-3PF?DOZQYYCjOb>`{kScJxVS_5);RB47b;d zL-T8>IR(;@LZLSC!hR5ey6#)^EhWt%?0L|}nLb&n_fc{2@lxLL#?}qgCz0J4NUyAG z{xO%RzRxA*#XsKHw2powLd(W$HAuPkTHivBpQ8V5_TfHZhg$GKGY~}HgT0R-mxCu; z9%+iuv@%y-!S>^diPJMMde&<=YBJIDBRl*-HXMNru($q$S=oY3q5|5ru$dPxPX~TJ zc($drW=&AZz5jiDICKlrZ{`f!dnW{*nmIXw2VXsY!dPB{K5P4spclQw*z;gM#S4L_ zup%;T0*(R-F@uP|xMjQz944(Q>IlBJD~eHsfr`7X$QyTFZ7Be!$@5Y}NmZzIU!{M` z?~2` m8vh4c9eUtTkF;fVE)Jc&5ng8zKio z&Ng=6(!jyX?omyKcZU%}R`