From 34f2003c4e23821cde8876af9d84c938712fad0f Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Tue, 15 Sep 2026 13:48:11 -0600 Subject: [PATCH] test: add JVM unit and composable integration tests using android-maps-robolectric --- gradle/libs.versions.toml | 2 + maps-compose/build.gradle.kts | 20 ++ maps-compose/src/debug/AndroidManifest.xml | 23 ++ .../compose/CameraPositionStateTest.kt | 150 +++++++++++++ .../maps/android/compose/GoogleMapTest.kt | 186 +++++++++++++++++ .../maps/android/compose/MapApplierTest.kt | 197 ++++++++++++++++++ .../shadows/1.0.0/shadows-1.0.0.aar | Bin 0 -> 50521 bytes .../shadows/1.0.0/shadows-1.0.0.module | 116 +++++++++++ .../shadows/1.0.0/shadows-1.0.0.pom | 41 ++++ settings.gradle.kts | 3 + 10 files changed, 738 insertions(+) create mode 100644 maps-compose/src/debug/AndroidManifest.xml create mode 100644 maps-compose/src/test/java/com/google/maps/android/compose/CameraPositionStateTest.kt create mode 100644 maps-compose/src/test/java/com/google/maps/android/compose/GoogleMapTest.kt create mode 100644 maps-compose/src/test/java/com/google/maps/android/compose/MapApplierTest.kt create mode 100644 repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.aar create mode 100644 repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.module create mode 100644 repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.pom diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1f519bb3..a035b424 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,6 +30,7 @@ materialIconsExtendedAndroid = "1.7.8" # Google Maps Platform mapsecrets = "2.0.1" mapsktx = "6.4.1" +mapsRobolectric = "1.0.0" # Testing androidCore = "1.7.0" @@ -74,6 +75,7 @@ material = { group = "com.google.android.material", name = "material", version.r maps-ktx-std = { module = "com.google.maps.android:maps-ktx", version.ref = "mapsktx" } maps-ktx-utils = { module = "com.google.maps.android:maps-utils-ktx", version.ref = "mapsktx" } maps-secrets-plugin = { module = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin", version.ref = "mapsecrets" } +maps-robolectric-shadows = { module = "com.google.android.maps.robolectric:shadows", version.ref = "mapsRobolectric" } # Testing androidx-test-compose-ui = { module = "androidx.compose.ui:ui-test-junit4" } diff --git a/maps-compose/build.gradle.kts b/maps-compose/build.gradle.kts index 329f934b..a19f5cd1 100644 --- a/maps-compose/build.gradle.kts +++ b/maps-compose/build.gradle.kts @@ -57,6 +57,12 @@ android { enableAndroidTestCoverage = true } } + + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } } kotlin { @@ -93,6 +99,14 @@ dependencies { api(libs.maps.ktx.std) testImplementation(libs.test.junit) + testImplementation(libs.robolectric) + testImplementation(libs.truth) + testImplementation(libs.kotlinx.coroutines.test) + testImplementation(libs.maps.robolectric.shadows) + testImplementation(libs.mockk) + testImplementation(libs.androidx.test.compose.ui) + testImplementation(libs.androidx.activity.compose) + testImplementation(libs.androidx.test.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.test.espresso) @@ -132,4 +146,10 @@ dokka { dokkaSourceSets.configureEach { } +} + +tasks.withType().configureEach { + javaLauncher.set(javaToolchains.launcherFor { + languageVersion.set(JavaLanguageVersion.of(21)) + }) } \ No newline at end of file diff --git a/maps-compose/src/debug/AndroidManifest.xml b/maps-compose/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..b106adac --- /dev/null +++ b/maps-compose/src/debug/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/maps-compose/src/test/java/com/google/maps/android/compose/CameraPositionStateTest.kt b/maps-compose/src/test/java/com/google/maps/android/compose/CameraPositionStateTest.kt new file mode 100644 index 00000000..9f5757fe --- /dev/null +++ b/maps-compose/src/test/java/com/google/maps/android/compose/CameraPositionStateTest.kt @@ -0,0 +1,150 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.maps.android.compose + +import android.app.Activity +import android.os.Bundle +import com.google.android.gms.maps.CameraUpdateFactory +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.MapView +import com.google.android.gms.maps.model.CameraPosition +import com.google.android.gms.maps.model.LatLng +import com.google.android.maps.robolectric.annotation.EnableMapsShadows +import com.google.android.maps.robolectric.shadows.ShadowGoogleMap +import com.google.android.maps.robolectric.truth.LatLngSubject +import com.google.common.truth.Truth.assertThat +import java.util.concurrent.atomic.AtomicReference +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.shadow.api.Shadow +import org.robolectric.shadows.ShadowLooper + +// [START maps_compose_camera_position_state_test] +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34]) +@EnableMapsShadows +internal class CameraPositionStateTest { + + private lateinit var googleMap: GoogleMap + private lateinit var shadowMap: ShadowGoogleMap + + private val sydney: LatLng = LatLng(-33.852, 151.211) + private val tokyo: LatLng = LatLng(35.6762, 139.6503) + + @Before + internal fun setUp(): Unit { + val activity = Robolectric.buildActivity(Activity::class.java).create().get() + val mapView = MapView(activity) + mapView.onCreate(Bundle()) + + val mapRef = AtomicReference() + mapView.getMapAsync { mapRef.set(it) } + ShadowLooper.idleMainLooper() + + googleMap = mapRef.get() + shadowMap = Shadow.extract(googleMap) as ShadowGoogleMap + } + + @Test + internal fun testInitialPosition_withoutMapBound(): Unit { + val state = CameraPositionState(position = CameraPosition.fromLatLngZoom(sydney, 10f)) + assertThat(state.position.target).isEqualTo(sydney) + assertThat(state.position.zoom).isEqualTo(10f) + assertThat(state.isMoving).isFalse() + assertThat(state.projection).isNull() + } + + @Test + internal fun testSetMap_syncsPositionFromStateToMap(): Unit { + val initialPosition = CameraPosition.fromLatLngZoom(sydney, 12f) + val state = CameraPositionState(position = initialPosition) + + state.setMap(googleMap) + + assertThat(googleMap.cameraPosition.target).isEqualTo(sydney) + assertThat(googleMap.cameraPosition.zoom).isEqualTo(12f) + assertThat(state.projection).isNotNull() + } + + private fun bindState(state: CameraPositionState) { + state.setMap(googleMap) + googleMap.setOnCameraMoveStartedListener { reason -> + state.cameraMoveStartedReason = CameraMoveStartedReason.fromInt(reason) + state.isMoving = true + } + googleMap.setOnCameraMoveListener { + state.rawPosition = googleMap.cameraPosition + } + googleMap.setOnCameraIdleListener { + state.isMoving = false + state.rawPosition = googleMap.cameraPosition + } + } + + @Test + internal fun testMove_instantaneouslyUpdatesCameraPosition(): Unit { + val state = CameraPositionState() + bindState(state) + + state.move(CameraUpdateFactory.newLatLngZoom(tokyo, 14f)) + + assertThat(googleMap.cameraPosition.target).isEqualTo(tokyo) + LatLngSubject.assertThat(state.position.target) + .isWithin(1.0) + .of(tokyo) + assertThat(state.position.zoom).isEqualTo(14f) + assertThat(state.isMoving).isFalse() + } + + @Test + internal fun testAnimate_updatesCameraPosition(): Unit = runTest { + val state = CameraPositionState() + bindState(state) + + state.animate(CameraUpdateFactory.newLatLngZoom(tokyo, 15f), durationMs = 1000) + + assertThat(googleMap.cameraPosition.target).isEqualTo(tokyo) + LatLngSubject.assertThat(state.position.target) + .isWithin(1.0) + .of(tokyo) + assertThat(state.position.zoom).isEqualTo(15f) + assertThat(state.isMoving).isFalse() + } + + @Test + internal fun testProjection_convertsCoordinates(): Unit { + val state = CameraPositionState() + state.setMap(googleMap) + + state.move(CameraUpdateFactory.newLatLngZoom(sydney, 10f)) + + val projection = state.projection + assertThat(projection).isNotNull() + val screenPoint = projection?.toScreenLocation(sydney) + assertThat(screenPoint).isNotNull() + val roundTripLatLng = projection?.fromScreenLocation(screenPoint!!) + LatLngSubject.assertThat(roundTripLatLng) + .isWithin(1.0) + .of(sydney) + } +} +// [END maps_compose_camera_position_state_test] diff --git a/maps-compose/src/test/java/com/google/maps/android/compose/GoogleMapTest.kt b/maps-compose/src/test/java/com/google/maps/android/compose/GoogleMapTest.kt new file mode 100644 index 00000000..edc28072 --- /dev/null +++ b/maps-compose/src/test/java/com/google/maps/android/compose/GoogleMapTest.kt @@ -0,0 +1,186 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.maps.android.compose + +import androidx.activity.ComponentActivity +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.CameraPosition +import com.google.android.gms.maps.model.LatLng +import com.google.android.maps.robolectric.annotation.EnableMapsShadows +import com.google.android.maps.robolectric.shadows.ShadowGoogleMap +import com.google.android.maps.robolectric.truth.LatLngSubject +import com.google.common.truth.Truth.assertThat +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.shadow.api.Shadow + +// [START maps_compose_google_map_composable_test] +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34]) +@EnableMapsShadows +@OptIn(MapsComposeExperimentalApi::class) +internal class GoogleMapTest { + + @get:Rule + internal val composeTestRule: androidx.compose.ui.test.junit4.AndroidComposeTestRule, ComponentActivity> = + createAndroidComposeRule() + + private val sydney: LatLng = LatLng(-33.852, 151.211) + + @Test + internal fun testGoogleMap_rendersWithMarkersAndCircles(): Unit { + lateinit var cameraState: CameraPositionState + var underlyingMap: GoogleMap? = null + + composeTestRule.setContent { + cameraState = rememberCameraPositionState { + position = CameraPosition.fromLatLngZoom(sydney, 11f) + } + GoogleMap( + cameraPositionState = cameraState, + modifier = Modifier.fillMaxSize() + ) { + MapEffect(Unit) { map -> + underlyingMap = map + } + Marker( + state = rememberMarkerState(position = sydney), + title = "Sydney Flagship" + ) + Circle( + center = sydney, + radius = 1500.0 + ) + } + } + + composeTestRule.waitForIdle() + + assertThat(underlyingMap).isNotNull() + val shadowMap = Shadow.extract(underlyingMap) as ShadowGoogleMap + + // Verify camera position + LatLngSubject.assertThat(cameraState.position.target) + .isWithin(1.0) + .of(sydney) + assertThat(cameraState.position.zoom).isEqualTo(11f) + + // Verify Marker rendered via MapApplier + assertThat(shadowMap.markers).hasSize(1) + val marker = shadowMap.markers.first() + assertThat(marker.title).isEqualTo("Sydney Flagship") + LatLngSubject.assertThat(marker.position) + .isWithin(1.0) + .of(sydney) + + // Verify Circle rendered via MapApplier + assertThat(shadowMap.circles).hasSize(1) + val circle = shadowMap.circles.first() + assertThat(circle.radius).isEqualTo(1500.0) + LatLngSubject.assertThat(circle.center) + .isWithin(1.0) + .of(sydney) + } + + @Test + internal fun testGoogleMap_markerClickUpdatesComposeState(): Unit { + var underlyingMap: GoogleMap? = null + var markerClicked by mutableStateOf(false) + + composeTestRule.setContent { + val cameraState = rememberCameraPositionState { + position = CameraPosition.fromLatLngZoom(sydney, 10f) + } + GoogleMap( + cameraPositionState = cameraState, + modifier = Modifier.fillMaxSize() + ) { + MapEffect(Unit) { map -> + underlyingMap = map + } + Marker( + state = rememberMarkerState(position = sydney), + title = "Clickable Marker", + onClick = { + markerClicked = true + true + } + ) + } + } + + composeTestRule.waitForIdle() + + assertThat(underlyingMap).isNotNull() + val shadowMap = Shadow.extract(underlyingMap) as ShadowGoogleMap + val marker = shadowMap.markers.first() + + // Simulate user clicking on marker + shadowMap.clickMarker(marker) + composeTestRule.waitForIdle() + + assertThat(markerClicked).isTrue() + } + + @Test + internal fun testGoogleMap_dynamicRecompositionAddsAndRemovesMarker(): Unit { + var underlyingMap: GoogleMap? = null + var showMarker by mutableStateOf(true) + + composeTestRule.setContent { + val cameraState = rememberCameraPositionState { + position = CameraPosition.fromLatLngZoom(sydney, 10f) + } + GoogleMap( + cameraPositionState = cameraState, + modifier = Modifier.fillMaxSize() + ) { + MapEffect(Unit) { map -> + underlyingMap = map + } + if (showMarker) { + Marker( + state = rememberMarkerState(position = sydney), + title = "Conditional Marker" + ) + } + } + } + + composeTestRule.waitForIdle() + assertThat(underlyingMap).isNotNull() + val shadowMap = Shadow.extract(underlyingMap) as ShadowGoogleMap + assertThat(shadowMap.markers).hasSize(1) + + // Mutate Compose state to remove marker + showMarker = false + composeTestRule.waitForIdle() + + // Assert that the marker was dynamically removed from the map + assertThat(shadowMap.markers).isEmpty() + } +} +// [END maps_compose_google_map_composable_test] diff --git a/maps-compose/src/test/java/com/google/maps/android/compose/MapApplierTest.kt b/maps-compose/src/test/java/com/google/maps/android/compose/MapApplierTest.kt new file mode 100644 index 00000000..6fc97cc8 --- /dev/null +++ b/maps-compose/src/test/java/com/google/maps/android/compose/MapApplierTest.kt @@ -0,0 +1,197 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.maps.android.compose + +import android.app.Activity +import android.os.Bundle +import androidx.compose.runtime.CompositionContext +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.MapView +import com.google.android.gms.maps.model.CircleOptions +import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.MarkerOptions +import com.google.android.maps.robolectric.annotation.EnableMapsShadows +import com.google.android.maps.robolectric.shadows.ShadowGoogleMap +import com.google.android.maps.robolectric.truth.LatLngSubject +import com.google.common.truth.Truth.assertThat +import io.mockk.mockk +import java.util.concurrent.atomic.AtomicReference +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.shadow.api.Shadow +import org.robolectric.shadows.ShadowLooper + +// [START maps_compose_map_applier_test] +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34]) +@EnableMapsShadows +internal class MapApplierTest { + + private lateinit var mapView: MapView + private lateinit var googleMap: GoogleMap + private lateinit var shadowMap: ShadowGoogleMap + private lateinit var applier: MapApplier + + private val sydney: LatLng = LatLng(-33.852, 151.211) + private val perth: LatLng = LatLng(-31.952, 115.857) + + @Before + internal fun setUp(): Unit { + val activity = Robolectric.buildActivity(Activity::class.java).create().get() + mapView = MapView(activity) + mapView.onCreate(Bundle()) + + val mapRef = AtomicReference() + mapView.getMapAsync { mapRef.set(it) } + ShadowLooper.idleMainLooper() + + googleMap = mapRef.get() + shadowMap = Shadow.extract(googleMap) as ShadowGoogleMap + applier = MapApplier(googleMap, mapView, MapClickListeners()) + } + + private fun createMarkerNode( + markerState: MarkerState, + onMarkerClick: (com.google.android.gms.maps.model.Marker) -> Boolean = { false }, + position: LatLng = sydney + ): MarkerNode { + val marker = googleMap.addMarker(MarkerOptions().position(position).title("Test Marker"))!! + val dummyContext: CompositionContext = mockk(relaxed = true) + return MarkerNode( + compositionContext = dummyContext, + marker = marker, + markerState = markerState, + onMarkerClick = onMarkerClick, + onInfoWindowClick = {}, + onInfoWindowClose = {}, + onInfoWindowLongClick = {}, + infoWindow = null, + infoContent = null, + ) + } + + @Test + internal fun testInsertMarkerNode_attachesAndSyncsMarkerState(): Unit { + val markerState = MarkerState(sydney) + val node = createMarkerNode(markerState) + + applier.insertBottomUp(0, node) + + assertThat(markerState.marker).isSameInstanceAs(node.marker) + assertThat(shadowMap.markers).contains(node.marker) + } + + @Test + internal fun testRemoveMarkerNode_clearsMarkerStateAndRemovesFromMap(): Unit { + val markerState = MarkerState(sydney) + val node = createMarkerNode(markerState) + + applier.insertBottomUp(0, node) + assertThat(shadowMap.markers).hasSize(1) + + applier.remove(0, 1) + + assertThat(markerState.marker).isNull() + assertThat(shadowMap.markers).isEmpty() + } + + @Test + internal fun testMarkerClick_dispatchesToNodeCallback(): Unit { + val markerState = MarkerState(sydney) + var clickCount = 0 + val node = createMarkerNode( + markerState = markerState, + onMarkerClick = { + clickCount++ + true + } + ) + + applier.insertBottomUp(0, node) + + // Simulate marker click via shadow + shadowMap.clickMarker(node.marker) + + assertThat(clickCount).isEqualTo(1) + } + + @Test + internal fun testMarkerDrag_updatesMarkerStatePosition(): Unit { + val markerState = MarkerState(sydney) + val node = createMarkerNode(markerState) + node.marker.isDraggable = true + + applier.insertBottomUp(0, node) + + // Drag marker to Perth via shadow + shadowMap.dragMarkerStart(node.marker) + assertThat(markerState.isDragging).isTrue() + + shadowMap.dragMarker(node.marker, perth) + LatLngSubject.assertThat(markerState.position).isWithin(1.0).of(perth) + + shadowMap.dragMarkerEnd(node.marker, perth) + assertThat(markerState.isDragging).isFalse() + LatLngSubject.assertThat(markerState.position).isWithin(1.0).of(perth) + } + + @Test + internal fun testCircleNode_clickAndRemoval(): Unit { + val circle = googleMap.addCircle(CircleOptions().center(sydney).radius(500.0).clickable(true)) + var circleClicked = false + val circleNode = CircleNode( + circle = circle, + onCircleClick = { circleClicked = true } + ) + + applier.insertBottomUp(0, circleNode) + assertThat(shadowMap.circles).contains(circle) + + // Simulate click via shadow + shadowMap.clickCircle(circle) + assertThat(circleClicked).isTrue() + + // Remove node + applier.remove(0, 1) + assertThat(shadowMap.circles).isEmpty() + } + + @Test + internal fun testOnClear_removesAllDecorations(): Unit { + val markerState = MarkerState(sydney) + val markerNode = createMarkerNode(markerState) + val circle = googleMap.addCircle(CircleOptions().center(sydney).radius(500.0)) + val circleNode = CircleNode(circle, onCircleClick = {}) + + applier.insertBottomUp(0, markerNode) + applier.insertBottomUp(1, circleNode) + + assertThat(shadowMap.markers).hasSize(1) + assertThat(shadowMap.circles).hasSize(1) + + applier.clear() + + assertThat(shadowMap.markers).isEmpty() + assertThat(shadowMap.circles).isEmpty() + assertThat(markerState.marker).isNull() + } +} +// [END maps_compose_map_applier_test] diff --git a/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.aar b/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.aar new file mode 100644 index 0000000000000000000000000000000000000000..637d97107ef5d43df16dc29c5ff5814e625c8219 GIT binary patch literal 50521 zcmV)7K*zsOO9KQH000OG0000%0000000IC20000000jU508%b=cyt2*P)h>@6aWAS z2mk;8K>(#%9igBA007|t000vJ002R5WO8q5WKCgiX=Y_}bS`*pY(0)a4uUWcMfaSd znLVu<7lsr#go*pw4yA#1NT;aBml*IbU*1c;?muxBFU%Y$wQ!av5ST2vkbDbk8R{GK zU8SQ*VL&co(-Su)xlF;eFqX13O0gX=8kRekmZCDtq%yMF8B}81V(er*wy+t}6Zskc zQ8Ww7Oi!B8mK?0)(KvcDh_3p@dS&FA-6Zy;i6PzH^f>Nct{~JVYjynXzEDd81QY-O z2nYZG06_rwy>IVG!Tnq4+RNz5k?tBNhan0BkX^fO&#t31p@vb2unvtOFQ#_0Yv|2Ai%-Q#nIaA zUpV0W|2xH5vo4&drqo2I9R z&Vn)awGKDp1LQMA!Gx%1I3Vl+DP4{a<83h?-KSMJ#9MdZUAIRq_;ai^U%wXud^w45 z;kQm>HI=Y@r1YhF6Y5v^^mVy=+$^63xdMa(6i>3xtuJ2}jzpHNG~8`_h`J=TT9_ov zQh#6v#e0>w?OA{s-X5XRM%R05IEKnFhYxb~Oc)eE=j&DU6xL9nA&_sc6NbKCGDiu9 z@4t7&`(a+B){IL-ab}yJ*t+zS;!^pXbXDZxPNdzr(6*-nxVOp6hvTTplL>$I)pMD( zvZ1oZUj7NY?CEn0=+idC8BfnxEY$~O0od!~p83WWc)d#byXzVbae#K8j{0Auo_vxi zN7b?pD8E%=FUsvXSZKa~lMKjSE!jWvNs~%OQTjqnIwD)JNRei1tYJQ1_&Iui8}`K2 z>ygJFo25W$BH%?py=~>o%j=G3d2VeUO8k6ou92!z0>(r!V1h6Z94*~QBL+~<3m^gH ze?iN)<1O4GNoK;Umvq$cv`&%Xhp5^uoo|RkOyONES7f1B3C_r{b)l-mD_HwEv_DWl z6_@y}Q|8V-UljA{?Yt0EsJF>#uQ)mGd$@M5z4?!3tRyd3Y_II(FHB)C8N6k%mRg2M zgad`}e<#Os6FMs5m9NOp5gx9Q0-%{2-0|n!_j@!rvx_QxQaC%7WlM8OsgDryW$as_ z`g%OW+jJLaF!a`J{9os;wYS-ULqwQoGp#_HRIGn__7>p;Cj_-)^!=MB$ zKvIN-rF{+rI095|Iw$$Pjse)96fiNcatKBETvTp)W(FrkWAVM70Z9D|V<}iZ3n1qc z+UO;7(9{Vqjf29aBOBOCPMn|Mx^mQ=V`@7eVpgZeAlI;P=qZZMcp?jx{B929W@hFG+$T zqa4RB*mxR0^}=G`jvt!d9g4yi1tWD9){OVVDDp9JJ_ug==&Jg2sB z$ThQQoc()|0!f^c)`bUF_0|wlLU1z0s|KD2$&F=IO2mkcvB_B<)bu7{Bnk#CNg?E8 zp5>OV0cYzsYl=_C;Le#NGEPnHr3fJs9g&^-sZgA|J`L1LJrEd%$9*=uB9$DiRP;rB zj4Ni3cg{s`V6$dvCE2V`%?e+^KqU%qa{Dk`RN4tT1!5JQ1#5*LK&P-&YSjcp`G(Dy z(B3)raWqs6^j|&HDDTyO@XF}5Ytb)oysLA6ns2RcyCz`&I@UOF+|XF9&-HhymTVZ4 zua_m03ZoHZu8|UzT7Pgd{PXljT`1rBZcjrn3KuWw=Ry0u8wU3EFioK>{p1)KZlq|o zpT+~yy*EqzbBPQm(s5S0HGiV)!gUP8RO=k;EQZIparaiM`8y|+^2GpUkJ$P*hRo^S z8P6r&gg(Hf+(f6G6*ts1s$n5sqZ2BkDWQa9TyD71vpzjdD`@#WrftC&t(p*ZjT!e< zh8I5a$u@n2TZ3RI=7DPD6lrTOUQt{eN=^qSgjz>DzSt559vl~D4;mq))}WRZ-PRxQ ze`eBeWvz=Ha1fBTzui*wzr-YYfSbI7rJB2m&0n*Gmz$j1KZ>uWp4z4)#-}D{G6Mt- z^_;P8Hr2PrJS@~~ELAnxNlIsD5>QzxU`hjrMI(cG3#-`f9r7RWKP%;ePqgM6S&CE% zA1YZy1~7eY;d_IJy}6FFSM9zIPyN@Qf1n5W^Vt|Qx64#Kx4Z0d%hc}m4cW4f4 zfQNoZ`sU5c{0%*-g?IZs)%q`GYOS&e?euk8T=5KF18kk-R^^9(%4Q9+9lJg)rrKoW z3?Gm?wN(pQ))w%9wwo}J}4Y53fF$h|aZ=5R)`yWDfMx5NX-bOTc|p}Ln`4m+HYIxu7EYA*1TBh&NGIe5ok+Tw zy?UPQyZ=31b+31+3>SrhEH#IWg2ergN>vYjfy^|^M|*3J3Tb;qMP$oT9S>Uu1$=AK zA1w`^Ph2`PRLkPLGVtI69Rvrm$aUdfRnV&o6Yc#|Ws+^CXln(0 zC$(^Z(bJW7K0<8#T}5J;cFGzjV7PVeU#dUZ{peKb9j4)yI!z@stX4}luu`epZ8m(% z#=v=?sN418XLB^yd5(k8A8vY<*nV|s?P^^jar9nrr?;Erh-y>V@HtFX>z?zIWJV^e zo%0YqlaS)B^nl7Mrz8zv$;5;v?6a%L^+%%N2_>UqO^$n#Ii;u~4b)92MW*BM810CGJD!R#|6 zK_LLNijfeC#=|DRL53`f{uK&uZjA76P&%y1`k8oNp{ zo|^$B6CC6E8s4bd)YFjGjpeI#*XP4Ov)}W-;EXYsF-(-zhdC&ihn#FOgpRvLF3UcD z^x5JG0>>Ev@Za-9CXQ^2rA^c&WPv#B;mP|gk7bAKjB39c?7jIY#fCQPu-!LhkQ?!GJgdiw<1f4IIzY4 zwv(BbQ;mm0ztqm7xq=Mn#2BpIeEB%unip<;8X~TmIZzT^6VB!pvfp#aNgiK#9}lB6 z^dsBo?OTRKS8g?eW?d#RXQ>m`BAo?$E-(k796X|qsb+4l*e27+qf>(E9yJkFhDi3O z4&ra;Akv)!!x+*WUyOYnP3NTjpT>i-1^^Cu-cN#5ieuceV*JNAtD0%K`krt|j7ZvR zH~H?thE)73(SUJ`V_K@l;lzBST*|s$0$VhVjEX4)w$2EqnBLKWzO>I(j-EJt1ex8_ zS7!NN;p8!99tsYK3EPj8)w3{#3ih7Xe>N->yowyM+U+-QJDCXd+G<$2*?YcpcB!xc z^c5}fGQ0bLb_1?$C7!~GAP)qGHt?y=P#BcR*z?@?^M z9(2vho2IjjO~NTV^aA11lM?+jL+le1`o&&V_pUm?4m#R-C}9Vg^}ABRTNeLhve(br zI+>}g5??Iklg{WIW3Px7)a2{r*oi6jM7O~t`D6i9KgQ&;6f+8R_}PH~m@S8}!2yYy zd9`yMW5Vksv$cWC!ad?bK|+`n@({TWbg252b~Aw{No7#kXup*Hy4q7P(&VruEZz$WonR3Lrv4CCx{TpSNZ>fb zYuq82APHIWf^5M8+$6>r4U)9jD}Gn>FQ~VeC2VpPSjGOZH_}7I;gCr)^nQ}IV(Fsg zybd#MfdM^V@YeSWX~t&2#^Jb|efYSb%xU{O+p$OfzUuLvpbJ`oxJBc0-6v}PcVaD8 zt%F^^ulm_qg0ZRDYFUS=Quh-g}ZG*IbWdv zTumg7NG5FlDjIog5D=yRE7e32VEXs${SS$w?d^p=hWQo8*xb|;NFM<_jsz7m3n9-& zBhiFO3PYf4QeZTdg^^iZ*f8wb(D2X-++^3vp|W4-E`8okHMEvNE>5N@#kOC3=(~RF zTX@?9Q&|ld8P_gLhgGt;bg~##Zqnt= zb;=-WO4V0v1%vq^5zJu9lFrPKw~DfexoM%zTFHCBW=)5?Y+{A%PEBvoDV9VMgmp~ zFv3>j)^RebTE^$-7f7&-^JNneIX}AgRw))XbVCe-N0*vuL_}C%u1t0iKK?C7p>Ty=vq>NSTPL={f3L*7zJ1?l_|`Xq3=@mOL?>(_4wr{Sud=43Q6XGFP0wglh0o?kV2 z13ed0%bFiwjgxJ^>^z368Ie2!Q545rT58YaPPT38H_wTyWy%LM(M=t%2rpK!@_S~a zA1NS%7&QxZe9uFO`Xasx90KP?|FN-1O&)9uD=e9(eAmTRp}j~j5I-mEdG~!6`q%vV zq(^H^uTcFdZvI*K+=)~wsdibNBVGN~K?n=3FG_jSP)vGKA)VGVGQ4*F3k-H+M$Fon zfsoT})NE=au?$qdX;%nBMi|z&C?_Vw37k<-I$3Ku4FdNaL#R@Z$ZC;#U}-?CvP}ZK zhY?6IHw{33l$5`_Mx(^SPO9`^zAB2}#o~$fNj+9v(`<3eLE4FWYoOOX)R$gmQ!jwP z-0Btt$J+pT&w^hnn9P*GI{YzB&y_+6q{(KByH2MpiIUqPBv+XDT;taT54Lg# zkTT?#D<(P`mASk~v0oKSf(TV5d6oTfZHp|2jX~7U7HjU3th0W?Z;GT7i*uA_<~Yo_ zD=U$C?P4$!~+-sr>5ra05*&(6J?!B?DTwyfiH*dkgU3NtI3v|W)iee{}2Gqiv@bF zjo*)xUWlMLg)y}rR7adfF$C)WoG3%8j+7%Lh(|n)`p;8G=K^odTwW6Eg~oWMbDKRW zh=}hVV`u|rA_?P>UQITm(TlhU2%_Fh$VXs5CPKu2N3)Kh0ViH6m^_eww>ZrhyE*z< zv7g1{(S5_iRh%z^=Du{bomeQbs1SR-=&*^SJKQ24q{yp&U>RB9zGU&ANtMLy?$5qH zKi5Q!{^(fM+O*}(ja`)eW90;B@R~esUdO#Q`-xJQM!cM`fSQDIk7%qXa4ONZwo_<6 ztF}j$+%BN5m7l`YYa>v$ju-aL2B(a?iayNoKKL+Kl>mvliO1k*WV?3VjjNDTab~~U z`3i*HF9}@P-zlesL4z?IDlQ&6MlC)$pGe(>?3}`{tcTpk-rzX$nEnN6=lpDeFtd6N zc3~O~txtO)hwh@-etbDvc4|JED?@`Zj$I|Sg_IZ0xAkW&`zNeVr@jtuyMn-Vg+rR{ zYTAXD!bDGKXM2-z>!5@VX>4I}8(9@hG>43$ zRdrD^zn)!KTPSfl$HYAC6#qU}ny{?buKVnt7|j^^PLQs2LshWNt)asn1hwz=bCvXyl!HuE_K@;^nHzPr~xCJ%k}1d2Fm@2d!8@7p+e&?c?S$ z%8bs`zs5Q!kJ`mxzniXk$vnxv@DZMU6HG%}$%}QzNP{}-25mW9_Cn<7Tt!f$CNJslqE8brl8o)Py{nsq>&@Fr7iT)uB`$1HslreWr85;ZL z7@2=fu9&$KyQ3grIY@-2wxcvF5!?w${Gubu;IwM9-MXxo$AH8|Ul+Zm(tZ znXfeBoRm6*{lnFOgPl0W_QOszPF-R3sKfB7qp_{G0f*mNtEV@R5{xirvrCK7z9hxq9bedn2HAGzz;XX=j( zNkL<>K&(N;tcmB%ADxH#f{_6RG)RQ}%A1oQw1m20AO?>5_$P(;a+-jGW4>yR&o|@8 z+!xEFmwYhQW^Q>r#bR17(l`n&q6B!_z_`;?)pdw81lxco9xErG%sgwNtkLJg8&cdv;1#sKR zKyBs)z~1Ds_ajbwAsAs&ObeCMTZqq~r!TO7mUW(M z$P-R~hs55$(oX!pCF{fh_U0}C4JR{z+yCAIO;b_BkU|;zavd_@*1UmGL1PaTxmGm8 z6hUJV=NZvIqGKT~Tx#EUur;vtjM&&_OYg~_J%6fb5@BadA2=c(B%&j&a9;BHB!`>NhUqCd!=-$2TzwOEreg&XFucr@m`j|Q* z5Cdw0t3sT)!SoC;JNr}vPC8kyDCtf*llY~##V@N9f62_bFRnI~2PkeE*z2+0p}j7O zC|M9eBAc&7`3G5yp-m<%@avcO7@l~vTvM^hb7u}i1|=D#MMK!+pBUNlUxa=ZCiF&vrYXodt$GQ!?T5OZ0#%f?(?HogQ&?M^o>d+ zpGT>tLf82ao9nE=?>_$f=iO@|kevhbK&WiN9uzq%maPr!h+xYi>DS*AeX(-kD|{Li zcLHL~o16EIKW|7^c$8Wd*(M~CaB9)=W3rAUmE0uBicK8K$>ycf6RQ15T&#yPbjV~o zDGyY0QsTG-!NMP#Vuntye8{EsRg1(AZ&Ac1Z|* zI)~6{)FoYfTTB~v4hGC&x*|m?F;Y;Q7qQp#0}FZ4LDsF?2etRh(i*el!NIle@AoYg10epgpA61QTtn>52oK>wCYBYFdw_ z?{{2fIo0+0)W#?4vQsfvo8+j+$WJ7FA>L5YorJ}akyr_~hFX^~>*TYWYah|PN7Yw* ztS8;{*VWa-<^Ay4GHh1SPknl6U6)nOw3>hB42x1X%C7XmM>!FT`Qd-}EupW3naBWh!`<9?86d%bQy^14B-)7FtUs0SWt9XBh(YEEa1STP<1NwCN;BtjIL=PvcY|mly(t;zc5Bwa$imNRw#()iZ%|s2htD9G8I_Mi=f5*p{h)8z3$N+l6qV6CVB_`f&bRM%nW^7={Z9A+2Jxt z;L<=DOuMT~8Oc_-pF2PuCkC=J#U4I;~6|~rv zB&O$S0#@Z0U3zC}Mx09OZl{jyY0WX*mX#I0(%3I)yVo6|J@uU2>BHn`pO(OlWo&36 zbT?Iru1ZQAA!DeTMBEkWR}UxLbV$wJ4Als%XBOn! zIa2sE8A_!|FSix(0T#gyZf(mJ;uvr)oYl7vmP<**tvfTSwe0Lg&1L4>{Oh?|t@`=z zEmODIcwY#)QPg^J1-=ebBg~?;ulNFrPssF}fuBFf$6`VTf+wpTfTkebqC+2)Cc}O?Rn^ zm`JvwpB5yAc5!xw_g@tVe1mq3CZ#`0z`3Ozd%1;Yf%%oxFs46Z12O~n`G-ue6(qxF zTpr9n7o+pvxSV+fnxf{hGc$<@cLrXQ7#~$atzs9sAp*v>q@p`FO#5gs%uaEO3h3xG zVPr!C3GOIrAsxI91_M9@0^Lt0+=sdz0X1^kksm}eJqDHx7xJ4xO>+S|4 z8glM}#QN?530{Em5)`haU&1wHwsp&qo#u_jLE7AZ9Kbux;`C7~g|D0kn#!Y(oOd_f z#U1A}q56R%%xWSnWA{wdc#P=ZuDw7>M+$M4y{CB74i8rFy!+T(dM3ipZI_89ZU zL)TR?{G?R!PWVouJY#uIGat|@+XaB4^Coj&7cP2NOhO$b_|_=Jzv0Z@1MsqIViH&t(?8cY3+No!;od9jhC8 zB`|{EwisyXkETV=F)E62_d~=}sBiJ9>}b0<8OsRre7n_9&KEH6GeCR^ziBOh!*_J& zstu6)+NFIV67t$~a~@3~a>AcRp&=enI(f(b=U!Fpo7i{#w^tRQgMbMB_j;AJi>ci| z=9oO~b60c?jIV7f1*@(j6&hVS+1fdF$b)7Q2?)KIpqqxEV2vdErm{_kCV;0J=q|Ef z|LzNxrMQ&jU}4xGu2lcapwNUf!EEok-9ipxWx#m;w(B*|Z_gQl1ish%0{VWiwNN%x zc2X2cWf3+}1iA7hTn>kdS3AGm;nZ{w98tZ;o+~?381c7J-3Ay&fH+2rC}1s@)AhE- z+5(ZW?wBpT((-_()p(52b%`9y8AXkI)jH6Zq0X>ectmab%WcW@=!n)nex2zqV9q#cXExHb<)#T2WbWipe zQV)&&+^qRnFID&C*P2A5(jV}vNj;?&4@C+M;XH3XkX*)ygFfn9v80R4GHh};Y515A zH))!ijX$jwYMeiHA1k4&_|})J2F*5bP;G1C~iMy?LWbxTA}T(TTP_AhI9f zIB#fLOArMFYE^T&x$5>TwnU+SRp^92mH35=K5#;|A0mZQ39x-vibjgcMKnbRaU;*HHvW~CyFt;FOqY`y#th`k_NOh|l>%)(1@MDenJVKolf=Ll(<+_$& zH|Jf37uehkyIcSHXHDP96)=WIS(a;#NhaylT3ogg8nk%BzUB(>#rU3q*C z(yIKW1RZ&+igUbkGTI3om-XTkl8YT6DiKtDIO};OV%V<|&&i9ENvdCBYKdv zJ;y&}RB;X8s%y(%@EY`wEBvw{Rs01Po=!e;kP@+8hoh^k+u<=uBDK9D18&w)Qu`BD zGUAmgj5AIhkM>e7Ra9*RLDhM2Wu%2e_NNGp~RG?dK*-S_`VHCMv5LPpzcRmw5x_D5TDn~2lJ9dV;jtC~~9I$tHODBJ-LLBXxtwwPK0 znwg-m9%WuClJoX0^@kf1TIv;7@Isj698t!CyM%IAe&U77ZQVls^3kHd!W`naQohI^ zZqpc^&@HEpsI`LlcJ@b>XdCRQg&Z8H(+7}7BBjfM$ zs}hYJD!~>ms%WKLv#n5|T|9RQ2> z1_39VEY!Yc;583~P2SajCQ(Ag{QeOeXvfaCLOd)`cs%Nkl)ih zkgX4-+dMD=AI$G3v2i=X4Io)a71}rfdEk(HAN;0_m@*I@5j21JkORcm!Z`(jS?(^y z9i$E&>-gLsOi6WU9K`pCjKvRx2-7z|8ACA6Qa|jiI;J!O98n!qK+>m%SGWN4@`PuW z?01D>h>u~@OR!@s&?VLqZ}cVg`~SKkrhcV96Lx%zx{dLgfHuy_EuCeDcwsfXom$|; z-J?zZ-iRc;vtS-r{|D?M1GH}gWzY5#b2fTJqT6y0MZ@H@fgY+mOAjW1ZQ@`1gs z9oIct7?jX`6)wiLws(Yo!sc6EjB&1KnkUD1k>AUXYMZz$$8#Ldyns?X1?j{Kz7rv_ z)zvXSnBKtYc{*c%IpQchExrZu5Y%C~@?x4Hj;j5_+TYWG0RIj4n_~0##1mxn`YgLC6Wpe) zRo<8HBP}6@XUU>#J9n+K(8Qx51X7y>i43+!`q z>0n11R)G|0I9(8 z{#wXhM)}t5rqAtIy|WRI3gN1}Fzz3?sI8X9cXTwSGa{wY-s-qEWACZms7heZ{@0l{ zGA9z5p{H14ee)N*9g_`$V6?aMG#$PZl@H!{lV%yZk)bAD+nJS(78!*NjBmk!LPDy8 zJ&G$>_hDaD39QW$EcZ^hxbL_OnNiF=*%EDir}HRJ61<5YVs%~&s)dm)7z?06Nz&!> zM8rv}`MFY~d;XaaT-0I+BZbMo3#L2EDC8O`O|?JzQS$Pu1Mv*9$tIN7d7ek+^b9+~>Dv}IN;=jdm_S!A|LiU<&n*7p z$FizVYL)1YQrE@b9n=-t^J~tuZAq^{>lh%brN@Pn(}t?iXn8$1!-n-xA-9C&`ewbG zq{S?LagMW%Ew?(^^mXFW5v9jj0Hkx!Yb3bZ`*znMdr5@D0wz) zm2J|N9Pl66SKI!FUgIzO0wDkA>|_1MW<%<>BDx4p`0i=?H%9o{(jPRR*!EMiWJF%d zOX5W)s&mR>2m5Y(Z6TYuP0b@-#~NP5R4B#JhJo1T?;aa#Rs)Gk3Lbs0{yUz>o9o0v z{r=E5AkWRxgU(4$%s~i1pz!m1{7Rnki+(FP<7PktF`m!@BVja2yxCsPH^=kmQOAv! zt(l$uh$F;s`K`3F9>pJ{I3+#@HVa}{JW$t>5l4X$fEeiO84yn&3lQQgYdRZG_a17m zH{gm>C!{Y?84EB`X~41cU>_ZK(Iz}>)X{htxto>w)3_pE3=~@*L*Qr8url|a)E08* z*$a~%bPMjrYneK0!0?`W)tg%8m;`nPKf@lYm_NeQFSTkRNgOPCOT5~vZf!G~c!aCR zw1Zk@X1}V~wA4nVPvUUg1-&kX&pX7*VTb-zwE6R(LlZHz<7aP*l&1!^JU>%}gt2vb z?_x!rEmUW%cB9+KXK@CyV2hllVy~?P>9MFk(WI+OA2cYlW@H9`;G5G4*l@pB1uNrM z@`4w|Y@Esn)e9igYnx}X1DnmfTy3sCXK$6R;Lsgy#aMUXOT}9-T}(rrof813`b`L~ z<#2~k1|48Hbpx~*$?%BEC2yAGAFd}{sYRYxTKju=%Wai;W!hDY1%b<&ihC=XO3WH> z!S9xQZ@g)^CPNeG#BQr-qOe@f@C~i7d;vLUi%2((#v{q?cA%7a`c39!9WnwCK>5qe zl6aO!Ojp|25*OGVS~Q!LN$-$#u}=1@wJcAS##*}cMhoAn8(OT&^r5}1F@*S*8c;Jt2yikI zxH>V`&>%Ca8HDPCaQG{^bKP1wjin;8WPoe?fvTQut4(cNo91SfLCwdR>e6-Y+fGlG z_dQjX41K@R@s4N47teF9@2r5QcS1(r`ZENGJbT@3FvuyWmt$oI>+!$7M_V=w) zHo!v6Ld_~7B=%)V&DU(PbMn?0cW$YS{A*h&W&5DLJLQVn`Tm*R=)lL(hc}Q+@uc9L z*!m4W{0lT98cFV@FcUew;Sw8DHp$B1zB%MUF&#P1wznu@@N#5jWhih|AE@BzLS-+H zx%Q&vUHQ%_9?yng(%enokqu#6SCTcfMmR5H98qt}rA^W4&y@{HqZXF6gRny8U~^tH z(t5v@n&?tP9LNZtJ!Z%VF`l8!x+IG~8}ESKA!P~_#L!@vUd?bBG`xKCU?(4M)3*1e zWi2xm&NLIksbW`OmP;5mneS;18EA# zUD5H16CxlLV5gdNRheE&f}?V3B)TkIiDN7@4n2^CR34M~=$$dvdr1rQc!Zc|I8KGZhX7QrUE<}+I8vi# zp;%?je9gh1WYdfynRiAAPbyMg02YQLRA;gw_SN_tMomKGGV_KlaB6yPNJWX0f<4{~ zqlsl(nRI+k)o0j0tLIi?%xI60Inv7XlWgpFzu2ug$__apR>QLWYKl9DJ?S;%(zC4D zWc16)308ETr7JeT1w+Zj_R~|#&OiIcOD0<0YcJUeB(2-9{tT5kpRpTqgJ)x~gSSo^ z9|k(f>K>jgtXErIVDX&sGd4_ugF;pV5ILCnFwWW(`c_u5*yW4&TNUO}9$VBF*ZDhh znD)(To z4Dlk@Xf=RVloKU~agfGHnLZ5*ySk<2$K&H1GC*3g34@wXKSJwjCh;HwdEjQk?or^# zKWUZ?2`FuYnOSmhfq+(gJi2tBz2J_c717Mz!iimnryY1yC@NO0T0}{3`vAUOc)dLn zqQ?vp1nKmPWR3kfpM33e`SJr*$c(`wn4Q+3kx#2sYQt;?zN06IZVH`s`sTK#C>v*b zJ^8x1Ww^Q^+lfusIS?bUB3}Lx91EgPq8CGKQvs1ge4pN6{53{eyJwE(@AD@{xJM5; z7+XJ24e9-5qFK>u=`+~^D)u~PPOQy;!blVsaxxulRqlOzLDkUN+>x(k zTaHp*>|~!dp+2E2NfGUUzIq(sgnVu^@>17ySgpviGttwjWwRcyzu`#AIzfe7NrA@I z8PON|u{YL02vDZ6LdzxA{arqT8~-QA+vgeDn=E^swj9=F%p8iemp_#Gqkoh(6dDi_ zEM-iM2!dTUahHA$+5``F=j>SS=^($054t*$i~#0emwL5aI+j+u zR_YbB{Xt(xm}tC`w*5`jBD-&jZ`2@}fU^~S)3*puOXC!=(?O2SNVgAg??d4AbT5>0 z05^wag~sWJ<_}{-Bdr^HuMh;t(*jl$I@gp#J-C2r7lwvk+@{6Y0pQnOdj^pGVY^9s z>51!p1)L8p@&_8?{{9jI86UmDLQWzwG2}#Q-_>tG{UVjKw*=5btX;UEQUs#m_GfRf zk^M^cOgX_*x{xKFXtIPX-s|B$p}s4b^aL^3JmV_WDa3w<`+69#g!^1Z996?rnRtH; z{7$ZJmT7aLBRR{H!}+R-4L-C?^uk)*dg#}Cc02HW3(*0)ZMfz#tbQLK*-s7_@ilE6I8i&Va>|^^zN34Zg=ENP(%(EP&U$|4_ z6gi}#A4J(jgYh^*>61AG>_n1dPx|E0q^bFJx53U1k@JDy;nq5Y_ssxBrX(P)6>iLl z4Gug>2Vf)zKijGAQ#0he1tC$I!rC`Vj;Xi@_ZlSaU#%o}LK7zCs)L-yvDi1t8_mZ`p$w%FI=|$d)tstow{rqUNF5F^X&+E1?H@PX`c{gvhzeUw)Mgw)KVigAt@X|f3oGXXWZz=9(hXRaj7s^)m*L66i=Uu|64{6I-Q%LCeEa|-q^&`vo zPl@=&3X!#je`EQwh4~2bB*Zsj8r?HIlb9oV)+}O$7CrJaZ4d<@>t}@sAYg`&_(p;@ zD`FQJSUFsKC2oxucQ>xER{J(0!jhLX5YGOz`8{1_l`{-xk5 zz*x;DCpBy-+0scKg=A?q+=n_2MV!z-5Euf~eAu!yerPCqalW?PV z_oMUAAG%+sJjzc>oe$T;FdXOba*e2=U^Ktr#is8GJ%5PiZrZp}4a>L{mS0+kk*{+P z8=_x-r?An{vG-~nvdz?NG_WOV&*jqVJa&icAA5)<|F&-L)jNc*4cB|Q0q?JJ^-ceo zDvYa{-A8JHb+aK@PTlo_Gfc>=_!v?A_(jG&Nf`b2cHxa8r=6WK`l-G4WEMELN5YUV z<2_F^$6Sk~p3G#A(*B3@eO7W~546KD7Ex}~WkmTq^tW_k6L%VShR zqQE%Oc1S`OpO_8;W!?1%5|JEBD7lM6GPb8lDCiU2*4Rh*TmLeo=Yc64@$a3Xk6qb| z0cvm8Um%u3wKrKW{I>1`NbgZYzvr@zAARhoa>k+=R%OggVP7D_m=5GDjAV@604C@t z{6%~>=3zo&w#WH|c4Y|R0TTO6INA21{H@^MD{op~G8OSq_-?h}b|Vu`OJb4yebM9WO^OW#NBMU6ilCGusB)WV2COQ6vx zVydU0`ZX>#8C*2qq-UrS8XR~lBgu4FI|ZIf1x3q}N!Xiz(FV2gJ{YM!j-SnkAiCx zGz?h8n5J1R!Sg)D`AvU9o$0d;gHgsG!sbdj z^SifI?ANg9yYqMtn?#{eH}K^WKecE1q8^A-DxyuH{CUkT3UdD(HUa7rTDDJ{rXP{Z zIya$}N2;MtiVi}o{9I9{ur>nttl$&ilAOVfoE{(~+|V|PvUeuD=-;6HDQV0(Qr)%b zGIWONN2B*%rA)AEO2D$=Fi8vMN8KYIrO3!E^FFs5(`Sp~kZpP;M{%rD?Rttrc}Y{0j4-fOkR48%dCYp2QBK zU><{p9Uas1P5$?f%`T_PI$HgrVNGY+p*>}0^8;6u>@<$TpETJ!N3!~)bxRLuZxzQ; za(DYOPYETdWz65OT< zXudqfG&~{c;XObnr9v-x{wq`^n%fdDI%vuc{4>K!ECPUATQ>@$kKi#SS>r>^OOzCU z`7r2hPd9vKug=P};zVJX!Z$tg?CON9>WpC}fdg~O0IGm|u?UwuXrHp5$T}W0&EbY@ z7%W2d(MCSQwz56n0>YRN``e#=f|X{E+4dMZy$0o zqtRhpM|uhzw9CH7!*<%QTX2cZ6|q<^&|>ssf4_-*PJ1EedvE@tUJQB?(wD=CMjk2P zKbVz$m+(ssQOk1{Jx$?UCqZCzj16hkvvSsuooVHP^`(i`BK$(E0Vu;n>m(q6fkV zFnX&JRvYG(-5&{jX@A)w?^8aIyTyd17n@LF6B|qm!qUA|Fk-hHJ(Zdl3f<3gs$Fn5 zbXNAeMBSyit%W#)!i`ROb%1;GSNZ<#EbA>MrnQENi+_|f6o-YF=iV2oRrHH~jWuDb z`%V$!FsyZ<*bG@G(3m~K|9pEYr$T*)9DV{a>URWL>&j@O)>CRPf0OjYP80IuTnSoS zp>j88ETf+*14^vWGoupw%s0*7X@)vOxfu&ZgYq-t2}VQoLe zu?btra>&M~x59`e({^$vH+PFL`kP;c)&D}3jX$z4JV*`sHBv2l9unr#!@odIO~a#- z{F=F@fSL_Xl_ZZY^{uXQyLkoj{oM9(+1bJ_IobWEMpBr9MK~U29L6NAOO+H+@vjyK z$9L}EG*X6zxuljpzZfVj*`l((z%@>mJLLMbW|CY5nnWhN@3ccfPpOUWKjt+GE!0M1 z-sfBQf4s^{$^1!s>;mI4`gSvZn5s{cP@YbCXBj%q{}RkDoWY>SoztX$H3r|QJwfT? zIrsfo*NA@o_|>H{nR+q>h5!8JV8fYyeT7k}%#QT_!>3b!BBi!@By3+;FYpU#CqN}N9n^= zrF+kAvhU-IP3XDOrGrrsHeIQCY@)5Y60;ODWa4k29DqHEx1} zQ(+3b(pqyHmiGE6S7MYarIq$R@XN0iCFZPBkaW;ZeI=>X^PWk-54O9@dD1MUND8^2 zvZ-ffZe{16J&CtjNB7AsU@QLAcx@)m3DvaSsmV2O(~G0j{9&WDHReuchc>rahTdnJ zJ3{AlTAC=8uwe(!VH@d6xSmSV^J4nr^R4Rf*ca?*(=LWS?W)3|R|P!@zIjRKAFF8+ zO?%y=4jx%=2$~VP@vppim%$#IUliL76gXRuQ|iwciH6S)RH=FT5zLEInpS=jJiZ-~ zZwUHU=q%HfiI0hdn)F&O7FcOsCyH%7H-JA!aSxNwOQYIfG;hqxtfF>adTVIL-!Q%; zJ6%hSjE?I&|4g6hypzI0q*gDcd8lBMZkAEc*}Lc1ZWd0n)Gs=@(WTp!no+!}L{D!^?qh}3;u`rBfd7r6c{)}AU7 z$y55F_>0ci67$6?RC{txasZU=XHCgcUq$7oT1PEak5y(}|GJolUTv&*P5raLcymuR zSsN6*b-hVcM*u`W^;AjKa<^sH`iWy4G*rf2h;L5anRqE^#+D^(^J+qmI?b&SYXmoP zm9<&Bn%}OcG-1nC&=p36h$bGO6IYLW%5Y%*D(T3#fje+%GThbNbbZ@R!94Hdtn8dF z$;d8FJA!xT3Nq`EOH4UR+_nqe$hHO&7`YQwsRToBTjK>X-?R*!Hs+ob*$#V?<;ocw zrNqT8qdd&d%YUR-P~8(|6@5-;=yv+7e0(V{)+(O@YgzTxnFK)lyy>?CWc19bVdedW z{_3mV(C2sG9zACkUb%TEtrUEk8AO^vxwy3nE~=NkKWi<7AzCbN(wUq_rr4ji=LpJ= zKZEoi1LEAQwQb8AIib_!%FekGq;>^Olt5{H(nu^{>ab0GYr^I~C<@AQncW*A*4~I( zM%c*?{Uo!4OmylV7{3K^caMkM#qGcr>h4KRZoIs*f-bjf?-<`1V|LaxFS9QrT>e9v z3e4Nw;hg81CO2aNmrIxo&LaR%@Z^Rt?)t@@wb~m5=u?_aXj>Pz`|Kcg?)JT*=65n1 z@qhadOL*|&6UXG@1eV0^e&4(dkkmPPHb#*__-Hw4a~&cyInw&p)jWt9&WuNvn3+>w z(16U@vg)^*72JQ7YN_0A(`;}n6(|rbW_C#@wo};n?jp=GcDo=ynIzZyf;RdwS2N? zsq**%^LC5lrgW_}%g&2?Qv&kq*z|@Ujce?qG(Qecf{@t|%YG-k%`EC#%dqmTAI6P( zK@!U-#rlq)v*_bXO3}cG;wbeRtY{P3m6F~~PEJ--ffKXf?Xs}wSIWuL$@wm``vJMQ zw1-Rc=$e%HdN|`P%b9aUP7KPKa~N5=_YtV+_4c=}6`b4=7B`cfDtfYPrF+h1RlLFi zeGGDZhN_9BJ_0(1wgj65+Jh}o5|yQGIy193dY4yQ3)eZQT|@Y+eh(O>r3LBk$g#>> zDDxMlyj@5^d0w4BcHD1PCv690Fje4w4ESg%9s~kJ7_wddT(-FLlMooYO-Mvt$|KDG zk#A-n{*L8N9FZoTZC)xGSuB?%9hrVBcZ9-pH($KzL^7A6_GkTw#>rYhYl@2I4(uYJ zVLB$YSi(ZtKA78ZNb2R!pH0G(_*;}=fhjTi>`1UV(dBx=p$CIGH^sO+JDU8-)r(!A zz=}dPX~oXCu$iutY@fXsLNKCa%KEP?>D4lWId)l|;$e|$BE2jRa9FmO!nA6UPeCY9 zqcDP(vpOa3XS#GzhT*4G63zY9ykT9%Thfhv%R|X z#Y`9WVXia!JYD~dxAivR=x{2NfwHC+QI5Ieuj2S#0) z@)b9ay9O#^(HyQ`meHqUKwzedfYGsHQa zS0^l`Q97*1lrHS^Iv+tEWzuDhdc$RnerCx~rFwb)KeQvvJZhSoS3bLL5O!FMdyATW z`SBaVe{~=7wgAB&ZqxM}{XiODkEC{a|39pNyGv@TdQf}V77gP;T~kWjnl-NGk(cPa zJtj8};Dxa8a8!JX#7CI)xCNMHNz9!MM*sWyW+)Aal>TDbngfnu3pC6{5S(m@b`!n@pOG9HKQA00D@s9DsEjgi8E4@~ z{K)gmYvD$P(EtNYp^mc9PZ0*b_|%gTEjC08s*hAdj?3DBsCi&~4uXb=vPeZHV{5X- z2|t8#brN1}vNZ9i{pDC)&9!d|jI9p9mt=yp0`)begz@`D{yOal;%;=m9Km>bfn{;L zY6~2l$EMsT2S^{0z>7L^eYRx?*DjT7`r9yGi7&ae-D8Hp!lF8|-*M!S(LSSEtBVkW zfrKo(9uknL?}Jm4D^#)UZ7_VmSAS2%X)82MVBrfhkOXIBbn@$LTnMgkGrTXjE4f*Y zo31xnM(uI>B8xC+nvDnNWiZuLwR69aLM}rHY^KanH{-iQ5fzI2tWhVFwPEP9~GK@y6ag{PM{qL9sdM!B_r=|>pvBQQ1hYn!yGCaXi`-7jec(;H*1Fx)IX|6wEjy`@+Ea(xD zqh#(J`TfZAraXal*dNK2T_?8!#Xv~-GZ7YR?B~Dx8X&4?Aq^T(qlJN}4HU2Sm|*o# ztp@f$l#jj`4LC$&=%IQvz0saqeuTeq^>F-yLbvD$;t?V(b|(wbuC!+ii;1zIjM8>N z9F(mg5D;b9x7=K?FXuW7a$UU&QQO&&cpz#u#~><6pttRAAQ))=hBH6QY|o!R!=y!1 zbKCn>Ql6%sOBaYENL+!QOtfbD#QQs#+4!M5mgoB5ZW99qMOgiEnILc<1!^+^<8fKU2vjkEtSBLn2 zPaDRa#MKhxK@bCc@WiZm(cYCgp(F+iI3cJhd4G=zzCe))*^qq4etL-Z~ zkQ2aXIiOUuAk_AaJFox(yd9}4p0U<~7WXMQgD9tiF&$ECW_&!fco=^}^t)a4NjiDh z#cx`sn1bxb4-hOpknpe}o)>&q+Cu52Aj&wECwBFfwRjs-r+0PE?t3D#bJ_HhIF*&G zU8Nf3Q3?5Hnl%hB*+ADiRbr?Qt43AHEgM(U1H@{kzfwp663Gq3{JWp zRbuH?k?h9p$8bBz!1?Esw2j=l;kVO-3M?da8UyKS#~~$?4q2=d1yt}?k6^F_>3CC{ z*P!?u_~G&$80kX>En{@W_BnMBly6PSN0s+DdC>s_ixvjC2vv7*;rWO&Bj^su1-c>A ztb$(-khQ@dj_581f6J>wyMZGsg^&ad&74?vEzO(=^oem3y2Zm(4j7gVLCru8si@gC zEuYY4ESZJEh}6PizH_ZDx*AtZehbUHb(GHr{`eopv(qS#u^-2OC z(^egc{Ln2Gz9)O=?8TV8@vAewCtGOU#aI@TkG8~4%)Y(rkvo%*yo4X&pupMK2h*pq zP7Gl@4uzT8ApweACC*^+2vh}=G&|dG5eL}hLoo%peUC1%(gU^hptJ$uF1XbFYd>RtMxf@V6p%gCK9c8e2G!Qg96kcan=oa#C@^)~xX4t+r@h z5^&0_*sdwqu4R-Cn_6-5$k_N(3rBJQY}az?hllsjGBK-~R$GdJgr$fh0;4UjX{>bL z!z%})sTe;vgZ^h@=1iYD65ptULEQJQaJ};h_QtgOj zDnUs>TU4kXBz!j(eD^l%-hv3dV24+x zOADQpI**O+)gN8Hq{6DroQ@6-UG>?CJdF;o>4jxyvVp8pngUwgh+M#bj-zfwp%m>t zKcqoDhHGB>SsBUKxxJt)+!h2G8m@3|D1ZP3b@}TJNrHT6Xx|a+Rotg88Bmw-Tfa>6 zR-F~L=U3T5)?Bo`5N;3r#Vv;eeGjPioh}f=AGU4pMl#^0-|Z80eflM0f^eVd^N&kb$z&4aiwL3>hKSbjE?HlT$sjZu*#FV((0QRRuN;-5fq zWf1F1Piez5d`yddzXY=m9auFg3OfuadqfwhYp|_rwpCS8?$VudP3(AaY?>5)R^n2_ zu-Yhw(&((x60%!tRSZC}=(F9TQLV^a6IQ^je^liPJ*wg>rE_SZ(z~DrVB~8FNVLKN-}6 zc(`yIYV5nT19kdvW#&H!6hp|^NS;&72iEtlm_wG>ND{~g1=z^`6P;6^cl_30UI8sd zLnk&;XI|X(#YLC-!X?jyAzjj`W>6Cl!OZ!B1x5)pzt7s4Pa^ zVj8_O;cWBZRrDk)o54?6(HcoQ^|9mOPY8zHS;*Fruq#v18ogxIyQV{#CxL7fBrDz~ z0Dp#`_@197A~l{5Ym%dgH|*!U9ZXxx4|)G&Lf}3`4saCpx-c4OUb^o``EwMC>vlj- zwuQ=aP%Ah1)$|#Kd(BO8Js#{WExr|F2_zhk+jijKa-996qc6TSZ3)a9>+RUjJsf&M zy`G2$o|f%@%YARdzx<}Swi?h)LVhV^-SQuk-*#YdI|zkp<0H8)u>}4k=e6$*Pyn_l z_iLwvVg2O?ztTPhIJRDLfVj}^%Hmsyiw-|@0`7y|yAj?9`?*=j?%p`pnD;UqZ+a&~ z+rmIhv*eo;OQ8Pv4{%@acxYQ1m}b`3Eu)ha>aE~+73!UX`XW8hO-<6fTDI>eGE)b8 z4G-A5fO_%9cC>dpz%j_jy`}?f;X=QZMg!Zp9OjWMH1q}|FzlG#Jgel~?b)~x1!Ub` z9@i6Ie|Zem%t?GQMgSV*%GTm<#RrBjL`31#iG`9RO zqa>jV!aN1Ce-k_99Yc^QuZyc(lTaK5kW!PerzEP_r=-$~_sEg8Q(a7zR+CU8mT(*k z5#J-RnTB~QD@8ac^NJ%zjagmX7W<>qaT3avG|ORc3W}$CypS!#uZ-0rtFcp4?Uc10vk@bm3U58UU7bUIu8tqOiNEdTt z;Mou(JeN7&vOXfsB0ZTK0zK#>f{@uENvfZO5GfaVf}Zcs{=mKLSs96}UqC?O@?^x6 z$+6Ect#gL0d64JCV1~zFM#Q9r$E2~;8`4wDvOn{ztx4HDHe=!oKka`%Dgh z8yyb2uluFf6Ql z1g&`_t$9SPdGLVZp4<OBb~xA|@lR|0woO+Pp!KX@tW-JC#IxTmsbM0onf^my_N|6C#e zXx8f=G-hrqjo5SCReG6aASb=CCEY*E+%)njU8N3xnC_aUsG53qn*OBYrL)dQhYCj~ zqLmbLt^E~ZMjRRQDNh1t)b=V+#2A2X#LOm*+LK*h?P+0!3cc8rgoq9h_Qj2`2LxZW zhE2CRPhnZWEqGaRKq$)&*pxGcVu@5-OEJ!2iCcPV-J8byBfWbM^`E~37F<4I&P=Lr_L_!8KQwYtW3rE@dCIAzTF`L`Iz`mkCd<+ptL9Lc>8{kZ_DF;U)?I z5QyiA{feA(AwpbB;|5&Ibz^;d1&oX_{ewE#c>5;xr7{qR?&c1`N&O8f{yGS7shvzv zUpa7q%fx<|q6LD{0i4m|gYOYH$gm`6gUAm~x8wSWltCc?g1O7MVM`U1VZ3s%bNTlc zo~VX#w439^F(ri^$-dcI7o*kjz9rB&nq=DOdAlaL34*ZHsV<&VXezJ0vRHvALy$#gtp zJJpwyzfF&JY)!&XN9CXjBSOo1TmXB=i?eyEszB)jw4-wc(%HWO3y_0HFr2dN{haM6 zv59mJ(K_G{;ghIGIGcIcP^KfIZ~1ofN}XadNn2i^LqO!E+@j0pW-TY2)GP7M)^BDg zJ`*Uf2{+0V^8p2HIg}H|tjGE#^kIcUpXSX*u~ciL#_S&$57pt zhK`t7{3Z~N=%h&Y(+l=e|~i`pmZ`IcM6cX>3`d;=R61)yx1AN z5E#Aa8M$w|PhRU3^&7qDGTxN3tBn@diL#Ft=V4Vx@7Lm+O;G13Nm6;ITT54;CJijP zHE5r%F!~w=Toh2){b{pAg&S^mNQPh{-^N;Bme^+X@Yn)@U zYYfK0D$TN4lVewIRf6GYM~XgJ2%1a7sZqk=yYbI23Mno+l#+;&l!)rp#>f8fgibtKpDa_p3ob064BW!(n>U&F7IeaJBMmP zRDv(z51VyMdguY-8@-B&fg2^5$ASARe#FQa`YWRW^=i$D$E^~dXE2s+y&>gs6<}en ze1Q@4b^~X@G(-A*9l$Tn*$YBY%qYB{M-_eYFucP*vhn%bkvrsqvMXoc32jGi9|Gp4 z%z-2XQ5hI9FiOcAHDFG~n>CO|xh1<_g_bL_pM{nyv(JN;E3tn=#hW*PNY(XsK%R0d zQQtsEa)0>k(;pg-l|DmFJaO*l$U}NJQ~ytyf(KOy3uRaIgub1Qr4GF5|LK|mtq1iV zZVv)tg$4p5_CI^N?PTw2XCm)r>SSZ+`TrM?Hi1*2QK5TcEHop56)zLd1=6Mbi4#r< z93a7&b$K z%mE8Eq=12X7SoeM?8T|0W}sCuowEGsgH?a5w%Nkeyqk>t@Ktpt`|QS@B2gG!lSMJ2 ztd$xd#|TRPUu*7^C7exm(5!krNE;Jtd-=!m@4@%rxD44HH#zuO+RM`qZFJfJqfk%q z#TEQ*RxBfqtz3>pE&5!AoZtjxC>gY^*pegnMAQ~+_G!|(rxSW^ZM687YReK(3fzxZkcu!rK1#mVwK}A6w zBKF>_Jf`R1qs?G*+c2#KX$3;^>NvQrK$$PYtwD#*Y69AS?agLvMTh~OYcutKNURQv z&oM@&zD>gdbJoNP6kx%p|GdJ_TYc72r-W_qMhjgc7{>*EFsUf+6e+hB9ZQvzu?^1W zRCHJ7Y|HU8H;YvrF0&1+Umn|tV_k>GZjG4{K2u2=2&5DkcMxJ@NL01WZGduOjSzu{ zF-_D@G&A#eqpHJptn#Z+Zg5rp+R3>1^iZoB;GCHAht1($)ZiUPr1HQT#lq0a%uMon zt>s#h8^&<@fQqHz43NOW(A3IhrZ=>U*J+XUq}1bqT!0F%CCjJvFdYdRB;-@l<1W*`;JBc@qXqDqBaWYvDIc z%GsvN`0>ePTc9H2KSJD}WaXd7m{|Q|eh^8`$osX)>`qL8QN|K?#(M;CEqQ&Vwvi!o4oCoWA|uFj|+WK1%rWM5w(65}cjD)(HX)uOVMJblyt$3n>N zbjfX8y;RvHk3+Gnqc}*N`3CPImM!1Q`r7Xhxg$)fnh5`yNKUHT8eB}16z_75>=Z(w z?%lYUq$t1eq&Q|LzhEmS*%1#V^#YwZIj&b!pIO|-zrd0>-9XrH)Nc*t&#+Po1k~$B z{b47PlaK5~!2u+hjQzPNxXe%Sv87z`g{NZ{W>~*Kg_7A)CHU=sz^_apG>ZK`(s1xN zbHzI1*Edi_Rvxcl$3U`h);|U27-)jTb;OqsqXcWJ1lsIh4?&d+LcWi~=nK_44i@$g zg?5igAkdb%-?v#nG3ZYnTt+_lW|+Z88%lqWD>QeH;G}7Ok!wI?`s3eFK6#P`w$-^A z|J2zI9>QPm_!RMnNAD5LX(VK6B!$o>X;GXP*qlQ@<80OjHE{vTCW2(3QicX4om~?k z{s+D*e=@jFag$S=6acI66Dm}cP3IIdG{=wfbKg2Kk9E%x!=Czq)+T`=9bkkn6hLuu zjpDB)HYm4uB%gt_J?@OXw+^tpM+zW-{FU{pS0Tt?DQr)@54P{9-%xkW*CLR?4Igw7D|ZAGk5>WWTMpZ!4DuV| zD`cMW$0EJ5F!6rVWAx^BhdS(l$H=Qioboj!kZ|W_q3J?sWANXfe{}vv(3q=tdpDek zXQihNmeKzD2iwxxzpR*aicT$Q2cHrP)H-N%iw_QWT#`LeLA1#|@A>&}tL44Q1ifDf zJsyo||B)|#81tneA?S%SI*>VtHGaXaf2SBdxIVMNvUEgtQ@g_RRJ(r_muBGGUmi3Ke)bp69yXoPaok2@aidn z-yk4AVEy{RIQwdL@1Lp*=s)YHImu2)8_h)FNkL z9l8HgA3eEZTDq>gu_SsZ=RrhHChqU?OE3BEQqV?LQe@qvXC~WohR50L`6Vx}7lc=g zE($CWyBKbYXj;KtW!Ejm$=A?%9X@%r<>QmF8FX2($Dy##`Lcer^B-rkcE|R9n5{fs z8avj4;w-ET+W@Qi$&#_y14QE(6PCml1J~9I&(>R?LRPTr$39dy1#|<0$4fDjUV&z4 z061-|<_+JtuamI`SK5>K=6FMHP=pLN8XRrWm;u2piQR`z$Ftt)Uv}ZnoyTI#ZUf0w znk(MgJu8S+IGs`W(0{{VEJsTMBtfdVN+u;a{dA!N8NjcA5&^lBiW%9#9Nd6YR zP!$nZsU4-oBqR5^oAAADNr!?8%41ssk2?<=*{ya zf@3z5&SY^Azr>^KQ zh#R}$R4Y!=qdHMR(p~OYAp3=$9>xeiKF@cDyqcgnxK| zob6=i`b&O=klqe2^&coL{3Vv-UvR~9NTOx3nddH1C>#6fI|iE(K4$$!jrgt}#3s3M z1fmgG&!Q(kl?SS-w3PhTt~2xE^Zh?{rz_7*o9>_>AjJ^>x3}|ut4>Q)bk%WH(YDLL zAO-{{BrGdhYFe!VQxvOH+0j}ArLCZngPZdwTj-NE4JSES;1&S#rYmmq|eTeg>3yXB5YAPw{0CXLF4BQr9>}2poa#;+{rK<40<&Rb-WPG3xHzMp$5tp6q z*s(YQmwv^pDs|UIhq?cm^UX{aRM3-Pw^t3-qa(udhW+WkPFN;IWKLO^N_i<^<})uR zmTvBbnwsUu_0?w9wyC`aCDKa~wIcjf9dFag4*sOMKJv87{0YbaZaaw-6_R?>nV7gz ziFr@>Jye|sTltXMn`TKYO4RG0Q)gzyewOPIgyL`$0N%u?BaRy?Gq2gZiJO%n%|~y+ zlsk}e&_Xwa_h_o?X7bO9a40ZBESEkQl9zZ&->5l)xMqHi|{f__2MqKv619?!djZzXS#eo?H5PVLV;B+%R9|duYxpol&F$3o0 z9J_b#RHIb)$P!WP9hvN%%I?#ys@?7I-5R`#DFeTn2$QBEXjEeq1a(K0AW7#=D$8l| zo=+R5!SvRC3Jd7Ql_G6Gavh^^^i!kJT(%Z#OE&Y$+nQWIX`NVvaro~Q^1q|{eM~j> z8x;h^i~$5h;Qt2I{|}~zwV*vzmY;rdGB`ZPkIaZ@4Ml~(m`DwhdISMuGOkk=cRQG!-*qt)o8A@Y+JOdR_Hf2{*#uP^}LxjVU8x6 z`+50#@a=Nn?LN)+e)gWh&)vMcEdoI(kpH~xs}fPZC5m(Si*8*Lt0||p21jmGVBp#{ zZPB_iRE2x>vJl^HrZ@G^g5n4tCo&Wz47Cg0I1S?uAvpIZOo&3Tr4WtMwv}d$Vbex9 z`)IX-v+IyW+>4NBz&!mB^st(X+Y~Fxi46%Jdls}ywE}}0CGvupS~HX35XwwtHJk!v z61upK(FhN*+3dofkbe3Fqau>r2Blg?6}9B}rVVe5XC*9hSTeQdnP>_lHS^gGewaa1 z+rQ|x2C>uO=#v`T>V~AxBxsz0O@h@kp?H}VF+=#aQ!>9+-m(3g2fndHu&|nk^Q^0x zPoETUw3%9Wo2ePqBua$QN07x&S}j`U37k~r=cbiWm`Kw9L|0g7SXQ%F4vIIocquMQ zk5u4yJ|xG2Lbr6>jDQIfP2vJJ{eSp}UHUb~?$V1Hv6Z2|ffMD=0 z{+CMl%Fw1%AT)ZuU~z+HQ*k);K4H{&5YN}Yu#wSYXi_=Ue@tz{nNm0K4R;;{Iwu~x-YaL?Ew6(Wq4y<|) zy}281kP(BGpjN5axvhndV&XE97?Dq<$CgaJyE7h0ko1(*^brKry4LOBUZLozi-=CiacF64Gjvl^FlGL>s$ z?dQIY4AMfRkm3FrlOgBA=_s|VhWdHzQ#8eW7)$G7A~g9Wj02N;fgyC1v%R3Q7iJ=X zp$;Y#;-z@KwWn)dWsM+Z7Z>X6$VHF193f7sHtf5Q?DQ+tXN`VNk^K+OBsTPxGDy`U zm7n$Ce?2B~8q;RLj=0-48B{$O;k%Lok8lyCQSjh%@AxC{Bz{6nDxGK<4TkES z_wf0N(7Z-iP%haS7_!%>*?j}rC3>$#M=HaW>!xJ6vA7nX&ORhic*dG#zZx~v)a1VT zf;+0Eu$YiaCxWn(lbDQWEZ8q%!GIK}um%BO`>S?@jk{JAh_H%^u*K)H!*AzGy0Mae zV3YE-lT8Lh7MOQT8kl~i%6s~XLK3zdusSLnIs#>|;8b??C2Z<$oi11yR-??UUv{V( zm=%QtSENa`V2SZ41Zg`&z`sDd9@1@BiinwV-KYAj+llLJ&>LkyyYBC<&}arV3P`Xx zT#E=!*VPyE{aW)X@aY`@6;9;_cMcj57kUtfLl~9wNxo^`L|F+Wl;R~Fy&S|#m5q$J z>wl00oB-(!UZ-y(dwEOi(c_%i#=o6hro!)~h9I@;7h})cH!fLz1^7zuTS|q!>5Nao zwY6auDI7|9k^Bvo|T8JwB!PJ*C1!64h%Q%&X92 zE<6Gz=XABVLtcz|W>Q8cVd|i2erI9aAg6u4We!{<+C3`x0E+qMD-KuNn|sq^&PH(; z3O_@mI=|nu^Sf$p5&TADq=&R@32Y-!r*dcxx&vO&{OlP*L=^QBD+DNg{=mmGV6`5U z-hL$v5Z*CiB2B$)DR5pADBA$N8rJjBzY`lXx>f$l-&Vx-Qhnm*IW8w^_ZQ)!<`{}E zo~&@NB8B>g;p5e7t)Jz={0yAVh|}MX;pxRkkSh@c`P2AB)L|*&Sv26oqdF0jZ@jyN zUA=1U<0^_dR@Ealsb#bdH8zVBX!CZNTWXeT+O%d!CWLi$q208QQhe!HVha%E74puj z>K)F@U`*!?=1ROp!VGCAUw9f700AM{XYZ$8fqN7J9|Qt=Cy*(W)acj8ua2)L#*m9CtjCLFdFs(i` zF$&ELF)kB{>pG6Z(Zg!IN2GgFU&Jf8Rjq%;=Ph!c)mcLk{@^utf~~ofX(??jZ2j&M zGe%ccLcd^~Diba&%HT`-$62%BAqJ_$CX-j6iZx9%<8AcV(ctRI(mmLd?d-KL7?4?R zktpaHq{eFxku9K^UTJ}|d@J0^TGkWEJ%Uz3P2}JD(xg*PgDktO?sXf+}?LClDl1BEmpBv1y74J4;#K!v%%Qp-8(Y%CD$xM zea?{^p8@&Su{M`n%mqBB{ERdJIfl?MRBIDOxJgQp5uK;vFjAJkwp@(5^M<$JojItj z6L-$+dNK~%{1><5lfR_CG@_J(7<_H|qOV{MHoJBVn1o@l#%gMz8+QicZuR%5l-hHB zKXWD-D`>a$d31?Z&cTmz6o0=wQ!Tg!Th07Anplntbyb&nUHYPtRJSWk8hDAKa|~Z~ z+z6^TtHp+dpWTYu?=Ly}!uINeIBnZkOj z*-%fiU@{V$$^&ILR6GFBz-C1B=0?#Xsx6tl=MU7|*O1b+Hq(cg{)g1$0Cs!rXxy@% z-RNUH5K52^ny#>%R{fOlT#vo4Jo;^7vE9wuvhF}HbtUzolpLpjijq9Y>w7-#NpqN( z)NX)eMjzGYV<)m@SdhcGX+FYJBs4J8vl)bkDNXDz#9P8TVCbEHmFrDmMt7!kVr=K` zX?U5cu+)=uBs=*VLj7*;34%(N*^WS3}7$|P6K|>vniUyxVv8Zc)Wq zmR3o*n6K<)YcPthzhGa_2FdI?BFbzhMv@#w3YfW>G>HVgkH!G`5+wM%L)v=~Y&(6Q zzil_Yrru=Vd9<@)N8pscd5yoeMOTo{DJlf}A{B+dh&ghVxcjxRnNzF4tlq0F2|eW2 zR(yKjo)`X`?i<}@(hfPHO6)l^9lLD+A3#)PSC0u>GG`Ue@w<95lkhNvvcsiz+lq=~KHcp;+-* z@%+DVa5=m064o=9+ z{XR{tPVZM$aw#l_s5t_tyKxJ48R}hfx3i%!!$byYx$`6@0*YbJg#D~tkaefxPd69| zaM|mWCWQ(DUbGFAu?_^=(M(*RYo_CGl(Mc(dEL$cPVG(S7^aJSk>~W|ds8J@VpsQD zOVUjhbf#95ZcPMyQq*)tMveRp1Erchf7-OYo%q^+9N*{`L zR^H~y+T%-VSBV=bmiiesAH<-KNE1!Sn=CrP3-rQ|hj{c(=(<;lok`~1pSgPNzesZX z`BQYUT98SOs$d~)hF`%CJ#=!0L^HJNvBPL@2Abv4d$5~Q)zxA)gF8r1=upkN*jWY( z9$5Nk5zvg;erpUOuSPI&rhI+UW{pe7Mu6O(<8-W;xqD@9pS$4e&K^Vy{k7ZUe42|9 z#%66y0}~Z6M4|wz!qz!@fev~xr8?e%n||NY4YwPx&GcpOQ%h8h1n@$$sKS(a0?Bw9EHigpT+@S3EHP7XLq1rr|p5skr^BN(t6 zaD7z}FGFoTsK(LnOB>>nwby<5_>~vq<0q&0ham#i`tffMJT7PlUuP@1KzuKJNWdp4 zz4j<|ITaL|&ERt2&mfL}UoU)GG~z4AUL~nrIaPC5+n544498yU-vbFuKmHO){+p!P zkE13|=cj%uvWzN30M&N%(S5&IP!wbu9Q}51ZRW462G2Kgn+ht}WUBS|`P4=VwOYA@ z@k+s8;1FOFiEFL3o!P^F^xBv5i$?bDLw-zTZYT^9Q=1*TP)B^h>fq^^x!chk9(5en zF1FG=v`}0a8)O{v;_U5hR-d%BbkBRA7xn6bZ6O_fsmFn&eiu23y$C^#WxKko(-U$B zU&*qv+8%F=5dz>a1bzBRuM+4a=%jaIFu_l>e}0gWydP~7Kk$D*i`)CAMldfrqDIN2 zW>fvOrTy+V?~|k_<;8yF?_V%-B5mhQSp|=%&l0NoQmtVo*(kMZ)fb#nc$~n!jy7bD zyu|tS@fiTVA~ALn5b(Q#AG+)@!yAI=x~z7Y{z&+&OS@vIYVd{QA`hKsNYjJYiNfhcZ;@vD200P`*yurF}B*=AkpO!&P+*PQlZigV%{6Y4Ec zhKysOFISeJ1s$_6VcE={_`FJe24c&rYLR47ttOMQ@w;*XQ0%CM8?&mm7_h;mQj;SO zX`QwRc4d`WzAc*6{KP8e9a(BsEq4W4Ip0&Nl~*X@3wp+=|F`txxd^)lCi9#p-0Uqj zpL^FQlZ2wK>~~mw4WNwYoc_AYZgBk3nSiQQ8+Ch{Ut!42+GKinSnrnk-x($^wV@24 z)Z0U4;u%lwWx*G#PYqxEWf63%PB&WSTxg>&#RbfLL0sA?!U3YTL~dz#dzYD48gYK` zQuk7zIfGz7(*;A@2bOOFd;}d!J`S3}=4;&M{Gy#DYu4|cldqr61NORv;+*R2lJH_3 z5>35|!GOT_&=*$H!!uOE@439~JnfOzCzq8^K9k_1zXpNtIT#k->k{#l>v8SA$d(Ic z&7OVE`H|+etH=S7Zx-me69F7AE%P?t3u6tfjKASatgtyv*!BK>@c26}nIo9pD*-{U zfg=>v_FKBEZSPN3uhI<&z=UCb^42n`K3>m|vsZ1>scWK0*!GvR7e`#O8?pGj7XiAZ z?b_r?rA8+n;-WQiNh^NY{Kb@SfxSR<0fz^mfnmB>AGYjL4w5IkQ668=enET8e0C$v zk3`L2*SdIjVN)l>5j~}{)5By{7wVO~L$^;-AH7?o_mKWTw+!H1b4Or3J5Lfk_@{SQN{)YoL#Be$~f`e|qugjc;v!)?Ap?JzYkkKgwh&S%2fv6Ce=M{Dlj* z?0Am=x4`x8`K&Fwc$XTx*(*#HjM0DLYFSOG6t=FVp}1$8L_wIABu&jV~@33ni?=#lQkKBsF;46alP7Ofi8N zJRZuZ|9aRH1`!W;9iq}tM4%+J$HHaNuuh&7l|g(_H7Uw2zP3S$&Yy z_?RMaWOzmVns6o;{99BzjjdWN?GjMKcen;sOPL>h5z>?$TM66^wjo#2e3t4Az;Zb! zU>F6WZL*eRQapvwGxQ=EFKSEI5@&~>fu}525$+N~_cTJmNyZO@UPO4s-4vp=jFj8O zr7)@>D65ATd2@gsRy_a{79Nd8wXW1F%KLGGAxjXE!18SQ4oe=3`6a<-J+f4TzsrpJ z6lj_P^cY}B_9|O-Z*^POhHr%uM z87=T4yE&X4oBXZ5n&_PiNoY5jwmkeVB>-ALrN73?Q>fshHCy3vt93CxPh%*m#IUVH zkH^;znbup~dM|thf4L-LV157ZbJW_d|wAC;Zj zY6H2VymN0^X&0+JL4K9Ercj4kQnt(u*$C;#@oNn)2NPEXRLo253TCjdhY^J$M<@E?-}geV zj|jIav#pOKP_{`7t3_E-+0YgOl(%4}fXeh)-f{=kiMxD<&g6cR?ueUc zcjbZ)nHUvW`W{c7YPhLGL;~p%BBVu%ZL4s|>|d<$3)cz^zi@1kC=)KL5&amA5Y%!h zcv55&njkj(Eu0$v;}`gU2ifER!fOmOfd_Zf3GI(ruMRYkbmfUmqtk z1EYg2NiuC1xH*O@W3$izp%&V_4(wD@{bQmN$Ys)bs=kWPwJHU)}+yy4cx!=-^%zkUos>~@*ruN$8r z9U|woUUX!FUeg^dhbD-PNLrB6_qPXf_GTC1=EQd^Ar~iYtcO(A^7PW9PSFhyYp*GU z_w$DW_sFu>7@}L<0v45RS`gKANhJH>f_v|EOc2E?n7n#H}c|G={2QnpU2zCS|m^`=w^s7sb) ztbkS}ZL9X*v&f&0+Q|uqKWzCBvcEPSYc|YMKTsEE9A$3mp1fTULe3BKMVTPdj@iYI z8PBkV5W78Lf}OYGyY=+#`>enwK9@*~f>0oSI(9c`QKOB5$m}Ugi|G_+A$AA0kVKl^ zV9<-!_y~O%AqzBinuibL4vByc07VlO3Qr3=+l2d>~Dvcqn?^I=G=8 zt_T(dhZYaxzVUTM(U>2a#BIa;rwGe*B*c`eZ+hl}9UWWy^yH;nGVnMXU)gtq*ZnFE zd6UBxHu1(d7SYb4cAn(xr_z1{x=qde7Myiaf-9;p_aIf{N;@i(4bD^?rt7CjhU$=I zNFpZlU7FWZrVrLDgtu&^gpAb${HTJCiZ*o4D?nufZuc6&uaX?7<1&U{sn_u@N2NLT ziuM!5HWfC>*U^C6HZ2Y#W$aqjoDPm0nKE%Ne{y=U8{tVOF=?PjFx$ertqQB)dzO5* zYG)%mnyxXKGXd%Ae};%&;o0C~KnYIr$>$wOs zY}*JQcdw5fQg?N2*-GP+9_KSH&XgH0NR?P8Q6A;VF^-SIhp(5PNeD;5bbR(QqQbuI z86FsD_vXc@LU$7oEz9}d=7wSzgcuCk72byo#rf*FW{1%%T<9~vf+$+D8P;C1O@gVV zT!dX16_9(x%H=ZoaN6xB8nLfBeeB46{E9;|Lz4{DJU<~`>gG5*!mfNJ{0*;ey&;vZ z1NX;itsUi^quq}D?Qn<0x;iFltfWbkVK!O)VCtOcWBXLtM5f97=6*uel%*~A3b(%O zKGJ^8pv`FB6Qjv1wrL6@V?3$5so1xf{H9FrxdPyRuNxF%cfJ|US74Nc zjadJxdy39c(87?0oKxP@n!~jS+W|N2$s1Qa z<{%@Tq>M}cK=y_>Njv6_@zCWp2wp8$MM&@zlA>1TP+#N3< z7l57wbXEa*G4~Jw^;r!Jo$QfE8E|zK3&dLm!jAu8O%rL$Yu^wrY_^H8CI`3 z^yoi3dXU)1Q+Huj7*7UaXH=?91s{=Yp0wg}q5Z9=MTNG}f%r`#QQbr+gMb0AL-yI{eJ3e9ADrQZC&AB+rIX)7@@Mv zH)2oI69t`8cS5Tfaq8Q1dJE3{v`Tb5K|S{eBnnL5Z>3b1C+9@t6tf*rOKB8M<;No- zOiOiSFSM%f>QcAWL@)!oiE6rw({I6{Ht~+UU&62-9cJ#J+#|dFRf7ULjo`rK(0;^q zc);>qAxJ-}c9p-;Na2Wj@aZifVXy5slN9y~3O8VlIMW3eX7XM7E#v@+wcdLw@H zQ5MH~tM@BDEk-fZ9G|;`soL?Oi%_0eW#F)RD~i!3UV6(l8EC&5?)90G#6^y9N#3)v zQs4N|>t2W(t3bpl6Z(TL=#U7J5Y=}GGl$82i5_;nBKBhtE%?k-0+Oec1hz$GEc@00 zbNb%E31JYM{dW&2^&=OoZzyk(Bp#M-ap<62P7zqZ(u9)YLLaQ4SRt1)&@G3ThJesa zhiCDn3C$8xYmq+C6i{0o0T((#zV8PcV9f;VPzB6p2a$OjcwXimerDUU7v4`sh|JE7 zOkU|d@2|I>Z)|p+TXVi%_?&luf2QJ%$N?h2&;yM$jhl9s%ao7jXp9j*%jPU8w1kxQ za_4Vu7Ka#gCpBc2R6C-VUUjE!?PvbB%)eeo6oX*SPlb#zj!Zoa1=(C2;mK%#o|=)Q z1Z_4qJvZ8+(GXX}V6-dNQd%6Rq9TnYTCtl_ABEn!93hWiDJ)30gi3%(ZDAnXS+UCr zD!(wDLc)<0aZExCoM3d7R8DVG(5Q7~jmp8RIj<%Z;;;OW5Qvgwg&D&9mJVX(+g+_P z9fSojlK&y7!8u{%Me4P|pQT0KpF3akr&821S*mxufBGc`Bn@pKK_j_d|CWBrT@t#- zvdi%!Fss;Mgz{4R_(*NKWB&9i(@Z$-fDtjWfU_3={e`5qZg<< zdk|`eBcd{CQsjqmU;p;U;4~)8^|r#|6!wzOpZr^SC%w^oYrR-wS$o%y(}khO6jzVg z@F#4o-=L$+Cso^zAtR+t+uq0@dIfR$aX~SH{R!bD)htp{eJy3ngx4iq!`Y#z6!#?R zc_B<_#K97SHmIs;y!$RIWvEhs%xqX#SPoP(2l6nERS=?6rC1osx8%7+}r3XBn>M$A(_BLjmp}{4_{?J_6Cc-K{T2XWBpaNHKw} zni+?K!>nL#Ex_Wm;W1E?`HiE-A6Z*xkuWj5aM@!V2fxb|J3;f)6i74N1ny;_O8C>xquwGx=!FB~+ojRVW}Eow%dR0f3HO*#21)$`Ik1*^h$ zRKR0-rD>~AEz6SVkn~TO`IXC8g&}SQF*Ul#sVyov`7FFGBC#i^L2I+RKk{X!aBTx> z{LzbcWGW&lT-r0DA`;W75vXIg9N1465LR_Z4`Taky+tn&T(EAVm0=X+seI9!G7Bg8 zwv4I*wN+7O^>>=pS^W3(kF4&$4d^!pD>TWt=M$KS9P#97dUW;%6r)mtztUo-JIef6 z5HfR(_!!V__N`L8@N%GYFx(3122rK zMP)5ErWKO5blp1Y*=6?p{UVl%LgUR(-A*dgx<4LbE|gbTW`2TH!g4oqQN8FBti(?~ zF}UZUJXOyKGL>I<^=q0@IxQ$~c-w%!Dc(4`ZJMDvEwF5G?p89pa#BqsHB{x+N5YjA zn05EjGED;+|eExH%5>Umx|>QsiccZZrx*2yqABK6WB@Y|+XB@ixFy zaQ&|Nz)E1E{yhtH{jwQBy~hbALw8Dl9h)!5ZyCnR!A7MSm+BBH9Hov?`}*M)qT-c)C^f_gjAv-h|U?!SQdv&${oS~H?w;n{BfV`kGV(Yy?>xOvy`i{b&Q zCCFm_YuVtyYqY=_8i-qT{y^4fK*oojcTj*=#BL}+%XI;OzL~g3^-=@2C;gyS5yUlR zGTjOAnigIJadGdej5mv;_E&iTGfd^OGz@;};6qN7x_I{NG1=@DGs#wpvNNo}aef551nb zGktR5ZmN9o*@HAc0M3vCwhBprvW7JI`D)9`?&Z6poIjm<^8zDL)gQX1ma4H{(p~-o<}(WA;5sF!3BVCzdmMXBXN%dyY7dW zSrau7*QCkp@((e^ObA1@V zA8zeo+oS2hkshw|2ITLVBRPSEbR+bEy8C2vzJYh;k*A5@lGyN4Y6=ofn)k->&AD!w zXK(v(POqf41P(_V82Kx~53+T^ad3y&9ts@><~-pQJZ10J`^>bw*!Z-`nF>5WYa?UL z9;L5_b#o>UlP3|}FszK$yNKgK+7ZU`H%10oOMeZ0qeifW-9>qQ>Jqdf`LTKQh#y4s z_M5{ggb`?b&ASS9^R7aD`nOdmOEc^LT8UEi$pK3h<#i#hBdWt~-dSIZtk=$#Xw>Xm zFqlLJyEn5la>7ESc5+*;BaPLb6LDpkHiwH8jfZw44rP7$#rbNW*{qZC*Q zP_VA=HrXp&Fwo?(c4fh_vY`iexyStp&w=NGTlCw*Cfg?Ph4(XS1SyCi2uk2Iwcct+ zTh36uIWJPTkF$=XI$|39vD-Rk!pBgdVxtBz(`NWYY91^+TGVfY1=bpRBM_DX?@ClU zie;|~WQc+YZ5Bg>l**U#N5`4zxyuX<`tQO93nOtCd0FA<4(2QD7DHsGPJJV^#j;2OEXT&blUB<>4MV1B8H*t(`B3ll_LDCczqCS2J z^co$~KimS;cT4i4)w5YVGS3(~N*>yL_4c1g(V#Y^Hc0kgcWn-ozBVcYq3G4UBR@3C z4*Ke!#+G`83+mMpdBc-BQrzg^Xd5w#04hH~JObTTI%TZh12cC|)q>*^V+uYwI(TF!*}|>bzkS(PZfpcoxTr%mmzgjnx88jv&0q{1 z8Czd**WX-SgJG(nA1aFeM^c1{4#O=nQZyyH{!WpSifpF*D0)#8Ir?B{f^||_>~s<` z(=6OjioYFp@^nG5#gvqS!X8rs5gD;#_-<@mmbAqnJt9QI7I7_F-LrkSKP303DivtZ z@T$O7qHp5{N|u|BSc3_leRq*rV-R91WfP(C=FEjp$yk>^HVMyr;D&`pI_$$oMTNa|6=n5t#$;Q`W)VN z+YkAx#3Dymh$1(0mE|q1sF!%kB$7{aSgn*!ZhLOjDAD4_kIUb5{P2p(CXCnCRS=f? zk=kLN7*2dyGyMiv-5Xe7PC{`JKy2>%;RH!$o0Qze3PY3)-(Xhbt9ktVS4&8KvZH3w zQStjk`+5yKiNvl;P4TrYTB%5bog3Rzz_3w$s=L=i*lV@kMA);^1q!JFEjE z2MLLuqo6o}is4cPqT9Jho+?!>HXf~-MD{kUUj>a@R27xAArYXwFj3Ne2q$Rie$Pvd zZFoJmPo@Hc41==av*FPG;>6L_$iUgPj)s#%1Gg`GZMnM@X{F+ivh;7q^Akl+>-W55 zjRc4>V&e}+r=Pbr7760Jq1N{N0$S2Du_9=iR@2u52T!3`4%xM%fhM8!36#7ty8n1YK!A%o6<(bI2lR)a~bZ$MizJJQ4>_X(}R6d8k zxoLf7E?lvg*A7`r6jAUfERA2_8NjNW$t-N1BK*YlncNvv;RJIxr26w5V_(C%$ZC^O zgKAS|Z4aZfip=eRMsh71s@71~cvG;$&FUA_pON@t&NhRYEhsJseIEk%tg#Ea1r5&$ zGv%;5T@mpLmHUP-?9k@$#r1tyhkqu|=*D6FbJF<@ldd%ZQF9b7kn zU1F@JSKM-UGBlm3y}?@Q(Y&xgjrJy6C55Yh-!1vBZ0zJ=?9?81%>j?3NWH>PM9VBa zV)}x&ZJL)jlc);5#{@h!^&MKsD8VkTw&f$oZcp5S@i6!(C0?Kwb)$b*C|#>RCD5_X z5D>#>_>XU;oIu|ZV?bJ`b~x~S!FAC9GHf6ZMxI6}J)Pt1FZpBCry|d*EDY@8x*8dc@yW^ z-0faWniw+hiAo}0M6UzI{XVRoyF9Wv-JDWDDSl0jOq_JG1H$@6t2!v&Y>{7 z4_383DAyYgiq>ya8=V%wG#Avd8pO(g9!!b61=J&19roN zK^~BFeV>GU(J+CZOZj@d2zwSoeM;eaO5l4IJ%QlD0dy=NExYixav&{I&s0tTxJSS< zhR!_@J9SeE8y4_02L=If!2%;SuxI*1^?TL!7eiby;yUeR6(!!@BlH-snVuBv5w=wk z@CQBjHtj;4ebF8)Me#HRjSh|6bx{Vp`NkSY13&g49H|0n6GP+$_SGPdrJKy+Rc;s) zH`lF4YdiS!xI}wh8zg6AK2C?$plFq#B%zLp*vk)?2gdSpDAjH4_~p4Ub!Am z@D2y~tk!vMv~%A+SIOrr#n4Wz(LS%h;pQ(z^!U_da&r;CXpSI3c3-wSQkd%tKbQ0O zv24>k-CL!vNX#GKbj0^P|NhFSTmS6KJvad1{Sg2V`1iCSdmHojAI$#CrZlLkX^W+b z@w(7fK~iZnET7?IHwS5Du31<4u^G}{;QNro3dk~x^Ue}YuC}CwnSq&V;;y81fgJwc ztUznyC(SCW7Vd)7QQ;VjqJBZ9erQ>4TZ~}UBKQlL;H%912~N1&lCSixCp>SDQ;%=g z+2>Dh4pBZY(YnuwJ+#l%5vUJJ4=f-bm8R|1)L7$$`zOip()p~7Euj28s8`E)3VIe7 z`H%#t1StD338#@yMmY-&H|(y2naq}2!wvT0NbrB$FsCe=$xi;cL{ z?E-bjYf*&iMMf*o<7K{?lRF!pZPDwNv1TM?WT;C;Rn{-l5QdwZiiY_2geR7xAd`a! zH7WLsr{Di|r#_EK|lbgxkwzib7 zd3hNs?D3hklZe>+WQ!b`P0t(Zp}bbChjn&vwpfG9CbZO5S5LSgTl_Sq|H2FV66)}Q zB|nZ$T(|?$l~IJo-~e(Q0HzFMCZ^x+-(?Jo5*Qwp*=#P!5#L+f4`Lq@tjFEs`^A1t z@1R7HV&AxRkQd_!;B5Ytgm!KWV^%4pkU8SHd^zKjUUYD@F9k{oyQFi~_Mu!#ln5v! zd^>(jAo>t<0qB>pvO}Edi_nuyh$!A~pIF%2E+VL?+xs-LNE>d?L*@e7)EqSW^$?<_ zv}nG(Mg-^QowJz-S#(KD3}ie#>Y`txhp!d02?8eL>UZlZ>vy-=DA;fg=($lsel4NVNzqOPPfY0NzAEp)-lN}m==h((K#Gwt*vizk5h(21*c_p$@*%; z8Xz?JF3a0CR6jPRWiRvP@0fv(zFE>6C|5q_aTx7~iK81S34i{2!}lx;{M0>ZnImf} zR7P!~W~XR5HliM^jk1D-DKmy_Boh8=25Vy2eON>PVh~j_dKY1ojwD&=R&T$A@A{Q4 zR(TL3Uq7s?{ALkKMY&hdCA|8G$i3NL>{~@7*4|N?eEy>L#D)DTBu$j!1~tn89Lcn& z%uBoZ_NAJmY}KbkdU~-&JDo}QS!}Yz!IR~5U>0-bV5Vd7`9{0+Wnt?@&{_}k(JFP4 zxrwC@IY8d&vQPIOm2454LhY6Zto03C-7-1UX6$2x3wReOG2 z4g9W0i`gB;CtTa4_EHO zVO#28GN(?s{3tC6wDftWPDRVP?^iKW9ik(9`MX#7yF`Mdq$9lsLT?82^g$%Ni!$FK zBzMVYG6s)R`ll{Is;=$sxUl=PFCm{{WyP~}@v#OLzCVI>g;$Gbz3pB;YepaFx^e5; zy0Kp1Bp;9%iv=9a-8?&uUe~kx*@$K7?yiQNn~C_~!0)6d=tu17bO@DxLAVVyp?6G$ z=YbFsINw1gq|{Iz@MQDxjl{AUk59g&X(p$;kU}6E=dx1|_ZL;^McHLiAZXEw{3R3# z-b-h%!KaK=uu-2#N6^F7As32LEj_5seB>QYu1hZogsO#Tyy?71i@U9mggmWQ96o)C zrfMREifdnwtZ2qc&z%92!G`;~fsB)#pw+WL6b!Fq?sxspZLixB+Xmr{w{?SdHhqkB zU2}Mrpv@x=WpzlzaVkGP&7fkD9xGQ*{BE47G3pzqOd&8KMCPVA>N#jNOtV;aacGa( z*%=J0L!}41J)gnypy`5jas!&SMo~-4-Q8HjeeEWxBmw@Mj_^3F<()9bE0%rx0f`Vo z+H;Bz-{?;98_1v43WoyXS8-qffFBe9kovdO3PmSdTN`^vX+2vJdp#2?BWuV13Mx^l zq-}%9kIbV;j=a<)cDbs-H~qJu5}p@+LjyS|NGoaj7j9}prwc~GUujvqu8SYgq*lu+4TI2a0wS^M=T*F5TJE%Wrote2^CewIhELrVzOe;esBS09S5#x7QXe%#*iD$d_6| z5D224*cFEE?eTu98{qkY&7X5V1YvgC*8#@r*fai^6;0jC+Gw5GGuXi(spc6R z=60sHkRB5w7?!Nq1c%Hbof8dXv6j)D_27sj>;7g?fcLz`JMExYD{CUPFB+d(o0&9%WSN65We~R*Mu?-CF73T+<(boxF1m z!gMj^6rO2m7+UeEY_pb78L$ba7dtl1m{9KENz)$?=$tcwl812L>wtSF@DPCV({Zt1=(o}@>$d0 zB;2qbWoGTH%JgOh9^cQfW1wekqU!r~XO zwrB}xhmjtPFBqhko11qOkJW!f)D6096dCl6*1I`@luou^)GK)?dI;w50vNuR5+{NF zjHy9YY2ARfJW9hBW;6KmQ@^06ON+QdRD5!&g*>-LUPG5!Y-b(jAZIvaYV+>!Ee`p} ztJeViEk)VSp-c!;2AXvqV^>9%MibUFb_>6ZICu53eAm2f3I&+lj_>l&j>=JSLH-{H zOE3M6K}lA4O*dCrI+eowbJI^ARVKCSxW80HL2o~3!Lq5hMWyoyLDO|FP;j@iyNyba z9~qkNHx^OrO`_UU6+Kn3gRUw@^`4TPY1rdf20ycW`6}y`CM9GV-f#>7^d_!T^-CLX?y-jh|Ac}ry+6k*3YNy<^FRiMOG zBA|wyMF*EzKe04}{aFDw)j3muSN_zQvy4hleGh0;a}H@jmZR4!Tx?x(n4@Ut>Y*r= z!pJ*zR`AG%z|8U^0e>wECO>r6Jg#z@ioF@6b@?L(g${yn9heMx-7Kj1Flr|7`i)`| z$ef233j8=2U+(uYBl7sQn$c5Wb;~Rk9zLtFqm9=Xr_{Bqsvi#~|_n*=R zs4xxvE1^Rc)NtW41z0zqkE$cm`4J zN%V_f6?_Z!s_41BCtCLT_CA;6=(=Wms6=c2L!#Wuw^+NMaq0M~;`YyCy`d=5pv)P=b{vDw3ujW#;${=V0%D zv-tUAu=)mBUiQcNZ|*CrsRKxS?<#>fEC3+*Z;i1^W|l^Oj^n7R=`g4A@m0nX!7hP4 zkT?c}JQ+AjFfVCV01G0p0W8^;0@4~X;bwq$398PJcsZu)#^nY+Az7;UYeG*0Q|4Vz z$ZLU2@f=T_K382_0@+KfdkSK_D0C_-}IL7c$cMrA-V~yIP zSw%&7#z;(OT6#TGFVtuVdVMLt8k7QsM-GD)wX#g5siKa6**eKmlFm$7$ANiOqZWp- z`8ID~$#vBIhbeTH);z3TIe}$BHNqW{4x(GUAC34fFNzstIkTgvE<@n_sWOAF7tDHB zI#$P!tvPR>P3w<`u4-%CjHEk3%HY~;Ew6Mo$sLT=G4b2baQRXd?euh+$kjgTs?o>* zN;q-27g~hO?}OnfOdwXtyZc;}QCsAK$vXPzDK;b)euOOJb5K!CC-CLf^G^B1C&*C* zP2gl0?j(10dnS77KbR81a)haJS&qDG#R~UvkO0ckC4t)Wf0{n zLxELqBu!!2shWfGSV?XphTI6#gOo6wD#qPPozeX-2F z4hm>@p|SLweQUX95z!O5CqhSS<$5j*NU2fi6G?p5qO@JTjyA#_AsO>Bh)OILsP(Zu z4*7R$VX_BFd4$*d%TLzIqAjYLUfJs$CY3{YbR&KQYlS%nW{!L4q|Q)mx|JAt5X%PU#zbEnPt?7*7yBOMXZxObEKuY>v!$uGPiiq6&lvHZcz4W)Yq_i z5_H$qVPFY^K^{lqPqb~_E*U^i_O$($R(|q}l48Hz$jyrpFp76`lE|M!btvgRN@0viMDM8tb}pZO$P6L(S{S38NRn{Sm**}0pa8A1P8*&uYccroTlvq)Hbx+-8vfOU|eUOQ5K$chN%r(RgdyuuEZM;gEjlX7#blf)d z8swJoh=hWSF_}(YcTn6_L;SAmm>~L{EGWd4G??JGP*CdGtbtimnit|aK7)&4Ql(kN zEHk1wh|jF`4#|etpq?0jMll?puwMF72SXokECt4T>cA&u;@%H>{%Fo5u5@Wze)PTS zb=`Hay)zL0k}Y`ra_aC1Ur!}2fV$4`*+ozgNnJBf4w?y;zPl}jKhej1wn^DK)rO=M zMLK~+>X5t(vVtfgg76kR=RI4_;fbrG8tQA24D{%ZG-C88`B2PML9|wD+X7G27ikdm zW3KoLKgZrb0=}DHBK!dT5oP$Sv##y(8XLxEd+KqLj=#uO zSM1}9=o95?$ksl^%q+)w-gS)@^sd#yyY|l>vcq$CF$;ydouRG2hghp+3(k@H004Y}`gg6t%4Uj2 zj*e#5CJuiL&xr|EvPk?NhYxb#<>1H@c!B(VujFF-!9O8T$>I5zrc6t~$j4i>Q%Ig! zkFKNSXOFUxA|mNN06ohMEg#E|Ia{25IlD1-e!X5@Zhd+=IG_V81!{q~=di&5q45QMzR;Qv*4C?d|9O?X&2 z#dLm(VO)4&{{)Lt>hj?u>$a3jnjo8U%64wSBgfQOn`COEs)M#MOBA~y(z@x{puW!R zc-hhXlUw6;E$~r)+MYr@wtPt5N|n*&2YuKC^%16a_sSP{q6!@SiJy&m68OWELVnxa zjU)UM)Clb(%gE?^BSW#)imxYJAI>0!A1flRx^1w_NwIfuo9~dIsd4FWC_a)VNA3A! z8g6nkg^E}FB>FK_N|ZR5%QFN$RMu+I9GEYIGs6!Q(Gi4vgX+@Y^ zX$tvZ5=)A#X|gUE^OIvC*Ybgx6I98+?Bh4RqNmG#32UWG>+cEM8{ z)~myq{u*ai7psn7ieniB<%XmhdOh)jOt>#o3g0T|77xW%0R;Od!bKOhtpJdvDU@ZpJPq?Kb+9S=el>_mBeC^T(@FWMtMh41u0`VjU zj|lgDN_i`T?xCUhtOUY+2=Sl>hmHgUouYdJY^w?Nez^I59wE3?s4pJl!J z5NapDN$>K`anu3Mr*qoZyD|EEv_JP%^d`78nfJbm3l0EC{}21BqrH=(DV>y_qm;FY zqLcpLp4$-rky3g;$6n9c;J=(&luoVZ#E^O71NT29gI%}M;OSA!%j8;*i#CHmwNIcz z1rvfoh3X=iq+w!n)eYA?f2Xp4U)LhF%8d_ByUyBHP=5@flr`2~7(%)wVoul}02_p1vU zai65C+PbKc(d&X+t4dDh=z|#r<-JAveh443#|-nshS;X)>4|-skLF_B#}#xUQ#h4L zSU3Wq*}lDBfMOrB6?$GMgvwLC{GcAoUr0geed0zEVL%vdfEo22q`%g$%+MLQJK7+q z{H}21)R8Ba^E&v&4Ij2os#D6N8JJlP2L-nHg6P{$6cM3#~+= z3@J-SuX-?p#Nm*_{JL1tEYAwU;-tgtom9P!Z?CPsWV}*zGA)jJx4vT_vYug*+@K@w z0dvOiSG3}4+yUw6={;RrI#dfRn2?AzGaK0w3Of^)uXoBYfkPpz+M5ujRz zBOq9yTBIK*)Kqk?N_?{+M9cX&Q7}H|eGd;_$vJV5xU=XV*I`=>n`ewnbgb9bUHif% zjljD#YUs#i+tNHKsQUQwS!Nvqro8`d&3kxWETLV%8m#h(dzV5r_xMG%E#D|m9q0Mw#(n;i3wS<=lE1#G>px^S9AJ_qjoF1TRy}U(It+UY`QKA*@GNT zKf-F4*&%_5)erj&L!3l8fhfr`zJ*rz1!K#JL;Q0~sF8;9un%PNk3;26|IWeJZaX>k zpRu^!Bi=o(@MN1eeA4%}?%(iDZtnSN5)7p&s=@2QEdt}R4R4_nj99XEZzNx|!`el4 z>1P{6;J<{+u;wzsM=m&!&)~5|VMu*W8kv~kjHYVwRTlV(p4?-Hk&f&UH3&4efocTr zgiR`<_>hPz>=u;gW=Q(luaOjILyFWP462A=J=ZRTmEZ+_LiFd3TZr;Pr1?GxDuV+6 zc>ev4`$tD@RQ-Dx`;T>_&Snyz)WSNAOT?!!z=R2(j);(_krNg^3D2ZY#L+IF1h2P? zdF`yqM)`#GMF@bIVDoXkicYd;wJ-A)H4(rXaINzkWI6a8c-`Mk`DDGqZ6SB5BJ{F? z%EPWA7_b*|HChhZQ6|OiIWIeXwQm|a)>&|ph%!3tW4W!c^{P#wv6Zi(a_~NaqhUJf zn2*cmHN?lfZ8uqRs$A2l4cOnZqh<)&!+ihPWVV$OHiO~q0=%aj8<41llkPc zTtyFBv>ton1~QYQlbk-+nSzWkA`g_a`Qacm%oE!x8(lVx_S!X!s#FsBr{JIoK~0cCZRz>vU`~#D3=GGti~4YQ5{$%jmH^~ z(OU)ClevqyuSam}EG=q7s&)Wy6zo}B^bauL*?t2bxhz(S&`r>7zI`a#Yagm0a7~5I zTJ71>_aEaf*@n;|kixxFE~?>AS25SASGJH@uIan`N+HIeby8Cfp1#I?)Uvh!iy}BO zf(*lyA!)TM#8uMj*@m9p!SIA+l&-<`MILmR8G9HqSgGBQVW9L#dOH~wEJ@W4v6_Ot zaGQC^R7Hh}W8CPPG|(Y3S=xFoLP+t^QD zX>}1!YMNnhLnM`VrD4l;hvAHbP47&r@@^Hyqb&o2iHap{2^NO8RD;B`@tTXW_ye&RrR8_WVtJox2x|W2kd`riX3Y zZUOoE`7n~1cob8QnIzHY(PQ9`-Z_nR^LblvydNA`8VnejohC1}*HakMky;k+^RFuM zEVUW987xNl3oUP@IHE2B$B&izg^N#aw`lt-4}Kj}7$YLs4skA>^y*i;79;c}}{?d47|IymK=n>J) z0Au5GuU(n9mlfi{2pI=-x@CrL8CE7_I;rNl^qVT@1dYWcvi(Nmc#~DjT+;KHD-%U8By|e!D*k)i9 ztfm2)C^^KZcLwG~8PnB?T4D`jXA(rKg02nvAOmc&`lE8GL>*XBuxg39uBCd1#F2p= z;nNPRme}1O5g zax=JsZVj~gTnqE!y{Gi~P#798yHHYV{DJu8>7VN02q>Vamed2J&&fxFw*sY~2u`c| z3rG0!6TNqMi<4dmlkhVkx`-pIFJQa+H-4WQ$y_b*D!ixE-#@tTA8BDFej0HZ5jsmV zeS1B7H(CoDM@utnT`LCZhzQ-!G++2zSu+1Xj~WyvYY3JKY% zdCBQ&auuox*$LV4X<7;isTHaUN*Zwl#JlloJMqc5T4@QO$S#%Sm$dTw)A|6wpRZ=e zYfw4tJ>?Aizn`f6!*{f{_BOUg_Ks#o4u#PSQ2q2U!uJ`4hhV9|r^pb2jz98N`jjm+ zMOXvZx(Imq=f(Tq&b^d$4~;52<3ad|g@C{61o044qbOw|jPxGWAk5%y5CdC@86-m|NrL~Um4#E*UJDCa-Jo82Sy8F_c4x7hPIJK@lH3n z3PRSV7n-~n_vcer(UD5@#|IVBEDy9)0|9Uj2t`|-gdc(M8Pnx4F1MLZ>*ch$ClEIM zFIyhYuM%tlVOgJ|fmabfU7Ga5bkwa$XOWCx3q2L11Vq%65%VsS z+LQ_^kJYAKFqlb7)w<`-%G{xi+APvJ#fn2B@r zdE2(aE5B#k-`OwX_f!4hvj5Hx>t8hPfAa65XN4WB|Jl9X?d=Q_!8spFY|F@`h z?bk25z5m31KI88`cc0gCzwyHNPbcKvTe^OK@y-87Y#4stpW=Gr%)yV>_k1ot)i~$X z$z#>KI6w6lz7ua{{B!@>oYq)bRoVLIfA^Pn{PHh9!S<`({M5fVp^J92x(|OZ`S;sa z=y$MZ)c@&|{_oIbO6z-{&LL?jabxyPt6MkzfBq$W@36dS{d#Ln69$KG{vjXw>sdox z&OfMq|Ly!kJ?{^Tx4nOP?mM@@FX0;I$M+k#UqwpZe64v~>Xqd`^Rq{%PnuZpesAEq z+8>A2KJm*kKDSr>w|B+=r>&o?Z^d2v>MQVOuf75k!=!pA<`4gszSy%ruRc;TcYpKd ziT^kbeCCdE{FUE$_6@Jj|JlDxFC23|Uin^SokG3M{@+J;E&sXwTI%op>HGUl|HrNk zGyA_JsE)m=`5#}&qW|X`dj8A25H0Rq`ZZ2$&Ix-l$)BuCl796!{FnLu`%>Bdg5UH1 zFKT^P=l*ZsiSznP*1U}0@Z|ja9rwd?f3{ki{^!0{@Kg5t?;@f71%I#o|M*B~|KU1* zgYVpJ(jTU`&i*a?tNOrN;1%T${+s-{_I}O%!@hr#V%`29Kd4^U{`X(fGkuBTSM~p9 zJ$t|9etgXjSK$-Cwd0z9%>BOG{fT~D*3J0W@;|MAmLK01pR)4Q{!3@ymcM&{PHz7W z)6)9R*T>%191IK$jtmnfxUVV%vgQJ@B@p|%hB)ea`nl;R=jZAt=A{(n zXQt>Um1gFo=%*JYrsSmRCngr@=BAb;rX-dm>J=2_7o--IWTqB}p4rI7crzw}X6`RM;Mag2b_ttIS%|1Vc<4F4X(lZ`YN-9dwwJeR2UAO=!`4EVOffxpsG^zrb zju7AbCgx?Pr52ayRpjQN8}MUq{(Fx@3=9?585p=>x`FhP#&19}IVZ8WIJHv=2K^%-9sr;>B+&o> literal 0 HcmV?d00001 diff --git a/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.module b/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.module new file mode 100644 index 00000000..8c651d71 --- /dev/null +++ b/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.module @@ -0,0 +1,116 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.google.android.maps.robolectric", + "module": "shadows", + "version": "1.0.0", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "9.1.0" + } + }, + "variants": [ + { + "name": "releaseVariantReleaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "2.3.20" + } + } + ], + "files": [ + { + "name": "shadows-1.0.0.aar", + "url": "shadows-1.0.0.aar", + "size": 50521, + "sha512": "be8db1c9b97ded5b3b7598ab58d223df837bcede822c89be78cbc1cd40a93e803f50555479e0c392820214c2ea8dd34864c4686bf3d9c02ed0a1bc77b11b824f", + "sha256": "17a2cdbf2948a18133acaaad74145e542b091efc85b154aae47e48829a4f2bb5", + "sha1": "379b67474c7045fa5c5bc1ede172390ce40fe075", + "md5": "665f37deca4f4c7eacd22e65291bca63" + } + ] + }, + { + "name": "releaseVariantReleaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "2.3.20" + } + } + ], + "files": [ + { + "name": "shadows-1.0.0.aar", + "url": "shadows-1.0.0.aar", + "size": 50521, + "sha512": "be8db1c9b97ded5b3b7598ab58d223df837bcede822c89be78cbc1cd40a93e803f50555479e0c392820214c2ea8dd34864c4686bf3d9c02ed0a1bc77b11b824f", + "sha256": "17a2cdbf2948a18133acaaad74145e542b091efc85b154aae47e48829a4f2bb5", + "sha1": "379b67474c7045fa5c5bc1ede172390ce40fe075", + "md5": "665f37deca4f4c7eacd22e65291bca63" + } + ] + }, + { + "name": "releaseVariantReleaseSourcePublication", + "attributes": { + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "sources", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "shadows-1.0.0-sources.jar", + "url": "shadows-1.0.0-sources.jar", + "size": 31416, + "sha512": "3f1714d5f352dc5996d90c0ace16f38566253fe3b49f1b8d24e444571750b6e5039c0631463a92cb3cea7c5f9ac90e2096e4e66272899d627dea3a82542f6783", + "sha256": "b442bdd6c6ac88128058c5af4a28288b827432731a68624012764d15973972c0", + "sha1": "563b547330cd1701f1a1f15b39cde1fa73554aa0", + "md5": "cd96d340bf7af4bea40b4f9631959fc6" + } + ] + }, + { + "name": "releaseVariantReleaseJavaDocPublication", + "attributes": { + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "javadoc", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "shadows-1.0.0-javadoc.jar", + "url": "shadows-1.0.0-javadoc.jar", + "size": 358915, + "sha512": "5ed9457edc6b3f24cdc7db19a7b3a5cb49d34322c18e81a47b7a21ba1587a053571a33a34ecda00950723fa5b700cbe775a828434499f1e5c7b93b32d3a9e54c", + "sha256": "b5ce9bfff24d3efab5eadc18d70ce3b9d61733e7b562aae078cbc9163435d4bd", + "sha1": "d0f4bcddae95c27f268fc77fc9e062b90e845448", + "md5": "1d822db43393004267bb9f11eb4d62dc" + } + ] + } + ] +} diff --git a/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.pom b/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.pom new file mode 100644 index 00000000..e5068d5c --- /dev/null +++ b/repo/com/google/android/maps/robolectric/shadows/1.0.0/shadows-1.0.0.pom @@ -0,0 +1,41 @@ + + + + + + + + 4.0.0 + com.google.android.maps.robolectric + shadows + 1.0.0 + aar + Android Maps Robolectric Shadows + Robolectric shadows and Truth testing utilities for Google Maps SDK on Android. + https://github.com/googlemaps/android-maps-robolectric + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + Google Maps Platform Developer Relations + + + + scm:git:github.com/googlemaps/android-maps-robolectric.git + scm:git:ssh://github.com/googlemaps/android-maps-robolectric.git + https://github.com/googlemaps/android-maps-robolectric/tree/main + + + + org.jetbrains.kotlin + kotlin-stdlib + 2.3.20 + compile + + + diff --git a/settings.gradle.kts b/settings.gradle.kts index e0b1768c..cf66485c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,6 +17,9 @@ dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { + maven { + url = uri(rootDir.resolve("repo")) + } if (providers.gradleProperty("useMavenLocal").orNull == "true" || providers.environmentVariable("USE_MAVEN_LOCAL").orNull == "true") { mavenLocal()