From 575d870dcc175d916ebf79d1e66d87942e6fce94 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Thu, 6 Oct 2022 17:35:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunbao/common/manager/IMLoginManager.java | 2 +- .../live/activity/LiveAudienceActivity.java | 14 +++---- .../yunbao/live/adapter/LiveChatAdapter.java | 38 +++++++++++++++--- .../yunbao/live/event/LiveAudienceEvent.java | 3 +- .../yunbao/live/views/LiveRoomViewHolder.java | 37 +++++++++++++---- .../live/views/PortraitLiveManager.java | 20 ++++++--- live/src/main/res/layout/item_live_chat.xml | 4 +- live/src/main/res/layout/view_live_room.xml | 33 +++++++++------ .../res/mipmap-xxxhdpi/new_message_cn.png | Bin 0 -> 14536 bytes .../res/mipmap-xxxhdpi/new_message_en.png | Bin 0 -> 16011 bytes 10 files changed, 106 insertions(+), 45 deletions(-) create mode 100644 live/src/main/res/mipmap-xxxhdpi/new_message_cn.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/new_message_en.png diff --git a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java index ef6fc179c..62a343db3 100644 --- a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java +++ b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java @@ -54,7 +54,7 @@ public class IMLoginManager extends BaseCacheManager { * @return */ public boolean isSlide() { - return getBoolean(IS_SLIDE, true); + return getBoolean(IS_SLIDE, false); } /** diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index d09ee190c..9897a0683 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -201,9 +201,7 @@ public class LiveAudienceActivity extends LiveActivity { manager.micIngTypeTwo(mLiveBean, mLiveType, mLiveTypeVal); } else { - if (IMLoginManager.get(mContext).isSlide()){ - verticalViewPager.setEnableScroll(true); - } + verticalViewPager.setEnableScroll(IMLoginManager.get(mContext).isSlide()); mCurrentItem = position; Log.e(TAG, "mCurrentItem:" + mCurrentItem); if (mCurrentItem == itemModelList.size() - 1) { @@ -821,12 +819,10 @@ public class LiveAudienceActivity extends LiveActivity { case SLIDE_SETTINGS: SlideSettingsDialog slideSettingsDialog = new SlideSettingsDialog(); slideSettingsDialog.show(getSupportFragmentManager(), "SlideSettingsDialog"); - slideSettingsDialog.setCallBack(new SlideSettingsDialog.SlideSettingsCallBack() { - @Override - public void initSlide(boolean slide) { - verticalViewPager.setEnableScroll(slide); - } - }); + slideSettingsDialog.setCallBack(slide -> verticalViewPager.setEnableScroll(slide)); + break; + case NEW_MESSAGE_REMINDER: + manager.showNewMessage(); break; } diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java index ae7081362..94b82ad37 100644 --- a/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java @@ -1,5 +1,7 @@ package com.yunbao.live.adapter; +import static com.yunbao.live.bean.LiveChatBean.RECOMMEND_CARD_NOTIFY; + import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; @@ -24,10 +26,13 @@ import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.DpUtil; import com.yunbao.live.R; import com.yunbao.live.activity.LiveAudienceActivity; import com.yunbao.live.bean.LiveChatBean; import com.yunbao.live.dialog.LiveHDDialogFragment; +import com.yunbao.live.event.LiveAudienceEvent; import com.yunbao.live.utils.LiveTextRender; import com.yunbao.live.utils.LoadDian9TuUtil; import com.yunbao.live.views.LiveRoomViewHolder; @@ -37,8 +42,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import static com.yunbao.live.bean.LiveChatBean.RECOMMEND_CARD_NOTIFY; - /** * Created by cxf on 2018/10/10. */ @@ -161,8 +164,8 @@ public class LiveChatAdapter extends RecyclerView.Adapter { void setData(final LiveChatBean bean, int position) { itemView.setTag(bean); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - params.setMargins(0, 0, 0, 12); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + params.setMargins(0, 0, DpUtil.dp2px(80), 12); mBg.setLayoutParams(params); if (bean.getType() == 6) {//大作战活动 view_action_game.setVisibility(View.VISIBLE); @@ -359,7 +362,10 @@ public class LiveChatAdapter extends RecyclerView.Adapter { size = size - 1; } } - + //设置最大展示99条消息 + if (size == 100) { + mList.remove(1); + } mList.add(bean); notifyItemChanged(size); @@ -368,7 +374,27 @@ public class LiveChatAdapter extends RecyclerView.Adapter { mList.add(beanNull); notifyItemChanged(size + 1); - mRecyclerView.scrollToPosition(size + 1); + if (isSlideToBottom(mRecyclerView)){ + mRecyclerView.scrollToPosition(size + 1); + }else { + Bus.get().post(new LiveAudienceEvent() + .setType(LiveAudienceEvent.LiveAudienceType.NEW_MESSAGE_REMINDER)); + } + + } + + /** + * 判断是否滚到底部 + * + * @param recyclerView + * @return + */ + public static boolean isSlideToBottom(RecyclerView recyclerView) { + if (recyclerView == null) return false; + if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() + >= recyclerView.computeVerticalScrollRange()) + return true; + return false; } public void removetItem(LiveChatBean bean) { diff --git a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java index eee6cca27..f2b80de9a 100644 --- a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java +++ b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java @@ -131,7 +131,8 @@ public class LiveAudienceEvent extends BaseModel { ONLINE(19, "在线客服"), TRUMPET_NOTIFY(20, "全服喇叭"), RECOMMEND_CARD_NOTIFY(21, "贵族推荐通知"), - SLIDE_SETTINGS(22, "滑動設置") + SLIDE_SETTINGS(22, "滑動設置"), + NEW_MESSAGE_REMINDER(23, "新消息提醒") ; private int type; diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index f97fc0191..dadfb73c0 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -1,5 +1,9 @@ package com.yunbao.live.views; +import static com.yunbao.common.CommonAppContext.logger; +import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; +import static com.yunbao.live.bean.LiveChatBean.RECOMMEND_CARD_NOTIFY; + import android.app.Activity; import android.app.Dialog; import android.content.Context; @@ -133,6 +137,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; @@ -142,10 +147,6 @@ import io.rong.imlib.model.Conversation; import io.rong.imlib.model.UserInfo; import pl.droidsonroids.gif.GifImageView; -import static com.yunbao.common.CommonAppContext.logger; -import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; -import static com.yunbao.live.bean.LiveChatBean.RECOMMEND_CARD_NOTIFY; - /** * Created by cxf on 2018/10/9. * 直播间公共逻辑 @@ -204,7 +205,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis public static String mNameText; public static String mAvatarUrl; public static FrameLayout ft_hot_add; - public static ImageView img_hot_gif; + public static ImageView img_hot_gif, newMessage; //多人PK static TextView time; @@ -670,9 +671,13 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis mic_view2 = (RelativeLayout) findViewById(R.id.mic_view2); mic_ico = (ImageView) findViewById(R.id.mic_ico); + newMessage = (ImageView) findViewById(R.id.new_message); mic_ico1 = (RoundedImageView) findViewById(R.id.mic_ico1); mic_ico2 = (RoundedImageView) findViewById(R.id.mic_ico2); - + ViewClicksAntiShake.clicksAntiShake(newMessage, () -> { + chatScrollToBottom(); + newMessage.setVisibility(View.GONE); + }); dr_pk_end_gif = (GifImageView) findViewById(R.id.dr_pk_end_gif); msg = (LinearLayout) findViewById(R.id.room_msg); msg2 = (View) findViewById(R.id.room_msg_user); @@ -2624,7 +2629,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis public void changeFaceUnityView() { // faceUnityView.setVisibility(faceUnityView.getVisibility() == View.GONE ? View.VISIBLE : View.GONE); LiveFaceUnityDialogFragment fragment = new LiveFaceUnityDialogFragment(mContext); - // fragment.setManager(manager); + // fragment.setManager(manager); fragment.show(((LiveActivity) mContext).getSupportFragmentManager(), "faceUi"); } @@ -3043,4 +3048,22 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } }); } + + /** + * 展示新消息提示 + */ + public void showNewMessage() { + Locale locale = mContext.getResources().getConfiguration().locale; + String language = locale.getLanguage(); + ImgLoader.display(mContext, TextUtils.equals(language, "zh") ? R.mipmap.new_message_cn : R.mipmap.new_message_en, newMessage); + RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams) newMessage.getLayoutParams(); + if (fastMsgRecyclerView.getVisibility() == View.VISIBLE) { + params1.bottomMargin = DpUtil.dp2px(38); + } else { + params1.bottomMargin = DpUtil.dp2px(8); + } + newMessage.setLayoutParams(params1); + newMessage.setVisibility(View.VISIBLE); + + } } diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 38e573e71..1066b35b3 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -1,5 +1,10 @@ package com.yunbao.live.views; +import static com.yunbao.common.CommonAppContext.logger; +import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; +import static com.yunbao.live.views.LivePlayRyViewHolder.Micing; +import static com.yunbao.live.views.LiveRoomViewHolder.isStayRoomfive; + import android.app.Activity; import android.app.Dialog; import android.content.Intent; @@ -98,11 +103,6 @@ import io.rong.imlib.chatroom.base.RongChatRoomClient; import io.rong.imlib.model.Conversation; import io.rong.message.TextMessage; -import static com.yunbao.common.CommonAppContext.logger; -import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; -import static com.yunbao.live.views.LivePlayRyViewHolder.Micing; -import static com.yunbao.live.views.LiveRoomViewHolder.isStayRoomfive; - /** * 竖屏直播间UI逻辑 */ @@ -240,7 +240,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mLiveRyLinkMicPkPresenter = new LiveRyLinkMicPkPresenter(mContext, mLivePlayViewHolder, false, null); //直播间背景 - ImgLoader.displayBlurLive(mContext, mLiveBean.getAvatar(), liveBack,400,600); + ImgLoader.displayBlurLive(mContext, mLiveBean.getAvatar(), liveBack, 400, 600); //ImageLoadUtils.loadUrlToBlur(mContext,mLiveBean.getAvatar(),400,600,liveBack); mask.setVisibility(View.VISIBLE); mLivePlayViewHolder.setCover(data.getThumb()); @@ -1526,4 +1526,12 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mLiveRoomViewHolder.showFullScreen(msgModel); } + /** + * 展示新消息提示 + */ + public void showNewMessage() { + if (mLiveRoomViewHolder != null) { + mLiveRoomViewHolder.showNewMessage(); + } + } } diff --git a/live/src/main/res/layout/item_live_chat.xml b/live/src/main/res/layout/item_live_chat.xml index 05c39f36f..b2fe56b56 100644 --- a/live/src/main/res/layout/item_live_chat.xml +++ b/live/src/main/res/layout/item_live_chat.xml @@ -3,14 +3,14 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/bg" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="6dp" android:orientation="vertical"> @@ -948,7 +947,6 @@ + android:translationX="500dp" + android:visibility="invisible"> + android:translationX="500dp" + android:visibility="invisible"> + android:translationX="500dp" + android:visibility="invisible"> + android:translationX="500dp" + android:visibility="invisible"> + android:translationX="500dp" + android:visibility="invisible"> + android:translationX="500dp" + android:visibility="invisible"> + + ECTELcj5OK}Rtp@rh^ zR;(}ge(&e^{*z>_XV#g0&e><4natU-+L|gPgtUZ@9z7y~sw(O}dW2E=@Y@+5_u-Ri zM$_%#3&T@aMgCFsDE;=MN1#VgMLB&x)BSwB46wm@U%Qxat+kN{DG>z3f(GG|%RR;c z$c4pVXb*F8=imT_i%KkE+F=xm+S=e)P#8;$Dy}c}Y~(AC#s0IefB#HP=7%_s7q@)z z{}`~*=6OAQ@WOYhvZmtjvhAIzHgz)4su1ykjYQQLHesALt!3t@ZY&m5#ct0A9r|== z#(wvL+ALpd%qpadO)?(hdu1k0*)JlOPS!id3__cxx< zODjk{v%dBhXRF#yJIL?~zz@Cj`MJf7iW4l!5Y;r(13RZOR}Q?2F3{@#7t1e|Wp}7D z%vUv!d7BX`tbp&?vVPL{9%-4ti7?PRZzx6NgEi74;!b|!i(@9eWff?_FKTj0@oGdk z>aqmzM7(98s~5Dj23V~vmX-Yk?=#ywLd!TTwbT=7Sb{D81xFuhr?lm>TS+8@`^2z3Q~&KeztQe{|q zn*4J)ZAtZcg9(XJ|HfdU|1A5EgVK-q)2h?3-S2!GGN#KO%%*0X?z8RlZztL(R4{bh z)<2+LegJP3-C>o+m*JI!2#F+D4L#i2;)M4Cp&U!f6ANtnT=wBlN4}O)ujBb*(_=hX z-x9~1bk(UjSAl*~Z{dn~J5c%1GLI$KvO8<^fXU-OWcc`t+3c_0&sTIg#6D1I7wZ2GL8dnUngz5! zv-KY)D$Gl@>tckkJpQFv0OI2Scb}@^SvXs(*~IC)=f&+y|BwMg#k`Bf?H!^}_1XYG zlmtYS{IQ?APaH}S*{1R#KocOH+CKh&<2oLvC}u4a*k>)5l*Bw$hk2?0jYDLs??C)1 zLJI%Q|3e&7SOmb^#?V3%=I^bo-#K5v1eIwgg87_FpK5Py-LwB+Dlt@+KjRZmWI-nk zn2ZT0>V>voB1l)1t`rBy7Eitz?an6l z$2~7k(tOF4iaO~2pIe+yLO)Gpz4$h@Kvc>8K-lc`hJZXvw0*Adsnvg0#4%~GKdN6x zAk^jYPb--9l998r$9mf??c~{H|MRKn34U!={~=pYDa^;*0HtPSaF~830`;*qjEh$;YOxlAnLXWAp<(TU#4QZ`?x-IZPm+#x9@Np9(B% zxD0mrV=`{~rX^)~xlS{nd&F4!(3W{0lPdBgFytx%29jm&(YB-S%h$8bOn0llRA-s` zZ?CD(EiEkpv@Hy+9{zc(l->U188!lJ8fAN~A8&O!ThI=6g@CDFZ_`$bI(LH8uj=1(z?*<%q7X zIR3u^_Y!4O}9KZrpY6(hoW79Puce~cX zJnT6OhV9n|41UX@1M;K)Ix2ORt#+-AAF4r@E-3#%j{-g+C`(yCxg_V}{AB3jN zombFBeIcMSq_4sL$JxUyX8ZwjLoHEAQkh$~{E+)Uv2=;Yk^F&jOt;H;>cR-*wT{c> zuYj6^ucw-Fe7;LT%~yAm<$B)z%+X-TE=-?F`R~aP|4iLC#>)1;cZaNF6L!+4G{;>a zDw=Fle|wLF%9=KbH#dA=_DWcj#N}NBSLxLC*i%l;?oX)iwp3&$erU;5<@?M-YXW}m zra7t%Owp1(KTE0pypgBK+qz>=Q=!%&Y&-njxBcc-&|yG>1|6f6BehwedkN)f_>KF1 z;|%-d>YK5Ef~H^oyC0`sKQ^g9{Cv=|dscAyRYhzm(DMZO`yMO2CTQQ$|2W>>f3^GZ zYogHH?Sj}45@w#!^r`D@s`Il)JWUbKj(n}>zrP%`s4x8)^-aqJTldC=T>kXcN+66Y zd5If!J!E$8QNj&M$Zo$~m)OX$O8YD-X*8uE544(GySrQ}{AxRr_u=pTWqWLB&z0>r z$)!JJLE6SlZ@6%Paw?xZmUVO>%{{9-=#ceu%ekVmE1Bp`JV}<#jSDICcef>=`|7J7)$;xO8!{*4lPa%JAmIw&`9{8fyK4^tp z{}}LIUyZw5^h^%EU1j1JquNOf4cPyBI{L$*vg(2!2x?zVlGI!bn3PtdWFv5=@(x02 zF9%b{Ub+`*SF131Pxf~?4`y%;c=nw?`Qq?&Ps&8H`V2-TmN+_ob*SUs**#Ih0Whc^ z(pv3KSdqlMw#+pEWW71?6o~r)Ow>#53)ao+la|ziNkS!H6ag@A6>{6BATGb8c)k`@ z6~;H#E0*0Ld2OcqqiFA0i)az&459+m&H_)A4n)&yDd=+Bv+%~m@{9%;R+=nrTzI?2 zQTXJn$;!M#(BYP8RrRa&#onC%Q77J$@Q|DRW{xPTu0HL@M8d3j`QUG}PW2-c*$mZ1 zwov++_2X|$HDtq%j1ZX%2q15ZbYI{V}?J#IS5f>VH|xZh+gs_RE3B9q3q zG=S$aciURm*E8+abS`LScP!dzw5i$6{LIcnU4)dNb?AvFCmvP@=evvMb`7`nHrW#N z1?XZ=03{EvGcuQbn_?n@dWhXQ{QW^@P2dOV>+$5B^O}&L-`I3i3_NaVyv8&S5M=>i zG`!*=GkM7;XrEGs6(2Ek(B|}-Xk!3==9wZ|z`tJ7%*snf({}B5u z)sBY~SzB-|I0QKitbbc!W10O=Qn%x=QHj1-fP?fdB|l!FCaZDmoN&bULDd z%l5XCXjRE1&akm=+St*4h_`u?>ZMaEkRgF8_7Siu)6n#Dx$BR`&z|Q8zU?owU-`g2 z7&wLXsn!gi3X>ZGA%OzswS#{rvfB{JA-AiM2Fj(-a60R_mY&z8ejp%S84u;?uYkiU zEK+gV-J15`5?O7F!t2RT%0gQ)0rEn43|`+U4q9#d38{Iin;({iY}QNf2U<*twH+s} zNmCl6@hD55q$YzE^>>9o1{;+XHMl1()c1(E)^_4Tk%WPJmyNYgXPAj(1%z~6BZ5AM zB*$rueqa7+S1Gisi!*6p=4(6FH^@>RLPO$o;(zXXZ5z4n9+7wx+9JUc;kJYS@V4jp z6kxz0{ENSk9~ecSsqJOnLvVG93U!!utZ7X{b|{+-muwESkws#5TI;=qo`6U_PX;)4 zuXk&-VmKU)uEg3|W&a*^lkr<4bcC_*qhj zSr_R`AIEBKIlBhD)XNT7&opFL8_O`!V{%y?S-PHXJ}V{*dY#bk;J1?bEW~iVdWln7 zSUpy(wq}T4T_HSnW%uP9;d9qx((|fOY4j7@<$X!Ph$FukK@Yp8>@#;LUV<;aHapYJ z?6)+hN*6}7n;VS{0H+Vw9phonW-{HOq5K{%jP;isaYU%DRU@%nYF5H;6~W`bjWec_ ze_rYIrsqQ{V#R?`JIeFBKM0C+ix$>(2j1AJ?ZVa3S+&K&wZq^10_{EPSzeH&F zed{Jsnx=CR?f=oIA@(x^C@nMvEYr>CBQm?{vc5M7cpmN$q9P(cTvkw0M|s3{j9qfO ztre1ILY5|!QjVK$4McZ0PJUpK*op&#-#uRKbqa`7{&(ViL-_8D%v#aR-|x1 z1_k{_Ro%E8mtpLE>MZ!BFZ&6f0Sez&cP?m-f46ETHgnmc@XqY1xSnj@h!?4yDkdDt zeB#TyTaeV{?vi%K3$;^#A)FX8(+uhsmvwS1K52%cSQ7t)5%FzJa;ZJzI<<}@x@h>Jsb26&2ycfZuq7UOgu|z6a{;Ir z7B@TI4$$)!>3gNfDMMq7s2$wcS@L2!uTj@k%4UC?@h64n4NqLyc9|EZbz>7^b)srl z(sz*WnNTG>VZQzTyyiEKerA*CZ4yA_u(#vg0w$K)cmK+&CN<(WK8vh-c`#A|H ze@H;sZ-iJW*pEq&FGH!(k)87co(^qErNboMaQEE|bQdG+QSrub>m56|Wm*pKHN5jr)I4#L#}eqW!J0f)fv^ z&P8NYvqGTmzgcO&u6mI?cl&^?18%ZF;zQKjRd)&z_atVO_ahgEM*dwsIK>)+<0(^5 z9aMexmkc>Q}fa&77rKV!rhIrN|TqKr?qsyryn$4xiYPZ&OM-n4o#v>J|LX?#z8iRH`c zF0cZA|BblxP7zStqRl%Uw)KHO$o}MwYP=E_IC7#kKnWR%AWHyWmd^_~>3EX2e_mHj z|5oNBl-0!&Gt1?<8eFI9H{xiTzUVoKix#C~$vS!)Pu?sLviWEIbW$RfCT<}OOyjT^ zH*K(f+@B7(#4>y;sP2XmdJ8M`rerzJ6GKfbu2FnR_COIh;LGpO*&}6363{ zNU1rA`r~dCK7z1q)JRUObTDW<6FDDSvQ0(ts>O)>_E2(H2t+Hom;WYoQi22Ch<4=l zk}Gz5r`K9?=l!Woc{r2O7lHwkbbRL3xzC#QRI)fKo%V#^$r-QBJMa>tXXY9%4r1Xp zwo+)>aAAIJo9oXL%eNUw<(IFN%1@9D!`38HhoE!UD_X9E$M#MB-9vZuRj)N8ko}la ziW6y>vFioM&7`Pf7Mz?byuNe*d!-?)d&>A%LNAUb!l=B!t&1QQLT)2ZzquSvW?B+W z4<*9>C3rzh@kBe}&+;FmRKO{7Di&siNQ}tJ21{t@73E=Mjt(25QlSTpNn=8N8JnZ? zSP6eljui3Lv&KEBxad!yh!_t6BWI$&b7sXWyuwbU*ZC~k8az}yt4TMpa(2>_8g&Aw z6-S44&1dTwYtJGAbrQa6LjsfDl3C99-mm4nAh442 z7wr3v%O@K5)?L!VYySNAg8MU=Bts|E?4u^0L5KU5*jy4^o~=p2min-_Rdq*_f%gOp z6(-K}F3HNgM>5si!iCRm?S0P=)x0thG)IruYhN6Aai2Ku06_ySOO#b^QW;B&AEh(T zP*}t+cpC#%vJo3eC{vlrkek3MwGz}&&$3#J|4dehocvf}r7)2F-3NlXBbKIc%aUKi zDXLo4ap=ZzT?0f>!YCrT2_I~^i!wg znD%=yNv=MI*2f>@(zr!`bWk1YFYWNt2chU&<9Yqrxer2!;5rOn@xE|T-mUosGgVF& z-tE~zkC;j=vC>N1IgT?~_N{3xtfK%kBwXLnp|m8#)O^nq3IIf_)ruP9q;XbX&#PQD zBs%r5dd;iBj7Gjr35?#)$x~AKzV$Nns)e-QU8wut3%V7{dE8dV$k+X`v(n&~Pm0`%%^y+6|yDTes-o zO7}gOO>bilPI8&YrK^6fXJdn3!K4iB4!8GT4P&Ld-NTCea#tv27TNgkWtRRO7AU3P z(*x;eqdMK%bq>k~bsnR*nap^LkVFS>S~=@VJI}fA=2TdEhyolXj8w}U=&tRN5L%OQ1yKNePk6nwB9ZOvii~rUl53oVLgwK@A4Cd>&#D zFN(c$`at9U794Gk{A`vFl+u$@=N$4GAZ(1WEAID%pBWqBPY@0cD!1e!`*G?0_h2Ny zyrWjS#h_Rjr9R?5N*7Dti>{}G%dbB%mbDp(LJ0T$LYU+>A)xCe{*{^#&l)R2m%j>^)hXfp>R=sNV#7Qc+u0gfHcRo* zILNTob0ZUAtsrz9bj%iW$)JahPLI>vRCP>4>9f>Jq%Valj9buo_2_GBx61$NqV*mV!6TkoIyNFQK zU>e|59$sph=UzYG`ul5{JQcrnxQEn%8I5%$ZBtO)APBP2Cp;GD>^^>O9VvOV9q?5A z&V*#7%>#I$`2j`7t7)lsM|V(tukkCR!SJLG8?#v+CJY8#<|Zg$Gm}$L;xE5chF=IB zFVq`<(s7iuj%@jT1r)awC}UME;e=bHXj@Ee~h_ga9*QAod=T43P zYcU=jFEDCdSuAY?EiLOn>I@Tlbo8(ERVtAps?#6IVHw4wSrb=3Hn8N)Gg3`?jfwF+ z5^Dua5Z<-za3f2@_y$$+35f!F$bg_33^o|(X0%ut+W{98G*|uS4GNQbLru`NG8{-7 zhjv0?su#q-jWA9T1g@<)tWXi#d_0_VI$91vjxs zXl0iFmAgmn4RfW+Yb-HMzOwQmSpa#>@=#JIs{X{T9uY017DC@{S^ltd1LMvE;h$Jj$B-pa-vYFXpFuGaT6djZBGY6_g%t> z+)<%%de9l)dRQOrQG zlkGx@zB!4dn#usggZmq%%V|EJ&cja+2xAQuTJ9VTZWdxS&y7~n{X=+(}}8giExX4 zZ6LX`$YsL$RJTB>u~RJrj!RRZpzt?g9K~S*8zsX%r-$KsTX{RQ6p?(6{x>RO4u zUhCd>DTIPKwiCsUzeoQVMG9xz)?>utq}C}jyEPJv!KQ&~D;#A?bm)#P>KOMSpSb9+ z0*YYlloxLWnQd*}@s|j=3tDW|uNjHL-FbN^cglq};^dmb_8bNWtEn-2HDV1)*NlL}-3sw*hgq84NOsNy5ik8CE%;@fO7 zXum~L16C%wfxSU)*}BgQdfj4ZL}KzBwUVdW52AuD$sV^1oZi*7r?wY)OgwV z&j`Ubq<^RYPe2(i@@2v0Lj9G-t8)tYvC|4}l=UERdCW4_Zg#Q0^&_%_S^6d+%J$YY zlV+0(MgOGoXC|Tc+D%ZzPMRR z0<1ZnR#Zl2<4gH{S<-XeVZk$U!Z-pJ7e$!4MhU(kJ?)=)5F11GYtj4y#m5CibW%ja zpHzvEQuo6oy`=C^M;{%Xs?oSn=E;P{l6jqN#8&zrRfiBsK?p_S5l@4z!tAJU%$KZy zjQ#ti(PQP+dckcc_m5GGtvDABZN6qU?x@dJOL+_BAv-Upn$wzXc-@xLBq|AhbcXS> zR76a=w*ZcCm`8Gg3RHzfyX9fja{j{ez$XrVvrOd-C`+3GMt$^_ad~}7PTCs5ianJh zN|O?37Z0y{!*t9+he%o7S-o~v4{$6R3_yztO}Gi8qSI-7GjRBNZ?iaU(hVT37<8$C z8KpSMs(O$~4CZiIZmAw#Xs{j$`q9H(#O&j*ujjA@r`3IH&evJoqvjz8B0Xa(U3r5( zEZ(h12?$|6^A?h&#yjz1ST1Exf4JVdF>t!8^6fEHib%?Jl9mcO%;hmW?x$5!y})b?ubC;-;}SWsvk+Mf{P0I3|Ftoe~}2IORw>Ckue7_=P`U zGlD^HaTJq^n{qJQS%2^pD$PKwdmBA@(Oz?9-}SrY@E9@>KRuUdtnGB;ZNqUexTZ%A zY?MgoahWiGFHOF6r*FxADdw#@Az_oDV`o71z|`e}dhw6vwZnM~o~)%?s(Z@;^7+(b z^oVel52HysTE%m9e@1`LZS`V64GwM_xjp}K8BkGr;h{8wl#CtToY#D*zZR3>bjP`V z9n+!e+Cebmoe$vS#<9|I-aVFrdpqU>;E6rIv}4LR)LX<)`dQOw-;=C7MdS*<@Jx$IG)scJ97TMXiZrU$Lh!cce zRIaz-Fy=<9Nwgd+!ND7bme;wcBBr99gg?Gz%tv)8~PuxZ6(0vsJM#Yb*k$5IXzygpMvXq2+ks0f00iv%rM+&&&G3 z-{K+xQhjN)T=uns{df_xuGKp-QuXqoW|(4K>_>-9jV6B-SG#SOxWsVC9i35v>u|dru~|5)dkW;sQE4a{h=O?<13=kd>yMBkd#f zUrq$B-il4rPZ9=IkYoR|rABZ(+gu(`gSK7Ip!N+qZ(D6bFZ@;Hp|l;kzPEminEG_u z!Ry`AibTS6_R0{#M296K?Zk6Rmi)ZE{$N;}p4-EIt~Pbzm2y6yG5|k{lxSocZu2P? zLzy=vEcqsiSJ;i_? z85VQP*hQiX?Cz0->kk}kbhfZlFUnRjtK&9n!{0QUj;}`>p&W5}3uEc}+bkrlskatsVf^* zue3qWBhrVP_lQ7k#W!N0YWAk24s$()o?xS%a_yIt7rJ`g4!P`g;H>WhVM~w0moxbh z`ywbzF?`zaxVjPBUphs^<=>CPFrcR))nB%jft=h_I6(I#tuE47s=1&KExg`$QFJb< zlOjFXe4H!=cvMn7QaVuBC)`fG!ki!~ZADH=e4+aN=g^uE{Ryhs|8gKR*F7;| z&~c1$IkzTeR<0}br4i6NzWGZm(vJ#6yy5(ER2C+smjVc4%x(APWd0n3quX|ofb(dK zSm~^11eijS&)qTZgB-OaIPe3Ci_N8jOJyCt?4i^>?uEnxdHl&1{FlByqkaDe&)}e4 z-uTR`MaOC*Cj4o|D~%w!z3R}!%Z#ktlq#cz&>a5FY!Ku^PeyaXVxQhwDo9id26S{t z(&pVqR4eeH4Pso6*jzJ_TUE+YbRwe275AIskJ{?z{c-JenCy(%DwHnl`y_ z%g7hwCOg(7qdgN)0~M6tB2L9LG6|RC;c@UI<%G-XOjHbHJjG7f5weN=lJhG$ zE2^-SZ!x7z6+ix_r%3UUn8+B}X&616{5NA`g4_-b+?r-!H5jb^3GKIZZ=|CU^)(OV8uCI0Ag1A7u zp8|E~f0-k+wJCc%oDw1c>ZJlPcKY!@GL>M{otT-}7Ik6b9MwE$lN?`~K|)<+ zn-%uRtIy3nIiP!%&R|N+!sxv#sqibxLc7N)T0u21JEcmF#k#5_SQGwl(^9aGOc^b% z;0yhx@|P=6rGdCHg*=`jH(uRBo>~ zpunGqzOpCz8BmOS*sA!jC8jMpRmq4ksH$zloxQgzo#D!8ZB^wDot!s$Biqil?bjbS z0w+!JLLi)tC4XIA>o-b3@Qa2eAebj3KCd`HqYjzFB9g55B z!uL+I__$!a<@<-up1zyZwD+MxwUJoB@l;HkEZ6Oxr9sVCn>kWMBOj~Bas*kKNi)bV zDHh!?S0wsIR4$mxw?|R{Gs<_scmdJz9ubXkk;^O`{K3p?Q7UzE02_t%oV*98t)s+n zeKZlkpz!eb>^_Wr^j%fwg4U1ki|wCcsRr(uc3%FSqV@X~N;p(KzMuU)@$?In!du)< z4tAF|o0o=^Rdwu2mVzI%v6`E>ax9b-9e-FG8pv*jqr!?nG%E&3MSHSHZc9_Rm@X@d z<%S3=zPO_mYrJkE>b-zIrz$b7qEVHF%bc|V<(IvihksKnMJUzv$`S{K#3%>2(LuW; zRHRZI%dRdw{Yfw6P3)(LokdVA1%3~GHVICTCy1$1#NY`jq=O%}f?;KH1#-L6p(VXI z{obDKI(uNFwSl#As|TYn2nIm?nEZ()lI0hOpP zek?8Z3XxN_3itCUtkqu79nfRLPNdmHECqm@1%4aYDRjDdEs!_dYRU?0$w~1`W20O2 z@S<~_Yz@0+p`?`Q#9~c8QT{WnM#=RKiJrFo`L?GCWMmRNjm}09AIR9Bnd3gZ7dgSr zIRG^RrC(|v8NZeK<=Vw5Q4wL7jAjs%<29ubth`>7433UZvnGnE$;PD#&CI2)5V~7L z*e!QVHkY|}{{*m;_+A{1KgB$g`{#!Hs^6AJQ2Ao|z8XQ0>>z2~OPwzMmPX)<2ofY% zgjVZs>Fz(4M2&)|Vd+YE-rD3O)!c2vPq*0YyY+yPkSuVAv^_5 zD)bz#4NoH+>kh?Z%xUO!_#k67eyH>5m)P0&^NJULU&+Jn^e!(o0aaKd(~ngm$hS~E zq?X;ReOH9gTA++OiRSD$Dg1X{XRGZ(#k=Em^;n^jk2uXw_&ABlc47ejRj-`l7qJug z?0bQ%3HUcU@F6fUFsf)?vlB=$kk=N9Gs$x;hWr zt&(5|oAFSYYVcxJlO3E&omi-E>0b2B$y$$}ym+JPy!2RDcn%?&!>oin?dIG0q~20h z8elLPL0=tfhbzWQh!<8eC)D12=IR!KL@{tV{UT?yR%W%aR56#`<MM#NO^DY@rX;JK*FqU(SX=iW96gPE~s&GL+0 z;~+IPH30D_b?wLdcb^+mo^a!Ip)?4eNpJRKs=O#N?qE^~qa$EdcNdIMGr_pjYU|bY zkyeHQmG4Jh`+QpFf!9e2_Q=~>!NVg6B%^J_rzJ(jQw<0#MCY;7)__9z&{kV*SrQi> ziJi{_C)Sb7?64o4w!Oh7h`m+IHDkAQIb)t+zk)qR*gb=f5(o}3Qd-1&WH}&PW65^AIldH;+14plWkn;d7`u_jy+EU6j~ueM(7X$R~+C$S%k?GrB9x3 z|3>?(hSyNncZ#p5b#2Xdct^ear1~P<=_%$_nFKLsVXt}p1YZS`)}o6Z{!~CErgBC`xB7_;wzo^bQQ5Bok30e^u(`yXeycbmp+#=wS&5C;P`@0|Tj87Ki*_ z`nfq#s+S@S@RMF>FM4u9C|?BE7RkSIPvnGBsLeC8(bnjH>->e2ZfW>)sH{1h4vAjCbEkZUZia7T$|1lm7j@zZ+3WI-|zQYW}I0v)IUJ z-7*2rY#G7)DB<&6k9SXX!_*4VhzVw;GcnOI(a?sKH=#u_CGCetr*B~2f&4M)V^ehG z7!XgPC+@$^t+icl+f(Z{(VRGoNoCKDI;$cB2&k>$);6ywv=hsl@(77BrbG05i&soDJ0BTjTQ?vlc|?=vBt0r!c_VYRBD4x5Op7z;RIBtKXsxaLpR2)WaKk#f=GMrc+(njVN%rK#v`d^-Ef}m z_?Z|aNFpX~p6{TMEh%MIPRwi3F2xLzFR)|ba_&qHh)>unFjP7K6mCkqxzMRgMDfJa z|5y?}c#M|RxR4ZyIP&5}m0+=QnNwPv!wBBQUXraUcg$mU1eTTRfvW3`W)H# z1Hl=1G68?oht5Mu5HPhfBM+oicQgL$@vKRsxyLQ$$Uq2PN z^gIJ&_GrDP5y#^qtKMVgh~3kArtq9`eAzy@(l4G;w0Gt{My_(`-U4L zX5!1s3L%GoOkGKme4V|x_fAuFzWh(+^3a(d`lx)Hy56}Ju`7@7ggGtsU{3_J{nMWN z=5#10pXvYg=cjnlmGA8NJdpc;b)30v+U%)6acFHtUyj<`t{1m=omU5w1 z`~>?l*%;pYppPQrF+n#k{~Jnyty*>!i!h5M&zlEV*`w45;&Gc@t=dx?)W0m@{jc-C zh!OMh!wp-(WBIaHR)<8^21OW`g>wow@=|SO>HklY1O7udqFF`RmG6&In}1AYT>PUR z(J1^W^Pdn!;MYIu5lT}f-ATvLaVoeC<#cHI;Jm}v(u0}J|I>wN14Ccx=%tMkGdCd0 z_Fg!r8>ksMs?Tdpe34SGJ<>Q6llWJLRPY$Id-xzjAz>bNzLZyIuFR-~Wi)(3bh9~c zF2pqiINqNAoAd`NJ6*bmBmNc19C^_g>d-!9vbW7}Pw2%2PCg%u(<&{P`2QRYEs$N# zZ4ky8pqz;&2UY7Tms{HitBJWRa`1vK#9>^`gJdiJfRr_4l?~i6fo=kvizkPtydsdg znZ2e)We`(IRpYAM*gpXb|LAibWLcP@Ds#VB4fHo>7Sb#7E4P6Ub5HTx(?MOc&v2oL zmR0Vv{}}gu0e^Yr9q+dM|H+NCwj3KaGiVTW41Aj7ARn$07{X<_##g4*!=He=H2$?=>l2nTQb8>xY8o+hJgO z5LC@UVg=I#(eDu1YV#%&`cO1+(7#flWqdDcO!UP;mY1EHc6KCrHPb#<5&_&MW4e#a z{$F)hI$IUkzI+_FYwW*_350djrxm0{d^y~hT=&gI1jysN^SIFpqfqgQg1Yfa#EyDU zNwsM zV$6zBJO7iOY4c&0ao`h(Eit6o78QXOJsw(@rRZI|Q*IZ`E#IN$7mZvHv zkqy2pz3p#mzI`#Lm{3KVx~M<=soT7 z#uL;*$E*3vQqTlVs?=ey{4LHmvW*4P?UVSAYOAWeJ(Rnk2s}mm;<(sc-ft#4xa?L@LXAVH?qB=$R~b7 zSnW+nEPG%vZLYOydsvGOgLPL81U?NAg~+HB=lnC_ zQ-XppJo}4jNE32}=hl*B1&ogFRGY^j5;a~wAmbsptDWfS_FOo#Aq z8?;0Pw{YB|5-YkOf=I@$RNS(!pQSUkdkA-!KFPhM*>v1u=dDE9YEt#)KjU#Wvt?sZ z+Ftipzp#Z!jsgd2#_FYQ6;QXJ=XW6FhdXgILOp-R>f4V!|54@@MKU>l>|BP*VGbbl z;u1Pq7{=MiiBrFb{gtT7;a9*Z(^)dtuUtv(zb*HdR7Ia#QXmi14{reTcB!4Qg<5^Os! zAXiEOrz-GpfR26w({E*-|9Bo}WH(}D>sVl)Vq@NGy)zppY{44pfpI`hpX6WGsK(SwV zdZNF(&fWk9OxN*&Q!3`H)clXTrbP%2J;ZH}ZPv2Va$`a7JKp_m6O|`SF)L+|C6ejLg#Md)mjj=HIDm;Nyk3 zPCP!o(EMi@E{>%LeZH(jR<5tw4E3?$%y|ku+y|(u!UuN9#;3CWePAK6KNaF9e@_E$ zW{;`VTu$83S-Ru=R_E_qYL~4SUjIJPjhrw_`7jvZXq$@OhF!dPh?B8F1#!vcvAKX+ zg*9nq6#ZB6V8183No1L|0;!dlQAEXbwsG=``_{wgI2pr?f`5iFKEl^|<@2m(UKG0Q zRuI#xuv<^2Ly>Z^0koZ6E8*OU3gb_ldcPk3tX`7XdoRSxy3+m0KIEuVY(jHK{5 zf8{CPx$~z=k?~i!hc#Z-qH{|;ef6eOK z?15P0tTQ+k5pV=<8vHx4QXBSa13%BF0+#9~^rkbmLOdnonbN=pvDSaXET5Q{+27?3 zx1>qwZ=<1bgv)ew5)^(45P-sm4yQHd3;*9LI3I?zltI2Iggc~mR>d`IC91ubXW!u(Bu8+2>_FM4fv+6bU;p!dM-Bd|B9AR{BofXFc>3k z7r*Br1aE>NnsGV#+3a6`;R;JY%VpfvYh3ix6?+T8Z>9n2kfnfd{eNe|Ww-!BSmF+1gjO9nj;Pbt;H-9=rb;RQQy@;m3t4g6kO+gPH#;GGh-IiIQZQ zYkxq$|F52SkBKRD>_eKOBj3yr%^4|?CMZyAmk(RX&-HKc<^qb&o@^TC-n!nvI_ ziJx0Q;V&Cv&Z(r*g5o68PJWt9lp-wCceRQds~{EAO_NRo4OR{r)Akjm0wYe0SMz{D zoX0Z^tWmzeT9i%0c&b4Cdgj#vkyLk0({Yg@yoX~FmY2S?SL_tTvjVEAgFX;j@cT}5 zlhl0mE=p`E6zO%?Gg%3HeL8I(Edk#$n14>h^ubi|QC0r~e-V^eR{P~ID)sG7@+Nt) z`W~nQB5m#{SFiYMPQoU3Q>QugwHi35pvDC2TH-l-*10Mm;8Tv%0hbYJC)>*v8+m(u zSA$sb`#T=(YFp(ZJ6G~OGyIda*hXRZq3cn@sBi8KJe6yCKq%&90GBK~5AV1?lk#lX z+6{e>?mp*nK8U><{E2>6($hg}GGo7V^Kc$lPkgSHnb#s6 zz08}Aas*bdFoS!bqXOgOA08K@8DARaj*AnJc``0n?OlxShBw#qSP3jf3LED#DB(_e z=rz&KlqhvQDwY26-lfU))Ob_kn#7(5cq2RR`Tg{2!*1+1GH>gf?ZF#6`Qzw4Gw)2c zQV?-}#)WT+)Ws}pP$G6xV6qfN9To&lS7di*R4fmeMpr_2lW>Uk=YF{jpsIP}!_UgF73~+VDo*v(4Ehz4WD=kXuMcsbC#d7gh zfovMTQpNP2@`IMk?8&tUFt^F#$c8rAgLx`r;A|z4S4bHJ!#yt=T)0 zhRFihLjkO?FGkciuE1!=hD!7+0`u$Dz)EXQcgicd3U9PXMv9S}P-7mC>SW;4HtpfW z%V%%kUmgrz9DP*$3iU)ePrm^6eo!Bci*(5?#{Pur zJx|CDxaTqk;{f^cy!%zTtk`f2roiNS(*eU&b#9Ek7#|${a#DFU%F}WD= zT9;*>D(o>@eX6sex<>Y)<<<}Mi^maEQb9i%)4HEms{(_0Qr8=(Yzf0JXTP}6;6V?yKS(a7qKk!kMbpKl{*0sZe&*BR z$~6Y5p)WP%RncMIiJ$D%S#K-%(X|s4LGHkMIeX$s=xSuRN%a%IWi((i9 zn3UYJTb5}g1$sJZB@8J-V5XwZ#o$fDkq+^`*Wq0%ZsJ<~07sO4PhYpEMYti;uqo#rMiO z?I&z9JYOTMSl7}39%_j8YW>$^XYEOqX|{Z&M0oG?+)4Frf|2`dRe^eA4$hg>0~a&Z z!7XhtlfK+#NyLdNdWUne^k-HM&+cg(N75bt9q%kP+d0&ymf%JBAO;hIxpgOY3I*OH ze@6}8YuIZ#xEzl5iJ!khiyFNz_G8okec!?9Q(0}{ZEzCir#XGatrs|10xB5%FMHH| z5EZEB1@z4ZbBBrNHNKZMGyB1DL7FU!*qc46>4u~yJ9eEeg6;3TGgY` zKUbYLWB2zEB416LQ~eXJ9gEQJ!AWa2=3;-`N;lf$1GwZ|upJ9&1_Et+#Tzk(coW7qU7=)Mu;w?sdCYmDSM9VMn8E zoxQF0l?cDcMMbHL;Q_h3?2@=A?fFc4tQ~w`5~y7WKt&Je@IATL#LI=!^xb@&k;)CG zSC%I}iW_r5L9k(W!U7|Z9H;ek#uy56)jaylCN z36!$ZK#B;QmFkyTmPKsW%=;KgS?X;QMfIO^_N5#Q(as;N*-*O-OgN>Bb#90Y9!*a{ z!f8;?pJSx1O=;Ay+QPnOiM9rkGrh@un@Ky^ktivTiy>n_^46R(T8*#u)z}+kc+?#Nj?4HIn;$(=bRf9WR z2U4kZXJF4W*5Wd*EUbE~!PuSo8~Y~g_1+qvqetK8p2w4qM)$n;JQ)|+LE3Z{EZ@SM zXMM5P;!qRHhikie+~|<=rHGS*F6Q}k?8$v!N;T63@qm@HmD`eP7x!0)iD+)iaT4P) z!vUjlS>jq`>w26T7dK{fVXYc1d9jZA_>Nb3I=p~HEr6Hfxb7g*5os{Hsolq^eqCmH zOr$*~Zk7c=4%2?v7_TLiDdcHB^=wX>b)Wa{S=2n$P-Og5#Ia?7B?e#AOgl8V&a=I6 z{yw|wR?{a<#0VVNAKaaU(poGgDO!xG&&8h1#5Jri+v=kQR4Xo}CqJYsTDBWESDeh7 zjH05h9_{Sk>ed4xJYP}Q_@s^H-p=YiN4Yn-+$=KRe4Dm2zFMMnx6uA7OICs3gP zkYI5M3!lR!w&U%*V);81PTYM@-P4^)4f)KHktH4jwrFXx zkFWCdyjR$nHwX#Reqc6<$3&B!f|N+03|SSu2s(OwohxI}{w?2N%XArhlOjq;koc{mkTfsd zP5H}ePc`f;K#fO%*W3^aZ73ibIRcr^O&kbfEiR^ler}I;} zY2?OQVIjrn`*P9;;^^5Fsnx!ojx|mf+iw!IE+W8Y`-|5_AJPm((YlE;d-O7bV!|!s>hq78NX3q$kHEzTS!- zE8`aL&u~h3RT6~_y^QT<#vU-cBTk*l7O(r7uT+%gr2Ejd#xdo-?FXv8C4fEH#4p-Flb>`}*N&${Q z7STPyPbwX~zSk37k{~BdlV-WO8uKkW!iT=ZCK0J^mOHfO>lhpB6kBjygG+*fWfpS`qd zTt8Jz=NP=nXMZ0)phc7Bd$Z=dOW3}cnW4z!VG)wy3MGHkS(-st{gX^;tG(${ev*Dx zpOLIe^SI?=e^&kaPS9v`nq9U;N%@{$;8`2Tq*H>yyWOD>%XTKB61DL$-=a0Hb2j*m z4Z@&U@^FhNR%4~VKcvt)6G$j64P*!>#YYT5y28&Jw3SiaXsMfJsrtxULZ{*K%2Z{K zCx@)ZD#LvUg+{01z8q!m5>J$7^xxt6erKodXBKmRqe@PlTyX~WYE4{)AhOUTMp)&R zu%X@Z*N4MX>D)EkiA(puCO66;q!}DtPz7PXmByl?IJwSzTHEDn-tfDucF$`~+-T{s z1wMNlou=Y0<=E9YZbN}SQCCJ?L?@FNR_5LWtJ701zfw&in6!3LozEe!%#M4epxTjj z7gH`q@^~)>%6(PQ@ji0Bs^ihRNd_LQy0hIq*n3!Y_oDdv8vK0+4Jb06-88p1E#9li z==(Ku-Y#|3KL5kOv!8n>7y5vdI&PN+een9rVZ6g`ba-p&gQKqJ?AGyZ`mL&JuUJdh zqmTOugdnlIz$}%l1{=rO=A2e*q1VW>hKhyP15I`rAWGzY(5ch%bO+K zK5MZ*V}GNP_Wo3p{#pcu2xWc$T#EQYY5$Jz;Bg%ByWFp8ZypOa`6GQ}Rz6ZSmZ!e} zenzHvP~3rAR>!^iRYKhaOnWxEk?)t95K|E;Q?I0N;QLA9Y~hp3<@9`0IGtkCRS-~s z9^8uW%=R#?sRJb!=9kiT;Ui4XTmjVNzAeOdHQsbmb&#&namU8|q`$0-siA{CjzO!u zZZu~8Vywmi6!eh{<$K8GTb?-yR7HhG(HQu{ASG``aE;Y?~I0-Ty$0aZrtcyM&A$GkiOkZbE)cL02s2A`>?LGOwt+m-!>ia zU82h9{wrwRuAknP{A*clkfZ>SR~@&J+4oD`97H<`ofaj)!4Gso176m#1bd^#gmIq4 zov%=IuRlw|YXq@W@Sj#+^u}jk{X5sk3L;kCZ#z%pNpJ z1>05eck0&G78qEZ%;29+QV9D;(&sX>Sy{>DHV4BD|7@MjE5=sbHkY*uVD}&WptJ%a zKomAt_}LTC^f>A9gQwr~>L|gR|(u{lQ7XWcm~vMc5X|F|ZA3sWF`oxdw@+E;-Fv zY4n3Wq`i#om&nQhrD=2ox7nR7lKIwphR}pLJ^U~cV|_0?R{Wc+fi9bJvnjDv({4h% z8JyE@VxRcU)JXvC&#xl5^Qr8PDH{`qF3BDEO0PJ`a3z==R!AHuI4s(yo(WDP6YyFj zZCGeql9IPLtsC@ye%hXYLoX}WG2%x}tax`ZAjSogHt$7>0pY)FAaT9UGA1O|zMn1h zV+cM#Bt+cp@#X=1xt~D#CAXZJ@d#xRsXjVC;OnZm)uNC)EI9o38&;u%05s zn_o=T`%!A`^h`Hn^@!;0Y9b*_=Y;MYx}ruQv$`ECumIZCw|#y zX3E1NXe@;k4{S%i@b#PVS=Oy=i(h>MA>W?JxlKt^8Ez8OX38so@JT0^*2Lv}K(#&; zPFXvut{sKn9ncPG=lS>FWH24)E4tF<-;aqO^yPf1WB}91oTg>h*N>N^hIVvnQhq7~ zQo1H1VMbH!Nuj^2c?oeT+caEk_aRF)I&_@#qAVJGnW47+l}|(*F0#K$>8Jcy5d{=5 zZ)4C4$cwr2_NJiuqM&%L1ISWK8C?5HIq=0|fSXF~CMhkkpJngnh-lEJXshY>OryEA z2ai^bUs5W~UkT_le+xmw?j;GcrX@Mm7$??OSIGILF&D~oMz+-c)(~*fL`!<}-%dm~ zG>fQ*klI;i1+uy54D)Mqi-lbn7ltxerHYbK6FmL)sRh*AWw>efO>hk8-Emdvqw7R0 zrc(F5{}~~lTC4G@kxK}k)DPc+#@XsMEE|T)>nVoI=Xu?Fp@l;yt$8S_sXsx)eZbSA z-NzkL(f2-&TDt*j@ckw(R)lMOB;-Sl=9czW1C@`Oue%F}ZecNJYB3gOAhl@--5id;$ z`e{FFsMpScFl@1U$}83^Z0h(6_LO1q-9({O6q3wvmS zqdTRM;~uK1eWX7OR$D3(cq6JjPw%a42dw=8!WZb?m zKht$2Gua{h@#u%qANCQTpEu_Q=BA@#{6Rye?3VS^kAjma-eZ-f#o!9Pgn(R2dOpM& z|F65^;sBS%Dyq4=7l0%x3luWt90kBK&-g)1nL>N4P-Co9Bp>a=&N#-0(IMWb< zd^J)f9&`ua+DnVPoP%xUkTOnBJo8=H{sA7uxM#B`WrAtp)%$!8Qn~p`?Fa)rlxAp@ zxjSZp89u+4+|_=npZ~-uHSz7R{?8^ZUF(s6_c2P`paFj@cj)Q<(ojlTZTnDq zm-_I4k1q9qywT*Ybl*&NPP^BX1lM2CT zN>Re4Eutw{k~4!V@YM{lKjK-|Sz28g@g#b$me+LdlPveuBJbg592 z9cl0alA0*R&Zc6AN+G`AonQ7UtykbKWzgrD_M4WH3OAby+DbME>hEz84d-_}2?$=O zfSv(zpq&YVZEUZ{Lcu}(XD%TCnY7syno_1e@TW$rZQMfrlGPN5G|!7WEefkURpImT z`>{vesic72=G?4P$Cl-8OMCg^Qy$t0otfriE$KCv;^8Tkn2LkU$&o<2l^nq>Jv-17 z{l~8p<$Dx$c4>{3T`X(+HL)`f}W$CzfKlLq277 z4@JDCWGTx3MEPVFC>i-n0bl)6Ud{zii;+;@Cbd_n-CU`+yDyM@fkSkd|CY(wfk9szd(cocg$Ijqe6f&Jk=3cz1aSt4`w zC0+{bLh1W|5@G9R)Rr@BMD2SbxP-!ZYh+9eDKc$o|F>IAxUMO#N* zTf5GWk>wE+zaRu^lZ?edL{cM-xcHRt@R-1Vy$i4@b)^gb^+c>mzJ(o`TqExS%CH{n zZt!(r0AmiyLHD?pq!GOOo%OZR{kPi?b>iD28#R$0%wWuEVrB{N>l=p7;TIw|bKD&t z$^wPzsNVKc6n3Efo(~u;>rsyDrj0$T`91cYdj;Vl;(OI4?7JN@>gG{X6Y(tN{k6i) zcDmc(OejE{RtWQx~Pv?CRn+wjye67vXN4VhekphJIizICA`52%Ect6F9H!$v{g z@3`R#A46x@_}4)8A3_VP#o`bZ_p|MuH-#Iv_kxM@H_b06-vCk#+*Os(|hhQ18 z>GQ$o7&QZ{jdiYu_3Pkp-dkLcxn0?**7ixrIb69!t^nEu zuIubu!585QcB+ZW&S8d^gptUB#SX9T&Ac7BIW-)R?L@-T*s&z8yyAr|tT~o9ef+S< zp7HR$0dvkHb=$1MtxOF8P|aelBXKH=W)$S27+e}JSVmJh`o-f7h!OLJ_iD2{yV2qz zTnH_o2HH)%?>P@}33&mecf;rn|_NmU)Q+-57Ni|o>{AiM$n=W~wR5MvJ)&sov)HLGz_?>LQ z9Jb2CJ&tKzil@mY6mDQ0+tf{ct#wKTm2XQeK&k2J!93jmx^Q=kYp+k2< zeuvw1oX}=pNGH5I<#v1Wh^3WY<=_luxylC4CWf-CQ_d@f zV`*SLUM)hZKt-`tf|p-|vPlLD&3K_>%3+_JGNPgvvj*}lfT6x(9k^WTf=tq|OD zMXfAuk7~A6e^E)qF z$w%)@?>IbSQUP?ky zPU{a8Z;v$+YbY1(8x0HsYda`^u2aE5SQQ~`U;UT&K4gRVTfx!v(t{Vh{jjMwU+f2^ ziuxKPe5c0a&Ph3ejx{}PUggd;{X3ow{frl-KymDe5ndl`(Cq|;o|!t<{z1|`xnS_2 z-&84K%z9W4sH$73#rYfZ%qmwYjgYT+g)f&eG$1D|dQ>biH3B5WS<``vv?=kS<_qGq zY&YB0KDyN!?={gM#8$7;$(c$tFm)$z-_9DSw#V{N|CLZW`#t?g7M`hdUe&27G2BjL z>;vl@+&(8CW?@H_V>Y#rZnVm^m-aM|!^&Hp0sV4bSel25{MT>s$e};X=H_x@o3`#M z1Ni3Q5y@e&hQMGAQDnl=SAyGJtGWF1RJyt&uFA~Mkq+fAbfS1D0)w;aDVP=qUu>Ij z*+d--dWLv@o1vN=r0FEHon;w>b?Y^p9qPGWtksY}35j@rx%5h?-Jf)KY z^A@AqTv=4eF<+?|3Kb&a?D+7(j^qO&^<`Tj!Jf99HA*t$X4dXG8rL`#6W*wt7g~#J z2nui{5LFri@nItO<50Z&l19LB9O>rBqx zuzTPV#M!*$nYY7g>Cu;@qSo%65{x8y+#dmSPXi-uNK_+Et&rn*iHl31*E1@5$F7rFc`^jQU6(RF z!x)zu7uk4j!A~t6v>Hg2Gw8RKhoWPhx;r9-8RqL)3cu|V;~~~QV#5T zuflHD=EhXxyM0d&lY|mB>j19YqaP#iW>vkHA;O{C`gTIUi~+7)bC4zRa7pkalvzj( zfpASNL!RjASDcVo@CGp_?Y~Sj++GTWG%f%3^Wdp4#NJi86B5az;!VDeJp(8X-c{J-dO=Qj zvGWQ4{>M6kA%J-)dQi|YKv7PuJp5q zF9SnY+pMzKbXf|@Jy^z)q~|wXG70lti(-Qwu1zyet(3=prQMl!HOW{`6#L6G9jV9z+#B0?mi=J zk$qI+D79CQQqoY%xN)cKkl`?rVjaF#a8t$-y7MFvU#6s%dJ9(Y zS?WtroK(_Drc1rKra?TEHh0psWLGmh@)9duzV*O0p&d@{dTS8Z>i$pPKk;>6^%+XJ zM=wLZ=w20^O3zbPh*<10UJCcjHbM5X{!mKY13 zavE9mzkOL?Rn5TP$6=Kw)p}bxiS4V(8*ynr8VRVLjjA32F;nFTWcE%dG(+W}IO`oj z&c$REIVrv@`P6>d&yJ~*c^_{$`i3Pi5i<#Vv(kU@rn@dC$0{T)^r-pWHnFea6Q^A( zVuMYjh%F5ps3eldtY^~83K>$8i?p;;kO*H%w=nJ9W43bPRi(E|2(`-DK~7%oc+sF< zJjFPke_L;vb?y&}ISq8DbvXaYhzcKJtk27`P14q!tE!nH}hpqN1jgzXC zPZAr-FnRfc%q->UOR?3l->DX-2w__7L8ktG6ffew-k+;sRHX3x6&QLYm;c=I*#=s2 zLswk|wOJ)Jy32U{G>DUZ#OuxbD|pXj@&uAZ2d%(L?r^tN4P^C!*Hr`;dC3=}6A`^V zh2De!#m~QkOwU0{hmma1Y`|FwHHliUM*UkjUtN_713{!oTGEfSXF(@@&ozJw`rHg> z=_=nkQuhc0;lKK>Vk_ntJyLHk@(ANQf&QhiUGb znCJ*11CbJaA$&?flSP1?{ZrKlpqiyas{Q=wD)_qe9Mh`z3#68IzZosIqc@$Boib-f zuz4auAX6u+{fn2X#_yX(M;SFe@`-Cuw0=fo3DXqYVh{+p%dk_4aR9GGtoMR-XddXZ zjXu?+*Gg1Dy>pmIhJ|n}49-`)to@lO2S~~i>I@GXQ&3~K&~R2INnD}~#=xnfi0N13 z@uWjdf4%R$>sJ_&w@2~d%#VUf_>{+EsS5IwP*aXUsZ961^*LKswaTG@m=P!*&q>H$Q@Nnb-s&E6K5^Rjy17%mf(_-wa` z!7W)w9>~N!Z``Bzn%So$D~oSv#axhDB}a*)-bDSOc$v-0=O4O%Y$PLUmt1>X5kW;7 z?V)@oNK~2Rh@@|GSspvC+_Fv_tXWG(K&5;xb6U-eP&>Pl-FCGX>E#D8QmQT~jaKJ% zJ5|Md9I@9Mjoptw^GiRhip;LL6y|~7q275couu;TasjH00?FQp;A?Geahbnl0oeTt z{~C+D?Qp>4u@al!JdTzZ+n3O)GtEdzUWnq^vT3+OzUnCN(s|HTbsmMD(@?-HXEw-*%)> zm&Bg8D}}Bpd-A~4lk+x`YvL9JnQ@>J0M@zlf zne5^`iI>0~@bOOvW+cT`e;#DN;yanSMBs8^03|f^*K3Cq(^#y+L4wa)#%4#6ufs=< zsb$<^Q>@bRB!(&3q?_gVn1PemWFM3EA{-+*1=W_c$O39&!+Ce-2MwmaN$$vHgW6<5 zSLf}mGvye=9w#h0*GhpzDPI)5t)1Xix}Iv%^@{>+)eKmjZ5Lix8&tX|T38y9^O`AG zI8A;f5e_Iji>2k^Fag5@mNliN_TLQ;b=?fJTd-$(BML5KViv^8NCLkvzIEYZn7AU* zUSO9do3DC?myBQB4D`S{;a9L@Y-u&6GUsK;<;yg zlj9I@|LrGssK;3-T|iC;`;AXS-(~5aUCN1P8&@&P+Kq*H=#P50rU=-bsj`aw0`cRT z4zjCGZwYc;g9Z}7GdHFVA{dOGz(aq5_18`uq5&_fn^-iPY@ul?omSLioxv>aZ6da; z?jud=7lxjTj~T&(%$KdG(-{u>$vp>{+xL_f&R_fIM%iwoS07zocurSGs~##Nh0Qpo zx6QB2yo}kDU=KmoBO=%*ucrZN4$YWsBmIahs@0n@w#8A&WB^y>mBmsu_m9zF<#4*H zuYIRg(}TIJ^=TxAE5`sIt5gABo;Wk1JSw(IBcnjto92$nTYF-*KlZL_y^AKr`)hz) zbX|p{ebPOihMGcbV4Yi=Sl-W(^Di{GA}g!|Gov|%lHY%6(Tic!WO?&=T!U6A9>k9C zO0Oe>SmE<&mtmL5u403k6I0FWKhYMXiY3&fi8NcRUXbqN6{08<1VVO}+F1LO-7jA6>Y8l&Sla$h1w1OO zWYG$s`{wiAN1tm<1V56rJC(El#7MW@UMT5!n!zcBnANYkNxzFn=d(QaI>^L_2h-*K z1O~F)T_Cb*e`w2DN^&5<)AKqtcY{FYVnubfW$MOabIw5}c8Y?uh%|PBJl#Fs&iuRe zu*O#w_3-q-Ldje%Uwz$dFU7)KFjttJ(vYed$f$;E@=;ywQRr^EY49JY3v|(pfKkeT4w6UBWujEZy6~W#9qWUU>S)V|`)5J%Qt#9kp*d_cip^tW^^x#)Lbv!_iRZs z$4xFZNcMTQK7uhHisoSgS6WjQQ9GICX%Zy~mbAf>`kgF-8G*mfwsT?6d&<;N<)eMW zXKT|9ClPOY8%uAd-`2EHe2#Pik8o$2Kj5XeXVuXB`H_pYZ?Ux^`JD0kyMunfN0=5N zaT;^L{(M|=S;$rmD><)SB`9x1VSWe=@0it$>qT!~Q)Vyg9k;!@>_v-ilTcQA0aLI+vFOF3(g9w z7@5#vWls_lb1M5Z%x|v=lMO)H*hu3~Sf3mxN##9s=nK2$N=fL|W%yeG?flCYb=pJb z?>Uzte2}!ir^FC%lhPkGlD!isadw~CfXCmeGt^CBy@*)~kH;Tgd7z=A z6xCL~UvC=zEgb)&y150ncC3##N{u{T|84PgB-JEt>rwu$g4 za`{6p#@|EL@kkWvazL~4V(7z!ph=n>+dB&*mA^rUiCl_>BzFt7ZM;63q)3<9%!NE> zQGEY22+LdSSQ+BZZ|5=?FXJ>Yzv`eu4)3uqXHOgsbout?r+mO@wY@-woaw}CfP3od zxUJFOjDo2x3k!^-NH4HCK<>6U+aFlp6F80TT0T|A863C1k_+>x zcm!_1*fzJau3y@_lmC98h2wt283>A{68y5|Qb+|c*r<2Vtc^oOaaI=h5A%h56w%A^ zUY$53E79LCoEU&F{tZW|#jY6Ml-p0|ah!((F8P;bj}!i8RZ1PmW2z!@4N)7> zYd(FQW{tlYBW+Urus3I6@3x)>C2nbh!X)JM!tXIl256}fishoC+`38`=y|_?lz-jF z7oBY7>g8A^n15VsKxjeesW%E#R8>YPO_%*h0!*6Ex)p#5|E4b@q+5iZ^r#ui4XY2a z*-TGbYm8~e8spyboInc4TW;sa^*fg&^B;7o{^iTh8a;{t{%<5nnw0rs%zWGsl6Cmcp2wSr z=9cp#O@QN~l_g!$nblP2o-4kR{jV{Fg#bVZmxnWscX|9LIj4J43*oNPM&mOywhOuT z`8!;6NeJM!4RA!t^g{&4M^D7_l*ZX94%@VRJG#^C4Fj(4&5{-EtP6%B;|F=TIB|Rm zKXIC_)^XdwEPVL0E6(6m)s7337PlZgsd70$vGY+}4irI22Zv;FpN01rRKJ`87EP^E z!9S{y)&G{5nSQ8SB~lR70*1`78o7-En+>c>W4^xyZTc8KO~W9ngSjL z`#YFgO5JtOdn3)(yAPuhDp)v_lMvz8ZaI-OKAYOEN0b9{>1Xye^&1>4t@BVykzRhKF+vUpjow#}aYL`3*X*`7bW_ zx#a_)bq_P-uq_wXBz|)+mk=BG0>_5z#Ql8IQ&fQUp!~Hd@(=Y>`iZ?|@Jg%KeiUee zqz(`3pUNq(ws(gd`T^9Tn(A}vpW)uce+&MG(CrN&(%i=bK?Z`l3}>^b%A;;!sw2#z z=`6?#@ZZL<8U2?YyN{1=>Zo*BoeQ%dOsiFeqHYDav39o4N`Y%TY?jEzi2ke5EtY)@ zpagnYoC`B_64KJ6!P)JC?$-T_1IU&8|B_q)uHF=hq2%k+-|r?@Ua(jz7BY#PF$x}! zZ;}3sFikY!z@#4EGbr4`rmVOm6zNHKBuk`!bX+YEVe9xWTO}w&AeGI><)J>Ek$ zOTxi_w*s1M5Ja5k%XA$Q2Q2>zXnHCA^390>!s{z6byRz*C?y8x8-a|KFOV(qg8vCG?I|B(``KvXc<;X&mYxtJ7wfyEi?^deP)ztA>$V@UILX%#GlD(rh#8)+ zEFIPP|G`fUWc+$Avj0laze!J#W_?CoEjWLq!*n7I)YE65#d`a5!JlvXj{hQTmJux_ zabChbo^f8@Rh6qgY2$%NBK=Co;Y`Prl?RaBY~tH+?u8J7yqkS^40LTteE*P+V?MA4v1Oiv*NBSUUp~Lr=mj-N(N5C zieyj{(2rPrh&Z$NH9$wH+!K**IX$3n@ULhz@(T#S8o;dS#vjuQkxW~$f{s=i+^Q*3 zK;=}}PaE@-Fds=n9O720Ar1(Oy&`<2Ys-KBy#0z8`DNulz%L{U3bz~ut~o%dtDl3( zQW{PnGHEB`f<0A4mX5!m1^>gH@<{u+Mfjx@;n-p^y2F<$lJ7Vk4j#_B%A;iEcDnz# zeq7mpG?suPn+3g9Xg6`_=;UU_m(|LA*S}UJ992YvFS(2%vb6aQyiP70R6FczbtdaADSBGmDD=;c