From cf2d445362a791ae34a1fc80b526e9181c3f97c0 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Sat, 18 Nov 2023 12:20:46 +0100 Subject: [PATCH 01/19] Move Android instrumented test `ThemeTest` to unit test --- core/designsystem/build.gradle.kts | 2 +- .../samples/apps/nowinandroid/core/designsystem/ThemeTest.kt | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) rename core/designsystem/src/{androidTest => test}/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt (98%) diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 7bd1d12d8..d94c15d68 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -42,5 +42,5 @@ dependencies { implementation(libs.androidx.core.ktx) implementation(libs.coil.kt.compose) - androidTestImplementation(projects.core.testing) + testImplementation(libs.androidx.compose.ui.testManifest) } diff --git a/core/designsystem/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt b/core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt similarity index 98% rename from core/designsystem/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt rename to core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt index b10df053c..06b516436 100644 --- a/core/designsystem/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt +++ b/core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt @@ -43,6 +43,9 @@ import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme import com.google.samples.apps.nowinandroid.core.designsystem.theme.TintTheme import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config import kotlin.test.assertEquals /** @@ -53,6 +56,8 @@ import kotlin.test.assertEquals * [LocalBackgroundTheme] — have the expected values for a given theme mode, as specified by the * design system. */ +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [33]) class ThemeTest { @get:Rule From c1118eaf2285a5af9818dc302bda47781316a56c Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Fri, 22 Dec 2023 14:43:44 +0100 Subject: [PATCH 02/19] Apply suggestions from code review --- .../samples/apps/nowinandroid/core/designsystem/ThemeTest.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt b/core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt index 06b516436..eb49cc374 100644 --- a/core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt +++ b/core/designsystem/src/test/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/ThemeTest.kt @@ -45,7 +45,6 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config import kotlin.test.assertEquals /** @@ -57,7 +56,6 @@ import kotlin.test.assertEquals * design system. */ @RunWith(RobolectricTestRunner::class) -@Config(sdk = [33]) class ThemeTest { @get:Rule From 4cd0778cdc22328ec737622f8788d94fc33af712 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 09:00:33 +0000 Subject: [PATCH 03/19] Bump androidx.activity:activity-compose from 1.8.0 to 1.8.2 Bumps androidx.activity:activity-compose from 1.8.0 to 1.8.2. --- updated-dependencies: - dependency-name: androidx.activity:activity-compose dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 795510bce..276d02d05 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ androidDesugarJdkLibs = "2.0.4" # AGP and tools should be updated together androidGradlePlugin = "8.2.0" androidTools = "31.2.0" -androidxActivity = "1.8.0" +androidxActivity = "1.8.2" androidxAppCompat = "1.6.1" androidxBrowser = "1.6.0" androidxComposeBom = "2023.10.01" From 3fbdf75ecf29452201bc3f2b41dc5cb8b4e32ce1 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Sun, 21 Jan 2024 10:34:14 +0000 Subject: [PATCH 04/19] Unnecessary safe call on a non-null receiver --- .../samples/apps/nowinandroid/core/result/ResultKtTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/common/src/test/kotlin/com/google/samples/apps/nowinandroid/core/result/ResultKtTest.kt b/core/common/src/test/kotlin/com/google/samples/apps/nowinandroid/core/result/ResultKtTest.kt index 4f1229e9d..2c3c7b763 100644 --- a/core/common/src/test/kotlin/com/google/samples/apps/nowinandroid/core/result/ResultKtTest.kt +++ b/core/common/src/test/kotlin/com/google/samples/apps/nowinandroid/core/result/ResultKtTest.kt @@ -38,7 +38,7 @@ class ResultKtTest { when (val errorResult = awaitItem()) { is Result.Error -> assertEquals( "Test Done", - errorResult.exception?.message, + errorResult.exception.message, ) Result.Loading, is Result.Success, From 06f08a58dde72ea2d38baf0d137f36f159417339 Mon Sep 17 00:00:00 2001 From: SergeyPinkevich Date: Wed, 13 Mar 2024 23:00:27 +0000 Subject: [PATCH 05/19] =?UTF-8?q?=F0=9F=A4=96=20Updates=20baselines=20for?= =?UTF-8?q?=20Dependency=20Guard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app-nia-catalog/dependencies/releaseRuntimeClasspath.txt | 6 +++--- app/dependencies/prodReleaseRuntimeClasspath.txt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt b/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt index 8a4bff7ab..686e709ed 100644 --- a/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt +++ b/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.8.0 -androidx.activity:activity-ktx:1.8.0 -androidx.activity:activity:1.8.0 +androidx.activity:activity-compose:1.8.2 +androidx.activity:activity-ktx:1.8.2 +androidx.activity:activity:1.8.2 androidx.annotation:annotation-experimental:1.4.0 androidx.annotation:annotation-jvm:1.7.1 androidx.annotation:annotation:1.7.1 diff --git a/app/dependencies/prodReleaseRuntimeClasspath.txt b/app/dependencies/prodReleaseRuntimeClasspath.txt index 69cf3e50e..0bcbb6796 100644 --- a/app/dependencies/prodReleaseRuntimeClasspath.txt +++ b/app/dependencies/prodReleaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.8.0 -androidx.activity:activity-ktx:1.8.0 -androidx.activity:activity:1.8.0 +androidx.activity:activity-compose:1.8.2 +androidx.activity:activity-ktx:1.8.2 +androidx.activity:activity:1.8.2 androidx.annotation:annotation-experimental:1.4.0 androidx.annotation:annotation-jvm:1.7.1 androidx.annotation:annotation:1.7.1 From bcebb9aae24936a6aea54985bc8ca65ef9eb1e17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 08:51:49 +0000 Subject: [PATCH 06/19] Bump androidxMacroBenchmark from 1.2.2 to 1.2.3 Bumps `androidxMacroBenchmark` from 1.2.2 to 1.2.3. Updates `androidx.benchmark:benchmark-macro-junit4` from 1.2.2 to 1.2.3 Updates `androidx.baselineprofile` from 1.2.2 to 1.2.3 --- updated-dependencies: - dependency-name: androidx.benchmark:benchmark-macro-junit4 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: androidx.baselineprofile dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4e397175c..e387e6828 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ androidxDataStore = "1.0.0" androidxEspresso = "3.5.1" androidxHiltNavigationCompose = "1.2.0" androidxLifecycle = "2.7.0" -androidxMacroBenchmark = "1.2.2" +androidxMacroBenchmark = "1.2.3" androidxMetrics = "1.0.0-alpha04" androidxNavigation = "2.7.4" androidxProfileinstaller = "1.3.1" From c531f90b37e7b9e4b2cfd07630b8271fefcc4127 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 08:51:55 +0000 Subject: [PATCH 07/19] Bump app.cash.turbine:turbine from 1.0.0 to 1.1.0 Bumps [app.cash.turbine:turbine](https://github.com/cashapp/turbine) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/cashapp/turbine/releases) - [Changelog](https://github.com/cashapp/turbine/blob/trunk/CHANGELOG.md) - [Commits](https://github.com/cashapp/turbine/compare/1.0.0...1.1.0) --- updated-dependencies: - dependency-name: app.cash.turbine:turbine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4e397175c..ba03554fe 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -57,7 +57,7 @@ roborazzi = "1.7.0" room = "2.6.1" secrets = "2.0.1" truth = "1.4.2" -turbine = "1.0.0" +turbine = "1.1.0" [libraries] accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } From 6be27fc66d6be012034e1707d88a9726c1688e69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 08:52:08 +0000 Subject: [PATCH 08/19] Bump protobuf from 3.25.2 to 4.26.0 Bumps `protobuf` from 3.25.2 to 4.26.0. Updates `com.google.protobuf:protobuf-kotlin-lite` from 3.25.2 to 4.26.0 Updates `com.google.protobuf:protoc` from 3.25.2 to 4.26.0 - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/commits) --- updated-dependencies: - dependency-name: com.google.protobuf:protobuf-kotlin-lite dependency-type: direct:production update-type: version-update:semver-major - dependency-name: com.google.protobuf:protoc dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4e397175c..4f9d210fd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -48,7 +48,7 @@ kotlinxSerializationJson = "1.6.3" ksp = "1.9.22-1.0.18" moduleGraph = "2.5.0" okhttp = "4.12.0" -protobuf = "3.25.2" +protobuf = "4.26.0" protobufPlugin = "0.9.4" retrofit = "2.9.0" retrofitKotlinxSerializationJson = "1.0.0" From 1d401951580a156b8314ea71c1591748e666f61d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 08:52:14 +0000 Subject: [PATCH 09/19] Bump com.dropbox.dependency-guard from 0.4.3 to 0.5.0 Bumps [com.dropbox.dependency-guard](https://github.com/dropbox/dependency-guard) from 0.4.3 to 0.5.0. - [Release notes](https://github.com/dropbox/dependency-guard/releases) - [Changelog](https://github.com/dropbox/dependency-guard/blob/main/CHANGELOG.md) - [Commits](https://github.com/dropbox/dependency-guard/compare/0.4.3...0.5.0) --- updated-dependencies: - dependency-name: com.dropbox.dependency-guard dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4e397175c..1a5964e36 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,7 +30,7 @@ androidxUiAutomator = "2.2.0" androidxWindowManager = "1.2.0" androidxWork = "2.9.0" coil = "2.6.0" -dependencyGuard = "0.4.3" +dependencyGuard = "0.5.0" firebaseBom = "32.4.0" firebaseCrashlyticsPlugin = "2.9.9" firebasePerfPlugin = "1.4.2" From c4b669a1389b5d63e22c4d3fbd90c6aafbde560b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 18 Mar 2024 08:56:14 +0000 Subject: [PATCH 10/19] =?UTF-8?q?=F0=9F=A4=96=20Updates=20baselines=20for?= =?UTF-8?q?=20Dependency=20Guard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/dependencies/prodReleaseRuntimeClasspath.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/dependencies/prodReleaseRuntimeClasspath.txt b/app/dependencies/prodReleaseRuntimeClasspath.txt index 69cf3e50e..b3153c1a7 100644 --- a/app/dependencies/prodReleaseRuntimeClasspath.txt +++ b/app/dependencies/prodReleaseRuntimeClasspath.txt @@ -182,8 +182,8 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-android com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.j2objc:j2objc-annotations:1.3 -com.google.protobuf:protobuf-javalite:3.25.2 -com.google.protobuf:protobuf-kotlin-lite:3.25.2 +com.google.protobuf:protobuf-javalite:4.26.0 +com.google.protobuf:protobuf-kotlin-lite:4.26.0 com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0 com.squareup.okhttp3:logging-interceptor:4.12.0 com.squareup.okhttp3:okhttp:4.12.0 From c306ab756e7c5c11ef5d396fa20c3d2c018aa1ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 08:40:27 +0000 Subject: [PATCH 11/19] Bump gradle/wrapper-validation-action from 2 to 3 Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 2 to 3. - [Release notes](https://github.com/gradle/wrapper-validation-action/releases) - [Commits](https://github.com/gradle/wrapper-validation-action/compare/v2...v3) --- updated-dependencies: - dependency-name: gradle/wrapper-validation-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/Build.yaml | 2 +- .github/workflows/Release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Build.yaml b/.github/workflows/Build.yaml index db326c380..5a3eadb66 100644 --- a/.github/workflows/Build.yaml +++ b/.github/workflows/Build.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@v4 - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v2 + uses: gradle/wrapper-validation-action@v3 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 7de3cb11e..2184a4c50 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v2 + uses: gradle/wrapper-validation-action@v3 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties From 06fa2eaba81a5ddd1bb248675b1b3ec94140bc7e Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Sat, 27 Apr 2024 20:40:44 +0100 Subject: [PATCH 12/19] Remove duplicated AndroidX Work testing dependency --- gradle/libs.versions.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7c354432c..5d0f2b6e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -149,7 +149,6 @@ firebase-performance-gradlePlugin = { group = "com.google.firebase", name = "per kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } room-gradlePlugin = { group = "androidx.room", name = "room-gradle-plugin", version.ref = "room" } -work-testing = { group = "androidx.work", name = "work-testing", version = "2.9.0" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From 3e1f54586966b969a1abc2eef1dbb7f028f68454 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Sat, 27 Apr 2024 20:41:44 +0100 Subject: [PATCH 13/19] Update build.gradle.kts --- app/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ae1c0d686..355ec42c0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -115,8 +115,8 @@ dependencies { testImplementation(projects.core.testing) testImplementation(projects.sync.syncTest) testImplementation(libs.androidx.compose.ui.test) + testImplementation(libs.androidx.work.testing) testImplementation(libs.hilt.android.testing) - testImplementation(libs.work.testing) testDemoImplementation(libs.robolectric) testDemoImplementation(libs.roborazzi) From 5b896710d1e7cbf1155591dea8ee5286872e50a0 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Sat, 27 Apr 2024 21:47:04 +0200 Subject: [PATCH 14/19] Regenerate SVG graphs and cleanup/reformat files Graphviz generates unnecessary comments when targeting SVG output: - graph random title - duplicated node titles - graphviz version (we only care about SVG result) --- docs/images/graphs/dep_graph_app.svg | 842 ++++++++---------- .../graphs/dep_graph_app_nia_catalog.svg | 127 ++- .../graphs/dep_graph_core_analytics.svg | 28 +- docs/images/graphs/dep_graph_core_common.svg | 28 +- docs/images/graphs/dep_graph_core_data.svg | 270 +++--- .../graphs/dep_graph_core_data_test.svg | 292 +++--- .../images/graphs/dep_graph_core_database.svg | 50 +- .../graphs/dep_graph_core_datastore.svg | 94 +- .../graphs/dep_graph_core_datastore_proto.svg | 28 +- .../graphs/dep_graph_core_datastore_test.svg | 127 ++- .../graphs/dep_graph_core_designsystem.svg | 28 +- docs/images/graphs/dep_graph_core_domain.svg | 303 +++---- docs/images/graphs/dep_graph_core_model.svg | 28 +- docs/images/graphs/dep_graph_core_network.svg | 72 +- .../graphs/dep_graph_core_notifications.svg | 72 +- .../dep_graph_core_screenshot_testing.svg | 72 +- docs/images/graphs/dep_graph_core_testing.svg | 358 ++++---- docs/images/graphs/dep_graph_core_ui.svg | 94 +- .../graphs/dep_graph_feature_bookmarks.svg | 369 ++++---- .../graphs/dep_graph_feature_foryou.svg | 413 ++++----- .../graphs/dep_graph_feature_interests.svg | 413 ++++----- .../graphs/dep_graph_feature_search.svg | 413 ++++----- .../graphs/dep_graph_feature_settings.svg | 369 ++++---- .../images/graphs/dep_graph_feature_topic.svg | 369 ++++---- .../graphs/dep_graph_sync_sync_test.svg | 336 ++++--- docs/images/graphs/dep_graph_sync_work.svg | 303 +++---- generateModuleGraphs.sh | 7 +- 27 files changed, 2641 insertions(+), 3264 deletions(-) diff --git a/docs/images/graphs/dep_graph_app.svg b/docs/images/graphs/dep_graph_app.svg index 57a592a8e..8a94310b2 100644 --- a/docs/images/graphs/dep_graph_app.svg +++ b/docs/images/graphs/dep_graph_app.svg @@ -1,463 +1,383 @@ - - - - - -G - - - -:app - -:app - - - -:feature:interests - -:feature:interests - - - -:app->:feature:interests - - - - - -:feature:foryou - -:feature:foryou - - - -:app->:feature:foryou - - - - - -:feature:bookmarks - -:feature:bookmarks - - - -:app->:feature:bookmarks - - - - - -:feature:topic - -:feature:topic - - - -:app->:feature:topic - - - - - -:feature:search - -:feature:search - - - -:app->:feature:search - - - - - -:feature:settings - -:feature:settings - - - -:app->:feature:settings - - - - - -:core:common - -:core:common - - - -:app->:core:common - - - - - -:core:ui - -:core:ui - - - -:app->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:app->:core:designsystem - - - - - -:core:data - -:core:data - - - -:app->:core:data - - - - - -:core:model - -:core:model - - - -:app->:core:model - - - - - -:core:analytics - -:core:analytics - - - -:app->:core:analytics - - - - - -:sync:work - -:sync:work - - - -:app->:sync:work - - - - - -:feature:interests->:core:ui - - - - - -:feature:interests->:core:designsystem - - - - - -:feature:interests->:core:data - - - - - -:core:domain - -:core:domain - - - -:feature:interests->:core:domain - - - - - -:feature:foryou->:core:ui - - - - - -:feature:foryou->:core:designsystem - - - - - -:feature:foryou->:core:data - - - - - -:feature:foryou->:core:domain - - - - - -:feature:bookmarks->:core:ui - - - - - -:feature:bookmarks->:core:designsystem - - - - - -:feature:bookmarks->:core:data - - - - - -:feature:topic->:core:ui - - - - - -:feature:topic->:core:designsystem - - - - - -:feature:topic->:core:data - - - - - -:feature:search->:core:ui - - - - - -:feature:search->:core:designsystem - - - - - -:feature:search->:core:data - - - - - -:feature:search->:core:domain - - - - - -:feature:settings->:core:ui - - - - - -:feature:settings->:core:designsystem - - - - - -:feature:settings->:core:data - - - - - -:core:ui->:core:designsystem - - - - - -:core:ui->:core:model - - - - - -:core:ui->:core:analytics - - - - - -:core:data->:core:common - - - - - -:core:data->:core:analytics - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:sync:work->:core:data - - - - - -:sync:work->:core:analytics - - - - - -:core:domain->:core:data - - - - - -:core:domain->:core:model - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore->:core:model - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:common - - - - - -:core:network->:core:model - - - - - -:core:notifications->:core:common - - - - - -:core:notifications->:core:model - - - - + + + + G + + + :app + + :app + + + :feature:interests + + :feature:interests + + + :app->:feature:interests + + + + + :feature:foryou + + :feature:foryou + + + :app->:feature:foryou + + + + + :feature:bookmarks + + :feature:bookmarks + + + :app->:feature:bookmarks + + + + + :feature:topic + + :feature:topic + + + :app->:feature:topic + + + + + :feature:search + + :feature:search + + + :app->:feature:search + + + + + :feature:settings + + :feature:settings + + + :app->:feature:settings + + + + + :core:common + + :core:common + + + :app->:core:common + + + + + :core:ui + + :core:ui + + + :app->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :app->:core:designsystem + + + + + :core:data + + :core:data + + + :app->:core:data + + + + + :core:model + + :core:model + + + :app->:core:model + + + + + :core:analytics + + :core:analytics + + + :app->:core:analytics + + + + + :sync:work + + :sync:work + + + :app->:sync:work + + + + + :feature:interests->:core:ui + + + + + :feature:interests->:core:designsystem + + + + + :feature:interests->:core:data + + + + + :core:domain + + :core:domain + + + :feature:interests->:core:domain + + + + + :feature:foryou->:core:ui + + + + + :feature:foryou->:core:designsystem + + + + + :feature:foryou->:core:data + + + + + :feature:foryou->:core:domain + + + + + :feature:bookmarks->:core:ui + + + + + :feature:bookmarks->:core:designsystem + + + + + :feature:bookmarks->:core:data + + + + + :feature:topic->:core:ui + + + + + :feature:topic->:core:designsystem + + + + + :feature:topic->:core:data + + + + + :feature:search->:core:ui + + + + + :feature:search->:core:designsystem + + + + + :feature:search->:core:data + + + + + :feature:search->:core:domain + + + + + :feature:settings->:core:ui + + + + + :feature:settings->:core:designsystem + + + + + :feature:settings->:core:data + + + + + :core:ui->:core:designsystem + + + + + :core:ui->:core:model + + + + + :core:ui->:core:analytics + + + + + :core:data->:core:common + + + + + :core:data->:core:analytics + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :sync:work->:core:data + + + + + :sync:work->:core:analytics + + + + + :core:domain->:core:data + + + + + :core:domain->:core:model + + + + + :core:database->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore->:core:model + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:common + + + + + :core:network->:core:model + + + + + :core:notifications->:core:common + + + + + :core:notifications->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_app_nia_catalog.svg b/docs/images/graphs/dep_graph_app_nia_catalog.svg index b58415cef..fa7cfca5a 100644 --- a/docs/images/graphs/dep_graph_app_nia_catalog.svg +++ b/docs/images/graphs/dep_graph_app_nia_catalog.svg @@ -1,73 +1,58 @@ - - - - - -G - - - -:app-nia-catalog - -:app-nia-catalog - - - -:core:designsystem - -:core:designsystem - - - -:app-nia-catalog->:core:designsystem - - - - - -:core:ui - -:core:ui - - - -:app-nia-catalog->:core:ui - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - + + + + G + + + :app-nia-catalog + + :app-nia-catalog + + + :core:designsystem + + :core:designsystem + + + :app-nia-catalog->:core:designsystem + + + + + :core:ui + + :core:ui + + + :app-nia-catalog->:core:ui + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_core_analytics.svg b/docs/images/graphs/dep_graph_core_analytics.svg index ac21c0707..9cb11e4eb 100644 --- a/docs/images/graphs/dep_graph_core_analytics.svg +++ b/docs/images/graphs/dep_graph_core_analytics.svg @@ -1,19 +1,13 @@ - - - - - -G - - - -:core:analytics - -:core:analytics - - + + + + G + + + :core:analytics + + :core:analytics + + diff --git a/docs/images/graphs/dep_graph_core_common.svg b/docs/images/graphs/dep_graph_core_common.svg index c91f33853..a1cdcb610 100644 --- a/docs/images/graphs/dep_graph_core_common.svg +++ b/docs/images/graphs/dep_graph_core_common.svg @@ -1,19 +1,13 @@ - - - - - -G - - - -:core:common - -:core:common - - + + + + G + + + :core:common + + :core:common + + diff --git a/docs/images/graphs/dep_graph_core_data.svg b/docs/images/graphs/dep_graph_core_data.svg index cacf03a1f..8637b06ee 100644 --- a/docs/images/graphs/dep_graph_core_data.svg +++ b/docs/images/graphs/dep_graph_core_data.svg @@ -1,151 +1,123 @@ - - - - - -G - - - -:core:data - -:core:data - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:analytics - -:core:analytics - - - -:core:data->:core:analytics - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:model - -:core:model - - - -:core:database->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore->:core:model - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:common - - - - - -:core:network->:core:model - - - - - -:core:notifications->:core:common - - - - - -:core:notifications->:core:model - - - - + + + + G + + + :core:data + + :core:data + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:analytics + + :core:analytics + + + :core:data->:core:analytics + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:model + + :core:model + + + :core:database->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore->:core:model + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:common + + + + + :core:network->:core:model + + + + + :core:notifications->:core:common + + + + + :core:notifications->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_core_data_test.svg b/docs/images/graphs/dep_graph_core_data_test.svg index 162c83f10..798696c11 100644 --- a/docs/images/graphs/dep_graph_core_data_test.svg +++ b/docs/images/graphs/dep_graph_core_data_test.svg @@ -1,163 +1,133 @@ - - - - - -G - - - -:core:data-test - -:core:data-test - - - -:core:data - -:core:data - - - -:core:data-test->:core:data - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:analytics - -:core:analytics - - - -:core:data->:core:analytics - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:model - -:core:model - - - -:core:database->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore->:core:model - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:common - - - - - -:core:network->:core:model - - - - - -:core:notifications->:core:common - - - - - -:core:notifications->:core:model - - - - + + + + G + + + :core:data-test + + :core:data-test + + + :core:data + + :core:data + + + :core:data-test->:core:data + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:analytics + + :core:analytics + + + :core:data->:core:analytics + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:model + + :core:model + + + :core:database->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore->:core:model + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:common + + + + + :core:network->:core:model + + + + + :core:notifications->:core:common + + + + + :core:notifications->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_core_database.svg b/docs/images/graphs/dep_graph_core_database.svg index 9e907b96f..dd3aef7ee 100644 --- a/docs/images/graphs/dep_graph_core_database.svg +++ b/docs/images/graphs/dep_graph_core_database.svg @@ -1,31 +1,23 @@ - - - - - -G - - - -:core:database - -:core:database - - - -:core:model - -:core:model - - - -:core:database->:core:model - - - - + + + + G + + + :core:database + + :core:database + + + :core:model + + :core:model + + + :core:database->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_core_datastore.svg b/docs/images/graphs/dep_graph_core_datastore.svg index cfcf78db2..3bf13d087 100644 --- a/docs/images/graphs/dep_graph_core_datastore.svg +++ b/docs/images/graphs/dep_graph_core_datastore.svg @@ -1,55 +1,43 @@ - - - - - -G - - - -:core:datastore - -:core:datastore - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:model - -:core:model - - - -:core:datastore->:core:model - - - - - -:core:common - -:core:common - - - -:core:datastore->:core:common - - - - + + + + G + + + :core:datastore + + :core:datastore + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:model + + :core:model + + + :core:datastore->:core:model + + + + + :core:common + + :core:common + + + :core:datastore->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_core_datastore_proto.svg b/docs/images/graphs/dep_graph_core_datastore_proto.svg index d572d0ea7..fd3bba9b6 100644 --- a/docs/images/graphs/dep_graph_core_datastore_proto.svg +++ b/docs/images/graphs/dep_graph_core_datastore_proto.svg @@ -1,19 +1,13 @@ - - - - - -G - - - -:core:datastore-proto - -:core:datastore-proto - - + + + + G + + + :core:datastore-proto + + :core:datastore-proto + + diff --git a/docs/images/graphs/dep_graph_core_datastore_test.svg b/docs/images/graphs/dep_graph_core_datastore_test.svg index ca8d3f84b..e42e5e795 100644 --- a/docs/images/graphs/dep_graph_core_datastore_test.svg +++ b/docs/images/graphs/dep_graph_core_datastore_test.svg @@ -1,73 +1,58 @@ - - - - - -G - - - -:core:datastore-test - -:core:datastore-test - - - -:core:common - -:core:common - - - -:core:datastore-test->:core:common - - - - - -:core:datastore - -:core:datastore - - - -:core:datastore-test->:core:datastore - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:model - -:core:model - - - -:core:datastore->:core:model - - - - + + + + G + + + :core:datastore-test + + :core:datastore-test + + + :core:common + + :core:common + + + :core:datastore-test->:core:common + + + + + :core:datastore + + :core:datastore + + + :core:datastore-test->:core:datastore + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:model + + :core:model + + + :core:datastore->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_core_designsystem.svg b/docs/images/graphs/dep_graph_core_designsystem.svg index f46f075f0..f33d70705 100644 --- a/docs/images/graphs/dep_graph_core_designsystem.svg +++ b/docs/images/graphs/dep_graph_core_designsystem.svg @@ -1,19 +1,13 @@ - - - - - -G - - - -:core:designsystem - -:core:designsystem - - + + + + G + + + :core:designsystem + + :core:designsystem + + diff --git a/docs/images/graphs/dep_graph_core_domain.svg b/docs/images/graphs/dep_graph_core_domain.svg index 1c97b64e8..68543466c 100644 --- a/docs/images/graphs/dep_graph_core_domain.svg +++ b/docs/images/graphs/dep_graph_core_domain.svg @@ -1,169 +1,138 @@ - - - - - -G - - - -:core:domain - -:core:domain - - - -:core:data - -:core:data - - - -:core:domain->:core:data - - - - - -:core:model - -:core:model - - - -:core:domain->:core:model - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:analytics - -:core:analytics - - - -:core:data->:core:analytics - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :core:domain + + :core:domain + + + :core:data + + :core:data + + + :core:domain->:core:data + + + + + :core:model + + :core:model + + + :core:domain->:core:model + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:analytics + + :core:analytics + + + :core:data->:core:analytics + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_core_model.svg b/docs/images/graphs/dep_graph_core_model.svg index 290457d6c..66959f2f1 100644 --- a/docs/images/graphs/dep_graph_core_model.svg +++ b/docs/images/graphs/dep_graph_core_model.svg @@ -1,19 +1,13 @@ - - - - - -G - - - -:core:model - -:core:model - - + + + + G + + + :core:model + + :core:model + + diff --git a/docs/images/graphs/dep_graph_core_network.svg b/docs/images/graphs/dep_graph_core_network.svg index ea804bcff..9902ee8e3 100644 --- a/docs/images/graphs/dep_graph_core_network.svg +++ b/docs/images/graphs/dep_graph_core_network.svg @@ -1,43 +1,33 @@ - - - - - -G - - - -:core:network - -:core:network - - - -:core:common - -:core:common - - - -:core:network->:core:common - - - - - -:core:model - -:core:model - - - -:core:network->:core:model - - - - + + + + G + + + :core:network + + :core:network + + + :core:common + + :core:common + + + :core:network->:core:common + + + + + :core:model + + :core:model + + + :core:network->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_core_notifications.svg b/docs/images/graphs/dep_graph_core_notifications.svg index cf25ca32e..3a1126ca8 100644 --- a/docs/images/graphs/dep_graph_core_notifications.svg +++ b/docs/images/graphs/dep_graph_core_notifications.svg @@ -1,43 +1,33 @@ - - - - - -G - - - -:core:notifications - -:core:notifications - - - -:core:model - -:core:model - - - -:core:notifications->:core:model - - - - - -:core:common - -:core:common - - - -:core:notifications->:core:common - - - - + + + + G + + + :core:notifications + + :core:notifications + + + :core:model + + :core:model + + + :core:notifications->:core:model + + + + + :core:common + + :core:common + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_core_screenshot_testing.svg b/docs/images/graphs/dep_graph_core_screenshot_testing.svg index e9fc6d48a..8021dcda6 100644 --- a/docs/images/graphs/dep_graph_core_screenshot_testing.svg +++ b/docs/images/graphs/dep_graph_core_screenshot_testing.svg @@ -1,43 +1,33 @@ - - - - - -G - - - -:core:screenshot-testing - -:core:screenshot-testing - - - -:core:common - -:core:common - - - -:core:screenshot-testing->:core:common - - - - - -:core:designsystem - -:core:designsystem - - - -:core:screenshot-testing->:core:designsystem - - - - + + + + G + + + :core:screenshot-testing + + :core:screenshot-testing + + + :core:common + + :core:common + + + :core:screenshot-testing->:core:common + + + + + :core:designsystem + + :core:designsystem + + + :core:screenshot-testing->:core:designsystem + + + + diff --git a/docs/images/graphs/dep_graph_core_testing.svg b/docs/images/graphs/dep_graph_core_testing.svg index 29d367e4b..ac1b301aa 100644 --- a/docs/images/graphs/dep_graph_core_testing.svg +++ b/docs/images/graphs/dep_graph_core_testing.svg @@ -1,199 +1,163 @@ - - - - - -G - - - -:core:testing - -:core:testing - - - -:core:analytics - -:core:analytics - - - -:core:testing->:core:analytics - - - - - -:core:data - -:core:data - - - -:core:testing->:core:data - - - - - -:core:model - -:core:model - - - -:core:testing->:core:model - - - - - -:core:notifications - -:core:notifications - - - -:core:testing->:core:notifications - - - - - -:core:common - -:core:common - - - -:core:testing->:core:common - - - - - -:core:designsystem - -:core:designsystem - - - -:core:testing->:core:designsystem - - - - - -:core:data->:core:analytics - - - - - -:core:data->:core:notifications - - - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - + + + + G + + + :core:testing + + :core:testing + + + :core:analytics + + :core:analytics + + + :core:testing->:core:analytics + + + + + :core:data + + :core:data + + + :core:testing->:core:data + + + + + :core:model + + :core:model + + + :core:testing->:core:model + + + + + :core:notifications + + :core:notifications + + + :core:testing->:core:notifications + + + + + :core:common + + :core:common + + + :core:testing->:core:common + + + + + :core:designsystem + + :core:designsystem + + + :core:testing->:core:designsystem + + + + + :core:data->:core:analytics + + + + + :core:data->:core:notifications + + + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_core_ui.svg b/docs/images/graphs/dep_graph_core_ui.svg index 2eba46866..a36dd7031 100644 --- a/docs/images/graphs/dep_graph_core_ui.svg +++ b/docs/images/graphs/dep_graph_core_ui.svg @@ -1,55 +1,43 @@ - - - - - -G - - - -:core:ui - -:core:ui - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:designsystem - -:core:designsystem - - - -:core:ui->:core:designsystem - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - + + + + G + + + :core:ui + + :core:ui + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:designsystem + + :core:designsystem + + + :core:ui->:core:designsystem + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_feature_bookmarks.svg b/docs/images/graphs/dep_graph_feature_bookmarks.svg index cfbb86412..8fbe423c2 100644 --- a/docs/images/graphs/dep_graph_feature_bookmarks.svg +++ b/docs/images/graphs/dep_graph_feature_bookmarks.svg @@ -1,205 +1,168 @@ - - - - - -G - - - -:feature:bookmarks - -:feature:bookmarks - - - -:core:ui - -:core:ui - - - -:feature:bookmarks->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:feature:bookmarks->:core:designsystem - - - - - -:core:data - -:core:data - - - -:feature:bookmarks->:core:data - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :feature:bookmarks + + :feature:bookmarks + + + :core:ui + + :core:ui + + + :feature:bookmarks->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :feature:bookmarks->:core:designsystem + + + + + :core:data + + :core:data + + + :feature:bookmarks->:core:data + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_feature_foryou.svg b/docs/images/graphs/dep_graph_feature_foryou.svg index e196bc7da..6b8af3764 100644 --- a/docs/images/graphs/dep_graph_feature_foryou.svg +++ b/docs/images/graphs/dep_graph_feature_foryou.svg @@ -1,229 +1,188 @@ - - - - - -G - - - -:feature:foryou - -:feature:foryou - - - -:core:ui - -:core:ui - - - -:feature:foryou->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:feature:foryou->:core:designsystem - - - - - -:core:data - -:core:data - - - -:feature:foryou->:core:data - - - - - -:core:domain - -:core:domain - - - -:feature:foryou->:core:domain - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:domain->:core:data - - - - - -:core:domain->:core:model - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :feature:foryou + + :feature:foryou + + + :core:ui + + :core:ui + + + :feature:foryou->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :feature:foryou->:core:designsystem + + + + + :core:data + + :core:data + + + :feature:foryou->:core:data + + + + + :core:domain + + :core:domain + + + :feature:foryou->:core:domain + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:domain->:core:data + + + + + :core:domain->:core:model + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_feature_interests.svg b/docs/images/graphs/dep_graph_feature_interests.svg index 3728cb4f6..b13783a27 100644 --- a/docs/images/graphs/dep_graph_feature_interests.svg +++ b/docs/images/graphs/dep_graph_feature_interests.svg @@ -1,229 +1,188 @@ - - - - - -G - - - -:feature:interests - -:feature:interests - - - -:core:ui - -:core:ui - - - -:feature:interests->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:feature:interests->:core:designsystem - - - - - -:core:data - -:core:data - - - -:feature:interests->:core:data - - - - - -:core:domain - -:core:domain - - - -:feature:interests->:core:domain - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:domain->:core:data - - - - - -:core:domain->:core:model - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :feature:interests + + :feature:interests + + + :core:ui + + :core:ui + + + :feature:interests->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :feature:interests->:core:designsystem + + + + + :core:data + + :core:data + + + :feature:interests->:core:data + + + + + :core:domain + + :core:domain + + + :feature:interests->:core:domain + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:domain->:core:data + + + + + :core:domain->:core:model + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_feature_search.svg b/docs/images/graphs/dep_graph_feature_search.svg index 24c90cb0c..ff299f33f 100644 --- a/docs/images/graphs/dep_graph_feature_search.svg +++ b/docs/images/graphs/dep_graph_feature_search.svg @@ -1,229 +1,188 @@ - - - - - -G - - - -:feature:search - -:feature:search - - - -:core:ui - -:core:ui - - - -:feature:search->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:feature:search->:core:designsystem - - - - - -:core:data - -:core:data - - - -:feature:search->:core:data - - - - - -:core:domain - -:core:domain - - - -:feature:search->:core:domain - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:domain->:core:data - - - - - -:core:domain->:core:model - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :feature:search + + :feature:search + + + :core:ui + + :core:ui + + + :feature:search->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :feature:search->:core:designsystem + + + + + :core:data + + :core:data + + + :feature:search->:core:data + + + + + :core:domain + + :core:domain + + + :feature:search->:core:domain + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:domain->:core:data + + + + + :core:domain->:core:model + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_feature_settings.svg b/docs/images/graphs/dep_graph_feature_settings.svg index 93826715a..1b9648d8b 100644 --- a/docs/images/graphs/dep_graph_feature_settings.svg +++ b/docs/images/graphs/dep_graph_feature_settings.svg @@ -1,205 +1,168 @@ - - - - - -G - - - -:feature:settings - -:feature:settings - - - -:core:ui - -:core:ui - - - -:feature:settings->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:feature:settings->:core:designsystem - - - - - -:core:data - -:core:data - - - -:feature:settings->:core:data - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :feature:settings + + :feature:settings + + + :core:ui + + :core:ui + + + :feature:settings->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :feature:settings->:core:designsystem + + + + + :core:data + + :core:data + + + :feature:settings->:core:data + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_feature_topic.svg b/docs/images/graphs/dep_graph_feature_topic.svg index cbda3c225..49fe361a8 100644 --- a/docs/images/graphs/dep_graph_feature_topic.svg +++ b/docs/images/graphs/dep_graph_feature_topic.svg @@ -1,205 +1,168 @@ - - - - - -G - - - -:feature:topic - -:feature:topic - - - -:core:ui - -:core:ui - - - -:feature:topic->:core:ui - - - - - -:core:designsystem - -:core:designsystem - - - -:feature:topic->:core:designsystem - - - - - -:core:data - -:core:data - - - -:feature:topic->:core:data - - - - - -:core:ui->:core:designsystem - - - - - -:core:analytics - -:core:analytics - - - -:core:ui->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:ui->:core:model - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:database->:core:model - - - - - -:core:datastore->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:model - - - - - -:core:network->:core:common - - - - - -:core:notifications->:core:model - - - - - -:core:notifications->:core:common - - - - + + + + G + + + :feature:topic + + :feature:topic + + + :core:ui + + :core:ui + + + :feature:topic->:core:ui + + + + + :core:designsystem + + :core:designsystem + + + :feature:topic->:core:designsystem + + + + + :core:data + + :core:data + + + :feature:topic->:core:data + + + + + :core:ui->:core:designsystem + + + + + :core:analytics + + :core:analytics + + + :core:ui->:core:analytics + + + + + :core:model + + :core:model + + + :core:ui->:core:model + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:database->:core:model + + + + + :core:datastore->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:model + + + + + :core:network->:core:common + + + + + :core:notifications->:core:model + + + + + :core:notifications->:core:common + + + + diff --git a/docs/images/graphs/dep_graph_sync_sync_test.svg b/docs/images/graphs/dep_graph_sync_sync_test.svg index 1e0753393..58a31af19 100644 --- a/docs/images/graphs/dep_graph_sync_sync_test.svg +++ b/docs/images/graphs/dep_graph_sync_sync_test.svg @@ -1,187 +1,153 @@ - - - - - -G - - - -:sync:sync-test - -:sync:sync-test - - - -:core:data - -:core:data - - - -:sync:sync-test->:core:data - - - - - -:sync:work - -:sync:work - - - -:sync:sync-test->:sync:work - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:analytics - -:core:analytics - - - -:core:data->:core:analytics - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:sync:work->:core:data - - - - - -:sync:work->:core:analytics - - - - - -:core:model - -:core:model - - - -:core:database->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore->:core:model - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:common - - - - - -:core:network->:core:model - - - - - -:core:notifications->:core:common - - - - - -:core:notifications->:core:model - - - - + + + + G + + + :sync:sync-test + + :sync:sync-test + + + :core:data + + :core:data + + + :sync:sync-test->:core:data + + + + + :sync:work + + :sync:work + + + :sync:sync-test->:sync:work + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:analytics + + :core:analytics + + + :core:data->:core:analytics + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :sync:work->:core:data + + + + + :sync:work->:core:analytics + + + + + :core:model + + :core:model + + + :core:database->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore->:core:model + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:common + + + + + :core:network->:core:model + + + + + :core:notifications->:core:common + + + + + :core:notifications->:core:model + + + + diff --git a/docs/images/graphs/dep_graph_sync_work.svg b/docs/images/graphs/dep_graph_sync_work.svg index 6901b5761..2581a10ae 100644 --- a/docs/images/graphs/dep_graph_sync_work.svg +++ b/docs/images/graphs/dep_graph_sync_work.svg @@ -1,169 +1,138 @@ - - - - - -G - - - -:sync:work - -:sync:work - - - -:core:analytics - -:core:analytics - - - -:sync:work->:core:analytics - - - - - -:core:data - -:core:data - - - -:sync:work->:core:data - - - - - -:core:data->:core:analytics - - - - - -:core:common - -:core:common - - - -:core:data->:core:common - - - - - -:core:database - -:core:database - - - -:core:data->:core:database - - - - - -:core:datastore - -:core:datastore - - - -:core:data->:core:datastore - - - - - -:core:network - -:core:network - - - -:core:data->:core:network - - - - - -:core:notifications - -:core:notifications - - - -:core:data->:core:notifications - - - - - -:core:model - -:core:model - - - -:core:database->:core:model - - - - - -:core:datastore->:core:common - - - - - -:core:datastore->:core:model - - - - - -:core:datastore-proto - -:core:datastore-proto - - - -:core:datastore->:core:datastore-proto - - - - - -:core:network->:core:common - - - - - -:core:network->:core:model - - - - - -:core:notifications->:core:common - - - - - -:core:notifications->:core:model - - - - + + + + G + + + :sync:work + + :sync:work + + + :core:analytics + + :core:analytics + + + :sync:work->:core:analytics + + + + + :core:data + + :core:data + + + :sync:work->:core:data + + + + + :core:data->:core:analytics + + + + + :core:common + + :core:common + + + :core:data->:core:common + + + + + :core:database + + :core:database + + + :core:data->:core:database + + + + + :core:datastore + + :core:datastore + + + :core:data->:core:datastore + + + + + :core:network + + :core:network + + + :core:data->:core:network + + + + + :core:notifications + + :core:notifications + + + :core:data->:core:notifications + + + + + :core:model + + :core:model + + + :core:database->:core:model + + + + + :core:datastore->:core:common + + + + + :core:datastore->:core:model + + + + + :core:datastore-proto + + :core:datastore-proto + + + :core:datastore->:core:datastore-proto + + + + + :core:network->:core:common + + + + + :core:network->:core:model + + + + + :core:notifications->:core:common + + + + + :core:notifications->:core:model + + + + diff --git a/generateModuleGraphs.sh b/generateModuleGraphs.sh index fb2d74712..3a826586b 100755 --- a/generateModuleGraphs.sh +++ b/generateModuleGraphs.sh @@ -100,8 +100,11 @@ echo "$module_paths" | while read -r module_path; do -Pmodules.graph.output.gv="/tmp/${file_name}.gv" \ -Pmodules.graph.of.module="${module_path}" "docs/images/graphs/${file_name}.svg" + # Convert to SVG using dot, remove unnecessary comments, and reformat + dot -Tsvg "/tmp/${file_name}.gv" | + sed 's//-->\x0/g' | grep -zv '^r1jaFf&R{@?|ieOUnmb?lQxCN!GnAqcii9$ z{a!Y{Vfz)xD!m2VfPH=`bk5m6dG{LfgtA4ITT?Sckn<92rt@pG+sk>3UhTQx9ywF3 z=$|RgTN<=6-B4+UbYWxfQUOe8cmEDY3QL$;mOw&X2;q9x9qNz3J97)3^jb zdlzkDYLKm^5?3IV>t3fdWwNpq3qY;hsj=pk9;P!wVmjP|6Dw^ez7_&DH9X33$T=Q{>Nl zv*a*QMM1-2XQ)O=3n@X+RO~S`N13QM81^ZzljPJIFBh%x<~No?@z_&LAl)ap!AflS zb{yFXU(Uw(dw%NR_l7%eN2VVX;^Ln{I1G+yPQr1AY+0MapBnJ3k1>Zdrw^3aUig*! z?xQe8C0LW;EDY(qe_P!Z#Q^jP3u$Z3hQpy^w7?jI;~XTz0ju$DQNc4LUyX}+S5zh> zGkB%~XU+L?3pw&j!i|x6C+RyP+_XYNm9`rtHpqxvoCdV_MXg847oHhYJqO+{t!xxdbsw4Ugn($Cwkm^+36&goy$vkaFs zrH6F29eMPXyoBha7X^b+N*a!>VZ<&Gf3eeE+Bgz7PB-6X7 z_%2M~{sTwC^iQVjH9#fVa3IO6E4b*S%M;#WhHa^L+=DP%arD_`eW5G0<9Tk=Ci?P@ z6tJXhej{ZWF=idj32x7dp{zmQY;;D2*11&-(~wifGXLmD6C-XR=K3c>S^_+x!3OuB z%D&!EOk;V4Sq6eQcE{UEDsPMtED*;qgcJU^UwLwjE-Ww54d73fQ`9Sv%^H>juEKmxN+*aD=0Q+ZFH1_J(*$~9&JyUJ6!>(Nj zi3Z6zWC%Yz0ZjX>thi~rH+lqv<9nkI3?Ghn7@!u3Ef){G(0Pvwnxc&(YeC=Kg2-7z zr>a^@b_QClXs?Obplq@Lq-l5>W);Y^JbCYk^n8G`8PzCH^rnY5Zk-AN6|7Pn=oF(H zxE#8LkI;;}K7I^UK55Z)c=zn7OX_XVgFlEGSO}~H^y|wd7piw*b1$kA!0*X*DQ~O` z*vFvc5Jy7(fFMRq>XA8Tq`E>EF35{?(_;yAdbO8rrmrlb&LceV%;U3haVV}Koh9C| zTZnR0a(*yN^Hp9u*h+eAdn)d}vPCo3k?GCz1w>OOeme(Mbo*A7)*nEmmUt?eN_vA; z=~2}K_}BtDXJM-y5fn^v>QQo+%*FdZQFNz^j&rYhmZHgDA-TH47#Wjn_@iH4?6R{J z%+C8LYIy>{3~A@|y4kN8YZZp72F8F@dOZWp>N0-DyVb4UQd_t^`P)zsCoygL_>>x| z2Hyu7;n(4G&?wCB4YVUIVg0K!CALjRsb}&4aLS|}0t`C}orYqhFe7N~h9XQ_bIW*f zGlDCIE`&wwyFX1U>}g#P0xRRn2q9%FPRfm{-M7;}6cS(V6;kn@6!$y06lO>8AE_!O z{|W{HEAbI0eD$z9tQvWth7y>qpTKQ0$EDsJkQxAaV2+gE28Al8W%t`Pbh zPl#%_S@a^6Y;lH6BfUfZNRKwS#x_keQ`;Rjg@qj zZRwQXZd-rWngbYC}r6X)VCJ-=D54A+81%(L*8?+&r7(wOxDSNn!t(U}!;5|sjq zc5yF5$V!;%C#T+T3*AD+A({T)#p$H_<$nDd#M)KOLbd*KoW~9E19BBd-UwBX1<0h9 z8lNI&7Z_r4bx;`%5&;ky+y7PD9F^;Qk{`J@z!jJKyJ|s@lY^y!r9p^75D)_TJ6S*T zLA7AA*m}Y|5~)-`cyB+lUE9CS_`iB;MM&0fX**f;$n($fQ1_Zo=u>|n~r$HvkOUK(gv_L&@DE0b4#ya{HN)8bNQMl9hCva zi~j0v&plRsp?_zR zA}uI4n;^_Ko5`N-HCw_1BMLd#OAmmIY#ol4M^UjLL-UAat+xA+zxrFqKc@V5Zqan_ z+LoVX-Ub2mT7Dk_ z<+_3?XWBEM84@J_F}FDe-hl@}x@v-s1AR{_YD!_fMgagH6s9uyi6pW3gdhauG>+H? zi<5^{dp*5-9v`|m*ceT&`Hqv77oBQ+Da!=?dDO&9jo;=JkzrQKx^o$RqAgzL{ zjK@n)JW~lzxB>(o(21ibI}i|r3e;17zTjdEl5c`Cn-KAlR7EPp84M@!8~CywES-`mxKJ@Dsf6B18_!XMIq$Q3rTDeIgJ3X zB1)voa#V{iY^ju>*Cdg&UCbx?d3UMArPRHZauE}c@Fdk;z85OcA&Th>ZN%}=VU%3b9={Q(@M4QaeuGE(BbZ{U z?WPDG+sjJSz1OYFpdImKYHUa@ELn%n&PR9&I7B$<-c3e|{tPH*u@hs)Ci>Z@5$M?lP(#d#QIz}~()P7mt`<2PT4oHH}R&#dIx4uq943D8gVbaa2&FygrSk3*whGr~Jn zR4QnS@83UZ_BUGw;?@T zo5jA#potERcBv+dd8V$xTh)COur`TQ^^Yb&cdBcesjHlA3O8SBeKrVj!-D3+_p6%P zP@e{|^-G-C(}g+=bAuAy8)wcS{$XB?I=|r=&=TvbqeyXiuG43RR>R72Ry7d6RS;n^ zO5J-QIc@)sz_l6%Lg5zA8cgNK^GK_b-Z+M{RLYk5=O|6c%!1u6YMm3jJg{TfS*L%2 zA<*7$@wgJ(M*gyTzz8+7{iRP_e~(CCbGB}FN-#`&1ntct@`5gB-u6oUp3#QDxyF8v zOjxr}pS{5RpK1l7+l(bC)0>M;%7L?@6t}S&a zx0gP8^sXi(g2_g8+8-1~hKO;9Nn%_S%9djd*;nCLadHpVx(S0tixw2{Q}vOPCWvZg zjYc6LQ~nIZ*b0m_uN~l{&2df2*ZmBU8dv`#o+^5p>D5l%9@(Y-g%`|$%nQ|SSRm0c zLZV)45DS8d#v(z6gj&6|ay@MP23leodS8-GWIMH8_YCScX#Xr)mbuvXqSHo*)cY9g z#Ea+NvHIA)@`L+)T|f$Etx;-vrE3;Gk^O@IN@1{lpg&XzU5Eh3!w;6l=Q$k|%7nj^ z|HGu}c59-Ilzu^w<93il$cRf@C(4Cr2S!!E&7#)GgUH@py?O;Vl&joXrep=2A|3Vn zH+e$Ctmdy3B^fh%12D$nQk^j|v=>_3JAdKPt2YVusbNW&CL?M*?`K1mK*!&-9Ecp~>V1w{EK(429OT>DJAV21fG z=XP=%m+0vV4LdIi#(~XpaUY$~fQ=xA#5?V%xGRr_|5WWV=uoG_Z&{fae)`2~u{6-p zG>E>8j({w7njU-5Lai|2HhDPntQ(X@yB z9l?NGoKB5N98fWrkdN3g8ox7Vic|gfTF~jIfXkm|9Yuu-p>v3d{5&hC+ZD%mh|_=* zD5v*u(SuLxzX~owH!mJQi%Z=ALvdjyt9U6baVY<88B>{HApAJ~>`buHVGQd%KUu(d z5#{NEKk6Vy08_8*E(?hqZe2L?P2$>!0~26N(rVzB9KbF&JQOIaU{SumX!TsYzR%wB z<5EgJXDJ=1L_SNCNZcBWBNeN+Y`)B%R(wEA?}Wi@mp(jcw9&^1EMSM58?68gwnXF` zzT0_7>)ep%6hid-*DZ42eU)tFcFz7@bo=<~CrLXpNDM}tv*-B(ZF`(9^RiM9W4xC%@ZHv=>w(&~$Wta%)Z;d!{J;e@z zX1Gkw^XrHOfYHR#hAU=G`v43E$Iq}*gwqm@-mPac0HOZ0 zVtfu7>CQYS_F@n6n#CGcC5R%4{+P4m7uVlg3axX}B(_kf((>W?EhIO&rQ{iUO$16X zv{Abj3ZApUrcar7Ck}B1%RvnR%uocMlKsRxV9Qqe^Y_5C$xQW@9QdCcF%W#!zj;!xWc+0#VQ*}u&rJ7)zc+{vpw+nV?{tdd&Xs`NV zKUp|dV98WbWl*_MoyzM0xv8tTNJChwifP!9WM^GD|Mkc75$F;j$K%Y8K@7?uJjq-w zz*|>EH5jH&oTKlIzueAN2926Uo1OryC|CmkyoQZABt#FtHz)QmQvSX35o`f z<^*5XXxexj+Q-a#2h4(?_*|!5Pjph@?Na8Z>K%AAjNr3T!7RN;7c)1SqAJfHY|xAV z1f;p%lSdE8I}E4~tRH(l*rK?OZ>mB4C{3e%E-bUng2ymerg8?M$rXC!D?3O}_mka? zm*Y~JMu+_F7O4T;#nFv)?Ru6 z92r|old*4ZB$*6M40B;V&2w->#>4DEu0;#vHSgXdEzm{+VS48 z7U1tVn#AnQ3z#gP26$!dmS5&JsXsrR>~rWA}%qd{92+j zu+wYAqrJYOA%WC9nZ>BKH&;9vMSW_59z5LtzS4Q@o5vcrWjg+28#&$*8SMYP z!l5=|p@x6YnmNq>23sQ(^du5K)TB&K8t{P`@T4J5cEFL@qwtsCmn~p>>*b=37y!kB zn6x{#KjM{S9O_otGQub*K)iIjtE2NfiV~zD2x{4r)IUD(Y8%r`n;#)ujIrl8Sa+L{ z>ixGoZJ1K@;wTUbRRFgnltN_U*^EOJS zRo4Y+S`cP}e-zNtdl^S5#%oN#HLjmq$W^(Y6=5tM#RBK-M14RO7X(8Gliy3+&9fO; zXn{60%0sWh1_g1Z2r0MuGwSGUE;l4TI*M!$5dm&v9pO7@KlW@j_QboeDd1k9!7S)jIwBza-V#1)(7ht|sjY}a19sO!T z2VEW7nB0!zP=Sx17-6S$r=A)MZikCjlQHE)%_Ka|OY4+jgGOw=I3CM`3ui^=o0p7u z?xujpg#dRVZCg|{%!^DvoR*~;QBH8ia6%4pOh<#t+e_u!8gjuk_Aic=|*H24Yq~Wup1dTRQs0nlZOy+30f16;f7EYh*^*i9hTZ`h`015%{i|4 z?$7qC3&kt#(jI#<76Biz=bl=k=&qyaH>foM#zA7}N`Ji~)-f-t&tR4^do)-5t?Hz_Q+X~S2bZx{t+MEjwy3kGfbv(ij^@;=?H_^FIIu*HP_7mpV)NS{MY-Rr7&rvWo@Wd~{Lt!8|66rq`GdGu% z@<(<7bYcZKCt%_RmTpAjx=TNvdh+ZiLkMN+hT;=tC?%vQQGc7WrCPIYZwYTW`;x|N zrlEz1yf95FiloUU^(onr3A3>+96;;6aL?($@!JwiQ2hO|^i)b4pCJ7-y&a~B#J`#FO!3uBp{5GBvM2U@K85&o0q~6#LtppE&cVY z3Bv{xQ-;i}LN-60B2*1suMd=Fi%Y|7@52axZ|b=Wiwk^5eg{9X4}(q%4D5N5_Gm)` zg~VyFCwfkIKW(@@ZGAlTra6CO$RA_b*yz#){B82N7AYpQ9)sLQfhOAOMUV7$0|d$=_y&jl>va$3u-H z_+H*|UXBPLe%N2Ukwu1*)kt!$Y>(IH3`YbEt; znb1uB*{UgwG{pQnh>h@vyCE!6B~!k}NxEai#iY{$!_w54s5!6jG9%pr=S~3Km^EEA z)sCnnau+ZY)(}IK#(3jGGADw8V7#v~<&y5cF=5_Ypkrs3&7{}%(4KM7) zuSHVqo~g#1kzNwXc39%hL8atpa1Wd#V^uL=W^&E)fvGivt)B!M)?)Y#Ze&zU6O_I?1wj)*M;b*dE zqlcwgX#eVuZj2GKgBu@QB(#LHMd`qk<08i$hG1@g1;zD*#(9PHjVWl*5!;ER{Q#A9 zyQ%fu<$U?dOW=&_#~{nrq{RRyD8upRi}c-m!n)DZw9P>WGs>o1vefI}ujt_`O@l#Z z%xnOt4&e}LlM1-0*dd?|EvrAO-$fX8i{aTP^2wsmSDd!Xc9DxJB=x1}6|yM~QQPbl z0xrJcQNtWHgt*MdGmtj%x6SWYd?uGnrx4{m{6A9bYx`m z$*UAs@9?3s;@Jl19%$!3TxPlCkawEk12FADYJClt0N@O@Pxxhj+Kk(1jK~laR0*KGAc7%C4nI^v2NShTc4#?!p{0@p0T#HSIRndH;#Ts0YECtlSR}~{Uck+keoJq6iH)(Zc~C!fBe2~4(Wd> zR<4I1zMeW$<0xww(@09!l?;oDiq zk8qjS9Lxv$<5m#j(?4VLDgLz;8b$B%XO|9i7^1M;V{aGC#JT)c+L=BgCfO5k>CTlI zOlf~DzcopV29Dajzt*OcYvaUH{UJPaD$;spv%>{y8goE+bDD$~HQbON>W*~JD`;`- zZEcCPSdlCvANe z=?|+e{6AW$f(H;BND>uy1MvQ`pri>SafK5bK!YAE>0URAW9RS8#LWUHBOc&BNQ9T+ zJpg~Eky!u!9WBk)!$Z?!^3M~o_VPERYnk1NmzVYaGH;1h+;st==-;jzF~2LTn+x*k zvywHZg7~=aiJe=OhS@U>1fYGvT1+jsAaiaM;) zay2xsMKhO+FIeK?|K{G4SJOEt*eX?!>K8jpsZWW8c!X|JR#v(1+Ey5NM^TB1n|_40 z@Db2gH}PNT+3YEyqXP8U@)`E|Xat<{K5K;eK7O0yV72m|b!o43!e-!P>iW>7-9HN7 zmmc7)JX0^lPzF#>$#D~nU^3f!~Q zQWly&oZEb1847&czU;dg?=dS>z3lJkADL1innNtE(f?~OxM`%A_PBp?Lj;zDDomf$ z;|P=FTmqX|!sHO6uIfCmh4Fbgw@`DOn#`qAPEsYUiBvUlw zevH{)YWQu>FPXU$%1!h*2rtk_J}qNkkq+StX8Wc*KgG$yH#p-kcD&)%>)Yctb^JDB zJe>=!)5nc~?6hrE_3n^_BE<^;2{}&Z>Dr)bX>H{?kK{@R)`R5lnlO6yU&UmWy=d03 z*(jJIwU3l0HRW1PvReOb|MyZT^700rg8eFp#p<3Et%9msiCxR+jefK%x81+iN0=hG z;<`^RUVU+S)Iv-*5y^MqD@=cp{_cP4`s=z)Ti3!Bf@zCmfpZTwf|>|0t^E8R^s`ad z5~tA?0x7OM{*D;zb6bvPu|F5XpF11`U5;b*$p zNAq7E6c=aUnq>}$JAYsO&=L^`M|DdSSp5O4LA{|tO5^8%Hf1lqqo)sj=!aLNKn9(3 zvKk($N`p`f&u+8e^Z-?uc2GZ_6-HDQs@l%+pWh!|S9+y3!jrr3V%cr{FNe&U6(tYs zLto$0D+2}K_9kuxgFSeQ!EOXjJtZ$Pyl_|$mPQ9#fES=Sw8L% zO7Jij9cscU)@W+$jeGpx&vWP9ZN3fLDTp zaYM$gJD8ccf&g>n?a56X=y zec%nLN`(dVCpSl9&pJLf2BN;cR5F0Nn{(LjGe7RjFe7efp3R_2JmHOY#nWEc2TMhMSj5tBf-L zlxP3sV`!?@!mRnDTac{35I7h@WTfRjRiFw*Q*aD8)n)jdkJC@)jD-&mzAdK6Kqdct8P}~dqixq;n zjnX!pb^;5*Rr?5ycT7>AB9)RED^x+DVDmIbHKjcDv2lHK;apZOc=O@`4nJ;k|iikKk66v4{zN#lmSn$lh z_-Y3FC)iV$rFJH!#mNqWHF-DtSNbI)84+VLDWg$ph_tkKn_6+M1RZ!)EKaRhY={el zG-i@H!fvpH&4~$5Q+zHU(Ub=;Lzcrc3;4Cqqbr$O`c5M#UMtslK$3r+Cuz>xKl+xW?`t2o=q`1djXC=Q6`3C${*>dm~I{ z(aQH&Qd{{X+&+-4{epSL;q%n$)NOQ7kM}ea9bA++*F+t$2$%F!U!U}(&y7Sd0jQMV zkOhuJ$+g7^kb<`jqFiq(y1-~JjP13J&uB=hfjH5yAArMZx?VzW1~>tln~d5pt$uWR~TM!lIg+D)prR zocU0N2}_WTYpU`@Bsi1z{$le`dO{-pHFQr{M}%iEkX@0fv!AGCTcB90@e|slf#unz z*w4Cf>(^XI64l|MmWih1g!kwMJiifdt4C<5BHtaS%Ra>~3IFwjdu;_v*7BL|fPu+c zNp687`{}e@|%)5g4U*i=0zlSWXzz=YcZ*&Bg zr$r(SH0V5a%oHh*t&0y%R8&jDI=6VTWS_kJ!^WN!ET@XfEHYG-T1jJsDd`yEgh!^* z+!P62=v`R2=TBVjt=h}|JIg7N^RevZuyxyS+jsk>=iLA52Ak+7L?2$ZDUaWdi1PgB z_;*Uae_n&7o27ewV*y(wwK~8~tU<#Np6UUIx}zW6fR&dKiPq|$A{BwG_-wVfkm+EP zxHU@m`im3cD#fH63>_X`Il-HjZN_hqOVMG;(#7RmI13D-s_>41l|vDH1BglPsNJ+p zTniY{Hwoief+h%C^|@Syep#722=wmcTR7awIzimAcye?@F~f|n<$%=rM+Jkz9m>PF70$)AK@|h_^(zn?!;={;9Zo7{ zBI7O?6!J2Ixxk;XzS~ScO9{K1U9swGvR_d+SkromF040|Slk%$)M;9O_8h0@WPe4= z%iWM^ust8w$(NhO)7*8uq+9CycO$3m-l}O70sBi<4=j0CeE_&3iRUWJkDM$FIfrkR zHG2|hVh3?Nt$fdI$W?<|Qq@#hjDijk@7eUr1&JHYI>(_Q4^3$+Zz&R)Z`WqhBIvjo zX#EbA8P0Qla-yACvt)%oAVHa#kZi3Y8|(IOp_Z6J-t{)98*OXQ#8^>vTENsV@(M}^ z(>8BXw`{+)BfyZB!&85hT0!$>7$uLgp9hP9M7v=5@H`atsri1^{1VDxDqizj46-2^ z?&eA9udH#BD|QY2B7Zr$l;NJ-$L!u8G{MZoX)~bua5J=0p_JnM`$(D4S!uF}4smWq zVo%kQ~C~X?cWCH zo4s#FqJ)k|D{c_ok+sZ8`m2#-Uk8*o)io`B+WTD0PDA!G`DjtibftJXhPVjLZj~g& z=MM9nF$7}xvILx}BhM;J-Xnz0=^m1N2`Mhn6@ct+-!ijIcgi6FZ*oIPH(tGYJ2EQ0 z{;cjcc>_GkAlWEZ2zZLA_oa-(vYBp7XLPbHCBcGH$K9AK6nx}}ya%QB2=r$A;11*~ z_wfru1SkIQ0&QUqd)%eAY^FL!G;t@7-prQ|drDn#yDf%Uz8&kGtrPxKv?*TqkC(}g zUx10<;3Vhnx{gpWXM8H zKc0kkM~gIAts$E!X-?3DWG&^knj4h(q5(L;V81VWyC@_71oIpXfsb0S(^Js#N_0E} zJ%|XX&EeVPyu}? zz~(%slTw+tcY3ZMG$+diC8zed=CTN}1fB`RXD_v2;{evY z@MCG$l9Az+F()8*SqFyrg3jrN7k^x3?;A?L&>y{ZUi$T8!F7Dv8s}}4r9+Wo0h^m= zAob@CnJ;IR-{|_D;_w)? zcH@~&V^(}Ag}%A90);X2AhDj(-YB>$>GrW1F4C*1S5`u@N{T|;pYX1;E?gtBbPvS* zlv3r#rw2KCmLqX0kGT8&%#A6Sc(S>apOHtfn+UdYiN4qPawcL{Sb$>&I)Ie>Xs~ej z7)a=-92!sv-A{-7sqiG-ysG0k&beq6^nX1L!Fs$JU#fsV*CbsZqBQ|y z{)}zvtEwO%(&mIG|L?qs2Ou1rqTZHV@H+sm8Nth(+#dp0DW4VXG;;tCh`{BpY)THY z_10NNWpJuzCG%Q@#Aj>!v7Eq8eI6_JK3g2CsB2jz)2^bWiM{&U8clnV7<2?Qx5*k_ zl9B$P@LV7Sani>Xum{^yJ6uYxM4UHnw4zbPdM|PeppudXe}+OcX z!nr!xaUA|xYtA~jE|436iL&L={H3e}H`M1;2|pLG)Z~~Ug9X%_#D!DW>w}Es!D{=4 zxRPBf5UWm2{}D>Em;v43miQ~2{>%>O*`wA{7j;yh;*DV=C-bs;3p{AD;>VPcn>E;V zLgtw|Y{|Beo+_ABz`lofH+cdf33LjIf!RdcW~wWgmsE%2yCQGbst4TS_t%6nS8a+m zFEr<|9TQzQC@<(yNN9GR4S$H-SA?xiLIK2O2>*w-?cdzNPsG4D3&%$QOK{w)@Dk}W z|3_Z>U`XBu7j6Vc=es(tz}c7k4al1$cqDW4a~|xgE9zPX(C`IsN(QwNomzsBOHqjd zi{D|jYSv5 zC>6#uB~%#!!*?zXW`!yHWjbjwm!#eo3hm;>nJ!<`ZkJamE6i>>WqkoTpbm(~b%G_v z`t3Z#ERips;EoA_0c?r@WjEP|ulD+hue5r8946Sd0kuBD$A!=dxigTZn)u3>U;Y8l zX9j(R*(;;i&HrB&M|Xnitzf@><3#)aKy=bFCf5Hz@_);{nlL?J!U>%fL$Fk~Ocs3& zB@-Ek%W>h9#$QIYg07&lS_CG3d~LrygXclO!Ws-|PxMsn@n{?77wCaq?uj`dd7lllDCGd?ed&%5k{RqUhiN1u&?uz@Fq zNkv_4xmFcl?vs>;emR1R<$tg;*Ayp@rl=ik z=x2Hk zJqsM%++e|*+#camAiem6f;3-khtIgjYmNL0x|Mz|y{r{6<@_&a7^1XDyE>v*uo!qF zBq^I8PiF#w<-lFvFx9xKoi&0j)4LX~rWsK$%3hr@ebDv^($$T^4m4h#Q-(u*Mbt6F zE%y0Fvozv=WAaTj6EWZ)cX{|9=AZDvPQuq>2fUkU(!j1GmdgeYLX`B0BbGK(331ME zu3yZ3jQ@2)WW5!C#~y}=q5Av=_;+hNi!%gmY;}~~e!S&&^{4eJuNQ2kud%Olf8TRI zW-Dze987Il<^!hCO{AR5tLW{F1WLuZ>nhPjke@CSnN zzoW{m!+PSCb7byUf-1b;`{0GU^zg7b9c!7ueJF`>L;|akVzb&IzoLNNEfxp7b7xMN zKs9QG6v@t7X)yYN9}3d4>*ROMiK-Ig8(Do$3UI&E}z!vcH2t(VIk-cLyC-Y%`)~>Ce23A=dQsc<( ziy;8MmHki+5-(CR8$=lRt{(9B9W59Pz|z0^;`C!q<^PyE$KXt!KibFH*xcB9V%xTD zn;YlZ*tTukwr$(mWMka@|8CW-J8!zCXI{P1-&=wSvZf&%9SZ7m`1&2^nV#D z6T*)`Mz3wGUC69Fg0Xk!hwY}ykk!TE%mr57TLX*U4ygwvM^!#G`HYKLIN>gT;?mo% zAxGgzSnm{}vRG}K)8n(XjG#d+IyAFnozhk|uwiey(p@ zu>j#n4C|Mhtd=0G?Qn5OGh{{^MWR)V*geNY8d)py)@5a85G&_&OSCx4ASW8g&AEXa zC}^ET`eORgG*$$Q1L=9_8MCUO4Mr^1IA{^nsB$>#Bi(vN$l8+p(U^0dvN_{Cu-UUm zQyJc!8>RWp;C3*2dGp49QVW`CRR@no(t+D|@nl138lu@%c1VCy3|v4VoKZ4AwnnjF z__8f$usTzF)TQ$sQ^|#(M}-#0^3Ag%A0%5vA=KK$37I`RY({kF-z$(P50pf3_20YTr%G@w+bxE_V+Tt^YHgrlu$#wjp7igF!=o8e2rqCs|>XM9+M7~TqI&fcx z=pcX6_MQQ{TIR6a0*~xdgFvs<2!yaA1F*4IZgI!)xnzJCwsG&EElg_IpFbrT}nr)UQy}GiK;( zDlG$cksync34R3J^FqJ=={_y9x_pcd%$B*u&vr7^ItxqWFIAkJgaAQiA)pioK1JQ| zYB_6IUKc$UM*~f9{Xzw*tY$pUglV*?BDQuhsca*Fx!sm`9y`V&?lVTH%%1eJ74#D_ z7W+@8@7LAu{aq)sPys{MM~;`k>T%-wPA)E2QH7(Z4XEUrQ5YstG`Uf@w{n_Oc!wem z7=8z;k$N{T74B*zVyJI~4d60M09FYG`33;Wxh=^Ixhs69U_SG_deO~_OUO1s9K-8p z5{HmcXAaKqHrQ@(t?d@;63;Pnj2Kk<;Hx=kr>*Ko`F*l){%GVDj5nkohSU)B&5Vrc zo0u%|b%|VITSB)BXTRPQC=Bv=qplloSI#iKV#~z#t#q*jcS`3s&w-z^m--CYDI7n2 z%{LHFZ*(1u4DvhES|Dc*n%JL8%8?h7boNf|qxl8D)np@5t~VORwQn)TuSI07b-T=_ zo8qh+0yf|-6=x;Ra$w&WeVZhUO%3v6Ni*}i&sby3s_(?l5Er{K9%0_dE<`7^>8mLr zZ|~l#Bi@5}8{iZ$(d9)!`}@2~#sA~?uH|EbrJQcTw|ssG)MSJJIF96-_gf&* zy~I&$m6e0nnLz^M2;G|IeUk?s+afSZ){10*P~9W%RtYeSg{Nv5FG<2QaWpj?d`;}<4( z>V1i|wNTpH`jJtvTD0C3CTws410U9HS_%Ti2HaB~%^h6{+$@5`K9}T=eQL;dMZ?=Y zX^z?B3ZU_!E^OW%Z*-+t&B-(kLmDwikb9+F9bj;NFq-XHRB=+L)Rew{w|7p~7ph{#fRT}}K zWA)F7;kJBCk^aFILnkV^EMs=B~#qh*RG2&@F|x2$?7QTX_T6qL?i$c6J*-cNQC~E6dro zR)CGIoz;~V?=>;(NF4dihkz~Koqu}VNPE9^R{L@e6WkL{fK84H?C*uvKkO(!H-&y( zq|@B~juu*x#J_i3gBrS0*5U*%NDg+Ur9euL*5QaF^?-pxxieMM6k_xAP;S}sfKmIa zj(T6o{4RfARHz25YWzv=QaJ4P!O$LHE(L~6fB89$`6+olZR!#%y?_v+Cf+g)5#!ZM zkabT-y%v|ihYuV}Y%-B%pxL264?K%CXlbd_s<GY5BG*`kYQjao$QHiC_qPk5uE~AO+F=eOtTWJ1vm*cU(D5kvs3kity z$IYG{$L<8|&I>|WwpCWo5K3!On`)9PIx(uWAq>bSQTvSW`NqgprBIuV^V>C~?+d(w$ZXb39Vs`R=BX;4HISfN^qW!{4 z^amy@Nqw6oqqobiNlxzxU*z2>2Q;9$Cr{K;*&l!;Y??vi^)G|tefJG9utf|~4xh=r3UjmRlADyLC*i`r+m;$7?7*bL!oR4=yU<8<-3XVA z%sAb`xe&4RV(2vj+1*ktLs<&m~mGJ@RuJ)1c zLxZyjg~*PfOeAm8R>7e&#FXBsfU_?azU=uxBm=E6z7FSr7J>{XY z1qUT>dh`X(zHRML_H-7He^P_?148AkDqrb>;~1M-k+xHVy>;D7p!z=XBgxMGQX2{* z-xMCOwS33&K^~3%#k`eIjKWvNe1f3y#}U4;J+#-{;=Xne^6+eH@eGJK#i|`~dgV5S zdn%`RHBsC!=9Q=&=wNbV#pDv6rgl?k1wM03*mN`dQBT4K%uRoyoH{e=ZL5E*`~X|T zbKG9aWI}7NGTQtjc3BYDTY3LbkgBNSHG$5xVx8gc@dEuJqT~QPBD=Scf53#kZzZ6W zM^$vkvMx+-0$6R^{{hZ2qLju~e85Em>1nDcRN3-Mm7x;87W#@RSIW9G>TT6Q{4e~b z8DN%n83FvXWdpr|I_8TaMv~MCqq0TA{AXYO-(~l=ug42gpMUvOjG_pWSEdDJ2Bxqz z!em;9=7y3HW*XUtK+M^)fycd8A6Q@B<4biGAR)r%gQf>lWI%WmMbij;un)qhk$bff zQxb{&L;`-1uvaCE7Fm*83^0;!QA5-zeSvKY}WjbwE68)jqnOmj^CTBHaD zvK6}Mc$a39b~Y(AoS|$%ePoHgMjIIux?;*;=Y|3zyfo)^fM=1GBbn7NCuKSxp1J|z zC>n4!X_w*R8es1ofcPrD>%e=E*@^)7gc?+JC@mJAYsXP;10~gZv0!Egi~){3mjVzs z^PrgddFewu>Ax_G&tj-!L=TuRl0FAh#X0gtQE#~}(dSyPO=@7yd zNC6l_?zs_u5&x8O zQ|_JvKf!WHf43F0R%NQwGQi-Dy7~PGZ@KRKMp?kxlaLAV=X{UkKgaTu2!qzPi8aJ z-;n$}unR?%uzCkMHwb56T%IUV)h>qS(XiuRLh3fdlr!Cri|{fZf0x9GVYUOlsKgxLA7vHrkpQddcSsg4JfibzpB zwR!vYiL)7%u8JG7^x@^px(t-c_Xt|9Dm)C@_zGeW_3nMLZBA*9*!fLTV$Uf1a0rDt zJI@Z6pdB9J(a|&T_&AocM2WLNB;fpLnlOFtC9yE6cb39?*1@wy8UgruTtX?@=<6YW zF%82|(F7ANWQ`#HPyPqG6~ggFlhJW#R>%p@fzrpL^K)Kbwj(@#7s97r`)iJ{&-ToR z$7(mQI@~;lwY+8dSKP~0G|#sjL2lS0LQP3Oe=>#NZ|JKKYd6s6qwe#_6Xz_^L4PJ5TM_|#&~zy= zabr|kkr3Osj;bPz`B0s;c&kzzQ2C8|tC9tz;es~zr{hom8bT?t$c|t;M0t2F{xI;G z`0`ADc_nJSdT`#PYCWu4R0Rmbk#PARx(NBfdU>8wxzE(`jA}atMEsaG6zy8^^nCu| z9_tLj90r-&Xc~+p%1vyt>=q_hQsDYB&-hPj(-OGxFpesWm;A(Lh>UWy4SH9&+mB(A z2jkTQ2C&o(Q4wC_>|c()M8_kF?qKhNB+PW6__;U+?ZUoDp2GNr<|*j(CC*#v0{L2E zgVBw6|3c(~V4N*WgJsO(I3o>8)EO5;p7Xg8yU&%rZ3QSRB6Ig6MK7Wn5r+xo2V}fM z0QpfDB9^xJEi}W*Fv6>=p4%@eP`K5k%kCE0YF2Eu5L!DM1ZY7wh`kghC^NwxrL}90dRXjQx=H>8 zOWP@<+C!tcw8EL8aCt9{|4aT+x|70i6m*LP*lhp;kGr5f#OwRy`(60LK@rd=to5yk^%N z6MTSk)7)#!cGDV@pbQ>$N8i2rAD$f{8T{QM+|gaj^sBt%24UJGF4ufrG1_Ag$Rn?c zzICg9`ICT>9N_2vqvVG#_lf9IEd%G5gJ_!j)1X#d^KUJBkE9?|K03AEe zo>5Rql|WuUU=LhLRkd&0rH4#!!>sMg@4Wr=z2|}dpOa`4c;_DqN{3Pj`AgSnc;h%# z{ny1lK%7?@rwZO(ZACq#8mL)|vy8tO0d1^4l;^e?hU+zuH%-8Y^5YqM9}sRzr-XC0 zPzY1l($LC-yyy*1@eoEANoTLQAZ2lVto2r7$|?;PPQX`}rbxPDH-a$8ez@J#v0R5n z7P*qT3aHj02*cK)WzZmoXkw?e3XNu&DkElGZ0Nk~wBti%yLh+l2DYx&U1lD_NW_Yt zGN>yOF?u%ksMW?^+~2&p@NoPzk`T)8qifG_owD>@iwI3@u^Y;Mqaa!2DGUKi{?U3d z|Efe=CBc!_ZDoa~LzZr}%;J|I$dntN24m4|1(#&Tw0R}lP`a`?uT;>szf^0mDJx3u z6IJvpeOpS$OV!Xw21p>Xu~MZ(Nas5Iim-#QSLIYSNhYgx1V!AR>b zf5b7O`ITTvW5z%X8|7>&BeEs8~J1i47l;`7Y#MUMReQ4z!IL1rh8UauKNPG?7rV_;#Y zG*6Vrt^SsTMOpV7mkui}l_S8UNOBcYi+DzcMF>YKrs3*(q5fwVCr;_zO?gpGx*@%O zl`KOwYMSUs4e&}eM#FhB3(RIDJ9ZRn6NN{2Nf+ z2jcz%-u6IPq{n7N3wLH{9c+}4G(NyZa`UmDr5c-SPgj0Sy$VN#Vxxr;kF>-P;5k!w zuAdrP(H+v{Dybn78xM6^*Ym@UGxx?L)m}WY#R>6M2zXnPL_M9#h($ECz^+(4HmKN7 zA>E;`AEqouHJd7pegrq4zkk>kHh`TEb`^(_ea;v{?MW3Sr^FXegkqAQPM-h^)$#Jn z?bKbnXR@k~%*?q`TPL=sD8C+n^I#08(}d$H(@Y;3*{~nv4RLZLw`v=1M0-%j>CtT( zTp#U03GAv{RFAtj4vln4#E4eLOvt zs;=`m&{S@AJbcl1q^39VOtmN^Zm(*x(`(SUgF(=6#&^7oA8T_ojX>V5sJx@*cV|29 z)6_%P6}e}`58Sd;LY2cWv~w}fer&_c1&mlY0`YNNk9q=TRg@Khc5E$N`aYng=!afD z@ewAv^jl$`U5;q4OxFM4ab%X_Jv>V!98w$8ZN*`D-)0S7Y^6xW$pQ%g3_lEmW9Ef^ zGmFsQw`E!ATjDvy@%mdcqrD-uiKB}!)ZRwpZRmyu+x|RUXS+oQ*_jIZKAD~U=3B|t zz>9QQr91qJihg9j9rWHww{v@+SYBzCfc0kI=4Gr{ZLcC~mft^EkJ`CMl?8fZ z3G4ix71=2dQ`5QuTOYA0(}f`@`@U<#K?1TI(XO9c*()q!Hf}JUCaUmg#y?ffT9w1g zc)e=JcF-9J`hK{0##K#A>m^@ZFx!$g09WSBdc8O^IdP&JE@O{i0&G!Ztvt{L4q%x& zGE2s!RVi6ZN9)E*(c33HuMf7#X2*VPVThdmrVz-Fyqxcs&aI4DvP#bfW={h$9>K0HsBTUf z2&!G;( z^oOVIYJv~OM=-i`6=r4Z1*hC8Fcf3rI9?;a_rL*nr@zxwKNlxf(-#Kgn@C~4?BdKk zYvL?QcQeDwwR5_S(`sn&{PL6FYxwb-qSh_rUUo{Yi-GZz5rZotG4R<+!PfsGg`MVtomw z5kzOZJrh(#rMR_87KeP0Q=#^5~r_?y1*kN?3Fq% zvnzHw$r!w|Soxz8Nbx2d&{!#w$^Hua%fx!xUbc2SI-<{h>e2I;$rJL)4)hnT5cx^* zIq#+{3;Leun3Xo=C(XVjt_z)F#PIoAw%SqJ=~DMQeB zNWQ={d|1qtlDS3xFik}#j*8%DG0<^6fW~|NGL#P_weHnJ(cYEdJtI9#1-Pa8M}(r{ zwnPJB_qB?IqZw5h!hRwW2WIEb?&F<52Ruxpr77O2K>=t*3&Z@=5(c^Uy&JSph}{Q^ z0Tl|}gt=&vK;Rb9Tx{{jUvhtmF>;~k$8T7kp;EV`C!~FKW|r$n^d6=thh`)^uYgBd zydgnY9&mm$?B@pKK+_QreOm?wnl5l}-wA$RZCZukfC$slxbqv9uKq0o^QeSID96{Rm^084kZ)*`P zk))V~+<4-_7d6<~)PL%!+%JP`Dn23vUpH47h~xnA=B_a}rLy|7U-f0W+fH`{wnyh2 zD$JYdXuygeP5&OAqpl2)BZ|X){~G;E|7{liYf%AZFmXXyA@32qLA)tuuQz`n^iH1Y z=)pAzxK$jw0Xq?7`M`=kN2WeQFhz)p;QhjbKg#SB zP~_Vqo0SGbc5Q;v4Q7vm6_#iT+p9B>%{s`8H}r|hAL5I8Q|ceJAL*eruzD8~_m>fg26HvLpik&#{3Zd#|1C_>l&-RW2nBBzSO zQ3%G{nI*T}jBjr%3fjG*&G#ruH^ioDM>0 zb0vSM8ML?tPU*y%aoCq;V%x%~!W*HaebuDn9qeT*vk0%X>fq-4zrrQf{Uq5zI1rEy zjQ@V|Cp~$AoBu=VgnVl@Yiro>ZF{uB=5)~i1rZzmDTIzLBy`8Too!#Z4nE$Z{~uB( z_=o=gKuhVpy&`}-c&f%**M&(|;2iy+nZy2Su}GOAH_GT9z`!ogwn$+Bi&1ZhtPF zVS&LO5#Bq}cew$kvE7*t8W^{{7&7WaF{upy0mj*K&xbnXvSP9V$6m6cesHGC!&Us36ld9f*Pn8gbJb3`PPT|ZG zri2?uIu09i>6Y-0-8sREOU?WaGke0+rHPb^sp;*E{Z5P7kFJ@RiLZTO`cN2mRR#Nz zxjJ##Nk+Uy-2N-8K_@576L(kJ>$UhP+)|w!SQHkkz+e62*hpzyfmY4eQLZtZUhEdG zIZluDOoPDlt5#iw+2epC3vEATfok^?SDT`TzBwtgKjY z>ZImbO)i~T=IYAfw$3j2mF1Cj*_yqK(qw(U^r-!gcUKvWQrDG@E{lEyWDWOPtA9v{ z5($&mxw{nZWo_Ov??S#Bo1;+YwVfx%M23|o$24Hdf^&4hQeV=Cffa5MMYOu2NZLSC zQ4UxWvn+8%YVGDg(Y*1iHbUyT^=gP*COcE~QkU|&6_3h z-GOS6-@o9+Vd(D7x#NYt{Bvx2`P&ZuCx#^l0bR89Hr6Vm<||c3Waq(KO0eZ zH(|B;X}{FaZ8_4yyWLdK!G_q9AYZcoOY}Jlf3R;%oR5dwR(rk7NqyF%{r>F4s^>li z`R~-fh>YIAC1?%!O?mxLx!dq*=%IRCj;vXX628aZ;+^M0CDFUY0Rc<1P5e(OVX8n- z*1UOrX{J}b2N)6m5&_xw^WSN=Lp$I$T>f8K6|J_bj%ZsIYKNs1$TFt!RuCWF48;98`7D(XPVnk+~~i=U$} zR#;!ZRo4eVqlDxjDeE^3+8)bzG_o~VRwdxqvD^HNh#@o>1My$0*Y_`wfQ$y}az|Uz zM47oEaYNTH?J^w9EVNnvfmmbV+GHDe)Kf;$^@6?9DrSHnk@*{PuJ>ra|9KO!qQ-Fp zNNcZB4ZdAI>jEh@3Mt(E1Fy!^gH-Zx6&lr8%=duIgI^~gC{Q;4yoe;#F7B`w9daIe z{(I;y)=)anc;C;)#P`8H6~iAG_q-4rPJb(6rn4pjclGi6$_L79sFAj#CTv;t@94S6 zz`Id7?k!#3JItckcwOf?sj=Xr6oKvAyt1=jiWN@XBFoW6dw_+c9O9x2i4or?*~8f& zm<>yzc6Aw_E-gsGAa`6`cjK~k^TJt(^`E1^_h)5(8)1kzAsBxjd4+!hJ&&T!qklDN z`?j#za=(^wRCvEI75uE^K#IBe5!5g2XW}|lUqAmdmIQb7xJtP}G9^(=!V`ZS_7#RZ zjXq#Cekw>fE*YS-?Qea|7~H?)bbLK;G&(~%!B@H`o#LYAuu6;-c~jFfjY7GKZ|9~{ zE!`!d@@rhY_@5fDbuQ8gRI~R_vs4%fR5$?yot4hDPJ28k_Wzmc^0yzwMr#*(OXq@g zRUgQmJA?E>3GO=5N8iWIfBP{&QM%!Oa*iwTlbd0Fbm*QCX>oRb*2XfG-=Bz1Qz0$v zn#X!2C!LqE601LEMq;X7`P*5nurdKZAmmsI-zZ|rTH;AFxNDyZ_#hN2m4W(|YB64E z470#yh$;8QzsdA;6vbNvc95HLvZvyT4{C>F(fwy&izvNDuvfO1Z;`Ss#4a_c6pm*{0t|_i9z{@84^lffQa5zG4<{(+p5-S z^>lG-^GJR#V>;5f3~y%n=`U_jBp~WgB0cp;Lx5VZYPYCH&(evw#}AYRlGJ>vcoeVr z3%#-QUBgeH!GB>XLw;rT&oMI9ynP;leDwh4O2uM!oIWo&Qxk{^9#nX&^3GJ z(U~5{S9aw@yHH^yuQGso=~*JOC9Zdi6(TFP+IddkfK5Eu9q;+F9?PPNAe-O;;P_Aa zPJ{Dqa1gQb%dZ|0I{#B0(z|r(qq!A4CxlW92-LwXFjYfOzAT1DDK`9rm4AB~l&oVv zi6_{)M9L1%JP}i52y@`!T9RB~!CRel53wl?amNHqcuElq%hn)|#BPvW5_m51RVb|? zXQ&B*eAD}}QamG>o{?i~usG5X6IDa3+Xkb8w%7;C8|Cln70biA+ZH}fxkH^Wei$vZPnuqIT!Mmy26;mLfU z3Bbv4M^vvMlz-I+46=g>0^wWkmA!hlYj*I!%it^x9Kx(d{L|+L{rW?Y#hLHWJfd5X z>B=Swk8=;mRtIz}Hr3NE_garb5W*!7fnNM{+m2_>!cHZZlNEeof~7M#FBEQ+f&gJ3 z^zv*t?XV)jQi%0-Ra|ISiW-fx)DsK-> zI}Fv%uee$#-1PKJwr=lU89eh=M{>Nk7IlJ)U33U)lLW+OOU%A|9-Lf;`@c*+vX{W2 z{{?0QoP!#?8=5%yL=fP%iF+?n$0#iHz`P;1{Ra6iwr=V7v^8;NoLJ5)QxIyIx>ur?lMwV=mBo0BA?28kMow8SX=Ax5L%S~x4+EQi#Ig`(ht%)D(F#Pa!)SiHy&PvUp32=VtAsR|6|NZR@jkad zX^aEgojf9(-)rNOZ=NVA&a;6Cljkb=H-bY9m^_I)`pBHB16QW)sU27zF13ypefeATJc1Wzy39GrKF{UntHsIU59AdXp?j{eh2R)IbU&omd zk6(qzvE@hve1yM6dgkbz>5HDR&MD~yi$yymQ}?b;RfL$N-#l7(u?T^Wlu+Q;fo|jd zBe^jzGMHY(2=5l?bEIh+zgE$1TEQ&!p3fH;AW`P?W5Hkj3eJnT>dqg! zf~}A*SZU5HHDCbdywQ^l_PqssHRlrySYN=`hAv2sVrtcF!`kyEu%XeeRUTJU7vB%h zY0*)N$mLo6d=tJfe}IPIeiH~>AKwCpkn&WEfYgl?3anq5#-F$6$v-(G_j0*S9mdsn zg@ek_ut4(?+JP_9-n`YqoD(gAz+Ttm1#t za96D}oQR(o=e8wwes19_(p4g(A1vSGwPAp~Hh3hh!fc>u{1E^+^}AzwilFVf6^vbL zc&NnRs`u)N-P|Cu4()yTiuE{j_V&=K?iP!IUBf~ei2}~_KBvUAlXa;R#Wl`gOBtJ$Y5(L))@`riLB)v*r>9*8VfmQt<72?+fdwP{BA@?_qo>mN7yzICUCaeG(+>Rb~8wg~6U(P)NlDLuhQgjbC}=)HuZgC}0Z-qLX4lJ7^)8~!!*qP0=~`Y_(A z{@15*ZevZSI^s|OnpCeCwLXf#tgbq8y~R*GB5anmZ;_N!+-3>!wu@NBFCNJ$#y?{? zMI!?s*=_xA;V&aX)ROxzVW8*de+&P#2zucA|8mksdgCXBsZ*TM=%{L1Tk5LB_*^@&S?O=ot{h)1xRVSn27&Tk8>rF|6ruzYb;Nq) z;qvlmrP^SL$mhe4Ai)xpl6Wx&y;z8o!7-+6$qj;ZLXvfR71I@w(R|6lyuP6v-lP&r z@KK-TEmGQfMmk1c0^fd7!^si}T%b5a2%>T-Drh|^Cf z$}qxIv@zxbmJ#qjK6Q_aGDe{ciVT20V1lW52Xs!}x(4_j)sUXYdm4 zwYC9FOa;X*c*LxL;xE5ov?|?^7gWXyALy_D2GvDo-8%0-Y%9TkkO_Tcr2qIUg3(OC z%3wt?hyn*+e^z%(~2#!2dvMFa$mzgwk1I1X;naFMjXSbnmZ!zd%7u)=cgi z*0&@Scrl&BDfU(9Pks8#;!~v~r7~DN{G6WE&_;7i{{a*?oiCao(l%2ruxX0fAt69e2vLgL%Mf_)!*(Tz zNKW>sW@YB2vBfP>C&L|-pq)Uq^PsG_THu;8iEcqafO?0k$IQp1KyWyOoTxwmKvlc^ zO9$%Tt8;%qQxwy5;CsJ)V}a7I6}SvQ%0_H53Kcqx=m83fIzpLSGgfVe^SPdc*xPdciI5dg}#{Etv$e<)gGD=qm0v=!aN@*?$s zLhzD%4w{vf-g6FHQjG9XyC+4=bewb?Mz%!u8%oP{G9{UJFTLTcCi3R(=Nm&t&Sl(? zr>pj?=ECdDVa}-g%`LF^1EY@>7d}%VhYpKFSDPH)D(zB+gPe1m7E}W>TiW=8L0&(D&YG=0<&7G4Bu{;-#Ud;-1%Ta9V}U6fyK1YX z`Rq|i-X(loPZ)M$H%m@j7bGx>uj~y=0)!t#dc|c}+hT%~Sq>fefez0Ul|jOJHta~u zx7*mV6~Jpt(FkY(pQN91>aFk7VS%Sa^oLaq$*)W?fy`xuFJgH<2s=!Rz}_(qdmdF~ zlr2f=)q_vpi8X;Jq>5^$GweJ{iS`Khw2f)fsvKpgh;U~13a+9 zfaw}UuGiBy;q10pI^Avb#X3D=k_r(T{N;-xA)OM}2Py5L##<96NU*Sr7GQqhfrPej z?;B$Bt_sTxuSAPXfTSC{zr?@$$0iHxC@z*5F52j*PG87hh`0w3At8jPf*rjNE~_Gj z2)fjeUFJ(#l9uWuw&5#@13|AQ1;pdA?EL4YKq0JDR5T8I?aWGxI=J9}vdyH;gQ@iE z>+UnC2iwT0f80-VuE^bY!N@(}9?bOXyy%rTqSNDN4rO4Zt#(kZwcGgTp&3((F+nsd ze~B)%K6oP4WX_w1>|QImC;9q zy}4p+s%^Too2(gE>yo%+yY#F{)phtmNqsJPVQQ0lGR|H9q>aA&AtU4M+EZ%`xvQLb zbigBOc`dL}&j3er?EOI`!W)N#>+uwp_!h^5FspaEylq!e(FPY-6T3~WeNmZ<$?Y6y z-!bM1kD7ZF8xl+Pi6fiv1?)q%`aNxn#pK%)ct||L&Xnf8Gu&3g;Of{B8Pt=u`e+Mn zA(DmU#3cF#Nr7W;X0V4ksFHMcNDAf4G&D8VjLeZ^|5-f$>_|71>P3xuu)?4NJed*w z6GR_RB5HQLzT(h+`Y?-3esxeue{-Q%b+!&o>IJ!#=}#_&q+hwJga>fkt(*(WdoN5vSta z#$mMN6}YzYRpaBZ)j)EL91-oL1(|d(>%UclsTUOyXyWM&(hNqLwqtn`!E>HJM{ zh>M~xa1@*U^cwx-k5QjePr5=B6u*jpJ)C0{C?f7Yga+I^4$TleyX$x&jm9z@c!?cC z<2kY7)p^+W{AXd@l1C09_yB*TG|yzb96BYk z8Wpj81vB>zcR+qM4m~A44w1n7$fxB$-?MV}S?Fh}c_|2FXg`cZ?750i;Cdl-_nGK# zta)h)6!*AsQ-z8caSh)%5JY>_yCeJs~FpAzdY8 zF@SU_hN#~ip5I;UACFzx1v0yf{j97l&)e-=`d#1Kp6A(Kj&HC!%vK!wEdK3HFJ?|6 za;WwUczZ+&<$g!Td^48@lJtfW@doXL#jY6)dK_RDCQAZ}l&OdD+?Yl5-bqpsHZR^( zF{u_cR(x>u(c4i5f(^8!h6CV0#ZxRFhLlunWiGDLO6yoRb(wV<(P^8=fOU7Hp{AHE z;Yg%kg@6&tL3Z*IrbkDeQ$%rbalVP39D@LVrC2xSavnTp%PorXPf1DVzHyqjDsDnS zL=mv0a2s60bHKGQM)ue>npH0SCp;XtZFUzm?R-x7D*(PxMmuJ4J*K2eY&ebe0yQHe zVG&*qe{pot{PM^xQv`H_rn2FcYOrEN+I#uX^1`Id%J$;Hi2cNCU!0Hlc0TjxLzkss zHxmC;hQBu5U4J0XflWM;{uH`_47Sg)QyZ{8D&T0;bdc3{^^<=q7P?C_2E-}PQn>*= z2T5q^J|Q_2+x%Qt`i3m6=6V$)BxIx{2KAFkMb#q`iMCD|L>+}_dYVA$wBr1Zr}YOF z^MMGO@PHGGh>g|^yF`PvvtDwN@kxt?ClLcG<+murHMz1Asj!$l=b)4{d}SqOJ}>Y< zSeAyP@ZEcpx`ayIdp>{--UVLYC_cZZURh_!4u2(*#x@Tk(QJa}4BqqZ$6%LhF-HB~ zAcc?$I6KP}IxANcAteEBX$Ys?T=JB|Fnd3*UAO0mYAXCgWf~?7Z_G7G5`H4;S^QKK zG*2l75vI@DHQC*es>6&|r^#RHKRQ5rwv_l4`!(!I3%)Z$P1fnZ8N@27zyg}54ElO%SjQ_4uujX)4ta@Gz2)_>4b~vX|rhRIH-eqdD zL)xaEpW3K|a>daQRRR*_$W>rWOsW-IE4VQl3L$3}=-PFU)s@XG&9+DFivH-;2&w~$ES_nJZJH!?1mO!CnP)Jb{mW9=f`bDpo^PI6i4|YurK)Q1 z^Ys1oHRdr!$X4RuyR%kgp!a*Lz*_AAoJ$EVAdsNCoPA^VZE1pGO@D3UStACE+%vs6 z$io@E>DmB|3VV~GbOt2oc+K;t zdn3gaFvYz;vRN-+2+Qk{8|O}e86nVck)fZn3sg$j#dLVham{yGkc$I#!HF7mRS%f* z!+NdzG49K(qaO^SBlp@K@D?|^rAq;8{*@kRc4sYSNQmoy7@_RS_ksWl2T_38h2A)# ziU2WXWD03(NqS&Mu*?0-iK8X_Z3w`}c7MPv0qZ7iM|L3xdTnR{y!7{#82$}uJCiGT zqa=8<9L05hu6 z1N+2n7OzT{NEf?gS@eq7@buCDFe9mAxY%THo^b@BHckKK>jg6{@)>n z43cPs%$Qi0iwyZ+{C491>FRu5+6baJ{&XXXC@Sp+b!QE|{7_d?lm5K=B z)myKEcxjFm74+drF|JCYcxdY%ASig#YoRBRUV7An7f-%rqj%PHECbxh#5476cEq@NQL?dI6gUqvS@w zq!WmD(aR0{NxItAZCKDCVw=Zu{9WGDu^i?2g zLerPiOU*HSaXg^3CdOX^F6c9MiHINP339N%)a96`^Z-c#&EogcxMSYo0Cb4{-}q1( zRrJine`P|6WRkm8u4Ja1QRYq$AR>b7tugd#EsT-VmXN-t!TYjZy}i!uKi6$u>EJ?w zvdHZg+hp+5ree?>fdJAX)5#Wtm#2M-{~2jfX2{G`)?D6UD1MevdeeU;;HCi}AtJr( SGW6ptSs!X7{rG*o_g?|vpSEZK diff --git a/gradlew.bat b/gradlew.bat index 6689b85be..7101f8e46 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail From 8a6572cffd867f03f6ccd287a202e97a7623f53a Mon Sep 17 00:00:00 2001 From: Don Turner Date: Mon, 13 May 2024 15:46:03 -0700 Subject: [PATCH 17/19] Made pull request instructions clearer --- .github/pull_request_template.md | 33 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 28ec373b7..f360c7f74 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,26 +1,25 @@ -_Thanks for submitting a pull request. Please include the following information._ +**DO NOT HIT SUBMIT WITHOUT READING THESE INSTRUCTIONS** -**What I have done and why** +## Instructions +Thanks for submitting a pull request. To accept your pull request we need you do a few things: + +**If this is your first pull request** -_Include a summary of what your pull request contains, and why you have made these changes._ +- [Sign the contributors license agreement](https://cla.developers.google.com/) -Fixes # +**Ensure tests pass and code is formatted correctly** -**How I'm testing it** +- Run local tests on the `DemoDebug` variant by running `./gradlew testDemoDebug` +- Fix code formatting: `./gradlew --init-script gradle/init.gradle.kts spotlessApply` -_Choose at least one:_ -- Unit tests -- UI tests -- Screenshot tests -- N/A _(provide justification)_ +**Add a description** -**Do tests pass?** -- [ ] Run local tests on `DemoDebug` variant: `./gradlew testDemoDebug` -- [ ] Check formatting: `./gradlew --init-script gradle/init.gradle.kts spotlessApply` +We need to know what you've done and why you've done it. Include a summary of what your pull request contains, and why you have made these changes. Include links to any relevant issues which it fixes. -**Is this your first pull request?** -- [ ] [Sign the CLA](https://cla.developers.google.com/) -- [ ] Run `./tools/setup.sh` -- [ ] Import the code formatting style as explained in [the setup script](/tools/setup.sh#L40). +[Here's an example](https://github.com/android/nowinandroid/pull/1257). +**NOW DELETE THIS LINE AND EVERYTHING ABOVE IT** + +**What I have done and why** +\ From 7c16da9961605234d94a1cfef84c9f5244fcb480 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Mon, 13 May 2024 15:48:10 -0700 Subject: [PATCH 18/19] Update pull_request_template.md --- .github/pull_request_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index f360c7f74..265ff2ba5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,4 +1,4 @@ -**DO NOT HIT SUBMIT WITHOUT READING THESE INSTRUCTIONS** +**DO NOT CREATE A PULL REQUEST WITHOUT READING THESE INSTRUCTIONS** ## Instructions Thanks for submitting a pull request. To accept your pull request we need you do a few things: From 2ec94082e3c02ada79c9705ee03965c4c48b2424 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Tue, 21 May 2024 17:21:47 +0100 Subject: [PATCH 19/19] Remove the printModulePaths task and read modules direct from settings Change-Id: Ib871afb7e9f5da3a4240e18062fad9e701c218e7 --- build.gradle.kts | 10 ---------- generateModuleGraphs.sh | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 1790cd202..38778e100 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -49,13 +49,3 @@ plugins { alias(libs.plugins.room) apply false alias(libs.plugins.module.graph) apply true // Plugin applied to allow module graph generation } - -// Task to print all the module paths in the project e.g. :core:data -// Used by module graph generator script -tasks.register("printModulePaths") { - subprojects { - if (subprojects.size == 0) { - println(this.path) - } - } -} \ No newline at end of file diff --git a/generateModuleGraphs.sh b/generateModuleGraphs.sh index fb2d74712..b86d54412 100755 --- a/generateModuleGraphs.sh +++ b/generateModuleGraphs.sh @@ -31,6 +31,19 @@ then exit 1 fi +# Check for a version of grep which supports Perl regex. +# On MacOS the OS installed grep doesn't support Perl regex so check for the existence of the +# GNU version instead which is prefixed with 'g' to distinguish it from the OS installed version. + if grep -P "" /dev/null > /dev/null 2>&1; then + GREP_COMMAND=grep +elif command -v ggrep &> /dev/null; then + GREP_COMMAND=ggrep +else + echo "You don't have a version of 'grep' installed which supports Perl regular expressions." + echo "On MacOS you can install one using Homebrew with the command: 'brew install grep'" + exit 1 +fi + # Initialize an array to store excluded modules excluded_modules=() @@ -50,7 +63,7 @@ while [[ $# -gt 0 ]]; do done # Get the module paths -module_paths=$(./gradlew -q printModulePaths --no-configuration-cache) +module_paths=$(${GREP_COMMAND} -oP 'include\("\K[^"]+' settings.gradle.kts) # Ensure the output directory exists mkdir -p docs/images/graphs/