From 3f8af55c58a3c92047f46a5328e33929b9e5fc8b Mon Sep 17 00:00:00 2001 From: huangjian Date: Fri, 29 Apr 2022 18:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B5=E6=97=8F=E7=89=B9=E6=9D=83=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/adapter/BaseMicroViewAdapter.java | 4 +- .../avroom/adapter/MicroViewAdapter.java | 36 +++++++++++++++++- .../avroom/adapter/OnlineUserAdapter.java | 11 +++--- .../erban/avroom/widget/RoomEffectView.java | 24 ++++-------- .../com/yizhuan/erban/vip/VipMainActivity.kt | 14 ++++--- .../yizhuan/erban/vip/VipSettingActivity.kt | 19 +++++++++ .../com/yizhuan/erban/vip/VipViewModel.kt | 21 ++++++++++ .../icon_room_up_micro_vip.png | Bin 0 -> 23586 bytes app/src/main/res/drawable/shape_micro_vip.xml | 10 +++++ app/src/main/res/values/base_styles.xml | 4 +- .../activity/TreasureBoxActivity.java | 4 +- .../activity/TreasureBoxHonourActivity.java | 3 +- .../widget/dialog/BoxMoreDialog.java | 20 ++++++++-- .../res/layout/activity_treasure_box.xml | 1 + .../layout/activity_treasure_box_honour.xml | 2 + .../res/layout/dialog_box_more.xml | 23 +++++++++++ .../manager/IMNetEaseManager.java | 31 +++++++++++++-- .../yizhuan/xchat_android_core/DemoCache.java | 1 + .../xchat_android_core/noble/NobleUtil.java | 4 -- .../room/model/RoomBaseModel.java | 2 + .../user/bean/UserInfo.java | 2 +- .../xchat_android_core/vip/UserVipInfo.kt | 2 +- .../xchat_android_core/vip/VipModel.kt | 13 +++++++ .../res/drawable-xhdpi/ic_hide_enter_room.png | Bin 0 -> 9653 bytes 24 files changed, 204 insertions(+), 47 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/icon_room_up_micro_vip.png create mode 100644 app/src/main/res/drawable/shape_micro_vip.xml create mode 100644 nim_uikit/res/drawable-xhdpi/ic_hide_enter_room.png diff --git a/app/src/main/java/com/yizhuan/erban/avroom/adapter/BaseMicroViewAdapter.java b/app/src/main/java/com/yizhuan/erban/avroom/adapter/BaseMicroViewAdapter.java index 0b372b79d..227a95d83 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/adapter/BaseMicroViewAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/adapter/BaseMicroViewAdapter.java @@ -274,12 +274,12 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter(), } }) - mTitleBar.addAction(object : TitleBar.ImageAction(R.drawable.ic_vip_setting) { - override fun performAction(view: View) { - VipSettingActivity.start(this@VipMainActivity) - } - }) - binding.ivTimeHelp.setOnClickListener { VipRemainTimeDialog.newInstance().show(this) } @@ -155,6 +149,14 @@ class VipMainActivity : BaseViewBindingActivity(), keepParams.horizontalBias = it.levelKeepScore.toFloat() / it.levelUpScore binding.ivKeepIndicator.layoutParams = keepParams + if (it.ownAuthTypes?.contains(13) == true && mTitleBar.actionCount == 1) { + mTitleBar.addAction(object : TitleBar.ImageAction(R.drawable.ic_vip_setting) { + override fun performAction(view: View) { + VipSettingActivity.start(this@VipMainActivity) + } + }, 0) + } + } ?: run { binding.llMyVipInfo.isVisible = false binding.tvOpenVip.isVisible = true diff --git a/app/src/main/java/com/yizhuan/erban/vip/VipSettingActivity.kt b/app/src/main/java/com/yizhuan/erban/vip/VipSettingActivity.kt index 8a152b651..41aaeeeb5 100644 --- a/app/src/main/java/com/yizhuan/erban/vip/VipSettingActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/vip/VipSettingActivity.kt @@ -8,6 +8,7 @@ import com.netease.nim.uikit.StatusBarUtil import com.yizhuan.erban.R import com.yizhuan.erban.base.BaseViewBindingActivity import com.yizhuan.erban.databinding.ActivityVipSettingBinding +import com.yizhuan.xchat_android_core.user.UserModel class VipSettingActivity : BaseViewBindingActivity() { @@ -26,6 +27,24 @@ class VipSettingActivity : BaseViewBindingActivity() @SuppressLint("SetTextI18n") override fun init() { initWhiteTitleBar("贵族设置") + vipViewModel.loadingLiveData.observe(this) { + if (it == true) { + dialogManager.showProgressDialog(this) + } else { + dialogManager.dismissDialog() + } + } + + vipViewModel.enterHideLiveData.observe(this) { + binding.switchHideGoRoom.isOn = it == true + } + + binding.switchHideGoRoom.isOn = UserModel.get().cacheLoginUserInfo?.userVipInfoVO?.enterHide == true + + binding.switchHideGoRoom.setOnSwitchStateChangeListener { + vipViewModel.changeInvisibleInRoom(it) + } + } override fun initWhiteTitleBar(title: String?) { diff --git a/app/src/main/java/com/yizhuan/erban/vip/VipViewModel.kt b/app/src/main/java/com/yizhuan/erban/vip/VipViewModel.kt index 3cef39747..947e5128a 100644 --- a/app/src/main/java/com/yizhuan/erban/vip/VipViewModel.kt +++ b/app/src/main/java/com/yizhuan/erban/vip/VipViewModel.kt @@ -42,6 +42,9 @@ class VipViewModel : BaseViewModel() { private val _vipBroadcastInfoLiveData = MutableLiveData>() val vipBroadcastInfoLiveData: LiveData> = _vipBroadcastInfoLiveData + private val _enterHideLiveData = MutableLiveData() + val enterHideLiveData: LiveData = _enterHideLiveData + fun getVipPageInfo() { _loadingLiveData.value = true safeLaunch( @@ -132,6 +135,24 @@ class VipViewModel : BaseViewModel() { ) } + fun changeInvisibleInRoom(open: Boolean) { + _loadingLiveData.value = true + safeLaunch( + onError = { + it.message.toast() + _loadingLiveData.value = false + _enterHideLiveData.value = !open + }, + block = { + VipModel.changeInvisibleInRoom(open) + _loadingLiveData.value = false + _enterHideLiveData.value = open + UserModel.get().cacheLoginUserInfo?.userVipInfoVO?.enterHide = open + "设置成功".toast() + } + ) + } + fun onItemSelect(position: Int) { _currVipInfoLiveData.value = vipInfosLiveData.value?.getOrNull(position) _pageLiveData.value = position diff --git a/app/src/main/res/drawable-xxhdpi/icon_room_up_micro_vip.png b/app/src/main/res/drawable-xxhdpi/icon_room_up_micro_vip.png new file mode 100644 index 0000000000000000000000000000000000000000..37aeb33807f989f3fd3e1abbb035c88f10c59218 GIT binary patch literal 23586 zcmV)-K!?AHP)PyA07*naRCr$Poe7v6Rk`>7r>d9PXR?t5vLIm%tB|mSMMXs}vR=H1EQ*R=1zfIj z-9QPu3n++y0^X}Eie6DbM8y?BKml1o!j`bd?8{`9p6;%y^F8O(d8^+#eX6HtGC+dg zv@mB|NqigKuRgF=&E*9%iWLzZOD~#h@w{b?fU`P8xq?>U?QTR z2Qun_j0zBu2S@?P_$mqkz*GMvgcku`1zx@%zPBC`RzrA;;dy^YICMX9xe@{qz|RdL zDE4CZX#+wCbE1FkH$`2=f7vhj)b~3PteOW|-4Q`)9HiU^p1&&~XCMl?fXIhXfcZlZ zC_zRgc(Na|8vplX1qiD^RDldb2;YbB3xJ;oas?pY0g>wfavcz&74TXi(Ej0tYi5h>J{uS-`o)@lh3|{FHqQZCUQH>1KPINkV?M`!fOLO54o0?f&7h-(a%t9 zUxAguDlz9jt8Y|L-;hws$FCX(vF_anHtdSXdnaUd7wz}?Vg;h!h48~=@CILoc;*>Y z*9}2|N6-;yHiQHxk>G+f3&P|%7K{Wb0jz#jz~;xbz~5zii0wQmRB-ilsiwNm2GnoM!<*aI&K%+owQ+dgmbfmQa<*zBN47S3)S*$0Iev9hajK26=LOb$aVdRX;yG?7}aeT zi2ObRP^(iDZ)xB-CfCIC2)OulYVSh=sRK|7kjTuF51O0U0e{96wC;H{MC%+xq69C$ z2!88@V#bGWZ{oMvqz>6^pw!CPzxqH#!B-LV&xVlw$mL!}?ztNfJierMRfW{xWy0uC z#70WUp&LoC!=dBmSKW3&Yb&WsK}kJrICTQwe6`G-h2mZ(!^=;H@H&9vBEb6sI@|9N z6E+X!+~lE@a=wShbMHoF-N}&Qkq{`u@4FXX@56`|E`ndKCIFJJsNhMZb_}T6ugoyT z3cgI!PVe}}_?DJ0sZME|Xd6~1sO&t-loOz2*7b9Wc@+1Vjr_E|;7vRL!Y@Mjw*##= zV8)BT5@LR|NlByi%WTq6%16G{1G)NQRQr#EjJi>X?uPgD9f)384wS0^gH0(TrFOJA zHUN=nRxomNObX~q2kDDs0m#j|%VcN0%N#UrruFfbiH<)saazb$RDHiO^W4O9^-QIh z)H&MnXxVlOTIU=Nulp^4*9%ejDZ>00H|12)CJCi{=&Rij{rdscAEG)i9yxynifev^ z;I9wX6p)$ek;3Q%(E%X`m!KO7ko24sm<+fqNbQK6KfhTx^*PLIDHZKJbS`q+od7R4 z8KSrr@IQb`c)ytSpS_!!YHo5+%E!(-5Y_%O5Dpy$;SC_S;V$GB-i2UgU!sIgGi{k@ zu8Pu;9493t1yskVFB>{n&XTLPZ1z>eD4@TlYmk_Hh&tb<@u=gp8_ANQC$BM z$ov0_D2!6-*bIz3U`c`2{g$THI8-{t8lCNfmesQ2m|K zMobOWdFXMjoLO)xGfp1@ui&BU(EU-^_Ps!UB1HZNkkNcG?IW+en!q)4?$;ek`PcqM71(B90!pGHPHPs;G|PrkR^#+jQIJ+cwj7N~oDD zoG7CeeRH$URgar+4kIeh=+a+**l=sQTCNL_)OsHY=Eq#mmah{!)RkWzI>{ht2# zc67b_-%!}<7{Kd;%wLS&wkyQW$5qA}xMt4xx_;M_?&h?!_|;O=4#Neuc+PT#viA=q5T{VYpSZl z;37!v07w-XxyeqMb}PuC=MtRUr1Sh{j^#SL58n^1vrh(c6W|rEgUEeFOg>>nGa!xS zF|Rq4@`>|yN2%{Jgo6hlCm%-snVS(Vd8MK6r~(`gBSq6ZA4z69Q9Xw$CVnJ?KDnAK zC1k^v72J$ODP4Y~_BePgoP%ja;?4-2rI(a?a4Y>m;IHgDu_X=$8Yqsq^4IKv^ zk6hnuMQvPfVr1mqVmjpf>%;Mw@bRKg8ijxjTfo2Cb@tYgJP9s(1Y8bl^ zwXZDr8l{I^X&`k*4l701wu&}VPnT(@$UQOV1g90`)B-94rAe?;nu+_F>US9b;rF6A z^)Mhe27ame@m6yAfshb)zA(XvTy zlR4(*x-O70N=e|@%IGrDRD#qhXsIYyL4wbQ%~jbM>3iZT9cuG!R7}BYt0_Ik+tqkp zlLK1&5X8z!z$btkGfj_WnR69T5u~D{i1A0f1I2BQgUGLg=beTpmfR`cHh*K1W5Zs# zS0Bnp<{ypf`fDKNcoddj3i;Th@GF%h8LlE~N{rj7o)nN2>==dAf12etav&3BG|zLv zNXNTi0KKy(4<3U1P-zW(j7{YZk2j%);I7MwbjV@{9- zC;6M|97!O=l(5d68+a)?CqGj`-F5Iz=-B_$5V>y1+_6~n%pI?mV!kR+#y(_lII8{E z0Z|TxrB^{b_BccoCO{@RN8>*_^NvjA5|hdR<>ol?DIL!tQ*VRF)zB_A+A7LX8%Yw~ z1tj^Ewol2;w;gShdFMe*mRYC!If$gjBQfWstO|bV`RIDbZs^$OG{6ra@~2|r@prr$ zKIW?fqoKr{vU=g)(;@TpM&$s=n!D%U{q)Q$^alb37;Mwf4?gCs`}BoM{}~x3f|{WU}pKc;auGAjnRP7ff1$ z`;F=x957eC+cwvvpmrWID}5Bl3L~HQQg*58a^@IbVNw?h8q7fITu zSs;1tkwE1@+Um%Im_|U7+7VC+Mh;#o(zc*;L6{o>n1N#%L>8oWz@vU9|C65MQcfF8 zt*9&l=c-A5CI>Se@ITNZsL0D5MP}ncgaEJLAEOuIrH5782ZVa#Uv#4zNI&$HI@bCYwE*)}H%>i|pYywh4#&VA~kkq70 zK)Mp=+-KzK$xU=!4%5KR0kpvzi^)9%W#U7s5iJ&|38Wc-HUlU5o30?p29t7{iJv)) zVv+)rAF4`{-N$_lUgunh{O82fQ!d@uz-ObOl#iW%B!*W14?G#6u;`+sxq?6>6RYx& z%>tR^Ba^|8HFFzLFQut*bG1}ggR3Mr(=HR8m~$aP&~X?!h-0ag>i6V;l5(p1==Mn9 zw9`lNb89tm&-j&Eby+Rl&R-4-Cd*^;M7(O^=sM&}ka-Wte@JX~%0{g<-zX?`$9Sdh zCPdYJ(X#Feg!ev>YB%GRnvDh0Wv)4p+;8M&Iu$)LbFZUd1LJTYW|`|z)xHfB97-F| zEI4_olACqzZ*udkRMln9Hx^7@`Jt4OYI|$h;M34$6O=bsee$A3(nU z7KlIG;!OQ;h2&Klm&xV|>GB_I_3pUyoU0-?<>|V3T#n3AMN&YQQrggE!JB2TTxv+i za$k}wC8=npdRk_^mOe_?ylc_ASF3|(_?g2grh+(?$22CsE>(2$u_$hNEM)$NVyh3I zI$AS6YAE$0uga>k;Z^>I+ymF>j&c3wJ5oO?XtB$NiSpScMAp8h;Nt#c3}FpOf~Hv@ z)$y*tMFC0oa}b*ea$LTq%Xg%As8O(^Ky)dnx}Pf^uYIShLiKHIan5pdVA}p;40^3$ zgD2P3@1#1|d*1U=XCe!)Q~t@^2sJ6fLq7J?_1Bpu@f5(PTS zY?rMra>_#nBLI>o&q+}!Qs%xRFGt$yXhYTrMq4>kKBd=ut}=*f*VqPZrlE}6(ZVZH?L8I6fuA9|=QcgLf>s{te#m4QL#^+Tn{A#P=ZSHhFlRwc zmO|3~S?1afWL!RDN+B&(BoI@<4m)O~xk_HSNk!t!&m>T7K!rJ`F32&tOm#l)Z)$T) z?n0_cQvH3$igRK5LT33G))xZATS=Y`ZHqF{h z8|6&QbVgu9U@I8L0?0u}dPl*k&YuONOBuP!jzx*ll@dyT8b&z@PHlFrh+F;KW=`%( z9oYd;t!fkJ9Mp_n|6NhL{o z9w{dGCF!Nv>$v9 zWd0?w%_nxW#@I)_NSHq_n4C<3PqAtXj2Z ztbnwmZ&JTvPUzGXPYWsK94U+&6M<*JIuba!zo`Ntuf>BbNo~@}wDSO{kzzIillzY9 znx(*`rVRa>aXP9t@F1<0ahJOX(N;j`ktf2Ra47t7#|*bQKtrX}zGUCB-ys~_5&5N; zBYODpv`X4JNm>NPAml(MO}bY3kg7GxY?E)PZmT?G(%r-A*IXg(Kqm=sjJa){(2nst z?ur%n-={BN7K|=c~AfpyRPGX|5js;Qqjkj;RYAAx^ab@-7QN{9cb?stL7k5?clFsFZXXLKKY4p#i| z(^!7T@)3bas;$7J+gV`Rqg^PGt}8fvIfWzW;U-?Ch}us+8=^21xwemsnWx>D_4&<& zQt#w7_|nxt`F$upe^$ILh*7xAoTQ^_!_z-hb*VL3)J%M)AL%hSfCV+f0jd1QmMQHR zx93UlJ3a;(E`hT|33<>!z#1EzXv64)4!yLRfp~V)tExFDCB_ET($|^$=q{>X!mUFPC z4F$dleAIR-Epsn~^nQ%amXBxcjFt`M6X(rEX~Q2-2p1u|^^%kiNoq+dsQ_t|BzKu@ zimLTVJjf>;|dr*=P2a5PlWKd2Eu1iUVSB2{Oykjjekk3 zB!C+Qv>|Myj4rdzVYB5xLFs~&o@4u-q?`n1ae51;pMDgI(@zBQTSHbBqkrMmSbX81 zbzPN5<~%AVzmv}22u$stn%Xy4LjsehguiX&w~JY)Kj>1+ zY$zW;?>1EW4u!Yy9N@{tPG8b)NmKr#E*)AqNjuu+k2e!(j}%CCyytsp+o}t>wpO(7 z@F_&m8mzecQdCN{tfLL1RwYk@)X;`;WBf`RR8mX@s7pOLoZO@rTRpVz)q`Aj8zvn6 zDMaNpc=oKz5UdV#GTx5NGr_b{MYdvc|1v8Yr{`!$S=7y2+-%>nxW~3A?0YW!*58P2 zK6zBrQ0m=aS3SQH-q52Ef4x$#x#1Cas&Ti8oFp$Js@gYo_YlCmPcrEsG73sSs^6Xx z<5^L*Qb+<#1vKimLU7#nQ&5~V8~?oj56MMv0ZGtt81oa`AtrSqUu;FxHU)mZQ*XVe z_c=CSk+oM+@}s#Sq5!_^LpZb=;b0%Cef`MwZa{S)NPtY4az{$Y_B9nW-S3==w!LQK zl?(r*{Y>&b?V7kN!A^ls9IV98<@rhl8g(0~+BcOJb^g)}I%t%;OoAR`z9|w{TlTg7 z+vyPPdmuk;3)k+uPNkHOU2r)nYfeLM?G2EBxieEG)gMBM@obI=y>?|Pl8c4Trdp{Z!I*E)p|I;N$an1y6nBI0c7pV#seAxr zdR%7eXZ@J^V(pgc<3q@3J!JSSWMu)O@&bru|G>~ot2CTs)=4>CCY_seWeuVZAK}_i zE2Ild?o0AcB;H*_V3NtEyd*c{JgLr8L@u?o6Y92Fw!Zr?_)|}Y*KwuT_EVp>)v^vs zy@7l1+`WjZlaO0@KE!kX98ttQd2Z))crS>YXhjPJ1C!@0FD){0VM7La=vBaU4h}LGEns8Ysc~%NY9k0d2 zYP3*4C(*fCwm|0B4s3LAL`pYCKo;LL0WCWm53lW1K(uMFl!f*RfZqwUOaTfLfn0YC zr2ZQsVDLF${lf-Y2Y?FLOa(On3rIx41IU#xN9T<7D6b#Hx;t0anRb_-sX%K4CIM-K z$?vCApYWGgfyfl$`#|OR$*HdZPo&aADJbPb z-^(NS(gg^I&P4v77a(|GLBli4StB0)(F6%=Xve$9y^ zv(0_TMhfW)WZLKKgu<4e1afcD{qpL%<-38FErH@>AlFp`k<4>c28NacgD(I>%j%U< zLu;Ay;eIak3}UNy3}JBb=ke?};$6Tf5E{;u6PVnLYd3tq1K2f4j5Q7AaWYeYTkMpGg3khVs!1wt_7E5|FbH{p_R21%d9Dq>`d5z!}b$ zbajz)m2@S^x!I`HY!goc_kqrxVi-LY&v+)LQ4e}R z&<6}G0ZL1OsASBy@gp^ZjZAr>jBa3+Dz|I_pmZzN{@>>lrQ8@WDIzE3B6H4DM?C0J ze*z`dUA`qx0X5@Wx&j`xo+rrV&~eH&5dIR#{1IY@&nzYH#)9(8Z$?!98~mZ)ApGU^ z&Sef%5=^?xSt(GN=43=4>yuOwck;XjImyIVG*Po{wkxdLhX*#wlv6I4-7m94E+<3W-&SWj_Md?%1Iry zU+DleGC@-6cpexrpykk2s4l!3vagczGaD(U2FBrEDliMiuWV$-hs#}R)ys&)dGeeG zHk4XYrAT|(MB8!ihv+&KUdujWyU#x2hH}CA7ooc0O!!ZH3E@*OBv9HF9Ialols19V zYPvAySaktqMcl61wo@4?J>>8s6Wj}yr4rl4h~OCY_y^~F#=W9v+{0?#O; za)lzGvNAT)mDNC$Ogu2x&+;LMGtbH6q^u5ACHDa6L)3o}%8%a;uNtS0vJ}%!u)Dxi z_i;bcR!&k&s>(D{%dAM8Qc77+YTwfANTI$Lci9^L-WMU){tdD1XU=j%`S|=75e<64 z{TD(kT@^2NFnLJcRj$)OCcx3l8ccvgYi_d2iM-*0*4b!ytehlI{}7~Prg<;qXo2*` z711;ATR`FMkWy&hv1Kbj`F zlydRaTcG#32-DDAHD$e3n*(F~k%swY-RyE!c^lK=o907*naRC+`H zBrTgIfK^VC%r#GvXQh9r+s8KB!zrZ7S$54k1YXZY06I~a0JKhzfuyZ(DrR!>%p{00>ewhvq`KBA*{*Y! zw5*mT&&dxZQ%sRKnQWCz=PMw+$gAs4*QVcsQq8$6yz>LVxI-{*iz#Bt$5*P$nD~@( z;n&YaY2{hSue%Z9AMZ$(Gc>AmQ@0QIGi{ZO!Hj)PXT;q=B`JAM%NVj$()J@MUBvT| zbh~9r7h3oHDn#M!KwhA22H>^D0gX~bZK_wMeMBC-)XZz_I1;StJLM>|j_2l`A77U; z;vWL_QCMdbonL<m1&>FP{zYMlB}0gaA2 zSH}Mlr2`cXVk$9in`4J6rp)mukB9sRh8BJhUSBBzvl;)=l_qM|wg;tY};P6-p_a0kYspv>tLXMBzQ!T(>DVM#O$( zSOx}PjDaLm>`Z(c6-!i+VjdG&X9YXM9j}x1Jh#bi3%MF{%_mTO_F?^Mq?p5jnH7zz z+$BM$6q71FJP_iMxT_|vj?G*)!74ym>%`Ul3d(#>EBtqT6*AwCEoROYlRn(1&9{8= zl6RrB`X=P$as)q}pP4YHs5@0kw3j+KmN}3gN&cm)>0&HYGAs3?{zwI+-_wSc{r?1s z@yJgAavin6Mwx9D+}NsE_p@EscKDVq^KAz+3HTY$Paj`_D1QUhh1Ww?Ws>%>10Mp7 zN8=l-mad-5q^!uAeC;I@sib={lF;2}*?Qu9gklPc6HXM{efqaCl#4F>6oxi@1I6kc z2yVS8*=w7WGU+a7%N=-&nk(vVWV&gIgEZ9}N__LYBt_lIRNKC!E4Xp_kKAl4D2oRi zj9kz6^dJaTGStzw@+GT4NmXU+Tw~(+HLlL2RL&$R8>NR*kEt9dZ}PB9l_uI3;q9nC zdk(N+AW=)MnsnO+lhm?NB+lF0617ypimB*~#DvEIPuzLLTiR&3M6wjuq=uAQ7LGj; zLGf_pyZ&43__@o4R4I|izkCj&>Q~@B^*MwKp0Di&#@67d$!U}x;*m8^m?vge)p8YZ zrY6qKxAG?&rGXL{9rbOV0%{c8@B}%jq&mL+ZC?b6ABLB&l@1k@s!CJsi{YTTRRm5} zZjqaKZgx}0oBB8fAq1bDY^TTdIawQA>RjOhVClyYEL)X=QmJKF$%@32h@F-> znB}?Ze!iYZfu_NQfQqtds}yDKYXb~wwQ?1qC!?s@#5RiDwF%$#O%OYO9ing^W}kDe z(90fzWmiGU_W?gT5s?T}iE-N6xY>mHaCPn^0$2WGgEUZ9Ub2x&lKIweu1T~jg(SbT zbE_0*W3q+NX*Q&GBu+BeBMbqxrN%@nGG;E%Y+YC-BHi=q>tQ5H$jLW1Cvh^^677Gh02CIAmlVu zuK##u@1zZ73`cE9RaU~B{7DLWY$(ZelR_$hbSlWI-nb&}W`i42)%HVf1;j2IO5J{D zqVB3nkgFAKMya%tag%B_S8xSW$~L0ottJhp|LOEw`+*h5z+d`80_AW)PcyzHPYsb; zYTz6>OLaf5hi9$hArtOO4N-$eU617lu117ckn1{J$VKOGhoJfZyx=)he*CpmX)&wA zoF-b>P&P`KH&el(NSxQWb7q~6f>Pa2s;2>>T^(|fUc#Wvw(UpK@xJe&c(7_%-d4As zDHBd<+OQP+lhi@(G{+85$kb*X&#OANY0eCW?7$~ENd;of5%6A&t2?BYHkd(R)?%AV z3W2F>-!wGKbOqTp@kS<`0-oj*>9Jp_OOj@cOKKUeGV845*z&&5Bg$<9FTbyl3(nsO z;n3so*Zm09U;nc4vWEtx#UxckjTos$jaYW>$zhSU3;8Nw+l)YajX9dP`h8!)hn6R zaA8+*xG$N4QfwQWX4W936_1(gM!}6McbPKhmf7E!aG04Tbt7J!wdpZ9-h3WX9qO4$b{QaCeK-os<3S4KE81XEwTH@y{8%#2N*&dg z0@GD?OqN)X>844(7L;-BGwnMzs)N(o9Xr@jP~uHnLF{uea-Ba@Q2rIszzzuS`wH;< z3Jqml(%g(%Nldb1EsiqnbpcS)(91^s8Koo;8zs!ix1E6wDn;3WP9 zh5*?cuXvYh5UltN3ajIJNLgxWcM|amkIRJf0R{>_7nD5M8Lke_JA+bC>QZAIJlP#X zdU*e|i4gmq4ZmYh$b}cJfb3rjdG{r#E?b|1Qsv_H#Wekq_Nqk%URD!^s_4}AL###K z%BQTIvo?;;)uu*%BLzUV>DK2lOC5%TQaxVqCD2(we$r(49Xr4)?hctdK<6%{q$P^! zhTghp+lI)FmMQVg+=G-!9%eyVtm3O7LN$iv5nyNmqM?@&uIkg*P3>dT2ueGVUTi6# z*x81GBdh{AsXm>PdztOU26D$44cOw`l@l8(34w*L4E5ZwmZ|9wOoUWO1_h#xDH_68IYZ`gTTzW zXy+OoYT4*`4If)vRx{70-VQacdpS`32Jp&lh^i8POADg5iIAcdQn$tD_1Mvo%J%3I?sh&&0j#5YknN~(K!rIlGq0BesDaR5@ z(cS{F|EZAO2Ph~*VD0Y_{ow})OYxLmUGLT%LGH$0donNOC}~bmy0xv=d9L%64k%O6 zw*@6d-}=)WhBb@@`rN!{p}dJ3d}S{;~;syvO9bvWf!njxbH5cOXGtXu@y)&_LE3-I>= zy!|1)sSuuOXHsBG2r&qOCm@0cAlLsI`F}2H2<4Usyd5nQt^nlA2>NbDR9TH+a5YNL zKZVkY{uGovxJgCetYe5nN%e2_kx{E0hs#xFHT)_C^;-*w=A8m`zeC6;=0}jL??m+v zHv(!X>L{R0=2m7br5#QwT~H=w-K2y#lwO;_mh(AZm{pRKA}2jH%n^zpmz}C5quP2ze!jUi>jyI}5V(FRj>HxZ~_09pDvqNi@uOK}yH z?X7uCm~$NR9j8NhYP|;qacdB)|29_M|4W1eK{6C8tK2x8`6gwxljI|XQZ0>umxJ8@ zc*t=_3;D#CBVg4nsQ&(^5K&kMCEr^yE6^D$rEC^TbzIB1BHE^OWA(Gk6DafBOhe&K zmjPn8IsmDZn5ZOEOs%5YV^OW=7oocJCbUo63bOkuK<*Jg#sVNanzl=cNu1;;Io8bi zddTYM5ib1=WZMpia^HcJ+s6PhAZ>-D$I{?NkONw@O4;_d zA3%8fK}I5m(x@XTq*6;|_0-R#qT2j2Kn41cs~iQ{w;1`Y4?>tX!BEc*P$=DrknuVG^KqT|-R3UYqwmWQ3;(YU%0^2gNGV^}JY`o4qB$Rd?Al+*MHj^to$4Pp--=HAzW)ZV{d~x% zBk>PirkR`QR3vVoD}yD79y&Y@WZ3FP*Ep9=s`fp(2fH zr!RdPQGXk%f4Ts{OPgnxP+^}FAd6oBWFax%cIqbuog)BJJD5^}T|L*&{SF0u241-r zY6;KAfawBKneM3V{TLcJzhRP`t6?(0)hMMh*<{uUVni<^dgzc5L7DVfzMfq|Qzs(W z>ulsY2i0oEzd{b~fZ$JGLAaUrQ~G-z4X^Dhh@!T*W=$y`J0(QPbaub3p7h*YXCLxi zD#$uEw4l00XUs8_>9%~p2-5U7lRQcCqb5IWFM-y_)p;ZM$t zx>J=LrI6gb+tnT#@ESY{Jo3Iel~j~&%Kenl^vMYKI1f41Px^%2&nG4Z*IUvWoONv%5GBc4*0gsFa?yIpbG;1gcU`$$wRz6Uwh)S8Nmqb-AHK^*l z`mZJdS4~i*8iCCHYQb8r(=1|h0GG;HvIv|9KXuigq3aMmaj6r^O}X(3$OtaS8k)wvr5H$1ng-t^+cc;-1J$hD7V zB5h?hwGvY254i(o!iE}0tsyl)>haW7K&bC(=z)s(gLoCCUyRqF^HO5UXUxb=rt*_X zGChJ=a~z@<7dGWja=%jrG_U6xonZP5gu7mXmYz=v`NFsM#L(bFkPm$crAIg4)r|g} zFCoJF;{-REQAh2YgGmv3Ivo_R32&KfCTLL8uJYd~6{Mi#vnkDM(&HLB_1XqL^>d&a zNL8|4Rd7`8)~KZ--B+V29QE#$xmK@F%Yw6x4HrQy`#9uEGunl%{dSpd1?8r)n$g>C zTa>rC2!6{PA)ooyPKbschg|U^ly2L6*M0jFx)8nTRz$&;Np*&o56QgJeW}N&`l1w0 z)mF9ue3dI_%W!$6M%~uAP4h*d(=y#8Ij_`ECFs?61))+;W5$(oDy38(BK0BA6FV}J zjuso6@>(@zx_yX*&VA{BA-nxqLeWTS1dD*Q^$v?*Y_*GS`YdPnl`MD8Z=BH$lmK zQK}ee0F_dz-$TJ}Ou4#G-BxBi0W|`0?SQA0a5!^a*TQC=BmV*ag^vRLYB+a2l$-j5 z3~}V=QN=dM7xoqM>8rPb7`Ow7rlJ4p&3l%RTHEc<`XEB@3?OK!@1bl|`&QPv4SEJT z%^1>VJzhm>-st$dW{~_xQ+m|xji#H3pw}M^f>W7n1wREoWWJ4w*P~>Ve`#i~Clwq! z0I~v}cn$vZXj%4NRC)(e9YCAYEFpQ!)rjOP$WJ&tp1M{Tyb3aU9|o^IQ7;qV+mUQ; zQ`fxqA_~+09aV8UqUywWEDLMyb=JPsSeFhUPdkgHCKS{_Wa&!XZIqaCRz{?mM5$Dh z33}9HfidISr!-1RV`DULEoRP<)lbPyd(E6z;YGiPSod{^wacBkNp8A%z1ue3w9{?Y zQ2tkY>RS1*n*i^}=$LR?JfCv$CFekfUqSVu&!PN}&3`_n>b#cIw?o+aQOMv>L}5Oa zRHsC``mWSTnQN_31_bJtr0+T!Hj1cbM5$F7DyX3-JXtzx;8d{b$4Qx$$u6sqX^Y)Gx<#=6qQd~SG{4rr01=GS3M6{_aMCfc%>t+;HaOosyKA4t24+okpI=5 zPwCIz27^<-2CsM?_P*lWILWc(iccXdeFNyd1En9ou_pNzCr&`6>r@2Mdk}@)ab&LG z%K^Ts_r*J=Yrj#OWTuj-RgA`|j1%TeJ^74uhIKneWCb|Gsbt;U^Ve{auRQcbl)}T& zGU30)n=iUNzI@ML{Vr5D+yqfwj=t}|@n)WT6DL4yc?BXdhb`)^CB~^Dqc4U5E){sw zZV_s#9XXYWbIGnGzW!fPG_2A2c9&(@-H8h0H>Ss{w@ z2(-(^Z@8J~(P8sZ4W^)V%M-;O=a`x2t8VMWx~Ct6sB~cH=Wo2-ArzD_P->+kbu&() z-hVNko}Emw(1~#qf~%yr*)k@H!V{lS`K;!-iGrGTI1RQ5fRZ$kQNv<4Fyr08xSe8k z9#{rEdlNA5ipg(UODQBmw1kJFwYubuwL3&-EBg2RDx}|!@!QQ6JAOXi9U?a2m*0b^ zv^&D5E<^b*Z>)WE!Y#(b-}3T!A4bYAnq;_ENd=WzshEm!c&9lZyJGxFZElTOPaw76 zt~CzV(opI(TBiV=Zvwiu2HLj*7F-3CR~diP07)N`_;(7Bs~m}r%95tH!_y1DG6oN% zd`C8bK%03p|3|&*NQUt1rM6~Bs?Lj=k$LEa_W%_&Hi%T5RzA{)Mg}MZMt4&Rx#|$2L zy>=Xn_B|Zswv*5~?Lx8Jxz>(j%dg)8{VSJ4uDJ_?xBn1$1MSUNnAC%4`nU9=G7XQ3 zRdiC^z(luIu%m)peZPU0%&>~QlQJe{(`h6nos8(G-Ps^8n~LE zYlt=U0Se_9%4Rlo(!;Da@x2+t)&i<~d;nqVA=qMvDPr6IPVddA|Lo_!{UT(^!{Bc( zMD)TNXBXRG!Z`RdF9p1LwFV2ST^j%?`ZjK)J}%jx+uWG|Lds~qry4V?@}r$D(s@z_ zFjr7jZY*>GQQ4>_UwkG5c%`GzIS`v~*R)>s>onSzk*~oSjY`r)3^L7p3%t?nVjE7K zgz7G5!E24g+{@~Bv5igmRTm)|Iuk>8e+lKs-#Ghy=O%VR%={`M?`mn3;z9IJdM#g^MFMM0gZu}d8gedoJIWbM^xZ~CO)+O|A$ zJAMJO@V>w0fh}8LVkm(+_1Tt_M$KwNP8Cu=MH10buHehHmbH5gUEn99cKI(RYoC8BT^)?M{c zgX@k%h zbb&zR5FC1q%KM;ui^Ii^^OIq)X(%81ULF%F7Xaazs4Tbu1AknQxp^qxjNUcQMZuf3 z;Zx?`-|CHJyF~CwzcjpG?<8S%w$(lq1JyN#nqU^=df;ty0V4lk7DbSp)hEF9BPP&E z66VazC%$6s6iF$P67aPkCHr->3X^}!t3%8k5OM{)!Ox+%=D`sGsZPQBC22Mg^;XvW z&)UQcu9E6_*PKavJ7t%zY0o#;d+C^+Yt?OU&s{OlbvAOvOW;Rmi#gY*cQ(1|%y$9g zi`Sk6Ie0aK(lglby^GU3km)v<+K9lc3BUS&$F33amL>6(Cq?B7nm{aMJgZW~lYaSJ z^sF5u)H$>E0jJl?O`M2mYcx(E?wnxX5kBdDnGNW-ap}cAwWc6Oi$|MZ_`FsRV{xj(s zqVAz&S6efnKWl%T;nXtOSH}RHjH5O{a&@!^_S1k>u9nS!DZ5&cd(#Ps{38*GE(kqV zx?L}PCErnl#e6|M@F(hv7mnEpbxM{S8f}&2KB|5V{aPk?q9l1@`a=lW8*k(!)qvE; zQ5g6R{BDrpz}zAfLbHGKj&`QF-|W^#5G#s1Pfk9q_0pH0xXHPmS5`gm$;J)sk=i zq>iWHN8RSzmhg>6?Qzu2fT@o0CUhX^-2aEYO8@{H#7RU!R1y%a@VZWc^xjpwFig4h zozbH}=?Vx{q^2*`|43WjQg;u#w2@K+>wZ}QsvA}0I0BJ>LiTt;xe~d-bAf0D#Lzm3 z^((ZiLd_KV_cmME@#PI!K&oT-fC2S09ZUD~A^WyUa^+0+z_I2}X8DpNdTIw-dmqMN z?qMjmo{ZKhSBg1b`!okq|9bWv`a}HUP2(WetwhlKDEfbSC4v?Gjkm{R!1B?7S&_K9 zUx8`wAfZ7tDycsR>A8C5`M3_0cR3wlVGnf9+QL@J zOeppBdg+?m5DguQ(mm&(^w8o=wM-z?COAq!Q|~B`#Fc0$;IcP>ifvi436#l`a4=o| zB`K)#C-oafP&<6gEHI;;zXVY@sTPs5NIDK^?m=PYnUEV&W~ONv^_7kUN>e_BFn1<| zTK8ZFHTpGQLCgA+;jLfcRL9|fbv?V4Ht3K{7HKQCoqm~qj>pW$Ht(RRX zqIj!32Bx*W38jhbz-Krx>3E9oxMJ$7vh&9f7CzxtN?qamEpp4xf~<4lyJ*(mh9UF?17gCm1-X`4_(hQ4RDK&LjO&wQBWMnzBEF{H1{CsrvvZMfRe5(DA~@>rT&0hgx+_;+$7& z5@1<}59K4(bGUEGcM!9aNUixQU;akyIZknA+Sib55$} zf-~IxDn#M{RU(M552;x63UYmCLN0wQxo&Fzo@T#PotnPFLJ`$1E`jh5HaWXmQ?ZnN zXc_zn3M-zdy^iq#H7MphTpj8DkpSsxOCu0#X`tADRIf!lKG-QBI!|Jj9b4S-h&#;X zQGLtVC|72pebUFpUYDfOK>TtxhVt1PyU;TDJD|KHN{?KQ{y#nL^etUg9`Yws+m|>K z>S;w)&m+H5ReS6-(Z+(Qd{5h)YbBXF4RXTA5&3Tg&<&`;{E^zZ;fL^F_#+~gux}Pf z`#23&=Tr>!d=%1q2PDRuMd1tK4c&2k@|ziHfy2;d6plkk7rvY6OihDd$$MrfatN%Izho|%2}DDQqED)~dvvF$Np&-u4Ex`e|*8H0J<0*J~C^#AT$lpcMluF9i!y(P6IQ_Z2{ zW}NEcJQ^n$#{x_`7q6Z3$egYQ0hXnl>bSaqDC1IcSUG%+t~^ii=nsuC)h-x0kgkA6 zJw8@Is&m=<%s_dYbKrHnB=);v*Wo_X%|ZFf58e%w zZ$Y^BuULD{cT-#CB}w(9b+(pJr)0Y;cS$8h{pK6xrM2Y!iv`P(k8AtFqRaFQif{jj* z1tZ^S$<@yazhH}+P@nDYO^K+)Zcq=tS@{9 zUh(J1Pdl}dFPU6|W-q5)di@c=&<_w*O4xAomr-8YmrfB;9X#)BfQpS{7Hz4wE9}f9g z09oHBS?jHIbmM3cIipIGwso>K+m|motgn6|m{@ZHJ#7Sw9C*K`Wxqd@fQr%9Z6GYq;+u)K9 z$>Gy)2vbH5bu%CJtYhpTh^rzgCs#%e9Ni|kZ3U%sQ({~lZ+DRMGGZ2x`gsrukh)7e zGCn6u_1Hir(Y7(|;gl&T?{F@>mH@3&b`Wo#-*n%=h@jN(%|CBA6e!<{V8cUL`@L@? zszlCZ6G`sU07nrz0Y}+s-IPI@>JfmcV5F{fp3Btg%PK!SaN$vMN-+(98eT_Y+y<0G z=SmYbiok6UIgGX%^7GJb8(QA&L(r-7@H`}?fhdY@2FUntOjm7qu#-gF3{+a?p!QWC zI_Q%as?I@S;?ZK>w`%#mkP`>wWP784Goe}$>G4HL^>}+YS+Ld z+bLy4KgS>PI5DrjIGhA#BS5*jlJA)ECr40bB>2?p@t}l$=6)xSs5yx0SYAp@pk;xN zx{pWL`tN2@x+}`2&Y!x9jcGr#fmA=MRuY|$w36i7k5s?Ujhx<93w7M!*}NmnaNJ)J;WzNRY@=RpktMXzOpnE=MXa~*3()&ya#LZi=Q{Kz1kKKEjfHeZew82b6NM%i4s&uO+S5U5=JgT<+#gV3kT3tALHX{iSdyD8K1{X6jA-0Rka~sGMINP2F0<+cl}VzyXw@@ zqP1~QzH;L<6vCSzqkYl;*mux-+x_+arL{Cyz0vU$ytpa25t#a~vVtEi(`sRviOlI| z+njUNq}%cK4z;dx+pKdqvq0rnx=}4WE7-9CB=G3GPBR_<(uoRkb)=w0f5)5lWOSP=XI4_3pyfG7u8ee>mMZXwJ7waTDW}pQM8ZSo zmLC**eXXe^c^0u74W$Ni#f_hZ2)~YS!-H6R(|1u`(O*lX^F?P?MBWHYtyI)y#9H3; z3mO=?FUh-$NHxi{j|5IqNIN+`k}6Kt)pq%swvRay7)c#@{xN>-T0f))h$*d7JN2a! z;{+%9kPQ{m@*k5xr@I3~yL=2~ITtPCKPUFR;?hycBYV==K)LXz1x%`52@#%x^2$G9 z)s@%QRzIq=keQ~zBXYf?h{Kfgbdd{8I{=EWcWln-HdjkhRZ1Vx&+5BNJ?R{Dk(vp1 z8odjys*Wq-CU7(;sURhOkGL{s!I)*PdCG?a$1e(DO236%PMT=ApHkm1enqXRMY%B@&^^DiL#^)5pxKt}>5RetQ0Q7i`L zyar0Hisb9ra3(1tQeJZ{vf#7NU=I2CB|pBsO-0~uWhH@+b? zRp{es^ss^4_8-YtclnqE8!4s@rg|Z26wXQ;@gRr;XWu4u zjopA)In@{aOz`uI+$gxodNZ;hB=86}{xg9__tnxnwN#G_NGkWmi+JM(T{^!yUct$M zOqMe=38YrtLIIVX55Z93y~wpMM%#pw#hzcQEf?98pwwV4`|;L5B4b^<@eETC#a*m>TxYP*^olt zru*XGF9wd^=TgS_<`^9=ayCHQS~ z#D15ltu4mvYfP1rek-}`#@P_ny8t-_efOM)fqR~Uh{9nN)9x&?!K4x<2UFeV4Z}${ zlKE|Hf0M&Wx07=iwIl`Q_w!3mpf>Y1kizj}T_AEmvs975wQJ&bFr&|909UtDi@%JE zKtS@2A70PaD-oH=R*y-~N3g?=7?|)CKrBbG>kzT;6^oj=3?n(_)qzsAxvkjxa3H!4 zVI_xwe_VyZKR!MxFx6j^0*xiw=`n(b%(?v>TMccWlfy~pBJen%bY)ZKeVEJ50i;98 zPjsmw!AW2yrAJFelio(7tQ5>>Rb+lB!Kd%1WeoZP#e?$6r)&nu>JGc1H10G=5unh0 zD)yatN3-o{uRE0bPyW;V9Cny>I7ImtMAcpl{{1ra|M|(3DNownk_O=zrvwrfwbOd? znqQcXwlz#FfZ_gT{2rvMJv>^k!IJhTU5aP}={m+%M;Dm<7#?jCJfw;o+$0ZaU?RVf zYS-#HJb`Yn>2{gx_-~KJiTWXV8ycDHaQ03Z9QSER*^Txo$D*(E4)M16Be5AxbNQ+$ zC4Y7K&l`>ghSYG(@fdvcQViU!hDF7}kDd(7(n7jX*uZ6WBu*vb)nn?I8(u@Hi`pZeJGV;ZolwRX{uCST{C$!x zvcYr(KwMFIbWW=2iqNS?Q$5!<>o%MOp$pDLwe6^Ugjd@Y%Y=?lVq@}@)`BiJS)i_|CSDOZq}0XJY)hNi@=k}*~&|jdd6q3S4r|g z=_%*I?>5w=bhQ8h>< z#t(Qe`m2W_-!X_>>p|FO!c(t?4{2Y%*91y>QThD;ZjF59c8G8`f^~mH?=OF(#|#os z_Vi!%L>m5|oP;IKX+3#X8ygR3)bnli)c3J;5`PVTrR+TBaInVen!dI?qUPsLMbhRu zq?9~(alsg$r@mb+72G6)0%}5}A+@7&lc&@P`0fq_Z$1J2g9jtuxd?v8kz<|qaeaH!G*AI8vqH)HULxQT<3>~xzXVr_D4s?Jmgp5Z)~KYb5fSXg&p_0X7+cN-Gb|hrye>FE-@fk4Q{FzUP17cb`30rNd@meBG2X z0aG<`boPD%a_Ead*okn(FVJ__uMw^tNFr_mgQD`<65iMp*G1^bpB1YlH|tsIsqW_y zb+U-f5!l#Mq(`EZ9Kb9H)%~uBoI^)y%PTUqce6h4s2(GqQr|XZ$CUrr*^cTi|As+% z4B+>nW!%N+oN&chG*^rS#@8Ln1kRVPITEOR7BZZNVEx}wUU)l(9$XSXZuyU~e`(g3 zv(!-n76nS?x#}C4bvlMXqKG{fkJ_MtEI{?Stfdemx#G4tCpByYBF{teWP0*kqi}X0 zL+Z#O?#IC0H$yI6ttW9%vYm2{Jo)Z|vypo0_m=ssDRnd-0#ez! zPtYjT(v=<}wc`;ssb-R=bOb^5=^ZPGG2n6-bybF<>s%h;goy}uI3DF-KgehmT4#KB zw2QpP3PgUMO$thVIbXW=Kt!caAgmk-L<0y{-i7LYccHwjFQuAfPPrPAdFPQjsb1or zvcU%&JUc?CtHjNHa$mAF)bQ^KH`Cl4^Jm(1Zl`%R5i|!pWu{sGBoAcNZ35q$*on$E zhoIbY2!d)m3T?NeW!x2FuWyWa8SL)$1Y4- z((fKj6pn(PM#@Rh@c@NafkO@R`@PuF-fCfu%bCyHpVCgnaNrE#pr-#QQ* zC}Yah?>!d-#S>7iOh&$Q9lVbBqfoeiq=N!Rk6QE3+$5o_ne+ec0s1dSG;|zf*bUi# zH>!`_fuZM?1A|pIP|Ns)td35QWvM6cldMzG3`j=c zB6H3oX#Kh2)f@x7hBuc7wx5l1>s|=j4?q+Z;pJ~fapDb_+xn~5qExsscy97gCaS46 z1(0hGgjfA4PXO~sza6nauto={Q56D2;xV$j<
    baW@l>85t&s}vSg8s80E3*OFs+V7sAHNm&=W+zAYqj)-a56v%PIVVgo;QMyexYXi zDP8YYs+z+9Bs0!IV5`lGmvJz z3$_w+6YetcwrM9Ad43WzrlK0ku?lK@PFlwClS19Bm9{(8vj3&6TXkS{-p zurj0}_Enc>80wvDQ3()L0(emb8Ab4_k%n1sW|a3JJP(oQ0fijALJrc)LFRmfYTty& zgI{bxwAD^P=WK-D)(FZyh$_Bbx+<^%604E#T!muSA0hlJ#qRT0Zj$u8O25><9F!>^ zbk+Aev3lJ+$kL9emc{{c8^GHYh-M(Hb^(E}cOvt=AwZTO!xFrxA5oxK&D zwFhC;0T~n^Lr)FNM5K6(;;u5GE~%P{E+Po80x#bWkyG1stOmTr5coU7-uof)C3yJ& tqA-Yjz8ACS4+t@WMvqO6q%r(`{vVi?5RF|3D1!h1002ovPDHLkV1kq!t-t^P literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/shape_micro_vip.xml b/app/src/main/res/drawable/shape_micro_vip.xml new file mode 100644 index 000000000..9fa967725 --- /dev/null +++ b/app/src/main/res/drawable/shape_micro_vip.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/values/base_styles.xml b/app/src/main/res/values/base_styles.xml index 5dfa42c2f..4c5176bb5 100644 --- a/app/src/main/res/values/base_styles.xml +++ b/app/src/main/res/values/base_styles.xml @@ -25,11 +25,11 @@ \ No newline at end of file diff --git a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java index a15f3fa27..a0015fd50 100644 --- a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java +++ b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java @@ -30,6 +30,7 @@ import com.yizhuan.erban.ui.webview.DialogWebViewActivity; import com.yizhuan.treasure_box.bean.PrizeInfo; import com.yizhuan.treasure_box.model.BoxModel; import com.yizhuan.treasure_box.model.IBoxModel; +import com.yizhuan.xchat_android_core.DemoCache; import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.RoomEvent; @@ -188,7 +189,7 @@ public class TreasureBoxActivity extends BaseBindingActivity { mBinding.ivOpen.setEnabled(true); @@ -325,7 +326,6 @@ public class TreasureBoxActivity extends BaseBindingActivity { mBinding.ivOpen.setEnabled(true); diff --git a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BoxMoreDialog.java b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BoxMoreDialog.java index 8f1e28c0e..4e699abc0 100644 --- a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BoxMoreDialog.java +++ b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BoxMoreDialog.java @@ -2,6 +2,7 @@ package com.yizhuan.erban.treasure_box.widget.dialog; import android.content.Context; import android.view.Gravity; +import android.view.View; import android.view.Window; import android.view.WindowManager; @@ -9,6 +10,7 @@ import com.yizhuan.erban.R; import com.yizhuan.erban.databinding.DialogBoxMoreBinding; import com.yizhuan.erban.ui.webview.CommonWebViewActivity; import com.yizhuan.erban.ui.webview.DialogWebViewActivity; +import com.yizhuan.xchat_android_core.DemoCache; import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_library.annatation.ActLayoutRes; @@ -36,16 +38,28 @@ public class BoxMoreDialog extends BaseBindingDialog { @Override protected void init() { binding.tvHistory.setOnClickListener(v -> { - DialogWebViewActivity.start(context, UriProvider.getBoxHistory(),false); + DialogWebViewActivity.start(context, UriProvider.getBoxHistory(), false); closeDialog(); }); binding.tvBoxRule.setOnClickListener(v -> { - DialogWebViewActivity.start(context, UriProvider.getBoxHelp(),false); + DialogWebViewActivity.start(context, UriProvider.getBoxHelp(), false); closeDialog(); }); binding.tvGetKey.setOnClickListener(v -> { - DialogWebViewActivity.start(context,UriProvider.getBoxKey()); + DialogWebViewActivity.start(context, UriProvider.getBoxKey()); closeDialog(); }); + + updateMsgSwitch(DemoCache.readBoolean(DemoCache.KEY_BOX_MESSAGE, true)); + binding.ivSwitch.setOnClickListener(v -> { + boolean sendMsg = !DemoCache.readBoolean(DemoCache.KEY_BOX_MESSAGE, true); + updateMsgSwitch(sendMsg); + DemoCache.saveBoolean(DemoCache.KEY_BOX_MESSAGE, sendMsg); + }); + } + + private void updateMsgSwitch(boolean sendMsg) { + binding.ivSwitch.setImageResource(sendMsg ? + R.drawable.icon_room_set_lock_true : R.drawable.icon_room_set_lock_false); } } diff --git a/app/src/module_treasure_box/res/layout/activity_treasure_box.xml b/app/src/module_treasure_box/res/layout/activity_treasure_box.xml index 0e71bb416..df6bed679 100644 --- a/app/src/module_treasure_box/res/layout/activity_treasure_box.xml +++ b/app/src/module_treasure_box/res/layout/activity_treasure_box.xml @@ -128,6 +128,7 @@ android:layout_gravity="center_horizontal" android:layout_marginTop="52dp" app:autoPlay="false" + app:fillMode="Clear" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/view_bg" diff --git a/app/src/module_treasure_box/res/layout/activity_treasure_box_honour.xml b/app/src/module_treasure_box/res/layout/activity_treasure_box_honour.xml index 68f1ffb5a..b57482521 100644 --- a/app/src/module_treasure_box/res/layout/activity_treasure_box_honour.xml +++ b/app/src/module_treasure_box/res/layout/activity_treasure_box_honour.xml @@ -225,6 +225,7 @@ android:layout_height="200dp" android:layout_marginTop="60dp" app:autoPlay="false" + app:fillMode="Clear" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="@id/view_bg" @@ -239,6 +240,7 @@ android:layout_marginStart="80dp" android:layout_marginTop="60dp" app:autoPlay="false" + app:fillMode="Clear" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@id/iv_box" diff --git a/app/src/module_treasure_box/res/layout/dialog_box_more.xml b/app/src/module_treasure_box/res/layout/dialog_box_more.xml index 406250b7d..c5701e467 100644 --- a/app/src/module_treasure_box/res/layout/dialog_box_more.xml +++ b/app/src/module_treasure_box/res/layout/dialog_box_more.xml @@ -57,6 +57,29 @@ android:textColor="#ff333333" android:textSize="14sp" /> + + + + + + + + + \ No newline at end of file diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java index 9efc96fac..295532a5b 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java @@ -1,8 +1,14 @@ package com.yizhuan.xchat_android_core.manager; import android.annotation.SuppressLint; +import android.graphics.BitmapFactory; +import android.graphics.Color; import android.os.Handler; +import android.text.SpannableStringBuilder; +import android.text.Spanned; import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.text.style.ImageSpan; import android.util.Log; import android.util.SparseArray; @@ -13,6 +19,7 @@ import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; +import com.hjq.toast.ToastUtils; import com.netease.nim.uikit.business.session.helper.MessageListPanelHelper; import com.netease.nim.uikit.common.antispam.AntiSpamEvent; import com.netease.nim.uikit.common.util.AntiSpamUtil; @@ -50,6 +57,7 @@ import com.netease.nimlib.sdk.util.api.RequestResult; import com.orhanobut.logger.Logger; import com.yizhuan.xchat_android_constants.XChatConstants; import com.yizhuan.xchat_android_core.Constants; +import com.yizhuan.xchat_android_core.R; import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.bean.RoomMicInfo; import com.yizhuan.xchat_android_core.bean.RoomQueueInfo; @@ -1488,11 +1496,28 @@ public final class IMNetEaseManager { msg.setRemoteExtension(remoteExtension); } } - //需要稍微延迟点,否则有冲突 - new Handler().postDelayed(() -> noticeMemBerInNotice(msg), 500); + if (!needToHideEnterMessage(msg)) { + addMessagesImmediately(msg); + //需要稍微延迟点,否则有冲突 + new Handler().postDelayed(() -> noticeMemBerInNotice(msg), 500); + } else { + if (Objects.equals(String.valueOf(AuthModel.get().getCurrentUid()), account)) { + //SingleToastUtil.showToast("您已隐身进入房间"); + SpannableStringBuilder builder = new SpannableStringBuilder(); + builder.append("-"); + builder.setSpan(new ImageSpan( + BitmapFactory.decodeResource( + BasicConfig.INSTANCE.getAppContext().getResources(), + R.drawable.ic_hide_enter_room)), + 0, 1, + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + builder.append(" "); + builder.append("您已隐身进入房间"); + ToastUtils.show(builder); + } + } AvRoomDataManager.get().mRoomAllMemberList.add(chatRoomMember); - addMessagesImmediately(!needToHideEnterMessage(msg) ? msg : null); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java b/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java index 209a752d4..e73385234 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/DemoCache.java @@ -59,6 +59,7 @@ public class DemoCache { private static final String KEY_RED_PACKAGE = "RedPackage"; public static final String KEY_VIP_RED_POINT = "key_vip_red_point"; private static final String KEY_AT_MSG_UUID = "AtMsgUuid"; + public static final String KEY_BOX_MESSAGE = "key_box_message"; /** * 保存网页域名 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/noble/NobleUtil.java b/core/src/main/java/com/yizhuan/xchat_android_core/noble/NobleUtil.java index b6a265d23..3228e7f64 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/noble/NobleUtil.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/noble/NobleUtil.java @@ -419,8 +419,6 @@ public class NobleUtil { } public static Object getResource(String type, MicMemberInfo chatRoomMember) { - // 判断是否有权限 - if (!hasRightToDo(type, chatRoomMember)) return ""; Object o; if (chatRoomMember == null || TextUtils.isEmpty(chatRoomMember.getAccount()) || chatRoomMember.getExtension() == null @@ -435,8 +433,6 @@ public class NobleUtil { } public static Object getResource(String type, ChatRoomMember chatRoomMember) { - // 判断是否有权限 - if (!hasRightToDo(type, chatRoomMember)) return ""; Object o; if (chatRoomMember == null || TextUtils.isEmpty(chatRoomMember.getAccount()) || chatRoomMember.getExtension() == null diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java index b67b83964..63ec32671 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java @@ -48,6 +48,7 @@ import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo; import com.yizhuan.xchat_android_core.user.UserModel; import com.yizhuan.xchat_android_core.user.bean.BaseInfo; import com.yizhuan.xchat_android_core.user.bean.UserInfo; +import com.yizhuan.xchat_android_core.utils.LogUtils; import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_core.vip.UserVipInfo; import com.yizhuan.xchat_android_core.vip.VipInfo; @@ -58,6 +59,7 @@ import com.yizhuan.xchat_android_library.utils.ListUtils; import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import io.reactivex.Observable; diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java index a09b31071..0c2645393 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java @@ -594,7 +594,7 @@ public class UserInfo implements Serializable { UserVipInfo userVipInfo = userInfo.getUserVipInfoVO(); if (userVipInfo != null && !TextUtils.isEmpty(userVipInfo.getVipIcon())) { map.put(VIP_ICON, userVipInfo.getVipIcon()); - map.put(NobleResourceType.KEY_ENTER_HIDE, userVipInfo.getEnterHide() ? 1 : 0); + map.put(NobleResourceType.KEY_ENTER_HIDE, userVipInfo.getEnterHide()); if (!TextUtils.isEmpty(userVipInfo.getEnterRoomEffects())) { map.put(ENTER_ROOM_EFFECTS, userVipInfo.getEnterRoomEffects()); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/vip/UserVipInfo.kt b/core/src/main/java/com/yizhuan/xchat_android_core/vip/UserVipInfo.kt index ae03bd80a..575ec82c5 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/vip/UserVipInfo.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/vip/UserVipInfo.kt @@ -7,6 +7,6 @@ data class UserVipInfo( val vipLevel: Int = 0, val friendNickColour: String = "", val preventKick: Boolean = false, - val enterHide: Boolean = false, + var enterHide: Boolean = false, val enterRoomEffects: String = "" ) : Serializable diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipModel.kt b/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipModel.kt index a2ae55851..59d827052 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipModel.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipModel.kt @@ -32,6 +32,11 @@ object VipModel : BaseModel() { api.sendVipBroadcast(content, AvRoomDataManager.get().roomUid) } + suspend fun changeInvisibleInRoom(open: Boolean): String? = + launchRequest { + api.changeInvisibleInRoom(open) + } + private interface Api { @@ -70,6 +75,14 @@ object VipModel : BaseModel() { @Query("content") content: String, @Query("roomUid") roomUid: Long ): ServiceResult + + /** + * 开关隐身进房状态 + * + * @return + */ + @GET("/vip/changeInvisibleInRoom") + suspend fun changeInvisibleInRoom(@Query("open") open: Boolean): ServiceResult } } \ No newline at end of file diff --git a/nim_uikit/res/drawable-xhdpi/ic_hide_enter_room.png b/nim_uikit/res/drawable-xhdpi/ic_hide_enter_room.png new file mode 100644 index 0000000000000000000000000000000000000000..da8ed3e8daeed2910aba97054cd139cd342cbf08 GIT binary patch literal 9653 zcmV;mB}&?fP)PyA07*naRCr$9eG8aX)p_>2_Bq20w;2W)5LA#T5dmwAtp+Uua=#4>Fh)y7^60O& zPis<>{7s%Tt*No8&CRAy|7w0yiPo6LR{v_e(8f4ugb1Qlz&Sw(7rDrt0p@SSb#>LHQmKEblzH2|vR^oi&gglM5SJ_dmnfOdeei9~KAQTI+EL~E&3I^NmYd910a zsrYfaWbtvB%<|>StBxN&ei219K8`V-fN=seh6uxnsCQyyko=$im;5Cy&t7t`spHlA zLWuSlv#rXgq3gOR!qPaVvjNl)s1E=k zji;lV{gf|Dqb5;~wO%DD2UPd@+TzK_ZgAGQNTLqo&B zJo4j96fY;jLVyOyi;uNInMDI5GlMJGvDTOG$O~~!aoJ*WgkqaMDx2gd)H#om!2bi{ z6>%JIeE#|84;#OJ7*6@n9I$B79}WXL>Jd`|5lseAsZl~lvNn*7d<#6Dp>1YZGz#HJ z8Q;3g4jVWiIfla;ItkPyfG47S^yJEwEBF47a6n^YWA9RlZU)h``!FhES zsMljPFP#-SuU3l)U+UAR&l^uY^^~j~XZ+s>;(*UKe0F?M#J38<(wL~$rMfAsA-wR6 zFow6))jGm+2!|k(HjMr7XlG|*wZpnzLskaMQjR_%fJb8F?{8}Q&y8o=1839$ciwqt zv|+@`9uwkO!5zfrV{4Et#x6r`jbiKyK!-r|{bJnp{g+;P>A;!rz!`Bs zV`JllxP-3?U{)Mcg{iJShFi=~tViR!vs2HQpXv+TAbLE*dkpRISx$iMKC{wcu8z^! z>DL0@^mPMx4uZb5YSpSW@7D?M*8yV5!X>j1;Ri&xfE(6h9QF;C0gSt+3#au^s`&Em zH)+argz_<1f9zNgYu=P?T~YRrcaUf^*B-B6O}luDh;aL=RjZzRKYhb#JD{<#F(+a% ztwi(y2k z#*GOhR|7naO7{)Gk(`LWGGy40ADwC@oT>xFwTrKvQHtqd0Ci3nbNTE#S;y2=v}pV{ z9k0U@4Ou{bT08@c;K#;iMr8O`8=c&|$Q*ywP zg`b^GQT)R+=DX&pT;!LB4DAUovV6?*Wlx3|4 zQ_c}Y*d-#m<>i-Oe)eSR!AU!yvGMu|R4P71M4Ihb-oYdTm6DE~q-#M|z2Hvcm~Zo{ z9H-a(-Z(db8b%)t^cZ+C?8mVnM+|s|x#Ru7vPKQpA$)CW3nDCAy?XUYQPh)iK+NKhn9bw|1CLA# z;q3a9qI`7I$uw*4=>RD&Y}&Bt?l{I50aQ3C!4;}hA@+(QuMb(& z@#G=MCc7KP$`GoMsIkg5T_#h?Wtn^3Ckf@4Sc>IYXrgWie0R;7HD8k~wkJ4xPX{bs zeC>@Ox(|dZm!?5#+F%d5S%)E-wi$>}a#@b%0E}2_Zy>o3aOSDf;9vuKL^^Btz#}=JV2E}ld4PR>fC%Hh$rCni-fC4Qtawgg znD5sdt9kg1A-@hUQ_X6nrBMpjctfdA;DRVa+fv8N9T@j@m%9Ia{rdHp>j`BY(Ady8 zfqL1cly!6u!4NL?xHMBX(ZZm7*=k2ln_3g) zqp54wtVu0zW;$TWqR;+m9G89&Mw&0Uh4QhDtzcQP=Zi`e+KfV6?wG8);ChO1KIOG3 zjWNz&fqv!JBAdG2@jBwgFfa>@a6_kuvje^HEa915&XZYNg;Bem?{ zR6{d08$tmVdkO8ZHdRD*wPELHZG^uiCDo~N{%_#X@ReX(BXPUv3q(Z@uX>-7lOCM| zxSeD&3fdIM@$~iU*L%Ay0tb*-vZ(QvIL7w?y?Y^}5po)ke=#g8wH(bZPUC-hB{ayC zP)G}EMiv}7`M_5_)x0vaDOcRm(O*t$vI3y3;>pZ1U`OxXum!qJK-{tR)wMt5NbEVF zp`l?=MEOSuG}EPbMuG8IfQ}?>1Y_qY(7qyV_kXbcqX?PNYeb$X<1CU%~&TA2eL`F2-)@=frfJ&`h_>#!cd_{iDE3dqgYzVdxw0L3T z=Lzw>esMDw;~>b`dCBw(@vGN%V(-CL<7BsB%^Lz8sblhnJ?0$ZV1{(@JSm zSxbw2LEXlahRHw%NoiBMG^^fDXRP7&tVz7=ll}1O<`b^V*F6rG$L*Sgy!Z%TSigS# z-&+UB{rSgQj=u=P?5uLr$i$xPI}av7ny=@`eZoJ3%qyTS9JGbP2Ay zWO!o4oqJmn!&UZ*(5Et=TyXEIJbG8=&?_G$%OujG>ZdJrD*Y%%u|zm}q67O5wPWk< zV|e53L)f_O2)c{f5rM?)_IPHo9W}lTgmEML>xm5(Eo{6Yrud%(&{q!5VZnC4tdPh_-`sEsCSH0@B6l0? z^9-C6VZA!0BU47cG`Kxp*a~kQBqLEev#|XL9(ryocI|Iv-DR+T>$sok6BFY|r{6s1 zJWTr3Ak_5DvjEUgBG1ci^f2>Mkf4Iad*23-)0O0PB*zQF%5{hFSO2mj$s)}IZ3ZXy zOha-j1pest*I$2F$a}H|3>bK~AbeSUp7VZJmdxPtr1JNh7W@t-T_(2!ndo+rt(>e3 zo&CO>sL-ER8RBQhiS{n6cxEep^~OH5cb41^1x_c8HYF4SoLyIiI~qr0?8yEaw@m|< z9$(Fkub0F~=Hms7I>r`D)6i)r%6YGR^)UYG;T^W38m+7cZAuRM?dk#5UlWaujRT8a zrH6LIPqUEO$K36{;Q!X2!3r`wiTqJR$>gdvA*<*O*87CysK4!gF@CjTvqF-XL?D5TKjZsaI^&Bu>fFvJrpMPfEA$;RscJ>TG z!5$+a#M7PKoy)|cMT7?DwMX!cN4Bepn71s0G8EbUl=TO|RtQWL3l=nv6)3$5qTULt zOgC%8UjYioF(NFRHxART7#Tnei>hQO*x+)M_mBRCfjJK&o}RoPWTOW9cW{c zIB@omD*WZLi!fq{y!l4scM7*1wkPo--`6$C{>_8O)B-k+nxBL$4rjnquN=Z%kL)l8 zV;Ye4hPS~>uf(;BNc^s7sBfG_C_ZcGC(i=)yRHdLxRS5`;heFU@tKjqWLSE$F4Zz1 zV_arfHER}~7Js?(9E=rqwBY|d@iw;Zmb@FN>6gdti$~)#V`~xV5L88#!JRk0agZC+ zurX^v3ok+a@amm=@5wcX@Xbee>a+V1?>cUiATE0%u)XZpKa6kGfLNI3YDvkd{%{&Gc2kDgQIwh51Q`pWUQKxs3!Y0Zy`vU(09ZO*_Muc^R zL)f&f1)rOJUO*e2fq4;j7_J~h!H$xtO<>p>#Iw?)rRrWXpRExdfB7K(=BMx2y`>hs zc|&G?XA*~q#0s&Xe$g+9;wjE+PFzZ+>Hen=QRM2n8DlVS;;3|U#b}&szFgX+n=uDl z^2&JhCZ8`eUedM3gnZ6UGF6W(w%e@pnNe6T3`m5IJJ!~X?jm7uwY=jh$RHv-zWN}( zB^_WJMovHj!O?j~PUZ!%VE)3_2)L9>u>2U_i1DrF*G~H+>L-1|rlDG-QSc(WMcGlx zPS`|Cl6;ym*#^yHJsNgcb{P0_pH)pF&omyrc6o(*rb4|0EVplG{Y3T%aBwV73ArZfVE8kN$Tum-B}8$I#l|7(76>?UjjBBwkC6 zsInqLWkn8Ey@dU|Dm8{_$U%eg19(su5+36>T_$im=A-8<<%SdOMI3MI#_oe1cx%TA zY}|eVn|7Q)YloW0sI#hY@2%%!=zv}x+$ne<{OrX8xaYB5CV^Z(z#pj)!jU@v7EwQM z;eLSXI15saVAVXep$S+rbu=2LB&~zOQ`XUzN--X9+KR_t_$}n`d^|anGcC=Q-<5SfBHg!~v=Z z^K9pi@P2m)(<$al2%@;o7(a}55001tWdXi!#)S$Jyr#$Tc=_IoukFF(P204p8C#GD zCue-$t0Ka+*NniTtIthTO`k~_`pBrNWoZF@Wsqo!_TEDsxaVKDCa~i*NEr(`XAS6u z8>XFwhARgrYZxYb)b-kMO$>hDGkfvFXZKo%YA>*W=D}@aP#$(b)X!Ux6k&_`dTd_N zz0>KaoqzQx{K3o%ZQ(WDBxflykEF)F=Rg}){(2|YZrYCnEgkOSIU~@Xm-CSI;m+mb zF=k}7f}TX_)Uqxs_>N7<8ERuq&(@R zl{T8}f^VF6QP9=8_FR6(H8v_bW#QX*s15s%w&U=zP8@IT!tplsUt4<#ZJkAQbQjUp zRl>PL`ryy59aDb%q=xaXI-?O}MS0zCj^eK$-i#CNCCDtRO8yhcdcpa_dt>~_zPRN4 zemHkY)d8D_ zZ=**Hz+Ja~#<2pv;>8zZbX>URCaWn+YxchL)YLh%aosd~&%jR5X~%I1FKsxSP|Sh- zDRayqbo9&*_-HGVK}l?58+7#Zp;##nIYChR-f<=Lkk{@Z>_Wx@+$?wkb= z0&yZmI9s#dwKN?Ts+Cxvt2VUY&+dO)g-61s4BN4os`F6&ZC1!M zvtJ?R&z=7zB78gK{UleRgC~;k6p|-uoHiPZr+h-|?`h^?_7VB5Ju@sbJeMeJ2b;W~ z7SAlR;axM+n$l{huOoSVgeNUzWhd*XS+gmvD%X;~_`q+m>dm7LJ*)#%##pPkqGK~f zMA4T;{haz)C5n^VD$7GqddHd^dPr>_d}-;W7&W}VV+p(~HbPdo)@sX@pE-th+WOH` zqzb}(9-L0hfFVii$Wcn=@z#-IQ5HoW@waTv640nB!5FsE_F znExoYU4PU5}g`0JO9gasRV>@sk(!*)HAoPXUq`qo){= zz}A>(s+c)*=D?iDKSaP>uMq2KSG?Xx2#!GWu2!;$`m0A_{#7Fq4sVO72Q@PI`3?lX zVeASYQh^sUm73-yWY0ZC1vx&=%G$MjqI+E=+xrM>p?m!~cD551QUM>Kd&8 zEkZcwe=~LVX++VoWLrv~-u>>TIR3KSt;8$2nogM=%Q_>B){)Og7<=9T+&K3_j2hNY z)4H&M(fr!%7xLiA=t$X=)M!D5ep=dSGt+(EH?*UVA-1b1Ke>HPr4r%i>ki?;=ibH6 z1D$q_JgaUdR%#!^&;>6tnqzX%c0AgpS~Wc z;=l%{fzau;Mt|Yj!qn*F* zKk-qS%8PtWL9s_fV%}SCy`{D$PM*BHs;Y9|ivWJlA`aI`Sm)<7BLhu3#q9Cs5|u&Z z23@%)v#OWeoSVbI>RuRBU5VQMy-?G)0t5P0pr&61237aMuz{7y{!%qd7qO~A;>A-z zW4Sfltimqmedt&x-rn7YExTK>`(P*DJ<^GTEnVp7lKVd8UQmMUY}I~HV>s6vc<5lJ zAiF=H0x& zgkSDx07C{;;ldI9F@97ve&-W47+76_>OMv;=%Fd&YXw@klPg{C9`3+PZyrX|hC|r8 zr#;c59BR6UG=-TTUaz$azsZByDl%0uq`yngE0_}vR@Z5^?+ zj^y@o!VCX>5D))i7v9<5k!&YV*5B-y&frcIQ!pJa#`wkz0y5R*>Mp>$N6cBrjW6V? z*^0vELi!dZdHD3{vnNHMVrGEnt0umoe6U!SjGjWZSt0hEB#$KigTa zow}zm5@GSx!|?}G&ra%w(T$EA@4}Cs-HE5xyqnxukurMfyo_S=d$<@R@_XEPLzQS; z=AJKhy@u^5=c)1aWtrnU^Qf4)p|BzQCcUXsrw+zPE{HPLPc77#+J z_Yr=5u<_QzbKf*wHrL__TXK=)Q|H&<^NUAep zx{w|Hy&aR)a%+5>no*{aTI z*1p*jQapIk&};Ac3bICFriL%mB!#eQv!G1?cf3_7l)q71o^IyMnZqcicK|gO|FluEv=Q5VhudG=H;?EHWSOJ`KsrKpsmZ?{_u;U|)>wY-91uo- z;-E}Hk{R7Wzg;@z{estk32YKVOmA*(?&(nl>N;jjoAIYa_<=ICI*Z5uy<(YW6^;ez zGz=)Hjp<;^OA26KCb5I;g(+z(UmDJh{+LV!G*OA4D?tc)Gpc#tT2;#v{8o~-_T`Pj&37;M#9HqWWcbvq@lJ<-NkcA ze+_++4z$Oc6!VuK<*UiQCLNso!5u<~BT{KD6bdK*z$Q7Md}LXBYsWnVx{ZjEFJkZ; zmq01aEY^O<>q87L?sjn281t4ab^#386`BgR&)%0W>0>`-kW-h2U~ z2*Q1R`}aNdN0ueEVDgOdB@sVEpmS}*7-FX(isuMRl>Nwc9jaCi_<3}3 z=CX+ueFJGDnQqoIqitdZ=d}wvJo8*}QN#PN!EXTKZR;XK=eu{5eZFqZ`lsF)Pk&HQp#g#eGmS>N0 zGXlWsS9lK{1UewZZG}SN^dDO($CnRoeeuO#$pxF_!L4pxlj|tHrsCqomlo{hvxR9- z7~>}L;DJjBuA$PgsA9!qIT^bVGJ?U&NDgbvu(nzl>Ke@5IEk+T$XzfH;=6@H;r&0j zRnBGh#MyP7xvn1(#q(XQ;?hKb^}Olwpd+A7cYSkvzP+9P0_qd(sY&AG~JLHM3)ie@MVN$RQ4 zlqpkY#3g!Ieszh7aF_jTbu8Fbr`~Z9!$0e`^D*XO3!kYd?2%wu2G7u@Z1>I@DvSH4 zpiL#3n8%I`bMhF`0TGEC3WdT4_XQ5}bn+`q4(>mAQz?%BRsgm9B6(_Cr|?FMGmexD z;l!~l_%QU(E4bEQmakYy$b=W~cmpLq4Yl>h3m7-PqoM4a5Jw>Jm5VRF_yhk6ljIU6 zPo7*QNGvOrO5Y?P`4XQHRupN-XvADYkyctgtTvIaD~@3?fr=UO{}A6Z3$Paytm#S> zR5u43073Q<(E$-ff6>v=@sM2OEmK0vzI;kGfRB=7!n+5j6{++95y=M!SxXtX;f%wF zsdPlS$a9p^Z3yGXYaW>OfV@y7wAzr-eR$#I84z^k2F|=i7k0c2EZQZa=;n(rzWBra z8Y|`qG3lyFvk3Hq7<56XCK~T%KGZaezL|R@%Y4sQ=7LFJbiacR92Y`X4;iY0M+?f9 zO7nVzEivNTH*enj(R`5`&xT1?PMS~>rLPiUmfx&-CQEDjmig!lE7N>=+3{Wmx3xaQ z_*n+GJxCVLXF!l_vLK#=z_(78YW4(6rwu{jpc5xftfQFjh-3PKfcv%$OX2u)Hw|yM z#&qINs;C>x4Ovbaix~uRktyP|8FPR> zS#;G^SKR=@T@=$Wxl_?JY^kQq6ZK4^Wo($;lqmz2V=ca99#UH_74UA}E~J-ps5)s8 zpuHr-*9(P${0_B`-`Cl4Z(n)kmE$QEw+hfwO1{upo6cr=T0%(eVhHFfe?N2Sv4^cC zy8TeIU=eTT<&<<^Vo=v4j)<5Zp`5tCCsp%gqCM-FGo1nU9G6{oS)aZW_H z1s>D{GPBA=E+tra>=d9TAbNrXJsIv^IFm;INF1O~DlWhL@_|G&K0>rSrnmuw8tw>F zXe|rj%Zz-Rp|Y~BE@^D{wuE@Pk}ySRBV^%V+S(Z|)$XWL{<`q}n&6aYU_61wfiQ-Mh7%~cd(*9W z`FlvytVWMChh3EBgQf&guzSZs_%ys@pVt@(7cn=|dCkA(yHMag^CIy*b7J32b# z&BuL(5F_F^mXI|rrg&tseO?IpT;iITs5;3MA&!C2LWqxp=qQocA%xh32pdbK(#|-J rTcapCURPIltf{F