From 8ce1102e261ba04da834fd9e0eb4360d73787310 Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Mon, 18 Dec 2023 12:25:43 +0100 Subject: [PATCH 1/8] ANDROID-14098 add TYPE_IMAGE_ROUNDED and configureAsset(dimensions) for traditional views --- .../components/ListsCatalogFragment.kt | 17 ++++++++++++++- .../telefonica/mistica/list/ListRowView.kt | 21 +++++++++++++------ .../mistica/list/model/ImageDimensions.kt | 6 ++++++ 3 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt index 884360956..d766076d7 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt @@ -17,9 +17,11 @@ import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_16_9 import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_1_1 import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_7_10 +import com.telefonica.mistica.list.ListRowView.Companion.TYPE_IMAGE_ROUNDED import com.telefonica.mistica.list.ListRowView.Companion.TYPE_LARGE_ICON import com.telefonica.mistica.list.ListRowView.Companion.TYPE_SMALL_ICON import com.telefonica.mistica.list.MisticaRecyclerView +import com.telefonica.mistica.list.model.ImageDimensions import com.telefonica.mistica.tag.TagStyle import com.telefonica.mistica.tag.TagView import com.telefonica.mistica.tag.TagView.Companion.TYPE_INVERSE @@ -438,6 +440,17 @@ class ListsCatalogFragment : Fragment() { withInverseBackground = withInverseBackground, ) }, + { + it.configureView( + withAsset = true, + withAssetType = TYPE_IMAGE_ROUNDED, + withDimensions = ImageDimensions(width = 64, height = 64), + withAction = true, + withSubtitle = true, + withHeadline = true, + withInverseBackground = withInverseBackground, + ) + }, ) @SuppressLint("SetTextI18n") @@ -448,6 +461,7 @@ class ListsCatalogFragment : Fragment() { withDescriptionMaxLines: Int? = null, withAsset: Boolean = false, @AssetType withAssetType: Int = TYPE_SMALL_ICON, + withDimensions: ImageDimensions? = null, withAction: Boolean = false, withBadge: Boolean = false, withBadgeNumeric: Int = 0, @@ -487,7 +501,7 @@ class ListsCatalogFragment : Fragment() { } ) - setAssetType(withAssetType) + setAssetType(withAssetType, withDimensions) withUrlIcon?.let { setAssetUrl(it, errorDrawable = withErrorIcon) } ?: run { @@ -522,6 +536,7 @@ class ListsCatalogFragment : Fragment() { TYPE_IMAGE_1_1, TYPE_IMAGE_16_9, TYPE_IMAGE_7_10, + TYPE_IMAGE_ROUNDED, -> R.drawable.highlighted_card_custom_background else -> R.drawable.ic_lists diff --git a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt index d1797b762..414ec0270 100644 --- a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt +++ b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt @@ -25,6 +25,7 @@ import androidx.databinding.BindingMethods import coil.load import com.telefonica.mistica.R import com.telefonica.mistica.badge.Badge +import com.telefonica.mistica.list.model.ImageDimensions import com.telefonica.mistica.util.convertDpToPx import com.telefonica.mistica.util.getThemeColor import com.telefonica.mistica.util.setAlpha @@ -109,7 +110,8 @@ class ListRowView @JvmOverloads constructor( TYPE_LARGE_ICON, TYPE_IMAGE_1_1, TYPE_IMAGE_7_10, - TYPE_IMAGE_16_9 + TYPE_IMAGE_16_9, + TYPE_IMAGE_ROUNDED, ) annotation class AssetType @@ -242,7 +244,8 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE -> assetCircularImageView TYPE_IMAGE_1_1, TYPE_IMAGE_7_10, - TYPE_IMAGE_16_9 -> assetRoundedImageView + TYPE_IMAGE_16_9, + TYPE_IMAGE_ROUNDED -> assetRoundedImageView else -> assetImageView }.also { imageView -> imageView.load(url) { @@ -270,6 +273,7 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE_1_1, TYPE_IMAGE_7_10, TYPE_IMAGE_16_9, + TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setImageDrawable(drawable) else -> assetImageView.setImageDrawable(drawable) @@ -283,16 +287,17 @@ class ListRowView @JvmOverloads constructor( private fun updateIconVisibility() { assetCircularImageView.isVisible = assetType == TYPE_IMAGE - assetRoundedImageView.isVisible = assetType == TYPE_IMAGE_1_1 || assetType == TYPE_IMAGE_7_10 || assetType == TYPE_IMAGE_16_9 + assetRoundedImageView.isVisible = assetType == TYPE_IMAGE_1_1 || assetType == TYPE_IMAGE_7_10 + || assetType == TYPE_IMAGE_16_9 || assetType == TYPE_IMAGE_ROUNDED assetImageView.isVisible = assetType == TYPE_SMALL_ICON || assetType == TYPE_LARGE_ICON } - fun setAssetType(@AssetType type: Int) { + fun setAssetType(@AssetType type: Int, dimensions: ImageDimensions? = null) { assetType = type - configureAsset() + configureAsset(dimensions) } - private fun configureAsset() { + private fun configureAsset(dimensions: ImageDimensions? = null) { when (assetType) { TYPE_IMAGE -> { assetImageLayout.setBackgroundResource(0) @@ -311,6 +316,8 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE_1_1 -> assetRoundedImageView.setSize(80, 80) TYPE_IMAGE_7_10 -> assetRoundedImageView.setSize(80, 116) TYPE_IMAGE_16_9 -> assetRoundedImageView.setSize(138, 80) + TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setSize(dimensions?.width ?: ASSET_DEFAULT_SIZE, + dimensions?.height ?: ASSET_DEFAULT_SIZE) } recalculateAssetPosition() } @@ -555,6 +562,7 @@ class ListRowView @JvmOverloads constructor( companion object { private const val BADGE_GONE = 0 + private const val ASSET_DEFAULT_SIZE = 64 const val ACTION_NONE = -1 const val HEADLINE_NONE = -1 const val TYPE_IMAGE = 0 @@ -563,6 +571,7 @@ class ListRowView @JvmOverloads constructor( const val TYPE_IMAGE_1_1 = 3 const val TYPE_IMAGE_7_10 = 4 const val TYPE_IMAGE_16_9 = 5 + const val TYPE_IMAGE_ROUNDED = 6 @BindingAdapter( value = ["listRowBadgeCount", "listRowBadgeDescription"], diff --git a/library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt b/library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt new file mode 100644 index 000000000..70772e8e3 --- /dev/null +++ b/library/src/main/java/com/telefonica/mistica/list/model/ImageDimensions.kt @@ -0,0 +1,6 @@ +package com.telefonica.mistica.list.model + +data class ImageDimensions( + val width: Int, + val height: Int, +) \ No newline at end of file From 68ee6ecbeea631c1b5f1122f64cf680c35ca32a3 Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Mon, 18 Dec 2023 15:55:53 +0100 Subject: [PATCH 2/8] ANDROID-14098 add ImageAsset to compose ListRowIcon to accept different sizes --- .../catalog/ui/compose/components/Lists.kt | 13 ++++++++++ .../mistica/compose/list/ListRowIcon.kt | 24 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt index 5ae18f5a0..9d1e918c4 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/compose/components/Lists.kt @@ -33,6 +33,7 @@ import com.telefonica.mistica.compose.list.ListRowItem import com.telefonica.mistica.compose.shape.Chevron import com.telefonica.mistica.compose.tag.Tag import com.telefonica.mistica.compose.theme.MisticaTheme +import com.telefonica.mistica.list.model.ImageDimensions import com.telefonica.mistica.tag.TagView.Companion.TYPE_PROMO const val TITLE = "Title" @@ -276,6 +277,18 @@ fun samples() = listOf( painter = painterResource(id = R.drawable.list_row_drawable), aspectRatio = ListRowIcon.AspectRatio.RATIO_7_10 ), + ), + ListItem( + title = TITLE, + subtitle = SUBTITLE, + description = DESCRIPTION, + action = { Switch(checked = true, onCheckedChange = {}) }, + isBadgeVisible = true, + badge = "1", + listRowIcon = ListRowIcon.ImageAsset( + painter = painterResource(id = R.drawable.list_row_drawable), + dimensions = ImageDimensions(width = 64, height = 64), + ), ) ) diff --git a/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt b/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt index 6a963a7c8..1cc6d0452 100644 --- a/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt +++ b/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.telefonica.mistica.compose.shape.Circle +import com.telefonica.mistica.list.model.ImageDimensions sealed class ListRowIcon(val contentDescription: String?) { @@ -45,6 +46,13 @@ sealed class ListRowIcon(val contentDescription: String?) { private val description: String? = null, ) : ListRowIcon(description) + data class ImageAsset( + val painter: Painter? = null, + val dimensions: ImageDimensions = ImageDimensions(width = 64, height = 64), + val contentScale: ContentScale = ContentScale.Crop, + private val description: String? = null, + ) : ListRowIcon(description) + enum class AspectRatio(val width: Dp, val height: Dp) { RATIO_1_1(80.dp, 80.dp), RATIO_7_10(80.dp, 116.dp), @@ -58,6 +66,7 @@ sealed class ListRowIcon(val contentDescription: String?) { is CircleIcon -> DrawCircleIcon() is SmallAsset -> DrawSmallAsset() is LargeAsset -> DrawLargeAsset() + is ImageAsset -> DrawImageAsset() } } @@ -121,4 +130,19 @@ sealed class ListRowIcon(val contentDescription: String?) { ) } } + + @Composable + private fun ImageAsset.DrawImageAsset() { + painter?.let { + Image( + painter = painter, + contentDescription = contentDescription, + modifier = Modifier + .width(dimensions.width.dp) + .height(dimensions.height.dp) + .clip(RoundedCornerShape(4.dp)), + contentScale = contentScale, + ) + } + } } From 396f739a39446e309f6c2dacf6ae72909267561f Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Tue, 19 Dec 2023 10:21:39 +0100 Subject: [PATCH 3/8] ANDROID-14098 add listRowAssetHeight & listRowAssetWidth --- .../components/ListsCatalogFragment.kt | 6 ++- .../telefonica/mistica/list/ListRowView.kt | 43 +++++++++++++++++-- .../com/telefonica/mistica/list/README.md | 7 +++ .../src/main/res/values/attrs_components.xml | 7 +++ 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt index d766076d7..4ab3c1511 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt @@ -501,7 +501,11 @@ class ListsCatalogFragment : Fragment() { } ) - setAssetType(withAssetType, withDimensions) + withDimensions?.let { + setAssetHeight(withDimensions.height) + setAssetWidth(withDimensions.width) + } + setAssetType(withAssetType) withUrlIcon?.let { setAssetUrl(it, errorDrawable = withErrorIcon) } ?: run { diff --git a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt index 414ec0270..be32c6194 100644 --- a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt +++ b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt @@ -96,6 +96,16 @@ import com.telefonica.mistica.util.setAlpha attribute = "listRowActionLayout", method = "setActionLayout" ), + BindingMethod( + type = ListRowView::class, + attribute = "listRowAssetHeight", + method = "setAssetHeight" + ), + BindingMethod( + type = ListRowView::class, + attribute = "listRowAssetWidth", + method = "setAssetWidth" + ), ) class ListRowView @JvmOverloads constructor( context: Context, @@ -145,6 +155,8 @@ class ListRowView @JvmOverloads constructor( private var currentHeadlineLayoutRes: Int = HEADLINE_NONE private var currentActionLayoutRes: Int = ACTION_NONE private var assetType: Int = TYPE_SMALL_ICON + private var assetHeight: Int = ASSET_DEFAULT_SIZE + private var assetWidth: Int = ASSET_DEFAULT_SIZE init { LayoutInflater.from(context).inflate(R.layout.list_row_item, this, true) @@ -203,6 +215,18 @@ class ListRowView @JvmOverloads constructor( backgroundTypeDefaultValue ) ) + setAssetHeight( + styledAttrs.getInt( + R.styleable.ListRowView_listRowAssetHeight, + ASSET_DEFAULT_SIZE + ) + ) + setAssetWidth( + styledAttrs.getInt( + R.styleable.ListRowView_listRowAssetWidth, + ASSET_DEFAULT_SIZE + ) + ) setAssetType( styledAttrs.getInt( R.styleable.ListRowView_listRowAssetType, @@ -294,10 +318,22 @@ class ListRowView @JvmOverloads constructor( fun setAssetType(@AssetType type: Int, dimensions: ImageDimensions? = null) { assetType = type - configureAsset(dimensions) + dimensions?.let { + setAssetHeight(it.height) + setAssetWidth(it.width) + } + configureAsset() + } + + fun setAssetHeight(height: Int) { + assetHeight = height + } + + fun setAssetWidth(width: Int) { + assetWidth = width } - private fun configureAsset(dimensions: ImageDimensions? = null) { + private fun configureAsset() { when (assetType) { TYPE_IMAGE -> { assetImageLayout.setBackgroundResource(0) @@ -316,8 +352,7 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE_1_1 -> assetRoundedImageView.setSize(80, 80) TYPE_IMAGE_7_10 -> assetRoundedImageView.setSize(80, 116) TYPE_IMAGE_16_9 -> assetRoundedImageView.setSize(138, 80) - TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setSize(dimensions?.width ?: ASSET_DEFAULT_SIZE, - dimensions?.height ?: ASSET_DEFAULT_SIZE) + TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setSize(assetWidth, assetHeight) } recalculateAssetPosition() } diff --git a/library/src/main/java/com/telefonica/mistica/list/README.md b/library/src/main/java/com/telefonica/mistica/list/README.md index e72aa5c28..93ffb1eb9 100644 --- a/library/src/main/java/com/telefonica/mistica/list/README.md +++ b/library/src/main/java/com/telefonica/mistica/list/README.md @@ -29,6 +29,13 @@ Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used i + + + + + + + diff --git a/library/src/main/res/values/attrs_components.xml b/library/src/main/res/values/attrs_components.xml index da7f7c025..786dd6540 100755 --- a/library/src/main/res/values/attrs_components.xml +++ b/library/src/main/res/values/attrs_components.xml @@ -69,6 +69,13 @@ + + + + + + + From 2aa3ecc21c23794675774df401d7f803dbc31acf Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Tue, 19 Dec 2023 12:02:41 +0100 Subject: [PATCH 4/8] ANDROID-14098 add roborazzi tests for the xml layout --- library/screenshots/check_ListRowView_xml.png | Bin 0 -> 45185 bytes .../mistica/list/ListRowViewTest.kt | 29 +++++++++++ library/src/test/res/drawable/placeholder.xml | 14 ++++++ .../test/res/layout/test_list_row_view.xml | 46 ++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 library/screenshots/check_ListRowView_xml.png create mode 100644 library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt create mode 100644 library/src/test/res/drawable/placeholder.xml create mode 100644 library/src/test/res/layout/test_list_row_view.xml diff --git a/library/screenshots/check_ListRowView_xml.png b/library/screenshots/check_ListRowView_xml.png new file mode 100644 index 0000000000000000000000000000000000000000..72945c9b85fb2d721d0961ecf3d11309941eb84d GIT binary patch literal 45185 zcmeFZc{r8b_diaFB!ncHG9@G_W5&oF$~@}{nPwf!KS(f<1wF@{nIK=XD z4^?q+@C0#i&i*)$4}KBfmiNcO@x_sU_(0vwaBadpoNmV*fjPh&F>7S&MJr5H%`2>A z=)ah0BS#U&j&SJ^>29Ur}LHDTvqZRG~mTooHMxOl9EK` zld>PB??pbBDX~gBUS2*BZkbR?PVY|GUKi?K-pgIdzHonX!%4Z@HBuxQwOfvfCjfK7 z!Ff9F(~mj%3+E{@?yukOg!!I5`RRjfJ?_aL9n4d|+ANUS|N3M5JXjI<&(|G~_T-Ox zkuxMGe>|oC-){a_HvjMG4ZePbeS?*i)%M5uchC{Oe!VN){RoDJ(D7DtEeSf=8?Ixv;R?=uEng!(Eq^0d~aN zNC_OZy?8W8cPruy*52Bp3>6^-ySp#y2%-!h?U}_{T3UV<$YlbrN=OnN1u?PidAPW^ zxX0c$=nFhCNOC68IOOxb)a6>GoYYh)2EPXq^*k_LJw4_++Q>`AXwdXEp7Xdr5^&i+(APLTLCEO_GU&SSmLuW{ zw#5%d(FCMp16&y*dXeNz=z~vt=%$y$V=GNkHh7@H_Vq-=e}9rufQBm&sC zaLN+JyzURIwnk}(-#QbD*SeKHC8}G@L(F;dxL#~|T{%f4ZhbFp&zQ!~gv_2LtF~55 zcqEKLe8Zr|?Fs3Lo?RWBoJ8zF;%W<1QXY`Ll)|GWjF^{im{)Mj#rj~JPh~v^#PnxE z1Msx$c=`EPVo%=Ulhm~R@{SoeFv1=}LnEVPdaQtPvdExNXbOEev24_X`Uu}CW`A8> zU1U4R~a)QfX{G~c++khJ(wRORO@)m_B?p7o?b+)dH$eEE4n zS|Ty}vXT5UYQ$@&)#JUnfMxoDetAIEHPzshzkg?@>>uFlFJ~Xe%Ec zcpPpR;~{AUG_&M>oaxSkF?U-j_VT%F#gSM8kmJr3O_2sVq?6dOPG=DDJn@=#Vx1?K z)dQf5_#ds+~M(j?x9^@LKA#pz4~zMdtbmR368{0@hFAv!}{qD zO|9b-{WKPR*;@()*)EI1_o0~Mk;2zGrAIaNuP={PxW~IT(viw6ye(Mu+4bF9IMCaf zE~Aa`+=h1(n6heDW`;OQtcNS(Ls!>+xGg$1L5asBzKvp7!!OOtx; z0*8{Pv=FMi3%A#xOPoME#!J?})Q`z?zsJjVd`P5)I^dZb4NA!@ANDYXlOwv1ciVb+ z5ME!UNQrw9jC?Q9A{ZYd3rDN(?fr|g&Ef*j-_custi7S{3QmaFe+DSqJycQ7wzJ&i zw;o;L(k*(aTKcTf10F%K6Jd4bmiy;-V0k@h*+=4--PE20ZFI99MEiSyPLO2FxFcp3 zA{WEEh88tp?tF&yki+S5EYKjm_ZBNGu78B(qL!4cLQ1>oeb7<_pQv+BYEvT>QHC5QptPO|M-K z7dGP}D2}>W5!>j|a;P!e>dw!|b#cdz_)51|7=!uot%>=SF3X-V6?+Yu&0(zWU@tFpu>)SB~p%0ZP_sS~1Y zZBe~}gQIPh&-OL=mk9~X;nAj3;RY`5?Ck|MAML{@_c6C0G;k;H8_$U}pv#jF@AiFZ zJ%Fh(%z1l@im7c~4jfU`Y|@osU_r39BX&^Etse|LNS7LeMxlsLu1D*8vR$$4l}Zxd zK9=OKAMbbTJJ{^9&;aJ@Mn?RiLHl7V=^D$?I>Lvc|%px9S_5$T;J=BTKsG$d{cePeQx=xzmjC()Z(be zQWm``KT7A^q?9-Pd}Olx&xCUEL-hvKjoj$DqMQcfg_>GjQpMmwtht!}W-e07^-myV z_7Bg7Vs@f^b}*xfCS4p5>%Y$Viy53VzbkyZp`BukPd%zHMb9em)E=# zw8XSp%;1>`tIE&O!~Q*Q%{wetZ;p80+lMMb=h661)nUt*QefEY04d<|575uWD@tt+c7EZ#roSds_P-~p07QTYByO- zw7)#duha5-f$q@36e1foeK3XM$ou!Jkv(}%HtWY+_Zo~%DBC<3*5B}!7Z=JEe38!4 zuHWprCnYt@`g3G!(^j+tlUHo?_E=d*=)TaE{xgP6au{*h(p6EP;bg@SX_6NW^0N)tsa?Boi-uiRhg+$&%CLkAof z=R=|;(tg|s3DUBAO4a~bl7#bbTNFFoC{6{#+Llfg+mezF{akT0F6+)fP&r->b zt*%ES%yp#DumHtq=gBDUfG%!MZ$FmDJzr`r{0jdoVUjEy$2VL=^) zZQnh8Za1#0z}CxcWZ||R1ti(SXRij>ht3E^O}d1~`iEu?=5Q;`;&xGEgvzObZioIn)N`J8O%@iW1Tw8?9vp9!N(z(e#T?3@uv-;QT1}>IlEZGNKsk8mIWfgxhG#5944WwS`axySFvmG zaCPx-<>YA%B(;IJE2Cw0c^t?JU}{!=2OnYilErqfiHf(__Ms+5)F|b@1J?utSgTpNgu6eLH-fOC8Zj6IBf4@gg+9~30GpCeGh-Sv)9#$RL>+2s@ zw8e;4mD`v#zs2{_l=A0@$geCRSXeo4T`!K|xvnbEz8SnwDGYeAk#FJnY>SS=upn(iHzcHnw>B?wO)y?h6=SB60@TB(|- z5D|tUOGB!C9;sTcV^{j>)JiMQ3$DcL-WDi0C}zdvx2QXv*q`P)ZXj=(v0)+=N=y}V zkX*1=>$ArU?`H5A!rY3B9HeV-K%EKYHgI(^*Jmd-8uyj*S#ac-+_PWLtb=eMg@&N_ zzKGJySui$i%hjtdIaC%b{gklWJC=g{_>^0U)yi|Hv{IwhSE{)dxfKi(N|RBETci_u z!XT7!P0?rfDVe>xPkqtTrcv0Uhr>88CYuA5bSFiCx|8bSQj25E7R%cTph539-d8Ff z;(J`@(~f`8_B^2h@w1wddzDeTHOkR%F+Ak<{F4fKVTT;X;=R`cJLQuI@zTtX1ASPJ zdEs}D8JnYCUu53&8dg+kd6bbKVVs+fG$Xl!E9*i)yCv#Z?skZxD%cYHQKm>5^ahy4 zO4w9|Dt+TMfvNpAVsXNdD5b~wLT<>1OTsYt^>jC{^|6#$(^M70tjHVXmP>=84cEk- zQp8Li54K^4COG~%VxGgj^lcXU*)veFReP??YWnMQ& z7fUkP)^GZIc+*|OMq0@5hil^{lXbV_+RD+av1%ciQj^o8dWb=(Ey!MD*wIrCr@XwR zt9e#;Tt`0k>{YC%upL3U?qax{d?u&c@Nxbns&qU{Qn~(+K`oEo(^6Xl(Vil1_XQ-D zgr}~G+Sr;Wi0Ix6t-x(rW6hPEO`_wICv63$$>X`z(Nj^>zqri!wudHXA)d5yP1Kp! zId6@atYyQC0D2NX3C8ImtVaq0StV`T&wF2~bdj^wig?VqKT&`gIZFxEU|q+?L{`7Y zMEW`7zQ%nW!%QvTvn3xiJdHiha}X~#EhV=Xx##%Id^|@$V3|?K=Eql7XZ>1VDS>bw z*Umj?!3MqPt;~@4@>ijqRQ5G>HfHAIRJGI?Q4aaZkBqoV`sm&qm9P(=0w2PdUFWOu z!=jQ8o`!2sl#A_G_n5`;nmO#cjHL1JkAfS;8QEC2PVBsb{&QYZn#N1UGbdqvmj+k5 zxYeIxLba{+R0t9$tvNU}x!Mxb#d1$wDy}rKUkjFQ-w8jDBB~R+ZB);AAm%x{klcc< zt-R$m%VqZ?jT-)n=m?!2DJR9SxNS*J0)vw_7_&-n%pv1S;L(%SqRt%&>AA=+-#d)x z;aQsA^dLeQ88&s1wZEs0qRSdEq_n8ThQ%hohsCP%__PpD_VjM-49$Mc&~5uDKgGdk zv&rtVXF}%Tj;=Vh^h%d3=2PJFRvYeyA|F(`RSjM8#&BbC8qbi2s~n}JzE)i+`(5v@ z)m#w9zTzA<-Fp%~M$tC%N!_+3JlSUH-en8#^wtAn=6~mc`7dE4ak1t%L zW=1eScx6}_kqsgi809;WpGZYG+W~1Hf71KCDEz~XmSmz3D7fCv9Z@%@Ykij!JzTpZ z&Kv0-&X_Ab_Ys~d=C7VI763Uw*NicEbMP7_sZ)%blnii~&A-#vI&!D?@P1Ff5Y>GQ z;!t7UGS%{&v=bK_cgn>^Q`pNbZ#t~L%zQ1~rJ*2S@fnk^`nRfFDjsf1K3b2CK&WN0 zTs(igw^&#!pUgjJA{B+9a`d8S*Le`ZDHw5d-w$JOYiem}Z7X>+rJI>G4Dp`LM1RL$ z_|RUu?lxms9^TDZ-uyo8)on$2d*luSeAx%zede{dLCz2S>{U3S-4C6&9A<;>@_Y%C zR!fZPdacAflu6ss=EF%n`w9~|k!AlQ1iq~S+zj$dYlQL4du!#KZjC&a0k`FO>JcZ{ zF++UWMsP4^Ins<6c*h+A+L@hFyMyx3CB*w&?}KmVh3lTOOJs4X#odyO1fjHhwUAkx zi0%2DWYH}TL_X=a^6tw-f&qu=2D@avi=67kLJM(DHfZ&;H#*DKh$1-UTD5$<=F5+W zxr2JccJdz*f9)->v)mPT{i#pxc6obW(HPwF?OXgQD>YcT{>Lrq#ABSe?-})??G-e# zKB9)^W1CseY&*NxF*s6woCjmG8rUww%0EgaX)>zZYVA=e{7}9YQa|DtwR$7WC7O}} zeW+S|*JPwB-{Sn9&-z z?jyL5VkKr1xyFu;1pSZ~Ld|5AELoh$YnU$E2PaoP#wN;rc}}0~Z+)c{B!j40l*4ElZjHD$YGB_DphYKu zcO_&}WbGH2JdE+qlIXZ&^TK1N9jq#@YzE8w4@LIr3@=O+j;jYUlPoMz^peSC15=4F7X7%f6}P8ra!8N|JaL07ZD( z-N5WE!T6vlw$3Yv;l*Vpn(P%NxggPI3Xr2F%+I%hZ&J7zx~f=ks%^5JUYHH8EbF(B zN5s5yJ&S}_a0#yDY13TbOtbabXZM+vb$4uEzGnud$h>wKBEjHgYcj`vd&`7!WFO?l zpWczL;IaOG6%odLaVO(ZqB4v};&k6ipzlV|Hw)CuslZ)n7|)&4FLU7r1_8}Ue@%ee<_JZ z-*y9fTa&SHk5ya-lysinx#al1<&+WN-)=9m0;F@IU%aY%3irEbp z1o4?ctDEC188%p|AP^%^2S^bhW?i< z(xi>m)L5pj@<01ZA7goHA@g^qzJMtzNRk}c0qX+mkhms?)wB*=chKh z;0#I7v`oUUrupquwlFTv^QYv@PK7I*|C&bir2d{|8bFhNI{m0XKwC;{D|b?`|D;J~ z`@ZYcUUE>|4?rpyrLh%$U)_fl|Ea3kzRbkauP^`FKH}--`cwL&&Uz;FYrtQFvj))2 zpB~)tY$)%mzaCS9$ET)_jU&GP{rDWPE9`mRPXw>R+?JA{YLk;>oG~WH7If z7_ygo_e*i65?v>m$Fp#L-*E=H`iODUdNMf+fGr(kcQ}g`39QSNo+0jN~ z_A?{{IbB`Kh^3<0k(K4;L8*>v=VjF;;UrO4Wvm0edFm<}OKyM3_OK54N>=?Ew_eiA zbKGo$&$^SmQcQC)S7?yo-*@zD#mE)Z+g=e-NltEdmh-PLf}LmmT~u2YxCGP9$vH7+ zNGx`rcg7iQ-gn-A)*S7H8Ez_O#_an#XaP-D&8s0>K%aNf?!it>sS zg_;d+%eN-Q!)_jvA2$(G4Q+=AZLC>7w)kE9=-H;UYrQF^Wj#xfO9`K{3P*)iyYiGobJ?n3Uh=YNeQJv8D0;8y)~a?ZVl|MX^LOPW6jUhGy&z~}=kFg#LX~GT<{EJAn<=NJ zbn}v>o!zjVMrl=bwbZ0tzX!t-W|%)&V!;bqFW`_fGmVOYKho@R|A~u#K5) z5>cCNR@tq(?NggpaZwQ8F>$`vW%kCS-Hh&pSw6nRA?^bOQEsf7XYu~7K5SDrp+H=3 zQY$Od)A0K~s?y9=u+*Q2$861nlfipaTaaJg?9jk3cqQ@K<@HM?WS99ehyJ(KaGweN zMx4f%&JS~FRfw5#XRUansCmmIG)jXZG0_0>hT_DC(@z=6nb5u<-&Fgv7E0N~j`|2& zh`2KxP5$i+9WP61=38$g>^}R>obpLIwb@M`zL{y?ZxaR}`BBJn>Nx9{ANk_^tzU6Z}^YDE_wVISh*@MORokC{a22;?z z!ewQzKzO+G|B{T7VZSd7w(IfQ=Fr> z((7`G(ev~xZ1=uFJ)hwE2^_MEx51YDUJ#N>%HD}Dley;3p&RwQ_DbaoJldwx1ff~z zeJ{-=kxEOrUsI87i@Al+tT?|qL!sieUYjxTp}>QXD*E_BzYrI8{#HGa{b$&yHhrD z{2Vx={y7nytUSJgx=|)U=sxjbka4D3j*L>=qRnX4J;zSJ!BKb$x2w`kfvNBt?myo2 zM!bHki3@9vM^Dak|J>Ri^_=U?W|oE03faQGJQ13dRnT<8i|)VP;)49K+2d{)cfZjm z&4QJM(*9B0eNjiztwAfr*ya9cmqem-WCdNh8jy`MIKHF*+$Ag5JKlEFkO<7Q@a^TaPtDAkySalXp?_Cb(+{EbSySUahCTeNz8L^g`(ibqQ*-JaG> zm_o=svu^bEQ`nb?6bDFQ_+QfU*Y7X@ZYcgA^>lT9A$!d!=k8$dU_MqbY*QbEeV*)A zP#Ip^5NJigj`8D)w&ue1l@8ugxTJJ59q7+7mj~drw4t2XU834lVHa>Jm2S9sqinZy zLg~a)0$XBC>Ql7p@c8)oU)4^+dS{tlO3Gvp3)xzT z?}J)&HoR8MtJ3P5#95M&^Y`2m*5seO;eFLd`@DH^^t@Ahpq|v?fQOp7)52|7C>`JP z8t)M;OMiV1i(uK%P`K(gMyy}ZZg54QMk+9DZoH8xIqeL|NPX#5oxw{Y&k^wPa^!nR z;w(Pd?XK1ToPkbEXS*R8r~$>XkSfYTB-48WvHvrC6ca;rFW0G%W70Ef;NS zw;f|&-}_@AEieEkcGa=^-2g$n_yF)$HsJ)4w(Htu&or_KhgenEBF1P;)Y_j#UJwLO znRJjeaV7FD^h}WhvQWOnsGl(0bfUQJe|p#}Y)&dFc4?rXott!(I9vmqv?fgt7e1T| zGVJGGWGR<235^&#gIp((4W%dYimBYbf+n^S0;9Gw4y$TfFF`q-TW6Jo?{6WNBY`%! zKeFcOH|uJpzxT%sC)(8LKSzD0VonKC%bIN4sL%qrC}rZjIo+Y+mw2?rgeE_)TCC7q zqX~+sJtxf{elb$x?$+?;)CV4Jm7jKm;Ytq)ir-}n;8&8P(dffF)1|EKhnaPFlj3T{ z$xWLg2hQqxAi>KTzqqf8GG^Z|zV z_6b?S)E4{rs;DG=M$YRdPVH01B2I(fq!kbA3aC^q{nsKrhrn5T-YZF7Ekj!Jt0j?O zneD`t`^xl1Inj{BpmSu@(PD+Gl|&$v4x3NvxrVLtt30J-+fnESY#QKCuA zGL@yKG&5jv??~yYVtz(OKYD;MZjiK?eeQ*qZ> zF;5oWjL|cpoqA#y>0+%g;i`pBMc0{9`xccfPweLpDBITnfNRo?>nQ#x#oxBJw6?2t z<7Zm5c(guIJWuvrywfaynM>X?W%E)`KAFByU3k+zsX?q|YQ#i%OGSl+*7Rkl!}pU%_k%h}LZ zL9r%b)Iw;}qvFDWRsCCUU|C4_+&{p=aPWq^)N)*|V4piC*sS zOc{1^ptQ#ZgfwE$9_@apjGbhQ{k5{jCU;IzS6mzkn^d+(BtSnOJs+rg2@1-B_+bam z-G-tpZ0?UTc{@LfP_nw!N*-96tig{gmOkh|@Wo?0i}HTuY+zgEpDSxJ+oQT`Eo49S zclS&|WeU$4TafLi_tFg(d%hhr-hy>Pcx2!H%b?_PHG(D&cLgh5QcC&I z&LP)PRyDjcz>+ub-~Sxuo_J?7dJWaA@*&cxFz}Ph>f{BlUHvfbXeYcDm^XR!7ti^X z9(Pkdd2ki9jrhQeQsF$GwnFoblN~??r3%|`EnFd)TxV%YC`-6T*%Bq3oV#W`CH)GkX|vZ?Qvf zN#N-0Alw@sFUWp4k;cLse#32fm9r+jU2`A7oQsF7AdE6>t-dB<8{ac)$~^cgD8?tVE{aza)R?^@hwndsiE>1<>) zZLVfvr^m4;tCEMAS*)1B8~8&$Bl+u_qkX0$m{1yfxtqL}9s4kpGl=}*!cG}(YDR4? zw^`r(m+_fXH|E&wK=_sdCH7-gDz>KOz?Gpb_Im(Uunlrck+;hq&5cn=MuprrJr^L> zEj!jmBzRZ1D`8Vy#lHK3LGj|NyjnrWxvcy5#Yg1$CWTA~n-;hj(B;;7&_j5f52&?Y zq~>qK2#nlu0Rd>uAIvhcUEIc+1(3!`AEtte;mY^dB`fY1X8nrrUj2oJeA$NtPEvUw z5xKiDh7jM-xYn?X$HglUm#>nEv?wZ z9)NI0n_^WHi{}RqmWijYfYVAzNoj=8 z>-f<9ucxKu>wkiQ4#mSuPV4LMPyO@F4;vdB)(mbl-wBWI(q5mEld#tz-!lM70&q+a zZM6L8>-%i<`Yb?gpWjH}Y?^(Bee&tWIR;YBCJH_*W*et+Z)JaTcBFOU$B(RE7#;6dM6 zCIE~ktg@e$T;h4Kv$Jzc1B(&&y>=Zsk*$_le3T@jR8m)GMCy;loD+$0$SEX!!M4Ep z!nHqenZ1lvjvlw=x}eXor}<1f_Zdzh?6Z3M<$31{#uF?&k6c%R5C!^Nc>1GTMkj9y zrv(zhW0+W>^k7yk*YA7mS}##O;7?s%UF~ngzK)}jQC=?aHRa}X^Az*cRg+@pWmp9B zh|zgevYxK4b|+RII2v*gzU2{ThT-1clt89Guptns5NH$2Phsw%nN} zOSEgFy7l$4PUp)8+4?7}bMCE?XI6}^up=fI4TGLo z?-h9Z5O4wN@DwmJCJOvtg*;4=Z@fcLHw6+Cn^4nKax+j`HL(>XnEOBGzsYm)KT`^ z9M6~gEw07>Iv4BNR_&enVm>>$3Qk_Z7e&^@_6 zv=><9pJskur?P<~bPlwZU~}{G@`9YlHvS}o+}(W*k>ICQ!pD_8;}>?((!!#b8(SX0 zv3%s@3EjiM`*Z{ zRa!%;b^N^$md2!huU#~S?-$1ch=I~l+6UnBI~yP(r}}1O_!@PBrq%)`C?sk3R-8AiJ81@JqZArD)HS( z{Zgv0R!MMfHvgH;0LdZ%??`)_mSuT6u4G7F4LK=(F!;E%EE)84O9zVVEf9tGGv9EV zJlv~h-ZsNT00u`f79T$61^=;MORw2qv4P{Os)HVG9$kINO-X6umVX9376w)D-r1-G#HS_uT;_*=P2 ziCJ2QeMGn!kTotB+w3LvjPIA!LHqOoKAC>uJHWtp)*_O9ra2Je^lnUizt%zcTRo>= z?nz7=cp2nJ<*;CDDJNqr@aGQOTyJLIfEnC%e=aVixjKf%ra&0ylj=Vy*wxn&pKnE* zrh^n%7^X|~pu}ZK+hECMgy`uqjh%aHX6KH#xMz)k$v0=a=Fju+B!5}S*{>NfCGcVw znxp3{ttqoL0KKr)+^xT4Gm0)69-K%GjGgL+?r|*rdv|nH@91o2Bi{~)>pTW*V*biY7ydI2(x1m`$6;ee^>|x z6+I01m2*s4=MG3ry!IPB-4NHii!6$BUCIn zgs(?z6RZaAiRkh^y!IwAiTWBO*(;Fq;C-kk%lL&_1eVC;<2qsU#r&0u8HqE}p$u<>^Z=|Vn*v;+3=@_cd`k)!@DsZqE z`TCGk;E?6+4I|Oxz7N`rfx*-~?wWJ^lB|Dx|9Y-)Rc)S?lg+PvpJ-5A-zTW9jd|bB z;Y{dmyLfE1_jVu*wH57|#A*c}$fUl5YCkgaUjDd-va6VVAo`t9M~P8|u(hU8B!{=r zG?hy{YO2!CXFuC-TS=4iXi(gc>V5`!dBh3IYWyEd$)outbqf2#!otH`%StQIEMrzR6xLb7?Z& zz+0wW&nQj-CGZ~*z#Q4uZN48<->5yLL+(U(?{vkiqn*zd&(BVzICbk(aUAHX*cH}E z%Gk<6T&C~V75S|C=feS1z4^d%@%1)^KmPa?`d6ShUhkhmm+ak(*m>xkRfDz%<+{Fv; z4)1R69Fv@7H3?@^ff*8ha1e5kVQ1tunLil_L(JT&aZ!;g9+ zS}a;Wm^5xp^_1U~n_>dJ*p?H<944@e z-1n^6U#F{t<;yi}=VNILF2f;ZHAX)VPqP=&$@|=Z^V|3xy#X8;M>{}7nb?I)8F@JM zD(Pi3cWQqMd<}aYg5IU7oM28y9L+@ZXpiWBy<}ln2LNU%#&A!cT>2P3>%QO~ZNi6G zBGDg={|C;3<1*!i;>~o!w~>W&W-*nN>;+N8N-6ka!_6P%c}Mp|QIbodCQT~gd7mp* z2wVf2XLuhe}%VjPL2dej=514G-X>|u-0-60PtV^h;dJjF$(_R+!mV}g^= zOOdk(eHka=!7M9?(V01C;Z{ht#rdJo`#hIVZU!_Y+;m7NXD#AC$9q=?FsbF1Y( zw5uT>L|XJ}wv-BsP}U~O(Yi6qPbD~P>lul)!KoTHRa6`(LHirS!3fmoeOzQSX5e?P zm&f9DWA=lL0q?=vd2!elZP74h>Sxj&F;#>*L*jnf+CG7|$YBCy?k1&rbbeBGx%s}D z02~#LaSnN^#{D2VPbA_oyP&4+W;jYCSfp6MP2Ya?W;KIOn1tY!dYxRX;lS~X1MUf)>h-eVKnXw?{2O8cdBj02{v=KqfN z(06e2aR>BY=j<^Wzi#O|eFdD)w2 z8aOc>Tj!93eAJH@wT+YaSkxfKs)WxRBa~?UXXh#^X7Fhn#?Ga^@T@WdG(lTaLVC`y zHoBV@-u{b`kyC74Hr$YIvda0-;Zw(qcatxy7e$(+a(Uz)c8X7idvQaHB{f;*iSY2> zfl%xeD&db?nk82XLwU0=YbcBE58OeRNI97lG_ki^@=b-OACg~!HGkTIjp`pz&gB56 z%{bE~TCKKxLWi>?M{fG=$Se^Ezw$D%rVlvg#k{PGE3JO&Z#msAi?e(^&XJbP%glMv zapWgFFvS7z3o-)(SO81To4aAJ{rz}`b=LYX~>oX@QF zBg`{MEoSgpJ!9DB`^@Sk1ZC#dIoho^qf-_47DticH9#`Ot*OT%XSq;BM-r_vQ4LO% zdc>bZMW0D7?dzAf!xTPZxeG6XMJ%=X9l2PRfx#%txuq4_j2{^*G=anL6cFXkl^n1c zLA)84HQqvybuzLGdI`mOSTK#;d|@y8K<)_PQw5(ilc4u!Pi9psu3{Dh;BGSO3+Xe~ zGatwVrh1Yq6WaDfXL>jZ=dy35YgafLfO#A|fL(~1`T#g&y;4m0sl7ugBN3y(h0<%1 z0Z6_?`ft%3v2n^r5f6(rp7bn*K?z&6A~1UBInE&&vB{v>4AcS9+*pf*-QADeSHtU^ z30hjc2^|1K1exlb*}#3*x121lghj5m11f}7ok@S2sBq2-CIiu>2n#f4?19P zz18$Bz1B05Uw3&Nb<>}RirF^%^&DJ$FXA8UD}A!A55US%*r{~? z24DJpDt$HQTAC)Po;GH10eajyS`Sh>;*cm=#}_VpOMeK-r&5dX8`Wryxl5SVCfIC;+gAi9R_tMfBL&m!CAZ= z8z_(yoh#Tyi+;z^K z^QdAY()P$^ZNvm4Aaz~JogBSPExx!j2+sp%IzkawQxz zT=YT?e-arO!@38;Ogablyf@#7xx^g09JTBn-{3X$yF9`<3obuC=KySGFXEGAAwYws z_)5)Pke=&JNL~}CtulB3SGi_CLcl1v`!U`pV$V!FNA}pt4G=^>2fMo%F7Z@ud6|Yq z*41u}r4*5h-s82;*s8StI$s4p{;8I-4X&p*MLUMahN(urlweiun@=#5|noCAnh<8wPdnYQppveJYNxV07oI z7RYhbpHa$(w*$9akJo(!!k()aD82$mNf=Uy%;&HGmtCCl)8_*qS=_=>;Kg!wSKuv1 z!G~+Jpqwz_D^*jwYl9ggJ4$pMv@^Q8UYdx2!AB$5N6b>f&&q~+7(qA7U?|7IZh91S zZ-`)e%3h<^OXXBOWr_p)qkKdzn?X2^HS@L`LsR=FQzhxCt38io#0ShpCO!v7OCLY0 zbL#fCn-Gpa`ajbQc%k4s4~YjdHi$;>vt(loz8w2f1k zrarv`UNxt+qlr@zw`D($Xy+10WW75TFkv;2lJg8n#Q;bLV6v}|&@f-MhqVFx1`dF! z{zIQHdi>`y3b6NiIEXv5F}%@&{C1O+7X-wdno5r;utg{RfA9Ru;uM+qr|?fR?US`l zq{0^>LezI|q#0*+pOi!rzWfG2Ke36E8GQlN#K+o_qCKy)!-+S2FLZTwVnU%c&x8Dt9Bhb#EZP)Ktp}(c1KZ^av$iIR4 z1^)q{=?DbBdgtrUp@~Opzdq9xbd3L5icNX1)}>uE;_f-WBvre|IS@83w0{&|C$dF9KUA$J7Ft89p}TCQt5D>J zZG4Iibd^Y>G;d1#tE1H1VRV+!@vgMpFuX6`dPSw_0s!Uyr_ggO&kMrGsyH1t6owkR zgMWr5TL#x~Qx=}k8Ny$j_DJ}`Q(1P_yYz03=5yoG1=AFZ58?6ev`+BBa>D;)Gpqi% zrS4B>UsLr|dakBmCDp)#8KFW6s%if+euRHT>r!vkYnYHhj0i;22R{ekO0*S3fNKS)(Ly_l1b%aw@fw2p5ME3*A+nU&K{{5%I5I?WyF*)o2eGadb!^1pDazN$k z-`Xv3aiBfr2R>*m$chnYR3Q0orB_G;B<+97bnt2Zl%V6G`W$H7FU2M!Mx;@p-2l|b z_v>k&z^9Gd(j`j3yr}qj!(%2LW|ne+>V&4y_dCPkD$(H6iOJj%Svn*bSlxtCd`wb!{^ub|A($vemN6r z%tpfmWS)Q}9QV*7sloh1WSc;{^BbkuX% zuH~wjJa6GGA^pKBS8*i$aU%?777jT?#U6RdA$bP1(Iv5}7Uu=iM&kL*yqi{grkTXV&B&oE!%}ug>L;2%MzG2BwZmw`PsnVm;bF@TM+?(Pp;eVvo z_!Dq$`!r&;+~OacGS&lPXQBaaZ3+D@fTVN_%w%A0M3EVhn0qDvCgR$SC+K@8Gk|z_ zNOc;fTefr=fEldUH%P$&GlO}U-KaCMyk~W3sVCE+;Nuw*LWp1Te6+J46fnQv zKLG(Qhz*c;?*@vh&{*})``DA*APqfS`3Cc#%84V=lIeP)lrC<^E?v*_v-mP#XBzyB zDb!EQSIEB%+kd(p7_rLCn#=z>?CLBrHUHhMj{^X6SOd^JUiUNg@oCcy7n?IO04JHp zs(^lmbEgK_sW0#82o2EQgP&WX{h}kbt8!e+*WT3lu&#Dg^4qO_Jr}VTqIQoeANWb# zcS_A<1hl2FITA4%GG+=kC{SZ+O4~b_}|FZ_!Oj zDRZa&Pu9im*RnGA7L@^w!CH->)4ulFn(wT-amikNloaz~fwQQ9rR5xyQ)eDf#&U+j z{e4qCJ3F~p`ND_Zk6v$K#g+M4_MR#bxHfvxj6mtU$)B1_+j;KBiS#pAm2h|uF+4+Z z=(9F~ilW=PHQc&-@j3oI|8(vo&BVry%&+_mNGJ{(h-0muWjA?&B*QWszp_V|zJG+i}VfA9DA# z)V{}boju*@DC#n0BCA!oj96;4$niiB9PV$6sNUTA%oowE#MCaZ7VN26{W&Z@;_~#3 zR0kFvdl>QcVY?r5O36Ge9uD73?E2=G;R%&QP%gc4k40|%f%svTJyO&@lG^UbD!wMJ zWWk-n@Z$!N{kV|9|bhcT|)~6EBRfizp~4 zB8VV43c?CX5O93I{#2ve!x?c3)?EiLzf zYb+&Q$?SW)Qs0BKtI%fGWoATm7MnTaqLf|QKI3?G@sf09bI&PbM0p52atnY*VzMi_ zy$6>cUOwiJQvWo%`_|2~sL5|x4e8`YtJyHBcDqpKRc9P8_af=i@kzNmpDS)p_~czx zFYU>XhvxPsBs#;Jc5X4UZV$sgt<~y#OE-C+B9_Gwb9oIG*z@|PEXt9Bg=v|x5?O$2 zPbKyHH!nVm%tkvute1Xc=#0x^kNMBd;Jx>WE(Dy2VfE!{dYB z#_e#wJ`_W+l=-btLWt|QwvPDikDROld|5+fnO@f#>6I6O94SC>i8Iw}J1(zlS~4AhE66H?iZ3YEQz}ztHF3-v>?mWdA!If@U&8eDr^w{QdZ!;s!qnBYoEX$9sUXV z>-aU@8`J-xi&m>^Rk$siev=I(qr29Kyq*&$Y56R=Cezzgw>W2T$rfMQwmad)o4oEo zHK$-s-?YA%XY8DeHx(outtK=dGcfZoPG25OQoZ)p_o{cVc)RWQ1iuJoTtsxW7xDAB z@F}dqbIyTIM-Z4WCVizcRO1w&EMjLD5}y+?(5gFE-CAzTgo;Rd8$T!*&;UDq`nmi=lVYUBiVFCA zo3zgwOE44aQ=Sw?=RqHXnv^lRvV{87zq@PvZr|RrH`c?Wx#|2STB-U13G%oL$0v1O z50xSpp9~18`oA4&zM9MCu;7EbtiGFL&Aq^52VGqT{y}rkd3#QJke-OWi0AO_`+*rA zg;$(n3mv)!a4zM0>9r=G99O_Udf4V;lxv!8m8UHgDu&ULVrofHGB5QKcav-|&RJsU zG&*^juSB&0&-l+N#^86i@@B~Q-tX=2S3c#=cY9tG&mVU{H zILkRGT9AikcMdV4zSrF-yQKR>m;oAHTmdf@LsJE@T7lZZBTsfu~FLmvuyu`_^bEvOFfH|1`HHWqXWQGV^!wJ@hRaMs@O+cVm zSETY}O~AL>YPC=`gNheftveJQi1K8jSo?@Xm%2ZXV!Pn-LP9hcySj)&D2~#Z(@H3_ zJa8#`!QUd!g6=L?9HsYo{P!Ewa&r!vCI#qF=UGvieoLRNYc+1z8HT;3sW`NolfoDP! zuq$(_(=tA)T8k*(V>I15{ixctI08W-R`B;DqJ(#Mohu1>wI-8|M{iy}A=c@Yu)^Vs~M6DhC&{x=so8Bt^g z=8ys72?~D%kZ55KqBBWJosewIGb`gy$l+_;!gs?lCX({HE~bc!&TsM(12ZZ_*HZ8%!m47dWNBh*y7%Xl-L7w7}!N?$CpOC_y|K-ge@A z${9WQx7%)KQED?gSo^Y-^WGjHnzRkAEoK{%QkoljjYgbpFeJpX~1 z4ial>0%+X>#QC>I zaJlNN>^1w&M|?K4aU}9gcC;pT45^|1Fq|xcfsT86pFN6JGizl+DaUbT30Z6q0f@j| zwL@$A$;w&sFSU8v#np;L3^ex46xHw;_mn_$7tncE+Ak8Edeh90ww?g zZgLTrG45?ONgrr}6>ckG1Dog?y4tbxR$u~+Oz5w;<*EY+kObBqyuGzrVMuF&mAIQk%2 zh0j11?W6rmNz8}i3PQxtx`U$6?0&_)qt<8qcBXV1W#O}6%OBy}>=O2Xm1FG!65NDO zw8~mf)5y6v0d{T;aP#Oq!#^Few~(L@H7W8?!?Os<1UvOswfD}iUZe2pFI}C5Vn59EDxd>|5H20$0-HK=~qR5P_IFv+K<$7fsZ*jv)Mi7v-vHwI`nTd*0Q1E#L(l@8gvD;O|-4j8g{;olb6-%6 zUMaVWhr}jIkxkbMZaIz*?5f5^Ny;)n#X|Ei z8~3oN{v0*2?^pLVl*PaYoy&r2365{?^ncyJ=?uCGLIkx!L+A5@DAjKtMLq$Mp-6j4 zXoxF>nLBCotohGFSL4znAocUy%op|je0u`=UhjP#HT2l-xlTn= z%4%X(Z)bN}U*F}yE`dGd68Ku0;Qc^l;^I{IJmsL}t9}6D0k#*yaJ${Qb;6qO0x+8wOK;(her{lEOFVWojqSF;rEH|70JF-&s>i&j_QiE2K zM|TAR3Fg7$LtOa+=m3R?hSBb_a6Uc5h$i_1#C@Rkq8lw8y(JZZ?$4%ZWT@x@-XoA< zku8N*vJ5aX*GGI56t1lZMQKzu7;gWaV+vyOPnx@K#s14$*}z(Jv(11m0U7(A712KO z)T+;wq0Ns$Ph~KJErdEW2`z!xy8Qxc5TNf@DMJLe0-}$aD!$z+jhMg^+z>;!J)0{` zrCDKpY*~Y#nnT~4*Fz?ixAgEP+H$T__%a+8i-hdjg&%3ob4?E?cXHWp63H72QU0A~ zAq7{!rhQ@B*a+e~+J3rVp1;X%ED*PoM*JND9Y#X>H`suWg_aEpEuAGzi@-zegZ>8L zqZnv6&{PT#ekyc>IlQmaT=UT#fH?$t(}%z!&hnTf?Kz$S1?S%A1nGus3WlEc;S9F_ zqy+dR@z4gT@b_p)r5g`1!}=yKZXGTT8ZK@7;nJbu;M)#24XuE9blc&Spp9GKc6Due z5bGb_cDOegU^ubu3FZKux*Epqwn(@s(0V20DB3T|ciSPOjldROYTS08+Qh&r!nn3u zMc5=X(=Xf3v{Vvw+r8anYOaF8&IxVHFC2hhc8PDl3vN)iz-_l&rVKvWhf%(b7Miwn858kOTck=b7&1Y4p~FX)y>bfD4hJ&+fvZ1 zO#OZo@+<2h(0L2nf!%W9+-~^)PaEnRYi47(->Zog{Ns^7G1#Ds-j_Dx|9 znYu1QXdxR~)vZ3AMPD<-P&FDCE^GNPr$k{Jp#yAP@7BID$qK#~=g%EY3F6i4yp{|; zMQ2KL_1x$NzKjtT)8}|NX;J%DwRx?FaW4SoVG&fy%eM`TKSp?ez>12omIH z7r4yj-CI{i1{B2g%fU0SM=Hg0#$|DzG+yWE0JxW~h@ zrw(D$R1b8ZpKc&_j(Hr;-sY~5Py;9D$P~1@HZe7cEyo}ex74Uo(0eq0bd;oKCj`lg zx@u&n8V*?{%OCS9`;PaI8Xk(C>#KU71<@QQ_gXex1F}U~HnQ+2;|mIeia5RA$Yni% zJfVe+#Pjz1AZrXq(faiAY(E<3tfQ?Ycsp8F9yDLSx0u+%3I-(>J|4NlT!tPVYO$cg zKY6z?>PQrJ+BEHB9$f5tnxg@J`!1}qF_`@#fIi*W1^&JJ?S{yC7Vu?BTks#9n3U}w z3;%80mI$D@(=qAMH4R@W`U4!CeB{WHW6eP_pcoO@wDR)udZyJ+DN28K-M4pd?AW&&K`=&j#0_I0@s02Isqhg7nqx(WNsG$cc_9?FIXo3cQ>$+)szJ&&_@+W98w1 zqDkmh4*4qQ1dHB!9t1idraML&5*orQK#e5$2GA1skW1bvSjqsMxPRu7bEbM)O*ID6 z_~`foY&wUhB9_4C&`xta%3e?9A>l@MSXkC_cFHet2bzZw#Rg_1z3}+yWLLiHD^{o( zf49-2E6+lr*@t+t2_kjV(0+QY`oKuWXxzb#f;x0>>C>JFe0}@N1n}VmDS6HWvsbMP zIEz5KHr*G&qGTy~n^Cn@F@>H?0N7n%;>(tCS>5>d7k*iD;BI`_h_q*6M9F=hoMa*k z;F|0|e*Czw!Tfh0aUMOoum55!B7+S2pVzm5poA+NsuZer$wL_5tOX_kdA^a4C!u+?_{${KJz`Jp6#^Jv#iX6nTGi+S#7Y~79gEW8 z>iRy>UEo1aw&M2g%ek|G@zsuRG?Q_yn-Z3N+<0TvFxC)%%C>0g=@9Plibk8~kZ|yR z)!qET`=e9(D!pTR8EpVjH0z`rrh7{SJ@J3F`rF9Ga7Nq^tPoS!8+ADq&!Lk?Dt8$U z@m&0Vm3ms5%%lZ<1biv87?&d~YYbfHu%J50k2l5SE&_OOLheQ9&2dy8tX(;#U?ZZo zbjjJ~GuS0ESEqRyLYVm17liuV+}xIBj~J9UN-?4yp{>{*m=>iEZhk&E>JEN&aZ>q+ zT#%T8%#AyD8e#MR*&8b${{{f6=V$uLhSU11#W#SNQOb$MHls%lAD*@Q-HgRQO7yx+ z(oOJ$+@1JwboDqy*t@Z~^CCrwjrK^Vn7z!*-%FnE13Q(2#lnaU z{QLN`l^`ZNyM)Uzn#f@;;}q`+56p;gTZ3@3aC>`gI3)7uaEBFdtJ#(gofnno*H{A< zB^@{%4&dH1xQ5~%z}`k@nFe}0rNqS+9yV^rr-U+o`R8BHa6!GVM>Zm4+Uf0-6IY_n zFrs4XtgpM5ZSeN*)1ysE>81v$9|GOLVbIpMVzkT<1|1tW0JFav*jBtY&W|5cNhFu< zJ6A5IVCY6(T_oPX`mPj`hN^dBHj2W%dja@ zj(ER2-w*U=RrUe4?;q95aC;P8gNhW|0H^(@e<&g%V&cNaj}=dxK7HiLjc217_Jx2rplDV8GYoMf`owK!r4b?M+YT|FdBi14G07 z(?*b}An<(w3WXvD@^EtgKpZ15bvf}Tk?T$vzz~&jYNCDM?UeK8u`o2< zyElIO?;ZAk#YG;UP_sT%tp>MoYvkfCpWN5SNnB;vg}GKj*spp8@2TdmwJVgcij^f+ z0IlfmxB71P) zi1Ii&nM)28yqz6OC1J_;NhO0mBCa>@)mZPMvkCpliV=K3wNHJ<-I|l0;Yn6QAa&T7 z8czD)8iVm1q`nJaja5YymldWlQdHHsNy z{SDLWbB}k>b^rF0?d5v#e$Rp&bf8-5;rXw1?IXz*pAR50^R|&CztwULe7@g+$+mhj z5s_B>#ph;|2-Ox zyEjRhdX*p=W4Bf-oHpO{NgktToIlyb<+1vQFubm(iPC&*Ek4b!eWs)`^%^;ST0dFQ ziZUSOVa|jxY7Syxsm!Q_EwShH4Uyf5+=N7(qDqHwBd^Rqd46xY+}_bYX+ikj zNiCHO--dQ~0qtrEH5pMrM25ayYse26q>dS~`A)w~(^xv#7_jy_-uAy#hopW{N4;{+nP z;tHSV2fQ1kq>)#%8}j`o6X$Nh)OlM08)4Jnw|GARMTXzjZ1SQ1nS8`>@D=LDVFSxNqSpo!fv8$ zOLrFe6OZiJ;E`fO=k+w~k`;zZ9t5!*R7%GnwUX2|NI{eO?L=4YG;x#2LF)Qoz(=Kp zuX_jy{)Faw>Qow~KD)9xz&e>)Rr^t8jJ(S0&rdv~le~kn!pS5+h#8I!RF~pKH(bWc z;$;^-5O390z)`$d&=(~ztQSB%NZ>NS4spP!_=JFx^&aec3XIwDTK-T}fM~#S7F^@Z zFo}ZAU)@<^{+!sM1q-71kCYCaaaJefIsQKqF>8Iv%D21MbNM}vlf4jLmY|uX`ZSiq zR`QW=>eLw7S`;%#?i;-SmK+(d3L{&;(1h`;>4scQ@?15jZE;#!^0r!^iB#*Q_EJ{| zG1ck6VH~=1dv{WVWq~K%R7{4g!A~X-UnLM%&#r?B9PWiB?(eZ=OxvjiYfD4|VV@$h0DCUE(6;*X7Gt-71M;`&0XKtX{ zr~P}JBhtJ#!SZ9f}ZHqUrR;4n@rd%^YqLi3)~u``Qh`B#*S zRDFnJmsJU`Jrctxz+=!Jz^Ry#$?7emGwX-gqbDqwkuiW>O@ZxktQgMqLl%YkE4$c^ z`*kofD-IY0e4R{p9BF)v#OoZZF0#Q_M9dde*#7JC+iUI$0S^#q@PS_H!U12xvktCB zkweEVN`x1x0IX`_g0HnTX}w5E7hU`QV>&~Ri}d;Sq~#?Z>8_G%g&su%na8|ion|qMQq4L+ z|4Lynf?CMxkk7DrkHFihZZ70txGcxSg&Q$?H=G7J7YLk&VO1wyvYm*-#TW6QlpEEo0}rTIHNAMpFW?fKC=mT)@HhnE{Re3UY7ttyiy zSZe@c@T|gfhBK{Ad6-b1%tsf~W}XG)DZDgt#tGgE>RlWt&y|09%&B^=nM$@3sBOQ4 zuRFH=tW6}msb9q5J?n7;@&PBS*S?bi^dFS@l3#LQ9u~zTD+W&QHyzaZP^f%}8)VxB z5*|c>)KSU2ut{>aF?NjHAJe>AYZ#W?f1oeVta?r&ZN=PPX=MPS-MF=raECwYq^acQ z9jNm6ZM#UaIA}_0`dC=W#!YnnMS5(01 zG9=?$JP-%3G;F&!w}n#rF$1M(SZ>bUd+IJ%%{K}W>KF5Ht8kI{k*uLFbDdQ!9xm`g z&XOUoZ)J7q(?=B51i-e8MUwsOE5HTXne=#Dfn*|R`sS9a&0!&-$iyn=t2Si$gAGJO zXHD_3i=aY-vX1(>E9WgrmEZJ_s=y~N90Sy@Ecd@{UtyQs*t&5xyc}ktTRhr9nYVu% zp)a|@?Uc+ftkGlKFh72xPm8@|gI@JqOkI&$ucIFsoLmiXE$l~H6$cJ~E(=eerZiJK=tr(pdP6aazO~Z()w@q6;`X5yUwZ-le2D@ zX!x@niMZ)4t{~DJaOzFJY>e&11pzz{2bL0QwHuRfR?UBA4d|C|{eUuq(fRP@3kJ6a zLO_98an_&Y8o)6*mTU7KC13f_)pBm8zaro27Sj*qBD3}{4X}vk-8b9yN5beGQBlfc ziF;fHunZ9!+nrBPV(XbnTPG5byeVh0f za%WN;P*XK$`uV}Rdf*7JJlO5ueY+P(=+`AvM0n1zUTTx4fAT}FShMXooL#>8{NtmX zbbIPtc>=!I;0Wh33M8fJYx~iyxXar3m&bsbFlteX=%6az98XZav7S?d)+&rAW?QYK z4!9>O-vYQs3b|#;FcXK7k+Q;kO}oe6iyPCvl-}GYmSt4Ue=JU5(05dWuskuJUfW+k zc2r>%P3mxI23P3ku`0vG!QY;2%e3K1yt4~zhVLLh!it5x5X7nb5&7W(3;6-E#QD!* zu{)}%`7_-Nh@%^zjfL&?0~6F!zxq%4#nxY)XqrUC)Ni zo+01Q_rWfX1xzMLth$SP=b2Zedv>#L&lLOU8N_dhDg2>U*b%5!`F8#S6-1-SUaeandGs>npq?&1fWgYD zz(wmi&<;sZ$spM?3lw35E$*WQd?f)rUi-nH)cp|Yd9|+nn#~$@Qa%7ize>k~;)_xGF!mOAvoDtc)x)zz|*+Ha6=7aR1vw|T6)Of&^ zm_9B+1-FJo4u^stI_Zg@wIq|ii_TF3A%Qzxrd7N?udxIWe23%y79AX`}flHAwG@0^bFq=yq5y4E^1$zdyS=fW2atd z?7HK3ux%pTc)STbkq>M;Q|{Mtgh%H8nX4gCzF_aYOcr-8Drv4jOos#rwuq)CaeIe_ zE1POK`2ySUox-0S>c5wACS0$cW4S!)BYocL{DYYB#ZKLFafSWu4dKR`x+sMeAnGOZ zhmqL>pg7#GA805lQYWh*WnRVJ4Fev!xopcvIc2u*Il1jWTw7z=V0kX_6R$>+nk&Z_ z7g@&p!Ry@mXI);>Nlf8E9C(PP0Aupd;90jnrfLQPR@SZ2hQlS)Zw&*k?W5k=pDaGZ zfs01d^e68+MDhI+V1weJs1$HxdRg>i_HC5g`SP=e{yN0qIl&vQdk5NO17aJgZUh*d z-0sU@u4kWYH(AiYcVX)me9+zWyNmqopF+}w16TD8V5$H;v}0&QKRD$Dz_$Y$GV5pv z3Ru)+&xWhI&F1IF?*C!S7-fJZ@o-X}G=UO&f@^T&Ps!MC7|-R>68Gkcf#)ec7z_h! zRzJCH$lZga@m5%lxLi7iKGk&x@ExGZ#h*R^`)6WC!)8R3C^-u<+%y#`pk zV^49{crQ>zPpTT616R&$UmO2`?$gL))V7Z@bFv93rOCWy!i9JXyf4(|borsfN$VJRn@ zD|~Zhi7T0y^dY+F6DLpNEh^p0lF{f(n1|jhyl3{3ANiFyK{ntQe_M5+JN=_>HNQOT zQJAX^Ue@Af-@I&P9#3j%bk;@Zch4ADc$V+~(T_erHtbDSUMV0Ijfuv(POt96=zQ1Y z@q-!a3XKe4eA3hA7Uco<5>P*Zc9wDAZ65Uu*6jXV+We3rb6eF#=aU8@7?4a`Bozdz zk4GM>1eOY)+B2tT0Dx^ENybsr9!FVWI*93ZW%ufRO8~W@^S+ln7r9Me`@MLQJbW1D z66U#dM}{h&0M2F9FSJL7iM|$c)}N8cz0*zB$9rk}s8+XDwzjsm{GM>-%<}AG$_rH` z*QI26_ti!m>B?~^CLLIw7oCzD46FGy3}#J6rF}KvZBUrSSytKu3<7=J2BsE)HkygE z%Zke<5785Dgc*eLcc@jjDl;-Sb8%IGx+8_T$(f(n#Ju6uY8*)rT_k7uKc<9Vai z0Y#~3e=&t8q9i#5pBdjK?lZ)5_I!P%-nVVIQtsW`LB5pePMYa&X(mCntS&t9_&(g8 z?x**%zTe^*(;&!d|iw3z*!1rWYMAUvwHqrbnsh0ftZ z#!iH};q_mn^}K&u7b1YlY^1D1Q4%?l;W38wuC>GY|&6NBb{tb(*tt+?9DApJg%Uhf??|ps3;=L zYN3aPChiBm&lO@~F57`$-Ir83Av@|Nt^auH!V~5GBw5e&lADtrg!TL3$oVID3O{ce zfM^Fe#>l&ND#QQKyG-`0Z&I|fsH*qz9Q23Vml6|M;8n#XzL)Fwamk1JSAoF!U?(&0 z4B)y^iBG9m3SR0R47dhfV^mNcmozglZ#%x&V0>D&)?|8Y?`h{*GI5DGZ)})5RO&w* zQsP(Z1Yhc-2Z5UH>jY$H@(Kl8B5{i6c5gjNGGX}_tAw@0*f)iP04^c~Vqo8$p*b>1 zEFJ~6$>e%$g%k3m+BNwHk#$YB)~ z48>Y)an0RkzltyZg?|O?#iZkFVFeR;)wF8<$gl{#dM?fQ9YKkBsH3b8sIu&R-$XwGKW+?Omx(dLI9VsM2*zz;W0J`V1JMk5dvZ7)g!& zs<6yS6zjMJ!k<}tjCOs#ch8{8r_9`X(1$@_r~NF?;lc>+AoWkXTGu2nB4q(o{}sQ8 zsG?tOoA`0lAP-*TIHd+&I*u7hE=UJ(kJu_DRa*FYK3Hjqq z)_O%lEq2&nKvwem{#A9C?bI3XL-+v@X8oEhWwlaAiu(YfV({TKH$fANznqH9`l%!# zLiOC|d0BzAX4O3RC3RF>W=w5uMCAIKyl;HoNG4cumNFDmVV>EZ4G_CGke zr{Xlq5dJP?!v&bJ4_+N>z zTDd`^vC2x-1qxRCIN$Lj_v0wNDT;cX8mOX_iOTNDqY8*WdJFB+N*uZ@37Ge_u6~hG z)I~PZkn_vLKsBkOd#bX#uav7l%O}LkyDnAY-bU|{zA%@z>@o|WPVG{+902_5$@&GX za=qJ1{V8;s)~AKtXUJJXx9PQJr|9c|vV+li{}&hv0=}-(KD6p?Rl87##n7}$29#J8 zKY8Fmz@OK!o#aDqD{)xT+ZG>k3Q3Sqlq%Fb^mORKt>;6fZ7!!|W>3Z3GRTXP<-?E0 zSJ!$O)qg)VNyb{_13Xx_uwv&5lhvN1&B@+Of_CcQepGN9cOLg6KDe6uHyA7*Ae7E* zAOW}>?i-IBvk-MQIfII#qWA-7;>e3{O(lGmoF;RHAbHH zm3a=;UN9?A&+q!UU)&6D+g}(a2Y{Qp>$v6mR0&cmben#QvwI^UUA3-@Uv7J3jwCh) zE24*AC5Waaji&9(AlaP&cTaNlferv4>p$q_xW5(3NQXYP>I0Z_flP;|c2smsp0 z%RJR5RAg;Gbx6yfcQW^$$`~G5=r7NbfB1!Budt8DCrjWdm=%^EyRolaeI#tj|z9R!sG7eo%#S)aaX--&-IR!#0G z&)2Ne;!W9&$u>N|SEC~fvpW7hGGu0`TM#jP(J!L~6pc~jI4$D6*D0zhSc5SR85r3W z0lt=DFxg7z4tPrRIYLeyW&>4|{9_^uioRQKhoV%!-Jgr8C&cJ+tgdAkbnTADMkJi`or}IXFm!$4M1GNNvorxd zn&W+lu(-UuDHZ zLPAvY8!i~#_6B)(MV4(XDaDpkEQNW#kabDtzZMpyXC$y5mOL) zEjNwwO`QZ8}DGuJ}+A=Zo_wE{0^83h5Xd970%BCqBUAB~VtZ?hr z#pvJ%4(6Zf(L@=<2z(7mnV0*@F^s9{ENi$o6MNTj{cnePc$mq`(V#LB((Y60 zYcn@oBB$Y*Uj~a1i)NTaI3;j)*oK7hrX<5@#8-F{kgi*=IjyU#I9+&xS0JP`H>B;sAVy=0yTp<>~ z)R*nfPxX<@OPt6bwF~$HxU41%QivwaLra&RH_gJ6%kI?N3K)lXzI%5RzLY%MEP`%3 z8#1&n-*HLqPTy1jDp~kx36wCUqi6@da1RF4r|rJ@WO1O!J>NT=U3!rh{kjAVaBzV& z_mo47XNLLZmE(%o7OJdL6|=u_%AA96aN)awTBQR-EsjzArL@(=i?u<=D?g)puDe)g z4Mn-Rle}Zbq#}Kt+Eykqy$42ar=XiXQ{Dh1*+xbQCn#}1HzRn$hV2dO5RmtpntbiQ zv$de0AS}qP7#AgFaOLF)P#WVwT{6o<)jp2tS8^5TqRi@mwCgoZ{KA9{qdw1 zM&WF%Aa#Hwl~76_8mkKE@My}w?)yTbB^*vpuR;^b&=8OvIw(=}hECe8Qq=zFw)kio zL>3*pd^{t{u+z~`kl3wrb153s?6wL34}Q^UL`AYSI6bm=Hztk5QexyByRfjdT6?h4?mnt- zUiDK|sq@!oNKbc!V8^Ys*dnPVUWIY1!h-o$y9A1Na-jA42XP84hU>Z0V8LW7Z%DT0 zl63E#?(+9os=B!gc1#nfMYpg569Dr)Eo7HQPvz3AYvra9=v-xNYAgXwqkqIrqRAEY zP_6_RPntRZ?1!TEN_o=Jhraqppo{}5vcKu$AGd|&+|x5IvO)lKh1+Fk1$jA-=886# z4yDC82dYcH%wwbSNKJDYbE`_XZYA&U!|^0h((h51J+e+lk?WdN7X6M#w*;(lWbe{T z=Zo}J@mZ>*1}EGijXuZ##f;ZLvJUE(ku$vDQG|?%$C3DgD4-+_8KHx+qFBhi?;uUx z!U{v&WFN{Bc{Gx(7$ng68C&&xX@S=+Epb1xXJyx*%9P4V-y2-PhbGTd@4DW~$&|Or z#rzIkiCm`)CN|6B$eNUQR5u9h8;S-0&%C%`=xnrs5^PDcJ?nQYt>HM#(H z-?<5iyW4pYaq?#r*t>5bfr2R}67srrhMS1CmeabZWm+{GTokppfRu{mKH3G>^v`>v z1{rjt_UfX%{_(?)$g)fIz+l+Dv`I2P#W-CQuws30Vr<%CgMDv7G<1q>oB8vHz{rCR zwEmX)5?Q25yYuNo&M}n$RQ;w1plX5HQ9C4->!9d`a5exb^fQK=+0*VV8+V;(KG?bG zW1CPxGvnO8C_SV7wltcvS~dC((GpAm^<#5S#d6W4Y=Jxl+EN;Me0i{Zw*gPxE^Z)3gTGnbFExEZzQCn^Ls8s+BKd$owNcj)TzSi_b zC!rXjA4t!C*!MG#V)D@!UT;!qtC?D@`jTQSms6YW4-Dr&JQM0_WnbkC5pEtN%_Sn{KGBZ4iq1+>vej6<7k&McHop)V8`sAhyT^nI8VRJg(Q!G#xhm zWLuW-@dh-U+4jRhyBsC7{cwlCa6&J)9ZmuoPDf@tihWdthKpw2mMTc7&3x09xVYs7 zUk0$Se0keWrO*sabAQ6-QKgCWVV5_Bkf{$Qx0_}XNF@W75V38W22FQHg@Rfw)32Z=BZt=?fQDILfha0oZnzFTj;WZ5$2oTmYzBl5Y0?C zak*Q#Os8n0ZCefmX^xT&OQBJ|WEDM#$?`K}(ptOJ zR3#yMGLpcnbjXyD`_IocJ+C0eQ*GklFtVY|MWGLdRVx{L2EJXrRtaH-Ps2}v3E*Hq zKgIL}cvDUjroBmi@cvHu%8sO^{n0Bq-G#NFn#fa62*p7MqMO@P5FSvJlOpjFGi z3y|UGQ_m1Oqq*yZsy306yXtiS8ERGgTP6S}hCt9^exa2|sE7$G7-+>u{dERL0aSFA zw5#Pk_(2(t@OV8B8ul-`yPSx8^hk4;jH))`2d??gCngPh^ zuLc}!iZR;#l6$2;Y7kxhwSq!;v_1nC__UNL1FHR1e?1(&QS>$}Jn>f*fc_}}co3-d z@t$@t)PEcQNd%BJ`DNu}!XP$(8C<{y+%cvbTSs z%u;`6H}Jl5Pk#S?OnMxEbjN>mJ@xCa7gPU)MK6*_2^?;oo+Urvh?iw{#*hAqd$zW= z9-(i#a1-nt-P6N7XMD#kD!mH+{4xMCM%UwT5B>x)dJ+bXH{UbPGjElCzXJe^e=*Se zRxSbc#bJlYhkcO9KQYfrW4d1El28lYcy{i0*3=h?Anzv|uGlz1+Db}#1{5IO#9{J@ zI`x$vC|B07RV@XeN>)F12GTdE-`#bzX=IUn4?sj~l-Kyo4&590QNFm*tGbAEbC)^@ z5;AlHNW~WGz&tDLr0N$ z3+`pjj10`!2T-yH&6bJb?-HS)unpL0d0$i_%fuSBw<74!sb^wgTG6;`%O=k}iy z-D5odH10Q5V@DGv=96#Q<-L*$*%XWrXVPHI@09EDa{wuM7ghEi6L9>doTo}BzjMww zqRf{&*qgIye#P7$cVo zb;pxRd#B&7i^0wheYxws(zurY+Lt%Vd&f(Tb}-Ex_>8TqmJhb1X|&65)PWg%>duFC zOX8JxBflj!SsTn_*T|I93iGZ-^WNa+l>D;WO)0l$EL|CrD!ve3iw!1G%aR;J-xZv2 zjf#g4osxzAil(Q$l##jbcJ1NjIu$yC#84JBEjLf;^2Jajr5`s#VA*8~3tTQQYu literal 0 HcmV?d00001 diff --git a/library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt b/library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt new file mode 100644 index 000000000..144d9e6d1 --- /dev/null +++ b/library/src/test/java/com/telefonica/mistica/list/ListRowViewTest.kt @@ -0,0 +1,29 @@ +package com.telefonica.mistica.list + +import android.widget.FrameLayout +import androidx.test.espresso.Espresso +import androidx.test.espresso.matcher.ViewMatchers +import androidx.test.ext.junit.rules.activityScenarioRule +import com.telefonica.mistica.DummyActivity +import com.telefonica.mistica.R +import com.telefonica.mistica.testutils.ScreenshotsTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner + +@RunWith(RobolectricTestRunner::class) +internal class ListRowViewTest: ScreenshotsTest() { + @get:Rule + val rule = activityScenarioRule() + + @Test + fun `check ListRowView xml`() { + rule.scenario.onActivity { activity -> + val wrapper: FrameLayout = activity.findViewById(R.id.dummy_activity_wrapper) + activity.layoutInflater.inflate(R.layout.test_list_row_view, wrapper, true) + + compareScreenshot(Espresso.onView(ViewMatchers.withId(R.id.dummy_activity_wrapper))) + } + } +} \ No newline at end of file diff --git a/library/src/test/res/drawable/placeholder.xml b/library/src/test/res/drawable/placeholder.xml new file mode 100644 index 000000000..076893494 --- /dev/null +++ b/library/src/test/res/drawable/placeholder.xml @@ -0,0 +1,14 @@ + + + + diff --git a/library/src/test/res/layout/test_list_row_view.xml b/library/src/test/res/layout/test_list_row_view.xml new file mode 100644 index 000000000..a23d86c4a --- /dev/null +++ b/library/src/test/res/layout/test_list_row_view.xml @@ -0,0 +1,46 @@ + + + + + + + \ No newline at end of file From f56282c512d2c1ee887ecee21cbcfa340415fbf9 Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Tue, 19 Dec 2023 12:33:15 +0100 Subject: [PATCH 5/8] ANDROID-14098 add roborazzi tests for ListRowItem (compose) --- .../check_ListRowItem_with_32x32_asset.png | Bin 0 -> 13616 bytes .../check_ListRowItem_with_64x64_asset.png | Bin 0 -> 15047 bytes .../mistica/compose/list/ListRowItemKtTest.kt | 61 ++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 library/screenshots/check_ListRowItem_with_32x32_asset.png create mode 100644 library/screenshots/check_ListRowItem_with_64x64_asset.png create mode 100644 library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt diff --git a/library/screenshots/check_ListRowItem_with_32x32_asset.png b/library/screenshots/check_ListRowItem_with_32x32_asset.png new file mode 100644 index 0000000000000000000000000000000000000000..cf495f640ee9735bce8073de39ecf6d618ab27df GIT binary patch literal 13616 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
  • Y+ucaZSi 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 literal 0 HcmV?d00001 diff --git a/library/screenshots/check_ListRowItem_with_64x64_asset.png b/library/screenshots/check_ListRowItem_with_64x64_asset.png new file mode 100644 index 0000000000000000000000000000000000000000..acab689413c6a49f0ee5b21a2ec13bcb6414e57d GIT binary patch literal 15047 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 literal 0 HcmV?d00001 diff --git a/library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt b/library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt new file mode 100644 index 000000000..a702b665a --- /dev/null +++ b/library/src/test/java/com/telefonica/mistica/compose/list/ListRowItemKtTest.kt @@ -0,0 +1,61 @@ +package com.telefonica.mistica.compose.list + +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onRoot +import com.telefonica.mistica.compose.shape.Chevron +import com.telefonica.mistica.compose.tag.Tag +import com.telefonica.mistica.compose.theme.MisticaTheme +import com.telefonica.mistica.compose.theme.brand.MovistarBrand +import com.telefonica.mistica.list.model.ImageDimensions +import com.telefonica.mistica.testutils.ScreenshotsTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import com.telefonica.mistica.R + +@RunWith(RobolectricTestRunner::class) +internal class ListRowItemKtTest: ScreenshotsTest() { + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun `check ListRowItem with 64x64 asset`() { + `when ListRowItem with asset`(ImageDimensions(width = 64, height = 64)) + + `then screenshot is OK`() + } + + @Test + fun `check ListRowItem with 32x32 asset`() { + `when ListRowItem with asset`(ImageDimensions(width = 32, height = 32)) + + `then screenshot is OK`() + } + + @OptIn(ExperimentalMaterialApi::class) + private fun `when ListRowItem with asset`(dimensions: ImageDimensions) { + composeTestRule.setContent { + MisticaTheme(brand = MovistarBrand) { + ListRowItem( + listRowIcon = ListRowIcon.ImageAsset( + painter = painterResource(id = R.drawable.placeholder), + dimensions = ImageDimensions(width = dimensions.width, height = dimensions.height), + ), + headline = Tag("Promo"), + isBadgeVisible = true, + title = "Title", + subtitle = "Subtitle", + description = "Description", + trailing = { Chevron() }, + ) + } + } + } + + private fun `then screenshot is OK`() { + compareScreenshot(composeTestRule.onRoot()) + } +} From 537782aeea404412e2d0f938e5d0ad83b776fabf Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Tue, 19 Dec 2023 12:45:17 +0100 Subject: [PATCH 6/8] ANDROID-14098 update the compose readme --- .../src/main/java/com/telefonica/mistica/compose/list/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/src/main/java/com/telefonica/mistica/compose/list/README.md b/library/src/main/java/com/telefonica/mistica/compose/list/README.md index 451f974d7..90071cedb 100644 --- a/library/src/main/java/com/telefonica/mistica/compose/list/README.md +++ b/library/src/main/java/com/telefonica/mistica/compose/list/README.md @@ -49,6 +49,8 @@ There are 4 types of icons: - `SmallAsset`: it's a circle icon, it could be a `Drawable` resource or a external url with a `description` parameter inside. - `LargeAsset`: it's a custom image, it could be a `Drawable` resource or a external url with a `description` parameter inside. It's possible to define the `aspectRatio` of the image and the `contentScale` type +- `ImageAsset`: it's a custom image, it could be a `Drawable` resource or a external url with a `description` parameter inside. It's possible to define the + `dimensions` which is of type `ImageDimensions`. ![image](https://user-images.githubusercontent.com/944814/143047368-3494885c-6324-4b4b-bcc0-4177525208bf.png) From 1c1ee2bab38e8e79034b55a3e8c77d22bdce06aa Mon Sep 17 00:00:00 2001 From: Josep Rubio Date: Tue, 19 Dec 2023 16:32:10 +0100 Subject: [PATCH 7/8] ANDROID-14098 update listRowAssetHeight and listRowAssetWidth as dimension --- .../components/ListsCatalogFragment.kt | 5 ++- .../mistica/compose/list/ListRowIcon.kt | 8 ++-- .../telefonica/mistica/list/ListRowView.kt | 43 +++++++++++++------ .../src/main/res/values/attrs_components.xml | 8 ++-- library/src/main/res/values/dimens_lists.xml | 1 + .../test/res/layout/test_list_row_view.xml | 8 ++-- 6 files changed, 46 insertions(+), 27 deletions(-) diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt index 4ab3c1511..eef476668 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/classic/components/ListsCatalogFragment.kt @@ -26,6 +26,7 @@ import com.telefonica.mistica.tag.TagStyle import com.telefonica.mistica.tag.TagView import com.telefonica.mistica.tag.TagView.Companion.TYPE_INVERSE import com.telefonica.mistica.tag.TagView.Companion.TYPE_PROMO +import com.telefonica.mistica.util.convertDpToPx class ListsCatalogFragment : Fragment() { @@ -502,8 +503,8 @@ class ListsCatalogFragment : Fragment() { ) withDimensions?.let { - setAssetHeight(withDimensions.height) - setAssetWidth(withDimensions.width) + setAssetHeight(context.convertDpToPx(withDimensions.height).toFloat()) + setAssetWidth(context.convertDpToPx(withDimensions.width).toFloat()) } setAssetType(withAssetType) withUrlIcon?.let { diff --git a/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt b/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt index 1cc6d0452..c63ecc8a4 100644 --- a/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt +++ b/library/src/main/java/com/telefonica/mistica/compose/list/ListRowIcon.kt @@ -16,8 +16,10 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import com.telefonica.mistica.R import com.telefonica.mistica.compose.shape.Circle import com.telefonica.mistica.list.model.ImageDimensions @@ -48,7 +50,7 @@ sealed class ListRowIcon(val contentDescription: String?) { data class ImageAsset( val painter: Painter? = null, - val dimensions: ImageDimensions = ImageDimensions(width = 64, height = 64), + val dimensions: ImageDimensions? = null, val contentScale: ContentScale = ContentScale.Crop, private val description: String? = null, ) : ListRowIcon(description) @@ -138,8 +140,8 @@ sealed class ListRowIcon(val contentDescription: String?) { painter = painter, contentDescription = contentDescription, modifier = Modifier - .width(dimensions.width.dp) - .height(dimensions.height.dp) + .width(dimensions?.width?.dp ?: dimensionResource(id = R.dimen.asset_default_size)) + .height(dimensions?.height?.dp ?: dimensionResource(id = R.dimen.asset_default_size)) .clip(RoundedCornerShape(4.dp)), contentScale = contentScale, ) diff --git a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt index be32c6194..a26d9bc71 100644 --- a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt +++ b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt @@ -155,8 +155,8 @@ class ListRowView @JvmOverloads constructor( private var currentHeadlineLayoutRes: Int = HEADLINE_NONE private var currentActionLayoutRes: Int = ACTION_NONE private var assetType: Int = TYPE_SMALL_ICON - private var assetHeight: Int = ASSET_DEFAULT_SIZE - private var assetWidth: Int = ASSET_DEFAULT_SIZE + private var assetHeight: Float = UNDEFINED + private var assetWidth: Float = UNDEFINED init { LayoutInflater.from(context).inflate(R.layout.list_row_item, this, true) @@ -216,15 +216,15 @@ class ListRowView @JvmOverloads constructor( ) ) setAssetHeight( - styledAttrs.getInt( + styledAttrs.getDimension( R.styleable.ListRowView_listRowAssetHeight, - ASSET_DEFAULT_SIZE + UNDEFINED ) ) setAssetWidth( - styledAttrs.getInt( + styledAttrs.getDimension( R.styleable.ListRowView_listRowAssetWidth, - ASSET_DEFAULT_SIZE + UNDEFINED ) ) setAssetType( @@ -319,18 +319,25 @@ class ListRowView @JvmOverloads constructor( fun setAssetType(@AssetType type: Int, dimensions: ImageDimensions? = null) { assetType = type dimensions?.let { - setAssetHeight(it.height) - setAssetWidth(it.width) + setAssetHeight(context.convertDpToPx(it.height).toFloat()) + setAssetWidth(context.convertDpToPx(it.width).toFloat()) } configureAsset() } - fun setAssetHeight(height: Int) { - assetHeight = height + fun setAssetHeight(height: Float) { + assetHeight = if (height > 0) { + height + } else { + resources.getDimension(R.dimen.asset_default_size) + } } - fun setAssetWidth(width: Int) { - assetWidth = width + fun setAssetWidth(width: Float) { + assetWidth = if (width > 0) + width + else + resources.getDimension(R.dimen.asset_default_size) } private fun configureAsset() { @@ -352,7 +359,7 @@ class ListRowView @JvmOverloads constructor( TYPE_IMAGE_1_1 -> assetRoundedImageView.setSize(80, 80) TYPE_IMAGE_7_10 -> assetRoundedImageView.setSize(80, 116) TYPE_IMAGE_16_9 -> assetRoundedImageView.setSize(138, 80) - TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setSize(assetWidth, assetHeight) + TYPE_IMAGE_ROUNDED -> assetRoundedImageView.setSizePx(assetWidth, assetHeight) } recalculateAssetPosition() } @@ -583,6 +590,14 @@ class ListRowView @JvmOverloads constructor( } } + private fun ImageView.setSizePx(pxWidth: Float, pxHeight: Float) { + layoutParams.apply { + height = pxHeight.toInt() + width = pxWidth.toInt() + layoutParams = this + } + } + private fun View.isVisible(): Boolean = visibility == View.VISIBLE @@ -597,7 +612,7 @@ class ListRowView @JvmOverloads constructor( companion object { private const val BADGE_GONE = 0 - private const val ASSET_DEFAULT_SIZE = 64 + private const val UNDEFINED = -1f const val ACTION_NONE = -1 const val HEADLINE_NONE = -1 const val TYPE_IMAGE = 0 diff --git a/library/src/main/res/values/attrs_components.xml b/library/src/main/res/values/attrs_components.xml index 786dd6540..53366270e 100755 --- a/library/src/main/res/values/attrs_components.xml +++ b/library/src/main/res/values/attrs_components.xml @@ -71,11 +71,11 @@ - - + + - - + + diff --git a/library/src/main/res/values/dimens_lists.xml b/library/src/main/res/values/dimens_lists.xml index 9553f08bc..e2ea70652 100644 --- a/library/src/main/res/values/dimens_lists.xml +++ b/library/src/main/res/values/dimens_lists.xml @@ -1,4 +1,5 @@ 1dp + 64dp diff --git a/library/src/test/res/layout/test_list_row_view.xml b/library/src/test/res/layout/test_list_row_view.xml index a23d86c4a..b08e8ce09 100644 --- a/library/src/test/res/layout/test_list_row_view.xml +++ b/library/src/test/res/layout/test_list_row_view.xml @@ -17,8 +17,8 @@ app:listRowAssetType="image_rounded" app:listRowIsBoxed="true" app:listRowTitle="Image 32 x 32" - app:listRowAssetHeight="32" - app:listRowAssetWidth="32" /> + app:listRowAssetHeight="32dp" + app:listRowAssetWidth="32dp" /> + app:listRowAssetHeight="64dp" + app:listRowAssetWidth="64dp" /> Date: Tue, 19 Dec 2023 16:42:03 +0100 Subject: [PATCH 8/8] ANDROID-14098 add extra image to the xml test --- library/screenshots/check_ListRowView_xml.png | Bin 45185 -> 64867 bytes .../test/res/layout/test_list_row_view.xml | 11 +++++++++++ 2 files changed, 11 insertions(+) diff --git a/library/screenshots/check_ListRowView_xml.png b/library/screenshots/check_ListRowView_xml.png index 72945c9b85fb2d721d0961ecf3d11309941eb84d..3fc4084516b21f079e2484d0f02be6d5e3372aed 100644 GIT binary patch delta 43445 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

    ^G(0A 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 XcDJ_U?{5MPqS8<~tDL2H#rOXKp;FPG diff --git a/library/src/test/res/layout/test_list_row_view.xml b/library/src/test/res/layout/test_list_row_view.xml index b08e8ce09..9b1dfea6f 100644 --- a/library/src/test/res/layout/test_list_row_view.xml +++ b/library/src/test/res/layout/test_list_row_view.xml @@ -32,6 +32,17 @@ app:listRowTitle="Image 64 x 64" app:listRowAssetHeight="64dp" app:listRowAssetWidth="64dp" /> +