From cc910143e1d6d50aa36c5950c7d68e49261b5c6f Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Wed, 22 Apr 2015 12:41:33 +0200 Subject: [PATCH] Fixed the check drawable getting black when on white background. Replaced the check drawable with lower dp. Moved two files to another package. --- .../ui/activities/base/AbsFabActivity.java | 2 +- .../gramophone/views/CircleView.java | 48 ++++++++++-------- .../widget => views}/PlayPauseDrawable.java | 2 +- .../{ui/widget => views}/SquareImageView.java | 2 +- app/src/main/res/drawable-hdpi/ic_check.png | Bin 1085 -> 0 bytes .../res/drawable-hdpi/ic_check_white_24dp.png | Bin 0 -> 248 bytes app/src/main/res/drawable-mdpi/ic_check.png | Bin 613 -> 0 bytes .../res/drawable-mdpi/ic_check_white_24dp.png | Bin 0 -> 180 bytes app/src/main/res/drawable-xhdpi/ic_check.png | Bin 1324 -> 0 bytes .../drawable-xhdpi/ic_check_white_24dp.png | Bin 0 -> 297 bytes app/src/main/res/drawable-xxhdpi/ic_check.png | Bin 2219 -> 0 bytes .../drawable-xxhdpi/ic_check_white_24dp.png | Bin 0 -> 407 bytes .../drawable-xxxhdpi/ic_check_white_24dp.png | Bin 0 -> 516 bytes .../res/layout/activity_album_tag_editor.xml | 2 +- .../res/layout/activity_song_tag_editor.xml | 2 +- app/src/main/res/layout/item_grid_album.xml | 2 +- .../main/res/layout/item_list_artist_song.xml | 2 +- app/src/main/res/layout/item_list_search.xml | 2 +- app/src/main/res/layout/item_list_song.xml | 2 +- 19 files changed, 36 insertions(+), 30 deletions(-) rename app/src/main/java/com/kabouzeid/gramophone/{ui/widget => views}/PlayPauseDrawable.java (99%) rename app/src/main/java/com/kabouzeid/gramophone/{ui/widget => views}/SquareImageView.java (94%) delete mode 100755 app/src/main/res/drawable-hdpi/ic_check.png create mode 100644 app/src/main/res/drawable-hdpi/ic_check_white_24dp.png delete mode 100755 app/src/main/res/drawable-mdpi/ic_check.png create mode 100644 app/src/main/res/drawable-mdpi/ic_check_white_24dp.png delete mode 100755 app/src/main/res/drawable-xhdpi/ic_check.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png delete mode 100755 app/src/main/res/drawable-xxhdpi/ic_check.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_check_white_24dp.png diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java index 1c4cfa41..5a67824a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java @@ -17,8 +17,8 @@ import com.kabouzeid.gramophone.dialogs.ColorChooserDialog; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.misc.SmallOnGestureListener; import com.kabouzeid.gramophone.model.MusicRemoteEvent; -import com.kabouzeid.gramophone.ui.widget.PlayPauseDrawable; import com.kabouzeid.gramophone.util.NavigationUtil; +import com.kabouzeid.gramophone.views.PlayPauseDrawable; import com.melnykov.fab.FloatingActionButton; import com.squareup.otto.Subscribe; diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/CircleView.java b/app/src/main/java/com/kabouzeid/gramophone/views/CircleView.java index 4b800038..cb57978d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/views/CircleView.java +++ b/app/src/main/java/com/kabouzeid/gramophone/views/CircleView.java @@ -15,38 +15,38 @@ import android.widget.FrameLayout; import com.kabouzeid.gramophone.R; public class CircleView extends FrameLayout { - + private final Bitmap mCheck; private final Paint paint; private final Paint paintBorder; private Paint paintCheck; private final int borderWidth; - + public CircleView(Context context) { this(context, null, 0); } - + public CircleView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - + public CircleView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); final int checkSize = (int) context.getResources().getDimension(R.dimen.circle_view_check); mCheck = getResizedBitmap(BitmapFactory.decodeResource(context.getResources(), - R.drawable.ic_check), checkSize, checkSize); + R.drawable.ic_check_white_24dp), checkSize, checkSize); borderWidth = (int) getResources().getDimension(R.dimen.circle_view_border); - + paint = new Paint(); paint.setAntiAlias(true); - + paintBorder = new Paint(); paintBorder.setAntiAlias(true); paintBorder.setColor(Color.BLACK); - + setWillNotDraw(false); } - + private static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { int width = bm.getWidth(); int height = bm.getHeight(); @@ -55,29 +55,32 @@ public class CircleView extends FrameLayout { Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); - bm.recycle(); + if (bm != resizedBitmap) { + bm.recycle(); + } return resizedBitmap; } - + @Override public void setBackgroundColor(int color) { paint.setColor(color); requestLayout(); invalidate(); } - + public void setBorderColor(int color) { paintBorder.setColor(color); requestLayout(); invalidate(); } - + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); if (widthMode == MeasureSpec.EXACTLY && heightMode != MeasureSpec.EXACTLY) { int width = MeasureSpec.getSize(widthMeasureSpec); + //noinspection SuspiciousNameCombination int height = width; if (heightMode == MeasureSpec.AT_MOST) { height = Math.min(height, MeasureSpec.getSize(heightMeasureSpec)); @@ -87,25 +90,28 @@ public class CircleView extends FrameLayout { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } - + + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - + int canvasSize = canvas.getWidth(); if (canvas.getHeight() < canvasSize) canvasSize = canvas.getHeight(); - + int circleCenter = (canvasSize - (borderWidth * 2)) / 2; canvas.drawCircle(circleCenter + borderWidth, circleCenter + borderWidth, ((canvasSize - (borderWidth * 2)) / 2) + borderWidth - 4.0f, paintBorder); canvas.drawCircle(circleCenter + borderWidth, circleCenter + borderWidth, ((canvasSize - (borderWidth * 2)) / 2) - 4.0f, paint); - + if (isActivated()) { final int offset = (canvasSize / 2) - (mCheck.getWidth() / 2); - if (paint.getColor() == Color.WHITE && paintCheck == null) { - paintCheck = new Paint(); - paintCheck.setAntiAlias(true); - paintCheck.setColorFilter(new PorterDuffColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN)); + if (paint.getColor() == Color.WHITE) { + if (paintCheck == null) { + paintCheck = new Paint(); + paintCheck.setAntiAlias(true); + paintCheck.setColorFilter(new PorterDuffColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN)); + } } else { paintCheck = null; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java b/app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java similarity index 99% rename from app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java rename to app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java index 4c305b1b..ca507e4c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java +++ b/app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java @@ -1,4 +1,4 @@ -package com.kabouzeid.gramophone.ui.widget; +package com.kabouzeid.gramophone.views; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/widget/SquareImageView.java b/app/src/main/java/com/kabouzeid/gramophone/views/SquareImageView.java similarity index 94% rename from app/src/main/java/com/kabouzeid/gramophone/ui/widget/SquareImageView.java rename to app/src/main/java/com/kabouzeid/gramophone/views/SquareImageView.java index 88f2b896..816cb3ef 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/widget/SquareImageView.java +++ b/app/src/main/java/com/kabouzeid/gramophone/views/SquareImageView.java @@ -1,4 +1,4 @@ -package com.kabouzeid.gramophone.ui.widget; +package com.kabouzeid.gramophone.views; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/res/drawable-hdpi/ic_check.png b/app/src/main/res/drawable-hdpi/ic_check.png deleted file mode 100755 index e8ff6cbcc0022d69cdd348f40ca30a06348c266e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1085 zcmeAS@N?(olHy`uVBq!ia0y~yVDJNB4mJh`hQ3t_vJ4C?ES@foAr*0NXIr1X;vmvi z9=Jy#D={}w->mFgQ*RR&msW>H($WXA2kRfO>aXZ%QqsC{BO>Fm{Dw>OAMguU>$kqH zPEq=tsy?&WPi?yAIrhWbchB@xJHIdg-egYe`8Vfx9f&bK#delwP7n**xdWP<8tpS5 z@ywajP&7jm2iNO?Socx4nlA!xFW1=Z4?cSJKxGO;F7rJ*x7+RCq~9_zhVK$z0?EMQEllD9FE-lJTW+GW?(?&WOnw9)sC+!S+_7f(%-Y=#qF|759ZkB zGn_JX+cD`=AJe_+SJsgQOBE6dX4kqbf6VZ`cGCl`rUiWWqH}Db9cHWS@DONuAh_jn z!?(-#Ei_k~ZGEnCQ1i`C#sz*qzs-@^F~v*!LGQg)>-=^f*Rky2UizF<<85?oRF725 zDg_Qk8QmRbZ!CXh&r#x-_G(LntBuuB%{QLcw;XJ7*DjlE*tGt!j7gQ-hUuIO0tI>wt*X^t+c0BlC}S?Knje2Rzv0wn>nlXeYWOGmU*)al5jwqU#v84YJ)LEn(%S7e zyp5UtAx2=&kwTTysFJ5)%$?ltq^#mxyII+9ezSS7*TZyXlKr`P+ds~mJ@4e}EjKK6 z4<1~yJ^6z4mbDuX=CT|UXl__)@v7zI`y=*2LgI0g4oGAPY&d9HA@npbAtrOuwk`z@ zyTtSzDxTACy_WDx6Yu-PmCOA&L4MXBw^_lV6 z+S@02Uiq5Ka*nla$+^d8ss&1;au)R-tjs(eE3smB@Fn+(jg#{?*>YO2`)@K3nDsfK zS;5mX=({fGdxJl*U#kwU3yd>5D#{+t;%4?OC+7IkeTt5Ar@IPl$qP-KJALV;u413O zt3rELwKg8So@p4qmFt{#=%3ccH%$wISF`1Kb2HDs`0sy-;kUJXmDR7iK3^(hkE>t% zEBDF-#jneD+*wfY?Dot@7L!k|>~9RNi^i4xrabt^6c@HK?z)qH5(5JRgQu&X%Q~lo FCID3x^}_%F diff --git a/app/src/main/res/drawable-hdpi/ic_check_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_check_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c26640d363a42d96247a59c0ded4617f2bfe2070 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4mJh`hKCF@W-u@??DuqW45_&F_PQZoi-G`a zz^<*Iy<{Bn9|Y=HTrAsFt(~ns=j=PRG$(6N*mFTP((+ zww=Flip8=ehE^)ewgg*?JUeqa@$2=43apwQ8q#)A9fc=&zMNrTU|{fc^>bP0l+XkK D@0nq3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_check.png b/app/src/main/res/drawable-mdpi/ic_check.png deleted file mode 100755 index b609b9c709d026e01539d5c32244ff7e4b6ee8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmeAS@N?(olHy`uVBq!ia0y~yU@!q;4mJh`hNBhIuNfGabUa-gLo%G-&e-e4VkmGt z-<5l9&Kgnfi_<@_vK(~M$#uCPe!)p#kK2|F!ma|@wT$wIjyY}Ej~^74&$PrmPyX0-cg!l}NbQx$BI8ecn}aXjT<{pJu?)F`{oBz)RauRxK- z%bfI;S!U!m+;P-nI9hky{e6SQ8Df~&$EcxPy7nXb6UpqZexB7RPeQjq*! z2BtH1YBkI=Cx>*($5^wSF_!k0JHe(_sSrJ5Nn^!1o4{$2pHgoJFl1Ry{&VaWo7zs* z>tbq}3i1Xg8Gbf-GI1DK@41+=H}dlZF^0~%JH1m6-$_pTJn7^{xwji$F{DiP=jvbx ze!XZi+bb@&na&0~dJaaPuyp$8_La|-|GZtpJ=2tH?&l=T!@gy4FBLyw^+bBpbM95y zGdejAKG1596h5)np|xQp{R%oXCKeS=*m_fED;7MylpTy7snVCh-E-n4XwBOWK;_}5gI&0KQU zb_qu(zsnZC5C3}-j{IKcx#8uvCiWHDzU~L#xHT$@vd#?Wu@vP!Ch0LbI507a(R0C~ z!&}&d7PMK^Z~wc%(X%L8_O(`ew!)S=Hm{&Q}(>^?2L2e~fGPO1ONB T{&}1|M>sko>|xM z@Cw$$=a^!nq6B!4)Hm#C6canZ^WUGFyFkj1m-~a1-%3^%-sMM_7V#WUW8@alXMI$V zCDC`bDPV=$1V+IrQhnMTQWJDKmmDdmDQw8`6xrD(+?A5zeZpwYj1ZR1EjougeV6e* hk+O@D?-Af;uxNgsb(^Vr8v_FagQu&X%Q~loCIEouJTU+O literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_check.png b/app/src/main/res/drawable-xhdpi/ic_check.png deleted file mode 100755 index bd66325cad3483f33b6af344e08c0b078948a4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 zcmeAS@N?(olHy`uVBq!ia0y~yV8{Sr4mJh`23eV{3mF(#K6|=2hE&A8onzfC;waKu z-s2)H=qN0#?C8Uy94K7hIFU_HN@s=+SCX2W(xT3pT}=xfF`Eb+x#97@t8t;!u6dW_ zR=j=dez)q*zRRUzU2{`c<%Q1A_xrxq`tI(C$NibCV#~shA6+Xr;UhmIqu_)>)*k(S zJ|%_6ToUnevMvtCL=E=YSame?XeZQEmIyFPh9CIx>4gH5(Yl6@PcJ&Mq{J{jKE1ek z3S(|=?%ZQj*u}e#{+_UsQ^RGcPpy=Nzd)Y-EnkN!OR-rE$3#wjv3nrnyuv?&eb$8i zAAVaY?3JC>)L_IY!NqK${_&sj7Ui{de3uqX=2&5{;F#rl>jygNawS5HqAVs4=6qYT z*H3AIQv=hS%dDBlO*0aK8>fN809{Bl;UrC{}g}HXG?~8{W6Zray&rSap!PFJ7*>*`waYff@hGVT7 zPi2@+F|1fp%%LF|kojC7fN4SBq2(%3>D#V}H+VL=-1>ig&b~wG9!u`!^fov>k$yQj zQMhW~-t&^tVzMU70zTI*Dy~yFvn*bbW6rdxEdmRTEYhQYs-^g;aW-oCK9ynOVlY`+ z%#mTESWtdHMYo2nMy;$Qangl_v#zO`ut+d&4Y{Oozop@!=D8ik94A1Sx#jY$$Ui?h zbYD-;ofItTZEMTLaE^1&SHax)mIaFrrMvvurOnw;%(cjN>x((B{0n=F<6I9Fmf!E- zo?jBMfT{Cbr(O-4UVilUSKk~Z=LpCCP+1_z8g|n1YHV}ZS<8zJ1q;LtZoHMwd%(To zzTvj3a?Pgm56?NjcG)H8s*ZJz78krZzA@zL&szOuS9`yYbJl|$zAqMb@VEVtYwECM zYiD83n)7)><7S>;Z2EVUh1C?-ZYp+JZXxp`m1oEGrp-NxmpoU$o0H&RaY6e@Lu0qo_e`YO-zx01JzwRM&=Xh~ zw5T|Qd%mF+-@9fhkF>c{4qC2iJ^!X5#$mPJtlh)Yg zX6e@Wv1u%yEbv-m)=z7@K+VJAB8QoCM2cms{{<)d z2y`cJveH;QStaW1CCi(ec1%2?m^xpCDRbL7O}-VDcbAGqv@3|#S7<#E4%+2EF?i1Y z3>ChWtk?8-)24dyJL>VBC=T*!ylUU3HD_^ASGJ|*S2=d^byCk)FrS*x6#jIMCqw0g zCGnvl&*z+EaJ5+J_1uTc+#9|tk*qR5WaFfC;Qq-3AeIU6>^WZeiob%VDR=G%aXM_3hbDK zxR%|W+ptAc{G7Xk)4?sfg(qx#bm%9ChsKPua;8gRF&6TSoUE7M`8nL`;(o5IurT4) iT~3ea!iP2WjQ@;`+IReFX=7kuVDNPHb6Mw<&;$TuTt)%_ diff --git a/app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_check_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4846cbea8e43242ff2a943aae5135e93e2d8d0 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F~)z2VJwNI|4E zF^w;_?|iT2?%PG|dhWMb6`hdkQ^nft;D+WW*0sG9F%cL=nR3Xth%S#e}BL)J%*hW`0m z9z`=>d7R8xZC-BPe(zB-gWbQ6wKt4~19j`TH$)%#e@$C3(A4f3ug8Oj8#{{M{D{sG$deqW&-je;F;;iG(c@qEt literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_check.png b/app/src/main/res/drawable-xxhdpi/ic_check.png deleted file mode 100755 index b40210f13549ba5daee8c4e36da7b19224ecf23a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2219 zcmeAS@N?(olHy`uVBq!ia0y~yV3-5K9Bd2>3|%`8`7$tY6nVNhhE&A8oom~XYASNP zoHg1pLVE2Lw~c~<8w9p&ir}7j)NMmxqV&hz!bjY6VnoHc?F)26HUx^eR6AOCzg@Ft zOW+0}ZpUN7-|cpOp7VRsoF{W;Kl#U|XME=L$(=v%%l}lj{QPXL-BEEa3$21%hTy4lRa) zbw!hT9wZzHWo#&(Iy;4dop~J>!<^N3RG2L!3PKqk#5`4#JaDjq7$e{9n=C6UJ9pap z#ghUVVmhm&yF_o~O?|je`}%RFyVbWAGS3Oy$$OMD$NW?Qb4vN?ue)Q;bCt}`R$;K{ z&64h#nYOK4IA`}n_7`y%&y+B1SF9*%w>tQ3;gP##PH*Br?RIC~wZ8Zl>kgT%W>?D2 zyG?idH+#b0h?eaWErRWoNv>=8HqvnBq^ZfGCKWmz&MQSDa7 z#Jx;0rzYQUnC&ASdRzNIF2k}L0<7DNFFjk`dN)I-=Kt3X6C<{SH=LeYyy4sA-na>g zcjF5)x_5^+tX@%+A1k`?} zzGp0E2>)~>yyxvzH^w~Ij4dmBb3;NquJ^Q>&T%t+F2OFXyG~(=7gNDXueDds-EiyX z`Y7ee;J0{Iu+Qt(ie4Uu<$-4vm$f_Xabs(^ydq8J@rJb3K~Vd7lB=|iWT$`GERBT{iQruJVmpn*!4; zm>Y_AnQRN(?o@MbMtSbchbF5;k67GT5v>@f%zPj-B>0%b?TpFU+iF)b_;LE@%{WlD z_ecxB)8-q!V*8ct%583aV^|)lr<}LxqPgmmc|9AhEDOCSIDgifEwTruYDsjKM{Hgj z)^Xi~y+G=!P_mlz-vb$GuaCL;_PM&;kzVpRK|21_f8O6JA7}F1KJ(+n;+8PH3WS?62DfZ^S+3S_hm)yvZ%F%k@awl8m1NY8%UjD^eH(noRy1QM{FxJF$+r?$v zA7`;oF+J>?y)9hzqH|Y@y?^$u#Ip5#X17Wd;|@CPTI#o9ud?U6%PO;y+9EGY-p&wj zt>9(%G`^Fv_~9I1O0VmmvT%r{?TU-~!nSIBXt-CM)CKBlrP zVfemhNySc`vz-_3-dufn*4ouhd)hih9-Q+ye$Y?;f=b7clH~Owk6zpS)hJNx?Wo;a z!@c|R=h91Zub2MpYWaB4eS2#KFSq9b-wUzY_YcQ6&$+D9b;Kll{f&&f%jfdk;n^kL zo3`s2*S}-#@^{4_nQEjlns2_|-*c_x>@#YFCps~MjstWOi=?hI$7qLsZ26&*PKc%IJQ3wRC}B_O4{s`kavN z*4R1P1$^#m|3&}w=1y_iGs(03fy^7z5EZ>sUpr#L=6`Tf+^7CP=1r)kyGf5zO~|6d zykRpRmTfn=8n^b}ymbMy{4!CuH)d9;J*(>dK|5*3Ww05my^q0+61+q7^ z&7vmmQEMo^u{TTgu-n#Cx<^cz@372$YW=5p>0*KTt0SC#FKfs?5x4OoONEK=Eap76 zxuFN`mkGE2nBl~_-kkH!nYguF|GXz9E@m}Y+G56ihs#~V)+-GW1kMZbs(UHeM7m>Pc#6%G)-v!mI9|kDb!zO%wA< zR)-{5JeXo7@N5ag0ZUHbS=w9-GAh)qa53ue#(IVt)u>aSi{6wmFfcH9y85}Sb4q9e E0N_sem;e9( diff --git a/app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a263412aa4d819399491d6f851373916274a8e82 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84mJh`hS0a0-5D4d<2+p)Ln>~)y>;97h=D-s zL)}KEhzE^q+nZnZIPLHf5fbX0T5-Tj=6pr1+Ww`V^J;@~&IkHkHks>TsldP@;K0BL zA_N;4m^c&~7??cF${D79HhG@i#~5;Krylc)p5WdRmpNKX7C(}aI>D>1JVD#fY=L|J z93KbnbIZ;B#1g!dj|MWo>RZgRR{y z_!dSr%zM7)%+B*Yo5eE@{``0MLAJmp0gLK}e~)||Jq|y(!t}SjI5ywU!};MArr0pE zdtF})q|VLrKhrd!?a0k)k9fIx2BQl!FfbY~o`2}==`vB-?9a@V7#J9s85r0Y z7MBp4VBz=j`SU}#{3NI0yxo3oq!fd0R1>-{VY`+xW{H?Bzj*e=LnEmzOcxWnqB zzMH~^xEhAAZvKYi8iqNKnLpIJpZ>vMah&~tr5(e$kBkL<@v;YO>rxv8KCWhJ>5Lat z2>Fx6@bFPM6Nlt}E{7XGL>a#Q&<}i^&dwokZ+t-L<7Oru;dto>dABofi++5|`0Yo& zeEzG0oQXSsL@~raHdk*^eVonkN94X#;>{n68TKFD?i6A5kK@2w`$zTr - - - - - -