diff --git a/.circleci/config.yml b/.circleci/config.yml
index 939ec23a96d88b817af35289015454d878139d38..c2f4e39956f230b2ccb2b7f43529e1165981f391 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -508,7 +508,7 @@ jobs:
       - store_artifacts:
           path: /tmp/instrumentation_tests_device.zip
           destination: zips/instrumentation_tests_device.zip
-
+  # Keep it until Firebase Test Lab proves reliability
   device_screenshots:
     macos:
       xcode: "12.3.0"
@@ -550,6 +550,65 @@ jobs:
           path: /tmp/device_screenshots.zip
           destination: zips/device_screenshots.zip
 
+  firebase_screenshots:
+    resource_class: xlarge
+    docker:
+      - image: circleci/android:api-28
+    steps:
+      - skip-for-external-pull-requests
+      - setup-google-cloud
+      - checkout
+      - restore-gradle-cache
+      - restore-android-build-cache
+      - run-gradle-cmd:
+          desc: Build APKs for screenshots
+          cmd: >
+            :Corona-Warn-App:assembleDebug
+            :Corona-Warn-App:assembleAndroidTest
+      - run:
+          name: Setup Testlab environment
+          command: |
+            echo "export BUCKETDIR=\"`date "+%Y-%m-%d-%H:%M:%S:%3N"`-${RANDOM}\"" >> $BASH_ENV
+            source $BASH_ENV
+            echo "$BUCKETDIR is setup."
+      - run:
+          name: Test with Firebase Test Lab
+          command: |
+            echo "Using bucketdir $BUCKETDIR"
+            sudo gcloud firebase test android run \
+              --type instrumentation \
+              --app Corona-Warn-App/build/outputs/apk/deviceForTesters/debug/*.apk \
+              --test Corona-Warn-App/build/outputs/apk/androidTest/deviceForTesters/debug/*.apk \
+              --results-dir ${BUCKETDIR} \
+              --results-bucket ${GOOGLE_PROJECT_ID}-circleci-android \
+              --environment-variables clearPackageData=true \
+              --test-targets "annotation testhelpers.Screenshot" \
+              --timeout 20m \
+              --device-ids flame \
+              --os-version-ids 29 \
+              --locales de_DE,en_US \
+              --orientations portrait \
+              --no-record-video
+          no_output_timeout: 30m
+      - run:
+          name: Create directory to store test results
+          command: mkdir firebase-screenshots
+          when: always
+      - run:
+          name: Install gsutil dependency and copy test results data
+          command: |
+            sudo pip install -U crcmod
+            sudo gsutil -m cp -R -U gs://${GOOGLE_PROJECT_ID}-circleci-android/${BUCKETDIR}/flame* firebase-screenshots
+          when: always
+      - store_test_results:
+          path: ./firebase-screenshots
+      - compress-path:
+          input: ./firebase-screenshots
+          output: /tmp/screenshots.zip
+      - store_artifacts:
+          path: /tmp/screenshots.zip
+          destination: zips/screenshots.zip
+
 #######################
 # Workflow section
 # Job execution orders
@@ -588,7 +647,7 @@ workflows:
                 - /^v.*/
             branches:
               ignore: /.*/
-      - device_screenshots:
+      - firebase_screenshots:
           filters:
             tags:
               only:
diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle
index 9a830e0d3e7ecf1d54bf8b54c7bed6125f39aaa2..d5d111ec6da6949571f83af296bd608644a080fa 100644
--- a/Corona-Warn-App/build.gradle
+++ b/Corona-Warn-App/build.gradle
@@ -64,6 +64,10 @@ android {
                 arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
             }
         }
+
+        buildConfigField "int", "VERSION_MAJOR", VERSION_MAJOR
+        buildConfigField "int", "VERSION_MINOR", VERSION_MINOR
+        buildConfigField "int", "VERSION_PATCH", VERSION_PATCH
     }
 
     def signingPropFile = file("../keystore.properties")
@@ -294,7 +298,9 @@ dependencies {
     def coroutineVersion = "1.4.2"
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion"
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion"
+    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$coroutineVersion"
     testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutineVersion"
+    testImplementation "org.jetbrains.kotlin:kotlin-reflect:1.4.21"
 
     // ANDROID STANDARD
     def nav_version = "2.3.3"
@@ -336,7 +342,7 @@ dependencies {
     implementation 'com.google.zxing:core:3.3.0'
 
     //ENA
-    implementation files('libs/play-services-nearby-exposurenotification-1.7.2-eap.aar')
+    implementation files('libs/play-services-nearby-exposurenotification-18.0.3.aar')
 
     // Testing
     testImplementation "androidx.arch.core:core-testing:2.1.0"
diff --git a/Corona-Warn-App/libs/play-services-nearby-exposurenotification-1.7.2-eap.aar b/Corona-Warn-App/libs/play-services-nearby-exposurenotification-1.7.2-eap.aar
deleted file mode 100644
index a2ec17e31ceaf61366982ab414810b5c7f268ece..0000000000000000000000000000000000000000
Binary files a/Corona-Warn-App/libs/play-services-nearby-exposurenotification-1.7.2-eap.aar and /dev/null differ
diff --git a/Corona-Warn-App/libs/play-services-nearby-exposurenotification-18.0.3.aar b/Corona-Warn-App/libs/play-services-nearby-exposurenotification-18.0.3.aar
new file mode 100644
index 0000000000000000000000000000000000000000..b541eda85d4f8b374007f1cc869f6ff0e4d88e3e
Binary files /dev/null and b/Corona-Warn-App/libs/play-services-nearby-exposurenotification-18.0.3.aar differ
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalDaoTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalDaoTest.kt
index de809e875bbb5db9d9f953b4c86eefdf34db6d71..39d500254656d49b2739b32e4e283133fc456281 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalDaoTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalDaoTest.kt
@@ -26,7 +26,8 @@ class TracingIntervalDaoTest {
     fun setUp() {
         val context = ApplicationProvider.getApplicationContext<Context>()
         db = Room.inMemoryDatabaseBuilder(
-            context, AppDatabase::class.java
+            context,
+            AppDatabase::class.java
         ).build()
         dao = db.tracingIntervalDao()
     }
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt
index 647ff840aaa8c4dbe467e13d4ea26dc7ecf7a2b9..6f2fb1680365478578ca595b9369fdaaea5ddd71 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt
@@ -17,6 +17,7 @@ import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings
 import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewFragment
 import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewViewModel
 import de.rki.coronawarnapp.contactdiary.ui.overview.adapter.ListItem
+import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsScheduler
 import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler
 import de.rki.coronawarnapp.environment.EnvironmentSetup
 import de.rki.coronawarnapp.main.CWASettings
@@ -47,6 +48,7 @@ import de.rki.coronawarnapp.util.CWADebug
 import de.rki.coronawarnapp.util.device.BackgroundModeStatus
 import de.rki.coronawarnapp.util.device.PowerManagement
 import de.rki.coronawarnapp.util.security.EncryptionErrorResetTool
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.worker.BackgroundWorkScheduler
 import io.mockk.MockKAnnotations
@@ -88,6 +90,7 @@ class MainActivityTest : BaseUITest() {
     @MockK lateinit var appConfigProvider: AppConfigProvider
     @MockK lateinit var statisticsProvider: StatisticsProvider
     @MockK lateinit var deadmanNotificationScheduler: DeadmanNotificationScheduler
+    @MockK lateinit var appShortcutsHelper: AppShortcutsHelper
 
     // MainActivity mocks
     @MockK lateinit var environmentSetup: EnvironmentSetup
@@ -351,7 +354,8 @@ class MainActivityTest : BaseUITest() {
             submissionStateProvider = submissionStateProvider,
             cwaSettings = cwaSettings,
             statisticsProvider = statisticsProvider,
-            deadmanNotificationScheduler = deadmanNotificationScheduler
+            deadmanNotificationScheduler = deadmanNotificationScheduler,
+            appShortcutsHelper = appShortcutsHelper
         )
     )
 
@@ -395,7 +399,8 @@ class MainActivityTest : BaseUITest() {
             every { showLoweredRiskLevelDialog } returns MutableLiveData()
             every { homeItems } returns MutableLiveData(emptyList())
             every { popupEvents } returns SingleLiveEvent()
-            every { showPopUpsOrNavigate() } just Runs
+            every { showPopUps() } just Runs
+            every { restoreAppShortcuts() } just Runs
         }
 
         setupMockViewModel(
@@ -440,4 +445,10 @@ class MainProviderModule {
         mockk<ContactDiaryWorkScheduler>(relaxed = true).apply {
             every { schedulePeriodic() } just Runs
         }
+
+    @Provides
+    fun dataDonationAnalyticsScheduler(): DataDonationAnalyticsScheduler =
+        mockk<DataDonationAnalyticsScheduler>(relaxed = true).apply {
+            every { schedulePeriodic() } just Runs
+        }
 }
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt
index 96c7b1e301eb0cb66b5e58b38255556c6cfbdea4..56559565e14f6017f5530eb84e8fe3e57d1069d1 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt
@@ -16,6 +16,7 @@ import de.rki.coronawarnapp.tracing.GeneralTracingStatus
 import de.rki.coronawarnapp.tracing.states.TracingStateProvider
 import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState
 import de.rki.coronawarnapp.util.security.EncryptionErrorResetTool
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import io.mockk.MockKAnnotations
 import io.mockk.Runs
@@ -47,6 +48,7 @@ class HomeFragmentTest : BaseUITest() {
     @MockK lateinit var appConfigProvider: AppConfigProvider
     @MockK lateinit var statisticsProvider: StatisticsProvider
     @MockK lateinit var deadmanNotificationScheduler: DeadmanNotificationScheduler
+    @MockK lateinit var appShortcutsHelper: AppShortcutsHelper
 
     private lateinit var viewModel: HomeFragmentViewModel
 
@@ -61,7 +63,8 @@ class HomeFragmentTest : BaseUITest() {
             every { showLoweredRiskLevelDialog } returns MutableLiveData()
             every { homeItems } returns MutableLiveData(emptyList())
             every { popupEvents } returns SingleLiveEvent()
-            every { showPopUpsOrNavigate() } just Runs
+            every { showPopUps() } just Runs
+            every { restoreAppShortcuts() } just Runs
         }
 
         setupMockViewModel(
@@ -96,7 +99,8 @@ class HomeFragmentTest : BaseUITest() {
             submissionStateProvider = submissionStateProvider,
             cwaSettings = cwaSettings,
             statisticsProvider = statisticsProvider,
-            deadmanNotificationScheduler = deadmanNotificationScheduler
+            deadmanNotificationScheduler = deadmanNotificationScheduler,
+            appShortcutsHelper = appShortcutsHelper
         )
     )
 }
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c6d4cd2f7f265c9c2cafeb8aa83a1a411bb0fbb1
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsFragmentTest.kt
@@ -0,0 +1,104 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import androidx.lifecycle.asLiveData
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.datadonation.analytics.common.Districts
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import io.mockk.MockKAnnotations
+import io.mockk.coEvery
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.spyk
+import io.mockk.unmockkAll
+import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.flowOf
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import testhelpers.launchFragment2
+import tools.fastlane.screengrab.locale.LocaleTestRule
+
+@RunWith(AndroidJUnit4::class)
+class OnboardingAnalyticsFragmentTest : BaseUITest() {
+
+    @MockK lateinit var settings: AnalyticsSettings
+    @MockK lateinit var districts: Districts
+    @MockK lateinit var analytics: Analytics
+
+    private lateinit var viewModel: OnboardingAnalyticsViewModel
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+
+        coEvery { districts.loadDistricts() } returns listOf(
+            Districts.District(
+                districtId = 11011004,
+                districtName = "SK Berlin Charlottenburg-Wilmersdorf"
+            )
+        )
+
+        viewModel = onboardingAnalyticsViewModelSpy()
+        with(viewModel) {
+            every { ageGroup } returns flowOf(PpaData.PPAAgeGroup.AGE_GROUP_0_TO_29).asLiveData()
+            every { federalState } returns flowOf(PpaData.PPAFederalState.FEDERAL_STATE_BE).asLiveData()
+            every { district } returns flow { emit(districts.loadDistricts().first()) }.asLiveData()
+        }
+
+        setupMockViewModel(
+            object : OnboardingAnalyticsViewModel.Factory {
+                override fun create(): OnboardingAnalyticsViewModel = viewModel
+            }
+        )
+    }
+
+    private fun onboardingAnalyticsViewModelSpy() = spyk(
+        OnboardingAnalyticsViewModel(
+            settings = settings,
+            districts = districts,
+            dispatcherProvider = TestDispatcherProvider(),
+            analytics = analytics
+        )
+    )
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+        unmockkAll()
+    }
+
+    @Test
+    fun launch_fragment() {
+        launchFragment2<OnboardingAnalyticsFragment>()
+    }
+
+    @Screenshot
+    @Test
+    fun capture_screenshot() {
+        captureScreenshot<OnboardingAnalyticsFragment>()
+    }
+}
+
+@Module
+abstract class OnboardingAnalyticsFragmentTestModule {
+    @ContributesAndroidInjector
+    abstract fun onboardingAnalyticsFragment(): OnboardingAnalyticsFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt
index 28dd9ce30754eda7622431dbcf6cd5debd7ce03c..cca410b3d66db4650b4a204619fe907e51c0b848 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt
@@ -37,13 +37,15 @@ class OnboardingDeltaInteroperabilityFragmentTest : BaseUITest() {
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
 
-        setupMockViewModel(object : OnboardingDeltaInteroperabilityFragmentViewModel.Factory {
-            override fun create(): OnboardingDeltaInteroperabilityFragmentViewModel =
-                OnboardingDeltaInteroperabilityFragmentViewModel(
-                    interopRepo = interopRepo,
-                    dispatcherProvider = TestDispatcherProvider()
-                )
-        })
+        setupMockViewModel(
+            object : OnboardingDeltaInteroperabilityFragmentViewModel.Factory {
+                override fun create(): OnboardingDeltaInteroperabilityFragmentViewModel =
+                    OnboardingDeltaInteroperabilityFragmentViewModel(
+                        interopRepo = interopRepo,
+                        dispatcherProvider = TestDispatcherProvider()
+                    )
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt
index 96e77f77f4a73cdb3e41944ece2b0314a70232b3..37e5a4d49af8069975cbe544e3fd203ad12f2cca 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt
@@ -7,18 +7,15 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
 import de.rki.coronawarnapp.R
-import io.mockk.unmockkAll
-import org.junit.After
-import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
-import testhelpers.takeScreenshot
 import testhelpers.Screenshot
 import testhelpers.SystemUIDemoModeRule
 import testhelpers.launchFragment2
 import testhelpers.launchFragmentInContainer2
+import testhelpers.takeScreenshot
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
 @RunWith(AndroidJUnit4::class)
@@ -31,19 +28,6 @@ class OnboardingFragmentTest : BaseUITest() {
     @get:Rule
     val systemUIDemoModeRule = SystemUIDemoModeRule()
 
-    @Before
-    fun setUp() {
-        setupMockViewModel(object : OnboardingFragmentViewModel.Factory {
-            override fun create(): OnboardingFragmentViewModel = OnboardingFragmentViewModel()
-        })
-    }
-
-    @After
-    fun teardown() {
-        clearAllViewModels()
-        unmockkAll()
-    }
-
     @Test
     fun launch_fragment() {
         launchFragment2<OnboardingFragment>()
@@ -55,8 +39,10 @@ class OnboardingFragmentTest : BaseUITest() {
         launchFragmentInContainer2<OnboardingFragment>()
         takeScreenshot<OnboardingFragment>()
 
-        onView(withId(R.id.onboarding_easy_language)).perform(scrollTo())
-        takeScreenshot<OnboardingFragment>("2")
+        if (showEasyLanguageLink()) {
+            onView(withId(R.id.onboarding_easy_language)).perform(scrollTo())
+            takeScreenshot<OnboardingFragment>("2")
+        }
     }
 }
 
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt
index 460f251e6cb7b4f4930854b40eca7db4766d8a19..8e057638ae9b5ccadd2797ff5042459593c1bdcd 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt
@@ -29,9 +29,11 @@ class OnboardingNotificationsFragmentTest : BaseUITest() {
 
     @Before
     fun setup() {
-        setupMockViewModel(object : OnboardingNotificationsViewModel.Factory {
-            override fun create(): OnboardingNotificationsViewModel = OnboardingNotificationsViewModel()
-        })
+        setupMockViewModel(
+            object : OnboardingNotificationsViewModel.Factory {
+                override fun create(): OnboardingNotificationsViewModel = OnboardingNotificationsViewModel()
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt
index e29b08e3a12c762997cdba0938a05aa5ab17c082..9963c9d574040484c68d21682a3e36edb9f34ee0 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt
@@ -29,9 +29,11 @@ class OnboardingPrivacyFragmentTest : BaseUITest() {
 
     @Before
     fun setup() {
-        setupMockViewModel(object : OnboardingPrivacyViewModel.Factory {
-            override fun create(): OnboardingPrivacyViewModel = OnboardingPrivacyViewModel()
-        })
+        setupMockViewModel(
+            object : OnboardingPrivacyViewModel.Factory {
+                override fun create(): OnboardingPrivacyViewModel = OnboardingPrivacyViewModel()
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt
index 3d5031b76fea25225cc9b6a3efb490b091d51d03..3feb9d96252757233937e7996944aece9c432c4a 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt
@@ -29,9 +29,11 @@ class OnboardingTestFragmentTest : BaseUITest() {
 
     @Before
     fun setup() {
-        setupMockViewModel(object : OnboardingTestViewModel.Factory {
-            override fun create(): OnboardingTestViewModel = OnboardingTestViewModel()
-        })
+        setupMockViewModel(
+            object : OnboardingTestViewModel.Factory {
+                override fun create(): OnboardingTestViewModel = OnboardingTestViewModel()
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt
index 35bd31261e39b8cd9dea384212c7779a959b7a16..8116f9a850a3c3b6d31b0623b41b6462effdcddd 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt
@@ -55,9 +55,11 @@ class OnboardingTracingFragmentTest : BaseUITest() {
         every { viewModelSpy.resetTracing() } just Runs
         every { interopRepo.countryList } returns flowOf()
 
-        setupMockViewModel(object : OnboardingTracingFragmentViewModel.Factory {
-            override fun create(): OnboardingTracingFragmentViewModel = viewModelSpy
-        })
+        setupMockViewModel(
+            object : OnboardingTracingFragmentViewModel.Factory {
+                override fun create(): OnboardingTracingFragmentViewModel = viewModelSpy
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt
index 8615f20e9ba424d7b6d08f92e96380b385dcb05b..3722ad6f62adfcc0e1c1f9cea7884a78bddc7c22 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.ui.submission
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.nearby.modules.tekhistory.TEKHistoryProvider
 import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
 import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentFragment
@@ -29,6 +30,7 @@ class SubmissionConsentFragmentTest : BaseUITest() {
 
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var interoperabilityRepository: InteroperabilityRepository
+    @MockK lateinit var tekHistoryProvider: TEKHistoryProvider
 
     @Rule
     @JvmField
@@ -44,10 +46,17 @@ class SubmissionConsentFragmentTest : BaseUITest() {
         MockKAnnotations.init(this, relaxed = true)
         every { interoperabilityRepository.countryList } returns flowOf()
         viewModel =
-            SubmissionConsentViewModel(submissionRepository, interoperabilityRepository, TestDispatcherProvider())
-        setupMockViewModel(object : SubmissionConsentViewModel.Factory {
-            override fun create(): SubmissionConsentViewModel = viewModel
-        })
+            SubmissionConsentViewModel(
+                submissionRepository,
+                interoperabilityRepository,
+                TestDispatcherProvider(),
+                tekHistoryProvider
+            )
+        setupMockViewModel(
+            object : SubmissionConsentViewModel.Factory {
+                override fun create(): SubmissionConsentViewModel = viewModel
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionQrCodeScanFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionQrCodeScanFragmentTest.kt
index ba2f2a3d81d8528bfbd88e2cfb8f4d4a00f62577..95fa42138eb8470c6458b56b949e6fbceb5f2be3 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionQrCodeScanFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionQrCodeScanFragmentTest.kt
@@ -23,9 +23,11 @@ class SubmissionQrCodeScanFragmentTest : BaseUITest() {
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
-        setupMockViewModel(object : SubmissionQRCodeScanViewModel.Factory {
-            override fun create(): SubmissionQRCodeScanViewModel = viewModel
-        })
+        setupMockViewModel(
+            object : SubmissionQRCodeScanViewModel.Factory {
+                override fun create(): SubmissionQRCodeScanViewModel = viewModel
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt
index 9f39d1bc63ff9c4613b625de8d36228aa18eb02f..d9f8712c01f50e2feb0f8ea772489ac2f81032f6 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt
@@ -61,9 +61,11 @@ class SubmissionSymptomCalendarFragmentTest : BaseUITest() {
         with(viewModel) {
             every { symptomStart } returns MutableLiveData(Symptoms.StartOf.LastSevenDays)
         }
-        setupMockViewModel(object : SubmissionSymptomCalendarViewModel.Factory {
-            override fun create(symptomIndication: Symptoms.Indication): SubmissionSymptomCalendarViewModel = viewModel
-        })
+        setupMockViewModel(
+            object : SubmissionSymptomCalendarViewModel.Factory {
+                override fun create(symptomIndication: Symptoms.Indication): SubmissionSymptomCalendarViewModel = viewModel
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt
index 15acf26045ab042a24a85f8e9d41389f1df1bf03..0d11b6d32c95656687b5889e09ae453b1697ee06 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt
@@ -50,9 +50,11 @@ class SubmissionTanFragmentTest : BaseUITest() {
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
 
-        setupMockViewModel(object : SubmissionTanViewModel.Factory {
-            override fun create(): SubmissionTanViewModel = createViewModel()
-        })
+        setupMockViewModel(
+            object : SubmissionTanViewModel.Factory {
+                override fun create(): SubmissionTanViewModel = createViewModel()
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt
index 6d0e98cd12b03f018e1ded01e72423be4b410b81..c099702b2c9d71f323151993717783e3cad916c5 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt
@@ -9,9 +9,12 @@ import de.rki.coronawarnapp.submission.auto.AutoSubmission
 import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater_Factory_Impl
 import de.rki.coronawarnapp.ui.submission.resultavailable.SubmissionTestResultAvailableFragment
 import de.rki.coronawarnapp.ui.submission.resultavailable.SubmissionTestResultAvailableViewModel
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import io.mockk.MockKAnnotations
+import io.mockk.Runs
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
+import io.mockk.just
 import io.mockk.spyk
 import io.mockk.unmockkAll
 import kotlinx.coroutines.flow.flowOf
@@ -34,6 +37,7 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var tekHistoryUpdaterFactory: TEKHistoryUpdater_Factory_Impl
     @MockK lateinit var autoSubmission: AutoSubmission
+    @MockK lateinit var appShortcutsHelper: AppShortcutsHelper
 
     @Rule
     @JvmField
@@ -48,6 +52,7 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
 
         every { submissionRepository.deviceUIStateFlow } returns flowOf()
         every { submissionRepository.testResultReceivedDateFlow } returns flowOf()
+        every { appShortcutsHelper.removeAppShortcut() } just Runs
 
         viewModel = spyk(
             SubmissionTestResultAvailableViewModel(
@@ -58,9 +63,11 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
             )
         )
 
-        setupMockViewModel(object : SubmissionTestResultAvailableViewModel.Factory {
-            override fun create(): SubmissionTestResultAvailableViewModel = viewModel
-        })
+        setupMockViewModel(
+            object : SubmissionTestResultAvailableViewModel.Factory {
+                override fun create(): SubmissionTestResultAvailableViewModel = viewModel
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt
index 574402d6ac1775b14a93074eb7a6ff891aa47b06..b195f8d395dce7a5e06f36879f4e0918d775620c 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt
@@ -108,7 +108,8 @@ class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
             TestResultUIState(
                 NetworkRequestWrapper.RequestSuccessful(
                     DeviceUIState.PAIRED_POSITIVE
-                ), Date()
+                ),
+                Date()
             )
         )
 
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt
index 8d6dbe13d3ce2cd8bb9e214a864e848c5e85f1c8..26121cd22026c15ac6e2377a75e20f37e604b16c 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt
@@ -117,7 +117,8 @@ class SubmissionTestResultFragmentTest : BaseUITest() {
             TestResultUIState(
                 NetworkRequestWrapper.RequestSuccessful(
                     DeviceUIState.PAIRED_NO_RESULT
-                ), Date()
+                ),
+                Date()
             )
         )
         captureScreenshot<SubmissionTestResultPendingFragment>()
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt
index 4fba5b0c5c98abe152e383720fae04bea4973ad8..8af923fc90d8b3664ac210923e65b0bb05394138 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt
@@ -59,9 +59,11 @@ class SubmissionTestResultNegativeFragmentTest : BaseUITest() {
             )
         )
 
-        setupMockViewModel(object : SubmissionTestResultNegativeViewModel.Factory {
-            override fun create(): SubmissionTestResultNegativeViewModel = viewModel
-        })
+        setupMockViewModel(
+            object : SubmissionTestResultNegativeViewModel.Factory {
+                override fun create(): SubmissionTestResultNegativeViewModel = viewModel
+            }
+        )
     }
 
     @After
@@ -77,7 +79,8 @@ class SubmissionTestResultNegativeFragmentTest : BaseUITest() {
             TestResultUIState(
                 NetworkRequestWrapper.RequestSuccessful(
                     DeviceUIState.PAIRED_NEGATIVE
-                ), Date()
+                ),
+                Date()
             )
         )
         captureScreenshot<SubmissionTestResultNegativeFragment>()
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt
index 5d5bed0d1557c715ddbf869d666e31919cf65126..d13a644893f13b90b05995c99a3393f16b46ca06 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt
@@ -48,9 +48,11 @@ class SubmissionTestResultNoConsentGivenFragmentTest : BaseUITest() {
         MockKAnnotations.init(this, relaxed = true)
         viewModel =
             spyk(SubmissionTestResultNoConsentViewModel(submissionRepository, testResultAvailableNotificationService))
-        setupMockViewModel(object : SubmissionTestResultNoConsentViewModel.Factory {
-            override fun create(): SubmissionTestResultNoConsentViewModel = viewModel
-        })
+        setupMockViewModel(
+            object : SubmissionTestResultNoConsentViewModel.Factory {
+                override fun create(): SubmissionTestResultNoConsentViewModel = viewModel
+            }
+        )
     }
 
     @After
@@ -66,7 +68,8 @@ class SubmissionTestResultNoConsentGivenFragmentTest : BaseUITest() {
             TestResultUIState(
                 NetworkRequestWrapper.RequestSuccessful(
                     DeviceUIState.PAIRED_POSITIVE
-                ), Date()
+                ),
+                Date()
             )
         )
 
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt
index e24aa351ebb21d809a03d2eff0de5a5e87d16637..d04b7ce216171e1f1ea9702abb277c7399ca6022 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt
@@ -46,9 +46,11 @@ class SubmissionYourConsentFragmentTest : BaseUITest() {
         every { submissionRepository.hasGivenConsentToSubmission } returns flowOf()
         viewModel =
             SubmissionYourConsentViewModel(TestDispatcherProvider(), interoperabilityRepository, submissionRepository)
-        setupMockViewModel(object : SubmissionYourConsentViewModel.Factory {
-            override fun create(): SubmissionYourConsentViewModel = viewModel
-        })
+        setupMockViewModel(
+            object : SubmissionYourConsentViewModel.Factory {
+                override fun create(): SubmissionYourConsentViewModel = viewModel
+            }
+        )
     }
 
     @After
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/tracing/TracingDetailsFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/tracing/TracingDetailsFragmentTest.kt
index cd1ae371d21040b73673b24272918215fea7f634..b9da670a20ca57ebbddf6ba6492d4687e788f5dc 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/tracing/TracingDetailsFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/tracing/TracingDetailsFragmentTest.kt
@@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.datadonation.survey.Surveys
 import de.rki.coronawarnapp.risk.storage.RiskLevelStorage
 import de.rki.coronawarnapp.storage.TracingRepository
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
@@ -24,12 +25,12 @@ import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
-import testhelpers.takeScreenshot
 import testhelpers.Screenshot
 import testhelpers.SystemUIDemoModeRule
 import testhelpers.TestDispatcherProvider
 import testhelpers.launchFragment2
 import testhelpers.launchFragmentInContainer2
+import testhelpers.takeScreenshot
 import tools.fastlane.screengrab.locale.LocaleTestRule
 
 @RunWith(AndroidJUnit4::class)
@@ -41,6 +42,7 @@ class TracingDetailsFragmentTest : BaseUITest() {
     @MockK lateinit var tracingDetailsItemProvider: TracingDetailsItemProvider
     @MockK lateinit var tracingStateProviderFactory: TracingStateProvider.Factory
     @MockK lateinit var tracingRepository: TracingRepository
+    @MockK lateinit var surveys: Surveys
 
     private lateinit var viewModel: TracingDetailsFragmentViewModel
 
@@ -63,7 +65,8 @@ class TracingDetailsFragmentTest : BaseUITest() {
                 riskLevelStorage = riskLevelStorage,
                 tracingDetailsItemProvider = tracingDetailsItemProvider,
                 tracingStateProviderFactory = tracingStateProviderFactory,
-                tracingRepository = tracingRepository
+                tracingRepository = tracingRepository,
+                surveys = surveys
             )
         )
 
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/util/security/DBPasswordTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/util/security/DBPasswordTest.kt
index 0858f69d10ab54a797c310fd2871e79ac5f1f671..65bc675e5daf5c602cb401fc3cdf4b5e6bdacb9c 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/util/security/DBPasswordTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/util/security/DBPasswordTest.kt
@@ -128,10 +128,12 @@ class DBPasswordTest {
         from: Long,
         to: Long
     ) {
-        db.tracingIntervalDao().insertInterval(TracingIntervalEntity().apply {
-            this.from = from
-            this.to = to
-        })
+        db.tracingIntervalDao().insertInterval(
+            TracingIntervalEntity().apply {
+                this.from = from
+                this.to = to
+            }
+        )
     }
 
     private suspend fun loadFakeEntity(): TracingIntervalEntity =
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/BaseUITest.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/BaseUITest.kt
index a8c26e949e888c86e9a9f2e60fb7fd1f1a8176e4..ad347acdb141a78f9fa9e3132e25fe99dc894bcf 100644
--- a/Corona-Warn-App/src/androidTest/java/testhelpers/BaseUITest.kt
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/BaseUITest.kt
@@ -1,11 +1,20 @@
 package testhelpers
 
+import android.Manifest
+import androidx.test.rule.GrantPermissionRule
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import org.junit.Rule
 import testhelpers.viewmodels.MockViewModelModule
 
 abstract class BaseUITest : BaseTest() {
 
+    @get:Rule
+    val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(
+        Manifest.permission.READ_EXTERNAL_STORAGE,
+        Manifest.permission.WRITE_EXTERNAL_STORAGE
+    )
+
     inline fun <reified T : CWAViewModel> setupMockViewModel(factory: CWAViewModelFactory<T>) {
         MockViewModelModule.CREATORS[T::class.java] = factory
     }
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt
index 76df52f04693d8229d33498a5d71e515004bffc1..c740c6b53e2e9e8966c9757ea82800a9417cc1d2 100644
--- a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt
@@ -9,6 +9,7 @@ import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOnboardingFragmentTestMo
 import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOverviewFragmentTestModule
 import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryPersonListFragmentTestModule
 import de.rki.coronawarnapp.ui.main.home.HomeFragmentTestModule
+import de.rki.coronawarnapp.ui.onboarding.OnboardingAnalyticsFragmentTestModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaInteroperabilityFragmentTestModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingFragmentTestModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingNotificationsTestModule
@@ -41,6 +42,7 @@ import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule
         OnboardingPrivacyTestModule::class,
         OnboardingTestFragmentModule::class,
         OnboardingTracingFragmentTestModule::class,
+        OnboardingAnalyticsFragmentTestModule::class,
         // Submission
         SubmissionDispatcherTestModule::class,
         SubmissionTanTestModule::class,
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt
index e7076a69636b134b9e8fb5a545b19836c801fea5..4d9f4cea6269d3119a667f9373c88bac80d0c3db 100644
--- a/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt
@@ -1,13 +1,23 @@
 package testhelpers
 
 import android.app.Activity
+import android.graphics.Bitmap
 import android.os.Bundle
+import android.provider.Settings
+import android.util.Log
 import androidx.annotation.StyleRes
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentFactory
 import androidx.test.espresso.ViewAction
+import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import de.rki.coronawarnapp.R
 import tools.fastlane.screengrab.Screengrab
+import tools.fastlane.screengrab.ScreenshotCallback
+import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy
+import tools.fastlane.screengrab.file.Chmod
+import java.io.BufferedOutputStream
+import java.io.File
+import java.io.FileOutputStream
 
 /**
  * Waits for 2 sec and captures a screenshot
@@ -18,7 +28,18 @@ inline fun <reified T> takeScreenshot(suffix: String = "", delay: Long = SCREENS
     Thread.sleep(delay)
     val simpleName = T::class.simpleName
     val name = if (suffix.isEmpty()) simpleName else simpleName.plus("_$suffix")
-    Screengrab.screenshot(name)
+
+    val contentResolver = getInstrumentation().targetContext.contentResolver
+    val testLabSetting = Settings.System.getString(contentResolver, "firebase.test.lab")
+    if ("true" == testLabSetting) {
+        Screengrab.screenshot(
+            name,
+            UiAutomatorScreenshotStrategy(),
+            SDCardCallback
+        )
+    } else {
+        Screengrab.screenshot(name)
+    }
 }
 
 /**
@@ -36,3 +57,35 @@ inline fun <reified F : Fragment> captureScreenshot(
     launchFragmentInContainer2<F>(fragmentArgs, themeResId, factory)
     takeScreenshot<F>(suffix)
 }
+
+/**
+ * Saves screenshots on the device's sdcard
+ */
+object SDCardCallback : ScreenshotCallback {
+    private const val ROOT_DIRECTORY = "/sdcard"
+    private const val SCREENSHOTS_DIRECTORY = "screenshots"
+    private const val SCREENSHOT_FORMAT = ".png"
+    private const val IMAGE_QUALITY = 100
+
+    override fun screenshotCaptured(screenshotName: String, screenshot: Bitmap) {
+        try {
+            val directory = File(ROOT_DIRECTORY, SCREENSHOTS_DIRECTORY)
+            if (!directory.exists()) {
+                directory.mkdirs()
+            }
+            val screenshotFile = File(directory, screenshotName + SCREENSHOT_FORMAT)
+            if (!screenshotFile.exists()) {
+                screenshotFile.createNewFile()
+            }
+
+            BufferedOutputStream(FileOutputStream(screenshotFile)).use {
+                screenshot.compress(Bitmap.CompressFormat.PNG, IMAGE_QUALITY, it)
+                Chmod.chmodPlusR(screenshotFile)
+                screenshot.recycle()
+            }
+            Log.d("Screengrab", "Captured screenshot \"${screenshotFile.name}\"")
+        } catch (e: Exception) {
+            throw RuntimeException("Unable to capture screenshot.", e)
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenshotUnderTest.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenshotUnderTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7d1de56b8f35ddf027530b819add8a7bccd228d7
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenshotUnderTest.kt
@@ -0,0 +1,15 @@
+package testhelpers
+
+/**
+ * Similar to [Screenshot]. it is helpful during development and testing process to filter
+ * the test currently being implemented.
+ * In fastlane folder. replace `Screenshot` with `ScreenshotUnderTest` in Screengrabfile
+ *
+ * Note: this is only for testing purposes and should NOT be used in final tests
+ */
+@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
+@Target(
+    AnnotationTarget.FUNCTION,
+    AnnotationTarget.CLASS
+)
+annotation class ScreenshotUnderTest
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestApplication.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestApplication.kt
index 090469fdfc056c1c215e5b79d432fd6b1d8c787a..5b9967ddee97709178338a8adbaa8ed923d8aee3 100644
--- a/Corona-Warn-App/src/androidTest/java/testhelpers/TestApplication.kt
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestApplication.kt
@@ -29,46 +29,51 @@ class TestApplication : Application(), HasAndroidInjector {
     }
 
     private fun setupActivityHook() {
-        registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
-            override fun onActivityPreCreated(activity: Activity, savedInstanceState: Bundle?) = Unit
+        registerActivityLifecycleCallbacks(
+            object : ActivityLifecycleCallbacks {
+                override fun onActivityPreCreated(activity: Activity, savedInstanceState: Bundle?) = Unit
 
-            override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
-                Timber.d("onActivityCreated")
-                setupFragmentHook(activity)
-                Timber.d("FragmentHook injection is called")
-            }
+                override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
+                    Timber.d("onActivityCreated")
+                    setupFragmentHook(activity)
+                    Timber.d("FragmentHook injection is called")
+                }
 
-            override fun onActivityStarted(activity: Activity) = Unit
+                override fun onActivityStarted(activity: Activity) = Unit
 
-            override fun onActivityResumed(activity: Activity) = Unit
+                override fun onActivityResumed(activity: Activity) = Unit
 
-            override fun onActivityPaused(activity: Activity) = Unit
+                override fun onActivityPaused(activity: Activity) = Unit
 
-            override fun onActivityStopped(activity: Activity) = Unit
+                override fun onActivityStopped(activity: Activity) = Unit
 
-            override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit
+                override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit
 
-            override fun onActivityDestroyed(activity: Activity) = Unit
-        })
+                override fun onActivityDestroyed(activity: Activity) = Unit
+            }
+        )
     }
 
     private fun setupFragmentHook(activity: Activity) {
         if (activity is FragmentActivity) {
             activity.supportFragmentManager
-                .registerFragmentLifecycleCallbacks(object :
-                    FragmentManager.FragmentLifecycleCallbacks() {
-                    override fun onFragmentPreAttached(
-                        fm: FragmentManager,
-                        f: Fragment,
-                        context: Context
-                    ) {
-                        if (f is AutoInject) {
-                            Timber.d("Injecting %s", f)
-                            AndroidSupportInjection.inject(f)
+                .registerFragmentLifecycleCallbacks(
+                    object :
+                        FragmentManager.FragmentLifecycleCallbacks() {
+                        override fun onFragmentPreAttached(
+                            fm: FragmentManager,
+                            f: Fragment,
+                            context: Context
+                        ) {
+                            if (f is AutoInject) {
+                                Timber.d("Injecting %s", f)
+                                AndroidSupportInjection.inject(f)
+                            }
+                            super.onFragmentPreAttached(fm, f, context)
                         }
-                        super.onFragmentPreAttached(fm, f, context)
-                    }
-                }, true)
+                    },
+                    true
+                )
         }
     }
 }
diff --git a/Corona-Warn-App/src/debug/AndroidManifest.xml b/Corona-Warn-App/src/debug/AndroidManifest.xml
index 26a521d64d1103520a4dd6c6130a7f248e939d2e..97058d1d3ae50643a01ff82ebd99e98b1322b9ed 100644
--- a/Corona-Warn-App/src/debug/AndroidManifest.xml
+++ b/Corona-Warn-App/src/debug/AndroidManifest.xml
@@ -15,4 +15,8 @@
         android:name="android.permission.CHANGE_CONFIGURATION"
         tools:ignore="ProtectedPermissions" />
 
+    <application
+        android:requestLegacyExternalStorage="true"
+        tools:node="merge" />
+
 </manifest>
diff --git a/Corona-Warn-App/src/device/java/de/rki/coronawarnapp/datadonation/analytics/storage/DefaultLastAnalyticsSubmissionLogger.kt b/Corona-Warn-App/src/device/java/de/rki/coronawarnapp/datadonation/analytics/storage/DefaultLastAnalyticsSubmissionLogger.kt
new file mode 100644
index 0000000000000000000000000000000000000000..edfdc72fc92682f92b46a72701430eafcb4bbec3
--- /dev/null
+++ b/Corona-Warn-App/src/device/java/de/rki/coronawarnapp/datadonation/analytics/storage/DefaultLastAnalyticsSubmissionLogger.kt
@@ -0,0 +1,12 @@
+package de.rki.coronawarnapp.datadonation.analytics.storage
+
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import javax.inject.Inject
+
+class DefaultLastAnalyticsSubmissionLogger @Inject constructor() : LastAnalyticsSubmissionLogger {
+    override suspend fun storeAnalyticsData(analyticsProto: PpaData.PPADataAndroid) {
+        // Do not store past analytics submissions in Production
+    }
+
+    override suspend fun getLastAnalyticsData(): LastAnalyticsSubmission? = null
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/bugreporting/reporter/DefaultBugReporter.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/bugreporting/reporter/DefaultBugReporter.kt
index 50bf3b51d4bdd295fc4b0d231ddbf9b0d86d5a86..c195019c58bf43968777d327f9ea4013f25ee389 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/bugreporting/reporter/DefaultBugReporter.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/bugreporting/reporter/DefaultBugReporter.kt
@@ -20,7 +20,7 @@ class DefaultBugReporter @Inject constructor(
 ) : BugReporter {
 
     override fun report(throwable: Throwable, tag: String?, info: String?) {
-        Timber.e(throwable, "Processing reported bug (info=$info) from $tag.")
+        Timber.v("Processing reported bug (info=$info) from $tag: $throwable")
         scope.launch(context = dispatcherProvider.IO) {
             val event = processor.processor(throwable, tag, info)
             repository.save(event)
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/datadonation/analytics/storage/DefaultLastAnalyticsSubmissionLogger.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/datadonation/analytics/storage/DefaultLastAnalyticsSubmissionLogger.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3b062450b508233404cd166c504e84edd2c6b93d
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/datadonation/analytics/storage/DefaultLastAnalyticsSubmissionLogger.kt
@@ -0,0 +1,92 @@
+package de.rki.coronawarnapp.datadonation.analytics.storage
+
+import android.content.Context
+import com.google.gson.Gson
+import com.google.gson.JsonParseException
+import com.google.gson.TypeAdapter
+import com.google.gson.stream.JsonReader
+import com.google.gson.stream.JsonWriter
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.TimeStamper
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.di.AppContext
+import de.rki.coronawarnapp.util.serialization.BaseGson
+import de.rki.coronawarnapp.util.serialization.adapter.InstantAdapter
+import de.rki.coronawarnapp.util.serialization.fromJson
+import de.rki.coronawarnapp.util.serialization.toJson
+import kotlinx.coroutines.withContext
+import okio.ByteString.Companion.decodeBase64
+import okio.ByteString.Companion.toByteString
+import org.joda.time.Instant
+import org.json.JSONObject
+import timber.log.Timber
+import java.io.File
+import javax.inject.Inject
+
+class DefaultLastAnalyticsSubmissionLogger @Inject constructor(
+    @AppContext private val context: Context,
+    private val dispatcherProvider: DispatcherProvider,
+    @BaseGson private val baseGson: Gson,
+    private val timeStamper: TimeStamper
+) : LastAnalyticsSubmissionLogger {
+    private val analyticsDir = File(context.cacheDir, "analytics_storage")
+    private val analyticsFile = File(analyticsDir, "last_analytics.bin")
+
+    private val gson by lazy {
+        baseGson.newBuilder()
+            .registerTypeAdapter(Instant::class.java, InstantAdapter())
+            .registerTypeAdapter(PpaData.PPADataAndroid::class.java, PPADataAndroidAdapter())
+            .create()
+    }
+
+    override suspend fun storeAnalyticsData(analyticsProto: PpaData.PPADataAndroid) =
+        withContext(dispatcherProvider.IO) {
+            if (!analyticsDir.exists()) {
+                analyticsDir.mkdirs()
+            }
+
+            val dataObject = LastAnalyticsSubmission(
+                timestamp = timeStamper.nowUTC,
+                ppaDataAndroid = analyticsProto
+            )
+
+            try {
+                gson.toJson(dataObject, analyticsFile)
+            } catch (e: Exception) {
+                Timber.e(e, "Failed to store analytics data.")
+            }
+        }
+
+    override suspend fun getLastAnalyticsData(): LastAnalyticsSubmission? = withContext(dispatcherProvider.IO) {
+        try {
+            gson.fromJson<LastAnalyticsSubmission>(analyticsFile)?.also {
+                requireNotNull(it.ppaDataAndroid)
+                requireNotNull(it.timestamp)
+            }
+        } catch (e: Exception) {
+            Timber.e(e, "Couldn't load analytics data.")
+            null
+        }
+    }
+
+    companion object {
+        class PPADataAndroidAdapter : TypeAdapter<PpaData.PPADataAndroid>() {
+            override fun write(out: JsonWriter, value: PpaData.PPADataAndroid?) {
+                if (value == null) out.nullValue()
+                else value.toByteArray()?.toByteString()?.base64().let { out.value(it) }
+            }
+
+            override fun read(reader: JsonReader): PpaData.PPADataAndroid? = when (reader.peek()) {
+                JSONObject.NULL -> reader.nextNull().let { null }
+                else -> {
+                    val raw = reader.nextString().decodeBase64()?.toByteArray()
+                    if (raw == null) {
+                        throw JsonParseException("Can't decode base64 ByteArray")
+                    } else {
+                        PpaData.PPADataAndroid.parseFrom(raw)
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt
index 8a0f03194cf07352cf0137e8f5dab01ab4761b59..9aa9ce21df5fb36f43c569af882b517ca8751ff5 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt
@@ -34,11 +34,12 @@ class AppConfigTestFragment : Fragment(R.layout.fragment_test_appconfig), AutoIn
         vm.currentConfig.observe2(this) { data ->
             binding.currentConfiguration.text = data.rawConfig.toString()
             binding.lastUpdate.text = timeFormatter.print(data.updatedAt)
-            binding.timeOffset.text = """
+            binding.timeOffset.text =
+                """
             ${data.localOffset.millis}ms
             configType=${data.configType}
             isDeviceTimeCorrect=${data.isDeviceTimeCorrect}
-            """.trimIndent()
+                """.trimIndent()
         }
 
         vm.errorEvent.observe2(this) {
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/CrashReportAdapter.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/CrashReportAdapter.kt
index afdfb4358aa590da76289fb57cf592c9b0efc2f1..6577ece9d20679eadf04e6505c23e2b930b2a6f3 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/CrashReportAdapter.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/CrashReportAdapter.kt
@@ -37,8 +37,8 @@ class CrashReportAdapter(private val itemClickListener: (bugEvent: BugEvent) ->
     class CrashHolder(private val binding: ViewCrashreportListItemBinding) :
         RecyclerView.ViewHolder(binding.root) {
         fun bind(bugEvent: BugEvent, pos: Int) {
-            binding.crashReportTitle = "Error #${pos + 1}"
-            binding.message = bugEvent.exceptionMessage
+            binding.crashReportTitle = "#${pos + 1} ${bugEvent.exceptionClass}"
+            binding.message = bugEvent.info ?: bugEvent.exceptionMessage
             binding.crashReportDateFormatted =
                 bugEvent.createdAt.toDateTime(DateTimeZone.getDefault()).toString()
                     .replace("T", "  ")
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragment.kt
index 2a669104475048878bcde5964e91d86172f38f45..26659a70227711ac3798bacb43f4e89b198f3212 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragment.kt
@@ -3,13 +3,21 @@ package de.rki.coronawarnapp.test.datadonation.ui
 import android.annotation.SuppressLint
 import android.os.Bundle
 import android.view.View
+import android.widget.RadioButton
+import android.widget.RadioGroup
 import android.widget.Toast
 import androidx.core.app.ShareCompat
+import androidx.core.view.ViewCompat
+import androidx.core.view.children
 import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentTestDatadonationBinding
+import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetException
+import de.rki.coronawarnapp.datadonation.survey.SurveyException
 import de.rki.coronawarnapp.test.menu.ui.TestMenuItem
+import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.tryHumanReadableError
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
@@ -34,9 +42,16 @@ class DataDonationTestFragment : Fragment(R.layout.fragment_test_datadonation),
             }
         }
 
+        vm.currentAnalyticsData.observe2(this) {
+            binding.analyticsBody.text = it.toString()
+        }
+
         binding.apply {
             safetynetCreateReport.setOnClickListener { vm.createSafetyNetReport() }
             safetynetCopyJws.setOnClickListener { vm.copyJWS() }
+            analyticsCollect.setOnClickListener { vm.collectAnalyticsData() }
+            analyticsCopy.setOnClickListener { vm.copyAnalytics() }
+            analyticsSubmit.setOnClickListener { vm.submitAnalytics() }
         }
 
         vm.copyJWSEvent.observe2(this) { jws ->
@@ -48,6 +63,19 @@ class DataDonationTestFragment : Fragment(R.layout.fragment_test_datadonation),
             startActivity(intent)
         }
 
+        vm.copyAnalyticsEvent.observe2(this) { analytics ->
+            val intent = ShareCompat.IntentBuilder.from(requireActivity()).apply {
+                setType("text/plain")
+                setSubject("Analytics")
+                setText(analytics)
+            }.createChooserIntent()
+            startActivity(intent)
+        }
+
+        vm.infoEvents.observe2(this) {
+            Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show()
+        }
+
         vm.currentValidation.observe2(this) { items ->
             if (items?.first == null) {
                 binding.safetynetRequirementsBody.text = "No validation yet."
@@ -63,13 +91,98 @@ class DataDonationTestFragment : Fragment(R.layout.fragment_test_datadonation),
                 }
             }
         }
+
         binding.apply {
             safetynetRequirementsCasually.setOnClickListener { vm.validateSafetyNetCasually() }
             safetynetRequirementsStrict.setOnClickListener { vm.validateSafetyNetStrict() }
         }
 
-        vm.errorEvents.observe2(this) {
-            Toast.makeText(requireContext(), it.toString(), Toast.LENGTH_LONG).show()
+        vm.lastAnalyticsData.observe2(this) {
+            binding.analyticsLastSubmitBody.text =
+                it?.toString() ?: "No analytics were successfully submitted until now"
+        }
+
+        vm.checkLastAnalytics()
+
+        binding.oneTimePasswordBody.text = vm.otp
+
+        vm.surveyConfig.observe2(this) {
+            binding.surveyConfigBody.text = it
+        }
+
+        vm.showErrorDialog.observe2(this) {
+            val humanReadableError = it.tryHumanReadableError(requireContext())
+            val dialog = DialogHelper.DialogInstance(
+                context = requireContext(),
+                title = R.string.datadonation_details_survey_consent_error_dialog_title,
+                message = humanReadableError.description,
+                positiveButton = R.string.datadonation_details_survey_consent_error_dialog_pos_button,
+                cancelable = false
+            )
+            DialogHelper.showDialog(dialog)
+        }
+
+        vm.currentSafetyNetExceptionType.observe2(this) { type ->
+            binding.apply {
+                if (safetynetExceptionSimulationRadioGroup.childCount != SafetyNetException.Type.values().size) {
+                    SafetyNetException.Type.values()
+                        .forEach { safetynetExceptionSimulationRadioGroup.addRadioButton(it.name) }
+                }
+                safetynetExceptionSimulationRadioGroup.children.checkByName(type.name)
+            }
+        }
+
+        binding.apply {
+            safetynetExceptionSimulationRadioGroup.setOnCheckedChangeListener { group, checkedId ->
+                val rb = group.findViewById(checkedId) as RadioButton
+                if (!rb.isPressed) return@setOnCheckedChangeListener
+                vm.selectSafetyNetExceptionType(SafetyNetException.Type.valueOf(rb.text as String))
+            }
+
+            safetynetExceptionSimulationButton.setOnClickListener { vm.showSafetyNetErrorDialog() }
+        }
+
+        vm.currentSurveyExceptionType.observe2(this) { type ->
+            binding.apply {
+                if (surveyExceptionSimulationRadioGroup.childCount != SurveyException.Type.values().size) {
+                    SurveyException.Type.values()
+                        .forEach { surveyExceptionSimulationRadioGroup.addRadioButton(it.name) }
+                }
+                surveyExceptionSimulationRadioGroup.children.checkByName(type.name)
+            }
+        }
+
+        binding.apply {
+            surveyExceptionSimulationRadioGroup.setOnCheckedChangeListener { group, checkedId ->
+                val rb = group.findViewById(checkedId) as RadioButton
+                if (!rb.isPressed) return@setOnCheckedChangeListener
+                vm.selectSurveyExceptionType(SurveyException.Type.valueOf(rb.text as String))
+            }
+
+            surveyExceptionSimulationButton.setOnClickListener { vm.showSurveyErrorDialog() }
+        }
+
+        vm.isSafetyNetTimeCheckSkipped.observe2(this) {
+            binding.disableSafetynetToggle.isChecked = it
+        }
+
+        binding.disableSafetynetToggle.setOnClickListener {
+            vm.toggleSkipSafetyNetTimeCheck()
+        }
+    }
+
+    private fun RadioGroup.addRadioButton(text: String) {
+        val rb = RadioButton(context).apply {
+            this.text = text
+            id = ViewCompat.generateViewId()
+        }
+        addView(rb)
+    }
+
+    private fun Sequence<View>.checkByName(name: String) {
+        forEach {
+            it as RadioButton
+            it.isChecked = it.text == name
         }
     }
 
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragmentViewModel.kt
index 342b26386f524bdd0655f58ccd82d9b1f6f155cd..3240d59a1f3370e871145e5fc985c51e50a6b518 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragmentViewModel.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/datadonation/ui/DataDonationTestFragmentViewModel.kt
@@ -3,15 +3,25 @@ package de.rki.coronawarnapp.test.datadonation.ui
 import androidx.lifecycle.asLiveData
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.appconfig.SafetyNetRequirementsContainer
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.datadonation.analytics.storage.LastAnalyticsSubmission
+import de.rki.coronawarnapp.datadonation.analytics.storage.LastAnalyticsSubmissionLogger
 import de.rki.coronawarnapp.datadonation.safetynet.CWASafetyNet
 import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
 import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetClientWrapper
+import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetException
+import de.rki.coronawarnapp.datadonation.storage.OTPRepository
+import de.rki.coronawarnapp.datadonation.survey.SurveyException
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.storage.TestSettings
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.map
 import timber.log.Timber
 import java.security.SecureRandom
 
@@ -19,19 +29,49 @@ class DataDonationTestFragmentViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
     private val safetyNetClientWrapper: SafetyNetClientWrapper,
     private val secureRandom: SecureRandom,
-    private val cwaSafetyNet: CWASafetyNet
+    private val analytics: Analytics,
+    private val lastAnalyticsSubmissionLogger: LastAnalyticsSubmissionLogger,
+    private val cwaSafetyNet: CWASafetyNet,
+    otpRepository: OTPRepository,
+    private val appConfigProvider: AppConfigProvider,
+    private val testSettings: TestSettings
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
+    val infoEvents = SingleLiveEvent<String>()
+
     private val currentReportInternal = MutableStateFlow<SafetyNetClientWrapper.Report?>(null)
     val currentReport = currentReportInternal.asLiveData(context = dispatcherProvider.Default)
 
     private val currentValidationInternal =
         MutableStateFlow<Pair<SafetyNetRequirementsContainer?, Throwable?>?>(null)
     val currentValidation = currentValidationInternal.asLiveData(context = dispatcherProvider.Default)
-
-    val errorEvents = SingleLiveEvent<Throwable>()
     val copyJWSEvent = SingleLiveEvent<String>()
 
+    private val currentAnalyticsDataInternal = MutableStateFlow<PpaData.PPADataAndroid?>(null)
+    val currentAnalyticsData = currentAnalyticsDataInternal.asLiveData(context = dispatcherProvider.Default)
+    val copyAnalyticsEvent = SingleLiveEvent<String>()
+
+    private val lastAnalyticsDataInternal = MutableStateFlow<LastAnalyticsSubmission?>(null)
+    val lastAnalyticsData = lastAnalyticsDataInternal.asLiveData(context = dispatcherProvider.Default)
+
+    val isSafetyNetTimeCheckSkipped = testSettings.skipSafetyNetTimeCheck.flow
+        .asLiveData(context = dispatcherProvider.Default)
+
+    val otp: String = otpRepository.otpAuthorizationResult?.toString() ?: "No OTP generated and authorized yet"
+
+    val surveyConfig = appConfigProvider.currentConfig
+        .map { it.survey.toString() }
+        .asLiveData(context = dispatcherProvider.Default)
+
+    private val currentSafetyNetExceptionTypeInternal = MutableStateFlow(SafetyNetException.Type.values().first())
+    val currentSafetyNetExceptionType =
+        currentSafetyNetExceptionTypeInternal.asLiveData(context = dispatcherProvider.Default)
+
+    private val currentSurveyExceptionTypeInternal = MutableStateFlow(SurveyException.Type.values().first())
+    val currentSurveyExceptionType = currentSurveyExceptionTypeInternal.asLiveData(context = dispatcherProvider.Default)
+
+    val showErrorDialog = SingleLiveEvent<Exception>()
+
     fun createSafetyNetReport() {
         launch {
             val nonce = ByteArray(16)
@@ -41,7 +81,7 @@ class DataDonationTestFragmentViewModel @AssistedInject constructor(
                 currentReportInternal.value = report
             } catch (e: Exception) {
                 Timber.e(e, "attest() failed.")
-                errorEvents.postValue(e)
+                infoEvents.postValue(e.toString())
             }
         }
     }
@@ -66,9 +106,11 @@ class DataDonationTestFragmentViewModel @AssistedInject constructor(
             val payload = ByteArray(16)
             secureRandom.nextBytes(payload)
             try {
-                val result = cwaSafetyNet.attest(object : DeviceAttestation.Request {
-                    override val scenarioPayload: ByteArray = payload
-                })
+                val result = cwaSafetyNet.attest(
+                    object : DeviceAttestation.Request {
+                        override val scenarioPayload: ByteArray = payload
+                    }
+                )
                 result.requirePass(requirements)
                 currentValidationInternal.value = requirements to null
             } catch (e: Exception) {
@@ -85,6 +127,67 @@ class DataDonationTestFragmentViewModel @AssistedInject constructor(
         }
     }
 
+    fun collectAnalyticsData() = launch {
+        try {
+            val configData = appConfigProvider.getAppConfig()
+            val ppaDataAndroid = PpaData.PPADataAndroid.newBuilder()
+            analytics.collectContributions(configData, ppaDataAndroid)
+            currentAnalyticsDataInternal.value = ppaDataAndroid.build()
+        } catch (e: Exception) {
+            Timber.e(e, "collectContributions() failed.")
+            infoEvents.postValue(e.toString())
+        }
+    }
+
+    fun submitAnalytics() = launch {
+        infoEvents.postValue("Starting Analytics Submission")
+        val configData = appConfigProvider.getAppConfig()
+        analytics.submitAnalyticsData(configData)
+        infoEvents.postValue("Analytics Submission Done")
+        checkLastAnalytics()
+    }
+
+    fun copyAnalytics() = launch {
+        val value = currentAnalyticsData.value?.toString() ?: ""
+        copyAnalyticsEvent.postValue(value)
+    }
+
+    fun checkLastAnalytics() = launch {
+        try {
+            lastAnalyticsDataInternal.value = lastAnalyticsSubmissionLogger.getLastAnalyticsData()
+        } catch (e: Exception) {
+            Timber.e(e, "checkLastAnalytics() failed.")
+            infoEvents.postValue(e.toString())
+        }
+    }
+
+    fun toggleSkipSafetyNetTimeCheck() {
+        testSettings.skipSafetyNetTimeCheck.update { !it }
+    }
+
+    fun selectSafetyNetExceptionType(type: SafetyNetException.Type) {
+        currentSafetyNetExceptionTypeInternal.value = type
+    }
+
+    fun showSafetyNetErrorDialog() {
+        showErrorDialog.postValue(
+            SafetyNetException(
+                type = currentSafetyNetExceptionTypeInternal.value,
+                message = "simulated"
+            )
+        )
+    }
+
+    fun selectSurveyExceptionType(type: SurveyException.Type) {
+        currentSurveyExceptionTypeInternal.value = type
+    }
+
+    fun showSurveyErrorDialog() {
+        showErrorDialog.postValue(
+            SurveyException(type = currentSurveyExceptionTypeInternal.value)
+        )
+    }
+
     @AssistedFactory
     interface Factory : SimpleCWAViewModelFactory<DataDonationTestFragmentViewModel>
 }
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt
index 07bfd4404b3f7c606c6a15b1c64b415fd6f15063..45d0b05c577a8851b7c938e2c7de45edc36cc89b 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt
@@ -69,6 +69,7 @@ class DebugOptionsFragment : Fragment(R.layout.fragment_test_debugoptions), Auto
                 environmentCdnurlDownload.text = "Download CDN:\n${state.urlDownload}"
                 environmentCdnurlSubmission.text = "Submission CDN:\n${state.urlSubmission}"
                 environmentCdnurlVerification.text = "Verification CDN:\n${state.urlVerification}"
+                environmentUrlDatadonation.text = "DataDonation:\n${state.urlDataDonation}"
             }
         }
         vm.environmentChangeEvent.observe2(this) {
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/EnvironmentState.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/EnvironmentState.kt
index c25c26364c059bf220127e4f89a04f43fbe4c2bf..fb3a8ded80765be7fe43f2487775ff3bfcfa9b2a 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/EnvironmentState.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/EnvironmentState.kt
@@ -7,7 +7,8 @@ data class EnvironmentState(
     val available: List<EnvironmentSetup.Type>,
     val urlSubmission: String,
     val urlDownload: String,
-    val urlVerification: String
+    val urlVerification: String,
+    val urlDataDonation: String
 ) {
     companion object {
         internal fun EnvironmentSetup.toEnvironmentState() = EnvironmentState(
@@ -15,7 +16,8 @@ data class EnvironmentState(
             available = EnvironmentSetup.Type.values().toList(),
             urlSubmission = submissionCdnUrl,
             urlDownload = downloadCdnUrl,
-            urlVerification = verificationCdnUrl
+            urlVerification = verificationCdnUrl,
+            urlDataDonation = dataDonationCdnUrl
         )
     }
 }
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaOnboardingFragmentModule.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaOnboardingFragmentModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..16dacec6ee92c71e4835df2ff3ed21f4fbc94eed
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaOnboardingFragmentModule.kt
@@ -0,0 +1,18 @@
+package de.rki.coronawarnapp.test.deltaonboarding.ui
+
+import dagger.Binds
+import dagger.Module
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class DeltaOnboardingFragmentModule {
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(DeltaOnboardingFragmentViewModel::class)
+    abstract fun testTaskControllerFragment(
+        factory: DeltaOnboardingFragmentViewModel.Factory
+    ): CWAViewModelFactory<out CWAViewModel>
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaOnboardingFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaOnboardingFragmentViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6ca53f71453eed67437e683a2aa449027b609d08
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaOnboardingFragmentViewModel.kt
@@ -0,0 +1,53 @@
+package de.rki.coronawarnapp.test.deltaonboarding.ui
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.asLiveData
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings
+import de.rki.coronawarnapp.environment.BuildConfigWrap
+import de.rki.coronawarnapp.main.CWASettings
+import de.rki.coronawarnapp.storage.LocalData
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+
+class DeltaOnboardingFragmentViewModel @AssistedInject constructor(
+    private val settings: CWASettings,
+    private val contactDiarySettings: ContactDiarySettings,
+    dispatcherProvider: DispatcherProvider
+) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
+
+    val changelogVersion: LiveData<Long> =
+        settings.lastChangelogVersion.flow.asLiveData(context = dispatcherProvider.Default)
+
+    fun updateChangelogVersion(value: Long) {
+        settings.lastChangelogVersion.update { value }
+    }
+
+    fun resetChangelogVersion() {
+        settings.lastChangelogVersion.update { BuildConfigWrap.VERSION_CODE }
+    }
+
+    fun clearChangelogVersion() {
+        settings.lastChangelogVersion.update { 1 }
+    }
+
+    fun isContactJournalOnboardingDone() = contactDiarySettings.isOnboardingDone
+
+    fun setContactJournalOnboardingDone(value: Boolean) {
+        contactDiarySettings.onboardingStatus = if (value)
+            ContactDiarySettings.OnboardingStatus.RISK_STATUS_1_12
+        else
+            ContactDiarySettings.OnboardingStatus.NOT_ONBOARDED
+    }
+
+    fun isDeltaOnboardingDone() = LocalData.isInteroperabilityShownAtLeastOnce
+
+    fun setDeltaOboardinDone(value: Boolean) {
+        LocalData.isInteroperabilityShownAtLeastOnce = value
+    }
+
+    @AssistedFactory
+    interface Factory : SimpleCWAViewModelFactory<DeltaOnboardingFragmentViewModel>
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaonboardingFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaonboardingFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..1179e8e0701823179fafe78cb56af5e5dc210d98
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/deltaonboarding/ui/DeltaonboardingFragment.kt
@@ -0,0 +1,62 @@
+package de.rki.coronawarnapp.test.deltaonboarding.ui
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentTestDeltaonboardingBinding
+import de.rki.coronawarnapp.test.menu.ui.TestMenuItem
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+@SuppressLint("SetTextI18n")
+class DeltaonboardingFragment : Fragment(R.layout.fragment_test_deltaonboarding), AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val viewModel: DeltaOnboardingFragmentViewModel by cwaViewModels { viewModelFactory }
+
+    private val binding: FragmentTestDeltaonboardingBinding by viewBindingLazy()
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        binding.switchContactJournalOnboarding.isChecked = viewModel.isContactJournalOnboardingDone()
+        binding.switchDeltaOnboarding.isChecked = viewModel.isDeltaOnboardingDone()
+        viewModel.changelogVersion.observe(viewLifecycleOwner) {
+            binding.lastChangelogEdittext.setText(it.toString())
+        }
+
+        binding.buttonSet.setOnClickListener {
+            val value = binding.lastChangelogEdittext.text.toString().toLong()
+            viewModel.updateChangelogVersion(value)
+        }
+
+        binding.buttonClear.setOnClickListener {
+            viewModel.clearChangelogVersion()
+        }
+
+        binding.buttonReset.setOnClickListener {
+            viewModel.resetChangelogVersion()
+        }
+
+        binding.switchContactJournalOnboarding.setOnCheckedChangeListener { _, value ->
+            viewModel.setContactJournalOnboardingDone(value)
+        }
+
+        binding.switchDeltaOnboarding.setOnCheckedChangeListener { _, value ->
+            viewModel.setDeltaOboardinDone(value)
+        }
+    }
+
+    companion object {
+        val MENU_ITEM = TestMenuItem(
+            title = "Onboarding options",
+            description = "Set delta onboarding or new release screen",
+            targetId = R.id.test_deltaonboarding_fragment
+        )
+    }
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/keydownload/ui/KeyFileDownloadAdapter.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/keydownload/ui/KeyFileDownloadAdapter.kt
index 0b28eba8d7a2b0e7036025a77316fcb789403390..231496e76e6f9cdfade364a62a2d1d19544a980c 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/keydownload/ui/KeyFileDownloadAdapter.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/keydownload/ui/KeyFileDownloadAdapter.kt
@@ -40,8 +40,10 @@ class KeyFileDownloadAdapter(
     class CachedKeyViewHolder(
         val parent: ViewGroup
     ) : BaseAdapter.VH(
-        R.layout.fragment_test_keydownload_adapter_line, parent
-    ), BindableVH<CachedKeyListItem, FragmentTestKeydownloadAdapterLineBinding> {
+        R.layout.fragment_test_keydownload_adapter_line,
+        parent
+    ),
+        BindableVH<CachedKeyListItem, FragmentTestKeydownloadAdapterLineBinding> {
 
         override val viewBinding = lazy { FragmentTestKeydownloadAdapterLineBinding.bind(itemView) }
 
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt
index f92cae4fef258c68dbe1b44b481b9f59813af0aa..7fdfb6b6f7bf074f727bd22a550a72c5b12adb80 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/menu/ui/TestMenuFragmentViewModel.kt
@@ -10,7 +10,9 @@ import de.rki.coronawarnapp.test.contactdiary.ui.ContactDiaryTestFragment
 import de.rki.coronawarnapp.test.crash.ui.SettingsCrashReportFragment
 import de.rki.coronawarnapp.test.datadonation.ui.DataDonationTestFragment
 import de.rki.coronawarnapp.test.debugoptions.ui.DebugOptionsFragment
+import de.rki.coronawarnapp.test.deltaonboarding.ui.DeltaonboardingFragment
 import de.rki.coronawarnapp.test.keydownload.ui.KeyDownloadTestFragment
+import de.rki.coronawarnapp.test.playground.ui.PlaygroundFragment
 import de.rki.coronawarnapp.test.risklevel.ui.TestRiskLevelCalculationFragment
 import de.rki.coronawarnapp.test.submission.ui.SubmissionTestFragment
 import de.rki.coronawarnapp.test.tasks.ui.TestTaskControllerFragment
@@ -31,7 +33,9 @@ class TestMenuFragmentViewModel @AssistedInject constructor() : CWAViewModel() {
             SettingsCrashReportFragment.MENU_ITEM,
             MiscInfoFragment.MENU_ITEM,
             ContactDiaryTestFragment.MENU_ITEM,
+            PlaygroundFragment.MENU_ITEM,
             DataDonationTestFragment.MENU_ITEM,
+            DeltaonboardingFragment.MENU_ITEM,
             ContactDiaryCommentInfoTestFragment.MENU_ITEM
         ).let { MutableLiveData(it) }
     }
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..82abd140ca37879355c243effa1dada36922f96d
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundFragment.kt
@@ -0,0 +1,60 @@
+package de.rki.coronawarnapp.test.playground.ui
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentTestPlaygroundBinding
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragmentArgs
+import de.rki.coronawarnapp.test.menu.ui.TestMenuItem
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+@SuppressLint("SetTextI18n")
+class PlaygroundFragment : Fragment(R.layout.fragment_test_playground), AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+
+    private val vm: PlaygroundViewModel by cwaViewModels { viewModelFactory }
+    private val binding: FragmentTestPlaygroundBinding by viewBindingLazy()
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        binding.apply {
+            dataDonationUserinfoAgegroup.setOnClickListener {
+                findNavController().navigate(
+                    R.id.analyticsUserInputFragment,
+                    AnalyticsUserInputFragmentArgs(AnalyticsUserInputFragment.InputType.AGE_GROUP).toBundle()
+                )
+            }
+            dataDonationUserinfoFederalstate.setOnClickListener {
+                findNavController().navigate(
+                    R.id.analyticsUserInputFragment,
+                    AnalyticsUserInputFragmentArgs(AnalyticsUserInputFragment.InputType.FEDERAL_STATE).toBundle()
+                )
+            }
+            dataDonationUserinfoDistrict.setOnClickListener {
+                findNavController().navigate(
+                    R.id.analyticsUserInputFragment,
+                    AnalyticsUserInputFragmentArgs(AnalyticsUserInputFragment.InputType.DISTRICT).toBundle()
+                )
+            }
+        }
+    }
+
+    companion object {
+        val TAG: String = PlaygroundFragment::class.simpleName!!
+        val MENU_ITEM = TestMenuItem(
+            title = "Playground",
+            description = "Random options for not integrated features",
+            targetId = R.id.playgroundFragment
+        )
+    }
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundModule.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..85f6e94a93d1f5b9b4d5c9c1a820922d11cf2b2e
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundModule.kt
@@ -0,0 +1,16 @@
+package de.rki.coronawarnapp.test.playground.ui
+
+import dagger.Binds
+import dagger.Module
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class PlaygroundModule {
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(PlaygroundViewModel::class)
+    abstract fun playground(factory: PlaygroundViewModel.Factory): CWAViewModelFactory<out CWAViewModel>
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d411ea539abad91e4c63b99858799b0e203b4103
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/playground/ui/PlaygroundViewModel.kt
@@ -0,0 +1,12 @@
+package de.rki.coronawarnapp.test.playground.ui
+
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+
+class PlaygroundViewModel @AssistedInject constructor() : CWAViewModel() {
+
+    @AssistedFactory
+    interface Factory : SimpleCWAViewModelFactory<PlaygroundViewModel>
+}
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragment.kt
index 91d9cbe9653ce277f5adaee0642fc5fe6e8159be..d4c56ea83e3f8753fa506dddc816ffc5027b98a3 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragment.kt
@@ -25,7 +25,8 @@ import timber.log.Timber
 import java.io.File
 import javax.inject.Inject
 
-class TestRiskLevelCalculationFragment : Fragment(R.layout.fragment_test_risk_level_calculation),
+class TestRiskLevelCalculationFragment :
+    Fragment(R.layout.fragment_test_risk_level_calculation),
     AutoInject {
     private val navArgs by navArgs<TestRiskLevelCalculationFragmentArgs>()
 
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragment.kt
index 8e13984fffe6bd26b5072d31283cf0fe9c70e7c3..ce982c5e0300a707a6a3a449916433cef0dafdb7 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragment.kt
@@ -48,11 +48,14 @@ class SubmissionTestFragment : Fragment(R.layout.fragment_test_submission), Auto
         }
 
         vm.shareTEKsEvent.observe2(this) { tekExport ->
-            val share = Intent.createChooser(Intent().apply {
-                action = Intent.ACTION_SEND
-                type = "text/plain"
-                putExtra(Intent.EXTRA_TEXT, tekExport.exportText)
-            }, null)
+            val share = Intent.createChooser(
+                Intent().apply {
+                    action = Intent.ACTION_SEND
+                    type = "text/plain"
+                    putExtra(Intent.EXTRA_TEXT, tekExport.exportText)
+                },
+                null
+            )
             startActivity(share)
         }
 
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragmentViewModel.kt
index 72cc9dc6f4a52eca9231e7754d20b7070b46666b..0212b6a3796ce9620ad366bddaf660bcc8427629 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragmentViewModel.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/SubmissionTestFragmentViewModel.kt
@@ -35,27 +35,29 @@ class SubmissionTestFragmentViewModel @AssistedInject constructor(
         setPrettyPrinting()
     }.create()
 
-    private val tekHistoryUpdater = tekHistoryUpdaterFactory.create(object : TEKHistoryUpdater.Callback {
-        override fun onTEKAvailable(teks: List<TemporaryExposureKey>) {
-            Timber.d("TEKs are available: %s", teks)
-        }
+    private val tekHistoryUpdater = tekHistoryUpdaterFactory.create(
+        object : TEKHistoryUpdater.Callback {
+            override fun onTEKAvailable(teks: List<TemporaryExposureKey>) {
+                Timber.d("TEKs are available: %s", teks)
+            }
 
-        override fun onTEKPermissionDeclined() {
-            Timber.d("Permission were declined.")
-        }
+            override fun onTEKPermissionDeclined() {
+                Timber.d("Permission were declined.")
+            }
 
-        override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
-            showTracingConsentDialog.postValue(onConsentResult)
-        }
+            override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
+                showTracingConsentDialog.postValue(onConsentResult)
+            }
 
-        override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
-            permissionRequestEvent.postValue(permissionRequest)
-        }
+            override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
+                permissionRequestEvent.postValue(permissionRequest)
+            }
 
-        override fun onError(error: Throwable) {
-            errorEvents.postValue(error)
+            override fun onError(error: Throwable) {
+                errorEvents.postValue(error)
+            }
         }
-    })
+    )
 
     val errorEvents = SingleLiveEvent<Throwable>()
     private val internalToken = MutableStateFlow(LocalData.registrationToken())
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/TEKHistoryAdapter.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/TEKHistoryAdapter.kt
index ef1331f397924803f3a30dd073a21392793c8e22..88f6c7d674b8abffd11cafeeb281083d468ee20c 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/TEKHistoryAdapter.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/submission/ui/TEKHistoryAdapter.kt
@@ -31,8 +31,10 @@ class TEKHistoryAdapter : BaseAdapter<TEKHistoryAdapter.VH>(), AsyncDiffUtilAdap
     class VH(
         val parent: ViewGroup
     ) : BaseAdapter.VH(
-        R.layout.fragment_test_submission_tekhistory_line, parent
-    ), BindableVH<TEKHistoryItem, FragmentTestSubmissionTekhistoryLineBinding> {
+        R.layout.fragment_test_submission_tekhistory_line,
+        parent
+    ),
+        BindableVH<TEKHistoryItem, FragmentTestSubmissionTekhistoryLineBinding> {
 
         override val viewBinding = lazy { FragmentTestSubmissionTekhistoryLineBinding.bind(itemView) }
 
@@ -41,15 +43,17 @@ class TEKHistoryAdapter : BaseAdapter<TEKHistoryAdapter.VH>(), AsyncDiffUtilAdap
             payloads: List<Any>
         ) -> Unit = { item, _ ->
             val key = item.key
-            primary.text = """
+            primary.text =
+                """
                 rollingStartIntervalNumber=${key.rollingStartIntervalNumber}  rollingPeriod=${key.rollingPeriod}
                 transmissionRiskLevel=${key.transmissionRiskLevel}  reportType=${key.reportType}
                 daysSinceOnsetOfSymptoms=${key.daysSinceOnsetOfSymptoms}
-            """.trimIndent()
-            secondary.text = """
+                """.trimIndent()
+            secondary.text =
+                """
                 keyData=${key.keyData.toByteString().base64()}
                 obtainedAt=${item.obtainedAt}
-            """.trimIndent()
+                """.trimIndent()
         }
     }
 }
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt
index 1533e35134178e669a7be3801dfb24cca7f6f95d..da9c43ddb5f631cfcd805aea75a1852960dd46ff 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/ui/main/MainActivityTestModule.kt
@@ -12,10 +12,14 @@ import de.rki.coronawarnapp.test.datadonation.ui.DataDonationTestFragment
 import de.rki.coronawarnapp.test.datadonation.ui.DataDonationTestFragmentModule
 import de.rki.coronawarnapp.test.debugoptions.ui.DebugOptionsFragment
 import de.rki.coronawarnapp.test.debugoptions.ui.DebugOptionsFragmentModule
+import de.rki.coronawarnapp.test.deltaonboarding.ui.DeltaOnboardingFragmentModule
+import de.rki.coronawarnapp.test.deltaonboarding.ui.DeltaonboardingFragment
 import de.rki.coronawarnapp.test.keydownload.ui.KeyDownloadTestFragment
 import de.rki.coronawarnapp.test.keydownload.ui.KeyDownloadTestFragmentModule
 import de.rki.coronawarnapp.test.menu.ui.TestMenuFragment
 import de.rki.coronawarnapp.test.menu.ui.TestMenuFragmentModule
+import de.rki.coronawarnapp.test.playground.ui.PlaygroundFragment
+import de.rki.coronawarnapp.test.playground.ui.PlaygroundModule
 import de.rki.coronawarnapp.test.risklevel.ui.TestRiskLevelCalculationFragment
 import de.rki.coronawarnapp.test.risklevel.ui.TestRiskLevelCalculationFragmentModule
 import de.rki.coronawarnapp.test.submission.ui.SubmissionTestFragment
@@ -53,6 +57,12 @@ abstract class MainActivityTestModule {
     @ContributesAndroidInjector(modules = [ContactDiaryTestFragmentModule::class])
     abstract fun contactDiaryTest(): ContactDiaryTestFragment
 
+    @ContributesAndroidInjector(modules = [PlaygroundModule::class])
+    abstract fun playground(): PlaygroundFragment
+
     @ContributesAndroidInjector(modules = [DataDonationTestFragmentModule::class])
     abstract fun dataDonation(): DataDonationTestFragment
+
+    @ContributesAndroidInjector(modules = [DeltaOnboardingFragmentModule::class])
+    abstract fun deltaOnboarding(): DeltaonboardingFragment
 }
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_appconfig.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_appconfig.xml
index ad078e5bc2a88304f27ea1223ad39dd0141f32b7..176b70daeb0aa28c41453addb0bf861b5d3ab1a1 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_appconfig.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_appconfig.xml
@@ -4,7 +4,6 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     tools:ignore="HardcodedText">
 
     <LinearLayout
@@ -84,12 +83,17 @@
             <com.google.android.material.switchmaterial.SwitchMaterial
                 android:id="@+id/fake_correct_devicetime_toggle"
                 android:layout_width="match_parent"
-                app:thumbTint="@color/colorAccent"
                 android:layout_height="0dp"
                 android:layout_marginTop="@dimen/spacing_tiny"
                 android:layout_weight="1"
                 android:text="Fake correct device time" />
 
+            <TextView
+                style="@style/TextAppearance.AppCompat.Caption"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_tiny"
+                android:text="This sets the offset between server time and device time to 0 and therefore allows device time travelling while still getting positive device time checks." />
         </LinearLayout>
 
         <LinearLayout
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_datadonation.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_datadonation.xml
index fbdbea975916e23f8ea398d3f323dbce7b2b6db8..077d1f73f03a61ed5acceb7a6acfeb0c8c22e9e3 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_datadonation.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_datadonation.xml
@@ -36,9 +36,9 @@
                 <TextView
                     android:id="@+id/safetynet_body"
                     android:layout_width="match_parent"
-                    android:textIsSelectable="true"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_tiny"
+                    android:textIsSelectable="true"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/safetynet_title"
@@ -86,9 +86,9 @@
                 <TextView
                     android:id="@+id/safetynet_requirements_body"
                     android:layout_width="match_parent"
-                    android:textIsSelectable="true"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_tiny"
+                    android:textIsSelectable="true"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/safetynet_requirements_title"
@@ -115,6 +115,263 @@
                     app:layout_constraintTop_toBottomOf="@id/safetynet_requirements_body" />
             </androidx.constraintlayout.widget.ConstraintLayout>
 
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/one_time_password_container"
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny">
+
+                <TextView
+                    android:id="@+id/one_time_password_title"
+                    style="@style/headline6"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:text="One Time Password"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/one_time_password_body"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:textIsSelectable="true"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/one_time_password_title"
+                    tools:text="No OTP received yet" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/survey_config_container"
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny">
+
+                <TextView
+                    android:id="@+id/survey_config_title"
+                    style="@style/headline6"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:text="Survey Config"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/survey_config_body"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:textIsSelectable="true"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/survey_config_title"
+                    tools:text="No survey config received yet" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/safetynet_exception_simulation_container"
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny">
+
+                <TextView
+                    android:id="@+id/safetynet_exception_simulation_title"
+                    style="@style/headline6"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:text="SafetyNet Exception Simulation"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <RadioGroup
+                    android:id="@+id/safetynet_exception_simulation_radio_group"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/safetynet_exception_simulation_title" />
+
+                <Button
+                    android:id="@+id/safetynet_exception_simulation_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:text="Show Error Dialog"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/safetynet_exception_simulation_radio_group" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/survey_exception_simulation_container"
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny">
+
+                <TextView
+                    android:id="@+id/survey_exception_simulation_title"
+                    style="@style/headline6"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:text="Survey Exception Simulation"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <RadioGroup
+                    android:id="@+id/survey_exception_simulation_radio_group"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/survey_exception_simulation_title" />
+
+                <Button
+                    android:id="@+id/survey_exception_simulation_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:text="Show Error Dialog"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/survey_exception_simulation_radio_group" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <LinearLayout
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny"
+                android:orientation="vertical">
+
+                <com.google.android.material.switchmaterial.SwitchMaterial
+                    android:id="@+id/disable_safetynet_toggle"
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:layout_weight="1"
+                    android:text="Skip 24H SafetyNet Check" />
+
+                <TextView
+                    style="@style/TextAppearance.AppCompat.Caption"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:text="This disables the 24H time since valid time check for SafetyNet attestation" />
+            </LinearLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/last_analytics_container"
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny">
+
+                <TextView
+                    android:id="@+id/analytics_last_submit_title"
+                    style="@style/headline6"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:text="Last Analytics Submission"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/analytics_last_submit_body"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:textIsSelectable="true"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/analytics_last_submit_title"
+                    tools:text="Body" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/analytics_container"
+                style="@style/Card"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/spacing_tiny">
+
+                <TextView
+                    android:id="@+id/analytics_title"
+                    style="@style/headline6"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:text="Current Analytics"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/analytics_body"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:textIsSelectable="true"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/analytics_title"
+                    tools:text="Body" />
+
+                <Button
+                    android:id="@+id/analytics_copy"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:text="Copy Analytics"
+                    app:layout_constraintEnd_toStartOf="@+id/analytics_collect"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/analytics_body" />
+
+                <Button
+                    android:id="@+id/analytics_collect"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:text="Create"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toEndOf="@id/analytics_copy"
+                    app:layout_constraintTop_toBottomOf="@id/analytics_body" />
+
+                <Button
+                    android:id="@+id/analytics_submit"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:text="Submit to Server"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/analytics_collect" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
         </LinearLayout>
     </androidx.core.widget.NestedScrollView>
 </layout>
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_debugoptions.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_debugoptions.xml
index cca12450d9fee3eafa2d51795b793186606cf4b7..cedba81d312970d03e1c16c12dbdb69b669439e3 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_debugoptions.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_debugoptions.xml
@@ -104,6 +104,17 @@
                     app:layout_constraintTop_toBottomOf="@+id/environment_cdnurl_submission"
                     tools:text="Verification: ?" />
 
+                <TextView
+                    android:id="@+id/environment_url_datadonation"
+                    style="@style/body2"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/environment_cdnurl_verification"
+                    tools:text="DataDonation: ?" />
+
                 <RadioGroup
                     android:id="@+id/environment_toggle_group"
                     android:layout_width="match_parent"
@@ -113,7 +124,7 @@
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/environment_cdnurl_verification" />
+                    app:layout_constraintTop_toBottomOf="@+id/environment_url_datadonation" />
             </androidx.constraintlayout.widget.ConstraintLayout>
 
         </LinearLayout>
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_deltaonboarding.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_deltaonboarding.xml
new file mode 100644
index 0000000000000000000000000000000000000000..374995566303f641149887fb280e156f3eec5f80
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_deltaonboarding.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fillViewport="true"
+    tools:ignore="HardcodedText">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/spacing_tiny"
+        android:orientation="vertical">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/debug_container"
+            style="@style/Card"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/spacing_tiny">
+
+            <TextView
+                android:id="@+id/delta_onboarding_title"
+                style="@style/headline6"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="New release info"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/explanation_label"
+                style="@style/body2"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_small"
+                android:text="By changing the last changelog version you may invoke the 'New release' screen in the home screen."
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/delta_onboarding_title" />
+
+            <com.google.android.material.textfield.TextInputLayout
+                android:id="@+id/last_changelog_layout"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_small"
+                android:hint="Last chnagelog version"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/explanation_label">
+
+                <EditText
+                    android:id="@+id/last_changelog_edittext"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:inputType="number" />
+
+            </com.google.android.material.textfield.TextInputLayout>
+
+            <Button
+                android:id="@+id/button_set"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_tiny"
+                android:text="Update"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/last_changelog_layout" />
+
+            <Button
+                android:id="@+id/button_clear"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_tiny"
+                android:text="Clear"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/button_set" />
+
+            <Button
+                android:id="@+id/button_reset"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_tiny"
+                android:text="Reset"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/button_clear" />
+
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/debug_container2"
+            style="@style/Card"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/spacing_tiny">
+
+            <TextView
+                android:id="@+id/contact_journal_onboarding_title"
+                style="@style/headline6"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="Contact Journal onboarding"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <com.google.android.material.switchmaterial.SwitchMaterial
+                android:id="@+id/switch_contact_journal_onboarding"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_small"
+                android:text="Onboarding finished"
+                app:layout_constraintTop_toBottomOf="@id/contact_journal_onboarding_title" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/debug_container3"
+            style="@style/Card"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/spacing_tiny">
+
+            <TextView
+                android:id="@+id/cdelta_onboarding_title"
+                style="@style/headline6"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="Delta onboarding"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <com.google.android.material.switchmaterial.SwitchMaterial
+                android:id="@+id/switch_delta_onboarding"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/spacing_small"
+                android:text="Onboarding finished"
+                app:layout_constraintTop_toBottomOf="@id/cdelta_onboarding_title" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+    </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_playground.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_playground.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e7ffa8ec0d19a2398c064cf96a08db67796419c
--- /dev/null
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_playground.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="HardcodedText">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="8dp"
+        android:orientation="vertical">
+        <Button
+            android:id="@+id/data_donation_userinfo_agegroup"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Data Donation: Age Group" />
+        <Button
+            android:id="@+id/data_donation_userinfo_federalstate"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Data Donation: Federal State" />
+        <Button
+            android:id="@+id/data_donation_userinfo_district"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Data Donation: District" />
+    </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/view_crashreport_list_item.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/view_crashreport_list_item.xml
index a301fc4ec15a1ed76dc32162324ebe40725e5777..6181e924cf9c9998e78d6ffd53ff64a554c6ef88 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/view_crashreport_list_item.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/view_crashreport_list_item.xml
@@ -57,13 +57,13 @@
 
             <TextView
                 android:id="@+id/textViewCrashReportShortMessage"
-                style="@style/body1"
+                style="@style/TextAppearance.MaterialComponents.Caption"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="24dp"
+                android:layout_marginTop="4dp"
                 android:ellipsize="end"
                 android:inputType="none"
-                android:maxLines="1"
+                android:maxLines="4"
                 android:text="@{message}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
diff --git a/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml b/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml
index 975805fab55e33fb0a8721b116f0cdea41139124..5a10dea8abfb6f61fb5adcdded0d4b41c082e6b3 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml
@@ -37,12 +37,18 @@
         <action
             android:id="@+id/action_test_menu_fragment_to_contactDiaryTestFragment"
             app:destination="@id/test_contact_diary_fragment" />
+        <action
+            android:id="@+id/action_test_menu_fragment_to_playgroundFragment"
+            app:destination="@id/playgroundFragment" />
         <action
             android:id="@+id/action_test_menu_fragment_to_dataDonationFragment"
             app:destination="@id/test_datadonation_fragment" />
         <action
             android:id="@+id/action_test_menu_fragment_to_test_contact_diary_person_comment_fragment"
             app:destination="@id/test_contact_diary_comment_fragment" />
+        <action
+            android:id="@+id/action_test_menu_fragment_to_deltaonboardingFragment"
+            app:destination="@id/test_deltaonboarding_fragment" />
     </fragment>
 
     <fragment
@@ -106,11 +112,21 @@
         android:name="de.rki.coronawarnapp.test.contactdiary.ui.ContactDiaryTestFragment"
         android:label="ContactDiaryTestFragment"
         tools:layout="@layout/fragment_test_contact_diary" />
+    <fragment
+        android:id="@+id/playgroundFragment"
+        android:name="de.rki.coronawarnapp.test.playground.ui.PlaygroundFragment"
+        android:label="PlaygroundFragment"
+        tools:layout="@layout/fragment_test_playground" />
     <fragment
         android:id="@+id/test_datadonation_fragment"
-        tools:layout="@layout/fragment_test_datadonation"
         android:name="de.rki.coronawarnapp.test.datadonation.ui.DataDonationTestFragment"
-        android:label="DataDonationFragment" />
+        android:label="DataDonationFragment"
+        tools:layout="@layout/fragment_test_datadonation" />
+    <fragment
+        android:id="@+id/test_deltaonboarding_fragment"
+        android:name="de.rki.coronawarnapp.test.deltaonboarding.ui.DeltaonboardingFragment"
+        android:label="DeltaonboardingFragment"
+        tools:layout="@layout/fragment_test_deltaonboarding" />
     <fragment
         android:id="@+id/test_contact_diary_comment_fragment"
         android:name="de.rki.coronawarnapp.test.contactdiary.ui.ContactDiaryCommentInfoTestFragment"
diff --git a/Corona-Warn-App/src/main/AndroidManifest.xml b/Corona-Warn-App/src/main/AndroidManifest.xml
index ce4c559b2ad4236a87b7a4659aba8c8dedd01371..8c7a9babcd15f82d582dc03215616e6d6047bcc0 100644
--- a/Corona-Warn-App/src/main/AndroidManifest.xml
+++ b/Corona-Warn-App/src/main/AndroidManifest.xml
@@ -64,6 +64,7 @@
         <activity
             android:name=".ui.main.MainActivity"
             android:exported="false"
+            android:launchMode="singleInstance"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.Main"
             android:windowSoftInputMode="adjustResize" />
diff --git a/Corona-Warn-App/src/main/assets/default_app_config.bin b/Corona-Warn-App/src/main/assets/default_app_config.bin
deleted file mode 100644
index d04532907debe2eaf94fb70f39a3a0ccb7d9937a..0000000000000000000000000000000000000000
Binary files a/Corona-Warn-App/src/main/assets/default_app_config.bin and /dev/null differ
diff --git a/Corona-Warn-App/src/main/assets/default_app_config.sha256 b/Corona-Warn-App/src/main/assets/default_app_config.sha256
deleted file mode 100644
index 686b1764cf7bd1c0662651322c5ca3f29c8f2ff5..0000000000000000000000000000000000000000
--- a/Corona-Warn-App/src/main/assets/default_app_config.sha256
+++ /dev/null
@@ -1 +0,0 @@
-a562bf5940b8c149138634d313db69a298a50e8c52c0b42d18ddf608c385b598
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/assets/default_app_config_android.bin b/Corona-Warn-App/src/main/assets/default_app_config_android.bin
index e94bea0e57dec2d532f9642e5f52f9426e52d028..71db85788c2beff255f07410e14f0ec2bbea4bbb 100644
Binary files a/Corona-Warn-App/src/main/assets/default_app_config_android.bin and b/Corona-Warn-App/src/main/assets/default_app_config_android.bin differ
diff --git a/Corona-Warn-App/src/main/assets/default_app_config_android.sha256 b/Corona-Warn-App/src/main/assets/default_app_config_android.sha256
index f352a96630405e9b9b44ae0e7a5d3fb960223c66..dcbdbc7b85dbed0619623f041c6f02d32ae7ede1 100644
--- a/Corona-Warn-App/src/main/assets/default_app_config_android.sha256
+++ b/Corona-Warn-App/src/main/assets/default_app_config_android.sha256
@@ -1 +1 @@
-827fb746a1128e465d65ec77030fdf38c823dec593ae18aed55195069cf8b701
\ No newline at end of file
+12d0b93c0c02c6870ef75c173a53a8ffb9cab6828fbf22e751053329c425eef2
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/assets/ppdd-ppa-administrative-unit-set.json b/Corona-Warn-App/src/main/assets/ppdd-ppa-administrative-unit-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..43494cf4eeefada9c8c6e6ab29c398256aee5416
--- /dev/null
+++ b/Corona-Warn-App/src/main/assets/ppdd-ppa-administrative-unit-set.json
@@ -0,0 +1,3298 @@
+[
+  {
+    "districtName": "Dithmarschen",
+    "districtShortName": "HEI",
+    "districtId": 11001051,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Herzogtum Lauenburg",
+    "districtShortName": "RZ",
+    "districtId": 11001053,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Nordfriesland",
+    "districtShortName": "NF",
+    "districtId": 11001054,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Ostholstein",
+    "districtShortName": "OLD",
+    "districtId": 11001055,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Pinneberg",
+    "districtShortName": "PI",
+    "districtId": 11001056,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Plön",
+    "districtShortName": "PLÖ",
+    "districtId": 11001057,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Rendsburg-Eckernförde",
+    "districtShortName": "RD",
+    "districtId": 11001058,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Schleswig-Flensburg",
+    "districtShortName": "SL",
+    "districtId": 11001059,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Segeberg",
+    "districtShortName": "SE",
+    "districtId": 11001060,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Steinburg",
+    "districtShortName": "IZ",
+    "districtId": 11001061,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Stormarn",
+    "districtShortName": "OD",
+    "districtId": 11001062,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Flensburg",
+    "districtShortName": "FL",
+    "districtId": 11001001,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Kiel",
+    "districtShortName": "KI",
+    "districtId": 11001002,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Lübeck",
+    "districtShortName": "HL",
+    "districtId": 11001003,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Neumünster",
+    "districtShortName": "NMS",
+    "districtId": 11001004,
+    "federalStateName": "Schleswig-Holstein",
+    "federalStateShortName": "SH",
+    "federalStateId": 13000001
+  },
+  {
+    "districtName": "Hamburg",
+    "districtShortName": "HH",
+    "districtId": 11002000,
+    "federalStateName": "Hamburg",
+    "federalStateShortName": "HH",
+    "federalStateId": 13000002
+  },
+  {
+    "districtName": "Ammerland",
+    "districtShortName": "WST",
+    "districtId": 11003451,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Aurich",
+    "districtShortName": "AUR",
+    "districtId": 11003452,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Celle",
+    "districtShortName": "CE",
+    "districtId": 11003351,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Cloppenburg",
+    "districtShortName": "CLP",
+    "districtId": 11003453,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Cuxhaven",
+    "districtShortName": "WEM",
+    "districtId": 11003352,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Diepholz",
+    "districtShortName": "DH",
+    "districtId": 11003251,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Emsland",
+    "districtShortName": "MEP",
+    "districtId": 11003454,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Friesland",
+    "districtShortName": "JEV",
+    "districtId": 11003455,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Gifhorn",
+    "districtShortName": "GF",
+    "districtId": 11003151,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Goslar",
+    "districtShortName": "GS",
+    "districtId": 11003153,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Göttingen",
+    "districtShortName": "GÖ",
+    "districtId": 11003159,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Grafschaft Bentheim",
+    "districtShortName": "NOH",
+    "districtId": 11003456,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Hameln-Pyrmont",
+    "districtShortName": "HM",
+    "districtId": 11003252,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Harburg",
+    "districtShortName": "WL",
+    "districtId": 11003353,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Heidekreis",
+    "districtShortName": "SOL",
+    "districtId": 11003358,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Helmstedt",
+    "districtShortName": "HE",
+    "districtId": 11003154,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Hildesheim",
+    "districtShortName": "HI",
+    "districtId": 11003254,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Holzminden",
+    "districtShortName": "HOL",
+    "districtId": 11003255,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Leer",
+    "districtShortName": "LER",
+    "districtId": 11003457,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Lüchow-Dannenberg",
+    "districtShortName": "DAN",
+    "districtId": 11003354,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Lüneburg",
+    "districtShortName": "LG",
+    "districtId": 11003355,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Nienburg (Weser)",
+    "districtShortName": "NI",
+    "districtId": 11003256,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Northeim",
+    "districtShortName": "NOM",
+    "districtId": 11003155,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Oldenburg (Landkreis)",
+    "districtShortName": "OL",
+    "districtId": 11003458,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Osnabrück (Landkreis)",
+    "districtShortName": "OS",
+    "districtId": 11003459,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Osterholz",
+    "districtShortName": "OHZ",
+    "districtId": 11003356,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Peine",
+    "districtShortName": "PE",
+    "districtId": 11003157,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Rotenburg (Wümme)",
+    "districtShortName": "ROW",
+    "districtId": 11003357,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Schaumburg",
+    "districtShortName": "STH",
+    "districtId": 11003257,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Stade",
+    "districtShortName": "STD",
+    "districtId": 11003359,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Uelzen",
+    "districtShortName": "UE",
+    "districtId": 11003360,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Vechta",
+    "districtShortName": "VEC",
+    "districtId": 11003460,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Verden",
+    "districtShortName": "VER",
+    "districtId": 11003361,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Wesermarsch",
+    "districtShortName": "BRA",
+    "districtId": 11003461,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Wittmund",
+    "districtShortName": "WTM",
+    "districtId": 11003462,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Wolfenbüttel",
+    "districtShortName": "WF",
+    "districtId": 11003158,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Hannover (Region)",
+    "districtShortName": "H",
+    "districtId": 11003241,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Braunschweig",
+    "districtShortName": "BS",
+    "districtId": 11003101,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Delmenhorst",
+    "districtShortName": "DEL",
+    "districtId": 11003401,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Emden",
+    "districtShortName": "EMD",
+    "districtId": 11003402,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Oldenburg (Stadt)",
+    "districtShortName": "OL",
+    "districtId": 11003403,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Osnabrück (Stadt)",
+    "districtShortName": "OS",
+    "districtId": 11003404,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Salzgitter",
+    "districtShortName": "SZ",
+    "districtId": 11003102,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Wilhelmshaven",
+    "districtShortName": "WHV",
+    "districtId": 11003405,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Wolfsburg",
+    "districtShortName": "WOB",
+    "districtId": 11003103,
+    "federalStateName": "Niedersachsen",
+    "federalStateShortName": "NI",
+    "federalStateId": 13000003
+  },
+  {
+    "districtName": "Bremen",
+    "districtShortName": "HB",
+    "districtId": 11004011,
+    "federalStateName": "Bremen",
+    "federalStateShortName": "HB",
+    "federalStateId": 13000004
+  },
+  {
+    "districtName": "Bremerhaven",
+    "districtShortName": "HB",
+    "districtId": 11004012,
+    "federalStateName": "Bremen",
+    "federalStateShortName": "HB",
+    "federalStateId": 13000004
+  },
+  {
+    "districtName": "Borken",
+    "districtShortName": "BOR",
+    "districtId": 11005554,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Coesfeld",
+    "districtShortName": "COE",
+    "districtId": 11005558,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Düren",
+    "districtShortName": "DN",
+    "districtId": 11005358,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Ennepe-Ruhr-Kreis",
+    "districtShortName": "EN",
+    "districtId": 11005954,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Euskirchen",
+    "districtShortName": "EU",
+    "districtId": 11005366,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Gütersloh",
+    "districtShortName": "GT",
+    "districtId": 11005754,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Heinsberg",
+    "districtShortName": "HS",
+    "districtId": 11005370,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Herford",
+    "districtShortName": "HF",
+    "districtId": 11005758,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Hochsauerlandkreis",
+    "districtShortName": "MES",
+    "districtId": 11005958,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Höxter",
+    "districtShortName": "HX",
+    "districtId": 11005762,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Kleve",
+    "districtShortName": "KLE",
+    "districtId": 11005154,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Lippe",
+    "districtShortName": "LIP",
+    "districtId": 11005766,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Märkischer Kreis",
+    "districtShortName": "MK",
+    "districtId": 11005962,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Mettmann",
+    "districtShortName": "ME",
+    "districtId": 11005158,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Minden-Lübbecke",
+    "districtShortName": "MI",
+    "districtId": 11005770,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Oberbergischer Kreis",
+    "districtShortName": "GM",
+    "districtId": 11005374,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Olpe",
+    "districtShortName": "OE",
+    "districtId": 11005966,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Paderborn",
+    "districtShortName": "PB",
+    "districtId": 11005774,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Recklinghausen",
+    "districtShortName": "RE",
+    "districtId": 11005562,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Rhein-Erft-Kreis",
+    "districtShortName": "BM",
+    "districtId": 11005362,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Rhein-Kreis Neuss",
+    "districtShortName": "NE",
+    "districtId": 11005162,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Rhein-Sieg-Kreis",
+    "districtShortName": "SU",
+    "districtId": 11005382,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Rheinisch-Bergischer Kreis",
+    "districtShortName": "GL",
+    "districtId": 11005378,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Siegen-Wittgenstein",
+    "districtShortName": "SI",
+    "districtId": 11005970,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Soest",
+    "districtShortName": "SO",
+    "districtId": 11005974,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Steinfurt",
+    "districtShortName": "ST",
+    "districtId": 11005566,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Unna",
+    "districtShortName": "UN",
+    "districtId": 11005978,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Viersen",
+    "districtShortName": "VIE",
+    "districtId": 11005166,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Warendorf",
+    "districtShortName": "WAF",
+    "districtId": 11005570,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Wesel",
+    "districtShortName": "WES",
+    "districtId": 11005170,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Bielefeld",
+    "districtShortName": "BI",
+    "districtId": 11005711,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Bochum",
+    "districtShortName": "BO",
+    "districtId": 11005911,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Bonn",
+    "districtShortName": "BN",
+    "districtId": 11005314,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Bottrop",
+    "districtShortName": "BOT",
+    "districtId": 11005512,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Dortmund",
+    "districtShortName": "DO",
+    "districtId": 11005913,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Duisburg",
+    "districtShortName": "DU",
+    "districtId": 11005112,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Düsseldorf",
+    "districtShortName": "D",
+    "districtId": 11005111,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Essen",
+    "districtShortName": "E",
+    "districtId": 11005113,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Gelsenkirchen",
+    "districtShortName": "GE",
+    "districtId": 11005513,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Hagen",
+    "districtShortName": "HA",
+    "districtId": 11005914,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Hamm",
+    "districtShortName": "HAM",
+    "districtId": 11005915,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Herne",
+    "districtShortName": "HER",
+    "districtId": 11005916,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Köln",
+    "districtShortName": "K",
+    "districtId": 11005315,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Krefeld",
+    "districtShortName": "KR",
+    "districtId": 11005114,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Leverkusen",
+    "districtShortName": "LEV",
+    "districtId": 11005316,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Mönchengladbach",
+    "districtShortName": "MG",
+    "districtId": 11005116,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Mülheim a. d. Ruhr",
+    "districtShortName": "MH",
+    "districtId": 11005117,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Münster",
+    "districtShortName": "MS",
+    "districtId": 11005515,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Oberhausen",
+    "districtShortName": "OB",
+    "districtId": 11005119,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Remscheid",
+    "districtShortName": "RS",
+    "districtId": 11005120,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Solingen",
+    "districtShortName": "SG",
+    "districtId": 11005122,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Wuppertal",
+    "districtShortName": "W",
+    "districtId": 11005124,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Aachen (Stadtregion)",
+    "districtShortName": "AC",
+    "districtId": 11005334,
+    "federalStateName": "Nordrhein-Westfalen",
+    "federalStateShortName": "NW",
+    "federalStateId": 13000005
+  },
+  {
+    "districtName": "Bergstraße",
+    "districtShortName": "HP",
+    "districtId": 11006431,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Darmstadt-Dieburg",
+    "districtShortName": "DI",
+    "districtId": 11006432,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Fulda",
+    "districtShortName": "FD",
+    "districtId": 11006631,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Gießen",
+    "districtShortName": "GI",
+    "districtId": 11006531,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Groß-Gerau",
+    "districtShortName": "GG",
+    "districtId": 11006433,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Hersfeld-Rotenburg",
+    "districtShortName": "HEF",
+    "districtId": 11006632,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Hochtaunuskreis",
+    "districtShortName": "HG",
+    "districtId": 11006434,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Kassel (Landkreis)",
+    "districtShortName": "WOH",
+    "districtId": 11006633,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Lahn-Dill-Kreis",
+    "districtShortName": "LDK",
+    "districtId": 11006532,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Limburg-Weilburg",
+    "districtShortName": "LM",
+    "districtId": 11006533,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Main-Kinzig-Kreis",
+    "districtShortName": "HU",
+    "districtId": 11006435,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Main-Taunus-Kreis",
+    "districtShortName": "MTK",
+    "districtId": 11006436,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Marburg-Biedenkopf",
+    "districtShortName": "MR",
+    "districtId": 11006534,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Odenwaldkreis",
+    "districtShortName": "ERB",
+    "districtId": 11006437,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Offenbach (Landkreis)",
+    "districtShortName": "OF",
+    "districtId": 11006438,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Rheingau-Taunus-Kreis",
+    "districtShortName": "SWA",
+    "districtId": 11006439,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Schwalm-Eder-Kreis",
+    "districtShortName": "HR",
+    "districtId": 11006634,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Vogelsbergkreis",
+    "districtShortName": "VB",
+    "districtId": 11006535,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Waldeck-Frankenberg",
+    "districtShortName": "WA",
+    "districtId": 11006635,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Werra-Meißner-Kreis",
+    "districtShortName": "ESW",
+    "districtId": 11006636,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Wetteraukreis",
+    "districtShortName": "FB",
+    "districtId": 11006440,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Darmstadt",
+    "districtShortName": "DA",
+    "districtId": 11006411,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Frankfurt am Main",
+    "districtShortName": "F",
+    "districtId": 11006412,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Kassel (Stadt)",
+    "districtShortName": "KS",
+    "districtId": 11006611,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Offenbach (Stadt)",
+    "districtShortName": "OF",
+    "districtId": 11006413,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Wiesbaden",
+    "districtShortName": "WI",
+    "districtId": 11006414,
+    "federalStateName": "Hessen",
+    "federalStateShortName": "HE",
+    "federalStateId": 13000006
+  },
+  {
+    "districtName": "Ahrweiler",
+    "districtShortName": "AW",
+    "districtId": 11007131,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Altenkirchen",
+    "districtShortName": "AK",
+    "districtId": 11007132,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Alzey-Worms",
+    "districtShortName": "AZ",
+    "districtId": 11007331,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Bad Dürkheim",
+    "districtShortName": "DÃœW",
+    "districtId": 11007332,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Bad Kreuznach",
+    "districtShortName": "KH",
+    "districtId": 11007133,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Bernkastel-Wittlich",
+    "districtShortName": "WIL",
+    "districtId": 11007231,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Birkenfeld",
+    "districtShortName": "BIR",
+    "districtId": 11007134,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Bitburg-Prüm",
+    "districtShortName": "BIT",
+    "districtId": 11007232,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Cochem-Zell",
+    "districtShortName": "COC",
+    "districtId": 11007135,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Donnersbergkreis",
+    "districtShortName": "KIB",
+    "districtId": 11007333,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Germersheim",
+    "districtShortName": "GER",
+    "districtId": 11007334,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Kaiserslautern (Landkreis)",
+    "districtShortName": "KL",
+    "districtId": 11007335,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Kusel",
+    "districtShortName": "KUS",
+    "districtId": 11007336,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Mainz-Bingen",
+    "districtShortName": "MZ",
+    "districtId": 11007339,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Mayen-Koblenz",
+    "districtShortName": "MYK",
+    "districtId": 11007137,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Neuwied",
+    "districtShortName": "NR",
+    "districtId": 11007138,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Rhein-Hunsrück-Kreis",
+    "districtShortName": "SIM",
+    "districtId": 11007140,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Rhein-Lahn-Kreis",
+    "districtShortName": "EMS",
+    "districtId": 11007141,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Rhein-Pfalz-Kreis",
+    "districtShortName": "LU",
+    "districtId": 11007338,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Südliche Weinstraße",
+    "districtShortName": "SÃœW",
+    "districtId": 11007337,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Südwestpfalz",
+    "districtShortName": "PS",
+    "districtId": 11007340,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Trier-Saarburg",
+    "districtShortName": "TR",
+    "districtId": 11007235,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Vulkaneifel",
+    "districtShortName": "DAU",
+    "districtId": 11007233,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Westerwaldkreis",
+    "districtShortName": "WW",
+    "districtId": 11007143,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Frankenthal",
+    "districtShortName": "FT",
+    "districtId": 11007311,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Kaiserslautern (Stadt)",
+    "districtShortName": "KL",
+    "districtId": 11007312,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Koblenz",
+    "districtShortName": "KO",
+    "districtId": 11007111,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Landau i. d. Pfalz",
+    "districtShortName": "LD",
+    "districtId": 11007313,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Ludwigshafen",
+    "districtShortName": "LU",
+    "districtId": 11007314,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Mainz",
+    "districtShortName": "MZ",
+    "districtId": 11007315,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Neustadt a. d. Weinstraße",
+    "districtShortName": "NW",
+    "districtId": 11007316,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Pirmasens",
+    "districtShortName": "PS",
+    "districtId": 11007317,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Speyer",
+    "districtShortName": "SP",
+    "districtId": 11007318,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Trier",
+    "districtShortName": "TR",
+    "districtId": 11007211,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Worms",
+    "districtShortName": "WO",
+    "districtId": 11007319,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Zweibrücken",
+    "districtShortName": "ZW",
+    "districtId": 11007320,
+    "federalStateName": "Rheinland-Pfalz",
+    "federalStateShortName": "RP",
+    "federalStateId": 13000007
+  },
+  {
+    "districtName": "Alb-Donau-Kreis",
+    "districtShortName": "UL",
+    "districtId": 11008425,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Biberach",
+    "districtShortName": "BC",
+    "districtId": 11008426,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Böblingen",
+    "districtShortName": "BB",
+    "districtId": 11008115,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Bodenseekreis",
+    "districtShortName": "FN",
+    "districtId": 11008435,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Breisgau-Hochschwarzwald",
+    "districtShortName": "FR",
+    "districtId": 11008315,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Calw",
+    "districtShortName": "CW",
+    "districtId": 11008235,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Emmendingen",
+    "districtShortName": "EM",
+    "districtId": 11008316,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Enzkreis",
+    "districtShortName": "PF",
+    "districtId": 11008236,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Esslingen",
+    "districtShortName": "ES",
+    "districtId": 11008116,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Freudenstadt",
+    "districtShortName": "FDS",
+    "districtId": 11008237,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Göppingen",
+    "districtShortName": "GP",
+    "districtId": 11008117,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Heidenheim",
+    "districtShortName": "HDH",
+    "districtId": 11008135,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Heilbronn (Landkreis)",
+    "districtShortName": "HN",
+    "districtId": 11008125,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Hohenlohekreis",
+    "districtShortName": "KÃœN",
+    "districtId": 11008126,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Karlsruhe (Landkreis)",
+    "districtShortName": "KA",
+    "districtId": 11008215,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Konstanz",
+    "districtShortName": "KN",
+    "districtId": 11008335,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Lörrach",
+    "districtShortName": "LÖ",
+    "districtId": 11008336,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Ludwigsburg",
+    "districtShortName": "LB",
+    "districtId": 11008118,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Main-Tauber-Kreis",
+    "districtShortName": "TBB",
+    "districtId": 11008128,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Neckar-Odenwald-Kreis",
+    "districtShortName": "MOS",
+    "districtId": 11008225,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Ortenaukreis",
+    "districtShortName": "OG",
+    "districtId": 11008317,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Ostalbkreis",
+    "districtShortName": "AA",
+    "districtId": 11008136,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Rastatt",
+    "districtShortName": "RA",
+    "districtId": 11008216,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Ravensburg",
+    "districtShortName": "RV",
+    "districtId": 11008436,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Rems-Murr-Kreis",
+    "districtShortName": "WN",
+    "districtId": 11008119,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Reutlingen",
+    "districtShortName": "RT",
+    "districtId": 11008415,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Rhein-Neckar-Kreis",
+    "districtShortName": "HD",
+    "districtId": 11008226,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Rottweil",
+    "districtShortName": "RW",
+    "districtId": 11008325,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Schwäbisch Hall",
+    "districtShortName": "SHA",
+    "districtId": 11008127,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Schwarzwald-Baar-Kreis",
+    "districtShortName": "VS",
+    "districtId": 11008326,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Sigmaringen",
+    "districtShortName": "SIG",
+    "districtId": 11008437,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Tübingen",
+    "districtShortName": "TÜ",
+    "districtId": 11008416,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Tuttlingen",
+    "districtShortName": "TUT",
+    "districtId": 11008327,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Waldshut",
+    "districtShortName": "WT",
+    "districtId": 11008337,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Zollernalbkreis",
+    "districtShortName": "BL",
+    "districtId": 11008417,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Baden-Baden",
+    "districtShortName": "BAD",
+    "districtId": 11008211,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Freiburg i. Breisgau",
+    "districtShortName": "FR",
+    "districtId": 11008311,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Heidelberg",
+    "districtShortName": "HD",
+    "districtId": 11008221,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Heilbronn (Stadt)",
+    "districtShortName": "HN",
+    "districtId": 11008121,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Karlsruhe (Stadt)",
+    "districtShortName": "KA",
+    "districtId": 11008212,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Mannheim",
+    "districtShortName": "MA",
+    "districtId": 11008222,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Pforzheim",
+    "districtShortName": "PF",
+    "districtId": 11008231,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Stuttgart",
+    "districtShortName": "S",
+    "districtId": 11008111,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Ulm",
+    "districtShortName": "UL",
+    "districtId": 11008421,
+    "federalStateName": "Baden-Württemberg",
+    "federalStateShortName": "BW",
+    "federalStateId": 13000008
+  },
+  {
+    "districtName": "Aichach-Friedberg",
+    "districtShortName": "AIC",
+    "districtId": 11009771,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Altötting",
+    "districtShortName": "AÖ",
+    "districtId": 11009171,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Amberg-Sulzbach",
+    "districtShortName": "AS",
+    "districtId": 11009371,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Ansbach (Landkreis)",
+    "districtShortName": "AN",
+    "districtId": 11009571,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Aschaffenburg (Landkreis)",
+    "districtShortName": "AB",
+    "districtId": 11009671,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Augsburg (Landkreis)",
+    "districtShortName": "A",
+    "districtId": 11009772,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Bad Kissingen",
+    "districtShortName": "KG",
+    "districtId": 11009672,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Bad Tölz-Wolfratshausen",
+    "districtShortName": "TÖL",
+    "districtId": 11009173,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Bamberg (Landkreis)",
+    "districtShortName": "BA",
+    "districtId": 11009471,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Bayreuth (Landkreis)",
+    "districtShortName": "BT",
+    "districtId": 11009472,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Berchtesgadener Land",
+    "districtShortName": "REI",
+    "districtId": 11009172,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Cham",
+    "districtShortName": "CHA",
+    "districtId": 11009372,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Coburg (Landkreis)",
+    "districtShortName": "NEC",
+    "districtId": 11009473,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Dachau",
+    "districtShortName": "DAH",
+    "districtId": 11009174,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Deggendorf",
+    "districtShortName": "DEG",
+    "districtId": 11009271,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Dillingen a. d. Donau",
+    "districtShortName": "DLG",
+    "districtId": 11009773,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Dingolfing-Landau",
+    "districtShortName": "LAN",
+    "districtId": 11009279,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Donau-Ries",
+    "districtShortName": "DON",
+    "districtId": 11009779,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Ebersberg",
+    "districtShortName": "EBE",
+    "districtId": 11009175,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Eichstätt",
+    "districtShortName": "EIH",
+    "districtId": 11009176,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Erding",
+    "districtShortName": "ED",
+    "districtId": 11009177,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Erlangen-Höchstadt",
+    "districtShortName": "ERL",
+    "districtId": 11009572,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Forchheim",
+    "districtShortName": "FO",
+    "districtId": 11009474,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Freising",
+    "districtShortName": "FS",
+    "districtId": 11009178,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Freyung-Grafenau",
+    "districtShortName": "WOS",
+    "districtId": 11009272,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Fürstenfeldbruck",
+    "districtShortName": "FFB",
+    "districtId": 11009179,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Fürth (Landkreis)",
+    "districtShortName": "FÜ",
+    "districtId": 11009573,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Garmisch-Partenkirchen",
+    "districtShortName": "GAP",
+    "districtId": 11009180,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Günzburg",
+    "districtShortName": "GZ",
+    "districtId": 11009774,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Haßberge",
+    "districtShortName": "HAS",
+    "districtId": 11009674,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Hof (Landkreis)",
+    "districtShortName": "HO",
+    "districtId": 11009475,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Kelheim",
+    "districtShortName": "KEH",
+    "districtId": 11009273,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Kitzingen",
+    "districtShortName": "KT",
+    "districtId": 11009675,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Kronach",
+    "districtShortName": "KC",
+    "districtId": 11009476,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Kulmbach",
+    "districtShortName": "KU",
+    "districtId": 11009477,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Landsberg a. Lech",
+    "districtShortName": "LL",
+    "districtId": 11009181,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Landshut (Landkreis)",
+    "districtShortName": "LA",
+    "districtId": 11009274,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Lichtenfels",
+    "districtShortName": "LIF",
+    "districtId": 11009478,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Lindau",
+    "districtShortName": "LI",
+    "districtId": 11009776,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Main-Spessart",
+    "districtShortName": "MSP",
+    "districtId": 11009677,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Miesbach",
+    "districtShortName": "MB",
+    "districtId": 11009182,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Miltenberg",
+    "districtShortName": "MIL",
+    "districtId": 11009676,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Mühldorf a. Inn",
+    "districtShortName": "MÜ",
+    "districtId": 11009183,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "München (Landkreis)",
+    "districtShortName": "M",
+    "districtId": 11009184,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Neu-Ulm",
+    "districtShortName": "NU",
+    "districtId": 11009775,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Neuburg-Schrobenhausen",
+    "districtShortName": "ND",
+    "districtId": 11009185,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Neumarkt i. d. OPf.",
+    "districtShortName": "NM",
+    "districtId": 11009373,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Neustadt a. d. Aisch-Bad Windsheim",
+    "districtShortName": "NEA",
+    "districtId": 11009575,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Neustadt a. d. Waldnaab",
+    "districtShortName": "NEW",
+    "districtId": 11009374,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Nürnberger Land",
+    "districtShortName": "LAU",
+    "districtId": 11009574,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Oberallgäu",
+    "districtShortName": "SF",
+    "districtId": 11009780,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Ostallgäu",
+    "districtShortName": "OAL",
+    "districtId": 11009777,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Passau (Landkreis)",
+    "districtShortName": "PA",
+    "districtId": 11009275,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Pfaffenhofen a. d. Ilm",
+    "districtShortName": "PAF",
+    "districtId": 11009186,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Regen",
+    "districtShortName": "REG",
+    "districtId": 11009276,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Regensburg (Landkreis)",
+    "districtShortName": "R",
+    "districtId": 11009375,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Rhön-Grabfeld",
+    "districtShortName": "NES",
+    "districtId": 11009673,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Rosenheim (Landkreis)",
+    "districtShortName": "RO",
+    "districtId": 11009187,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Roth",
+    "districtShortName": "RH",
+    "districtId": 11009576,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Rottal-Inn",
+    "districtShortName": "PAN",
+    "districtId": 11009277,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Schwandorf",
+    "districtShortName": "SAD",
+    "districtId": 11009376,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Schweinfurt (Landkreis)",
+    "districtShortName": "SW",
+    "districtId": 11009678,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Starnberg",
+    "districtShortName": "STA",
+    "districtId": 11009188,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Straubing-Bogen",
+    "districtShortName": "SR",
+    "districtId": 11009278,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Tirschenreuth",
+    "districtShortName": "TIR",
+    "districtId": 11009377,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Traunstein",
+    "districtShortName": "TS",
+    "districtId": 11009189,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Unterallgäu",
+    "districtShortName": "MN",
+    "districtId": 11009778,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Weilheim-Schongau",
+    "districtShortName": "WM",
+    "districtId": 11009190,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Weißenburg-Gunzenhausen",
+    "districtShortName": "WUG",
+    "districtId": 11009577,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Wunsiedel i. Fichtelgebirge",
+    "districtShortName": "WUN",
+    "districtId": 11009479,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Würzburg (Landkreis)",
+    "districtShortName": "WÜ",
+    "districtId": 11009679,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Amberg",
+    "districtShortName": "AM",
+    "districtId": 11009361,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Ansbach (Stadt)",
+    "districtShortName": "AN",
+    "districtId": 11009561,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Aschaffenburg (Stadt)",
+    "districtShortName": "AB",
+    "districtId": 11009661,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Augsburg (Stadt)",
+    "districtShortName": "A",
+    "districtId": 11009761,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Bamberg (Stadt)",
+    "districtShortName": "BA",
+    "districtId": 11009461,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Bayreuth (Stadt)",
+    "districtShortName": "BT",
+    "districtId": 11009462,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Coburg (Stadt)",
+    "districtShortName": "CO",
+    "districtId": 11009463,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Erlangen",
+    "districtShortName": "ER",
+    "districtId": 11009562,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Fürth (Stadt)",
+    "districtShortName": "FÜ",
+    "districtId": 11009563,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Hof (Stadt)",
+    "districtShortName": "HO",
+    "districtId": 11009464,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Ingolstadt",
+    "districtShortName": "IN",
+    "districtId": 11009161,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Kaufbeuren",
+    "districtShortName": "KF",
+    "districtId": 11009762,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Kempten",
+    "districtShortName": "KE",
+    "districtId": 11009763,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Landshut (Stadt)",
+    "districtShortName": "LA",
+    "districtId": 11009261,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Memmingen",
+    "districtShortName": "MM",
+    "districtId": 11009764,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "München (Stadt)",
+    "districtShortName": "M",
+    "districtId": 11009162,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Nürnberg",
+    "districtShortName": "N",
+    "districtId": 11009564,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Passau (Stadt)",
+    "districtShortName": "PA",
+    "districtId": 11009262,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Regensburg (Stadt)",
+    "districtShortName": "R",
+    "districtId": 11009362,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Rosenheim (Stadt)",
+    "districtShortName": "RO",
+    "districtId": 11009163,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Schwabach",
+    "districtShortName": "SC",
+    "districtId": 11009565,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Schweinfurt (Stadt)",
+    "districtShortName": "SW",
+    "districtId": 11009662,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Straubing",
+    "districtShortName": "SR",
+    "districtId": 11009263,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Weiden i. d. OPf.",
+    "districtShortName": "WEN",
+    "districtId": 11009363,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Würzburg (Stadt)",
+    "districtShortName": "WÜ",
+    "districtId": 11009663,
+    "federalStateName": "Bayern",
+    "federalStateShortName": "BY",
+    "federalStateId": 13000009
+  },
+  {
+    "districtName": "Merzig-Wadern",
+    "districtShortName": "MZG",
+    "districtId": 11010042,
+    "federalStateName": "Saarland",
+    "federalStateShortName": "SL",
+    "federalStateId": 13000010
+  },
+  {
+    "districtName": "Neunkirchen",
+    "districtShortName": "NK",
+    "districtId": 11010043,
+    "federalStateName": "Saarland",
+    "federalStateShortName": "SL",
+    "federalStateId": 13000010
+  },
+  {
+    "districtName": "Saarpfalz-Kreis",
+    "districtShortName": "HOM",
+    "districtId": 11010045,
+    "federalStateName": "Saarland",
+    "federalStateShortName": "SL",
+    "federalStateId": 13000010
+  },
+  {
+    "districtName": "Saarlouis",
+    "districtShortName": "SLS",
+    "districtId": 11010044,
+    "federalStateName": "Saarland",
+    "federalStateShortName": "SL",
+    "federalStateId": 13000010
+  },
+  {
+    "districtName": "Sankt Wendel",
+    "districtShortName": "WND",
+    "districtId": 11010046,
+    "federalStateName": "Saarland",
+    "federalStateShortName": "SL",
+    "federalStateId": 13000010
+  },
+  {
+    "districtName": "Saarbrücken (Stadtverband)",
+    "districtShortName": "SB",
+    "districtId": 11010041,
+    "federalStateName": "Saarland",
+    "federalStateShortName": "SL",
+    "federalStateId": 13000010
+  },
+  {
+    "districtName": "Charlottenburg-Wilmersdorf",
+    "districtShortName": "B",
+    "districtId": 11011004,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Friedrichshain-Kreuzberg",
+    "districtShortName": "B",
+    "districtId": 11011002,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Lichtenberg",
+    "districtShortName": "B",
+    "districtId": 11011011,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Marzahn-Hellersdorf",
+    "districtShortName": "B",
+    "districtId": 11011010,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Mitte",
+    "districtShortName": "B",
+    "districtId": 11011001,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Neukölln",
+    "districtShortName": "B",
+    "districtId": 11011008,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Pankow",
+    "districtShortName": "B",
+    "districtId": 11011003,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Reinickendorf",
+    "districtShortName": "B",
+    "districtId": 11011012,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Spandau",
+    "districtShortName": "B",
+    "districtId": 11011005,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Steglitz-Zehlendorf",
+    "districtShortName": "B",
+    "districtId": 11011006,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Tempelhof-Schöneberg",
+    "districtShortName": "B",
+    "districtId": 11011007,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Treptow-Köpenick",
+    "districtShortName": "B",
+    "districtId": 11011009,
+    "federalStateName": "Berlin",
+    "federalStateShortName": "BE",
+    "federalStateId": 13000011
+  },
+  {
+    "districtName": "Barnim",
+    "districtShortName": "BAR",
+    "districtId": 11012060,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Dahme-Spreewald",
+    "districtShortName": "LDS",
+    "districtId": 11012061,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Elbe-Elster",
+    "districtShortName": "EE",
+    "districtId": 11012062,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Havelland",
+    "districtShortName": "HVL",
+    "districtId": 11012063,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Märkisch-Oderland",
+    "districtShortName": "MOL",
+    "districtId": 11012064,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Oberhavel",
+    "districtShortName": "OHV",
+    "districtId": 11012065,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Oberspreewald-Lausitz",
+    "districtShortName": "OSL",
+    "districtId": 11012066,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Oder-Spree",
+    "districtShortName": "LOS",
+    "districtId": 11012067,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Ostprignitz-Ruppin",
+    "districtShortName": "OPR",
+    "districtId": 11012068,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Potsdam-Mittelmark",
+    "districtShortName": "PM",
+    "districtId": 11012069,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Prignitz",
+    "districtShortName": "PR",
+    "districtId": 11012070,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Spree-Neiße",
+    "districtShortName": "SPN",
+    "districtId": 11012071,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Teltow-Fläming",
+    "districtShortName": "TF",
+    "districtId": 11012072,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Uckermark",
+    "districtShortName": "UM",
+    "districtId": 11012073,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Brandenburg a. d. Havel",
+    "districtShortName": "BRB",
+    "districtId": 11012051,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Cottbus",
+    "districtShortName": "CB",
+    "districtId": 11012052,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Frankfurt (Oder)",
+    "districtShortName": "FF",
+    "districtId": 11012053,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Potsdam",
+    "districtShortName": "P",
+    "districtId": 11012054,
+    "federalStateName": "Brandenburg",
+    "federalStateShortName": "BB",
+    "federalStateId": 13000012
+  },
+  {
+    "districtName": "Ludwigslust-Parchim",
+    "districtShortName": "NULL",
+    "districtId": 11013076,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Mecklenburgische Seenplatte",
+    "districtShortName": "NULL",
+    "districtId": 11013071,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Nordwestmecklenburg",
+    "districtShortName": "NULL",
+    "districtId": 11013074,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Vorpommern-Rügen",
+    "districtShortName": "NULL",
+    "districtId": 11013073,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Vorpommern-Greifswald",
+    "districtShortName": "NULL",
+    "districtId": 11013075,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Rostock (Landkreis)",
+    "districtShortName": "NULL",
+    "districtId": 11013072,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Rostock (Stadt)",
+    "districtShortName": "HRO",
+    "districtId": 11013003,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Schwerin",
+    "districtShortName": "SN",
+    "districtId": 11013004,
+    "federalStateName": "Mecklenburg-Vorpommern",
+    "federalStateShortName": "MV",
+    "federalStateId": 13000013
+  },
+  {
+    "districtName": "Bautzen",
+    "districtShortName": "BZ",
+    "districtId": 11014625,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Erzgebirgskreis",
+    "districtShortName": "ERZ",
+    "districtId": 11014521,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Görlitz",
+    "districtShortName": "GR",
+    "districtId": 11014626,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Leipzig (Landkreis)",
+    "districtShortName": "L",
+    "districtId": 11014729,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Meißen",
+    "districtShortName": "MEI",
+    "districtId": 11014627,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Mittelsachsen",
+    "districtShortName": "FG",
+    "districtId": 11014522,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Nordsachsen",
+    "districtShortName": "TDO",
+    "districtId": 11014730,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Sächsische Schweiz-Osterzgebirge",
+    "districtShortName": "PIR",
+    "districtId": 11014628,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Vogtlandkreis",
+    "districtShortName": "V",
+    "districtId": 11014523,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Zwickau",
+    "districtShortName": "Z",
+    "districtId": 11014524,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Chemnitz",
+    "districtShortName": "C",
+    "districtId": 11014511,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Dresden",
+    "districtShortName": "DD",
+    "districtId": 11014612,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Leipzig (Stadt)",
+    "districtShortName": "L",
+    "districtId": 11014713,
+    "federalStateName": "Sachsen",
+    "federalStateShortName": "SN",
+    "federalStateId": 13000014
+  },
+  {
+    "districtName": "Altmarkkreis Salzwedel",
+    "districtShortName": "SAW",
+    "districtId": 11015081,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Anhalt-Bitterfeld",
+    "districtShortName": "BTF",
+    "districtId": 11015082,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Börde",
+    "districtShortName": "BÖ",
+    "districtId": 11015083,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Burgenlandkreis",
+    "districtShortName": "BLK",
+    "districtId": 11015084,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Harz",
+    "districtShortName": "HZ",
+    "districtId": 11015085,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Jerichower Land",
+    "districtShortName": "JL",
+    "districtId": 11015086,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Mansfeld-Südharz",
+    "districtShortName": "ML",
+    "districtId": 11015087,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Saalekreis",
+    "districtShortName": "SK",
+    "districtId": 11015088,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Salzlandkreis",
+    "districtShortName": "SLK",
+    "districtId": 11015089,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Stendal",
+    "districtShortName": "SDL",
+    "districtId": 11015090,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Wittenberg",
+    "districtShortName": "WB",
+    "districtId": 11015091,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Dessau-Roßlau",
+    "districtShortName": "DE",
+    "districtId": 11015001,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Halle",
+    "districtShortName": "HAL",
+    "districtId": 11015002,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Magdeburg",
+    "districtShortName": "MD",
+    "districtId": 11015003,
+    "federalStateName": "Sachsen-Anhalt",
+    "federalStateShortName": "ST",
+    "federalStateId": 13000015
+  },
+  {
+    "districtName": "Altenburger Land",
+    "districtShortName": "ABG",
+    "districtId": 11016077,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Eichsfeld",
+    "districtShortName": "EIC",
+    "districtId": 11016061,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Gotha",
+    "districtShortName": "GTH",
+    "districtId": 11016067,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Greiz",
+    "districtShortName": "GRZ",
+    "districtId": 11016076,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Hildburghausen",
+    "districtShortName": "SHL",
+    "districtId": 11016069,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Ilm-Kreis",
+    "districtShortName": "SHL",
+    "districtId": 11016070,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Kyffhäuserkreis",
+    "districtShortName": "KYF",
+    "districtId": 11016065,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Nordhausen",
+    "districtShortName": "NDH",
+    "districtId": 11016062,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Saale-Holzland-Kreis",
+    "districtShortName": "SHK",
+    "districtId": 11016074,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Saale-Orla-Kreis",
+    "districtShortName": "SOK",
+    "districtId": 11016075,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Saalfeld-Rudolstadt",
+    "districtShortName": "SLF",
+    "districtId": 11016073,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Schmalkalden-Meiningen",
+    "districtShortName": "SM",
+    "districtId": 11016066,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Sömmerda",
+    "districtShortName": "SÖM",
+    "districtId": 11016068,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Sonneberg",
+    "districtShortName": "SON",
+    "districtId": 11016072,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Unstrut-Hainich-Kreis",
+    "districtShortName": "UH",
+    "districtId": 11016064,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Wartburgkreis",
+    "districtShortName": "WAK",
+    "districtId": 11016063,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Weimarer Land",
+    "districtShortName": "WE",
+    "districtId": 11016071,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Eisenach",
+    "districtShortName": "EA",
+    "districtId": 11016056,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Erfurt",
+    "districtShortName": "EF",
+    "districtId": 11016051,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Gera",
+    "districtShortName": "G",
+    "districtId": 11016052,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Jena",
+    "districtShortName": "J",
+    "districtId": 11016053,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Suhl",
+    "districtShortName": "SHL",
+    "districtId": 11016054,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  },
+  {
+    "districtName": "Weimar",
+    "districtShortName": "WE",
+    "districtId": 11016055,
+    "federalStateName": "Thüringen",
+    "federalStateShortName": "TH",
+    "federalStateId": 13000016
+  }
+]
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/assets/privacy_de.html b/Corona-Warn-App/src/main/assets/privacy_de.html
index 371f1287187cc0b097684ab230a7bc17dbb3e180..5c74854411dfcaa60bedc13db1ddf09989400b2d 100644
--- a/Corona-Warn-App/src/main/assets/privacy_de.html
+++ b/Corona-Warn-App/src/main/assets/privacy_de.html
@@ -111,10 +111,16 @@
 <p>
     Das gesamte System der App ist so programmiert, dass so wenig
     personenbezogene Daten wie möglich verarbeitet werden. Das bedeutet, dass
-    das System bei der Risiko-Ermittlung, der Warnung anderer und dem Abruf des Testergebnisses keine Daten erfasst, die es dem RKI oder anderen Nutzern
+    das System bei der Risiko-Ermittlung, der Warnung anderer und dem Abruf des Testergebnisses
+    keine Daten erfasst, die es dem RKI oder anderen Nutzern
     ermöglichen, auf Ihre Identität, Ihren Namen, Ihren Standort oder andere
-    persönliche Details zu schließen. Die App verzichtet daher auch auf
-    jegliche Auswertung Ihres Nutzungsverhaltens durch Analyse-Tools.
+    persönliche Details zu schließen.
+</p>
+<p>
+    Die App verzichtet daher auch grundsätzlich auf
+    jegliche Auswertung Ihres Nutzungsverhaltens durch Analyse-Tools. Nur wenn Sie ausdrücklich der
+    freiwilligen Datenspende zustimmen, werden bestimmte Daten über Ihre Nutzung der App an das RKI
+    übermittelt (siehe hierzu Punkt 5 e.).
 </p>
 <p>
     Die von der App verarbeiteten Daten lassen sich den folgenden Kategorien
@@ -268,8 +274,124 @@
     und das Gesundheitsamt Ihre Mithilfe bei der Kontaktnachverfolgung erbittet, können Sie dem
     Gesundheitsamt somit schnell die benötigten Informationen mitteilen.
 </p>
-Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über die Speicherung der Einträge im Kontakt-Tagebuch. Sie sind insofern auch selbst für Ihre Einträge verantwortlich. Respektieren Sie daher bitte die Privatsphäre der Personen, die Sie in Ihr Kontakt-Tagebuch aufnehmen. Die Einträge sollen nicht an Dritte und nicht über unsichere Kommunikationskanäle weitergegeben werden. Das zuständige Gesundheitsamt wird Ihnen mitteilen, welche Informationen es für die Kontaktnachverfolgung von Ihnen benötigt und wie Sie diese zur Verfügung stellen können.
 <p>
+    Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über die Speicherung
+    der Einträge im Kontakt-Tagebuch. Sie sind insofern auch selbst für Ihre Einträge
+    verantwortlich. Respektieren Sie daher bitte die Privatsphäre der Personen, die Sie in Ihr
+    Kontakt-Tagebuch aufnehmen. Die Einträge sollen nicht an Dritte und nicht über unsichere
+    Kommunikationskanäle weitergegeben werden. Das zuständige Gesundheitsamt wird Ihnen mitteilen,
+    welche Informationen es für die Kontaktnachverfolgung von Ihnen benötigt und wie Sie diese zur
+    Verfügung stellen können.
+</p>
+<h2>
+    e. Datenspende
+</h2>
+<p>
+    Wenn Sie die Funktion Datenspende aktivieren, übermittelt die App unterschiedliche Daten über
+    Ihre App-Nutzung einmal täglich an das RKI (im Folgenden: Nutzungsdaten). Diese Nutzungsdaten
+    betreffen angezeigte Risiko-Begegnungen und Warnungen, durch Sie abgerufene Testergebnisse, ob
+    Sie andere Nutzer gewarnt haben sowie Angaben über das Betriebssystem Ihres Smartphones. Im
+    Einzelnen sind dies:
+</p>
+<ul>
+    <li>Das Datum der Ãœbermittlung.</li>
+    <li>Änderungen der Warnungshistorie im Vergleich zum Vortag.</li>
+    <li>Angaben dazu, welches Risiko Ihnen zum Zeitpunkt der Ãœbermittlung angezeigt wurde.</li>
+    <li>Angaben dazu, auf welcher Grundlage der Risikostatus in Zusammenhang mit einer Begegnung
+        berechnet wurde.
+    </li>
+</ul>
+<p>
+    Wenn Sie ein Testergebnis über die App abgerufen haben:
+</p>
+<ul>
+    <li>Angaben dazu, ob Sie ein positives oder negatives Testergebnis über die App erhalten
+        haben.
+    </li>
+    <li>Angaben zum berechneten Risiko zum Zeitpunkt der Testregistrierung.</li>
+    <li>Angaben zum Zeitraum zwischen der letzten Begegnung mit erhöhtem Risiko und der
+        Testregistrierung.
+    </li>
+    <li>Angaben zum Zeitraum zwischen der letzten Mitteilung eines erhöhten Risikos und der
+        Testregistrierung.
+    </li>
+    <li>Angaben dazu, ob Sie Ihr Testergebnis geteilt und andere gewarnt haben.</li>
+</ul>
+<p>
+    Wenn Sie andere über eine mögliche Risiko-Begegnung gewarnt haben:
+</p>
+<ul>
+    <li>Angaben dazu, ob Sie die Schritte zur Warnung anderer abgebrochen haben./li>
+    <li>Angaben dazu, ob Sie Angaben zum Symptombeginn gemacht haben.</li>
+    <li>Angaben dazu, wann Sie Ihr Einverständnis in die Warnung anderer erteilt haben.</li>
+    <li>Angaben dazu, bis zu welcher Meldung im Rahmen der Warnung anderer Sie gekommen sind.</li>
+    <li>Angaben dazu, wie viele Stunden es gedauert hat, bis Sie Ihr Testergebnisses erhalten
+        haben.
+    </li>
+    <li>Angaben dazu, wie viele Tage seit der letzten Mitteilung eines hohen Risikos vergangen
+        sind.
+    </li>
+    <li>Angaben dazu, wie viele Stunden seit der Testregistrierung vergangen sind.</li>
+</ul>
+<p>
+    Sonstige Informationen:
+</p>
+<ul>
+    <li>Angaben zum Modell und der Version Ihres Smartphones und zur Version Ihrer App sowie dem
+        verwendeten Betriebssystem.
+    </li>
+</ul>
+<p>
+    Zusätzlich können Sie weitere freiwilligen Angaben zu Ihrer Region sowie zu Ihrer Altersgruppe
+    machen, die zusammen mit den Nutzungsdaten an das RKI übermittelt werden.
+</p>
+<p>
+    Das RKI wird die Nutzungsdaten und weiteren freiwilligen Angaben zu Statistiken zusammenfassen
+    und auswerten, um die Wirksamkeit und Funktionsweise der App zu bewerten und Rückschlüsse auf
+    das Pandemiegeschehen zu ziehen.
+</p>
+<p>
+    Die Nutzung der Datenspende ist freiwillig. Sie entscheiden selbst darüber, ob Sie die
+    Datenspende aktivieren und Nutzungsdaten und die weiteren freiwilligen Angaben an das RKI
+    übermittelt werden sollen. Die Aktivierung der Datenspende setzt die Bestätigung der Echtheit
+    Ihrer App voraus (Beachten Sie bitte die weitere Informationen hierzu unter Punkt 5 g. und Punkt
+    11).
+</p>
+<h2>
+    f. Teilnahme an einer Befragung
+</h2>
+<p>
+    Einigen Nutzern wird in der App die Teilnahme an einer Befragung des RKI angeboten. In der Regel
+    wird das Angebot zur Teilnahme an der Befragung abhängig von bestimmten in der App registrierten
+    Ereignissen sein (z.B. der Anzeige eines erhöhten Risikos). Mit der Teilnahme an der Befragung
+    helfen Sie dem RKI, die Wirksamkeit der App zu bewerten, die App zu verbessern und
+    beispielsweise zu verstehen, ob und wie Warnungen über die App dabei helfen, weitere
+    Ansteckungen zu verhindern.
+</p>
+<p>
+    Die Teilnahme an den Befragungen ist freiwillig. Sie entscheiden selbst darüber, ob Sie an einer
+    Befragung teilnehmen möchten und Daten hierfür an das RKI übermittelt werden sollen. Die
+    Befragungen finden auf einer Webseite außerhalb der App statt, auf die Sie weitergeleitet
+    werden. Die Teilnahme an einer Befragung setzt die Bestätigung der Echtheit Ihrer App voraus
+    (Beachten Sie bitte die weitere Informationen hierzu unter Punkt 5 g. und Punkt 11).
+</p>
+<h2>
+    g. Bestätigung der Echtheit Ihrer App
+</h2>
+<p>
+    Einige Funktionen der App setzen voraus, dass vorab die Echtheit Ihrer App geprüft und gegenüber
+    dem RKI bestätigt wird. Dazu wird eine Funktion des Betriebssystems Ihres Smartphones genutzt.
+    Ihr Smartphone erzeugt hierbei eine eindeutige Kennung und sendet diese an den Anbieter Ihres
+    Betriebssystems (wenn Sie ein Android-Smartphone verwenden, werden Daten an Google übermittelt;
+    wenn Sie ein iPhone verwenden, werden Daten an Apple übermittelt). Die Kennung enthält
+    Informationen über die Version Ihres Smartphones und die Version der App. Möglicherweise kann
+    der Anbieter Ihres Betriebssystems anhand der Kennung auf Ihre Identität schließen und
+    nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat. Weitere Angaben
+    aus der App, z.B. Begegnungsdaten, erhält der Anbieter Ihres Betriebssystems nicht. Die Anbieter
+    des Betriebssystems nutzen die Kennung, um die Echtheit Ihrer App gegenüber dem RKI zu
+    bestätigen. Die Nutzung der Funktion zur Bestätigung der Echtheit ist freiwillig. Wenn Sie mit
+    der Bestätigung der Echtheit Ihrer App nicht einverstanden sind, kann es jedoch sein, dass Ihnen
+    andere Funktionen der App nicht zur Verfügung stehen.
 </p>
 <h1>
     6. Wofür werden Ihre Daten verarbeitet?
@@ -498,6 +620,71 @@ Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über d
     anpassen und so weitere Ansteckungen in ihrem Umfeld durch eventuell noch unerkannte
     Ansteckungen verhindern.
 </p>
+<h2>
+    f. Datenspende
+</h2>
+<p>
+    Die Datenspende ist eine Zusatzfunktionen der App. Die im Rahmen der Datenspende an das RKI
+    übermittelten Nutzungsdaten und weiteren freiwilligen Angaben dienen der Bewertung der
+    Wirksamkeit der App und sie werden ausgewertet, um folgende Verbesserungen zu ermöglichen:
+</p>
+<ul>
+    <li>
+        Verbesserung der Risiko-Ermittlung – Die Genauigkeit und Zuverlässigkeit der technischen
+        Berechnung der Ansteckungsrisiken sollen verbessert werden. Hierfür werden Angaben über
+        Risiko-Begegnungen und Ihnen angezeigte Warnungen ausgewertet. In der Folge kann die
+        Berechnungsmethode verfeinert werden.
+    </li>
+    <li>
+        Verbesserung der Nutzerführung in der App – Die Bedienung der App soll erleichtert werden.
+        Hierfür werden Angaben über die einzelnen Schritte ausgewertet, die Nutzer in der App
+        vornehmen. So können Beschriftungen und Hinweistexte klarer gestaltet und Bedienelemente so
+        platziert werden, dass sie besser gefunden werden können. Außerdem können Darstellungen für
+        verschiedene Smartphone-Modelle angepasst werden.
+    </li>
+    <li>
+        Informationen und Hilfestellungen zur App ermöglichen – Es soll möglich werden, zu erkennen,
+        ob es z.B. bei der Nutzung der App im Zusammenhang mit bestimmten Testeinrichtungen und
+        Laboren oder in bestimmten Regionen zu Problemen kommt. Dies kann festgestellt werden, wenn
+        aufgrund der Datenspende auffällt, dass in bestimmten Regionen Testergebnisse verspätet zur
+        Verfügung stehen. So können die zuständigen Gesundheitsbehörden auch gezielt auf mögliche
+        technische Störungen hingewiesen werden.
+    </li>
+    <li>
+        Verbesserung der Statistiken über den Pandemieverlauf – Die Daten können Aufschluss über die
+        zeitliche und räumliche Verteilung bestimmter Ereignisse des Pandemieverlaufs geben und es
+        ermöglichen, auf bestimmte Entwicklungen schneller zu reagieren.
+    </li>
+</ul>
+<p>
+    Die Nutzungsdaten und die weiteren freiwilligen Angaben werden ohne jeden Zusammenhang mit Ihrem
+    Namen oder Ihrer Identität gespeichert und ausgewertet. Das RKI erfährt also nicht, wer Sie sind
+    oder wen Sie getroffen haben.
+</p>
+<h2>
+    g. Befragungen
+</h2>
+<p>
+    Befragungen finden auf einer Webseite außerhalb der App statt, auf die Sie weitergeleitet
+    werden. In Zusammenhang mit Befragungen werden durch die App keine Daten an das RKI übermittelt.
+    Welche Zwecke mit einer Befragung durch das RKI verfolgt werden, ist in den Informationen zur
+    Befragung auf der Befragungs-Webseite beschrieben.
+</p>
+<h2>
+    h. Bestätigung der Echtheit Ihrer App
+</h2>
+<p>
+    Zur Bestätigung der Echtheit Ihrer App wird eine Funktion des Betriebssystems Ihres Smartphones
+    genutzt. Damit kann sichergestellt werden, dass nur Nutzer der App an der Datenspende oder an
+    Befragungen teilnehmen, deren App ordnungsgemäß funktioniert. Auf diese Weise wird
+    sichergestellt, dass die Statistiken und Befragungsergebnisse nicht verfälscht werden.
+</p>
+<p>
+    Bitte beachten Sie, dass der Anbieter Ihres Betriebssystems möglicherweise nachvollziehen kann,
+    dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat und dadurch auf Ihre Identität
+    schließen kann. Weiteren Angaben über Ihre Nutzung der Corona-Warn-App erhält der Anbieter Ihres
+    Betriebssystems jedoch nicht.
+</p>
 <h1>
     7. Wie funktioniert das länderübergreifende Warnsystem?
 </h1>
@@ -669,9 +856,24 @@ Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über d
     b. Daten auf Serversystemen
 </h2>
 <p>
-    Positiv-Listen werden nach 14 Tagen von allen Serversystemen
-    (einschließlich dem Austausch-Server) gelöscht. Alle anderen Daten werden
-    spätestens nach 21 Tagen gelöscht.
+    Positiv-Listen werden nach 14 Tagen von allen Serversystemen (einschließlich dem
+    Austausch-Server) gelöscht. Alle anderen Daten, mit Ausnahme der im Rahmen der Datenspende sowie
+    zur Bestätigung der Echtheit Ihrer App übermittelten Daten, werden spätestens nach 21 Tagen
+    gelöscht.
+</p>
+<h2>
+    c. Datenspende
+</h2>
+<p>
+    Nutzungsdaten und weitere freiwillige Angaben, die im Rahmen der Datenspende an das RKI
+    übermittelt werden, werden nach 180 Tagen gelöscht.
+</p>
+<h2>
+    d. Bestätigung der Echtheit Ihrer App
+</h2>
+<p>
+    Die Kennungen, die Ihr Smartphone zur Bestätigung der Echtheit Ihrer App erzeugt, werden nach 30
+    Tagen nach Übermittlung an das RKI vom Serversystemen gelöscht.
 </p>
 <h1>
     10. An wen werden Ihre Daten weitergegeben?
@@ -711,7 +913,23 @@ Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über d
 <p>
     Wenn Sie eine Warnung auslösen, können die aktuellen Positiv-Listen
     unabhängig vom Aufenthaltsort des Nutzers (etwa im Urlaub oder auf
-    Geschäftsreise) abgerufen werden. Im Übrigen werden die von der App
+    Geschäftsreise) abgerufen werden.
+</p>
+<p>
+    Zudem kann es im Rahmen der Bestätigung der Echtheit Ihrer App zu einer Übermittlung von Daten
+    in ein Land außerhalb der EU kommen. Die von Ihrem Smartphone erzeugte Kennung, die
+    Informationen über die Version Ihres Smartphones und der App enthält, wird an den
+    Betriebssystemanbieter Ihres Smartphones (Apple oder Google) übermittelt. Dabei kann es auch zu
+    einer Datenübermittlung in Drittländer, insbesondere in die USA, kommen. Dort besteht
+    möglicherweise kein dem europäischen Recht entsprechendes Datenschutzniveau und Ihre
+    europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht
+    die Möglichkeit, dass Sicherheitsbehörden im Drittland auf die übermittelten Daten beim
+    Betriebssystemanbieter zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen
+    Informationen verknüpfen. Dies betrifft jedoch nur die übermittelte Kennung. Weitere Angaben aus
+    der App, beispielsweise Begegnungsdaten, sind davon nicht erfasst.
+</p>
+<p>
+    Im Ãœbrigen werden die von der App
     übermittelten Daten ausschließlich auf Servern in Deutschland oder in einem
     anderem Land in der EU (oder dem Europäischen Wirtschaftsraum) verarbeitet,
     die somit den strengen Anforderungen der Datenschutz-Grundverordnung
@@ -782,6 +1000,34 @@ Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über d
     Smartphones möglicherweise eine manuelle Löschung vornehmen. Beachten Sie
     hierzu auch die Hinweise unter Punkt 5 b.
 </p>
+<h2>
+    d. Einverständnis „Datenspende“
+</h2>
+<p>
+    Sie können Ihr Einverständnis in die Datenspende jederzeit zurücknehmen, indem Sie „Daten
+    spenden“ in den Einstellungen der App deaktivieren. Die App wird dann Ihre Nutzungsdaten und
+    weiteren freiwilligen Angaben nicht weiter täglich an das RKI übermitteln. Wenn Sie die
+    Datenspende wieder erlauben möchten, können Sie die Funktion in den Einstellungen erneut
+    aktivieren.
+</p>
+<h2>
+    e. Einverständnis „Befragung“
+</h2>
+<p>
+    Ihr Einverständnis zur Teilnahme an einer Befragung des RKI erteilen Sie nicht in der App,
+    sondern über die Website, auf der auch die Befragung durchgeführt wird. Dort ist auch
+    beschrieben, wie Sie Ihr Einverständnis zurücknehmen können.
+</p>
+<h2>
+    f. Einverständnis „Bestätigung der Echtheit Ihrer App“
+</h2>
+<p>
+    Wenn Sie Ihr Einverständnis zur Bestätigung der Echtheit Ihrer App zurücknehmen, hat dies keine
+    direkte Auswirkung auf die damit zusammenhängende Datenverarbeitung. Die Übermittlung der von
+    Ihrem Smartphone erzeugten Kennung an den Betriebssystemanbieter und die Überprüfung und
+    Bestätigung der Echtheit Ihrer App findet unmittelbar statt, nachdem Sie Ihr Einverständnis
+    erteilt haben.
+</p>
 <h1>
     13. Welche weiteren Datenschutzrechte haben Sie?
 </h1>
@@ -795,8 +1041,11 @@ Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über d
     </li>
     <li>
         das Recht, den behördlichen
-        Datenschutzbeauftragten des RKI
-        (https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html)
+        <a
+                href="https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html"
+        >
+            Datenschutzbeauftragten des RKI
+        </a>
         zu kontaktieren und Ihr Anliegen vorzubringen (Art. 38 Abs. 4 DSGVO)
         und
     </li>
@@ -840,5 +1089,5 @@ Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über d
     datenschutz@rki.de.
 </p>
 <p>
-    Stand: 10.02.2021
-</p>
\ No newline at end of file
+    Stand: 01.03.2021
+</p>
diff --git a/Corona-Warn-App/src/main/assets/privacy_en.html b/Corona-Warn-App/src/main/assets/privacy_en.html
index fbb11e074ec5a6d5591be468ae1089f4ec46d291..379e081aabfe86cd3b2b0672daa6c3597c40ddbf 100644
--- a/Corona-Warn-App/src/main/assets/privacy_en.html
+++ b/Corona-Warn-App/src/main/assets/privacy_en.html
@@ -109,9 +109,15 @@
 </h1>
 <p>
     The app’s entire system has been programmed to process as little personal
-    data as possible. This means that, when you use exposure logging, warn other users, or retrieve a test result, the system does not collect any data that would allow the RKI or other users to infer your identity, your name, your
-    location or other personal details. The app does not therefore use any
-    analysis tools to evaluate the way you use it.
+    data as possible. This means that, when you use exposure logging, warn other users, or retrieve
+    a test result, the system does not collect any data that would allow the RKI or other users to
+    infer your identity, your name, your
+    location or other personal details.
+</p>
+<p>
+    In principle, the app does not therefore use any analysis tools to evaluate the way you use it.
+    Only if you expressly agree to voluntarily share data (see Section 5 e.), will certain data
+    about your use of the app be transmitted to the RKI.
 </p>
 <p>
     The data processed by the app can be grouped into the following categories:
@@ -269,6 +275,109 @@
     competent public health office will tell you what information it needs from you for contact
     tracing purposes, and how you can provide it.
 </p>
+<h2>
+    e. Data sharing
+</h2>
+<p>
+    If you enable the data sharing feature, the app will transmit various data about your use of
+    the app (hereinafter referred to as usage data) once a day to the RKI. This usage data concerns
+    possible exposures and warnings that have been displayed to you, test results you have
+    retrieved, and whether you have warned other users, and information about your smartphone’s
+    operating system. Specifically, this means:
+</p>
+<ul>
+    <li>The date of transmission</li>
+    <li>Changes to the warning history compared to the previous day</li>
+    <li>Information about what risk was shown to you at the time of transmission</li>
+    <li>Information about the basis on which the risk status was calculated in connection with an
+        encounter
+    </li>
+</ul>
+<p>
+    If you retrieved a test result via the app:
+</p>
+<ul>
+    <li>Information about whether you received a positive or negative test result via the app</li>
+    <li>Information about the calculated risk at the time of test registration</li>
+    <li>Information about the period between your last encounter involving an elevated risk and when
+        the test was registered
+    </li>
+    <li>Information about the period between the last notification of an elevated risk and when the
+        test was registered
+    </li>
+    <li>Information about whether you have shared your test result and warned others.</li>
+</ul>
+<p>
+    If you have warned others about a possible exposure:
+</p>
+<ul>
+    <li>Information about whether you cancelled the procedure to warn others</li>
+    <li>Information about whether you provided information about the onset of symptoms</li>
+    <li>Information about when you gave your consent to warn others</li>
+    <li>Information about how far you got in the procedure to warn others</li>
+    <li>Information about how many hours it took before you received your test result</li>
+    <li>Information about how many days have passed since the last notification of an elevated
+        risk
+    </li>
+    <li>Information about how many hours have passed since the test was registered.</li>
+</ul>
+<p>
+    Other information:
+</p>
+<ul>
+    <li>Information about the model and version of your smartphone and the version of your app as
+        well as the operating system you are using.
+    </li>
+</ul>
+<p>
+    In addition, you can provide further voluntary information about your region and age group,
+    which will be transmitted to the RKI together with the usage data.
+</p>
+<p>
+    The RKI will compile the usage data and other voluntary information into statistics and analyse
+    it to assess the effectiveness and functioning of the app, and draw conclusions regarding the
+    pandemic.
+</p>
+<p>
+    Using the data sharing feature is voluntary. You decide yourself whether you want to enable the
+    data sharing feature and whether usage data and other voluntary information should be
+    transmitted to the RKI. To enable the data sharing feature, the authenticity of your app first
+    needs to be confirmed (please note the further information about this in Sections 5 g. and 11).
+</p>
+<h2>
+    f. Participation in a survey
+</h2>
+<p>
+    Some app users are offered to participate in a survey by the RKI. This offer to participate in
+    the survey will usually be contingent on certain events registered in the app (e.g. an elevated
+    risk being displayed). By taking part in the survey, you will help the RKI to assess the
+    effectiveness of the app, to improve the app and, for example, to understand whether and how
+    warnings sent via the app help to prevent further infections.
+</p>
+<p>
+    Participation in the surveys is voluntary. You decide yourself whether you want to participate
+    in a survey and whether data should be transmitted to the RKI for this purpose. The surveys take
+    place on a website outside of the app, which you will be redirected to. To enable participation
+    in a survey, the authenticity of your app first needs to be confirmed (please note the further
+    information about this in Sections 5 g. and 11).
+</p>
+<h2>
+    g. Confirmation of the authenticity of your app
+</h2>
+<p>
+    Before you can use some of the app’s features, the authenticity of your app first needs to be
+    checked and confirmed to the RKI. This process uses a feature of your smartphone’s operating
+    system. Your smartphone generates a unique identifier and sends it to your operating system
+    provider (if you use an Android smartphone, data is transmitted to Google; if you use an iPhone,
+    data is transmitted to Apple). The identifier contains information about the version of your
+    smartphone and the version of the app. It is possible for your operating system provider to
+    infer your identity from the identifier and learn that your smartphone has been authenticated.
+    Your operating system provider does not receive any other
+    information, such as exposure data, from the app. Your operating system provider will use the
+    identifier to confirm the authenticity of your app to the RKI. Using the feature for confirming
+    the authenticity of your app is voluntary. However, if you do not agree to having the
+    authenticity of your app confirmed, other features of the app may not be available to you.
+</p>
 <h1>
     6. Why is your data processed?
 </h1>
@@ -490,6 +599,68 @@
     whether to change their plans if necessary, i.e. to meet up with fewer people and thus reduce
     the risk of causing undetected infections.
 </p>
+<h2>
+    f. Data sharing
+</h2>
+<p>
+    Share Data is an additional feature of the app. The usage data and other voluntary
+    information transmitted to the RKI by the data sharing feature are used to assess the
+    effectiveness of the app and enable the following improvements:
+</p>
+<ul>
+    <li>
+        Improving exposure logging – The aim is to improve the accuracy and reliability of the
+        technical calculation of risks of infection. For this purpose, information about possible
+        exposures and warnings displayed to you is analysed. The calculation method can then be
+        fine-tuned.
+    </li>
+    <li>
+        Improving app navigation for users – The aim is to make it easier to use the app. For this
+        purpose, information about the individual steps that users take in the app is analysed. This
+        makes it possible to make labels and texts clearer, and buttons can be placed in such a way
+        that they can be found more easily. In addition, displays can be customised for different
+        smartphone models.
+    </li>
+    <li>
+        Providing information and assistance with the app – The aim is to identify whether there are
+        problems when the app is used, for example with certain testing facilities and laboratories
+        or in certain regions. This can be determined if, for example, the data sharing feature
+        reveals that test results are available later in certain regions than in others. In this
+        way, the competent health authorities can also be specifically informed of potential
+        technical disruptions.
+    </li>
+    <li>
+        Improving statistics about the pandemic – The data can provide information about the
+        temporal and spatial distribution of certain events in the pandemic and allow the
+        authorities to respond more quickly to certain developments.
+    </li>
+</ul>
+<p>
+    The usage data and other voluntary information will be stored and analysed without any
+    connection to your name or identity. This means the RKI will not find out who you are or who you
+    have met.
+</p>
+<h2>
+    g. Surveys
+</h2>
+<p>
+    The surveys take place on a website outside of the app, which you will be redirected to. The app
+    will not transmit any data to the RKI in connection with the surveys. The purposes of an RKI
+    survey are described in the information about the survey on the survey website.
+</p>
+<h2>
+    h. Confirmation of the authenticity of your app
+</h2>
+<p>
+    A feature of your smartphone’s operating system is used to confirm the authenticity of your app.
+    This ensures that only app users whose app is functioning properly can share their data or
+    participate in surveys. This prevents the statistics and survey results from being distorted.
+</p>
+<p>
+    Please note that your operating system provider may be able to tell that your smartphone has
+    been authenticated and may therefore be able to infer your identity. However, your operating
+    system provider will not receive any further information about your use of the Corona-Warn-App.
+</p>
 <h1>
     7. How does the transnational warning system work?
 </h1>
@@ -657,9 +828,23 @@
     b. Data on server systems
 </h2>
 <p>
-    Positive lists are deleted from all server systems (including the exchange
-    server) after 14 days. All other data will be deleted after 21 days at the
-    latest.
+    Positive lists are deleted from all server systems (including the exchange server) after 14
+    days. All other data, with the exception of data transmitted by the data sharing feature and to
+    confirm the authenticity of your app, will be deleted after 21 days at the latest.
+</p>
+<h2>
+    c. Share Data
+</h2>
+<p>
+    Usage data and other voluntary information transmitted to the RKI by the data sharing feature
+    will be deleted after 180 days.
+</p>
+<h2>
+    d. Confirmation of the authenticity of your app
+</h2>
+<p>
+    The identifier generated by your smartphone to confirm the authenticity of your app will be
+    deleted from the server system after 30 days after transmission to the RKI.
 </p>
 <h1>
     10. Who will receive your data?
@@ -702,11 +887,25 @@
 <p>
     If you activate the warning feature, please note that users can retrieve
     the latest positive lists regardless of where they are (even if they are
-    abroad on holiday or on a business trip, for example). Otherwise, the data
-    transmitted by the app is processed exclusively on servers in Germany or in
-    another country in the EU (or the European Economic Area), which are
-    therefore subject to the strict requirements of the General Data Protection
-    Regulation (GDPR).
+    abroad on holiday or on a business trip, for example).
+</p>
+<p>
+    In addition, the confirmation of the authenticity of your app may involve the transfer of data
+    to a country outside the EU. The identifier generated by your smartphone, which contains
+    information about the version of your smartphone and the app, will be transmitted to the
+    provider of your smartphone’s operating system (Apple or Google). This may result in data being
+    transferred to third countries, in particular the US. There, the level of data protection may
+    not be considered equivalent under European law and it may not be possible to enforce your
+    European data protection rights. In particular, there is a possibility that once the transmitted
+    data reaches the operating system provider, it may be accessed and analysed by security
+    authorities in the third country, for example by linking the data with other information.
+    However, this only concerns the submitted identifier. It does not concern other information from
+    the app, such as exposure data.
+</p>
+<p>
+    Otherwise, the data transmitted by the app is processed exclusively on servers in Germany or in
+    another country in the EU (or the European Economic Area), which are therefore subject to the
+    strict requirements of the General Data Protection Regulation (GDPR).
 </p>
 <h1>
     12. How can you withdraw your consent?
@@ -770,6 +969,32 @@
     smartphone’s system settings. Please also note the information in Section 5
     b.
 </p>
+<h2>
+    d. Consent to “share data”
+</h2>
+<p>
+    You can withdraw your consent to the data sharing feature at any time by disabling the data
+    donation feature in the app’s settings. The app will then no longer transmit your usage data and
+    other voluntary information to the RKI on a daily basis. If you would like to allow data
+    donation again, you can re-enable the feature in the settings.
+</p>
+<h2>
+    e. Consent to “survey participation”
+</h2>
+<p>
+    You do not give your consent to participate in an RKI survey in the app, but via the website on
+    which the survey is conducted. There you will also find information about how you can withdraw
+    your consent.
+</p>
+<h2>
+    f. Consent to “confirmation of the authenticity of your app”
+</h2>
+<p>
+    If you withdraw your consent to the confirmation of your app’s authenticity, this will not
+    directly affect the related data processing. The transmission of the identifier generated by
+    your smartphone to the operating system provider, and the verification and confirmation of the
+    authenticity of your app, take place immediately after you have given your consent.
+</p>
 <h1>
     13. What other rights do you have under data protection law?
 </h1>
@@ -783,8 +1008,8 @@
     </li>
     <li>
         the right to contact the official
-        RKI data protection officer
-        (https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html)
+        <a href="https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html">
+            RKI data protection officer</a>
         and raise your concerns (Art. 38(4) GDPR) and
     </li>
     <li>
@@ -824,5 +1049,5 @@
     13353 Berlin, or by emailing datenschutz@rki.de.
 </p>
 <p>
-    Last amended: 10 February 2021
+    Last amended: 01 March 2021
 </p>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/assets/privacy_tr.html b/Corona-Warn-App/src/main/assets/privacy_tr.html
index decbb94a2b97a92c02c08f7eb0c868e90676e473..31ca70cf54ecdba84986828ae501ae4a07808ff6 100644
--- a/Corona-Warn-App/src/main/assets/privacy_tr.html
+++ b/Corona-Warn-App/src/main/assets/privacy_tr.html
@@ -112,11 +112,16 @@
 </h1>
 <p>
     Uygulamanın tüm sistemi, mümkün olduğunca az kişisel verileri işleyecek
-    şekilde programlanmıştır. Bu demektir ki sistem, risk değerlendirmesi, diğer kişilerin uyarılması ve test sonucunun alınması için, RKI’nin veya diğer
+    şekilde programlanmıştır. Bu demektir ki sistem, risk değerlendirmesi, diğer kişilerin
+    uyarılması ve test sonucunun alınması için, RKI’nin veya diğer
     kullanıcıların sizin kimliğinizi, adınızı, konumunuzu veya diğer kişisel
     bilgilerinizi öğrenmesine olanak tanıyan verileri toplamamaktadır.
-    Dolayısıyla Uygulama, analiz araçları üzerinden kullanıcı davranışınızın
-    herhangi bir deÄŸerlendirmesini yapmaz.
+</p>
+<p>
+    Dolayısıyla Uygulama esas itibariyle, analiz araçları üzerinden kullanıcı davranışınızın
+    herhangi bir değerlendirmesini yapmaz. Sadece isteğe bağlı veri bağışına açıkça onay vermeniz
+    durumunda, Uygulama kullanımınıza ilişkin belirli veriler, RKI’ye aktarılacaktır (bkz. Madde 5
+    e.).
 </p>
 <p>
     Uygulama tarafından işlenen veriler aşağıdaki kategorilerde
@@ -176,7 +181,7 @@
 </p>
 <ul>
     <li>
-        Rastgele kimlik kodları (bundan böyle: <strong> rastgele kimlik numaraları</strong>)
+        Rastgele kimlik kodları (bundan böyle: <strong>rastgele kimlik numaraları</strong>)
     </li>
     <li>
         Bluetooth protokol sürümü
@@ -272,6 +277,104 @@
 Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas güncesine nasıl kaydedileceğine siz karar verirsiniz. Bu açıdan veri girişlerinizden de siz sorumlusunuz. Dolayısıyla temas güncesine eklediğiniz kişilerin mahremiyetine lütfen saygı gösterin. Bu bilgiler, üçüncü taraflara aktarılmamalı ve güvenli olmayan iletişim kanalları üzerinden aktarımı yapılmamalıdır. Yetkili sağlık kurumu, temas bağlantılarınızı takip etmek isterse, sizden hangi bilgilere gerek duyduğunu ve sizin bunları nasıl sağlayacağınızı size söyleyecektir.
 <p>
 </p>
+<h2>
+    e. Veri bağışı
+</h2>
+<p>
+    Veri bağışı işlevini etkinleştirdiğinizde Uygulama, Uygulama kullanımınıza ilişkin çeşitli
+    verileri günde bir kez RKI’ye aktarır (bundan böyle: Kullanım verileri). Bu kullanım verileri,
+    görüntülenen riskli karşılaşmalar ve uyarılar, size gönderilen test sonuçları, diğer
+    kullanıcıları uyarıp uyarmadığınız ve akıllı telefonunuzun işletim sistemine ilişkin verilerdir.
+    Ayrıntılı olarak bunlar:
+</p>
+<ul>
+    <li>Veri aktarımının tarihi.</li>
+    <li>Uyarı geçmişindeki önceki güne göre değişiklikler.</li>
+    <li>Veri aktarımı sırasında size görüntülenen risklere ilişkin bilgiler.</li>
+    <li>Bir karşılaşmada risk durumunun hesaplama temeline ilişkin bilgiler.</li>
+</ul>
+<p>
+    Uygulama üzerinden test sonucunuzu aldıysanız:
+</p>
+<ul>
+    <li>Uygulama üzerinden pozitif veya negatif bir test sonucu alıp almadığınıza ilişkin
+        bilgiler.
+    </li>
+    <li>Test kaydı sırasında hesaplanan risk hakkında bilgiler.</li>
+    <li>En son yüksek riskli karşılaşma ile test kaydı arasındaki süreye ilişkin bilgiler.</li>
+    <li>En son yüksek risk bildirimi ile test kaydı arasındaki süreye ilişkin bilgiler.</li>
+    <li>Test sonucunuzu paylaşıp paylaşmadığınız ve başkalarını uyarıp uyarmadığınız hakkında
+        bilgiler.
+    </li>
+</ul>
+<p>
+    Başkalarını olası bir riskle karşılaşma konusunda uyardıysanız:
+</p>
+<ul>
+    <li>Başkalarını uyarma adımlarını iptal edip etmediğiniz hakkında bilgiler.</li>
+    <li>Semptomların başlangıcına ilişkin bildirimde bulunmanıza ilişkin bilgiler.</li>
+    <li>Başkalarını uyarmak için ne zaman rıza göstermenize ilişkin bilgiler.</li>
+    <li>Başkalarını uyarma kapsamında hangi mesaja kadar geldiğinize dair bilgiler.</li>
+    <li>Test sonucunuza erişiminizin kaç saat sürdüğüne ilişkin bilgiler.</li>
+    <li>En son yüksek risk bildiriminden bu yana geçen gün sayısına ilişkin bilgiler.</li>
+    <li>Test kaydından sonra geçen saat sayısına ilişkin bilgiler.</li>
+</ul>
+<p>
+    DiÄŸer veriler:
+</p>
+<ul>
+    <li>Akıllı telefonunuzun modeli ve sürümü ile Uygulamanızın sürümü ve kullanılan işletim
+        sistemine iliÅŸkin bilgiler.
+    </li>
+</ul>
+<p>
+    Ayrıca kullanım verileriyle birlikte RKI’ye aktarılmak üzere bölgeniz ve yaş grubunuza ilişkin
+    diğer isteğe bağlı verileri de sağlayabilirsiniz.
+</p>
+<p>
+    RKI, Uygulamanın etki gücünü ve işlevselliğini değerlendirmek ve pandemi hakkında yeni
+    çıkarımlar elde etmek için, kullanım verilerini diğer veriler ile birleştirecek ve istatistikler
+    olarak deÄŸerlendirecektir.
+</p>
+<p>
+    Veri bağışının kullanılması isteğe bağlıdır. Veri bağışının etkinleştirilmesine ve kullanım
+    verilerinin diğer isteğe bağlı veriler ile birlikte RKI’ye aktarılmasına, siz kendiniz karar
+    verirsiniz. Veri bağışının etkinleştirilmesi, Uygulamanızın orijinalliğinin doğrulanmasını
+    gerektirir (bu konuyla ilgili daha fazla bilgi için bkz. Madde 5 g. ve 11.).
+</p>
+<h2>
+    f. Ankete katılım
+</h2>
+<p>
+    Uygulamada bazı kullanıcılara bir RKI anketine katılma olanağı verilir. Ankete katılma teklifi
+    genelde, Uygulamada kaydedilen belirli bazı olaylara (örneğin yüksek risk görüntülenmesi) bağlı
+    olarak sunulur. Ankete katılarak, RKI’nin Uygulamanın etki gücünü değerlendirmesine, Uygulamayı
+    iyileştirmesine ve örneğin Uygulama üzerinden gönderilen uyarıların enfeksiyonu önlemeye katkı
+    verip vermediklerini ve nasıl verdiklerini anlamasına yardımcı olursunuz.
+</p>
+<p>
+    Ankete katılım isteğe bağlıdır. Bir ankete katılmaya ve kullanım verilerinin RKI’ye
+    aktarılmasına, siz kendiniz karar verirsiniz. Bu anketler, yönlendirileceğiniz Uygulama
+    dışındaki bir web sitesinde gerçekleştirilir. Ankete katılım, Uygulamanızın orijinalliğinin
+    doğrulanmasını gerektirir (bu konuyla ilgili daha fazla bilgi için bkz. Madde 5 g. ve 11.).
+</p>
+<h2>
+    g. Uygulamanızın orijinalliğinin doğrulanması
+</h2>
+<p>
+    Uygulamadaki bazı işlevler, Uygulamanızın orijinalliğinin önceden kontrol edilmesini ve RKI için
+    onaylanmasını gerektirir. Bunun için akıllı telefonunuzun işletim sisteminin bir işlevinden
+    yararlanılır. Bu bağlamda akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluşturulur ve
+    bunu işletim sisteminizin sağlayıcısına gönderir (bir Android akıllı telefon kullanıyorsanız, bu
+    veriler Google’a, iPhone kullanıyorsanız Apple’a aktarılır). Bu kimlik kodu, akıllı
+    telefonunuzun sürümü ve Uygulama hakkında veriler içerir. İşletim sisteminizin sağlayıcısı,
+    kimlik kodunuz üzerinden kim olduğunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik
+    kontrolünün yapıldığını anlayabilir. Uygulamadan karşılaşma verileri gibi başka bilgiler İşletim
+    sisteminizin sağlayıcısına gönderilmez. İşletim sisteminin sağlayıcısı, Uygulamanızın orijinal
+    olduğunu RKI’ye doğrulamak için bu kimlik kodunu kullanır. Orijinalliğinin doğrulanmasını
+    sağlayan bu işlevin kullanılması isteğe bağlıdır. Ancak Uygulamanızın orijinalliğinin
+    doğrulanmasını kabul etmezseniz, Uygulamanın başka bazı işlevleri sizin için sunulmayabilir.
+</p>
 <h1>
     6. Verileriniz niçin işleniyor?
 </h1>
@@ -493,6 +596,67 @@ Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas g
     davranışlarını bu duruma ayarlayabilir ve böylece kendi çevrelerinde henüz saptanmamış olası
     enfeksiyonların önüne geçebilir.
 </p>
+<h2>
+    f. Veri bağışı
+</h2>
+<p>
+    Veri bağışı, Uygulamanın ek bir işlevidir. Veri bağışı kapsamında RKI’ye aktarılan kullanım
+    verileri ve diğer isteğe bağlı veriler, Uygulamanın etki gücünü ölçmek ve aşağıda sıralanan
+    iyileştirmeleri sağlamak üzere değerlendirmeler yapmak üzere kullanılır:
+</p>
+<ul>
+    <li>
+        Risk değerlendirmesinin iyileştirilmesi - Enfeksiyon riskinin teknik hesaplamasının
+        doğruluğu ve güvenilirliğinin iyileştirilmesi hedeflenir. Bunun için riskli karşılaşmalarla
+        ilgili veriler ve size görüntülenen uyarılar değerlendirilir. Buna dayanarak hesaplama
+        yöntemi iyileştirilebilmektedir.
+    </li>
+    <li>
+        Uygulamadaki kullanıcı kılavuzluğunun iyileştirilmesi - Uygulama kullanımının daha kolay
+        olması hedeflenir. Bu bağlamda kullanıcıların Uygulamadaki bireysel adımlarına ilişkin
+        veriler değerlendirilir. Bu sayede etiketlemeler ve uyarı notları daha anlaşılır hale
+        getirilebilir ve kumanda elemanları daha kolay bulunabilecek şekilde konumlandırılabilir.
+        Ayrıca Uygulama gösterimlerinin, farklı akıllı telefon modellerine uyarlanması mümkün olur.
+    </li>
+    <li>
+        Uygulamaya ilişkin bilgilendirme ve yardımın sağlanması - Testlerin yapıldığı belirli
+        tesisler ve laboratuvarlarla bağlantılı olarak veya belirli coğrafi bölgelerde Uygulamanın
+        kullanımıyla ilgili olası sorunların varlığını saptamak hedeflenir. Böylece veri bağışı
+        nedeniyle örneğin, test sonuçlarının belirli coğrafi bölgelerde geç elde edileceğinin
+        farkına varılabilmektedir. Bu sayede sorumlu sağlık kurumu yetkilileri de olası teknik
+        arızalar hakkında bilgilendirilebilmektedir.
+    </li>
+    <li>
+        Pandemi seyrine iliÅŸkin istatistiklerin iyileÅŸtirilmesi - Bu veriler, pandeminin seyrine
+        ilişkin belirli olayların zaman ve mekan açılarından dağılımı ile ilgili bilgi verebilir ve
+        belli bazı olayların gelişmesine daha hızlı tepki verilmesini sağlayabilir.
+    </li>
+</ul>
+<p>
+    Kullanım verileri ve diğer isteğe bağlı veriler, adınız veya kimliğinizle herhangi bir bağlantı
+    olmaksızın saklanır ve değerlendirilir. RKI, kim olduğunuzu veya kiminle karşılaştığınızı
+    öğrenmez.
+</p>
+<h2>
+    g. Anketler
+</h2>
+<p>
+    Anketler, Uygulama dışında yönlendirileceğiniz bir web sitesinde gerçekleştirilir. Uygulama,
+    anketlerle bağlantılı olarak RKI’ye veri aktarımı sağlamaz. RKI tarafından yürütülen anketlerin
+    amaçları, anket web sitesinde anketteki bilgilerde yer almaktadır.
+</p>
+<h2>
+    h. Uygulamanızın orijinalliğinin doğrulanması
+</h2>
+<p>
+    Uygulamanızın orijinalliğinin doğrulanması için akıllı telefonunuzun işletim sisteminin bir
+    işlevi kullanılır. Bu sayede sadece uygulaması düzgün çalışan Uygulama kullanıcılarının veri
+    bağışına veya anketlere katılması mümkün kılınır. Böylece istatistiklerin ve anket sonuçlarının
+    tahrif edilmesinin önüne geçilir. Lütfen işletim sisteminizin sağlayıcısının muhtemelen akıllı
+    telefonunuzun orijinallik kontrolünün yapıldığını anlayabileceğini ve bu nedenle kimliğinizi
+    ortaya çıkarabileceğini unutmayın. Ancak, işletim sisteminizin sağlayıcısı Corona-Warn-App
+    kullanımınız hakkında daha fazla bilgi almaz.
+</p>
 <h1>
     7. Sınır ötesi uyarı sistemi nasıl çalışır?
 </h1>
@@ -653,7 +817,9 @@ Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas g
     için Uygulamada hesaplanan enfeksiyon riski (örn. “düşük risk”), her
     güncellemeden sonra, ancak en geç 14 gün sonra Uygulama belleğinden
     silinir. Çağırdığınız Korona testi pozitif ise ve siz bir uyarı
-    tetikledikten hemen sonra belirteç, Uygulama belleğinden silinir. Temas güncesindeki veriler akıllı telefonunuzda 16 gün boyunca saklanır ve ardından otomatik olarak silinir. Ancak bu verileri istediğiniz zaman, daha erken de silebilirsiniz.
+    tetikledikten hemen sonra belirteç, Uygulama belleğinden silinir. Temas güncesindeki veriler
+    akıllı telefonunuzda 16 gün boyunca saklanır ve ardından otomatik olarak silinir. Ancak bu
+    verileri istediÄŸiniz zaman, daha erken de silebilirsiniz.
 </p>
 <h2>
     b. Sunucu sistemlerindeki veriler
@@ -662,6 +828,19 @@ Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas g
     Pozitif listeler, 14 gün sonra tüm sunucu sistemlerinden (değişim
     sunucuları dahil) silinir. Diğer tüm veriler en geç 21 gün sonra silinir.
 </p>
+<h2>
+    c. Veri bağışı
+</h2>
+<p>
+    Veri bağışı kapsamında RKI’ye aktarılan kullanım verileri ve diğer isteğe bağlı veriler 180 gün
+    sonra silinir.</p>
+<h2>
+    d. Uygulamanızın orijinalliğinin doğrulanması
+</h2>
+<p>
+    Uygulamanızın orijinalliğini doğrulamak için akıllı telefonunuzun oluşturduğu kimlik kodları,
+    RKI’ye gönderildikten 30 gün sonra sunucu sistemlerinden silinir.
+</p>
 <h1>
     10. Verileriniz kime aktarılır?
 </h1>
@@ -700,8 +879,21 @@ Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas g
 </h1>
 <p>
     Bir uyarı tetiklediğinizde, güncel pozitif listeler kullanıcının konumundan
-    bağımsız olarak (örneğin tatilde veya iş gezisinde) çağrılır. Ancak
-    Uygulama tarafından aktarılan veriler, sadece Almanya’daki sunucularda veya
+    bağımsız olarak (örneğin tatilde veya iş gezisinde) çağrılır.
+</p>
+<p>
+    Ayrıca, Uygulamanızın orijinalliğinin doğrulanması kapsamında verilerin AB dışındaki bir ülkeye
+    aktarılması söz konusu olabilir. Akıllı telefonunuz tarafından oluşturulan ve akıllı
+    telefonunuzun ve Uygulamanın sürümüyle ilgili bilgileri içeren kimlik kodu, akıllı telefonunuzun
+    işletim sisteminin sağlayıcısına (Apple veya Google) aktarılır. Bu süreçte verilerin üçüncü bir
+    ülkeye, özellikle ABD’ye aktarılması da söz konusu olabilir. Orada Avrupa hukukuna karşılık
+    gelen kişisel verilerin koruma seviyesi bulunmayabilir ve Avrupa’daki veri koruma haklarınız
+    uygulanmayabilir. Bu bağlamda özellikle güvenlik makamlarının işletim sistemi sağlayıcısına
+    aktarılan bu verilere erişme ve örneğin verileri diğer bilgilerle ilişkilendirerek bunları
+    değerlendirmeye alma olasılığı bulunmaktadır. Ancak bu, yalnızca aktarılan kimlik kodlarını
+    etkiler. Karşılaşma verileri gibi Uygulamadaki diğer veriler bu prosedüre dahil edilmez.
+</p>
+<p> Ancak Uygulama tarafından aktarılan veriler, sadece Almanya’daki sunucularda veya
     bir diğer AB (veya Avrupa Ekonomik Alanı) ülkesindeki sunucularda işlenir,
     dolayısıyla Genel Veri Koruma Tüzüğünün (GVKT) katı gerekliliklerine tabi
     kalır.
@@ -770,6 +962,32 @@ Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas g
     ayarlarında manuel olarak gerçekleştirmelisiniz. Bunun için Madde 5 b
     altındaki bilgileri de dikkate alın.
 </p>
+<h2>
+    d. “Veri bağışı” rıza beyanı
+</h2>
+<p>
+    Uygulamanın ayarlarından “Verileri bağışla” seçeneğini devre dışı bırakarak, istediğiniz zaman
+    vermiş olduğunuz rızayı geri alabilirsiniz. Bunun ardından Uygulama, artık kullanım verilerinizi
+    ve diğer isteğe bağlı verileri günlük olarak RKI’ye aktarmayacaktır. Daha sonra veri bağışına
+    yeniden izin vermek isterseniz, ilgili iÅŸlevi ayarlardan yeniden etkinleÅŸtirebilirsiniz.
+</p>
+<h2>
+    e. “Anket” rıza beyanı
+</h2>
+<p>
+    Bir RKI anketine katılmak için gereken rızanızı, Uygulamada değil, anketin gerçekleştirildiği
+    web sitesi üzerinden verirsiniz. Orada, verdiğiniz rızayı nasıl geri alabileceğinize ilişkin bir
+    açıklama da bulunmaktadır.
+</p>
+<h2>
+    f. “Uygulamanızın orijinalliğinin doğrulanması” rıza beyanı
+</h2>
+<p>
+    Uygulamanızın orijinalliğinin doğrulanması için verdiğiniz rızayı geri alırsanız, bunun ilgili
+    veri işleme üzerinde doğrudan herhangi bir etkisi yoktur. Siz bu rızanızı verdikten hemen sonra,
+    akıllı telefonunuz tarafından oluşturulan kimlik kodu, işletim sisteminizin sağlayıcısına
+    aktarılır ve Uygulamanızın orijinalliğinin doğrulanması ve onaylanması orada gerçekleşir.
+</p>
 <h1>
     13. Başka hangi veri koruma haklarına sahipsiniz?
 </h1>
@@ -824,5 +1042,5 @@ Temas güncesinin kullanılması isteğe bağlıdır. Veri girişlerinin temas g
     veya e-posta yoluyla: datenschutz@rki.de.
 </p>
 <p>
-    Baskı 16.12.2020
+    Baskı 01.03.2021
 </p>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
index dfeb33aaaccdd8d04385e1e8dcf3f9c73c4ef2a5..f797cf5b89cd738c7f47d106b854ef1f2ec08064 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
@@ -15,6 +15,7 @@ import de.rki.coronawarnapp.appconfig.ConfigChangeDetector
 import de.rki.coronawarnapp.appconfig.devicetime.DeviceTimeHandler
 import de.rki.coronawarnapp.bugreporting.loghistory.LogHistoryTree
 import de.rki.coronawarnapp.contactdiary.retention.ContactDiaryWorkScheduler
+import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsScheduler
 import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler
 import de.rki.coronawarnapp.exception.reporting.ErrorReportReceiver
 import de.rki.coronawarnapp.exception.reporting.ReportingConstants.ERROR_REPORT_LOCAL_BROADCAST_CHANNEL
@@ -52,6 +53,7 @@ class CoronaWarnApplication : Application(), HasAndroidInjector {
     @Inject lateinit var riskLevelChangeDetector: RiskLevelChangeDetector
     @Inject lateinit var deadmanNotificationScheduler: DeadmanNotificationScheduler
     @Inject lateinit var contactDiaryWorkScheduler: ContactDiaryWorkScheduler
+    @Inject lateinit var dataDonationAnalyticsScheduler: DataDonationAnalyticsScheduler
     @Inject lateinit var notificationHelper: NotificationHelper
     @Inject lateinit var deviceTimeHandler: DeviceTimeHandler
     @Inject lateinit var autoSubmission: AutoSubmission
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AnalyticsConfig.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AnalyticsConfig.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8f361bcc04cd92e512325d0a3eb456233c478461
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AnalyticsConfig.kt
@@ -0,0 +1,15 @@
+package de.rki.coronawarnapp.appconfig
+
+import de.rki.coronawarnapp.appconfig.mapping.ConfigMapper
+
+interface AnalyticsConfig {
+
+    val safetyNetRequirements: SafetyNetRequirements
+    val probabilityToSubmit: Double
+    val hoursSinceTestRegistrationToSubmitTestResultMetadata: Int
+    val hoursSinceTestResultToSubmitKeySubmissionMetadata: Int
+    val probabilityToSubmitNewExposureWindows: Double
+    val analyticsEnabled: Boolean
+
+    interface Mapper : ConfigMapper<AnalyticsConfig>
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt
index 9c23d3ea7c853e67050bf241d1ee45f36647e41a..75fe2040043c79c6bf15c8924f645f6b8bc96263 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.appconfig
 import dagger.Module
 import dagger.Provides
 import de.rki.coronawarnapp.appconfig.download.AppConfigApiV2
+import de.rki.coronawarnapp.appconfig.mapping.AnalyticsConfigMapper
 import de.rki.coronawarnapp.appconfig.mapping.CWAConfigMapper
 import de.rki.coronawarnapp.appconfig.mapping.ExposureDetectionConfigMapper
 import de.rki.coronawarnapp.appconfig.mapping.ExposureWindowRiskCalculationConfigMapper
@@ -68,6 +69,10 @@ class AppConfigModule {
     fun surveyMapper(mapper: SurveyConfigMapper):
         SurveyConfig.Mapper = mapper
 
+    @Provides
+    fun analyticsMapper(mapper: AnalyticsConfigMapper):
+        AnalyticsConfig.Mapper = mapper
+
     companion object {
         private val HTTP_TIMEOUT_APPCONFIG = Duration.standardSeconds(10)
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/internal/ApplicationConfigurationCorruptException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/internal/ApplicationConfigurationCorruptException.kt
index 65876d4f255a200d6f44235fcdd3a66ff1457144..7580d858dd51ec8e54f384c65321ac3b26be867d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/internal/ApplicationConfigurationCorruptException.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/internal/ApplicationConfigurationCorruptException.kt
@@ -4,5 +4,6 @@ import de.rki.coronawarnapp.exception.reporting.ErrorCodes
 import de.rki.coronawarnapp.exception.reporting.ReportedException
 
 class ApplicationConfigurationCorruptException : ReportedException(
-    ErrorCodes.APPLICATION_CONFIGURATION_CORRUPT.code, "the application configuration is corrupt"
+    ErrorCodes.APPLICATION_CONFIGURATION_CORRUPT.code,
+    "the application configuration is corrupt"
 )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/AnalyticsConfigMapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/AnalyticsConfigMapper.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cdc2e6970a4d33a17ab6641aad8744d14e3470bc
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/AnalyticsConfigMapper.kt
@@ -0,0 +1,70 @@
+package de.rki.coronawarnapp.appconfig.mapping
+
+import dagger.Reusable
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
+import de.rki.coronawarnapp.appconfig.SafetyNetRequirements
+import de.rki.coronawarnapp.appconfig.SafetyNetRequirementsContainer
+import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid
+import timber.log.Timber
+import javax.inject.Inject
+
+@Reusable
+class AnalyticsConfigMapper @Inject constructor() : AnalyticsConfig.Mapper {
+    override fun map(rawConfig: AppConfigAndroid.ApplicationConfigurationAndroid): AnalyticsConfig {
+        if (!rawConfig.hasPrivacyPreservingAnalyticsParameters() &&
+            !rawConfig.privacyPreservingAnalyticsParameters.hasCommon() &&
+            !rawConfig.privacyPreservingAnalyticsParameters.hasPpac()
+        ) {
+            Timber.e("Failed to parse AppConfig: Analytics parameters are missing, disabling analytics")
+            return AnalyticsConfigContainer(
+                safetyNetRequirements = SafetyNetRequirementsContainer(),
+                probabilityToSubmit = 0.0,
+                hoursSinceTestRegistrationToSubmitTestResultMetadata = 0,
+                hoursSinceTestResultToSubmitKeySubmissionMetadata = 0,
+                probabilityToSubmitNewExposureWindows = 0.0,
+                analyticsEnabled = false
+            )
+        }
+
+        return rawConfig.mapAnalyticsConfig()
+    }
+
+    private fun AppConfigAndroid.ApplicationConfigurationAndroid.mapSafetyNet(): SafetyNetRequirementsContainer =
+        this.privacyPreservingAnalyticsParameters.ppac.let {
+            SafetyNetRequirementsContainer(
+                requireBasicIntegrity = it
+                    .requireBasicIntegrity,
+                requireCTSProfileMatch = it
+                    .requireCTSProfileMatch,
+                requireEvaluationTypeBasic = it
+                    .requireEvaluationTypeBasic,
+                requireEvaluationTypeHardwareBacked = it
+                    .requireEvaluationTypeHardwareBacked
+            )
+        }
+
+    private fun AppConfigAndroid.ApplicationConfigurationAndroid.mapAnalyticsConfig(): AnalyticsConfigContainer =
+        this.privacyPreservingAnalyticsParameters.common.let {
+            AnalyticsConfigContainer(
+                safetyNetRequirements = this.mapSafetyNet(),
+                probabilityToSubmit = it
+                    .probabilityToSubmit,
+                hoursSinceTestResultToSubmitKeySubmissionMetadata = it
+                    .hoursSinceTestResultToSubmitKeySubmissionMetadata,
+                hoursSinceTestRegistrationToSubmitTestResultMetadata = it
+                    .hoursSinceTestRegistrationToSubmitTestResultMetadata,
+                probabilityToSubmitNewExposureWindows = it
+                    .probabilityToSubmitExposureWindows,
+                analyticsEnabled = true
+            )
+        }
+
+    data class AnalyticsConfigContainer(
+        override val safetyNetRequirements: SafetyNetRequirements,
+        override val probabilityToSubmit: Double,
+        override val hoursSinceTestRegistrationToSubmitTestResultMetadata: Int,
+        override val hoursSinceTestResultToSubmitKeySubmissionMetadata: Int,
+        override val probabilityToSubmitNewExposureWindows: Double,
+        override val analyticsEnabled: Boolean
+    ) : AnalyticsConfig
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt
index c04815b68ee6a89a2ec5ebe46de06d1c02e19686..a55c67fc24a41d1c6d884ce5298a325ce5ee02e5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt
@@ -1,5 +1,6 @@
 package de.rki.coronawarnapp.appconfig.mapping
 
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
 import de.rki.coronawarnapp.appconfig.CWAConfig
 import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig
 import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig
@@ -17,4 +18,6 @@ interface ConfigMapping :
     val rawConfig: AppConfigAndroid.ApplicationConfigurationAndroid
 
     val survey: SurveyConfig
+
+    val analytics: AnalyticsConfig
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt
index ebe1f67b98f45d33b2f0607e7081dfbd0c8ae48a..6c50b4cb724b4ef47b321eda5bdf788b3c186ff2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.appconfig.mapping
 
 import dagger.Reusable
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
 import de.rki.coronawarnapp.appconfig.CWAConfig
 import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig
 import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig
@@ -16,7 +17,8 @@ class ConfigParser @Inject constructor(
     private val keyDownloadConfigMapper: KeyDownloadConfig.Mapper,
     private val exposureDetectionConfigMapper: ExposureDetectionConfig.Mapper,
     private val exposureWindowRiskCalculationConfigMapper: ExposureWindowRiskCalculationConfig.Mapper,
-    private val surveyConfigMapper: SurveyConfig.Mapper
+    private val surveyConfigMapper: SurveyConfig.Mapper,
+    private val analyticsConfigMapper: AnalyticsConfig.Mapper
 ) {
 
     fun parse(configBytes: ByteArray): ConfigMapping = try {
@@ -27,7 +29,8 @@ class ConfigParser @Inject constructor(
                 keyDownloadConfig = keyDownloadConfigMapper.map(it),
                 exposureDetectionConfig = exposureDetectionConfigMapper.map(it),
                 exposureWindowRiskCalculationConfig = exposureWindowRiskCalculationConfigMapper.map(it),
-                survey = surveyConfigMapper.map(it)
+                survey = surveyConfigMapper.map(it),
+                analytics = analyticsConfigMapper.map(it)
             )
         }
     } catch (e: Exception) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt
index 9c3062f73743ebf05888796817302a12a3e6926b..f7063cbff7fd53434f584136dfbdf603b0524ae0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt
@@ -1,5 +1,6 @@
 package de.rki.coronawarnapp.appconfig.mapping
 
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
 import de.rki.coronawarnapp.appconfig.CWAConfig
 import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig
 import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig
@@ -13,7 +14,8 @@ data class DefaultConfigMapping(
     val keyDownloadConfig: KeyDownloadConfig,
     val exposureDetectionConfig: ExposureDetectionConfig,
     val exposureWindowRiskCalculationConfig: ExposureWindowRiskCalculationConfig,
-    override val survey: SurveyConfig
+    override val survey: SurveyConfig,
+    override val analytics: AnalyticsConfig
 ) : ConfigMapping,
     CWAConfig by cwaConfig,
     KeyDownloadConfig by keyDownloadConfig,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ExposureWindowRiskCalculationConfigMapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ExposureWindowRiskCalculationConfigMapper.kt
index 607c0d8d0ed2019165a2705693411f70c4ef9d7f..460187ecc5343703dde92e21bdb38ce35a2155fc 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ExposureWindowRiskCalculationConfigMapper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ExposureWindowRiskCalculationConfigMapper.kt
@@ -48,16 +48,16 @@ class ExposureWindowRiskCalculationConfigMapper @Inject constructor() :
 
     private fun AppConfigAndroid.ApplicationConfigurationAndroid.diagnosisKeysDataMapping():
         DiagnosisKeysDataMapping {
-        val diagnosisKeyDataMapping = this.diagnosisKeysDataMapping
-        return DiagnosisKeysDataMapping.DiagnosisKeysDataMappingBuilder()
-            .apply {
-                setDaysSinceOnsetToInfectiousness(diagnosisKeyDataMapping.daysSinceOnsetToInfectiousnessMap)
-                setInfectiousnessWhenDaysSinceOnsetMissing(
-                    diagnosisKeysDataMapping.infectiousnessWhenDaysSinceOnsetMissing
-                )
-                setReportTypeWhenMissing(diagnosisKeysDataMapping.reportTypeWhenMissing)
-            }.build()
-    }
+            val diagnosisKeyDataMapping = this.diagnosisKeysDataMapping
+            return DiagnosisKeysDataMapping.DiagnosisKeysDataMappingBuilder()
+                .apply {
+                    setDaysSinceOnsetToInfectiousness(diagnosisKeyDataMapping.daysSinceOnsetToInfectiousnessMap)
+                    setInfectiousnessWhenDaysSinceOnsetMissing(
+                        diagnosisKeysDataMapping.infectiousnessWhenDaysSinceOnsetMissing
+                    )
+                    setReportTypeWhenMissing(diagnosisKeysDataMapping.reportTypeWhenMissing)
+                }.build()
+        }
 
     data class ExposureWindowRiskCalculationContainer(
         override val minutesAtAttenuationFilters: List<RiskCalculationParametersOuterClass.MinutesAtAttenuationFilter>,
@@ -66,9 +66,9 @@ class ExposureWindowRiskCalculationConfigMapper @Inject constructor() :
         override val transmissionRiskLevelFilters: List<RiskCalculationParametersOuterClass.TrlFilter>,
         override val transmissionRiskLevelMultiplier: Double,
         override val normalizedTimePerExposureWindowToRiskLevelMapping:
-        List<RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping>,
+            List<RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping>,
         override val normalizedTimePerDayToRiskLevelMappingList:
-        List<RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping>,
+            List<RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping>,
         override val diagnosisKeysDataMapping: DiagnosisKeysDataMapping
     ) : ExposureWindowRiskCalculationConfig
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/SurveyConfigMapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/SurveyConfigMapper.kt
index 7108d3bd18f637192d926486e15238a47051e0f9..377e04df159120b8896ca791928569fffa3ab242 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/SurveyConfigMapper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/SurveyConfigMapper.kt
@@ -25,7 +25,8 @@ class SurveyConfigMapper @Inject constructor() : SurveyConfig.Mapper {
         val surveyConfig: SurveyConfig
         if (hasEventDrivenUserSurveyParameters() &&
             eventDrivenUserSurveyParameters.hasCommon() &&
-            eventDrivenUserSurveyParameters.hasPpac()) {
+            eventDrivenUserSurveyParameters.hasPpac()
+        ) {
             val safetyNetRequirements: SafetyNetRequirements
             eventDrivenUserSurveyParameters.ppac.also {
                 safetyNetRequirements = SafetyNetRequirementsContainer(
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServer.kt
index 334ef21022f31776a6356664464d08676e708971..39b3c2cb6430892edc358201736f2e93882cd47f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServer.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServer.kt
@@ -66,8 +66,8 @@ class AppConfigServer @Inject constructor(
 
         val serverTime = response.getServerDate() ?: localTime
         val offset = if (CWADebug.isDeviceForTestersBuild && testSettings.fakeCorrectDeviceTime.value) {
-            Timber.tag(TAG).w("Test setting 'fakeCorrectDeviceTime' is active; time offset is now +90min.")
-            Duration.standardMinutes(90)
+            Timber.tag(TAG).w("Test setting 'fakeCorrectDeviceTime' is active; time offset is now 0")
+            Duration.ZERO
         } else {
             Duration(serverTime, localTime)
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt
index 31913f27d014b3340462b4271e205d07c03b9c90..a831191bb91c4857d39f7876770c8e26219bb3b6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt
@@ -9,7 +9,7 @@ interface BugReporter {
 }
 
 fun Throwable.reportProblem(tag: String? = null, info: String? = null) {
-    Timber.tag("BugReporter").v(this, "report(tag=$tag, info=$info)")
+    Timber.tag(tag ?: "BugReporter").e(this, info)
 
     if (CWADebug.isAUnitTest) return
     val reporter = AppInjector.component.bugReporter
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkBuilder.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkBuilder.kt
index a1d220c9bb0c566114177786d676bdfe86544c01..1e9d39d00711e0fa544d79b7f366f448424046bc 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkBuilder.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkBuilder.kt
@@ -12,7 +12,8 @@ import javax.inject.Inject
 class ContactDiaryWorkBuilder @Inject constructor() {
 
     fun buildPeriodicWork(): PeriodicWorkRequest = PeriodicWorkRequestBuilder<ContactDiaryRetentionWorker>(
-        DateTimeConstants.HOURS_PER_DAY.toLong(), TimeUnit.HOURS
+        DateTimeConstants.HOURS_PER_DAY.toLong(),
+        TimeUnit.HOURS
     )
         .setInitialDelay(
             BackgroundConstants.KIND_DELAY,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkScheduler.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkScheduler.kt
index d989e8146ceca7b951e43f8b005ad9c3a20e1108..15bbc81bdc3ca0ba7302bdecb7440d01772035d9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkScheduler.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryWorkScheduler.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.contactdiary.retention
 import androidx.work.ExistingPeriodicWorkPolicy
 import androidx.work.WorkManager
 import dagger.Reusable
+import timber.log.Timber
 import javax.inject.Inject
 
 @Reusable
@@ -16,6 +17,7 @@ class ContactDiaryWorkScheduler @Inject constructor(
      * Replace with new if older work exists.
      */
     fun schedulePeriodic() {
+        Timber.d("ContactDiaryWorkScheduler schedulePeriodic()")
         // Create unique work and enqueue
         workManager.enqueueUniquePeriodicWork(
             PERIODIC_WORK_NAME,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEncounterWrapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEncounterWrapper.kt
index 8478183523726e43c48045f4e074ca58fb34c4bf..5d34506b2b1f552bcc1778ac742ff68c2a5f1cc3 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEncounterWrapper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEncounterWrapper.kt
@@ -25,5 +25,5 @@ fun ContactDiaryPersonEncounterWrapper.toContactDiaryPersonEncounter(): ContactD
 
 fun List<ContactDiaryPersonEncounterWrapper>.toContactDiaryPersonEncounterSortedList():
     List<ContactDiaryPersonEncounter> =
-    this.map { it.toContactDiaryPersonEncounter() }
-        .sortByNameAndIdASC()
+        this.map { it.toContactDiaryPersonEncounter() }
+            .sortByNameAndIdASC()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayFragment.kt
index 95149de840f9c84c64cee2f33e5d10daae376f8f..56bc855e2d76bb55ae29113cd674629a019fcfa6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayFragment.kt
@@ -50,7 +50,8 @@ class ContactDiaryDayFragment : Fragment(R.layout.contact_diary_day_fragment), A
 
         binding.apply {
             contactDiaryDayViewPager.registerOnPageChangeCallback {
-                binding.contactDiaryDayFab.setText(adapter.tabs[it].fabTextResource)
+                binding.contactDiaryDayFab.text = getString(adapter.tabs[it].fabTextResource)
+                binding.contactDiaryDayFab.contentDescription = getString(adapter.tabs[it].fabTextResourceAccessibility)
             }
 
             contactDiaryDayFab.setOnClickListener {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt
index 6f66ccfe8bda3ae5f6b9dc7fc5c5c551f5ed4e38..530d026fd3ba426a917600d2b8688e7b82001a33 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt
@@ -29,16 +29,19 @@ class ContactDiaryDayViewModel @AssistedInject constructor(
     val uiState = displayedDay.map { day ->
         UIState(
             dayText = { day.toFormattedDay(it.getLocale()) },
-            dayTextContentDescription = { day.toFormattedDayForAccessibility(it.getLocale()) +
-                it.getString(R.string.accessibility_day_view_header) })
+            dayTextContentDescription = {
+                day.toFormattedDayForAccessibility(it.getLocale()) +
+                    it.getString(R.string.accessibility_day_view_header)
+            }
+        )
     }.asLiveData()
 
     fun onCreateButtonClicked(activeTab: ContactDiaryDayTab) {
         when (activeTab) {
-            ContactDiaryDayTab.LocationTab -> routeToScreen
-                .postValue(ContactDiaryDayNavigationEvents.NavigateToAddLocationFragment)
-            ContactDiaryDayTab.PersonTab -> routeToScreen
-                .postValue(ContactDiaryDayNavigationEvents.NavigateToAddPersonFragment)
+            ContactDiaryDayTab.LocationTab ->
+                routeToScreen.postValue(ContactDiaryDayNavigationEvents.NavigateToAddLocationFragment)
+            ContactDiaryDayTab.PersonTab ->
+                routeToScreen.postValue(ContactDiaryDayNavigationEvents.NavigateToAddPersonFragment)
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/ContactDiaryDayTab.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/ContactDiaryDayTab.kt
index 59c65922a385c40e034ce97821f78f2bd47e5f03..d55b5343b02d8e8a0463e64cf628081fd071fb61 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/ContactDiaryDayTab.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/ContactDiaryDayTab.kt
@@ -10,11 +10,13 @@ import de.rki.coronawarnapp.contactdiary.ui.day.tabs.person.ContactDiaryPersonLi
 sealed class ContactDiaryDayTab(
     val tabNameResource: Int,
     val fabTextResource: Int,
+    val fabTextResourceAccessibility: Int,
     val fragmentInstantiation: (day: String) -> Fragment
 ) {
     object PersonTab : ContactDiaryDayTab(
         R.string.contact_diary_day_person_tab_title,
         R.string.contact_diary_day_person_fab_title,
+        R.string.accessibility_day_add_person,
         { day ->
             ContactDiaryPersonListFragment().apply {
                 // Feels kind of hacky but i like the free typesafety for the args
@@ -26,6 +28,7 @@ sealed class ContactDiaryDayTab(
     object LocationTab : ContactDiaryDayTab(
         R.string.contact_diary_day_location_tab_title,
         R.string.contact_diary_day_location_fab_title,
+        R.string.accessibility_day_add_location,
         { day ->
             ContactDiaryLocationListFragment().apply {
                 // Feels kind of hacky but i like the free typesafety for the args
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/LocationEditAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/LocationEditAdapter.kt
index 54b560ab31cd084c2d3fe6208f30a1651de540c1..c50e5efb404593c2972ce034e77281b1a8ad26fa 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/LocationEditAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/LocationEditAdapter.kt
@@ -20,21 +20,22 @@ internal class LocationEditAdapter(
     override fun onBindBaseVH(holder: ViewHolder, position: Int, payloads: MutableList<Any>) =
         holder.bind(data[position], payloads)
 
-    inner class ViewHolder(parent: ViewGroup) : BaseAdapter.VH(R.layout.contact_diary_edit_list_item, parent),
+    inner class ViewHolder(parent: ViewGroup) :
+        BaseAdapter.VH(R.layout.contact_diary_edit_list_item, parent),
         BindableVH<ContactDiaryLocation, ContactDiaryEditListItemBinding> {
         override val viewBinding:
             Lazy<ContactDiaryEditListItemBinding> =
-            lazy { ContactDiaryEditListItemBinding.bind(itemView) }
+                lazy { ContactDiaryEditListItemBinding.bind(itemView) }
 
         override val onBindData:
             ContactDiaryEditListItemBinding.(item: ContactDiaryLocation, payloads: List<Any>) -> Unit =
-            { location, _ ->
-                name.text = location.locationName
-                itemContainer.apply {
-                    setOnClickListener { onItemClicked(location) }
-                    contentDescription = getContentDescriptionString(location)
-                    setClickLabel(clickLabelString)
+                { location, _ ->
+                    name.text = location.locationName
+                    itemContainer.apply {
+                        setOnClickListener { onItemClicked(location) }
+                        contentDescription = getContentDescriptionString(location)
+                        setClickLabel(clickLabelString)
+                    }
                 }
-            }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/PersonEditAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/PersonEditAdapter.kt
index c241ecef2fb03586ec4d16a135d9e58f30aa3c18..f859735bd5efc5c04479dc780ef172c02e5644c5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/PersonEditAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/edit/adapter/PersonEditAdapter.kt
@@ -20,21 +20,22 @@ internal class PersonEditAdapter(
     override fun onBindBaseVH(holder: ViewHolder, position: Int, payloads: MutableList<Any>) =
         holder.bind(data[position], payloads)
 
-    inner class ViewHolder(parent: ViewGroup) : BaseAdapter.VH(R.layout.contact_diary_edit_list_item, parent),
+    inner class ViewHolder(parent: ViewGroup) :
+        BaseAdapter.VH(R.layout.contact_diary_edit_list_item, parent),
         BindableVH<ContactDiaryPerson, ContactDiaryEditListItemBinding> {
         override val viewBinding:
             Lazy<ContactDiaryEditListItemBinding> =
-            lazy { ContactDiaryEditListItemBinding.bind(itemView) }
+                lazy { ContactDiaryEditListItemBinding.bind(itemView) }
 
         override val onBindData:
             ContactDiaryEditListItemBinding.(item: ContactDiaryPerson, payloads: List<Any>) -> Unit =
-            { person, _ ->
-                name.text = person.fullName
-                itemContainer.apply {
-                    setOnClickListener { onItemClicked(person) }
-                    contentDescription = getContentDescriptionString(person)
-                    setClickLabel(clickLabelString)
+                { person, _ ->
+                    name.text = person.fullName
+                    itemContainer.apply {
+                        setOnClickListener { onItemClicked(person) }
+                        contentDescription = getContentDescriptionString(person)
+                        setClickLabel(clickLabelString)
+                    }
                 }
-            }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt
index e01721dc3e30acb05c08c3cf52134c0eb6ffd92a..3155f696f2dc4ed38b301836766f82adb3c1515e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt
@@ -3,7 +3,9 @@ package de.rki.coronawarnapp.contactdiary.ui.onboarding
 import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
+import androidx.core.net.toUri
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
 import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings
@@ -15,6 +17,7 @@ import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import org.joda.time.LocalDate
 import javax.inject.Inject
 
 class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboarding_fragment), AutoInject {
@@ -31,7 +34,6 @@ class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboardin
         super.onViewCreated(view, savedInstanceState)
         binding.apply {
             contactDiaryOnboardingNextButton.setOnClickListener {
-
                 vm.onNextButtonClick()
             }
             if (!args.showBottomNav) {
@@ -63,10 +65,17 @@ class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboardin
 
                 ContactDiaryOnboardingNavigationEvents.NavigateToOverviewFragment -> {
                     onboardingComplete()
-                    doNavigate(
-                        ContactDiaryOnboardingFragmentDirections
-                            .actionContactDiaryOnboardingFragmentToContactDiaryOverviewFragment()
-                    )
+                    if (arguments?.containsKey(OPEN_CURRENT_DAY) == true) {
+                        findNavController().apply {
+                            popBackStack(R.id.contactDiaryOnboardingFragment, true)
+                            navigate("coronawarnapp://contact-journal/day/${LocalDate()}".toUri())
+                        }
+                    } else {
+                        doNavigate(
+                            ContactDiaryOnboardingFragmentDirections
+                                .actionContactDiaryOnboardingFragmentToContactDiaryOverviewFragment()
+                        )
+                    }
                 }
             }
         }
@@ -80,4 +89,8 @@ class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboardin
         super.onResume()
         binding.contentContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
+
+    companion object {
+        private const val OPEN_CURRENT_DAY = "goToDay"
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/ContactDiaryOverviewViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/ContactDiaryOverviewViewModel.kt
index 98db07ac3bdde6c0d7f40fcdfcabe0e4a867ba9a..f295f4cd5b72cefd2c6eacaa46349984291424cb 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/ContactDiaryOverviewViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/ContactDiaryOverviewViewModel.kt
@@ -158,9 +158,13 @@ class ContactDiaryOverviewViewModel @AssistedInject constructor(
                 .groupBy({ it.date }, { it.contactDiaryPerson.fullName })
 
             val sb = StringBuilder()
-                .appendLine(ctx.getString(R.string.contact_diary_export_intro_one,
-                    dates.last().toFormattedString(),
-                    dates.first().toFormattedString()))
+                .appendLine(
+                    ctx.getString(
+                        R.string.contact_diary_export_intro_one,
+                        dates.last().toFormattedString(),
+                        dates.first().toFormattedString()
+                    )
+                )
                 .appendLine(ctx.getString(R.string.contact_diary_export_intro_two))
                 .appendLine()
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt
index 3d57e88257e01addceea0de27aade9966ef6290c..f8b2782ec0aabe398370eaa1ecc65f03ac572190 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt
@@ -44,9 +44,10 @@ class ContactDiaryOverviewAdapter(
                 contactDiaryOverviewNestedRecyclerView.suppressLayout(true)
                 contactDiaryOverviewElementBody.setOnClickListener { onItemSelectionListener(item) }
 
+                contactDiaryOverviewElementBody.contentDescription = dateFormatterForAccessibility(item.date)
+
                 contactDiaryOverviewElementName.apply {
                     text = dateFormatter(item.date)
-                    contentDescription = dateFormatterForAccessibility(item.date)
                 }
 
                 contactDiaryOverviewNestedElementGroup.isGone = item.data.isEmpty()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewNestedAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewNestedAdapter.kt
index 3cd03fb893d398f01c93349236532b0b3742452f..e9047030c4fae8d17c1bda662c86adfe6271e080 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewNestedAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewNestedAdapter.kt
@@ -29,17 +29,17 @@ class ContactDiaryOverviewNestedAdapter : BaseAdapter<ContactDiaryOverviewNested
         BindableVH<ListItem.Data, ContactDiaryOverviewNestedListItemBinding> {
         override val viewBinding:
             Lazy<ContactDiaryOverviewNestedListItemBinding> =
-            lazy { ContactDiaryOverviewNestedListItemBinding.bind(itemView) }
+                lazy { ContactDiaryOverviewNestedListItemBinding.bind(itemView) }
 
         override val onBindData:
             ContactDiaryOverviewNestedListItemBinding.(item: ListItem.Data, payloads: List<Any>) -> Unit =
-            { key, _ ->
-                contactDiaryOverviewElementImage.setImageResource(key.drawableId)
-                contactDiaryOverviewElementName.text = key.text
-                contactDiaryOverviewElementName.contentDescription = when (key.type) {
-                    ListItem.Type.LOCATION -> context.getString(R.string.accessibility_location, key.text)
-                    ListItem.Type.PERSON -> context.getString(R.string.accessibility_person, key.text)
+                { key, _ ->
+                    contactDiaryOverviewElementImage.setImageResource(key.drawableId)
+                    contactDiaryOverviewElementName.text = key.text
+                    contactDiaryOverviewElementName.contentDescription = when (key.type) {
+                        ListItem.Type.LOCATION -> context.getString(R.string.accessibility_location, key.text)
+                        ListItem.Type.PERSON -> context.getString(R.string.accessibility_person, key.text)
+                    }
                 }
-            }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/AbstractAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/AbstractAdapter.kt
index cd19b5b84e5c9a8c3b2035b5bb3a752e9ed4fe64..9fd0d0a9f6e032e5680babda46a20763570640ea 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/AbstractAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/AbstractAdapter.kt
@@ -5,7 +5,8 @@ import de.rki.coronawarnapp.util.lists.HasStableId
 import de.rki.coronawarnapp.util.lists.diffutil.AsyncDiffUtilAdapter
 import de.rki.coronawarnapp.util.lists.diffutil.AsyncDiffer
 
-internal abstract class AbstractAdapter<T : HasStableId, U : BaseAdapter.VH> : BaseAdapter<U>(),
+internal abstract class AbstractAdapter<T : HasStableId, U : BaseAdapter.VH> :
+    BaseAdapter<U>(),
     AsyncDiffUtilAdapter<T> {
 
     init {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
index 0ba8f1a93d5cdb047ca5830b47be9759950486b2..f09c9babde3f90577844a98b469c265eb9cd340b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
@@ -14,11 +14,13 @@ import org.joda.time.format.DateTimeFormat
 import java.util.Locale
 
 fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) {
-    this.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
-        override fun onPageSelected(position: Int) {
-            cb(position)
+    this.registerOnPageChangeCallback(
+        object : ViewPager2.OnPageChangeCallback() {
+            override fun onPageSelected(position: Int) {
+                cb(position)
+            }
         }
-    })
+    )
 }
 
 fun Context.getLocale(): Locale {
@@ -68,16 +70,20 @@ fun View.hideKeyboard() {
 }
 
 fun View.setClickLabel(label: String) {
-    ViewCompat.setAccessibilityDelegate(this, object : AccessibilityDelegateCompat() {
-        override fun onInitializeAccessibilityNodeInfo(v: View, info: AccessibilityNodeInfoCompat) {
-            super.onInitializeAccessibilityNodeInfo(v, info)
-            info.addAction(
-                AccessibilityNodeInfoCompat.AccessibilityActionCompat(
-                    AccessibilityNodeInfoCompat.ACTION_CLICK, label
+    ViewCompat.setAccessibilityDelegate(
+        this,
+        object : AccessibilityDelegateCompat() {
+            override fun onInitializeAccessibilityNodeInfo(v: View, info: AccessibilityNodeInfoCompat) {
+                super.onInitializeAccessibilityNodeInfo(v, info)
+                info.addAction(
+                    AccessibilityNodeInfoCompat.AccessibilityActionCompat(
+                        AccessibilityNodeInfoCompat.ACTION_CLICK,
+                        label
+                    )
                 )
-            )
+            }
         }
-    })
+    )
 }
 
 fun <T> MutableList<T>.clearAndAddAll(newItems: List<T>) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/DataDonationModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/DataDonationModule.kt
index be7a82167bf33668a2d8f567c694763cd2b5bb26..353936a44f17dc1591489da38a2bd434c28a9371 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/DataDonationModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/DataDonationModule.kt
@@ -2,12 +2,16 @@ package de.rki.coronawarnapp.datadonation
 
 import dagger.Module
 import dagger.Provides
+import de.rki.coronawarnapp.datadonation.analytics.AnalyticsModule
 import de.rki.coronawarnapp.datadonation.safetynet.CWASafetyNet
 import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
 import de.rki.coronawarnapp.datadonation.survey.SurveyModule
 
 @Module(
-    includes = [SurveyModule::class]
+    includes = [
+        SurveyModule::class,
+        AnalyticsModule::class
+    ]
 )
 class DataDonationModule {
     @Provides
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OTPAuthorizationResult.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OTPAuthorizationResult.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f99851e7b28f6d8ea18481acdde8f7f5cee9dc32
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OTPAuthorizationResult.kt
@@ -0,0 +1,21 @@
+package de.rki.coronawarnapp.datadonation
+
+import androidx.annotation.Keep
+import com.google.gson.annotations.SerializedName
+import org.joda.time.Instant
+import java.util.UUID
+
+@Keep
+data class OTPAuthorizationResult(
+    @SerializedName("uuid")
+    val uuid: UUID,
+    @SerializedName("authorized")
+    val authorized: Boolean,
+    @SerializedName("redeemedAt")
+    val redeemedAt: Instant,
+    @SerializedName("invalidated")
+    val invalidated: Boolean = false
+) {
+
+    fun toInvalidatedInstance() = copy(invalidated = true)
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OneTimePassword.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OneTimePassword.kt
index bdd5fef0303cef83dc74709ae1d5f549c7de593a..8bf382bdc68a73c396037fd39004d87c93451e11 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OneTimePassword.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/OneTimePassword.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.datadonation
 
 import androidx.annotation.Keep
 import com.google.gson.annotations.SerializedName
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtp
 import org.joda.time.Instant
 import java.util.UUID
 
@@ -14,5 +15,10 @@ data class OneTimePassword(
 ) {
 
     @Transient
-    val payloadForRequest = uuid.toString().toByteArray()
+    val edusOneTimePassword: EdusOtp.EDUSOneTimePassword = EdusOtp.EDUSOneTimePassword.newBuilder()
+        .setOtp(uuid.toString())
+        .build()
+
+    @Transient
+    val payloadForRequest: ByteArray = edusOneTimePassword.toByteArray()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/Analytics.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/Analytics.kt
new file mode 100644
index 0000000000000000000000000000000000000000..97949918f02c3590afca4dd76ab5fb8b3ae11f88
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/Analytics.kt
@@ -0,0 +1,248 @@
+package de.rki.coronawarnapp.datadonation.analytics
+
+import androidx.annotation.VisibleForTesting
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import de.rki.coronawarnapp.appconfig.ConfigData
+import de.rki.coronawarnapp.bugreporting.reportProblem
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.datadonation.analytics.server.DataDonationAnalyticsServer
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.datadonation.analytics.storage.LastAnalyticsSubmissionLogger
+import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
+import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetException
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaDataRequestAndroid
+import de.rki.coronawarnapp.storage.LocalData
+import de.rki.coronawarnapp.util.TimeStamper
+import kotlinx.coroutines.TimeoutCancellationException
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.sync.Mutex
+import kotlinx.coroutines.sync.withLock
+import kotlinx.coroutines.withTimeout
+import org.joda.time.Hours
+import org.joda.time.Instant
+import timber.log.Timber
+import javax.inject.Inject
+import javax.inject.Singleton
+import kotlin.random.Random
+
+@Singleton
+class Analytics @Inject constructor(
+    private val dataDonationAnalyticsServer: DataDonationAnalyticsServer,
+    private val appConfigProvider: AppConfigProvider,
+    private val deviceAttestation: DeviceAttestation,
+    // @JvmSuppressWildcards is needed for @IntoSet injection in Kotlin
+    private val donorModules: Set<@JvmSuppressWildcards DonorModule>,
+    private val settings: AnalyticsSettings,
+    private val logger: LastAnalyticsSubmissionLogger,
+    private val timeStamper: TimeStamper
+) {
+    private val submissionLockoutMutex = Mutex()
+
+    private suspend fun trySubmission(analyticsConfig: AnalyticsConfig, ppaData: PpaData.PPADataAndroid): Result {
+        return try {
+            val ppaAttestationRequest = PPADeviceAttestationRequest(
+                ppaData = ppaData
+            )
+
+            Timber.tag(TAG).d("Starting safety net device attestation")
+
+            val attestation = deviceAttestation.attest(ppaAttestationRequest)
+
+            attestation.requirePass(analyticsConfig.safetyNetRequirements)
+
+            Timber.tag(TAG).d("Safety net attestation passed")
+
+            val ppaContainer = PpaDataRequestAndroid.PPADataRequestAndroid.newBuilder()
+                .setAuthentication(attestation.accessControlProtoBuf)
+                .setPayload(ppaData)
+                .build()
+
+            Timber.tag(TAG).d("Starting analytics upload")
+
+            dataDonationAnalyticsServer.uploadAnalyticsData(ppaContainer)
+
+            Timber.tag(TAG).d("Analytics upload finished")
+
+            Result(successful = true)
+        } catch (err: Exception) {
+            err.reportProblem(tag = TAG, info = "An error occurred during analytics submission")
+            val retry = err is SafetyNetException && err.type == SafetyNetException.Type.ATTESTATION_REQUEST_FAILED
+            Result(successful = false, shouldRetry = retry)
+        }
+    }
+
+    suspend fun collectContributions(
+        configData: ConfigData,
+        ppaDataBuilder: PpaData.PPADataAndroid.Builder
+    ): List<DonorModule.Contribution> {
+        val request: DonorModule.Request = object : DonorModule.Request {
+            override val currentConfig: ConfigData = configData
+        }
+
+        val contributions = donorModules.mapNotNull {
+            val moduleName = it::class.simpleName
+            Timber.tag(TAG).d("Beginning donation for module: %s", moduleName)
+            try {
+                it.beginDonation(request)
+            } catch (e: Exception) {
+                e.reportProblem(TAG, "beginDonation($request): $moduleName failed")
+                null
+            }
+        }
+
+        contributions.forEach {
+            val moduleName = it::class.simpleName
+            Timber.tag(TAG).d("Injecting contribution: %s", moduleName)
+            try {
+                it.injectData(ppaDataBuilder)
+            } catch (e: Exception) {
+                e.reportProblem(TAG, "injectData($ppaDataBuilder): $moduleName failed")
+            }
+        }
+
+        return contributions
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    suspend fun submitAnalyticsData(configData: ConfigData): Result {
+        Timber.tag(TAG).d("Starting analytics submission")
+
+        val ppaDataBuilder = PpaData.PPADataAndroid.newBuilder()
+
+        val contributions = collectContributions(configData, ppaDataBuilder)
+
+        val analyticsProto = ppaDataBuilder.build()
+
+        val result = try {
+            // 6min, if attestation and/or submission takes longer than that,
+            // then we want to give modules still time to cleanup and get into a consistent state.
+            withTimeout(360_000) {
+                trySubmission(configData.analytics, analyticsProto)
+            }
+        } catch (e: TimeoutCancellationException) {
+            Timber.tag(TAG).e(e, "trySubmission() timed out after 360s.")
+            Result(successful = false, shouldRetry = true)
+        }
+
+        contributions.forEach {
+            val moduleName = it::class.simpleName
+            Timber.tag(TAG).d("Finishing contribution($result) for %s", moduleName)
+            try {
+                it.finishDonation(result.successful)
+            } catch (e: Exception) {
+                e.reportProblem(TAG, "finishDonation($result): $moduleName failed")
+            }
+        }
+
+        if (result.successful) {
+            settings.lastSubmittedTimestamp.update {
+                timeStamper.nowUTC
+            }
+
+            logger.storeAnalyticsData(analyticsProto)
+        }
+
+        Timber.tag(TAG).d("Finished analytics submission result=%s", result)
+        return result
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    fun stopDueToNoAnalyticsConfig(analyticsConfig: AnalyticsConfig): Boolean {
+        return !analyticsConfig.analyticsEnabled
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    fun stopDueToNoUserConsent(): Boolean {
+        return !settings.analyticsEnabled.value
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    fun stopDueToProbabilityToSubmit(analyticsConfig: AnalyticsConfig): Boolean {
+        val submitRoll = Random.nextDouble(0.0, 1.0)
+        return submitRoll > analyticsConfig.probabilityToSubmit
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    fun stopDueToLastSubmittedTimestamp(): Boolean {
+        val lastSubmit = settings.lastSubmittedTimestamp.value ?: return false
+        return lastSubmit.plus(Hours.hours(LAST_SUBMISSION_MIN_AGE_HOURS).toStandardDuration())
+            .isAfter(timeStamper.nowUTC)
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    fun stopDueToTimeSinceOnboarding(): Boolean {
+        val onboarding = LocalData.onboardingCompletedTimestamp()?.let { Instant.ofEpochMilli(it) } ?: return true
+        return onboarding.plus(Hours.hours(ONBOARDING_DELAY_HOURS).toStandardDuration()).isAfter(timeStamper.nowUTC)
+    }
+
+    suspend fun submitIfWanted(): Result = submissionLockoutMutex.withLock {
+        Timber.tag(TAG).d("Checking analytics conditions")
+        val configData: ConfigData = appConfigProvider.getAppConfig()
+
+        if (stopDueToNoAnalyticsConfig(configData.analytics)) {
+            Timber.tag(TAG).w("Aborting Analytics submission due to noAnalyticsConfig")
+            return@withLock Result(successful = false)
+        }
+
+        if (stopDueToNoUserConsent()) {
+            Timber.tag(TAG).w("Aborting Analytics submission due to noUserConsent")
+            return@withLock Result(successful = false)
+        }
+
+        if (stopDueToProbabilityToSubmit(configData.analytics)) {
+            Timber.tag(TAG).w("Aborting Analytics submission due to probabilityToSubmit")
+            return@withLock Result(successful = false)
+        }
+
+        if (stopDueToLastSubmittedTimestamp()) {
+            Timber.tag(TAG).w("Aborting Analytics submission due to lastSubmittedTimestamp")
+            return@withLock Result(successful = false)
+        }
+
+        if (stopDueToTimeSinceOnboarding()) {
+            Timber.tag(TAG).w("Aborting Analytics submission due to timeSinceOnboarding")
+            return@withLock Result(successful = false)
+        }
+
+        return@withLock submitAnalyticsData(configData)
+    }
+
+    private suspend fun deleteAllData() = submissionLockoutMutex.withLock {
+        donorModules.forEach {
+            it.deleteData()
+        }
+    }
+
+    suspend fun setAnalyticsEnabled(enabled: Boolean) {
+        settings.analyticsEnabled.update {
+            enabled
+        }
+
+        if (!enabled) {
+            deleteAllData()
+        }
+    }
+
+    fun isAnalyticsEnabledFlow(): Flow<Boolean> =
+        settings.analyticsEnabled.flow
+
+    data class Result(
+        val successful: Boolean,
+        val shouldRetry: Boolean = false
+    )
+
+    companion object {
+        private val TAG = Analytics::class.java.simpleName
+        private const val LAST_SUBMISSION_MIN_AGE_HOURS = 23
+        private const val ONBOARDING_DELAY_HOURS = 24
+
+        data class PPADeviceAttestationRequest(
+            val ppaData: PpaData.PPADataAndroid
+        ) : DeviceAttestation.Request {
+            override val scenarioPayload: ByteArray
+                get() = ppaData.toByteArray()
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsException.kt
new file mode 100644
index 0000000000000000000000000000000000000000..28910cb65be303786eeaf269077ce3282c3c0f5b
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsException.kt
@@ -0,0 +1,6 @@
+package de.rki.coronawarnapp.datadonation.analytics
+
+class AnalyticsException(
+    message: String?,
+    cause: Throwable? = null
+) : Exception(message, cause)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3c74b38013665b234f286bf142c3e5b6e4fc2f81
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsModule.kt
@@ -0,0 +1,71 @@
+package de.rki.coronawarnapp.datadonation.analytics
+
+import dagger.Module
+import dagger.Provides
+import dagger.Reusable
+import dagger.multibindings.IntoSet
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.datadonation.analytics.modules.clientmetadata.ClientMetadataDonor
+import de.rki.coronawarnapp.datadonation.analytics.modules.exposureriskmetadata.ExposureRiskMetadataDonor
+import de.rki.coronawarnapp.datadonation.analytics.modules.usermetadata.UserMetadataDonor
+import de.rki.coronawarnapp.datadonation.analytics.server.DataDonationAnalyticsApiV1
+import de.rki.coronawarnapp.datadonation.analytics.storage.DefaultLastAnalyticsSubmissionLogger
+import de.rki.coronawarnapp.datadonation.analytics.storage.LastAnalyticsSubmissionLogger
+import de.rki.coronawarnapp.environment.datadonation.DataDonationCDNHttpClient
+import de.rki.coronawarnapp.environment.datadonation.DataDonationCDNServerUrl
+import okhttp3.OkHttpClient
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+import retrofit2.converter.protobuf.ProtoConverterFactory
+import javax.inject.Singleton
+
+@Module
+class AnalyticsModule {
+
+    @Reusable
+    @Provides
+    fun provideAnalyticsSubmissionApi(
+        @DataDonationCDNHttpClient client: OkHttpClient,
+        @DataDonationCDNServerUrl url: String,
+        protoConverterFactory: ProtoConverterFactory,
+        gsonConverterFactory: GsonConverterFactory
+    ): DataDonationAnalyticsApiV1 {
+        return Retrofit.Builder()
+            .client(client)
+            .baseUrl(url)
+            .addConverterFactory(protoConverterFactory)
+            .addConverterFactory(gsonConverterFactory)
+            .build()
+            .create(DataDonationAnalyticsApiV1::class.java)
+    }
+
+//    Add these back later when they actually collect data
+//
+//    @IntoSet
+//    @Provides
+//    fun newExposureWindows(module: NewExposureWindowsDonor): DonorModule = module
+//
+//    @IntoSet
+//    @Provides
+//    fun keySubmission(module: KeySubmissionStateDonor): DonorModule = module
+//
+//    @IntoSet
+//    @Provides
+//    fun registeredTest(module: RegisteredTestDonor): DonorModule = module
+
+    @IntoSet
+    @Provides
+    fun exposureRiskMetadata(module: ExposureRiskMetadataDonor): DonorModule = module
+
+    @IntoSet
+    @Provides
+    fun userMetadata(module: UserMetadataDonor): DonorModule = module
+
+    @IntoSet
+    @Provides
+    fun clientMetadata(module: ClientMetadataDonor): DonorModule = module
+
+    @Provides
+    @Singleton
+    fun analyticsLogger(logger: DefaultLastAnalyticsSubmissionLogger): LastAnalyticsSubmissionLogger = logger
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/common/Districts.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/common/Districts.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f7d743ac17ab568932dc3081e38b9fb6bfa8be97
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/common/Districts.kt
@@ -0,0 +1,42 @@
+package de.rki.coronawarnapp.datadonation.analytics.common
+
+import android.content.Context
+import com.google.gson.Gson
+import com.google.gson.annotations.SerializedName
+import dagger.Reusable
+import de.rki.coronawarnapp.util.di.AppContext
+import de.rki.coronawarnapp.util.serialization.BaseGson
+import de.rki.coronawarnapp.util.serialization.fromJson
+import timber.log.Timber
+import javax.inject.Inject
+
+@Reusable
+class Districts @Inject constructor(
+    @AppContext private val context: Context,
+    @BaseGson private val gson: Gson
+) {
+
+    suspend fun loadDistricts(): List<District> {
+        return try {
+            val rawDistricts = context.assets.open(ASSET_NAME).bufferedReader().use { it.readText() }
+            gson.fromJson(rawDistricts)
+        } catch (e: Exception) {
+            Timber.tag(TAG).e(e, "Failed to parse districts.")
+            emptyList()
+        }
+    }
+
+    data class District(
+        @SerializedName("districtName") val districtName: String = "",
+        @SerializedName("districtShortName") val districtShortName: String = "",
+        @SerializedName("districtId") val districtId: Int = 0,
+        @SerializedName("federalStateName") val federalStateName: String = "",
+        @SerializedName("federalStateShortName") val federalStateShortName: String = "",
+        @SerializedName("federalStateId") val federalStateId: Int = 0
+    )
+
+    companion object {
+        private const val ASSET_NAME = "ppdd-ppa-administrative-unit-set.json"
+        private const val TAG = "Districts"
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/common/PpaDataExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/common/PpaDataExtensions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5a24f909c2f226fb4088d51c13a5d1ce8f47a0fd
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/common/PpaDataExtensions.kt
@@ -0,0 +1,66 @@
+package de.rki.coronawarnapp.datadonation.analytics.common
+
+import androidx.annotation.StringRes
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+
+val PpaData.PPAAgeGroup.labelStringRes: Int
+    @StringRes
+    get() = when (this) {
+        PpaData.PPAAgeGroup.AGE_GROUP_UNSPECIFIED -> R.string.analytics_userinput_agegroup_unspecified
+        PpaData.PPAAgeGroup.AGE_GROUP_0_TO_29 -> R.string.analytics_userinput_agegroup_0_to_29
+        PpaData.PPAAgeGroup.AGE_GROUP_30_TO_59 -> R.string.analytics_userinput_agegroup_30_to_59
+        PpaData.PPAAgeGroup.AGE_GROUP_FROM_60 -> R.string.analytics_userinput_agegroup_from_60
+        PpaData.PPAAgeGroup.UNRECOGNIZED -> throw UnsupportedOperationException(
+            "PpaData.PPAAgeGroup.UNRECOGNIZED has no label."
+        )
+    }
+
+val PpaData.PPAFederalState.labelStringRes: Int
+    @StringRes
+    get() = when (this) {
+        PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED -> R.string.analytics_userinput_federalstate_unspecified
+        PpaData.PPAFederalState.FEDERAL_STATE_BW -> R.string.analytics_userinput_federalstate_bw
+        PpaData.PPAFederalState.FEDERAL_STATE_BY -> R.string.analytics_userinput_federalstate_by
+        PpaData.PPAFederalState.FEDERAL_STATE_BE -> R.string.analytics_userinput_federalstate_be
+        PpaData.PPAFederalState.FEDERAL_STATE_BB -> R.string.analytics_userinput_federalstate_bb
+        PpaData.PPAFederalState.FEDERAL_STATE_HB -> R.string.analytics_userinput_federalstate_hb
+        PpaData.PPAFederalState.FEDERAL_STATE_HH -> R.string.analytics_userinput_federalstate_hh
+        PpaData.PPAFederalState.FEDERAL_STATE_HE -> R.string.analytics_userinput_federalstate_he
+        PpaData.PPAFederalState.FEDERAL_STATE_MV -> R.string.analytics_userinput_federalstate_mv
+        PpaData.PPAFederalState.FEDERAL_STATE_NI -> R.string.analytics_userinput_federalstate_ni
+        PpaData.PPAFederalState.FEDERAL_STATE_NRW -> R.string.analytics_userinput_federalstate_nrw
+        PpaData.PPAFederalState.FEDERAL_STATE_RP -> R.string.analytics_userinput_federalstate_rp
+        PpaData.PPAFederalState.FEDERAL_STATE_SL -> R.string.analytics_userinput_federalstate_sl
+        PpaData.PPAFederalState.FEDERAL_STATE_SN -> R.string.analytics_userinput_federalstate_sn
+        PpaData.PPAFederalState.FEDERAL_STATE_ST -> R.string.analytics_userinput_federalstate_st
+        PpaData.PPAFederalState.FEDERAL_STATE_SH -> R.string.analytics_userinput_federalstate_sh
+        PpaData.PPAFederalState.FEDERAL_STATE_TH -> R.string.analytics_userinput_federalstate_th
+        PpaData.PPAFederalState.UNRECOGNIZED -> throw UnsupportedOperationException(
+            "PpaData.PPAFederalState.UNRECOGNIZED has no label"
+        )
+    }
+
+val PpaData.PPAFederalState.federalStateShortName: String
+    get() = when (this) {
+        PpaData.PPAFederalState.FEDERAL_STATE_BW -> "BW"
+        PpaData.PPAFederalState.FEDERAL_STATE_BY -> "BY"
+        PpaData.PPAFederalState.FEDERAL_STATE_BE -> "BE"
+        PpaData.PPAFederalState.FEDERAL_STATE_BB -> "BB"
+        PpaData.PPAFederalState.FEDERAL_STATE_HB -> "HB"
+        PpaData.PPAFederalState.FEDERAL_STATE_HH -> "HH"
+        PpaData.PPAFederalState.FEDERAL_STATE_HE -> "HE"
+        PpaData.PPAFederalState.FEDERAL_STATE_MV -> "MV"
+        PpaData.PPAFederalState.FEDERAL_STATE_NI -> "NI"
+        PpaData.PPAFederalState.FEDERAL_STATE_NRW -> "NW"
+        PpaData.PPAFederalState.FEDERAL_STATE_RP -> "RP"
+        PpaData.PPAFederalState.FEDERAL_STATE_SL -> "SL"
+        PpaData.PPAFederalState.FEDERAL_STATE_SN -> "SN"
+        PpaData.PPAFederalState.FEDERAL_STATE_ST -> "ST"
+        PpaData.PPAFederalState.FEDERAL_STATE_SH -> "SH"
+        PpaData.PPAFederalState.FEDERAL_STATE_TH -> "TH"
+        PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED -> ""
+        PpaData.PPAFederalState.UNRECOGNIZED -> throw UnsupportedOperationException(
+            "PpaData.PPAFederalState.UNRECOGNIZED has no short name"
+        )
+    }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/DonorModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/DonorModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..fbf05e4b1a4669d60419a7005f18283defc12b7f
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/DonorModule.kt
@@ -0,0 +1,43 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules
+
+import de.rki.coronawarnapp.appconfig.ConfigData
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+
+interface DonorModule {
+
+    suspend fun beginDonation(request: Request): Contribution
+
+    suspend fun deleteData()
+
+    /**
+     * Data that the modules may need to fullfil the request
+     */
+    interface Request {
+        /**
+         * The config data pulled at the start of the submission attempt.
+         * Should be used by modules to prevent unnecessary config refreshes,
+         * and to prevent the config from changing DURING the collection/submission.
+         */
+        val currentConfig: ConfigData
+    }
+
+    /**
+     * An object that adds the data to the protobuf container, such that the Analytics class doesn't need to know the
+     * individual data types.
+     * This also acts as a callback so the donor modules know when to discard data.
+     */
+    interface Contribution {
+        /**
+         * You will be passed a protobuf container where the module will add it's data
+         */
+        suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder)
+
+        /**
+         * This will be called with the submission result.
+         * For modules that track a data delta between each submission time:
+         * If the submission failed, i.e. network issues, the donor module may collect their data for the next attempt.
+         * If the submission was sucessful, the module may discard the data as it was submitted.
+         */
+        suspend fun finishDonation(successful: Boolean)
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/clientmetadata/ClientMetadataDonor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/clientmetadata/ClientMetadataDonor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a20b1f8ed8c1e28d18361e34119bb0c63c77241e
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/clientmetadata/ClientMetadataDonor.kt
@@ -0,0 +1,69 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.clientmetadata
+
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.environment.BuildConfigWrap
+import de.rki.coronawarnapp.nearby.ENFClient
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.ApiLevel
+import kotlinx.coroutines.flow.first
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class ClientMetadataDonor @Inject constructor(
+    private val apiLevel: ApiLevel,
+    private val appConfigProvider: AppConfigProvider,
+    private val enfClient: ENFClient
+) : DonorModule {
+
+    override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
+        val config = appConfigProvider.currentConfig.first()
+
+        val version = ClientVersion()
+
+        val clientMetadataBuilder = PpaData.PPAClientMetadataAndroid.newBuilder()
+            .setCwaVersion(version.toPPASemanticVersion())
+            .setAndroidApiLevel(apiLevel.currentLevel.toLong())
+            .setAppConfigETag(config.identifier)
+
+        enfClient.getENFClientVersion()?.let {
+            clientMetadataBuilder.setEnfVersion(it)
+        }
+
+        return ClientMetadataContribution(
+            contributionProto = clientMetadataBuilder.build()
+        )
+    }
+
+    override suspend fun deleteData() {
+        // Nothing to be deleted
+    }
+
+    data class ClientMetadataContribution(
+        val contributionProto: PpaData.PPAClientMetadataAndroid
+    ) : DonorModule.Contribution {
+        override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
+            protobufContainer.clientMetadata = contributionProto
+        }
+
+        override suspend fun finishDonation(successful: Boolean) {
+            // No post processing needed for Client Metadata
+        }
+    }
+
+    data class ClientVersion(val major: Int, val minor: Int, val patch: Int) {
+        constructor() : this(
+            BuildConfigWrap.VERSION_MAJOR,
+            BuildConfigWrap.VERSION_MINOR,
+            BuildConfigWrap.VERSION_PATCH
+        )
+
+        fun toPPASemanticVersion(): PpaData.PPASemanticVersion =
+            PpaData.PPASemanticVersion.newBuilder()
+                .setMajor(major)
+                .setMinor(minor)
+                .setPatch(patch)
+                .build()
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/exposureriskmetadata/ExposureRiskMetadataDonor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/exposureriskmetadata/ExposureRiskMetadataDonor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..47b17821aaff71159b1d46c699fe23f0b25a7ac3
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/exposureriskmetadata/ExposureRiskMetadataDonor.kt
@@ -0,0 +1,83 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.exposureriskmetadata
+
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.risk.RiskLevelResult
+import de.rki.coronawarnapp.risk.RiskState
+import de.rki.coronawarnapp.risk.storage.RiskLevelStorage
+import de.rki.coronawarnapp.risk.tryLatestResultsWithDefaults
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.seconds
+import kotlinx.coroutines.flow.first
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class ExposureRiskMetadataDonor @Inject constructor(
+    private val riskLevelStorage: RiskLevelStorage,
+    private val analyticsSettings: AnalyticsSettings
+) : DonorModule {
+
+    override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
+        val previousMetadata = analyticsSettings.previousExposureRiskMetadata.value
+
+        val lastRiskResult = riskLevelStorage
+            .latestAndLastSuccessful
+            .first()
+            .tryLatestResultsWithDefaults()
+            .lastCalculated
+
+        val riskLevelForMetadata = lastRiskResult.toMetadataRiskLevel()
+        val mostRecentDateAtRiskLevel = lastRiskResult.lastRiskEncounterAt?.seconds ?: -1
+
+        val newMetadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(riskLevelForMetadata)
+            .setRiskLevelChangedComparedToPreviousSubmission(previousMetadata?.riskLevel != riskLevelForMetadata)
+            .setMostRecentDateAtRiskLevel(mostRecentDateAtRiskLevel)
+            .setDateChangedComparedToPreviousSubmission(
+                previousMetadata?.mostRecentDateAtRiskLevel != mostRecentDateAtRiskLevel
+            )
+            .build()
+
+        return ExposureRiskMetadataContribution(
+            contributionProto = newMetadata,
+            onContributionFinished = {
+                if (it) {
+                    analyticsSettings.previousExposureRiskMetadata.update {
+                        newMetadata
+                    }
+                } else {
+                    analyticsSettings.previousExposureRiskMetadata.update {
+                        null
+                    }
+                }
+            }
+        )
+    }
+
+    override suspend fun deleteData() {
+        analyticsSettings.previousExposureRiskMetadata.update {
+            null
+        }
+    }
+
+    data class ExposureRiskMetadataContribution(
+        val contributionProto: PpaData.ExposureRiskMetadata,
+        val onContributionFinished: suspend (Boolean) -> Unit
+    ) : DonorModule.Contribution {
+        override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
+            protobufContainer.addExposureRiskMetadataSet(contributionProto)
+        }
+
+        override suspend fun finishDonation(successful: Boolean) {
+            onContributionFinished(successful)
+        }
+    }
+}
+
+private fun RiskLevelResult.toMetadataRiskLevel(): PpaData.PPARiskLevel =
+    when (riskState) {
+        RiskState.LOW_RISK -> PpaData.PPARiskLevel.RISK_LEVEL_LOW
+        RiskState.INCREASED_RISK -> PpaData.PPARiskLevel.RISK_LEVEL_HIGH
+        else -> PpaData.PPARiskLevel.RISK_LEVEL_UNKNOWN
+    }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/exposurewindows/NewExposureWindowsDonor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/exposurewindows/NewExposureWindowsDonor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..993e333c1b42800b3438b25daffd9d132c5a4c5c
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/exposurewindows/NewExposureWindowsDonor.kt
@@ -0,0 +1,36 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.exposurewindows
+
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class NewExposureWindowsDonor @Inject constructor() : DonorModule {
+
+    override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
+        return CollectedData(
+            protobuf = Any(),
+            onContributionFinished = { success ->
+                // TODO
+            }
+        )
+    }
+
+    override suspend fun deleteData() {
+        // TODO
+    }
+
+    data class CollectedData(
+        val protobuf: Any,
+        val onContributionFinished: suspend (Boolean) -> Unit
+    ) : DonorModule.Contribution {
+        override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
+            // TODO "Add this specific protobuf to the top level protobuf container"
+        }
+
+        override suspend fun finishDonation(successful: Boolean) {
+            onContributionFinished(successful)
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/keysubmission/KeySubmissionStateDonor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/keysubmission/KeySubmissionStateDonor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7b254464f587eb6eba7da463db17f63ec3358f26
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/keysubmission/KeySubmissionStateDonor.kt
@@ -0,0 +1,27 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission
+
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class KeySubmissionStateDonor @Inject constructor() : DonorModule {
+
+    override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
+        // TODO
+        return object : DonorModule.Contribution {
+            override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
+                // TODO
+            }
+
+            override suspend fun finishDonation(successful: Boolean) {
+                // TODO
+            }
+        }
+    }
+
+    override suspend fun deleteData() {
+        // TODO
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/registeredtest/RegisteredTestDonor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/registeredtest/RegisteredTestDonor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f7a9be8d2b7e155376a30f2f9ad58cf57080cd5c
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/registeredtest/RegisteredTestDonor.kt
@@ -0,0 +1,27 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.registeredtest
+
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class RegisteredTestDonor @Inject constructor() : DonorModule {
+
+    override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
+        // TODO
+        return object : DonorModule.Contribution {
+            override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
+                // TODO
+            }
+
+            override suspend fun finishDonation(successful: Boolean) {
+                // TODO
+            }
+        }
+    }
+
+    override suspend fun deleteData() {
+        // TODO
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/usermetadata/UserMetadataDonor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/usermetadata/UserMetadataDonor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5c8051a4cd2552c0377cbe43dfcbcc86815438e8
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/modules/usermetadata/UserMetadataDonor.kt
@@ -0,0 +1,51 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.usermetadata
+
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class UserMetadataDonor @Inject constructor(
+    private val analyticsSettings: AnalyticsSettings
+) : DonorModule {
+
+    override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
+        val userMetadata = PpaData.PPAUserMetadata.newBuilder()
+            .setAgeGroup(analyticsSettings.userInfoAgeGroup.value)
+            .setFederalState(analyticsSettings.userInfoFederalState.value)
+            .setAdministrativeUnit(analyticsSettings.userInfoDistrict.value)
+            .build()
+
+        return UserMetadataContribution(
+            contributionProto = userMetadata
+        )
+    }
+
+    override suspend fun deleteData() {
+        analyticsSettings.apply {
+            userInfoAgeGroup.update {
+                PpaData.PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+            }
+            userInfoFederalState.update {
+                PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+            }
+            userInfoDistrict.update {
+                0
+            }
+        }
+    }
+
+    data class UserMetadataContribution(
+        val contributionProto: PpaData.PPAUserMetadata
+    ) : DonorModule.Contribution {
+        override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
+            protobufContainer.userMetadata = contributionProto
+        }
+
+        override suspend fun finishDonation(successful: Boolean) {
+            // No post processing needed for User Metadata
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsApiV1.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsApiV1.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7343e9808f039422bebdc8f4a13e5eec3760bb72
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsApiV1.kt
@@ -0,0 +1,19 @@
+package de.rki.coronawarnapp.datadonation.analytics.server
+
+import com.google.gson.annotations.SerializedName
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaDataRequestAndroid
+import retrofit2.Response
+import retrofit2.http.Body
+import retrofit2.http.POST
+
+interface DataDonationAnalyticsApiV1 {
+
+    data class DataDonationAnalyticsResponse(
+        @SerializedName("errorCode") val errorCode: String?
+    )
+
+    @POST("/version/v1/android/dat")
+    suspend fun submitAndroidAnalytics(
+        @Body requestBody: PpaDataRequestAndroid.PPADataRequestAndroid
+    ): Response<DataDonationAnalyticsResponse>
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsServer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ef23e998bfcf5e06b624128737f15893e5918c87
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsServer.kt
@@ -0,0 +1,37 @@
+package de.rki.coronawarnapp.datadonation.analytics.server
+
+import dagger.Lazy
+import de.rki.coronawarnapp.datadonation.analytics.AnalyticsException
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaDataRequestAndroid
+import timber.log.Timber
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class DataDonationAnalyticsServer @Inject constructor(
+    private val api: Lazy<DataDonationAnalyticsApiV1>
+) {
+
+    suspend fun uploadAnalyticsData(ppaDataRequestAndroid: PpaDataRequestAndroid.PPADataRequestAndroid) {
+        val response = api.get().submitAndroidAnalytics(ppaDataRequestAndroid)
+
+        val code = response.code().also {
+            Timber.d("Response code: %d", it)
+        }
+
+        return when (code) {
+            204 -> Timber.d("Analytics upload completed successfully")
+            400, 401, 403 -> {
+                val explanation = response.body()?.errorCode ?: "Unknown clientside error"
+                throw AnalyticsException(message = explanation).also {
+                    Timber.w(it, "Analytics upload failed with 40X")
+                }
+            }
+            else -> {
+                throw AnalyticsException(message = "An unknown error occurred during the request").also {
+                    Timber.e(it, "Analytics upload failed due to a unknown error")
+                }
+            }
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/AnalyticsSettings.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/AnalyticsSettings.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9c240c16e7269c78546b020de46897865fa7d329
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/AnalyticsSettings.kt
@@ -0,0 +1,103 @@
+package de.rki.coronawarnapp.datadonation.analytics.storage
+
+import android.content.Context
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData.ExposureRiskMetadata
+import de.rki.coronawarnapp.util.di.AppContext
+import de.rki.coronawarnapp.util.preferences.clearAndNotify
+import de.rki.coronawarnapp.util.preferences.createFlowPreference
+import okio.ByteString.Companion.decodeBase64
+import okio.ByteString.Companion.toByteString
+import org.joda.time.Instant
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class AnalyticsSettings @Inject constructor(
+    @AppContext private val context: Context
+) {
+    private val prefs by lazy {
+        context.getSharedPreferences("analytics_localdata", Context.MODE_PRIVATE)
+    }
+
+    val previousExposureRiskMetadata = prefs.createFlowPreference(
+        key = PREVIOUS_EXPOSURE_RISK_METADATA,
+        reader = { key ->
+            getString(key, null)?.let { prefString ->
+                prefString.decodeBase64()?.toByteArray()?.let {
+                    try {
+                        ExposureRiskMetadata.parseFrom(it)
+                    } catch (e: Exception) {
+                        null
+                    }
+                }
+            }
+        },
+        writer = { key, value ->
+            putString(key, value?.toByteArray()?.toByteString()?.base64())
+        }
+    )
+
+    val userInfoAgeGroup = prefs.createFlowPreference(
+        key = PKEY_USERINFO_AGEGROUP,
+        reader = { key ->
+            PpaData.PPAAgeGroup.forNumber(getInt(key, 0)) ?: PpaData.PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+        },
+        writer = { key, value ->
+            val numberToWrite = when (value) {
+                PpaData.PPAAgeGroup.UNRECOGNIZED -> PpaData.PPAAgeGroup.AGE_GROUP_UNSPECIFIED.number
+                else -> value.number
+            }
+            putInt(key, numberToWrite)
+        }
+    )
+
+    val userInfoFederalState = prefs.createFlowPreference(
+        key = PKEY_USERINFO_FEDERALSTATE,
+        reader = { key ->
+            PpaData.PPAFederalState.forNumber(getInt(key, -1)) ?: PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+        },
+        writer = { key, value ->
+            val numberToWrite = when (value) {
+                PpaData.PPAFederalState.UNRECOGNIZED -> PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED.number
+                else -> value.number
+            }
+            putInt(key, numberToWrite)
+        }
+    )
+
+    val userInfoDistrict = prefs.createFlowPreference(
+        key = PKEY_USERINFO_DISTRICT,
+        defaultValue = 0
+    )
+
+    val lastSubmittedTimestamp = prefs.createFlowPreference(
+        key = PKEY_LAST_SUBMITTED_TIMESTAMP,
+        reader = { key ->
+            getLong(key, 0L).let {
+                if (it != 0L) {
+                    Instant.ofEpochMilli(it)
+                } else null
+            }
+        },
+        writer = { key, value ->
+            putLong(key, value?.millis ?: 0L)
+        }
+    )
+
+    val analyticsEnabled = prefs.createFlowPreference(
+        key = PKEY_ANALYTICS_ENABLED,
+        defaultValue = false
+    )
+
+    fun clear() = prefs.clearAndNotify()
+
+    companion object {
+        private const val PREVIOUS_EXPOSURE_RISK_METADATA = "exposurerisk.metadata.previous"
+        private const val PKEY_USERINFO_AGEGROUP = "userinfo.agegroup"
+        private const val PKEY_USERINFO_FEDERALSTATE = "userinfo.federalstate"
+        private const val PKEY_USERINFO_DISTRICT = "userinfo.district"
+        private const val PKEY_LAST_SUBMITTED_TIMESTAMP = "analytics.submission.timestamp"
+        private const val PKEY_ANALYTICS_ENABLED = "analytics.enabled"
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/LastAnalyticsSubmission.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/LastAnalyticsSubmission.kt
new file mode 100644
index 0000000000000000000000000000000000000000..11ba8b5c17c8260436cbf921e9dc25e59742f03d
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/LastAnalyticsSubmission.kt
@@ -0,0 +1,9 @@
+package de.rki.coronawarnapp.datadonation.analytics.storage
+
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import org.joda.time.Instant
+
+data class LastAnalyticsSubmission(
+    val timestamp: Instant,
+    val ppaDataAndroid: PpaData.PPADataAndroid
+)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/LastAnalyticsSubmissionLogger.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/LastAnalyticsSubmissionLogger.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7a1d3d8609980c69c009b70d53cd623ae73a0859
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/storage/LastAnalyticsSubmissionLogger.kt
@@ -0,0 +1,9 @@
+package de.rki.coronawarnapp.datadonation.analytics.storage
+
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+
+interface LastAnalyticsSubmissionLogger {
+    suspend fun storeAnalyticsData(analyticsProto: PpaData.PPADataAndroid)
+
+    suspend fun getLastAnalyticsData(): LastAnalyticsSubmission?
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/AnalyticsUIModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/AnalyticsUIModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e7400d1edad99956a28d00d123fc2d8d87c11526
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/AnalyticsUIModule.kt
@@ -0,0 +1,25 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui
+
+import dagger.Binds
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class AnalyticsUIModule {
+
+    @ContributesAndroidInjector
+    abstract fun userInput(): AnalyticsUserInputFragment
+
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(AnalyticsUserInputViewModel::class)
+    abstract fun ppaUserInfoSelection(
+        factory: AnalyticsUserInputViewModel.Factory
+    ): CWAViewModelFactory<out CWAViewModel>
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/PpaMoreInfoFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/PpaMoreInfoFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3f921b2f18240db59e46749181990681b13ce117
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/PpaMoreInfoFragment.kt
@@ -0,0 +1,37 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui
+
+import android.os.Bundle
+import android.view.View
+import android.view.accessibility.AccessibilityEvent
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentPpaMoreInfoBinding
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+
+/**
+ * The fragment displays static informative content to the user
+ * and represents one way to gain more detailed understanding of the
+ * data donation.
+ *
+ */
+
+class PpaMoreInfoFragment : Fragment(R.layout.fragment_ppa_more_info) {
+
+    private val binding: FragmentPpaMoreInfoBinding by viewBindingLazy()
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        setButtonOnClickListener()
+    }
+
+    override fun onResume() {
+        super.onResume()
+        binding.container.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
+
+    private fun setButtonOnClickListener() {
+        binding.buttonBack.buttonIcon.setOnClickListener {
+            activity?.onBackPressed()
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b23dee43a827a2b2099ee7df154f803df6fa4e87
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputFragment.kt
@@ -0,0 +1,64 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui.input
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
+import androidx.recyclerview.widget.LinearLayoutManager
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.AnalyticsPpaUserinfoInputFragmentBinding
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.popBackStack
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
+import javax.inject.Inject
+
+class AnalyticsUserInputFragment : Fragment(R.layout.analytics_ppa_userinfo_input_fragment), AutoInject {
+
+    val navArgs by navArgs<AnalyticsUserInputFragmentArgs>()
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val vm: AnalyticsUserInputViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as AnalyticsUserInputViewModel.Factory
+            factory.create(navArgs.type)
+        }
+    )
+
+    private val binding: AnalyticsPpaUserinfoInputFragmentBinding by viewBindingLazy()
+
+    @Inject lateinit var itemAdapter: UserInfoItemAdapter
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        val toolbarLabel = when (navArgs.type) {
+            InputType.AGE_GROUP -> R.string.analytics_userinput_agegroup_title
+            InputType.FEDERAL_STATE -> R.string.analytics_userinput_federalstate_title
+            InputType.DISTRICT -> R.string.analytics_userinput_district_title
+        }
+        binding.toolbar.apply {
+            setTitle(toolbarLabel)
+            setNavigationOnClickListener { popBackStack() }
+        }
+
+        binding.inputList.apply {
+            layoutManager = LinearLayoutManager(requireContext())
+            adapter = itemAdapter
+        }
+        vm.userInfoItems.observe2(this) {
+            itemAdapter.data = it
+        }
+        itemAdapter.onItemClickListener = { vm.selectUserInfoItem(it) }
+        vm.finishEvent.observe2(this) { popBackStack() }
+    }
+
+    enum class InputType {
+        AGE_GROUP,
+        FEDERAL_STATE,
+        DISTRICT
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..643f158d661c56ae3199e1bd856939679fea5325
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputViewModel.kt
@@ -0,0 +1,130 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui.input
+
+import android.content.Context
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.asLiveData
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.contactdiary.ui.day.ContactDiaryDayViewModel
+import de.rki.coronawarnapp.datadonation.analytics.common.Districts
+import de.rki.coronawarnapp.datadonation.analytics.common.federalStateShortName
+import de.rki.coronawarnapp.datadonation.analytics.common.labelStringRes
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.di.AppContext
+import de.rki.coronawarnapp.util.ui.SingleLiveEvent
+import de.rki.coronawarnapp.util.ui.toLazyString
+import de.rki.coronawarnapp.util.ui.toResolvingString
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+import timber.log.Timber
+import java.util.Locale
+
+class AnalyticsUserInputViewModel @AssistedInject constructor(
+    @Assisted val type: AnalyticsUserInputFragment.InputType,
+    private val settings: AnalyticsSettings,
+    @AppContext private val context: Context,
+    private val districtsSource: Districts,
+    dispatcherProvider: DispatcherProvider
+) : CWAViewModel() {
+
+    private val ageGroupSource: Flow<List<UserInfoItem>> = flowOf(PpaData.PPAAgeGroup.values())
+        .map { ages ->
+            val selected = settings.userInfoAgeGroup.value
+            ages.mapNotNull { age ->
+                if (age == PpaData.PPAAgeGroup.UNRECOGNIZED) return@mapNotNull null
+                UserInfoItem(
+                    data = age,
+                    isSelected = age == selected,
+                    label = age.labelStringRes.toResolvingString()
+                )
+            }
+        }
+
+    private val federalStateSource: Flow<List<UserInfoItem>> = flowOf(PpaData.PPAFederalState.values())
+        .map { states ->
+            val selected = settings.userInfoFederalState.value
+            val items = states
+                .mapNotNull { state ->
+                    if (state == PpaData.PPAFederalState.UNRECOGNIZED) return@mapNotNull null
+                    if (state == PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED) return@mapNotNull null
+                    UserInfoItem(
+                        data = state,
+                        isSelected = state == selected,
+                        label = state.labelStringRes.toResolvingString()
+                    )
+                }
+                .sortedBy { it.label.get(context).toLowerCase(Locale.ROOT) }
+
+            val unspecified = UserInfoItem(
+                data = PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED,
+                isSelected = selected == PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED,
+                label = PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED.labelStringRes.toResolvingString()
+            )
+            listOf(unspecified) + items
+        }
+
+    private val districtSource: Flow<List<UserInfoItem>> = flow { emit(districtsSource.loadDistricts()) }
+        .map { allDistricts ->
+            val ourStateCode = settings.userInfoFederalState.value.federalStateShortName
+            allDistricts.filter { it.federalStateShortName == ourStateCode }
+        }
+        .map { districts ->
+            val selected = settings.userInfoDistrict.value
+            val items = districts
+                .map { district ->
+                    UserInfoItem(
+                        data = district,
+                        isSelected = district.districtId == selected,
+                        label = district.districtName.toLazyString()
+                    )
+                }
+                .sortedBy { it.label.get(context).toLowerCase(Locale.ROOT) }
+            val unspecified = UserInfoItem(
+                data = Districts.District(),
+                isSelected = 0 == selected,
+                label = R.string.analytics_userinput_district_unspecified.toResolvingString()
+            )
+            listOf(unspecified) + items
+        }
+
+    val userInfoItems: LiveData<List<UserInfoItem>> = when (type) {
+        AnalyticsUserInputFragment.InputType.AGE_GROUP -> ageGroupSource
+        AnalyticsUserInputFragment.InputType.FEDERAL_STATE -> federalStateSource
+        AnalyticsUserInputFragment.InputType.DISTRICT -> districtSource
+    }
+        .catch { Timber.e(it, "Error sourcing list items.") }
+        .asLiveData(context = dispatcherProvider.Default)
+
+    val finishEvent = SingleLiveEvent<Unit>()
+
+    fun selectUserInfoItem(item: UserInfoItem) {
+        when (item.data) {
+            is PpaData.PPAAgeGroup -> {
+                settings.userInfoAgeGroup.update { item.data }
+            }
+            is PpaData.PPAFederalState -> {
+                settings.userInfoFederalState.update { item.data }
+                settings.userInfoDistrict.update { 0 }
+            }
+            is Districts.District -> {
+                settings.userInfoDistrict.update { item.data.districtId }
+            }
+            else -> throw IllegalArgumentException()
+        }
+        finishEvent.postValue(Unit)
+    }
+
+    @AssistedFactory
+    interface Factory : CWAViewModelFactory<ContactDiaryDayViewModel> {
+        fun create(type: AnalyticsUserInputFragment.InputType): AnalyticsUserInputViewModel
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/UserInfoItem.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/UserInfoItem.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ead546937c01e23f3ce23d902d4d196dc8a2521e
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/UserInfoItem.kt
@@ -0,0 +1,9 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui.input
+
+import de.rki.coronawarnapp.util.ui.LazyString
+
+data class UserInfoItem(
+    val label: LazyString,
+    val isSelected: Boolean,
+    val data: Any
+)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/UserInfoItemAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/UserInfoItemAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..51ea3758cf270d93e5f8192c97e4be01d4b1576a
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/UserInfoItemAdapter.kt
@@ -0,0 +1,44 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui.input
+
+import android.view.ViewGroup
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.AnalyticsPpaUserinfoInputAdapterItemBinding
+import de.rki.coronawarnapp.ui.lists.BaseAdapter
+import javax.inject.Inject
+
+class UserInfoItemAdapter @Inject constructor() : BaseAdapter<UserInfoItemAdapter.VH>() {
+
+    private val internalData = mutableListOf<UserInfoItem>()
+
+    var data: List<UserInfoItem>
+        get() = internalData.toList()
+        set(value) {
+            internalData.clear()
+            internalData.addAll(value)
+            notifyDataSetChanged()
+        }
+
+    var onItemClickListener: (UserInfoItem) -> Unit = {}
+
+    override fun getItemCount(): Int = internalData.size
+
+    override fun onCreateBaseVH(parent: ViewGroup, viewType: Int): VH = VH(parent)
+
+    override fun onBindBaseVH(holder: VH, position: Int, payloads: MutableList<Any>) {
+        holder.apply {
+            val item = internalData[position]
+            bind(item)
+            itemView.setOnClickListener { onItemClickListener(item) }
+        }
+    }
+
+    class VH(parent: ViewGroup) : BaseAdapter.VH(R.layout.analytics_ppa_userinfo_input_adapter_item, parent) {
+        private val viewBinding: AnalyticsPpaUserinfoInputAdapterItemBinding =
+            AnalyticsPpaUserinfoInputAdapterItemBinding.bind(itemView)
+
+        fun bind(item: UserInfoItem) = viewBinding.apply {
+            label.text = item.label.get(context)
+            radiobutton.isChecked = item.isSelected
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsPeriodicWorker.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsPeriodicWorker.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0920f50625cd7cc07b9d2262d701b3e7a82b5716
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsPeriodicWorker.kt
@@ -0,0 +1,54 @@
+package de.rki.coronawarnapp.datadonation.analytics.worker
+
+import android.content.Context
+import androidx.work.CoroutineWorker
+import androidx.work.WorkerParameters
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.util.worker.InjectedWorkerFactory
+import de.rki.coronawarnapp.worker.BackgroundConstants
+import timber.log.Timber
+
+/**
+ * Periodic background Analytics worker
+ *
+ * @see DataDonationAnalyticsScheduler
+ */
+class DataDonationAnalyticsPeriodicWorker @AssistedInject constructor(
+    @Assisted context: Context,
+    @Assisted workerParams: WorkerParameters,
+    private val analytics: Analytics
+) : CoroutineWorker(context, workerParams) {
+
+    override suspend fun doWork(): Result {
+        Timber.tag(TAG).d("Background job started. Run attempt: $runAttemptCount")
+
+        if (runAttemptCount > BackgroundConstants.WORKER_RETRY_COUNT_THRESHOLD) {
+            Timber.tag(TAG).d("Background job failed after $runAttemptCount attempts. Rescheduling")
+
+            return Result.failure()
+        }
+
+        return try {
+            val analyticsResult = analytics.submitIfWanted()
+            Timber.tag(TAG).d("submitIfWanted() finished: %s", analyticsResult)
+            when {
+                analyticsResult.successful -> Result.success()
+                analyticsResult.shouldRetry -> Result.retry()
+                else -> Result.failure()
+            }
+        } catch (e: Exception) {
+            Timber.tag(TAG).w(e, "submitIfWanted() failed unexpectedly")
+            Result.failure()
+        }
+    }
+
+    @AssistedFactory
+    interface Factory : InjectedWorkerFactory<DataDonationAnalyticsPeriodicWorker>
+
+    companion object {
+        private val TAG = DataDonationAnalyticsPeriodicWorker::class.java.simpleName
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d4442e6890d606c91786ee01a9673fff21a141a1
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt
@@ -0,0 +1,43 @@
+package de.rki.coronawarnapp.datadonation.analytics.worker
+
+import androidx.work.ExistingPeriodicWorkPolicy
+import androidx.work.WorkManager
+import dagger.Reusable
+import timber.log.Timber
+import javax.inject.Inject
+
+/**
+ * We schedule two workers to allow for randomness in the execution times,
+ * first a periodic worker is scheduled to run every 24 Hours.
+ * We then schedule a one time workload featuring a random delay between 0 and 23 Hours
+ * every time the periodic work is run, allowing us to distribute execution of analytics randomly
+ */
+@Reusable
+class DataDonationAnalyticsScheduler @Inject constructor(
+    private val workManager: WorkManager,
+    private val workBuilder: DataDonationAnalyticsWorkBuilder,
+    private val timeCalculation: DataDonationAnalyticsTimeCalculation
+) {
+
+    /**
+     * Enqueue background analytics submission periodic work
+     */
+    fun schedulePeriodic() {
+        val initialDelay = timeCalculation.getDelay()
+        // TODO Replace with logic that checks if already scheduled workManager. workManager.getWorkInfosByTag()
+        Timber.d("schedulePeriodic() initialDelay(if not yet scheduled)=%s", initialDelay)
+        // Create unique work and enqueue
+        workManager.enqueueUniquePeriodicWork(
+            PERIODIC_WORK_NAME,
+            ExistingPeriodicWorkPolicy.KEEP,
+            workBuilder.buildPeriodicWork(initialDelay)
+        )
+    }
+
+    companion object {
+        /**
+         * Analytics Data Donation periodic work
+         */
+        const val PERIODIC_WORK_NAME = "DataDonationAnalyticsPeriodicWork"
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsTimeCalculation.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsTimeCalculation.kt
new file mode 100644
index 0000000000000000000000000000000000000000..11934e8b1c25851fe8382ef5c033d3eedb8d866b
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsTimeCalculation.kt
@@ -0,0 +1,15 @@
+package de.rki.coronawarnapp.datadonation.analytics.worker
+
+import dagger.Reusable
+import org.joda.time.Duration
+import javax.inject.Inject
+import kotlin.random.Random
+
+@Reusable
+class DataDonationAnalyticsTimeCalculation @Inject constructor() {
+    /**
+     * Get initial delay in hours for analytics one time submission work
+     * currently there is no dependency on context but might appear later
+     */
+    fun getDelay(): Duration = Duration.standardHours(Random.nextLong(0, 24))
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4360da23c6755b223a8891b5fdc9faa809537839
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt
@@ -0,0 +1,38 @@
+package de.rki.coronawarnapp.datadonation.analytics.worker
+
+import androidx.work.BackoffPolicy
+import androidx.work.Constraints
+import androidx.work.NetworkType
+import androidx.work.PeriodicWorkRequest
+import androidx.work.PeriodicWorkRequestBuilder
+import dagger.Reusable
+import de.rki.coronawarnapp.worker.BackgroundConstants
+import org.joda.time.DateTimeConstants
+import org.joda.time.Duration
+import java.util.concurrent.TimeUnit
+import javax.inject.Inject
+
+@Reusable
+class DataDonationAnalyticsWorkBuilder @Inject constructor() {
+    fun buildPeriodicWork(initialDelay: Duration): PeriodicWorkRequest =
+        PeriodicWorkRequestBuilder<DataDonationAnalyticsPeriodicWorker>(
+            DateTimeConstants.HOURS_PER_DAY.toLong(),
+            TimeUnit.HOURS
+        )
+            .setInitialDelay(
+                initialDelay.standardHours,
+                TimeUnit.HOURS
+            )
+            .setBackoffCriteria(
+                BackoffPolicy.EXPONENTIAL,
+                BackgroundConstants.BACKOFF_INITIAL_DELAY,
+                TimeUnit.MINUTES
+            )
+            .setConstraints(buildConstraints())
+            .build()
+
+    private fun buildConstraints() =
+        Constraints.Builder()
+            .setRequiredNetworkType(NetworkType.CONNECTED)
+            .build()
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNet.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNet.kt
index 76ce35d4278f578615688f86c45c930953d05354..e29f43cc5c8ea7baca9a7cd4b3f4a409ce4e2b83 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNet.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNet.kt
@@ -6,10 +6,14 @@ import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.appconfig.ConfigData
 import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetException.Type
 import de.rki.coronawarnapp.main.CWASettings
+import de.rki.coronawarnapp.storage.TestSettings
+import de.rki.coronawarnapp.util.CWADebug
 import de.rki.coronawarnapp.util.HashExtensions.toSHA256
 import de.rki.coronawarnapp.util.TimeStamper
 import de.rki.coronawarnapp.util.di.AppContext
 import de.rki.coronawarnapp.util.gplay.GoogleApiVersion
+import okio.ByteString
+import okio.ByteString.Companion.decodeHex
 import okio.ByteString.Companion.toByteString
 import org.joda.time.Duration
 import org.joda.time.Instant
@@ -26,7 +30,8 @@ class CWASafetyNet @Inject constructor(
     private val appConfigProvider: AppConfigProvider,
     private val googleApiVersion: GoogleApiVersion,
     private val cwaSettings: CWASettings,
-    private val timeStamper: TimeStamper
+    private val timeStamper: TimeStamper,
+    private val testSettings: TestSettings
 ) : DeviceAttestation {
 
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
@@ -35,9 +40,10 @@ class CWASafetyNet @Inject constructor(
     }
 
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    fun calculateNonce(salt: ByteArray, payload: ByteArray): String {
+    fun calculateNonce(salt: ByteArray, payload: ByteArray): ByteString {
         val concat = salt + payload
-        return concat.toSHA256()
+        // Default format is hex.
+        return concat.toSHA256().decodeHex()
     }
 
     override suspend fun attest(request: DeviceAttestation.Request): DeviceAttestation.Result {
@@ -54,10 +60,16 @@ class CWASafetyNet @Inject constructor(
             }
         }
 
+        val skip24hCheck = CWADebug.isDeviceForTestersBuild && testSettings.skipSafetyNetTimeCheck.value
+        val nowUTC = timeStamper.nowUTC
         val firstReliableTimeStamp = cwaSettings.firstReliableDeviceTime
+        val timeSinceOnboarding = Duration(firstReliableTimeStamp, nowUTC)
+        Timber.d("firstReliableTimeStamp=%s, now=%s", firstReliableTimeStamp, nowUTC)
+        Timber.d("skip24hCheck=%b, timeSinceOnboarding=%dh", skip24hCheck, timeSinceOnboarding.standardHours)
+
         if (firstReliableTimeStamp == Instant.EPOCH) {
             throw SafetyNetException(Type.TIME_SINCE_ONBOARDING_UNVERIFIED, "No first reliable timestamp available")
-        } else if (Duration(firstReliableTimeStamp, timeStamper.nowUTC) < Duration.standardHours(24)) {
+        } else if (!skip24hCheck && timeSinceOnboarding < Duration.standardHours(24)) {
             throw SafetyNetException(Type.TIME_SINCE_ONBOARDING_UNVERIFIED, "Time since first reliable timestamp <24h")
         }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapper.kt
index 6a36b54dc86562968267dda427fcb2bc1950ea9a..f1b732d2640e529df3d79d7667492bf8c58081a9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapper.kt
@@ -10,13 +10,14 @@ import dagger.Reusable
 import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetException.Type
 import de.rki.coronawarnapp.environment.EnvironmentSetup
 import kotlinx.coroutines.TimeoutCancellationException
+import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.withTimeout
+import okio.ByteString
 import okio.ByteString.Companion.decodeBase64
 import timber.log.Timber
 import javax.inject.Inject
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
-import kotlin.coroutines.suspendCoroutine
 
 @Reusable
 class SafetyNetClientWrapper @Inject constructor(
@@ -26,9 +27,9 @@ class SafetyNetClientWrapper @Inject constructor(
 
     suspend fun attest(nonce: ByteArray): Report {
         val response = try {
-            withTimeout(30 * 1000L) { callClient(nonce) }
+            withTimeout(180_000) { callClient(nonce) }
         } catch (e: TimeoutCancellationException) {
-            throw SafetyNetException(Type.ATTESTATION_FAILED, "Attestation timeout.", e)
+            throw SafetyNetException(Type.ATTESTATION_REQUEST_FAILED, "Attestation timeout (us).", e)
         }
 
         val jwsResult = response.jwsResult ?: throw SafetyNetException(
@@ -72,22 +73,46 @@ class SafetyNetClientWrapper @Inject constructor(
         return JsonParser.parseString(rawJson).asJsonObject
     }
 
-    private suspend fun callClient(nonce: ByteArray): SafetyNetApi.AttestationResponse = suspendCoroutine { cont ->
-        safetyNetClient.attest(nonce, environmentSetup.safetyNetApiKey)
-            .addOnSuccessListener {
-                Timber.tag(TAG).v("Attestation finished with %s", it)
-                cont.resume(it)
-            }
-            .addOnFailureListener {
-                Timber.tag(TAG).w(it, "Attestation failed.")
-                val wrappedError = if (it is ApiException && it.statusCode == CommonStatusCodes.NETWORK_ERROR) {
-                    SafetyNetException(Type.ATTESTATION_REQUEST_FAILED, "Network error", it)
-                } else {
-                    SafetyNetException(Type.ATTESTATION_FAILED, "SafetyNet client returned an error.", it)
+    private suspend fun callClient(nonce: ByteArray): SafetyNetApi.AttestationResponse =
+        suspendCancellableCoroutine { cont ->
+            safetyNetClient.attest(nonce, environmentSetup.safetyNetApiKey)
+                .addOnSuccessListener {
+                    Timber.tag(TAG).v("Attestation finished with %s", it)
+                    cont.resume(it)
                 }
-                cont.resumeWithException(wrappedError)
-            }
-    }
+                .addOnFailureListener {
+                    Timber.tag(TAG).w(it, "Attestation failed.")
+                    val defaultError =
+                        SafetyNetException(Type.ATTESTATION_FAILED, "SafetyNet client returned an error.", it)
+
+                    if (it !is ApiException) {
+                        cont.resumeWithException(defaultError)
+                        return@addOnFailureListener
+                    }
+
+                    val apiError = when (it.statusCode) {
+                        CommonStatusCodes.TIMEOUT -> SafetyNetException(
+                            Type.ATTESTATION_REQUEST_FAILED,
+                            "Timeout (them)",
+                            it
+                        )
+                        // com.google.android.gms.common.api.ApiException: 20:
+                        // The connection to Google Play services was lost due to service disconnection.
+                        // Last reason for disconnect: Timing out service connection.
+                        CommonStatusCodes.CONNECTION_SUSPENDED_DURING_CALL,
+                        CommonStatusCodes.RECONNECTION_TIMED_OUT_DURING_UPDATE,
+                        CommonStatusCodes.RECONNECTION_TIMED_OUT,
+                        CommonStatusCodes.NETWORK_ERROR -> SafetyNetException(
+                            Type.ATTESTATION_REQUEST_FAILED,
+                            "Network error (${it.statusCode})",
+                            it
+                        )
+                        else -> defaultError
+                    }
+
+                    cont.resumeWithException(apiError)
+                }
+        }
 
     data class Report(
         val jwsResult: String,
@@ -95,7 +120,7 @@ class SafetyNetClientWrapper @Inject constructor(
         val body: JsonObject,
         val signature: ByteArray
     ) {
-        val nonce: String? = body.get("nonce")?.asString?.decodeBase64()?.utf8()
+        val nonce: ByteString? = body.get("nonce")?.asString?.decodeBase64()
 
         val apkPackageName: String? = body.get("apkPackageName")?.asString
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetException.kt
index 498b5ce439e1bf361fd564e3a2472fedcde6796c..f75598ff0c050fd6a32ce4c51eca99aef13ed7a8 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetException.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetException.kt
@@ -1,10 +1,38 @@
 package de.rki.coronawarnapp.datadonation.safetynet
 
+import android.content.Context
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.HasHumanReadableError
+import de.rki.coronawarnapp.util.HumanReadableError
+
 class SafetyNetException constructor(
     val type: Type,
-    message: String,
+    message: String? = null,
     cause: Throwable? = null
-) : Exception("$type: $message", cause) {
+) : Exception("$type: $message", cause), HasHumanReadableError {
+
+    override fun toHumanReadableError(context: Context): HumanReadableError {
+        val messageRes = when (type) {
+            Type.APK_PACKAGE_NAME_MISMATCH,
+            Type.ATTESTATION_FAILED,
+            Type.ATTESTATION_REQUEST_FAILED,
+            Type.DEVICE_TIME_UNVERIFIED,
+            Type.NONCE_MISMATCH ->
+                R.string.datadonation_details_survey_consent_error_TRY_AGAIN_LATER
+            Type.BASIC_INTEGRITY_REQUIRED,
+            Type.CTS_PROFILE_MATCH_REQUIRED,
+            Type.EVALUATION_TYPE_BASIC_REQUIRED,
+            Type.EVALUATION_TYPE_HARDWARE_BACKED_REQUIRED ->
+                R.string.datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED
+            Type.DEVICE_TIME_INCORRECT ->
+                R.string.datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME
+            Type.PLAY_SERVICES_VERSION_MISMATCH ->
+                R.string.datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES
+            Type.TIME_SINCE_ONBOARDING_UNVERIFIED ->
+                R.string.datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED
+        }
+        return HumanReadableError(description = context.getString(messageRes, type))
+    }
 
     enum class Type {
         // TRY_AGAIN_LATER (Text Key)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/storage/OTPRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/storage/OTPRepository.kt
index 15a569b39f00457e34547d78966383fa5311defb..073d9b814e5380cf801be4c637bec27bc3f513e1 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/storage/OTPRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/storage/OTPRepository.kt
@@ -1,5 +1,6 @@
 package de.rki.coronawarnapp.datadonation.storage
 
+import de.rki.coronawarnapp.datadonation.OTPAuthorizationResult
 import de.rki.coronawarnapp.datadonation.OneTimePassword
 import de.rki.coronawarnapp.datadonation.survey.SurveySettings
 import javax.inject.Inject
@@ -10,14 +11,25 @@ class OTPRepository @Inject constructor(
     private val surveySettings: SurveySettings
 ) {
 
-    val lastOTP: OneTimePassword?
+    val otp: OneTimePassword?
         get() = surveySettings.oneTimePassword
 
+    var otpAuthorizationResult: OTPAuthorizationResult?
+        get() = surveySettings.otpAuthorizationResult
+        set(value) {
+            surveySettings.otpAuthorizationResult = value
+            // since we have a result from authorization server we must not use the generated otp again
+            surveySettings.oneTimePassword = null
+        }
+
     fun generateOTP(): OneTimePassword = OneTimePassword().also {
         surveySettings.oneTimePassword = it
+        // only one otp can be stored at a time - remove authorization result of older otp
+        surveySettings.otpAuthorizationResult = null
     }
 
     fun clear() {
         surveySettings.oneTimePassword = null
+        surveySettings.otpAuthorizationResult = null
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyException.kt
index 3adb111d9aefbc3cc95dbcdd8a0793b516ef8452..884715f69fd62aa69e5926964454589630439f1e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyException.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyException.kt
@@ -1,6 +1,27 @@
 package de.rki.coronawarnapp.datadonation.survey
 
+import android.content.Context
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.HasHumanReadableError
+import de.rki.coronawarnapp.util.HumanReadableError
+
 class SurveyException constructor(
-    message: String?,
-    cause: Throwable?
-) : Exception(message, cause)
+    val type: Type,
+    message: String? = null,
+    cause: Throwable? = null
+) : Exception("$type: $message", cause), HasHumanReadableError {
+
+    override fun toHumanReadableError(context: Context): HumanReadableError {
+        val messageRes = when (type) {
+            Type.ALREADY_PARTICIPATED_THIS_MONTH ->
+                R.string.datadonation_details_survey_consent_error_ALREADY_PARTICIPATED
+            Type.OTP_NOT_AUTHORIZED -> R.string.datadonation_details_survey_consent_error_TRY_AGAIN_LATER
+        }
+        return HumanReadableError(description = context.getString(messageRes, type))
+    }
+
+    enum class Type {
+        ALREADY_PARTICIPATED_THIS_MONTH,
+        OTP_NOT_AUTHORIZED
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyModule.kt
index 17d9c2221079e0682421a074cecef816f972a07b..0118f36c40c9dfd8c7e79be98576e72bb3c181d9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyModule.kt
@@ -1,9 +1,34 @@
 package de.rki.coronawarnapp.datadonation.survey
 
 import dagger.Module
+import dagger.Provides
 import de.rki.coronawarnapp.datadonation.survey.consent.SurveyConsentModule
+import de.rki.coronawarnapp.datadonation.survey.server.SurveyApiV1
+import de.rki.coronawarnapp.environment.datadonation.DataDonationCDNHttpClient
+import de.rki.coronawarnapp.environment.datadonation.DataDonationCDNServerUrl
+import okhttp3.OkHttpClient
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+import retrofit2.converter.protobuf.ProtoConverterFactory
+import javax.inject.Singleton
 
 @Module(
     includes = [SurveyConsentModule::class]
 )
-class SurveyModule
+class SurveyModule {
+
+    @Singleton
+    @Provides
+    fun provideSurveyApi(
+        @DataDonationCDNHttpClient client: OkHttpClient,
+        @DataDonationCDNServerUrl url: String,
+        protoConverterFactory: ProtoConverterFactory,
+        gsonConverterFactory: GsonConverterFactory
+    ): SurveyApiV1 = Retrofit.Builder()
+        .client(client.newBuilder().build())
+        .baseUrl(url)
+        .addConverterFactory(protoConverterFactory)
+        .addConverterFactory(gsonConverterFactory)
+        .build()
+        .create(SurveyApiV1::class.java)
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveySettings.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveySettings.kt
index 5de01d28fd76a7d7bde8eb43d68a1ccf553037c7..bf804128e1815ec72818c5c59e28707197ea04db 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveySettings.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveySettings.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.datadonation.survey
 
 import android.content.Context
 import com.google.gson.Gson
+import de.rki.coronawarnapp.datadonation.OTPAuthorizationResult
 import de.rki.coronawarnapp.datadonation.OneTimePassword
 import de.rki.coronawarnapp.util.di.AppContext
 import de.rki.coronawarnapp.util.preferences.clearAndNotify
@@ -42,7 +43,32 @@ class SurveySettings @Inject constructor(
                 .putString(KEY_OTP, if (value == null) null else gson.toJson(value))
                 .apply()
 
+    var otpAuthorizationResult: OTPAuthorizationResult?
+        get() {
+            try {
+                val json = preferences.getString(KEY_OTP_RESULT, null)
+                if (json != null) {
+                    val result = gson.fromJson(json, OTPAuthorizationResult::class.java)
+                    requireNotNull(result.uuid)
+                    requireNotNull(result.authorized)
+                    requireNotNull(result.redeemedAt)
+                    requireNotNull(result.invalidated)
+                    return result
+                }
+                return null
+            } catch (t: Throwable) {
+                Timber.e(t, "failed to parse OTP from preferences")
+                return null
+            }
+        }
+        set(value) =
+            preferences
+                .edit()
+                .putString(KEY_OTP_RESULT, if (value == null) null else gson.toJson(value))
+                .apply()
+
     fun clear() = preferences.clearAndNotify()
 }
 
 private const val KEY_OTP = "one_time_password"
+private const val KEY_OTP_RESULT = "otp_result"
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyUrlProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyUrlProvider.kt
new file mode 100644
index 0000000000000000000000000000000000000000..09846facf178ae9fd8aa648cd278a7be489356ec
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/SurveyUrlProvider.kt
@@ -0,0 +1,38 @@
+package de.rki.coronawarnapp.datadonation.survey
+
+import dagger.Reusable
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import java.util.UUID
+import javax.inject.Inject
+
+@Reusable
+class SurveyUrlProvider @Inject constructor(
+    private val appConfigProvider: AppConfigProvider
+) {
+
+    /**
+     * Provides Urls for Data Donation Surveys.
+     *
+     * @param type the type of the survey, e.g. HIGH_RISK_ENCOUNTER
+     * @param otp an authenticated one time password
+     *
+     * @throws IllegalStateException If the AppConfig doesn't contain a link to a survey
+     */
+    suspend fun provideUrl(type: Surveys.Type, otp: UUID): String {
+
+        return when (type) {
+            Surveys.Type.HIGH_RISK_ENCOUNTER -> {
+                val surveyConfig = appConfigProvider.getAppConfig().survey
+
+                val httpUrl = surveyConfig.surveyOnHighRiskUrl
+                    ?: throw IllegalStateException("AppConfig doesn't contain a link to the high-risk card survey")
+
+                httpUrl.newBuilder()
+                    .addQueryParameter(surveyConfig.otpQueryParameterName, otp.toString())
+                    .build()
+                    .toUrl()
+                    .toString()
+            }
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/Surveys.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/Surveys.kt
index 7d15244b5eb1fc4bb50522d3bb272a46af6054c6..f792b7d75942f553f9d3bc45ea68bb245f466017 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/Surveys.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/Surveys.kt
@@ -1,20 +1,28 @@
 package de.rki.coronawarnapp.datadonation.survey
 
 import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import de.rki.coronawarnapp.datadonation.OTPAuthorizationResult
 import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
+import de.rki.coronawarnapp.datadonation.storage.OTPRepository
+import de.rki.coronawarnapp.datadonation.survey.server.SurveyServer
+import de.rki.coronawarnapp.util.TimeStamper
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
+import timber.log.Timber
 import javax.inject.Inject
 import javax.inject.Singleton
 
 @Singleton
 class Surveys @Inject constructor(
     private val deviceAttestation: DeviceAttestation,
-    private val settings: SurveySettings,
     private val appConfigProvider: AppConfigProvider,
-    dispatcherProvider: DispatcherProvider
+    private val surveyServer: SurveyServer,
+    private val oneTimePasswordRepo: OTPRepository,
+    dispatcherProvider: DispatcherProvider,
+    private val urlProvider: SurveyUrlProvider,
+    private val timeStamper: TimeStamper
 ) {
 
     val availableSurveys: Flow<Collection<Type>> by lazy {
@@ -29,16 +37,84 @@ class Surveys @Inject constructor(
             }
     }
 
+    suspend fun isConsentNeeded(type: Type): ConsentResult {
+
+        when (type) {
+            Type.HIGH_RISK_ENCOUNTER -> {
+
+                // If no OTP was ever authorized, we need a consent.
+                val authResult = oneTimePasswordRepo.otpAuthorizationResult ?: return ConsentResult.Needed
+
+                // If we already have an authorized OTP for this high-risk state
+                // we can skip the consent and directly show the url in the browser.
+                // We know that the otp belongs to the current high-risk state, because the authResult gets
+                // invalidated on high to low risk state transitions.
+                if (authResult.authorized && !authResult.invalidated) {
+                    val surveyLink = urlProvider.provideUrl(type, authResult.uuid)
+                    return ConsentResult.AlreadyGiven(surveyLink)
+                }
+
+                // Finally, we need a consent for stored OTPs where the authorization failed (authorized == false)
+                // or when the app shows a new high-risk card (and therefore authResult was previously invalidated when the
+                // risk changed from high to low)
+                return ConsentResult.Needed
+            }
+        }
+    }
+
+    sealed class ConsentResult {
+        object Needed : ConsentResult()
+        data class AlreadyGiven(val surveyLink: String) : ConsentResult()
+    }
+
     suspend fun requestDetails(type: Type): Survey {
-        // TODO
-        return Survey(
-            type = Type.HIGH_RISK_ENCOUNTER,
-            surveyLink = "Link to high risk encounter survey..."
+        val config = appConfigProvider.getAppConfig().survey
+        Timber.v("Requested survey: %s", config)
+        val now = timeStamper.nowUTC
+
+        oneTimePasswordRepo.otpAuthorizationResult?.apply {
+            if (authorized && redeemedAt.toDateTime().monthOfYear() == now.toDateTime().monthOfYear()) {
+                throw SurveyException(SurveyException.Type.ALREADY_PARTICIPATED_THIS_MONTH)
+            }
+        }
+
+        // generate OTP
+        val oneTimePassword = oneTimePasswordRepo.otp ?: oneTimePasswordRepo.generateOTP()
+
+        // check device
+        val attestationResult = deviceAttestation.attest(
+            object : DeviceAttestation.Request {
+                override val scenarioPayload: ByteArray
+                    get() = oneTimePassword.payloadForRequest
+            }
+        )
+        attestationResult.requirePass(config.safetyNetRequirements)
+
+        // request validation from server
+        val errorCode = surveyServer.authOTP(oneTimePassword, attestationResult).errorCode
+        val result = OTPAuthorizationResult(
+            uuid = oneTimePassword.uuid,
+            authorized = errorCode == null,
+            redeemedAt = now
         )
+        oneTimePasswordRepo.otpAuthorizationResult = result
+
+        if (result.authorized) {
+            return Survey(
+                type = Type.HIGH_RISK_ENCOUNTER,
+                surveyLink = urlProvider.provideUrl(type, oneTimePassword.uuid)
+            )
+        } else {
+            throw SurveyException(SurveyException.Type.OTP_NOT_AUTHORIZED, errorCode)
+        }
     }
 
-    suspend fun resetSurvey(type: Type) {
-        // TODO
+    fun resetSurvey(type: Type) {
+        val authResult = oneTimePasswordRepo.otpAuthorizationResult
+        if (type == Type.HIGH_RISK_ENCOUNTER && authResult != null) {
+            Timber.d("Invalidating one time password for survey about previous high-risk state.")
+            oneTimePasswordRepo.otpAuthorizationResult = authResult.toInvalidatedInstance()
+        }
     }
 
     enum class Type {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentBlockingProgressDialogFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentBlockingProgressDialogFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ce29f457fab95a65233b71e4beff356681e397c3
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentBlockingProgressDialogFragment.kt
@@ -0,0 +1,22 @@
+package de.rki.coronawarnapp.datadonation.survey.consent
+
+import android.app.Dialog
+import android.os.Bundle
+import androidx.appcompat.app.AlertDialog
+import androidx.fragment.app.DialogFragment
+import de.rki.coronawarnapp.R
+
+class SurveyConsentBlockingProgressDialogFragment : DialogFragment() {
+
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+        isCancelable = false
+        return AlertDialog.Builder(requireContext())
+            .setView(R.layout.survey_consent_blocking_progress_dialog)
+            .setCancelable(false)
+            .create()
+    }
+
+    companion object {
+        val TAG = SurveyConsentBlockingProgressDialogFragment::class.java.simpleName
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentDetailFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentDetailFragment.kt
index ac02d34ad3480108e594baaee3da90f75ad4111d..54444e600f94654ce5f4b237d7b65eeed256c996 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentDetailFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentDetailFragment.kt
@@ -13,6 +13,8 @@ class SurveyConsentDetailFragment : Fragment(R.layout.survey_consent_detail_frag
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        binding.toolbar.setNavigationOnClickListener { activity?.onBackPressed() }
+        binding.toolbar.headerButtonBack.buttonIcon.setOnClickListener {
+            activity?.onBackPressed()
+        }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentFragment.kt
index 36435ddff2651d0f19d693dad7d445b63a99c27f..2042fb57bd8372625789e06181417b388d08dea8 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentFragment.kt
@@ -2,14 +2,17 @@ package de.rki.coronawarnapp.datadonation.survey.consent
 
 import android.os.Bundle
 import android.view.View
-import android.widget.Toast
+import androidx.fragment.app.DialogFragment
 import androidx.fragment.app.Fragment
 import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.SurveyConsentFragmentBinding
+import de.rki.coronawarnapp.util.DialogHelper
+import de.rki.coronawarnapp.util.ExternalActionHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.popBackStack
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
@@ -39,12 +42,15 @@ class SurveyConsentFragment : Fragment(R.layout.survey_consent_fragment), AutoIn
             surveyConsentMoreInformation.setOnClickListener { vm.onMoreInformationButtonPressed() }
         }
 
-        vm.routeToScreen.observe2(this) {
-            when (it) {
+        vm.routeToScreen.observe2(this) { event ->
+            when (event) {
                 is SurveyConsentNavigationEvents.NavigateBack ->
                     activity?.onBackPressed()
-                is SurveyConsentNavigationEvents.NavigateToWebView ->
-                    Toast.makeText(requireContext(), "Open ${it.url} (WIP, next PR))", Toast.LENGTH_SHORT).show()
+
+                is SurveyConsentNavigationEvents.NavigateWeb -> {
+                    ExternalActionHelper.openUrl(this, event.url)
+                    popBackStack()
+                }
                 is SurveyConsentNavigationEvents.NavigateToMoreInformationScreen -> {
                     doNavigate(
                         SurveyConsentFragmentDirections.actionSurveyConsentFragmentToSurveyConsentDetailFragment()
@@ -53,12 +59,33 @@ class SurveyConsentFragment : Fragment(R.layout.survey_consent_fragment), AutoIn
             }
         }
 
-        vm.showLoadingIndicator.observe2(this) {
-            // TODO
+        vm.showLoadingIndicator.observe2(this) { loading ->
+            if (loading) {
+                SurveyConsentBlockingProgressDialogFragment().show(
+                    childFragmentManager,
+                    SurveyConsentBlockingProgressDialogFragment.TAG
+                )
+            } else {
+                childFragmentManager.findFragmentByTag(SurveyConsentBlockingProgressDialogFragment.TAG)
+                    ?.let { (it as DialogFragment).dismiss() }
+            }
         }
 
         vm.showErrorDialog.observe2(this) {
-            // TODO
+            showErrorDialog(it.errorMessage.get(requireContext()))
+        }
+    }
+
+    private fun showErrorDialog(message: String) {
+        context?.let {
+            val dialog = DialogHelper.DialogInstance(
+                context = it,
+                title = R.string.datadonation_details_survey_consent_error_dialog_title,
+                message = message,
+                positiveButton = R.string.datadonation_details_survey_consent_error_dialog_pos_button,
+                cancelable = false
+            )
+            DialogHelper.showDialog(dialog)
         }
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentNavigationEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentNavigationEvents.kt
index f2bbe90546a5e3402ead3aec3ec239da94d7773c..f6e0724897964c96bd4ce9196a690169761c74b3 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentNavigationEvents.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentNavigationEvents.kt
@@ -3,5 +3,5 @@ package de.rki.coronawarnapp.datadonation.survey.consent
 sealed class SurveyConsentNavigationEvents {
     object NavigateBack : SurveyConsentNavigationEvents()
     object NavigateToMoreInformationScreen : SurveyConsentNavigationEvents()
-    data class NavigateToWebView(val url: String) : SurveyConsentNavigationEvents()
+    data class NavigateWeb(val url: String) : SurveyConsentNavigationEvents()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentViewModel.kt
index a3c25a57cf5d29ad7582bb0d2465a2499cd61faf..e3ccb2df950ec596e066f5c63a46ba3d3f95596b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/consent/SurveyConsentViewModel.kt
@@ -5,15 +5,21 @@ import androidx.lifecycle.asLiveData
 import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
-import de.rki.coronawarnapp.datadonation.survey.SurveyException
+import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.datadonation.survey.Surveys
-import de.rki.coronawarnapp.exception.ExceptionCategory
-import de.rki.coronawarnapp.exception.reporting.report
+import de.rki.coronawarnapp.util.HasHumanReadableError
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.toResolvingString
+import de.rki.coronawarnapp.util.ui.LazyString
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
+import de.rki.coronawarnapp.util.ui.toResolvingString
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onCompletion
+import kotlinx.coroutines.flow.onEach
+import timber.log.Timber
 
 class SurveyConsentViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
@@ -21,10 +27,17 @@ class SurveyConsentViewModel @AssistedInject constructor(
     @Assisted private val surveyType: Surveys.Type
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
-    private val internalLoadingState = MutableStateFlow(false)
+    private val internalState = MutableStateFlow<State>(State.Initial).also {
+        it.onEach { state -> handleState(state) }
+            .onCompletion { Timber.e("internalState flow completed!") }
+            .launchInViewModel()
+    }
+
+    val showLoadingIndicator: LiveData<Boolean> = internalState
+        .map { it == State.Loading }
+        .asLiveData(dispatcherProvider.Default)
 
-    val showLoadingIndicator: LiveData<Boolean> = internalLoadingState.asLiveData()
-    val showErrorDialog: SingleLiveEvent<SurveyException> = SingleLiveEvent()
+    val showErrorDialog: SingleLiveEvent<State.Error> = SingleLiveEvent()
     val routeToScreen: SingleLiveEvent<SurveyConsentNavigationEvents> = SingleLiveEvent()
 
     fun onBackButtonPressed() {
@@ -32,15 +45,44 @@ class SurveyConsentViewModel @AssistedInject constructor(
     }
 
     fun onNextButtonPressed() = launch {
-        internalLoadingState.emit(true)
-        try {
-            val surveyLink = surveys.requestDetails(surveyType).surveyLink
-            routeToScreen.postValue(SurveyConsentNavigationEvents.NavigateToWebView(surveyLink))
-        } catch (surveyException: SurveyException) {
-            surveyException.report(ExceptionCategory.INTERNAL)
-            showErrorDialog.postValue(surveyException)
+        internalState.value = State.Loading
+        internalState.value = try {
+            val survey = surveys.requestDetails(surveyType)
+            State.Success(survey)
+        } catch (e: Exception) {
+            val errorMsg = when (e) {
+                is HasHumanReadableError -> e.toResolvingString()
+                else -> {
+                    R.string.datadonation_details_survey_consent_error_TRY_AGAIN_LATER
+                        .toResolvingString(e.javaClass.simpleName)
+                }
+            }
+            Timber.e(e)
+            State.Error(errorMsg)
+        }
+    }
+
+    private fun handleState(state: State) = when (state) {
+        is State.Error -> showErrorDialog.postValue(state)
+        is State.Success -> {
+            Timber.v("Retrieved survey %s", state.survey)
+            routeToScreen.postValue(SurveyConsentNavigationEvents.NavigateWeb(state.survey.surveyLink))
         }
-        internalLoadingState.emit(false)
+        is State.Initial -> Timber.v("Waiting for user consent")
+        is State.Loading -> Timber.v("Got consent. Request survey")
+    }
+
+    sealed class State {
+        object Initial : State()
+        object Loading : State()
+
+        data class Error(
+            val errorMessage: LazyString
+        ) : State()
+
+        data class Success(
+            val survey: Surveys.Survey
+        ) : State()
     }
 
     fun onMoreInformationButtonPressed() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyApiV1.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyApiV1.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d68b50fcfe641354326d431e2f63927415a67193
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyApiV1.kt
@@ -0,0 +1,18 @@
+package de.rki.coronawarnapp.datadonation.survey.server
+
+import com.google.gson.annotations.SerializedName
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtpRequestAndroid
+import retrofit2.http.Body
+import retrofit2.http.POST
+
+interface SurveyApiV1 {
+
+    data class DataDonationResponse(
+        @SerializedName("errorCode") val errorCode: String?
+    )
+
+    @POST("version/v1/android/otp")
+    suspend fun authOTP(
+        @Body requestBody: EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid
+    ): DataDonationResponse
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyServer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3feba5a87b53142e47e7a422e5d25ff06271d53b
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyServer.kt
@@ -0,0 +1,37 @@
+package de.rki.coronawarnapp.datadonation.survey.server
+
+import dagger.Lazy
+import de.rki.coronawarnapp.datadonation.OneTimePassword
+import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtpRequestAndroid
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import kotlinx.coroutines.withContext
+import timber.log.Timber
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class SurveyServer @Inject constructor(
+    private val surveyApi: Lazy<SurveyApiV1>,
+    private val dispatcherProvider: DispatcherProvider
+) {
+
+    private val api: SurveyApiV1
+        get() = surveyApi.get()
+
+    suspend fun authOTP(
+        data: OneTimePassword,
+        deviceAttestation: DeviceAttestation.Result
+    ): SurveyApiV1.DataDonationResponse = withContext(dispatcherProvider.IO) {
+        Timber.d("authOTP()")
+
+        val dataDonationPayload = EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid.newBuilder()
+            .setPayload(data.edusOneTimePassword)
+            .setAuthentication(deviceAttestation.accessControlProtoBuf)
+            .build()
+
+        api.authOTP(
+            requestBody = dataDonationPayload
+        )
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/deadman/DeadmanNotificationWorkBuilder.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/deadman/DeadmanNotificationWorkBuilder.kt
index c574f5d761c3d8a613dc25ad5f235ef29ea9c2ea..61d4920455a846cbc8c5fc24a6752fb489735148 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/deadman/DeadmanNotificationWorkBuilder.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/deadman/DeadmanNotificationWorkBuilder.kt
@@ -28,7 +28,8 @@ class DeadmanNotificationWorkBuilder @Inject constructor() {
             .build()
 
     fun buildPeriodicWork(): PeriodicWorkRequest = PeriodicWorkRequestBuilder<DeadmanNotificationPeriodicWorker>(
-        DateTimeConstants.MINUTES_PER_HOUR.toLong(), TimeUnit.MINUTES
+        DateTimeConstants.MINUTES_PER_HOUR.toLong(),
+        TimeUnit.MINUTES
     )
         .setInitialDelay(
             BackgroundConstants.KIND_DELAY,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt
index db52d23dcd0803b00a9500e8e4efec8c017b756a..b545c807ec7d29864850a5c770e6ffd08100da77 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt
@@ -8,6 +8,7 @@ import de.rki.coronawarnapp.environment.EnvironmentSetup
 import de.rki.coronawarnapp.nearby.ENFClient
 import de.rki.coronawarnapp.nearby.modules.detectiontracker.TrackedExposureDetection
 import de.rki.coronawarnapp.risk.RollbackItem
+import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.task.Task
 import de.rki.coronawarnapp.task.TaskCancellationException
 import de.rki.coronawarnapp.task.TaskFactory
@@ -25,6 +26,7 @@ import java.util.Date
 import javax.inject.Inject
 import javax.inject.Provider
 
+@Suppress("ReturnCount")
 class DownloadDiagnosisKeysTask @Inject constructor(
     private val enfClient: ENFClient,
     private val environmentSetup: EnvironmentSetup,
@@ -111,6 +113,11 @@ class DownloadDiagnosisKeysTask @Inject constructor(
             // remember version code of this execution for next time
             settings.updateLastVersionCodeToCurrent()
 
+            if (LocalData.isAllowedToSubmitDiagnosisKeys()) {
+                Timber.tag(TAG).i("task aborted, positive test result")
+                return object : Task.Result {}
+            }
+
             Timber.tag(TAG).d("Attempting submission to ENF")
             val isSubmissionSuccessful = enfClient.provideDiagnosisKeys(
                 availableKeyFiles,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServer.kt
index bc73024a624b749f486912ecdd87f28fa27ae811..a6ac5a4de73270f43f700db7c5dbf02f1ceeb0cb 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServer.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServer.kt
@@ -57,7 +57,10 @@ class DiagnosisKeyServer @Inject constructor(
     ): DownloadInfo = withContext(Dispatchers.IO) {
         Timber.tag(TAG).v(
             "Starting download: location=%s, day=%s, hour=%s -> %s.",
-            locationCode, day, hour, saveTo
+            locationCode,
+            day,
+            hour,
+            saveTo
         )
 
         if (saveTo.exists()) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/environment/BuildConfigWrap.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/environment/BuildConfigWrap.kt
index bc8252d1b7b923721b0e77cd6c85c08f43c4e678..8dbdda01a81613628f5c0ad3173d64397918f5d0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/environment/BuildConfigWrap.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/environment/BuildConfigWrap.kt
@@ -10,4 +10,8 @@ object BuildConfigWrap {
     val ENVIRONMENT_TYPE_DEFAULT = BuildConfig.ENVIRONMENT_TYPE_DEFAULT
 
     val VERSION_CODE: Long = BuildConfig.VERSION_CODE.toLong()
+
+    val VERSION_MAJOR: Int = BuildConfig.VERSION_MAJOR
+    val VERSION_MINOR: Int = BuildConfig.VERSION_MINOR
+    val VERSION_PATCH: Int = BuildConfig.VERSION_PATCH
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/RiskLevelCalculationException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/RiskLevelCalculationException.kt
index 73167bf44408aa1bbc97fd2e7d7ed39de7f657b4..e9e2f99808645ee64acbd5805e70d34a24ac8003 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/RiskLevelCalculationException.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/RiskLevelCalculationException.kt
@@ -6,5 +6,6 @@ import de.rki.coronawarnapp.exception.reporting.ReportedException
 class RiskLevelCalculationException(cause: Throwable) :
     ReportedException(
         ErrorCodes.RISK_LEVEL_CALCULATION_PROBLEM.code,
-        "an exception occurred during risk level calculation", cause
+        "an exception occurred during risk level calculation",
+        cause
     )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ReportedException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ReportedException.kt
index 32e96ca1596800eab021ea01d6a9605fd949dd71..b7e86078c60d9f642d3ff101f3a06a3daea866ca 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ReportedException.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ReportedException.kt
@@ -8,8 +8,10 @@ open class ReportedException(
     cause: Throwable? = null,
     override val resId: Int? = null
 ) : Exception(
-    message, cause
-), ReportedExceptionInterface
+    message,
+    cause
+),
+    ReportedExceptionInterface
 
 open class ReportedIOException(
     override val code: Int? = ErrorCodes.REPORTED_IO_EXCEPTION_PROBLEM.code,
@@ -17,8 +19,10 @@ open class ReportedIOException(
     cause: Throwable? = null,
     override val resId: Int? = null
 ) : IOException(
-    message, cause
-), ReportedExceptionInterface
+    message,
+    cause
+),
+    ReportedExceptionInterface
 
 interface ReportedExceptionInterface {
     val code: Int?
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/http/HttpErrorParser.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/http/HttpErrorParser.kt
index 40765f7fa89c1dbc9f350737c818cbf97900a35d..ba9ca0de7a51413d35f153e6f23a8b16029e36c4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/http/HttpErrorParser.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/http/HttpErrorParser.kt
@@ -29,54 +29,81 @@ import okhttp3.Response
 import timber.log.Timber
 import java.net.SocketTimeoutException
 import java.net.UnknownHostException
-import javax.net.ssl.HttpsURLConnection
+import javax.net.ssl.HttpsURLConnection.HTTP_ACCEPTED
+import javax.net.ssl.HttpsURLConnection.HTTP_BAD_GATEWAY
+import javax.net.ssl.HttpsURLConnection.HTTP_BAD_REQUEST
+import javax.net.ssl.HttpsURLConnection.HTTP_CONFLICT
+import javax.net.ssl.HttpsURLConnection.HTTP_CREATED
+import javax.net.ssl.HttpsURLConnection.HTTP_FORBIDDEN
+import javax.net.ssl.HttpsURLConnection.HTTP_GATEWAY_TIMEOUT
+import javax.net.ssl.HttpsURLConnection.HTTP_GONE
+import javax.net.ssl.HttpsURLConnection.HTTP_INTERNAL_ERROR
+import javax.net.ssl.HttpsURLConnection.HTTP_NOT_FOUND
+import javax.net.ssl.HttpsURLConnection.HTTP_NOT_IMPLEMENTED
+import javax.net.ssl.HttpsURLConnection.HTTP_NO_CONTENT
+import javax.net.ssl.HttpsURLConnection.HTTP_OK
+import javax.net.ssl.HttpsURLConnection.HTTP_UNAUTHORIZED
+import javax.net.ssl.HttpsURLConnection.HTTP_UNAVAILABLE
+import javax.net.ssl.HttpsURLConnection.HTTP_UNSUPPORTED_TYPE
+import javax.net.ssl.HttpsURLConnection.HTTP_VERSION
 
 class HttpErrorParser : Interceptor {
     override fun intercept(chain: Interceptor.Chain): Response {
         try {
             val response = chain.proceed(chain.request())
 
-            val message: String? = try {
-                if (response.isSuccessful) {
-                    null
-                } else {
-                    response.message
-                }
+            if (response.isSuccessful) {
+                return response
+            }
+
+            val statusMessage: String? = try {
+                response.message
             } catch (e: Exception) {
-                Timber.w("Failed to get http error message.")
+                Timber.w("Failed to get http status-message.")
                 null
             }
+
+            val body: String? = try {
+                response.peekBody(2048).string()
+            } catch (e: Exception) {
+                Timber.w("Failed to get http error body.")
+                null
+            }
+
+            val errorDetails = "$statusMessage body=$body'"
+
             return when (val code = response.code) {
-                HttpsURLConnection.HTTP_OK -> response
-                HttpsURLConnection.HTTP_CREATED -> response
-                HttpsURLConnection.HTTP_ACCEPTED -> response
-                HttpsURLConnection.HTTP_NO_CONTENT -> response
-                HttpsURLConnection.HTTP_BAD_REQUEST -> throw BadRequestException(message)
-                HttpsURLConnection.HTTP_UNAUTHORIZED -> throw UnauthorizedException(message)
-                HttpsURLConnection.HTTP_FORBIDDEN -> throw ForbiddenException(message)
-                HttpsURLConnection.HTTP_NOT_FOUND -> throw NotFoundException(message)
-                HttpsURLConnection.HTTP_CONFLICT -> throw ConflictException(message)
-                HttpsURLConnection.HTTP_GONE -> throw GoneException(message)
-                HttpsURLConnection.HTTP_UNSUPPORTED_TYPE -> throw UnsupportedMediaTypeException(message)
-                429 -> throw TooManyRequestsException(message)
-                HttpsURLConnection.HTTP_INTERNAL_ERROR -> throw InternalServerErrorException(message)
-                HttpsURLConnection.HTTP_NOT_IMPLEMENTED -> throw NotImplementedException(message)
-                HttpsURLConnection.HTTP_BAD_GATEWAY -> throw BadGatewayException(message)
-                HttpsURLConnection.HTTP_UNAVAILABLE -> throw ServiceUnavailableException(message)
-                HttpsURLConnection.HTTP_GATEWAY_TIMEOUT -> throw GatewayTimeoutException(message)
-                HttpsURLConnection.HTTP_VERSION -> throw HTTPVersionNotSupported(message)
-                511 -> throw NetworkAuthenticationRequiredException(message)
-                598 -> throw NetworkReadTimeoutException(message)
-                599 -> throw NetworkConnectTimeoutException(message)
+                HTTP_OK -> response
+                HTTP_CREATED -> response
+                HTTP_ACCEPTED -> response
+                HTTP_NO_CONTENT -> response
+                HTTP_BAD_REQUEST -> throw BadRequestException(errorDetails)
+                HTTP_UNAUTHORIZED -> throw UnauthorizedException(errorDetails)
+                HTTP_FORBIDDEN -> throw ForbiddenException(errorDetails)
+                HTTP_NOT_FOUND -> throw NotFoundException(errorDetails)
+                HTTP_CONFLICT -> throw ConflictException(errorDetails)
+                HTTP_GONE -> throw GoneException(errorDetails)
+                HTTP_UNSUPPORTED_TYPE -> throw UnsupportedMediaTypeException(errorDetails)
+                429 -> throw TooManyRequestsException(errorDetails)
+                HTTP_INTERNAL_ERROR -> throw InternalServerErrorException(errorDetails)
+                HTTP_NOT_IMPLEMENTED -> throw NotImplementedException(errorDetails)
+                HTTP_BAD_GATEWAY -> throw BadGatewayException(errorDetails)
+                HTTP_UNAVAILABLE -> throw ServiceUnavailableException(errorDetails)
+                HTTP_GATEWAY_TIMEOUT -> throw GatewayTimeoutException(errorDetails)
+                HTTP_VERSION -> throw HTTPVersionNotSupported(errorDetails)
+                511 -> throw NetworkAuthenticationRequiredException(errorDetails)
+                598 -> throw NetworkReadTimeoutException(errorDetails)
+                599 -> throw NetworkConnectTimeoutException(errorDetails)
                 else -> {
-                    if (code in 100..199) throw CwaInformationalNotSupportedError(code, message)
+                    if (code in 100..199) throw CwaInformationalNotSupportedError(code, errorDetails)
                     if (code in 200..299) throw CwaSuccessResponseWithCodeMismatchNotSupportedError(
-                        code, message
+                        code,
+                        errorDetails
                     )
-                    if (code in 300..399) throw CwaRedirectNotSupportedError(code, message)
-                    if (code in 400..499) throw CwaClientError(code, message)
-                    if (code in 500..599) throw CwaServerError(code, message)
-                    throw CwaWebException(code, message)
+                    if (code in 300..399) throw CwaRedirectNotSupportedError(code, errorDetails)
+                    if (code in 400..499) throw CwaClientError(code, errorDetails)
+                    if (code in 500..599) throw CwaServerError(code, errorDetails)
+                    throw CwaWebException(code, errorDetails)
                 }
             }
         } catch (err: SocketTimeoutException) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/TracingPermissionHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/TracingPermissionHelper.kt
index 2e5107cb6d4655cfac6c6108d6ea48b569f9d793..c726fe9f59792f8052772dc24dbf66c57a6bdeab 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/TracingPermissionHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/TracingPermissionHelper.kt
@@ -54,7 +54,9 @@ class TracingPermissionHelper @AssistedInject constructor(
     fun handleActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
         Timber.v(
             "handleActivityResult(requesutCode=%d, resultCode=%d, data=%s)",
-            requestCode, resultCode, data
+            requestCode,
+            resultCode,
+            data
         )
         if (requestCode != TRACING_PERMISSION_REQUESTCODE) {
             Timber.tag(TAG).w("Not our request code ($requestCode): %s", data)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/DefaultDiagnosisKeyProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/DefaultDiagnosisKeyProvider.kt
index 06acd95380977ab5c290495de3ec0b3cf7715485..5326daf65cd328987fec64c8e1702d0ddb98c3d2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/DefaultDiagnosisKeyProvider.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/DefaultDiagnosisKeyProvider.kt
@@ -61,8 +61,10 @@ class DefaultDiagnosisKeyProvider @Inject constructor(
                 .addOnFailureListener {
                     Timber.w("Key submission failed because ${it.message}")
                     val wrappedException =
-                        when (it is ApiException &&
-                            it.statusCode == ReportingConstants.STATUS_CODE_REACHED_REQUEST_LIMIT) {
+                        when (
+                            it is ApiException &&
+                                it.statusCode == ReportingConstants.STATUS_CODE_REACHED_REQUEST_LIMIT
+                        ) {
                             true -> QuotaExceededException(cause = it)
                             false -> it
                         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/SubmissionQuota.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/SubmissionQuota.kt
index b671c3502ad5bf0fc014461b1e182895a6c25875..ce3bc9e3d3211bb11c5567ea3989a22851a1b2ee 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/SubmissionQuota.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/diagnosiskeyprovider/SubmissionQuota.kt
@@ -74,12 +74,16 @@ class SubmissionQuota @Inject constructor(
 
             Timber.i(
                 "Quota reset: oldQuota=%d, lastReset=%s -> newQuota=%d, thisReset=%s",
-                oldQuota, oldQuotaReset, currentQuota, now
+                oldQuota,
+                oldQuotaReset,
+                currentQuota,
+                now
             )
         } else {
             Timber.d(
                 "No new quota available (now=%s, availableAt=%s)",
-                now, nextQuotaReset
+                now,
+                nextQuotaReset
             )
         }
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt
index 0dc770ee15157b2e35b2649048d174787f8b734c..2452ac44b62c3ab3b127e9e083ff96a803bcd373 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt
@@ -1,11 +1,25 @@
 package de.rki.coronawarnapp.nearby.modules.tekhistory
 
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
 import android.content.IntentSender
+import androidx.annotation.VisibleForTesting
 import com.google.android.gms.common.api.ApiException
 import com.google.android.gms.common.api.Status
 import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient
+import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient.ACTION_PRE_AUTHORIZE_RELEASE_PHONE_UNLOCKED
+import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient.EXTRA_TEMPORARY_EXPOSURE_KEY_LIST
 import com.google.android.gms.nearby.exposurenotification.ExposureNotificationStatusCodes
 import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
+import de.rki.coronawarnapp.nearby.modules.version.ENFVersion
+import de.rki.coronawarnapp.util.di.AppContext
+import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlinx.coroutines.tasks.await
+import kotlinx.coroutines.withTimeout
 import timber.log.Timber
 import javax.inject.Inject
 import javax.inject.Singleton
@@ -15,16 +29,76 @@ import kotlin.coroutines.suspendCoroutine
 
 @Singleton
 class DefaultTEKHistoryProvider @Inject constructor(
-    private val client: ExposureNotificationClient
+    private val client: ExposureNotificationClient,
+    private val enfVersion: ENFVersion,
+    @AppContext private val context: Context
 ) : TEKHistoryProvider {
 
     override suspend fun getTEKHistoryOrRequestPermission(
         onTEKHistoryAvailable: (List<TemporaryExposureKey>) -> Unit,
         onPermissionRequired: (Status) -> Unit
     ) {
-        Timber.d("getTEKHistoryOrRequestPermission(...)")
+        if (enfVersion.isAtLeast(ENFVersion.V1_8)) {
+            getPreAuthTEKHistoryOrRequestPermissionOnV18(
+                onTEKHistoryAvailable,
+                onPermissionRequired
+            )
+        } else {
+            getTEKHistoryOrRequestPermissionOnPreV18(
+                onTEKHistoryAvailable,
+                onPermissionRequired
+            )
+        }
+    }
+
+    override suspend fun getTEKHistory(): List<TemporaryExposureKey> {
+        return if (enfVersion.isAtLeast(ENFVersion.V1_8)) {
+            getPreAuthTEKHistoryOnV18()
+        } else {
+            getTEKHistoryOnPreV18()
+        }
+    }
+
+    override suspend fun preAuthorizeExposureKeyHistory(): Boolean {
+        // Pre-Auth isn't available exit early
+        if (!enfVersion.isAtLeast(ENFVersion.V1_8)) return false
+        Timber.i("Requesting Per-Auth TemporaryExposureKeyHistory with v${ENFVersion.V1_8}")
+        client.requestPreAuthorizedTemporaryExposureKeyHistory().await()
+        Timber.i("Pre-Auth TemporaryExposureKeyHistory is enabled")
+        return true
+    }
+
+    // Get History or request Permissions //
+    private suspend fun getPreAuthTEKHistoryOrRequestPermissionOnV18(
+        onTEKHistoryAvailable: (List<TemporaryExposureKey>) -> Unit,
+        onPermissionRequired: (Status) -> Unit
+    ) {
+        Timber.d("getPreAuthTEKHistoryOrRequestPermissionOnV18")
+        try {
+            onTEKHistoryAvailable(getPreAuthTEKHistoryOnV18())
+            Timber.d("onTEKHistoryAvailable() -> permission were already available")
+        } catch (apiException: ApiException) {
+            if (apiException.statusCode != ExposureNotificationStatusCodes.RESOLUTION_REQUIRED) {
+                throw apiException
+            }
+            if (!apiException.status.hasResolution()) {
+                throw apiException
+            }
+            try {
+                onPermissionRequired(apiException.status)
+            } catch (e: IntentSender.SendIntentException) {
+                throw e
+            }
+        }
+    }
+
+    private suspend fun getTEKHistoryOrRequestPermissionOnPreV18(
+        onTEKHistoryAvailable: (List<TemporaryExposureKey>) -> Unit,
+        onPermissionRequired: (Status) -> Unit
+    ) {
+        Timber.d("getTEKHistoryOrRequestPermissionOnPreV18(...)")
         try {
-            onTEKHistoryAvailable(getTEKHistory())
+            onTEKHistoryAvailable(getTEKHistoryOnPreV18())
             Timber.d("onTEKHistoryAvailable() -> permission were already available")
         } catch (apiException: ApiException) {
             if (apiException.statusCode != ExposureNotificationStatusCodes.RESOLUTION_REQUIRED) {
@@ -41,7 +115,8 @@ class DefaultTEKHistoryProvider @Inject constructor(
         }
     }
 
-    override suspend fun getTEKHistory(): List<TemporaryExposureKey> = suspendCoroutine { cont ->
+    // Get history //
+    private suspend fun getTEKHistoryOnPreV18(): List<TemporaryExposureKey> = suspendCoroutine { cont ->
         Timber.d("Retrieving temporary exposure keys.")
         client.temporaryExposureKeyHistory
             .addOnSuccessListener {
@@ -53,4 +128,71 @@ class DefaultTEKHistoryProvider @Inject constructor(
                 cont.resumeWithException(it)
             }
     }
+
+    private suspend fun getPreAuthTEKHistoryOnV18(): List<TemporaryExposureKey> {
+        val isPreAuthorized = try {
+            preAuthorizeExposureKeyHistory()
+        } catch (exception: Exception) {
+            Timber.d(exception, "Requesting Pre-Auth history failed")
+            if (exception.isResolvable) throw exception
+            false
+        }
+
+        return if (isPreAuthorized) {
+            try {
+                Timber.d("Pre-Auth retrieving TEK.")
+                getPreAuthorizedExposureKeys().also {
+                    Timber.d("Pre-Auth TEK: %s", it.joinToString("\n"))
+                }
+            } catch (exception: Exception) {
+                Timber.d(exception, "Pre-Auth retrieving TEK failed")
+                if (exception.isResolvable) throw exception
+
+                Timber.d("Fallback: Retrieving TEK on pre v1.8")
+                getTEKHistoryOnPreV18()
+            }
+        } else {
+            Timber.d("Retrieving TEK on pre v1.8")
+            getTEKHistoryOnPreV18()
+        }
+    }
+
+    // Timeout after 5 sec if receiver did not get called
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    internal suspend fun getPreAuthorizedExposureKeys(): List<TemporaryExposureKey> = withTimeout(5_000) {
+        coroutineScope {
+            // Register receiver before hitting the API to avoid race conditions
+            val deferredIntent = async { awaitReceivedBroadcast() }
+            client.requestPreAuthorizedTemporaryExposureKeyRelease().await()
+            Timber.i("Pre-Auth requestPreAuthorizedTemporaryExposureKeyRelease is done")
+            val startTime = System.currentTimeMillis()
+            Timber.i("Pre-Auth Receiver StartTime:$startTime")
+            val intent = deferredIntent.await()
+            val endTime = System.currentTimeMillis()
+            Timber.i("Pre-Auth Receiver EndTime:$endTime")
+            Timber.i("Pre-Auth Receiver WaitingTime:${endTime - startTime}")
+            Timber.d("Pre-Auth getPreAuthorizedExposureKeys():intent=%s", intent)
+            intent.getParcelableArrayListExtra(EXTRA_TEMPORARY_EXPOSURE_KEY_LIST) ?: emptyList()
+        }
+    }
+
+    private suspend fun awaitReceivedBroadcast(): Intent = suspendCancellableCoroutine { cont ->
+        val receiver = object : BroadcastReceiver() {
+            override fun onReceive(context: Context, intent: Intent) {
+                cont.resume(intent)
+                Timber.d("Pre-Auth unregisterReceiver")
+                context.unregisterReceiver(this)
+            }
+        }
+        context.registerReceiver(
+            receiver,
+            IntentFilter(ACTION_PRE_AUTHORIZE_RELEASE_PHONE_UNLOCKED)
+        )
+        cont.invokeOnCancellation {
+            Timber.d(it, "Pre-Auth  unregisterReceiver")
+            context.unregisterReceiver(receiver)
+        }
+    }
+
+    private inline val Exception.isResolvable get() = this is ApiException && this.status.hasResolution()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/TEKHistoryProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/TEKHistoryProvider.kt
index c621d045516745cf5b0d7f8290743c99d0c0c14b..4b8069c57a812d4ccc7bc500ddaf010889437467 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/TEKHistoryProvider.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/TEKHistoryProvider.kt
@@ -1,7 +1,10 @@
 package de.rki.coronawarnapp.nearby.modules.tekhistory
 
+import com.google.android.gms.common.api.ApiException
 import com.google.android.gms.common.api.Status
+import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient
 import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
+import de.rki.coronawarnapp.nearby.modules.version.ENFVersion
 
 interface TEKHistoryProvider {
 
@@ -20,4 +23,16 @@ interface TEKHistoryProvider {
         onTEKHistoryAvailable: (List<TemporaryExposureKey>) -> Unit,
         onPermissionRequired: (Status) -> Unit
     )
+
+    /**
+     * Pre-Authorize ExposureKeyHistory using
+     * [ExposureNotificationClient.requestPreAuthorizedTemporaryExposureKeyHistory].
+     *
+     * @return true if at least [ENFVersion] is [ENFVersion.V1_8]
+     * and [ExposureNotificationClient.requestPreAuthorizedTemporaryExposureKeyHistory] continues successfully,
+     * otherwise false.
+     *
+     * @throws [ApiException]
+     */
+    suspend fun preAuthorizeExposureKeyHistory(): Boolean
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersion.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersion.kt
index 3ce93d4823d6b61d3c6a2634937087ee742f9a31..af67311adc64461a9bf54e4c810a5860b10928f0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersion.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersion.kt
@@ -9,7 +9,6 @@ import javax.inject.Singleton
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
 import kotlin.coroutines.suspendCoroutine
-import kotlin.math.abs
 
 @Singleton
 class DefaultENFVersion @Inject constructor(
@@ -41,8 +40,6 @@ class DefaultENFVersion @Inject constructor(
     }
 
     override suspend fun isAtLeast(compareVersion: Long): Boolean {
-        if (!compareVersion.isCorrectVersionLength) throw IllegalArgumentException("given version has incorrect length")
-
         getENFClientVersion()?.let { currentENFClientVersion ->
             Timber.i("Comparing current ENF client version $currentENFClientVersion with $compareVersion")
             return currentENFClientVersion >= compareVersion
@@ -56,12 +53,4 @@ class DefaultENFVersion @Inject constructor(
             .addOnSuccessListener { cont.resume(it) }
             .addOnFailureListener { cont.resumeWithException(it) }
     }
-
-    // check if a raw long has the correct length to be considered an API version
-    private val Long.isCorrectVersionLength
-        get(): Boolean = abs(this).toString().length == GOOGLE_API_VERSION_FIELD_LENGTH
-
-    companion object {
-        private const val GOOGLE_API_VERSION_FIELD_LENGTH = 8
-    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/ENFVersion.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/ENFVersion.kt
index 7b1b8d8303560d5d1fd2e93dd5a4d90dc301e23f..215ef4e03fb93b02ef3bdab8b108c13c81cb3e15 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/ENFVersion.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/version/ENFVersion.kt
@@ -22,5 +22,6 @@ interface ENFVersion {
     companion object {
         const val V1_6 = 16000000L
         const val V1_7 = 17000000L
+        const val V1_8 = 18210214000L
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoFragment.kt
index d6040603f97d0d448b48284bb1c7fa7578a8dc10..55741441fd6f7001ce7351a8818b5f91a2236a1b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoFragment.kt
@@ -13,6 +13,8 @@ import de.rki.coronawarnapp.databinding.NewReleaseInfoScreenFragmentBinding
 import de.rki.coronawarnapp.ui.lists.BaseAdapter
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.lists.BindableVH
+import de.rki.coronawarnapp.util.setUrl
+import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.popBackStack
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
@@ -52,7 +54,14 @@ class NewReleaseInfoFragment : Fragment(R.layout.new_release_info_screen_fragmen
 
         vm.routeToScreen.observe2(this) {
             if (it is NewReleaseInfoNavigationEvents.CloseScreen) {
-                popBackStack()
+                if (args.comesFromInfoScreen) {
+                    popBackStack()
+                } else {
+                    doNavigate(
+                        NewReleaseInfoFragmentDirections
+                            .actionNewReleaseInfoFragmentToOnboardingDeltaAnalyticsFragment()
+                    )
+                }
             }
         }
     }
@@ -60,7 +69,9 @@ class NewReleaseInfoFragment : Fragment(R.layout.new_release_info_screen_fragmen
     private fun getItems(): List<NewReleaseInfoItem> {
         val titles = resources.getStringArray(R.array.new_release_title)
         val textBodies = resources.getStringArray(R.array.new_release_body)
-        return vm.getItems(titles, textBodies)
+        val linkifiedLabels = resources.getStringArray(R.array.new_release_linkified_labels)
+        val linkTargets = resources.getStringArray(R.array.new_release_target_urls)
+        return vm.getItems(titles, textBodies, linkifiedLabels, linkTargets)
     }
 
     override fun onResume() {
@@ -73,18 +84,23 @@ private class ItemAdapter(
     private val items: List<NewReleaseInfoItem>
 ) : BaseAdapter<ItemAdapter.ViewHolder>() {
 
-    inner class ViewHolder(parent: ViewGroup) : BaseAdapter.VH(R.layout.new_release_info_item, parent),
+    inner class ViewHolder(parent: ViewGroup) :
+        BaseAdapter.VH(R.layout.new_release_info_item, parent),
         BindableVH<NewReleaseInfoItem, NewReleaseInfoItemBinding> {
         override val viewBinding:
             Lazy<NewReleaseInfoItemBinding> =
-            lazy { NewReleaseInfoItemBinding.bind(itemView) }
+                lazy { NewReleaseInfoItemBinding.bind(itemView) }
 
         override val onBindData:
             NewReleaseInfoItemBinding.(item: NewReleaseInfoItem, payloads: List<Any>) -> Unit =
-            { item, _ ->
-                title.text = item.title
-                body.text = item.body
-            }
+                { item, _ ->
+                    title.text = item.title
+                    if (item is NewReleaseInfoItemLinked) {
+                        body.setUrl(item.body, item.linkifiedLabel, item.linkTarget)
+                    } else {
+                        body.text = item.body
+                    }
+                }
     }
 
     override fun onCreateBaseVH(parent: ViewGroup, viewType: Int): ViewHolder = ViewHolder(parent)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoItem.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoItem.kt
index 91b8e7d8c24d1f156d65401ce4a624dc226c4093..1e30b5ffb8c983ac42aa920d9f050528c84066b5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoItem.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoItem.kt
@@ -1,6 +1,18 @@
 package de.rki.coronawarnapp.release
 
-data class NewReleaseInfoItem(
-    val title: String,
+interface NewReleaseInfoItem {
+    val title: String
     val body: String
-)
+}
+
+data class NewReleaseInfoItemText(
+    override val title: String,
+    override val body: String
+) : NewReleaseInfoItem
+
+data class NewReleaseInfoItemLinked(
+    override val title: String,
+    override val body: String,
+    val linkifiedLabel: String,
+    val linkTarget: String
+) : NewReleaseInfoItem
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModel.kt
index 0a88666abd3049a2205ef65675eba638eeb5076b..476bbd9bdf9b5c47276ac58fb1a8746d2d7c512e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModel.kt
@@ -27,14 +27,25 @@ class NewReleaseInfoViewModel @AssistedInject constructor(
         routeToScreen.postValue(NewReleaseInfoNavigationEvents.CloseScreen)
     }
 
-    fun getItems(titles: Array<String>, bodies: Array<String>): List<NewReleaseInfoItem> {
-        if (titles.size != bodies.size) {
-            Timber.e("R.array.new_release_title and R.array.new_release_body must have the same size!")
+    fun getItems(
+        titles: Array<String>,
+        bodies: Array<String>,
+        linkifiedLabels: Array<String>,
+        linkTargets: Array<String>
+    ): List<NewReleaseInfoItem> {
+        if (titles.size != bodies.size || titles.size != linkifiedLabels.size || titles.size != linkTargets.size) {
+            Timber.e(
+                "R.array.new_release_title AND R.array.new_release_body AND " +
+                    "R.array.new_release_linkified_AND R.array.new_release_target_urls arrays must have the same size!"
+            )
+            return emptyList()
         }
         val items = mutableListOf<NewReleaseInfoItem>()
-        titles.indices.forEach {
-            if (it <= bodies.lastIndex) {
-                items.add(NewReleaseInfoItem(titles[it], bodies[it]))
+        titles.indices.forEach { i ->
+            if (linkifiedLabels[i].isNullOrBlank() || linkTargets[i].isNullOrBlank()) {
+                items.add(NewReleaseInfoItemText(titles[i], bodies[i]))
+            } else {
+                items.add(NewReleaseInfoItemLinked(titles[i], bodies[i], linkifiedLabels[i], linkTargets[i]))
             }
         }
         return items
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt
index bfab7ff3ed278eac3087256f8f0fafd93ecf9d82..99ce95839712ad6ee1a6834b249651c24a896226 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt
@@ -49,22 +49,28 @@ class DefaultRiskLevels @Inject constructor() : RiskLevels {
     ): Int {
 
         val reportTypeOffset = when (reportType) {
-            ReportType.RECURSIVE -> transmissionRiskLevelEncoding
-                .reportTypeOffsetRecursive
-            ReportType.SELF_REPORT -> transmissionRiskLevelEncoding
-                .reportTypeOffsetSelfReport
-            ReportType.CONFIRMED_CLINICAL_DIAGNOSIS -> transmissionRiskLevelEncoding
-                .reportTypeOffsetConfirmedClinicalDiagnosis
-            ReportType.CONFIRMED_TEST -> transmissionRiskLevelEncoding
-                .reportTypeOffsetConfirmedTest
+            ReportType.RECURSIVE ->
+                transmissionRiskLevelEncoding
+                    .reportTypeOffsetRecursive
+            ReportType.SELF_REPORT ->
+                transmissionRiskLevelEncoding
+                    .reportTypeOffsetSelfReport
+            ReportType.CONFIRMED_CLINICAL_DIAGNOSIS ->
+                transmissionRiskLevelEncoding
+                    .reportTypeOffsetConfirmedClinicalDiagnosis
+            ReportType.CONFIRMED_TEST ->
+                transmissionRiskLevelEncoding
+                    .reportTypeOffsetConfirmedTest
             else -> throw UnknownReportTypeException()
         }
 
         val infectiousnessOffset = when (infectiousness) {
-            Infectiousness.HIGH -> transmissionRiskLevelEncoding
-                .infectiousnessOffsetHigh
-            else -> transmissionRiskLevelEncoding
-                .infectiousnessOffsetStandard
+            Infectiousness.HIGH ->
+                transmissionRiskLevelEncoding
+                    .infectiousnessOffsetHigh
+            else ->
+                transmissionRiskLevelEncoding
+                    .infectiousnessOffsetStandard
         }
 
         return reportTypeOffset + infectiousnessOffset
@@ -166,7 +172,8 @@ class DefaultRiskLevels @Inject constructor() : RiskLevels {
             .toSet()
 
         Timber.d(
-            "uniqueDates: %s", { TextUtils.join(System.lineSeparator(), uniqueDatesMillisSinceEpoch) }
+            "uniqueDates: %s",
+            { TextUtils.join(System.lineSeparator(), uniqueDatesMillisSinceEpoch) }
         )
         val exposureHistory = uniqueDatesMillisSinceEpoch.map {
             aggregateRiskPerDate(appConfig, it, exposureWindowsAndResult)
@@ -177,11 +184,12 @@ class DefaultRiskLevels @Inject constructor() : RiskLevels {
         // 6. Determine `Total Risk`
         val totalRiskLevel =
             if (exposureHistory.any {
-                    it.riskLevel == RiskCalculationParametersOuterClass
-                        .NormalizedTimeToRiskLevelMapping
-                        .RiskLevel
-                        .HIGH
-                }) {
+                it.riskLevel == RiskCalculationParametersOuterClass
+                    .NormalizedTimeToRiskLevelMapping
+                    .RiskLevel
+                    .HIGH
+            }
+            ) {
                 RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping.RiskLevel.HIGH
             } else {
                 RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping.RiskLevel.LOW
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetector.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetector.kt
index e2a85862ed3e453bf1e0202b40e1e3c338baf29c..b377e9942036e23f79b16100f3c8dd26d99f3bc7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetector.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetector.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import androidx.annotation.VisibleForTesting
 import androidx.core.app.NotificationManagerCompat
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.datadonation.survey.Surveys
 import de.rki.coronawarnapp.notification.NotificationConstants.NEW_MESSAGE_RISK_LEVEL_SCORE_NOTIFICATION_ID
 import de.rki.coronawarnapp.notification.NotificationHelper
 import de.rki.coronawarnapp.risk.storage.RiskLevelStorage
@@ -28,7 +29,8 @@ class RiskLevelChangeDetector @Inject constructor(
     private val riskLevelSettings: RiskLevelSettings,
     private val notificationManagerCompat: NotificationManagerCompat,
     private val foregroundState: ForegroundState,
-    private val notificationHelper: NotificationHelper
+    private val notificationHelper: NotificationHelper,
+    private val surveys: Surveys
 ) {
 
     fun launch() {
@@ -79,8 +81,9 @@ class RiskLevelChangeDetector @Inject constructor(
 
         if (oldRiskState == RiskState.INCREASED_RISK && newRiskState == RiskState.LOW_RISK) {
             LocalData.isUserToBeNotifiedOfLoweredRiskLevel = true
-
             Timber.d("Risk level changed LocalData is updated. Current Risk level is $newRiskState")
+
+            surveys.resetSurvey(Surveys.Type.HIGH_RISK_ENCOUNTER)
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/storage/BaseRiskLevelStorage.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/storage/BaseRiskLevelStorage.kt
index 5e0afe1c1c9cdcd75892fcff552aeeeafa9621e9..a0e337d4b16da0ae89a478a4124794dbbd7ad794 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/storage/BaseRiskLevelStorage.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/storage/BaseRiskLevelStorage.kt
@@ -137,10 +137,12 @@ abstract class BaseRiskLevelStorage constructor(
 
     override val aggregatedRiskPerDateResults: Flow<List<AggregatedRiskPerDateResult>> by lazy {
         aggregatedRiskPerDateResultTables.allEntries()
-            .map { it.map {
-                persistedAggregatedRiskPerDateResult ->
-                persistedAggregatedRiskPerDateResult.toAggregatedRiskPerDateResult()
-            } }
+            .map {
+                it.map {
+                    persistedAggregatedRiskPerDateResult ->
+                    persistedAggregatedRiskPerDateResult.toAggregatedRiskPerDateResult()
+                }
+            }
             .shareLatest(tag = TAG, scope = scope)
     }
 
@@ -149,9 +151,11 @@ abstract class BaseRiskLevelStorage constructor(
     ) {
         Timber.d("insertAggregatedRiskPerDateResults(aggregatedRiskPerDateResults=%s)", aggregatedRiskPerDateResults)
         try {
-            aggregatedRiskPerDateResultTables.insertRisk(aggregatedRiskPerDateResults.map {
-                it.toPersistedAggregatedRiskPerDateResult()
-            })
+            aggregatedRiskPerDateResultTables.insertRisk(
+                aggregatedRiskPerDateResults.map {
+                    it.toPersistedAggregatedRiskPerDateResult()
+                }
+            )
         } catch (e: Exception) {
             Timber.e(e, "Failed to store risk level per date results")
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/QRScanResult.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/QRScanResult.kt
index 37da7b31baef3803df7505621ec26ef620b08989..2a054d0ebf1f23453ef26ca5d942235368fa8e63 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/QRScanResult.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/service/submission/QRScanResult.kt
@@ -17,11 +17,12 @@ data class QRScanResult(val rawResult: String) {
 
     companion object {
         // regex pattern for scanned QR code URL
-        val QR_CODE_REGEX: Pattern = ("^" + // Match start of string
-            "(?:https:\\/{2}localhost)" + // Match `https://localhost`
-            "(?:\\/{1}\\?)" + // Match the query param `/?`
-            "([a-f\\d]{6}[-][a-f\\d]{8}[-](?:[a-f\\d]{4}[-]){3}[a-f\\d]{12})" + // Match the UUID
-            "\$"
+        val QR_CODE_REGEX: Pattern = (
+            "^" + // Match start of string
+                "(?:https:\\/{2}localhost)" + // Match `https://localhost`
+                "(?:\\/{1}\\?)" + // Match the query param `/?`
+                "([a-f\\d]{6}[-][a-f\\d]{8}[-](?:[a-f\\d]{4}[-]){3}[a-f\\d]{12})" + // Match the UUID
+                "\$"
             ).toPattern(Pattern.CASE_INSENSITIVE)
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/sharing/ExposureSharingService.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/sharing/ExposureSharingService.kt
deleted file mode 100644
index c1df9fb4678fd7ba334e9f27c8a87948716fccf9..0000000000000000000000000000000000000000
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/sharing/ExposureSharingService.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package de.rki.coronawarnapp.sharing
-
-import android.graphics.Bitmap
-import android.graphics.Color
-import android.util.Base64
-import com.google.android.gms.common.api.ApiException
-import com.google.protobuf.ByteString
-import com.google.zxing.BarcodeFormat
-import com.google.zxing.qrcode.QRCodeWriter
-import de.rki.coronawarnapp.exception.ExceptionCategory.EXPOSURENOTIFICATION
-import de.rki.coronawarnapp.exception.ExceptionCategory.INTERNAL
-import de.rki.coronawarnapp.exception.reporting.report
-import de.rki.coronawarnapp.server.protocols.AppleLegacyKeyExchange
-import de.rki.coronawarnapp.util.di.AppInjector
-import timber.log.Timber
-
-object ExposureSharingService {
-    private const val defaultWidth: Int = 150
-    private const val defaultHeight: Int = 150
-
-    suspend fun shareKeysAsBitmap(
-        width: Int?,
-        height: Int?,
-        callback: (Bitmap?) -> Unit?
-    ) {
-        try {
-            val tempExpKeys = AppInjector.component.enfClient.getTEKHistory()
-
-            val latest = tempExpKeys.maxByOrNull { it.rollingStartIntervalNumber }
-
-            val key = AppleLegacyKeyExchange.Key.newBuilder()
-                .setKeyData(ByteString.copyFrom(latest!!.keyData))
-                .setRollingPeriod(latest.rollingPeriod)
-                .setRollingStartNumber(latest.rollingStartIntervalNumber)
-                .build().toByteArray()
-            val bMatrix = QRCodeWriter().encode(
-                Base64.encodeToString(key, Base64.DEFAULT),
-                BarcodeFormat.QR_CODE,
-                width ?: defaultWidth,
-                height ?: defaultHeight
-            )
-            val bmp =
-                Bitmap.createBitmap(bMatrix.width, bMatrix.height, Bitmap.Config.RGB_565)
-            for (x in 0 until bMatrix.width) {
-                for (y in 0 until bMatrix.height) {
-                    bmp.setPixel(x, y, if (bMatrix.get(x, y)) Color.BLACK else Color.WHITE)
-                }
-            }
-            Timber.d("Bitmap generated")
-            callback(bmp)
-        } catch (e: ApiException) {
-            e.report(EXPOSURENOTIFICATION)
-            callback(null)
-        } catch (e: Exception) {
-            e.report(INTERNAL)
-            callback(null)
-        }
-    }
-
-    fun getOthersKeys(
-        rawData: String?,
-        callback: (AppleLegacyKeyExchange.Key?) -> Unit?
-    ) {
-        try {
-            val decodedQr = Base64.decode(rawData, Base64.DEFAULT)
-            val key = AppleLegacyKeyExchange.Key.parseFrom(decodedQr)
-            callback(key)
-        } catch (ex: Exception) {
-            Timber.d("$ex")
-            callback(null)
-        }
-    }
-}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/source/StatisticsParser.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/source/StatisticsParser.kt
index 9121af6fa7f7b3ab6ed2e5b353f656aaf33bee95..6cf9d5357580ca535d8704a1a71421dcf17de282 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/source/StatisticsParser.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/source/StatisticsParser.kt
@@ -21,7 +21,8 @@ class StatisticsParser @Inject constructor() {
         if (parsed.cardIdSequenceCount != parsed.keyFigureCardsCount) {
             Timber.tag(TAG).w(
                 "Cards have been hidden (sequenceCount=%d != cardCount=%d)",
-                parsed.cardIdSequenceCount, parsed.keyFigureCardsCount
+                parsed.cardIdSequenceCount,
+                parsed.keyFigureCardsCount
             )
         }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/TrendArrowView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/TrendArrowView.kt
index 0d9dff5404bede8698e7caae28e372473b57086b..1f1d2000ad1eb9b40270f5a6e893d24dec321761 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/TrendArrowView.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/TrendArrowView.kt
@@ -39,7 +39,8 @@ class TrendArrowView @JvmOverloads constructor(
             }
 
             background = ContextCompat.getDrawable(
-                context, when (trendSemantic) {
+                context,
+                when (trendSemantic) {
                     POSITIVE -> R.drawable.bg_statistics_trend_positive
                     NEGATIVE -> R.drawable.bg_statistics_trend_negative
                     else -> R.drawable.bg_statistics_trend_neutral
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/StatisticsCardAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/StatisticsCardAdapter.kt
index 1805ced630701cbb84f251a1c0ede9c0cdb40f0a..8ff7a267bd2fc1965ac059904337ddb6c0865eaa 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/StatisticsCardAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/StatisticsCardAdapter.kt
@@ -21,7 +21,8 @@ import de.rki.coronawarnapp.util.lists.modular.mods.DataBinderMod
 import de.rki.coronawarnapp.util.lists.modular.mods.StableIdMod
 import de.rki.coronawarnapp.util.lists.modular.mods.TypedVHCreatorMod
 
-class StatisticsCardAdapter : ModularAdapter<ItemVH<StatisticsCardItem, ViewBinding>>(),
+class StatisticsCardAdapter :
+    ModularAdapter<ItemVH<StatisticsCardItem, ViewBinding>>(),
     AsyncDiffUtilAdapter<StatisticsCardItem> {
 
     override val asyncDiffer: AsyncDiffer<StatisticsCardItem> = AsyncDiffer(adapter = this)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/IncidenceCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/IncidenceCard.kt
index fafe09299dc76f1bce35db8c079449a8e3cc374b..427a95181b48f0dd9d0da5c758c7ef1dea5c7096 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/IncidenceCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/IncidenceCard.kt
@@ -16,7 +16,8 @@ import de.rki.coronawarnapp.util.formatter.getPrimaryLabel
 
 class IncidenceCard(parent: ViewGroup) :
     StatisticsCardAdapter.ItemVH<StatisticsCardItem, HomeStatisticsCardsIncidenceLayoutBinding>(
-        R.layout.home_statistics_cards_basecard_layout, parent
+        R.layout.home_statistics_cards_basecard_layout,
+        parent
     ) {
 
     override val viewBinding = lazy {
@@ -50,8 +51,13 @@ class IncidenceCard(parent: ViewGroup) :
             primaryValue.contentDescription = StringBuilder()
                 .appendWithTrailingSpace(context.getString(R.string.statistics_explanation_seven_day_incidence_title))
                 .appendWithTrailingSpace(getPrimaryLabel(context))
-                .appendWithTrailingSpace(formatStatisticalValue(context, sevenDayIncidence.value,
-                    sevenDayIncidence.decimals))
+                .appendWithTrailingSpace(
+                    formatStatisticalValue(
+                        context,
+                        sevenDayIncidence.value,
+                        sevenDayIncidence.decimals
+                    )
+                )
                 .append(getContentDescriptionForTrends(context, sevenDayIncidence.trend))
 
             trendArrow.setTrend(sevenDayIncidence.trend, sevenDayIncidence.trendSemantic)
@@ -67,8 +73,13 @@ class IncidenceCard(parent: ViewGroup) :
             .appendWithTrailingSpace(context.getString(R.string.accessibility_statistics_card_announcement))
             .appendWithLineBreak(context.getString(R.string.statistics_explanation_seven_day_incidence_title))
             .appendWithTrailingSpace(item.getPrimaryLabel(context))
-            .appendWithTrailingSpace(formatStatisticalValue(context, sevenDayIncidence.value,
-                sevenDayIncidence.decimals))
+            .appendWithTrailingSpace(
+                formatStatisticalValue(
+                    context,
+                    sevenDayIncidence.value,
+                    sevenDayIncidence.decimals
+                )
+            )
             .appendWithTrailingSpace(context.getString(R.string.statistics_card_incidence_value_description))
             .appendWithLineBreak(getContentDescriptionForTrends(context, sevenDayIncidence.trend))
             .append(context.getString(R.string.accessibility_statistics_card_navigation_information))
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/InfectionsCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/InfectionsCard.kt
index 1e7f9bfc3821c847a2508e146413bb16a121a4b2..0de68a6387789865c244158cf070bbcb21037bf9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/InfectionsCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/InfectionsCard.kt
@@ -15,7 +15,8 @@ import de.rki.coronawarnapp.util.StringBuilderExtension.appendWithTrailingSpace
 
 class InfectionsCard(parent: ViewGroup) :
     StatisticsCardAdapter.ItemVH<StatisticsCardItem, HomeStatisticsCardsInfectionsLayoutBinding>(
-        R.layout.home_statistics_cards_basecard_layout, parent
+        R.layout.home_statistics_cards_basecard_layout,
+        parent
     ) {
 
     override val viewBinding = lazy {
@@ -50,8 +51,13 @@ class InfectionsCard(parent: ViewGroup) :
             secondaryValue.text = formatStatisticalValue(context, sevenDayAverage.value, sevenDayAverage.decimals)
             secondaryValue.contentDescription = StringBuilder()
                 .appendWithTrailingSpace(context.getString(R.string.statistics_card_infections_secondary_label))
-                .appendWithTrailingSpace(formatStatisticalValue(context, sevenDayAverage.value,
-                    sevenDayAverage.decimals))
+                .appendWithTrailingSpace(
+                    formatStatisticalValue(
+                        context,
+                        sevenDayAverage.value,
+                        sevenDayAverage.decimals
+                    )
+                )
                 .appendWithTrailingSpace(context.getString(R.string.statistics_card_infections_title))
                 .append(getContentDescriptionForTrends(context, sevenDayAverage.trend))
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/KeySubmissionsCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/KeySubmissionsCard.kt
index a722f23d298856f48b21d4f1ba82e0e272bfc7e8..ae445e6f392fd80e124916d51db9eb3a97439b41 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/KeySubmissionsCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/KeySubmissionsCard.kt
@@ -15,7 +15,8 @@ import de.rki.coronawarnapp.util.formatter.getPrimaryLabel
 
 class KeySubmissionsCard(parent: ViewGroup) :
     StatisticsCardAdapter.ItemVH<StatisticsCardItem, HomeStatisticsCardsKeysubmissionsLayoutBinding>(
-        R.layout.home_statistics_cards_basecard_layout, parent
+        R.layout.home_statistics_cards_basecard_layout,
+        parent
     ) {
 
     override val viewBinding = lazy {
@@ -50,8 +51,13 @@ class KeySubmissionsCard(parent: ViewGroup) :
             secondaryValue.text = formatStatisticalValue(context, sevenDayAverage.value, sevenDayAverage.decimals)
             secondaryValue.contentDescription = StringBuilder()
                 .appendWithTrailingSpace(context.getString(R.string.statistics_card_infections_secondary_label))
-                .appendWithTrailingSpace(formatStatisticalValue(context, sevenDayAverage.value,
-                    sevenDayAverage.decimals))
+                .appendWithTrailingSpace(
+                    formatStatisticalValue(
+                        context,
+                        sevenDayAverage.value,
+                        sevenDayAverage.decimals
+                    )
+                )
                 .appendWithTrailingSpace(context.getString(R.string.statistics_card_submission_title))
                 .append(getContentDescriptionForTrends(context, sevenDayAverage.trend))
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/SevenDayRValueCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/SevenDayRValueCard.kt
index cc384a068d37978b8127d740cb00ca6ddc428704..066644ac825baaeacbae792403b8aadbb2887253 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/SevenDayRValueCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/ui/homecards/cards/SevenDayRValueCard.kt
@@ -16,7 +16,8 @@ import de.rki.coronawarnapp.util.formatter.getPrimaryLabel
 
 class SevenDayRValueCard(parent: ViewGroup) :
     StatisticsCardAdapter.ItemVH<StatisticsCardItem, HomeStatisticsCardsSevendayrvalueLayoutBinding>(
-        R.layout.home_statistics_cards_basecard_layout, parent
+        R.layout.home_statistics_cards_basecard_layout,
+        parent
     ) {
 
     override val viewBinding = lazy {
@@ -50,8 +51,13 @@ class SevenDayRValueCard(parent: ViewGroup) :
             primaryValue.contentDescription = StringBuilder()
                 .appendWithTrailingSpace(context.getString(R.string.statistics_title_reproduction))
                 .appendWithTrailingSpace(getPrimaryLabel(context))
-                .appendWithTrailingSpace(formatStatisticalValue(context, reproductionNumber.value,
-                    reproductionNumber.decimals))
+                .appendWithTrailingSpace(
+                    formatStatisticalValue(
+                        context,
+                        reproductionNumber.value,
+                        reproductionNumber.decimals
+                    )
+                )
                 .append(getContentDescriptionForTrends(context, reproductionNumber.trend))
 
             trendArrow.setTrend(reproductionNumber.trend, reproductionNumber.trendSemantic)
@@ -67,8 +73,13 @@ class SevenDayRValueCard(parent: ViewGroup) :
             .appendWithTrailingSpace(context.getString(R.string.accessibility_statistics_card_announcement))
             .appendWithLineBreak(context.getString(R.string.statistics_title_reproduction))
             .appendWithTrailingSpace(item.getPrimaryLabel(context))
-            .appendWithTrailingSpace(formatStatisticalValue(context, reproductionNumber.value,
-                reproductionNumber.decimals))
+            .appendWithTrailingSpace(
+                formatStatisticalValue(
+                    context,
+                    reproductionNumber.value,
+                    reproductionNumber.decimals
+                )
+            )
             .appendWithTrailingSpace(context.getString(R.string.statistics_reproduction_average))
             .appendWithLineBreak(getContentDescriptionForTrends(context, reproductionNumber.trend))
             .append(context.getString(R.string.accessibility_statistics_card_navigation_information))
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/DeviceStorage.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/DeviceStorage.kt
index 5fd8d4b515fa97896907270b6e8769910511c67d..fb09e91080cd101c2a948bba48d92a4f18c2a963 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/DeviceStorage.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/DeviceStorage.kt
@@ -31,7 +31,9 @@ class DeviceStorage @Inject constructor(
     @TargetApi(Build.VERSION_CODES.O)
     private fun requestStorageAPI26Plus(targetPath: File, requiredBytes: Long = -1L): CheckResult {
         Timber.tag(TAG).v(
-            "requestStorageAPI26Plus(path=%s, requiredBytes=%d)", targetPath, requiredBytes
+            "requestStorageAPI26Plus(path=%s, requiredBytes=%d)",
+            targetPath,
+            requiredBytes
 
         )
         val statsManager =
@@ -47,7 +49,9 @@ class DeviceStorage @Inject constructor(
             if (allocatableBytes + availableBytes >= requiredBytes) {
                 val toAllocate = requiredBytes - availableBytes
                 Timber.tag(TAG).v(
-                    "Not enough free space, allocating %d on %s.", requiredBytes, targetPath
+                    "Not enough free space, allocating %d on %s.",
+                    requiredBytes,
+                    targetPath
                 )
                 storageManager.allocateBytes(storageUUID, toAllocate)
                 availableBytes += toAllocate
@@ -65,7 +69,9 @@ class DeviceStorage @Inject constructor(
 
     private fun requestStorageLegacy(targetPath: File, requiredBytes: Long = -1L): CheckResult {
         Timber.tag(TAG).v(
-            "requestStorageAPI26Plus(path=%s, requiredBytes=%d)", targetPath, requiredBytes
+            "requestStorageAPI26Plus(path=%s, requiredBytes=%d)",
+            targetPath,
+            requiredBytes
         )
 
         val stats = statsFsProvider.createStats(targetPath)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt
index b2203bc075fc462b1c8429b53c3ccadbd2e895b2..931ccdbda95f3eb804c28153780d7eb20619ce0a 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt
@@ -10,7 +10,8 @@ class InsufficientStorageException(
     val result: DeviceStorage.CheckResult
 ) : IOException(
     "Not enough free space: ${result.requiredBytes}B are required and only ${result.freeBytes}B are available."
-), HasHumanReadableError {
+),
+    HasHumanReadableError {
 
     override fun toHumanReadableError(context: Context): HumanReadableError {
         val formattedRequired = Formatter.formatShortFileSize(context, result.requiredBytes)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
index a94745305c5711611aefc518da2ca904c43ba8d7..139ca0b795007348e74b60f529e9cec251ab7054 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
@@ -47,7 +47,8 @@ object LocalData {
     fun isOnboarded(value: Boolean) = getSharedPreferenceInstance().edit(true) {
         putBoolean(
             CoronaWarnApplication.getAppContext()
-                .getString(R.string.preference_onboarding_completed), value
+                .getString(R.string.preference_onboarding_completed),
+            value
         )
     }
 
@@ -60,7 +61,8 @@ object LocalData {
     fun onboardingCompletedTimestamp(): Long? {
         val timestamp = getSharedPreferenceInstance().getLong(
             CoronaWarnApplication.getAppContext()
-                .getString(R.string.preference_onboarding_completed_timestamp), 0L
+                .getString(R.string.preference_onboarding_completed_timestamp),
+            0L
         )
 
         if (timestamp == 0L) return null
@@ -75,7 +77,8 @@ object LocalData {
     fun onboardingCompletedTimestamp(value: Long) = getSharedPreferenceInstance().edit(true) {
         putLong(
             CoronaWarnApplication.getAppContext()
-                .getString(R.string.preference_onboarding_completed_timestamp), value
+                .getString(R.string.preference_onboarding_completed_timestamp),
+            value
         )
     }
 
@@ -99,7 +102,8 @@ object LocalData {
     fun isBackgroundCheckDone(value: Boolean) = getSharedPreferenceInstance().edit(true) {
         putBoolean(
             CoronaWarnApplication.getAppContext()
-                .getString(R.string.preference_background_check_done), value
+                .getString(R.string.preference_background_check_done),
+            value
         )
     }
     /****************************************************
@@ -281,7 +285,8 @@ object LocalData {
         getSharedPreferenceInstance().edit(true) {
             putBoolean(
                 CoronaWarnApplication.getAppContext()
-                    .getString(R.string.preference_risk_days_explanation_shown), value
+                    .getString(R.string.preference_risk_days_explanation_shown),
+                value
             )
         }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TestSettings.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TestSettings.kt
index e9bb38c8485ad88263fb1fbdbabf6551036a3010..c0099d3a3f1550da855c969ff4c5e8ce6b0a289e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TestSettings.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TestSettings.kt
@@ -35,6 +35,11 @@ class TestSettings @Inject constructor(
         writer = FlowPreference.gsonWriter(gson)
     )
 
+    val skipSafetyNetTimeCheck = prefs.createFlowPreference(
+        key = "safetynet.skip.timecheck",
+        defaultValue = false
+    )
+
     enum class FakeExposureWindowTypes {
         @SerializedName("DISABLED")
         DISABLED,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
index 9b961c220ec5bece30c83ae7275a7ade88a34b90..bb2abf7be0583b0523b54894f3fab011c44b4a13 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
@@ -90,7 +90,8 @@ class TracingRepository @Inject constructor(
             )
             taskController.submit(
                 DefaultTaskRequest(
-                    RiskLevelTask::class, originTag = "TracingRepository.refreshDiagnosisKeys()"
+                    RiskLevelTask::class,
+                    originTag = "TracingRepository.refreshDiagnosisKeys()"
                 )
             )
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalRepository.kt
index d8e9e7d8f961b6e4b7935fafdac738a08fc462f2..2035405b06c806b50349e7055e48c7b8cb0385e5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/tracing/TracingIntervalRepository.kt
@@ -35,10 +35,12 @@ class TracingIntervalRepository(private val tracingIntervalDao: TracingIntervalD
     suspend fun createInterval(from: Long, to: Long) {
         Timber.v("Insert Tracing Interval $from, $to")
         if (to < from) throw IllegalArgumentException("to cannot be before from")
-        tracingIntervalDao.insertInterval(TracingIntervalEntity().apply {
-            this.from = from
-            this.to = to
-        })
+        tracingIntervalDao.insertInterval(
+            TracingIntervalEntity().apply {
+                this.from = from
+                this.to = to
+            }
+        )
     }
 
     suspend fun getIntervals(): List<Pair<Long, Long>> {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdater.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdater.kt
index bc536c4cfb91c44cb99f3d7a107f06a8a49dd5be..a020f77d1f38ee37a23d44ee30efb90ca7cc7026 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdater.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdater.kt
@@ -30,23 +30,25 @@ class TEKHistoryUpdater @AssistedInject constructor(
 ) {
 
     private val tracingPermissionHelper by lazy {
-        tracingPermissionHelperFactory.create(object : TracingPermissionHelper.Callback {
-            override fun onUpdateTracingStatus(isTracingEnabled: Boolean) {
-                if (isTracingEnabled) {
-                    updateTEKHistoryOrRequestPermission()
-                } else {
-                    Timber.tag(TAG).w("Can't start TEK update, tracing permission was declined.")
+        tracingPermissionHelperFactory.create(
+            object : TracingPermissionHelper.Callback {
+                override fun onUpdateTracingStatus(isTracingEnabled: Boolean) {
+                    if (isTracingEnabled) {
+                        updateTEKHistoryOrRequestPermission()
+                    } else {
+                        Timber.tag(TAG).w("Can't start TEK update, tracing permission was declined.")
+                    }
                 }
-            }
 
-            override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) =
-                callback.onTracingConsentRequired(onConsentResult)
+                override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) =
+                    callback.onTracingConsentRequired(onConsentResult)
 
-            override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) =
-                callback.onPermissionRequired(permissionRequest)
+                override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) =
+                    callback.onPermissionRequired(permissionRequest)
 
-            override fun onError(error: Throwable) = callback.onError(error)
-        })
+                override fun onError(error: Throwable) = callback.onError(error)
+            }
+        )
     }
 
     fun updateTEKHistoryOrRequestPermission() {
@@ -61,6 +63,16 @@ class TEKHistoryUpdater @AssistedInject constructor(
     }
 
     private suspend fun updateTEKHistoryInternal() {
+        val latestKeys = tekHistoryStorage.tekData.first()
+            .maxByOrNull { it.obtainedAt }?.keys
+            .orEmpty()
+
+        // Use cached keys if there are any
+        if (latestKeys.isNotEmpty()) {
+            callback.onTEKAvailable(latestKeys)
+            return
+        }
+
         enfClient.getTEKHistoryOrRequestPermission(
             onTEKHistoryAvailable = {
                 Timber.tag(TAG).d("TEKS were directly available.")
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt
index f0da5eb47477358f92e4467090f22a50827aa56d..7e37f823d25bb2cc9ca30e03bafad9215db86e59 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt
@@ -92,7 +92,9 @@ class SubmissionTask @Inject constructor(
         val currentAttempt = submissionSettings.autoSubmissionAttemptsCount.value
         val lastAttemptAt = submissionSettings.autoSubmissionAttemptsLast.value
         Timber.tag(TAG).i(
-            "checkRetryAttempts(): submissionAttemptsCount=%d, lastAttemptAt=%s", currentAttempt, lastAttemptAt
+            "checkRetryAttempts(): submissionAttemptsCount=%d, lastAttemptAt=%s",
+            currentAttempt,
+            lastAttemptAt
         )
 
         return if (currentAttempt >= RETRY_ATTEMPTS) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt
index 1d6330132a26f4e5d40bb8cfff4552916e9ff133..1f2ed9d8415f5220febbf7d72c7d340438d66676 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt
@@ -114,7 +114,8 @@ class TaskController @Inject constructor(
             } else {
                 Timber.tag(TAG).w(
                     "TaskRequest was already used. Existing: %s\nNew request: %s",
-                    existingRequest, newRequest
+                    existingRequest,
+                    newRequest
                 )
             }
         }
@@ -150,7 +151,8 @@ class TaskController @Inject constructor(
 
         Timber.tag(TAG).v(
             "Tasks after processing (count=%d):\n%s",
-            size, values.sortedBy { it.finishedAt }.joinToString("\n") {
+            size,
+            values.sortedBy { it.finishedAt }.joinToString("\n") {
                 it.toLogString()
             }
         )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/InternalTaskState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/InternalTaskState.kt
index 8ac4fd5df832c7f4bdec509a9a09d11c0fb86de8..737c9b73d5b87ae26af44cfed123e697e159b5f1 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/InternalTaskState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/InternalTaskState.kt
@@ -33,9 +33,10 @@ internal data class InternalTaskState(
             else -> ExecutionState.PENDING
         }
 
-    fun toLogString(): String = """
+    fun toLogString(): String =
+        """
     ${request.type.simpleName} state=${executionState.name} id=$id 
         startedAt=$startedAt finishedAt=$finishedAt result=${result != null} error=$error
         arguments=${request.arguments} config=$config
-    """.trimIndent()
+        """.trimIndent()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt
index f0169422b448ae4e1153a12fda48c7ff21f89b6d..bc815e3040b8a41cc7b389d7baf59781f43efea8 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt
@@ -9,7 +9,8 @@ import javax.inject.Singleton
 
 @Module(
     includes = [
-        QueueingTaskModule::class]
+        QueueingTaskModule::class
+    ]
 )
 class TaskModule {
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt
index f36759a4c8e687c2cca101c27e14fe1e4849e288..a34123bfa1c03cec56d0d0529566da0c5e9a682c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt
@@ -168,6 +168,8 @@ data class LowRisk(
         )
     }
 
+    fun isGoneOnContentLowView(context: Context) = getRiskContactLast(context) != null && !isInDetailsMode
+
     fun getProgressColorLowRisk(context: Context) = context.getColorCompat(R.color.colorStableLight)
 }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsAdapter.kt
index 692acb888ce3dd4aa103beb9fb71f45e17ec7d75..18c07154345ab5b3c6c479eb59c51cdabfde1ef8 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsAdapter.kt
@@ -33,28 +33,30 @@ class TracingDetailsAdapter(
     override val asyncDiffer: AsyncDiffer<DetailsItem> = AsyncDiffer(this)
 
     init {
-        modules.addAll(listOf(
-            StableIdMod(data),
-            DataBinderMod<DetailsItem, DetailsItemVH<DetailsItem, ViewBinding>>(data),
-            TypedVHCreatorMod({ data[it] is IncreasedRiskBox.Item }) { IncreasedRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is LowRiskBox.Item }) { LowRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is TracingFailedBox.Item }) { TracingFailedBox(it) },
-            TypedVHCreatorMod({ data[it] is TracingDisabledBox.Item }) { TracingDisabledBox(it) },
-            TypedVHCreatorMod({ data[it] is TracingProgressBox.Item }) { TracingProgressBox(it) },
-            TypedVHCreatorMod({ data[it] is DetailsFailedCalculationBox.Item }) { DetailsFailedCalculationBox(it) },
-            TypedVHCreatorMod({ data[it] is DetailsIncreasedRiskBox.Item }) { DetailsIncreasedRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is DetailsLowRiskBox.Item }) { DetailsLowRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is PeriodLoggedBox.Item }) { PeriodLoggedBox(it) },
-            TypedVHCreatorMod({ data[it] is BehaviorIncreasedRiskBox.Item }) { BehaviorIncreasedRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is BehaviorNormalRiskBox.Item }) { BehaviorNormalRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is AdditionalInfoLowRiskBox.Item }) { AdditionalInfoLowRiskBox(it) },
-            TypedVHCreatorMod({ data[it] is UserSurveyBox.Item }) {
-                UserSurveyBox(
-                    parent = it,
-                    onItemClickListener = onItemClickListener
-                )
-            }
-        ))
+        modules.addAll(
+            listOf(
+                StableIdMod(data),
+                DataBinderMod<DetailsItem, DetailsItemVH<DetailsItem, ViewBinding>>(data),
+                TypedVHCreatorMod({ data[it] is IncreasedRiskBox.Item }) { IncreasedRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is LowRiskBox.Item }) { LowRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is TracingFailedBox.Item }) { TracingFailedBox(it) },
+                TypedVHCreatorMod({ data[it] is TracingDisabledBox.Item }) { TracingDisabledBox(it) },
+                TypedVHCreatorMod({ data[it] is TracingProgressBox.Item }) { TracingProgressBox(it) },
+                TypedVHCreatorMod({ data[it] is DetailsFailedCalculationBox.Item }) { DetailsFailedCalculationBox(it) },
+                TypedVHCreatorMod({ data[it] is DetailsIncreasedRiskBox.Item }) { DetailsIncreasedRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is DetailsLowRiskBox.Item }) { DetailsLowRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is PeriodLoggedBox.Item }) { PeriodLoggedBox(it) },
+                TypedVHCreatorMod({ data[it] is BehaviorIncreasedRiskBox.Item }) { BehaviorIncreasedRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is BehaviorNormalRiskBox.Item }) { BehaviorNormalRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is AdditionalInfoLowRiskBox.Item }) { AdditionalInfoLowRiskBox(it) },
+                TypedVHCreatorMod({ data[it] is UserSurveyBox.Item }) {
+                    UserSurveyBox(
+                        parent = it,
+                        onItemClickListener = onItemClickListener
+                    )
+                }
+            )
+        )
     }
 
     override fun getItemCount(): Int = data.size
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragment.kt
index b21bf698e80c4186fd840cca67e761700809b76f..7732c39381124be8d7f5fa910e53c814247d6d56 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragment.kt
@@ -8,6 +8,7 @@ import androidx.recyclerview.widget.DefaultItemAnimator
 import androidx.recyclerview.widget.LinearLayoutManager
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.TracingDetailsFragmentLayoutBinding
+import de.rki.coronawarnapp.util.ExternalActionHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.lists.diffutil.update
 import de.rki.coronawarnapp.util.ui.doNavigate
@@ -55,6 +56,10 @@ class TracingDetailsFragment : Fragment(R.layout.tracing_details_fragment_layout
                 is TracingDetailsNavigationEvents.NavigateToSurveyConsentFragment -> doNavigate(
                     TracingDetailsFragmentDirections.actionRiskDetailsFragmentToSurveyConsentFragment(it.type)
                 )
+                is TracingDetailsNavigationEvents.NavigateToSurveyUrlInBrowser -> ExternalActionHelper.openUrl(
+                    this,
+                    it.url
+                )
             }
         }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragmentViewModel.kt
index df6725509fbc286e8108d1f01abe82866a2596c0..e7fa208798eaa4d03d3ace92c00d141d499ae932 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsFragmentViewModel.kt
@@ -4,6 +4,9 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.asLiveData
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.datadonation.survey.Surveys
+import de.rki.coronawarnapp.datadonation.survey.Surveys.ConsentResult.AlreadyGiven
+import de.rki.coronawarnapp.datadonation.survey.Surveys.ConsentResult.Needed
 import de.rki.coronawarnapp.risk.RiskState
 import de.rki.coronawarnapp.risk.storage.RiskLevelStorage
 import de.rki.coronawarnapp.risk.tryLatestResultsWithDefaults
@@ -42,7 +45,8 @@ class TracingDetailsFragmentViewModel @AssistedInject constructor(
     riskLevelStorage: RiskLevelStorage,
     tracingDetailsItemProvider: TracingDetailsItemProvider,
     tracingStateProviderFactory: TracingStateProvider.Factory,
-    private val tracingRepository: TracingRepository
+    private val tracingRepository: TracingRepository,
+    private val surveys: Surveys
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
     private val tracingStateProvider by lazy { tracingStateProviderFactory.create(isDetailsMode = true) }
@@ -108,7 +112,20 @@ class TracingDetailsFragmentViewModel @AssistedInject constructor(
     fun onItemClicked(item: DetailsItem) {
         when (item) {
             is UserSurveyBox.Item ->
-                routeToScreen.postValue(TracingDetailsNavigationEvents.NavigateToSurveyConsentFragment(item.type))
+                launch {
+                    when (val consentResult = surveys.isConsentNeeded(Surveys.Type.HIGH_RISK_ENCOUNTER)) {
+                        is Needed -> routeToScreen.postValue(
+                            TracingDetailsNavigationEvents.NavigateToSurveyConsentFragment(
+                                item.type
+                            )
+                        )
+                        is AlreadyGiven -> routeToScreen.postValue(
+                            TracingDetailsNavigationEvents.NavigateToSurveyUrlInBrowser(
+                                consentResult.surveyLink
+                            )
+                        )
+                    }
+                }
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProvider.kt
index da1fbc68b8a6812277aa419d82b62401be54eeac..c5a0e75bc397264c42289f4983dc2073034d1fb9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProvider.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProvider.kt
@@ -47,7 +47,10 @@ class TracingDetailsItemProvider @Inject constructor(
         val (latestCalc, _) = riskLevelResults.tryLatestResultsWithDefaults()
 
         mutableListOf<DetailsItem>().apply {
-            if (latestCalc.riskState == RiskState.LOW_RISK && latestCalc.matchedKeyCount > 0) {
+            if (status != Status.TRACING_INACTIVE &&
+                latestCalc.riskState == RiskState.LOW_RISK &&
+                latestCalc.matchedKeyCount > 0
+            ) {
                 add(AdditionalInfoLowRiskBox.Item)
             }
 
@@ -60,8 +63,10 @@ class TracingDetailsItemProvider @Inject constructor(
                 )
             }.also { add(it) }
 
-            if (latestCalc.riskState == RiskState.INCREASED_RISK &&
-                                        availableSurveys.contains(Surveys.Type.HIGH_RISK_ENCOUNTER)) {
+            if (status != Status.TRACING_INACTIVE &&
+                latestCalc.riskState == RiskState.INCREASED_RISK &&
+                availableSurveys.contains(Surveys.Type.HIGH_RISK_ENCOUNTER)
+            ) {
                 add(UserSurveyBox.Item(Surveys.Type.HIGH_RISK_ENCOUNTER))
             }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsNavigationEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsNavigationEvents.kt
index 221ebc91e8e9ebd767706a140276e2647c3f1749..9ba870a63c02d6048d225a6d84114e3061e8e730 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsNavigationEvents.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsNavigationEvents.kt
@@ -3,5 +3,6 @@ package de.rki.coronawarnapp.tracing.ui.details
 import de.rki.coronawarnapp.datadonation.survey.Surveys
 
 sealed class TracingDetailsNavigationEvents {
-    class NavigateToSurveyConsentFragment(val type: Surveys.Type) : TracingDetailsNavigationEvents()
+    data class NavigateToSurveyConsentFragment(val type: Surveys.Type) : TracingDetailsNavigationEvents()
+    data class NavigateToSurveyUrlInBrowser(val url: String) : TracingDetailsNavigationEvents()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/survey/UserSurveyBox.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/survey/UserSurveyBox.kt
index bdb5a7a04a06b286db0ea9b83048b2da3b880cd5..ec63c60d96a3753a49f7e78431f228e26b5a78a0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/survey/UserSurveyBox.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/survey/UserSurveyBox.kt
@@ -29,6 +29,7 @@ class UserSurveyBox(
         item: Item,
         payloads: List<Any>
     ) -> Unit = { item, _ ->
+        itemView.setOnClickListener { onItemClickListener(item) }
         tracingDetailsSurveyCardButton.setOnClickListener { onItemClickListener(item) }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragment.kt
index eca4d94a098bc9bf76d1ea440c611afce398221e..a3d333a237db33eea300ae776f2449a2de4e8da6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragment.kt
@@ -10,12 +10,12 @@ import de.rki.coronawarnapp.databinding.FragmentSettingsTracingBinding
 import de.rki.coronawarnapp.nearby.InternalExposureNotificationClient
 import de.rki.coronawarnapp.tracing.ui.TracingConsentDialog
 import de.rki.coronawarnapp.tracing.ui.settings.SettingsTracingFragmentViewModel.Event
-import de.rki.coronawarnapp.ui.main.MainActivity
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.ExternalActionHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.popBackStack
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
@@ -88,26 +88,28 @@ class SettingsTracingFragment : Fragment(R.layout.fragment_settings_tracing), Au
     }
 
     private fun setButtonOnClickListener() {
-        val switch = binding.settingsTracingSwitchRow.settingsSwitchRowSwitch
-        val back = binding.settingsTracingHeader.headerButtonBack.buttonIcon
-        val bluetooth = binding.settingsTracingStatusBluetooth.tracingStatusCardButton
-        val location = binding.settingsTracingStatusLocation.tracingStatusCardButton
-        val interoperability = binding.settingsInteroperabilityRow.settingsPlainRow
 
+        binding.toolbar.setNavigationOnClickListener {
+            popBackStack()
+        }
+
+        val switch = binding.settingsTracingSwitchRow.settingsSwitchRowSwitch
         switch.setOnCheckedChangeListener { view, isChecked ->
             if (!view.isPressed) return@setOnCheckedChangeListener
             onTracingToggled(isChecked)
         }
 
-        back.setOnClickListener {
-            (activity as MainActivity).goBack()
-        }
+        val bluetooth = binding.settingsTracingStatusBluetooth.tracingStatusCardButton
         bluetooth.setOnClickListener {
             ExternalActionHelper.toMainSettings(requireContext())
         }
+
+        val location = binding.settingsTracingStatusLocation.tracingStatusCardButton
         location.setOnClickListener {
             ExternalActionHelper.toMainSettings(requireContext())
         }
+
+        val interoperability = binding.settingsInteroperabilityRow
         interoperability.setOnClickListener {
             navigateToInteroperability()
         }
@@ -130,7 +132,8 @@ class SettingsTracingFragment : Fragment(R.layout.fragment_settings_tracing), Au
             R.string.onboarding_manual_required_dialog_body,
             R.string.onboarding_manual_required_dialog_button,
             null,
-            false, {
+            false,
+            {
                 // close dialog
             }
         )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragmentViewModel.kt
index 05e821f67d6eab09a8133558cf0b64688e10e495..ca9bc2c5c034784514d93c88d181a0869dc43875 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/settings/SettingsTracingFragmentViewModel.kt
@@ -42,7 +42,8 @@ class SettingsTracingFragmentViewModel @AssistedInject constructor(
         tracingRepository.activeTracingDaysInRetentionPeriod,
         tracingStatus.generalStatus
     ) { activeTracingDays,
-        status -> PeriodLoggedBox.Item(activeTracingDays.toInt(), status)
+        status ->
+        PeriodLoggedBox.Item(activeTracingDays.toInt(), status)
     }
         .onEach { Timber.v("logginPeriod onEach") }
         .asLiveData(dispatcherProvider.Main)
@@ -65,36 +66,40 @@ class SettingsTracingFragmentViewModel @AssistedInject constructor(
     }
 
     private val tracingPermissionHelper =
-        tracingPermissionHelperFactory.create(object : TracingPermissionHelper.Callback {
-            override fun onUpdateTracingStatus(isTracingEnabled: Boolean) {
-                launch {
-                    if (isTracingEnabled) {
-                        // check if background processing is switched off,
-                        // if it is, show the manual calculation dialog explanation before turning on.
-                        if (!backgroundStatus.isIgnoringBatteryOptimizations.first()) {
-                            events.postValue(Event.ManualCheckingDialog)
+        tracingPermissionHelperFactory.create(
+            object : TracingPermissionHelper.Callback {
+                override fun onUpdateTracingStatus(isTracingEnabled: Boolean) {
+                    launch {
+                        if (isTracingEnabled) {
+                            // check if background processing is switched off,
+                            // if it is, show the manual calculation dialog explanation before turning on.
+                            if (!backgroundStatus.isIgnoringBatteryOptimizations.first()) {
+                                events.postValue(Event.ManualCheckingDialog)
+                            }
+                            BackgroundWorkScheduler.startWorkScheduler()
                         }
-                        BackgroundWorkScheduler.startWorkScheduler()
+                        isTracingSwitchChecked.postValue(isTracingEnabled)
                     }
-                    isTracingSwitchChecked.postValue(isTracingEnabled)
                 }
-            }
 
-            override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
-                events.postValue(Event.TracingConsentDialog { consentGiven ->
-                    if (!consentGiven) isTracingSwitchChecked.postValue(false)
-                    onConsentResult(consentGiven)
-                })
-            }
+                override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
+                    events.postValue(
+                        Event.TracingConsentDialog { consentGiven ->
+                            if (!consentGiven) isTracingSwitchChecked.postValue(false)
+                            onConsentResult(consentGiven)
+                        }
+                    )
+                }
 
-            override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
-                events.postValue(Event.RequestPermissions(permissionRequest))
-            }
+                override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
+                    events.postValue(Event.RequestPermissions(permissionRequest))
+                }
 
-            override fun onError(error: Throwable) {
-                Timber.w(error, "Failed to start tracing")
+                override fun onError(error: Throwable) {
+                    Timber.w(error, "Failed to start tracing")
+                }
             }
-        })
+        )
 
     fun onTracingToggled(isChecked: Boolean) {
         try {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/SingleLiveEvent.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/SingleLiveEvent.kt
index b38213bbfed818e03b0c956456335967143f1f4c..4a3d66dea96514640b7d1fe014ad5c0e2ed6897f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/SingleLiveEvent.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/SingleLiveEvent.kt
@@ -48,11 +48,14 @@ class SingleLiveEvent<T> : MutableLiveData<T>() {
                 .w("Multiple observers registered but only one will be notified of changes.")
         }
         // Observe the internal MutableLiveData
-        super.observe(owner, Observer { t ->
-            if (pending.compareAndSet(true, false)) {
-                observer.onChanged(t)
+        super.observe(
+            owner,
+            Observer { t ->
+                if (pending.compareAndSet(true, false)) {
+                    observer.onChanged(t)
+                }
             }
-        })
+        )
     }
 
     @MainThread
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt
index e0e7143283072ad7e0f69c958fd67cbe954f78e1..82aed69cd82abcdeb1b657b78858ae9b78cff7f3 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt
@@ -27,10 +27,12 @@ class InformationAboutFragment : Fragment(R.layout.fragment_information_about) {
     private fun setLinks() {
         binding.informationAboutEasyLanguage
             .setOnClickListener {
-            val browserIntent = Intent(Intent.ACTION_VIEW,
-                Uri.parse(getString(R.string.onboarding_tracing_easy_language_explanation_url)))
-            startActivity(browserIntent)
-        }
+                val browserIntent = Intent(
+                    Intent.ACTION_VIEW,
+                    Uri.parse(getString(R.string.onboarding_tracing_easy_language_explanation_url))
+                )
+                startActivity(browserIntent)
+            }
     }
 
     override fun onResume() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/interoperability/InteroperabilityConfigurationFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/interoperability/InteroperabilityConfigurationFragment.kt
index 52beb8ba1fc8bb080a451945f501e52c355dcdae..29b4061f30531d9941187388a30e020f54a208e7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/interoperability/InteroperabilityConfigurationFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/interoperability/InteroperabilityConfigurationFragment.kt
@@ -60,15 +60,14 @@ class InteroperabilityConfigurationFragment :
             }
         }
 
-        binding.interoperabilityConfigurationCountryList
-            .noCountriesRiskdetailsInfoview.riskDetailsOpenSettingsButton.setOnClickListener {
-                val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
-                    Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
-                } else {
-                    Intent(Settings.ACTION_SETTINGS)
-                }
-                startActivity(intent)
+        binding.noCountriesRiskdetailsInfoview.riskDetailsOpenSettingsButton.setOnClickListener {
+            val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+                Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
+            } else {
+                Intent(Settings.ACTION_SETTINGS)
             }
+            startActivity(intent)
+        }
     }
 
     private fun registerNetworkCallback() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivity.kt
index 8740ce471c92a2ff3b31c2c13d4295228a67fb3f..90c3fe4bce7c607f8ef654177a82015d632e8a30 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivity.kt
@@ -9,6 +9,7 @@ import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.main.MainActivity
 import de.rki.coronawarnapp.ui.onboarding.OnboardingActivity
 import de.rki.coronawarnapp.util.di.AppInjector
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
 import javax.inject.Inject
@@ -16,6 +17,7 @@ import javax.inject.Inject
 class LauncherActivity : AppCompatActivity() {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+
     private val vm: LauncherActivityViewModel by cwaViewModels(
         ownerProducer = { viewModelStore },
         factoryProducer = { viewModelFactory }
@@ -28,12 +30,12 @@ class LauncherActivity : AppCompatActivity() {
         vm.events.observe(this) {
             when (it) {
                 LauncherEvent.GoToOnboarding -> {
-                    OnboardingActivity.start(this)
+                    OnboardingActivity.start(this, AppShortcutsHelper.getShortcutType(intent))
                     this.overridePendingTransition(0, 0)
                     finish()
                 }
                 LauncherEvent.GoToMainActivity -> {
-                    MainActivity.start(this)
+                    MainActivity.start(this, AppShortcutsHelper.getShortcutType(intent))
                     this.overridePendingTransition(0, 0)
                     finish()
                 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModel.kt
index d42ce56f03bf50c7fbc47a54ec23d3b458a1f5bc..acd7d63e6dc7763ab70d3da95733c8f1e61afded 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModel.kt
@@ -2,6 +2,8 @@ package de.rki.coronawarnapp.ui.launcher
 
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.environment.BuildConfigWrap
+import de.rki.coronawarnapp.main.CWASettings
 import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.update.UpdateChecker
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
@@ -11,7 +13,8 @@ import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
 
 class LauncherActivityViewModel @AssistedInject constructor(
     private val updateChecker: UpdateChecker,
-    dispatcherProvider: DispatcherProvider
+    dispatcherProvider: DispatcherProvider,
+    private val cwaSettings: CWASettings,
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
     val events = SingleLiveEvent<LauncherEvent>()
@@ -21,12 +24,16 @@ class LauncherActivityViewModel @AssistedInject constructor(
             val updateResult = updateChecker.checkForUpdate()
             when {
                 updateResult.isUpdateNeeded -> LauncherEvent.ShowUpdateDialog(updateResult.updateIntent?.invoke()!!)
-                LocalData.isOnboarded() -> LauncherEvent.GoToMainActivity
-                else -> LauncherEvent.GoToOnboarding
+                isJustInstalledOrUpdated() -> LauncherEvent.GoToOnboarding
+                else -> LauncherEvent.GoToMainActivity
             }.let { events.postValue(it) }
         }
     }
 
+    private fun isJustInstalledOrUpdated() =
+        !LocalData.isOnboarded() || !LocalData.isInteroperabilityShownAtLeastOnce ||
+            cwaSettings.lastChangelogVersion.value < BuildConfigWrap.VERSION_CODE
+
     @AssistedFactory
     interface Factory : SimpleCWAViewModelFactory<LauncherActivityViewModel>
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt
index 7983f54e6eb845672907c2f89018a16f63d5733a..f6984c21e47c7cae1c08ef02749d3d15df21926b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt
@@ -7,20 +7,25 @@ import android.os.Bundle
 import android.provider.Settings
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
+import androidx.core.net.toUri
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentManager
 import androidx.navigation.NavController
 import androidx.navigation.NavGraph
+import com.google.android.material.bottomnavigation.BottomNavigationView
 import dagger.android.AndroidInjector
 import dagger.android.DispatchingAndroidInjector
 import dagger.android.HasAndroidInjector
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.contactdiary.retention.ContactDiaryWorkScheduler
+import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewFragmentDirections
 import de.rki.coronawarnapp.databinding.ActivityMainBinding
+import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsScheduler
 import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler
 import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.ui.base.startActivitySafely
 import de.rki.coronawarnapp.ui.setupWithNavController2
+import de.rki.coronawarnapp.util.AppShortcuts
 import de.rki.coronawarnapp.util.CWADebug
 import de.rki.coronawarnapp.util.ConnectivityHelper
 import de.rki.coronawarnapp.util.DialogHelper
@@ -30,6 +35,7 @@ import de.rki.coronawarnapp.util.ui.findNavController
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
 import de.rki.coronawarnapp.worker.BackgroundWorkScheduler
+import org.joda.time.LocalDate
 import javax.inject.Inject
 
 /**
@@ -41,8 +47,24 @@ import javax.inject.Inject
  */
 class MainActivity : AppCompatActivity(), HasAndroidInjector {
     companion object {
-        fun start(context: Context) {
-            context.startActivity(Intent(context, MainActivity::class.java))
+        private const val EXTRA_DATA = "shortcut"
+
+        fun start(context: Context, shortcut: AppShortcuts? = null) {
+            val intent = Intent(context, MainActivity::class.java).apply {
+                if (shortcut != null) {
+                    putExtra(EXTRA_DATA, shortcut.toString())
+                    flags = flags or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
+                }
+            }
+            context.startActivity(intent)
+        }
+
+        private fun getShortcutFromIntent(intent: Intent): AppShortcuts? {
+            val extra = intent.getStringExtra(EXTRA_DATA)
+            if (extra != null) {
+                return AppShortcuts.valueOf(extra)
+            }
+            return null
         }
     }
 
@@ -61,6 +83,7 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector {
     @Inject lateinit var powerManagement: PowerManagement
     @Inject lateinit var deadmanScheduler: DeadmanNotificationScheduler
     @Inject lateinit var contactDiaryWorkScheduler: ContactDiaryWorkScheduler
+    @Inject lateinit var dataDonationAnalyticsScheduler: DataDonationAnalyticsScheduler
 
     override fun onCreate(savedInstanceState: Bundle?) {
         AppInjector.setup(this)
@@ -89,6 +112,37 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector {
         vm.isOnboardingDone.observe(this) { isOnboardingDone ->
             startNestedGraphDestination(navController, isOnboardingDone)
         }
+
+        if (savedInstanceState == null) {
+            processExtraParameters()
+        }
+    }
+
+    private fun processExtraParameters() {
+        when (getShortcutFromIntent(intent)) {
+            AppShortcuts.CONTACT_DIARY -> {
+                goToContactJournal()
+            }
+        }
+    }
+
+    private fun goToContactJournal() {
+        val navController = supportFragmentManager.findNavController(R.id.nav_host_fragment)
+        findViewById<BottomNavigationView>(R.id.main_bottom_navigation).selectedItemId =
+            R.id.contact_diary_nav_graph
+        val nestedGraph = navController.graph.findNode(R.id.contact_diary_nav_graph) as NavGraph
+
+        if (vm.isOnboardingDone.value == true) {
+            nestedGraph.startDestination = R.id.contactDiaryOverviewFragment
+            navController.navigate(
+                ContactDiaryOverviewFragmentDirections.actionContactDiaryOverviewFragmentToContactDiaryDayFragment(
+                    selectedDay = LocalDate().toString()
+                )
+            )
+        } else {
+            nestedGraph.startDestination = R.id.contactDiaryOnboardingFragment
+            navController.navigate("coronawarnapp://contact-journal/oboarding/?goToDay=true".toUri())
+        }
     }
 
     private fun startNestedGraphDestination(navController: NavController, isOnboardingDone: Boolean) {
@@ -108,6 +162,7 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector {
         scheduleWork()
         vm.doBackgroundNoiseCheck()
         contactDiaryWorkScheduler.schedulePeriodic()
+        dataDonationAnalyticsScheduler.schedulePeriodic()
         if (!LocalData.isAllowedToSubmitDiagnosisKeys()) {
             deadmanScheduler.schedulePeriodic()
         }
@@ -120,13 +175,16 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector {
             R.string.onboarding_energy_optimized_dialog_body,
             R.string.onboarding_energy_optimized_dialog_button_positive,
             R.string.onboarding_energy_optimized_dialog_button_negative,
-            false, {
+            false,
+            {
                 // go to battery optimization
                 startActivitySafely(powerManagement.toBatteryOptimizationSettingsIntent)
-            }, {
+            },
+            {
                 // keep battery optimization enabled
                 showManualCheckingRequiredDialog()
-            })
+            }
+        )
         DialogHelper.showDialog(dialog)
     }
 
@@ -162,7 +220,8 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector {
             },
             negativeButtonFunction = {
                 // declined
-            })
+            }
+        )
         DialogHelper.showDialog(dialog)
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityActions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityActions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f836e972d735d5bb966c4ba88972daac197e6899
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityActions.kt
@@ -0,0 +1,5 @@
+package de.rki.coronawarnapp.ui.main
+
+enum class MainActivityActions {
+    ADD_DIARY_ENTRY
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt
index b1f148c10f694b00459ab69003c75bf0d68657af..72222d127801669f8442f1c624e67c85de13ce85 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityModule.kt
@@ -4,6 +4,7 @@ import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
 import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.datadonation.analytics.ui.AnalyticsUIModule
 import de.rki.coronawarnapp.release.NewReleaseInfoFragment
 import de.rki.coronawarnapp.release.NewReleaseInfoFragmentModule
 import de.rki.coronawarnapp.tracing.ui.details.TracingDetailsFragmentModule
@@ -11,6 +12,7 @@ import de.rki.coronawarnapp.ui.information.InformationFragmentModule
 import de.rki.coronawarnapp.ui.interoperability.InteroperabilityConfigurationFragment
 import de.rki.coronawarnapp.ui.interoperability.InteroperabilityConfigurationFragmentModule
 import de.rki.coronawarnapp.ui.main.home.HomeFragmentModule
+import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaAnalyticsModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaInteroperabilityModule
 import de.rki.coronawarnapp.ui.settings.SettingFragmentsModule
 import de.rki.coronawarnapp.ui.settings.SettingsResetFragment
@@ -22,13 +24,15 @@ import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
 
 @Module(
     includes = [
+        OnboardingDeltaAnalyticsModule::class,
         OnboardingDeltaInteroperabilityModule::class,
         HomeFragmentModule::class,
         TracingDetailsFragmentModule::class,
         SettingFragmentsModule::class,
         SubmissionFragmentModule::class,
         InformationFragmentModule::class,
-        NewReleaseInfoFragmentModule::class
+        NewReleaseInfoFragmentModule::class,
+        AnalyticsUIModule::class
     ]
 )
 abstract class MainActivityModule {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityViewModel.kt
index f4c94877b38e49d3153cdcc70f89e5d24a258838..7db7bcbe8087531746be32bc27e7c5473de74daa 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivityViewModel.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.ui.main
 
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings
@@ -27,7 +29,8 @@ class MainActivityViewModel @AssistedInject constructor(
 
     val showBackgroundJobDisabledNotification = SingleLiveEvent<Unit>()
     val showEnergyOptimizedEnabledForBackground = SingleLiveEvent<Unit>()
-    val isOnboardingDone = SingleLiveEvent<Boolean>()
+    private val mutableIsOnboardingDone = MutableLiveData<Boolean>()
+    val isOnboardingDone: LiveData<Boolean> = mutableIsOnboardingDone
 
     init {
         if (CWADebug.isDeviceForTestersBuild) {
@@ -64,7 +67,7 @@ class MainActivityViewModel @AssistedInject constructor(
     }
 
     fun onBottomNavSelected() {
-        isOnboardingDone.value = contactDiarySettings.isOnboardingDone
+        mutableIsOnboardingDone.value = contactDiarySettings.isOnboardingDone
     }
 
     private suspend fun checkForEnergyOptimizedEnabled() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt
index 9522b2d1c1762b8ffe6ef010468b68bf1847d1ab..82661eb50dc7589f7f1e8787280abfe117903718 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt
@@ -30,34 +30,36 @@ import de.rki.coronawarnapp.util.lists.modular.mods.SavedStateMod
 import de.rki.coronawarnapp.util.lists.modular.mods.StableIdMod
 import de.rki.coronawarnapp.util.lists.modular.mods.TypedVHCreatorMod
 
-class HomeAdapter : ModularAdapter<HomeAdapter.HomeItemVH<HomeItem, ViewBinding>>(),
+class HomeAdapter :
+    ModularAdapter<HomeAdapter.HomeItemVH<HomeItem, ViewBinding>>(),
     AsyncDiffUtilAdapter<HomeItem> {
 
     override val asyncDiffer: AsyncDiffer<HomeItem> = AsyncDiffer(adapter = this)
 
     init {
-        modules.addAll(listOf(
-            StableIdMod(data),
-            DataBinderMod<HomeItem, HomeItemVH<HomeItem, ViewBinding>>(data),
-            TypedVHCreatorMod({ data[it] is FAQCard.Item }) { FAQCard(it) },
-            TypedVHCreatorMod({ data[it] is ReenableRiskCard.Item }) { ReenableRiskCard(it) },
-            TypedVHCreatorMod({ data[it] is IncreasedRiskCard.Item }) { IncreasedRiskCard(it) },
-            TypedVHCreatorMod({ data[it] is LowRiskCard.Item }) { LowRiskCard(it) },
-            TypedVHCreatorMod({ data[it] is TracingFailedCard.Item }) { TracingFailedCard(it) },
-            TypedVHCreatorMod({ data[it] is TracingDisabledCard.Item }) { TracingDisabledCard(it) },
-            TypedVHCreatorMod({ data[it] is TracingProgressCard.Item }) { TracingProgressCard(it) },
-            TypedVHCreatorMod({ data[it] is TestSubmissionDoneCard.Item }) { TestSubmissionDoneCard(it) },
-            TypedVHCreatorMod({ data[it] is TestInvalidCard.Item }) { TestInvalidCard(it) },
-            TypedVHCreatorMod({ data[it] is TestErrorCard.Item }) { TestErrorCard(it) },
-            TypedVHCreatorMod({ data[it] is TestFetchingCard.Item }) { TestFetchingCard(it) },
-            TypedVHCreatorMod({ data[it] is TestPositiveCard.Item }) { TestPositiveCard(it) },
-            TypedVHCreatorMod({ data[it] is TestNegativeCard.Item }) { TestNegativeCard(it) },
-            TypedVHCreatorMod({ data[it] is TestReadyCard.Item }) { TestReadyCard(it) },
-            TypedVHCreatorMod({ data[it] is TestPendingCard.Item }) { TestPendingCard(it) },
-            TypedVHCreatorMod({ data[it] is TestUnregisteredCard.Item }) { TestUnregisteredCard(it) },
-            TypedVHCreatorMod({ data[it] is StatisticsHomeCard.Item }) { StatisticsHomeCard(it) },
-            SavedStateMod<HomeItemVH<HomeItem, ViewBinding>>() // For statistics card scroll position
-        )
+        modules.addAll(
+            listOf(
+                StableIdMod(data),
+                DataBinderMod<HomeItem, HomeItemVH<HomeItem, ViewBinding>>(data),
+                TypedVHCreatorMod({ data[it] is FAQCard.Item }) { FAQCard(it) },
+                TypedVHCreatorMod({ data[it] is ReenableRiskCard.Item }) { ReenableRiskCard(it) },
+                TypedVHCreatorMod({ data[it] is IncreasedRiskCard.Item }) { IncreasedRiskCard(it) },
+                TypedVHCreatorMod({ data[it] is LowRiskCard.Item }) { LowRiskCard(it) },
+                TypedVHCreatorMod({ data[it] is TracingFailedCard.Item }) { TracingFailedCard(it) },
+                TypedVHCreatorMod({ data[it] is TracingDisabledCard.Item }) { TracingDisabledCard(it) },
+                TypedVHCreatorMod({ data[it] is TracingProgressCard.Item }) { TracingProgressCard(it) },
+                TypedVHCreatorMod({ data[it] is TestSubmissionDoneCard.Item }) { TestSubmissionDoneCard(it) },
+                TypedVHCreatorMod({ data[it] is TestInvalidCard.Item }) { TestInvalidCard(it) },
+                TypedVHCreatorMod({ data[it] is TestErrorCard.Item }) { TestErrorCard(it) },
+                TypedVHCreatorMod({ data[it] is TestFetchingCard.Item }) { TestFetchingCard(it) },
+                TypedVHCreatorMod({ data[it] is TestPositiveCard.Item }) { TestPositiveCard(it) },
+                TypedVHCreatorMod({ data[it] is TestNegativeCard.Item }) { TestNegativeCard(it) },
+                TypedVHCreatorMod({ data[it] is TestReadyCard.Item }) { TestReadyCard(it) },
+                TypedVHCreatorMod({ data[it] is TestPendingCard.Item }) { TestPendingCard(it) },
+                TypedVHCreatorMod({ data[it] is TestUnregisteredCard.Item }) { TestUnregisteredCard(it) },
+                TypedVHCreatorMod({ data[it] is StatisticsHomeCard.Item }) { StatisticsHomeCard(it) },
+                SavedStateMod<HomeItemVH<HomeItem, ViewBinding>>() // For statistics card scroll position
+            )
         )
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt
index 0689d01448e93b884529c2396fb1d98f6a610bac..cf4fa15014bc8b981fe90186c02150ba84bc6b2f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt
@@ -80,11 +80,6 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
 
         vm.popupEvents.observe2(this) { event ->
             when (event) {
-                HomeFragmentEvents.ShowInteropDeltaOnboarding -> {
-                    doNavigate(
-                        HomeFragmentDirections.actionMainFragmentToOnboardingDeltaInteroperabilityFragment()
-                    )
-                }
                 is HomeFragmentEvents.ShowTracingExplanation -> {
                     tracingExplanationDialog.show(event.activeTracingDaysInRetentionPeriod) {
                         vm.tracingExplanationWasShown()
@@ -97,11 +92,6 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
                     )
                 }
                 HomeFragmentEvents.ShowDeleteTestDialog -> showRemoveTestDialog()
-
-                HomeFragmentEvents.ShowNewReleaseFragment -> doNavigate(
-                    HomeFragmentDirections.actionMainFragmentToNewReleaseInfoFragment(false)
-                )
-
                 HomeFragmentEvents.GoToStatisticsExplanation -> doNavigate(
                     HomeFragmentDirections.actionMainFragmentToStatisticsExplanationFragment()
                 )
@@ -111,7 +101,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
             }
         }
 
-        vm.showPopUpsOrNavigate()
+        vm.showPopUps()
 
         vm.showLoweredRiskLevelDialog.observe2(this) {
             if (it) showRiskLevelLoweredDialog()
@@ -127,6 +117,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
     override fun onResume() {
         super.onResume()
         vm.refreshRequiredData()
+        vm.restoreAppShortcuts()
         binding.container.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt
index 422dd904a258620d1727cb5f893a2d46c64fa0ad..595e0aa4f4b7a69e4f8d2267f6430c70597731c7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.ui.main.home
 
 sealed class HomeFragmentEvents {
-    object ShowInteropDeltaOnboarding : HomeFragmentEvents()
 
     data class ShowTracingExplanation(
         val activeTracingDaysInRetentionPeriod: Long
@@ -13,7 +12,5 @@ sealed class HomeFragmentEvents {
 
     object ShowReactivateRiskCheckDialog : HomeFragmentEvents()
 
-    object ShowNewReleaseFragment : HomeFragmentEvents()
-
     object GoToStatisticsExplanation : HomeFragmentEvents()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
index 24efce05b8ca627a6a92ea0a9f9df3a41f96868d..86309e8ec5e3746a6f683f364e0117eb8a5c6be4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
@@ -7,7 +7,6 @@ import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler
-import de.rki.coronawarnapp.environment.BuildConfigWrap
 import de.rki.coronawarnapp.main.CWASettings
 import de.rki.coronawarnapp.notification.ShareTestResultNotificationService
 import de.rki.coronawarnapp.risk.TimeVariables
@@ -50,7 +49,6 @@ import de.rki.coronawarnapp.tracing.ui.homecards.TracingProgressCard
 import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState
 import de.rki.coronawarnapp.tracing.ui.statusbar.toHeaderState
 import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents.ShowErrorResetDialog
-import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents.ShowInteropDeltaOnboarding
 import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents.ShowTracingExplanation
 import de.rki.coronawarnapp.ui.main.home.items.FAQCard
 import de.rki.coronawarnapp.ui.main.home.items.HomeItem
@@ -59,6 +57,7 @@ import de.rki.coronawarnapp.util.DeviceUIState
 import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.security.EncryptionErrorResetTool
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
@@ -81,7 +80,8 @@ class HomeFragmentViewModel @AssistedInject constructor(
     private val cwaSettings: CWASettings,
     appConfigProvider: AppConfigProvider,
     statisticsProvider: StatisticsProvider,
-    private val deadmanNotificationScheduler: DeadmanNotificationScheduler
+    private val deadmanNotificationScheduler: DeadmanNotificationScheduler,
+    private val appShortcutsHelper: AppShortcutsHelper
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
     private val tracingStateProvider by lazy { tracingStateProviderFactory.create(isDetailsMode = false) }
@@ -95,29 +95,19 @@ class HomeFragmentViewModel @AssistedInject constructor(
 
     val popupEvents = SingleLiveEvent<HomeFragmentEvents>()
 
-    fun showPopUpsOrNavigate() {
-        when {
-            !LocalData.isInteroperabilityShownAtLeastOnce -> {
-                popupEvents.postValue(ShowInteropDeltaOnboarding)
-            }
-            cwaSettings.lastChangelogVersion.value < BuildConfigWrap.VERSION_CODE -> {
-                popupEvents.postValue(HomeFragmentEvents.ShowNewReleaseFragment)
+    fun showPopUps() {
+        launch {
+            if (!LocalData.tracingExplanationDialogWasShown()) {
+                popupEvents.postValue(
+                    ShowTracingExplanation(
+                        TimeVariables.getActiveTracingDaysInRetentionPeriod()
+                    )
+                )
             }
-            else -> {
-                launch {
-                    if (!LocalData.tracingExplanationDialogWasShown()) {
-                        popupEvents.postValue(
-                            ShowTracingExplanation(
-                                TimeVariables.getActiveTracingDaysInRetentionPeriod()
-                            )
-                        )
-                    }
-                }
-                launch {
-                    if (errorResetTool.isResetNoticeToBeShown) {
-                        popupEvents.postValue(ShowErrorResetDialog)
-                    }
-                }
+        }
+        launch {
+            if (errorResetTool.isResetNoticeToBeShown) {
+                popupEvents.postValue(ShowErrorResetDialog)
             }
         }
     }
@@ -239,14 +229,20 @@ class HomeFragmentViewModel @AssistedInject constructor(
                 add(
                     ReenableRiskCard.Item(
                         state = submissionState,
-                        onClickAction = { popupEvents.postValue(HomeFragmentEvents.ShowReactivateRiskCheckDialog) })
+                        onClickAction = { popupEvents.postValue(HomeFragmentEvents.ShowReactivateRiskCheckDialog) }
+                    )
                 )
             }
 
             if (statsData.isDataAvailable) {
-                add(StatisticsHomeCard.Item(data = statsData, onHelpAction = {
-                    popupEvents.postValue(HomeFragmentEvents.GoToStatisticsExplanation)
-                }))
+                add(
+                    StatisticsHomeCard.Item(
+                        data = statsData,
+                        onHelpAction = {
+                            popupEvents.postValue(HomeFragmentEvents.GoToStatisticsExplanation)
+                        }
+                    )
+                )
             }
 
             add(FAQCard.Item(onClickAction = { openFAQUrlEvent.postValue(Unit) }))
@@ -301,6 +297,12 @@ class HomeFragmentViewModel @AssistedInject constructor(
         }
     }
 
+    fun restoreAppShortcuts() {
+        launch {
+            appShortcutsHelper.restoreAppShortcut()
+        }
+    }
+
     fun tracingExplanationWasShown() {
         LocalData.tracingExplanationDialogWasShown(true)
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/FAQCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/FAQCard.kt
index 320ba32e83ee2e5001753b8505a3f55ba6efc04d..932be86b727d2c99c163bc5091454a2c151ea42e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/FAQCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/FAQCard.kt
@@ -8,7 +8,8 @@ import de.rki.coronawarnapp.ui.main.home.items.FAQCard.Item
 import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer
 
 class FAQCard(parent: ViewGroup) : HomeAdapter.HomeItemVH<Item, HomeFaqCardLayoutBinding>(
-    R.layout.home_card_container_layout, parent
+    R.layout.home_card_container_layout,
+    parent
 ) {
 
     override val viewBinding = lazy {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/ReenableRiskCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/ReenableRiskCard.kt
index 6f75ef68bf9581410789af41d9f7f476980993c6..2c181b509efa5f043ccfe2a7f2b4add8338fdba9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/ReenableRiskCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/ReenableRiskCard.kt
@@ -10,7 +10,8 @@ import de.rki.coronawarnapp.ui.main.home.items.ReenableRiskCard.Item
 import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer
 
 class ReenableRiskCard(parent: ViewGroup) : HomeAdapter.HomeItemVH<Item, HomeReenableRiskCardLayoutBinding>(
-    R.layout.home_card_container_layout, parent
+    R.layout.home_card_container_layout,
+    parent
 ) {
 
     override val viewBinding = lazy {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivity.kt
index a6b5218dbb30dd70cd26729978092a90712e2e02..fe8a9252ff56112046101f42edf4e0a5c6ff8861 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivity.kt
@@ -15,6 +15,7 @@ import de.rki.coronawarnapp.environment.BuildConfigWrap
 import de.rki.coronawarnapp.main.CWASettings
 import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.ui.main.MainActivity
+import de.rki.coronawarnapp.util.AppShortcuts
 import de.rki.coronawarnapp.util.di.AppInjector
 import javax.inject.Inject
 
@@ -26,11 +27,21 @@ import javax.inject.Inject
 class OnboardingActivity : AppCompatActivity(), LifecycleObserver, HasAndroidInjector {
     companion object {
         private val TAG: String? = OnboardingActivity::class.simpleName
+        private const val EXTRA_DATA = "shortcut"
 
-        fun start(context: Context) {
-            val intent = Intent(context, OnboardingActivity::class.java)
+        fun start(context: Context, shortcut: AppShortcuts? = null) {
+            val intent = Intent(context, OnboardingActivity::class.java).apply {
+                putExtra(EXTRA_DATA, shortcut?.toString())
+            }
             context.startActivity(intent)
         }
+
+        fun getShortcutFromIntent(intent: Intent?): AppShortcuts? {
+            intent?.getStringExtra(EXTRA_DATA)?.let {
+                return AppShortcuts.valueOf(it)
+            }
+            return null
+        }
     }
 
     @Inject lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Any>
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivityModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivityModule.kt
index 8ad72457e8787751f1fbd465889da009e97b3679..3c52d5e7cc18f9ebf6d42522e206dc7d718ab0b9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivityModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingActivityModule.kt
@@ -2,6 +2,10 @@ package de.rki.coronawarnapp.ui.onboarding
 
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.datadonation.analytics.ui.AnalyticsUIModule
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment
+import de.rki.coronawarnapp.release.NewReleaseInfoFragment
+import de.rki.coronawarnapp.release.NewReleaseInfoFragmentModule
 
 @Module
 internal abstract class OnboardingActivityModule {
@@ -14,12 +18,31 @@ internal abstract class OnboardingActivityModule {
 
     @ContributesAndroidInjector(modules = [OnboardingTracingModule::class])
     abstract fun onboardingScreen(): OnboardingTracingFragment
-    @ContributesAndroidInjector(modules = [OnboardingFragmentModule::class])
-    abstract fun onboardingFragment(): OnboardingFragment
+
     @ContributesAndroidInjector(modules = [OnboardingPrivacyModule::class])
     abstract fun onboardingPrivacyFragment(): OnboardingPrivacyFragment
+
     @ContributesAndroidInjector(modules = [OnboardingTestModule::class])
     abstract fun onboardingTestFragment(): OnboardingTestFragment
+
     @ContributesAndroidInjector(modules = [OnboardingNotificationsModule::class])
     abstract fun onboardingNotificationsFragment(): OnboardingNotificationsFragment
+
+    @ContributesAndroidInjector(modules = [OnboardingAnalyticsModule::class])
+    abstract fun onboardingAnalyticsFragment(): OnboardingAnalyticsFragment
+
+    @ContributesAndroidInjector(modules = [AnalyticsUIModule::class])
+    abstract fun ppaUserInfoSelection(): AnalyticsUserInputFragment
+
+    @ContributesAndroidInjector(modules = [OnboardingLoadingModule::class])
+    abstract fun onboardingLoadingScreen(): OnboardingLoadingFragment
+
+    @ContributesAndroidInjector(modules = [NewReleaseInfoFragmentModule::class])
+    abstract fun newReleaseInfoFragment(): NewReleaseInfoFragment
+
+    @ContributesAndroidInjector(modules = [OnboardingDeltaInteroperabilityModule::class])
+    abstract fun onboardingDeltaInteroperabilityFragment(): OnboardingDeltaInteroperabilityFragment
+
+    @ContributesAndroidInjector(modules = [OnboardingDeltaAnalyticsModule::class])
+    abstract fun onboardingDeltaAnalyticsFragment(): OnboardingDeltaAnalyticsFragment
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8727896d40b0c3a0b5dc66dd67e45e14d2edcdee
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsFragment.kt
@@ -0,0 +1,84 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import android.os.Bundle
+import android.view.View
+import android.view.accessibility.AccessibilityEvent
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentOnboardingPpaBinding
+import de.rki.coronawarnapp.datadonation.analytics.common.labelStringRes
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.doNavigate
+import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+class OnboardingAnalyticsFragment : Fragment(R.layout.fragment_onboarding_ppa), AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val viewModel: OnboardingAnalyticsViewModel by cwaViewModels { viewModelFactory }
+    private val binding: FragmentOnboardingPpaBinding by viewBindingLazy()
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        binding.apply {
+            onboardingButtonNext.setOnClickListener { viewModel.onNextButtonClick() }
+            onboardingButtonDisable.setOnClickListener { viewModel.onDisableClick() }
+            onboardingButtonBack.buttonIcon.setOnClickListener { requireActivity().onBackPressed() }
+
+            federalStateRow.setOnClickListener {
+                doNavigate(
+                    OnboardingAnalyticsFragmentDirections.actionOnboardingAnalyticsFragmentToAnalyticsUserInputFragment(
+                        type = AnalyticsUserInputFragment.InputType.FEDERAL_STATE
+                    )
+                )
+            }
+            districtRow.setOnClickListener {
+                doNavigate(
+                    OnboardingAnalyticsFragmentDirections.actionOnboardingAnalyticsFragmentToAnalyticsUserInputFragment(
+                        type = AnalyticsUserInputFragment.InputType.DISTRICT
+                    )
+                )
+            }
+            ageGroupRow.setOnClickListener {
+                doNavigate(
+                    OnboardingAnalyticsFragmentDirections.actionOnboardingAnalyticsFragmentToAnalyticsUserInputFragment(
+                        type = AnalyticsUserInputFragment.InputType.AGE_GROUP
+                    )
+                )
+            }
+            moreInfoRow.setOnClickListener {
+                doNavigate(
+                    OnboardingAnalyticsFragmentDirections.actionOnboardingAnalyticsFragmentToPpaMoreInfoFragment()
+                )
+            }
+        }
+        viewModel.completedOnboardingEvent.observe2(this) {
+            (requireActivity() as OnboardingActivity).completeOnboarding()
+        }
+        viewModel.ageGroup.observe2(this) {
+            binding.ageGroupRowBody.text = getString(it.labelStringRes)
+        }
+        viewModel.federalState.observe2(this) {
+            binding.districtRow.visibility = if (it != PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED) {
+                View.VISIBLE
+            } else {
+                View.GONE
+            }
+            binding.federalStateRowBody.text = getString(it.labelStringRes)
+        }
+        viewModel.district.observe2(this) {
+            binding.districtRowBody.text = it?.districtName
+                ?: getString(R.string.analytics_userinput_district_unspecified)
+        }
+    }
+
+    override fun onResume() {
+        super.onResume()
+        binding.onboardingPpaContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsModule.kt
similarity index 64%
rename from Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentModule.kt
rename to Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsModule.kt
index bf641f89625353384a3ada822e8a7dd40c838173..e4605d775e97e8dddabf28811740e8a2320bd78c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsModule.kt
@@ -9,14 +9,15 @@ import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
 
 @Module
-abstract class OnboardingFragmentModule {
+abstract class OnboardingAnalyticsModule {
+
     @Binds
     @IntoMap
-    @CWAViewModelKey(OnboardingFragmentViewModel::class)
-    abstract fun onboardingFragmentVM(
-        factory: OnboardingFragmentViewModel.Factory
+    @CWAViewModelKey(OnboardingAnalyticsViewModel::class)
+    abstract fun onboardingScreenVM(
+        factory: OnboardingAnalyticsViewModel.Factory
     ): CWAViewModelFactory<out CWAViewModel>
 
     @ContributesAndroidInjector
-    abstract fun onboardingFragment(): OnboardingFragment
+    abstract fun onboardingScreen(): OnboardingFragment
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ea44c1ea5a76bd05879084de383d0439d6b91041
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingAnalyticsViewModel.kt
@@ -0,0 +1,53 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.asLiveData
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.datadonation.analytics.common.Districts
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.ui.SingleLiveEvent
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.flow.combine
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import kotlinx.coroutines.flow.flow
+
+class OnboardingAnalyticsViewModel @AssistedInject constructor(
+    settings: AnalyticsSettings,
+    dispatcherProvider: DispatcherProvider,
+    private val analytics: Analytics,
+    val districts: Districts
+) : CWAViewModel() {
+
+    val completedOnboardingEvent = SingleLiveEvent<Unit>()
+
+    val ageGroup = settings.userInfoAgeGroup.flow.asLiveData()
+    val federalState = settings.userInfoFederalState.flow.asLiveData()
+    val district: LiveData<Districts.District?> = combine(
+        flow { emit(districts.loadDistricts()) },
+        settings.userInfoDistrict.flow
+    ) { districtsList, id ->
+        districtsList.singleOrNull { it.districtId == id }
+    }.asLiveData(dispatcherProvider.IO)
+
+    fun onNextButtonClick() {
+        launch {
+            analytics.setAnalyticsEnabled(enabled = true)
+        }
+
+        completedOnboardingEvent.postValue(Unit)
+    }
+
+    fun onDisableClick() {
+        launch {
+            analytics.setAnalyticsEnabled(enabled = false)
+        }
+
+        completedOnboardingEvent.postValue(Unit)
+    }
+
+    @AssistedFactory
+    interface Factory : SimpleCWAViewModelFactory<OnboardingAnalyticsViewModel>
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaAnalyticsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaAnalyticsFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e6e9ba278c958b0c58fd8e89619de7a0f1d12751
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaAnalyticsFragment.kt
@@ -0,0 +1,89 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import android.os.Bundle
+import android.view.View
+import android.view.accessibility.AccessibilityEvent
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentOnboardingDeltaPpaBinding
+import de.rki.coronawarnapp.datadonation.analytics.common.labelStringRes
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.doNavigate
+import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.popBackStack
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+class OnboardingDeltaAnalyticsFragment : Fragment(R.layout.fragment_onboarding_delta_ppa), AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val viewModel: OnboardingAnalyticsViewModel by cwaViewModels { viewModelFactory }
+    private val binding: FragmentOnboardingDeltaPpaBinding by viewBindingLazy()
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        binding.apply {
+            onboardingButtonNext.setOnClickListener { viewModel.onNextButtonClick() }
+            onboardingButtonDisable.setOnClickListener { viewModel.onDisableClick() }
+            onboardingButtonBack.buttonIcon.setOnClickListener { requireActivity().onBackPressed() }
+
+            federalStateRow.setOnClickListener {
+                doNavigate(
+                    OnboardingDeltaAnalyticsFragmentDirections
+                        .actionOnboardingDeltaAnalyticsFragmentToAnalyticsUserInputFragment(
+                            type = AnalyticsUserInputFragment.InputType.FEDERAL_STATE
+                        )
+                )
+            }
+            districtRow.setOnClickListener {
+                doNavigate(
+                    OnboardingDeltaAnalyticsFragmentDirections
+                        .actionOnboardingDeltaAnalyticsFragmentToAnalyticsUserInputFragment(
+                            type = AnalyticsUserInputFragment.InputType.DISTRICT
+                        )
+                )
+            }
+            ageGroupRow.setOnClickListener {
+                doNavigate(
+                    OnboardingDeltaAnalyticsFragmentDirections
+                        .actionOnboardingDeltaAnalyticsFragmentToAnalyticsUserInputFragment(
+                            type = AnalyticsUserInputFragment.InputType.AGE_GROUP
+                        )
+                )
+            }
+            moreInfoRow.setOnClickListener {
+                doNavigate(
+                    OnboardingDeltaAnalyticsFragmentDirections
+                        .actionOnboardingDeltaAnalyticsFragmentToPpaMoreInfoFragment()
+                )
+            }
+        }
+        viewModel.completedOnboardingEvent.observe2(this) {
+            popBackStack()
+        }
+        viewModel.ageGroup.observe2(this) {
+            binding.ageGroupRowBody.text = getString(it.labelStringRes)
+        }
+        viewModel.federalState.observe2(this) {
+            binding.districtRow.visibility = if (it != PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED) {
+                View.VISIBLE
+            } else {
+                View.GONE
+            }
+            binding.federalStateRowBody.text = getString(it.labelStringRes)
+        }
+        viewModel.district.observe2(this) {
+            binding.districtRowBody.text = it?.districtName
+                ?: getString(R.string.analytics_userinput_district_unspecified)
+        }
+    }
+
+    override fun onResume() {
+        super.onResume()
+        binding.onboardingPpaContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaAnalyticsModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaAnalyticsModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6cd3482b5d94a20b75e6ae8d11bca3bce71db94c
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaAnalyticsModule.kt
@@ -0,0 +1,23 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import dagger.Binds
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class OnboardingDeltaAnalyticsModule {
+
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(OnboardingAnalyticsViewModel::class)
+    abstract fun analyticsOnBoardingDeltaScreenVM(
+        factory: OnboardingAnalyticsViewModel.Factory
+    ): CWAViewModelFactory<out CWAViewModel>
+
+    @ContributesAndroidInjector
+    abstract fun analyticsOnBoardingDeltaScreen(): OnboardingDeltaAnalyticsFragment
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragment.kt
index d9cd64f18641c3648a5004b7e2aaaee790fd651f..52710365102bf8daf3bf875db70d5a1898be829f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragment.kt
@@ -8,10 +8,10 @@ import androidx.navigation.fragment.findNavController
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentOnboardingDeltaInteroperabilityBinding
 import de.rki.coronawarnapp.ui.doNavigate
-import de.rki.coronawarnapp.ui.main.MainActivity
 import de.rki.coronawarnapp.util.convertToHyperlink
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.popBackStack
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
@@ -38,8 +38,10 @@ class OnboardingDeltaInteroperabilityFragment :
             .movementMethod = LinkMovementMethod.getInstance()
 
         binding.onboardingInclude.onboardingDeltaExpandedTermsTextLink.setOnClickListener {
-            findNavController().doNavigate(OnboardingDeltaInteroperabilityFragmentDirections
-                .actionOnboardingDeltaInteroperabilityFragmentToInformationTermsFragment())
+            findNavController().doNavigate(
+                OnboardingDeltaInteroperabilityFragmentDirections
+                    .actionOnboardingDeltaInteroperabilityFragmentToInformationTermsFragment()
+            )
         }
 
         binding.onboardingButtonBack.buttonIcon.setOnClickListener {
@@ -51,7 +53,7 @@ class OnboardingDeltaInteroperabilityFragment :
 
         vm.navigateBack.observe2(this) {
             if (it) {
-                (requireActivity() as MainActivity).goBack()
+                popBackStack()
             }
         }
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt
index 50f50cca1403a0c285286f7f8330092284cfd10d..38f0c37dfd467790e03ca074f4f6f287c57c30a2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt
@@ -1,56 +1,54 @@
 package de.rki.coronawarnapp.ui.onboarding
 
-import android.content.Intent
-import android.net.Uri
 import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
+import androidx.annotation.VisibleForTesting
 import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentOnboardingBinding
-import de.rki.coronawarnapp.util.di.AutoInject
-import de.rki.coronawarnapp.util.ui.observe2
-import de.rki.coronawarnapp.util.ui.viewBindingLazy
-import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.ExternalActionHelper
 import de.rki.coronawarnapp.util.ui.doNavigate
-import javax.inject.Inject
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import java.util.Locale
 
 /**
  * Onboarding starting point.
  */
-class OnboardingFragment : Fragment(R.layout.fragment_onboarding), AutoInject {
+class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
 
-    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val vm: OnboardingFragmentViewModel by cwaViewModels { viewModelFactory }
     private val binding: FragmentOnboardingBinding by viewBindingLazy()
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
         binding.apply {
-            onboardingButtonNext.setOnClickListener { vm.onNextButtonClick() }
-            onboardingInclude.onboardingEasyLanguage.setOnClickListener { vm.onEasyLanguageClick() }
-        }
-        vm.routeToScreen.observe2(this) {
-            when (it) {
-                is OnboardingNavigationEvents.NavigateToOnboardingPrivacy ->
-                    doNavigate(
-                        OnboardingFragmentDirections
-                            .actionOnboardingFragmentToOnboardingPrivacyFragment()
-                    )
-                is OnboardingNavigationEvents.NavigateToEasyLanguageUrl ->
-                    startActivity(
-                        Intent(
-                            Intent.ACTION_VIEW,
-                            Uri.parse(getString(R.string.onboarding_tracing_easy_language_explanation_url))
-                        )
-                    )
+            onboardingButtonNext.setOnClickListener { goToOnboardingPrivacyFragment() }
+            // only show link for German
+            if (showEasyLanguageLink()) {
+                onboardingEasyLanguage.visibility = View.VISIBLE
+                onboardingEasyLanguage.setOnClickListener { openEasyLanguageLink() }
+            } else {
+                onboardingEasyLanguage.visibility = View.GONE
             }
         }
     }
 
+    private fun goToOnboardingPrivacyFragment() {
+        doNavigate(
+            OnboardingFragmentDirections
+                .actionOnboardingFragmentToOnboardingPrivacyFragment()
+        )
+    }
+
+    private fun openEasyLanguageLink() {
+        ExternalActionHelper.openUrl(this, getString(R.string.onboarding_tracing_easy_language_explanation_url))
+    }
+
     override fun onResume() {
         super.onResume()
         binding.onboardingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 }
+
+@VisibleForTesting
+fun showEasyLanguageLink(): Boolean = Locale.getDefault().language == Locale.GERMAN.language
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentViewModel.kt
deleted file mode 100644
index 9f5b9d59dc77bbae15fdee402a85aec4b64ca061..0000000000000000000000000000000000000000
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentViewModel.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package de.rki.coronawarnapp.ui.onboarding
-
-import dagger.assisted.AssistedFactory
-import dagger.assisted.AssistedInject
-import de.rki.coronawarnapp.ui.SingleLiveEvent
-import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
-
-class OnboardingFragmentViewModel @AssistedInject constructor() : CWAViewModel() {
-    val routeToScreen: SingleLiveEvent<OnboardingNavigationEvents> = SingleLiveEvent()
-
-    fun onNextButtonClick() {
-        routeToScreen.postValue(OnboardingNavigationEvents.NavigateToOnboardingPrivacy)
-    }
-
-    fun onEasyLanguageClick() {
-        routeToScreen.postValue(OnboardingNavigationEvents.NavigateToEasyLanguageUrl)
-    }
-
-    @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<OnboardingFragmentViewModel>
-}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7d7c6475ff8122c86e7ae6b8e42260c447f8da71
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingFragment.kt
@@ -0,0 +1,53 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.ui.main.MainActivity
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.doNavigate
+import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+class OnboardingLoadingFragment : Fragment(R.layout.onboaring_loading_layout), AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val viewModel: OnboardingLoadingViewModel by cwaViewModels(
+        ownerProducer = { requireActivity().viewModelStore },
+        factoryProducer = { viewModelFactory }
+    )
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        viewModel.navigationEvents.observe2(this) { event ->
+            when (event) {
+                OnboardingFragmentEvents.ShowInteropDeltaOnboarding ->
+                    doNavigate(
+                        OnboardingLoadingFragmentDirections
+                            .actionLoadingFragmentToOnboardingDeltaInteroperabilityFragment()
+                    )
+                OnboardingFragmentEvents.ShowNewReleaseFragment ->
+                    doNavigate(
+                        OnboardingLoadingFragmentDirections
+                            .actionLoadingFragmentToNewReleaseInfoFragment()
+                    )
+                OnboardingFragmentEvents.ShowOnboarding ->
+                    doNavigate(
+                        OnboardingLoadingFragmentDirections
+                            .actionLoadingFragmentToOnboardingFragment()
+                    )
+                OnboardingFragmentEvents.OnboardingDone -> {
+                    MainActivity.start(requireContext(), OnboardingActivity.getShortcutFromIntent(activity?.intent))
+                    activity?.overridePendingTransition(0, 0)
+                    activity?.finish()
+                }
+            }
+        }
+
+        viewModel.navigate()
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..40bb8156450d950e5780e5bbde58f5568c762855
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingModule.kt
@@ -0,0 +1,22 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import dagger.Binds
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class OnboardingLoadingModule {
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(OnboardingLoadingViewModel::class)
+    abstract fun onboardingLoadingVM(
+        factory: OnboardingLoadingViewModel.Factory
+    ): CWAViewModelFactory<out CWAViewModel>
+
+    @ContributesAndroidInjector
+    abstract fun onboardingLoadingFragment(): OnboardingLoadingFragment
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..57dbcfc194b293b008651726c8c4dc7124f45fc5
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingLoadingViewModel.kt
@@ -0,0 +1,46 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.environment.BuildConfigWrap
+import de.rki.coronawarnapp.main.CWASettings
+import de.rki.coronawarnapp.storage.LocalData
+import de.rki.coronawarnapp.util.ui.SingleLiveEvent
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+
+class OnboardingLoadingViewModel @AssistedInject constructor(private val cwaSettings: CWASettings) : CWAViewModel() {
+
+    val navigationEvents = SingleLiveEvent<OnboardingFragmentEvents>()
+
+    fun navigate() {
+        when {
+            !LocalData.isOnboarded() -> {
+                navigationEvents.postValue(OnboardingFragmentEvents.ShowOnboarding)
+            }
+            !LocalData.isInteroperabilityShownAtLeastOnce -> {
+                navigationEvents.postValue(OnboardingFragmentEvents.ShowInteropDeltaOnboarding)
+            }
+            cwaSettings.lastChangelogVersion.value < BuildConfigWrap.VERSION_CODE -> {
+                navigationEvents.postValue(OnboardingFragmentEvents.ShowNewReleaseFragment)
+            }
+            else -> {
+                navigationEvents.postValue(OnboardingFragmentEvents.OnboardingDone)
+            }
+        }
+    }
+
+    @AssistedFactory
+    interface Factory : SimpleCWAViewModelFactory<OnboardingLoadingViewModel>
+}
+
+sealed class OnboardingFragmentEvents {
+
+    object ShowInteropDeltaOnboarding : OnboardingFragmentEvents()
+
+    object ShowNewReleaseFragment : OnboardingFragmentEvents()
+
+    object ShowOnboarding : OnboardingFragmentEvents()
+
+    object OnboardingDone : OnboardingFragmentEvents()
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNavigationEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNavigationEvents.kt
index 5ddddc1c9bff9432459bcc53cab867b2227f7360..74e4cd095621c3638514f0cf904624e46a0a4c51 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNavigationEvents.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNavigationEvents.kt
@@ -8,5 +8,6 @@ sealed class OnboardingNavigationEvents {
     object NavigateToOnboardingTest : OnboardingNavigationEvents()
     object ShowCancelDialog : OnboardingNavigationEvents()
     object NavigateToOnboardingNotifications : OnboardingNavigationEvents()
+    object NavigateToOnboardingAnalytics : OnboardingNavigationEvents()
     object NavigateToMainActivity : OnboardingNavigationEvents()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt
index 8759e12eae28c7f0b5883fc885044cc9ce114657..60986d4539f5129eca30de0c02b84d7507abe1c5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt
@@ -9,6 +9,7 @@ import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentOnboardingNotificationsBinding
 import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
@@ -21,7 +22,8 @@ import javax.inject.Inject
  * @see NotificationManagerCompat
  * @see AlertDialog
  */
-class OnboardingNotificationsFragment : Fragment(R.layout.fragment_onboarding_notifications),
+class OnboardingNotificationsFragment :
+    Fragment(R.layout.fragment_onboarding_notifications),
     AutoInject {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
@@ -34,8 +36,14 @@ class OnboardingNotificationsFragment : Fragment(R.layout.fragment_onboarding_no
             onboardingButtonNext.setOnClickListener { vm.onNextButtonClick() }
             onboardingButtonBack.buttonIcon.setOnClickListener { requireActivity().onBackPressed() }
         }
-        vm.completedOnboardingEvent.observe2(this) {
-            (requireActivity() as OnboardingActivity).completeOnboarding()
+        vm.routeToScreen.observe2(this) {
+            when (it) {
+                is OnboardingNavigationEvents.NavigateToOnboardingAnalytics ->
+                    doNavigate(
+                        OnboardingNotificationsFragmentDirections
+                            .actionOnboardingNotificationsFragmentToOnboardingAnalyticsFragment()
+                    )
+            }
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsViewModel.kt
index 8597aa4d1ae7c340736e2fcebaac2cd75e2083ac..d1fbe9763edb4d10d3eaa701e1565fbdf2725e42 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsViewModel.kt
@@ -8,10 +8,10 @@ import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
 
 class OnboardingNotificationsViewModel @AssistedInject constructor() : CWAViewModel() {
 
-    val completedOnboardingEvent = SingleLiveEvent<Unit>()
+    val routeToScreen: SingleLiveEvent<OnboardingNavigationEvents> = SingleLiveEvent()
 
     fun onNextButtonClick() {
-        completedOnboardingEvent.postValue(Unit)
+        routeToScreen.postValue(OnboardingNavigationEvents.NavigateToOnboardingAnalytics)
     }
 
     @AssistedFactory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt
index 813163ef4a9fb5ff246c4f780e9e9e3ffd288929..55776f95bba45e2d9c3490521e8b672928cf75ad 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt
@@ -42,17 +42,19 @@ class OnboardingTracingFragment : Fragment(R.layout.fragment_onboarding_tracing)
             when (it) {
                 is OnboardingNavigationEvents.NavigateToOnboardingTest -> navigateToOnboardingTestFragment()
                 is OnboardingNavigationEvents.ShowCancelDialog ->
-                    DialogHelper.showDialog(DialogHelper.DialogInstance(
-                        context = requireActivity(),
-                        title = R.string.onboarding_tracing_dialog_headline,
-                        message = R.string.onboarding_tracing_dialog_body,
-                        positiveButton = R.string.onboarding_tracing_dialog_button_positive,
-                        negativeButton = R.string.onboarding_tracing_dialog_button_negative,
-                        cancelable = true,
-                        positiveButtonFunction = {
-                            navigateToOnboardingTestFragment()
-                        }
-                    ))
+                    DialogHelper.showDialog(
+                        DialogHelper.DialogInstance(
+                            context = requireActivity(),
+                            title = R.string.onboarding_tracing_dialog_headline,
+                            message = R.string.onboarding_tracing_dialog_body,
+                            positiveButton = R.string.onboarding_tracing_dialog_button_positive,
+                            negativeButton = R.string.onboarding_tracing_dialog_button_negative,
+                            cancelable = true,
+                            positiveButtonFunction = {
+                                navigateToOnboardingTestFragment()
+                            }
+                        )
+                    )
                 is OnboardingNavigationEvents.NavigateToOnboardingPrivacy ->
                     (requireActivity() as OnboardingActivity).goBack()
             }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentViewModel.kt
index e7df5ad46fa12363dc66dc9822209e970d53371a..e420b70372f84463cf41772eea014c73ccec2d0e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentViewModel.kt
@@ -29,26 +29,28 @@ class OnboardingTracingFragmentViewModel @AssistedInject constructor(
     val permissionRequestEvent = SingleLiveEvent<(Activity) -> Unit>()
 
     private val tracingPermissionHelper =
-        tracingPermissionHelperFactory.create(object : TracingPermissionHelper.Callback {
-            override fun onUpdateTracingStatus(isTracingEnabled: Boolean) {
-                if (isTracingEnabled) {
-                    routeToScreen.postValue(OnboardingNavigationEvents.NavigateToOnboardingTest)
+        tracingPermissionHelperFactory.create(
+            object : TracingPermissionHelper.Callback {
+                override fun onUpdateTracingStatus(isTracingEnabled: Boolean) {
+                    if (isTracingEnabled) {
+                        routeToScreen.postValue(OnboardingNavigationEvents.NavigateToOnboardingTest)
+                    }
                 }
-            }
 
-            override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
-                // Tracing consent is given implicitly on this screen.
-                onConsentResult(true)
-            }
+                override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
+                    // Tracing consent is given implicitly on this screen.
+                    onConsentResult(true)
+                }
 
-            override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
-                permissionRequestEvent.postValue(permissionRequest)
-            }
+                override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
+                    permissionRequestEvent.postValue(permissionRequest)
+                }
 
-            override fun onError(error: Throwable) {
-                Timber.e(error, "Failed to activate tracing during onboarding.")
+                override fun onError(error: Throwable) {
+                    Timber.e(error, "Failed to activate tracing during onboarding.")
+                }
             }
-        })
+        )
 
     fun saveInteroperabilityUsed() {
         interoperabilityRepository.saveInteroperabilityUsed()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingFragmentsModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingFragmentsModule.kt
index 3a0941f7e8950bdd75a37b52860161be51349c7a..c3d440b849f8c92968e5d53e64992e0e84f6ade4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingFragmentsModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingFragmentsModule.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.settings
 
 import dagger.Module
 import de.rki.coronawarnapp.tracing.ui.settings.SettingsTracingFragmentModule
+import de.rki.coronawarnapp.ui.settings.analytics.SettingsPrivacyPreservingAnalyticsFragmentModule
 import de.rki.coronawarnapp.ui.settings.backgroundpriority.SettingsBackgroundPriorityFragmentModule
 import de.rki.coronawarnapp.ui.settings.notifications.NotificationSettingsFragmentModule
 import de.rki.coronawarnapp.ui.settings.start.SettingsFragmentModule
@@ -11,7 +12,8 @@ import de.rki.coronawarnapp.ui.settings.start.SettingsFragmentModule
         SettingsFragmentModule::class,
         SettingsTracingFragmentModule::class,
         NotificationSettingsFragmentModule::class,
-        SettingsBackgroundPriorityFragmentModule::class
+        SettingsBackgroundPriorityFragmentModule::class,
+        SettingsPrivacyPreservingAnalyticsFragmentModule::class
     ]
 )
 class SettingFragmentsModule
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetViewModel.kt
index 4d413a1f0c31b1527129448c84c1bb22988eb084..2ecbb6d1767484e24eb7c0bf5df2dee0ceef5617 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetViewModel.kt
@@ -43,7 +43,9 @@ class SettingsResetViewModel @AssistedInject constructor(
                 }
             } catch (apiException: ApiException) {
                 apiException.report(
-                    ExceptionCategory.EXPOSURENOTIFICATION, TAG, null
+                    ExceptionCategory.EXPOSURENOTIFICATION,
+                    TAG,
+                    null
                 )
             }
             shareTestResultNotificationService.resetSharePositiveTestResultNotification()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9ceb7d072ae22fd404df73d9b8ae58f55ffcfb2c
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsFragment.kt
@@ -0,0 +1,107 @@
+package de.rki.coronawarnapp.ui.settings.analytics
+
+import android.os.Bundle
+import android.view.View
+import android.view.accessibility.AccessibilityEvent
+import androidx.core.view.isVisible
+import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.databinding.FragmentSettingsPrivacyPreservingAnalyticsBinding
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment
+import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.ui.doNavigate
+import de.rki.coronawarnapp.util.ui.observe2
+import de.rki.coronawarnapp.util.ui.popBackStack
+import de.rki.coronawarnapp.util.ui.viewBindingLazy
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import javax.inject.Inject
+
+class SettingsPrivacyPreservingAnalyticsFragment :
+    Fragment(R.layout.fragment_settings_privacy_preserving_analytics),
+    AutoInject {
+
+    @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
+    private val viewModel: SettingsPrivacyPreservingAnalyticsViewModel by cwaViewModels { viewModelFactory }
+    private val binding: FragmentSettingsPrivacyPreservingAnalyticsBinding by viewBindingLazy()
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        binding.apply {
+
+            // Privacy Preserving Analytics Switch
+            val updateAnalyticsSwitch =
+                settingsPpaSwitchRow.settingsSwitchRowSwitch
+            // Additional click target to toggle switch
+            val updateAnalyticsRow =
+                settingsPpaSwitchRow.settingsSwitchRow
+
+            settingsPpaHeader.headerButtonBack.buttonIcon.setOnClickListener {
+                popBackStack()
+            }
+
+            updateAnalyticsSwitch.setOnCheckedChangeListener { view, _ ->
+                // Make sure that listener is called by user interaction
+                if (!view.isPressed) return@setOnCheckedChangeListener
+
+                viewModel.analyticsToggleEnabled()
+            }
+
+            // Additional click target to toggle switch
+            updateAnalyticsRow.setOnClickListener {
+                if (updateAnalyticsRow.isEnabled) viewModel.analyticsToggleEnabled()
+            }
+
+            federalStateRow.setOnClickListener {
+                doNavigate(
+                    SettingsPrivacyPreservingAnalyticsFragmentDirections
+                        .actionSettingsPrivacyPreservingAnalyticsFragmentToAnalyticsUserInputFragment(
+                            type = AnalyticsUserInputFragment.InputType.FEDERAL_STATE
+                        )
+                )
+            }
+
+            districtRow.setOnClickListener {
+                doNavigate(
+                    SettingsPrivacyPreservingAnalyticsFragmentDirections
+                        .actionSettingsPrivacyPreservingAnalyticsFragmentToAnalyticsUserInputFragment(
+                            type = AnalyticsUserInputFragment.InputType.DISTRICT
+                        )
+                )
+            }
+            ageGroupRow.setOnClickListener {
+                doNavigate(
+                    SettingsPrivacyPreservingAnalyticsFragmentDirections
+                        .actionSettingsPrivacyPreservingAnalyticsFragmentToAnalyticsUserInputFragment(
+                            type = AnalyticsUserInputFragment.InputType.AGE_GROUP
+                        )
+                )
+            }
+
+            moreInfoRow.setOnClickListener {
+                doNavigate(
+                    SettingsPrivacyPreservingAnalyticsFragmentDirections
+                        .actionSettingsPrivacyPreservingAnalyticsFragmentToPpaMoreInfoFragment()
+                )
+            }
+        }
+
+        viewModel.settingsPrivacyPreservingAnalyticsState.observe2(this) {
+            binding.ageGroupRowBody.text = it.getAgeGroupRowBodyText(requireContext())
+
+            binding.districtRow.isVisible = it.isDistrictRowVisible()
+            binding.districtRowBody.text = it.getDistrictRowBodyText(requireContext())
+
+            binding.federalStateRowBody.text = it.getFederalStateRowBodyText(requireContext())
+
+            binding.settingsPpaSwitchRow.status = it.isSettingsPpaSwitchOn()
+            binding.settingsPpaSwitchRow.statusText = it.getSettingsPpaSwitchRowStateText(requireContext())
+        }
+    }
+
+    override fun onResume() {
+        super.onResume()
+        binding.onboardingPpaContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsFragmentModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsFragmentModule.kt
new file mode 100644
index 0000000000000000000000000000000000000000..1ed7b06dde14763ae8cf2300a77116bf15040f0f
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsFragmentModule.kt
@@ -0,0 +1,23 @@
+package de.rki.coronawarnapp.ui.settings.analytics
+
+import dagger.Binds
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import dagger.multibindings.IntoMap
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey
+
+@Module
+abstract class SettingsPrivacyPreservingAnalyticsFragmentModule {
+
+    @Binds
+    @IntoMap
+    @CWAViewModelKey(SettingsPrivacyPreservingAnalyticsViewModel::class)
+    abstract fun settingsScreenVM(
+        factory: SettingsPrivacyPreservingAnalyticsViewModel.Factory
+    ): CWAViewModelFactory<out CWAViewModel>
+
+    @ContributesAndroidInjector
+    abstract fun privacyPreservingAnalyticsScreen(): SettingsPrivacyPreservingAnalyticsFragment
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsState.kt
new file mode 100644
index 0000000000000000000000000000000000000000..341c13378e1bc8b493999ba76b18558d6543c254
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsState.kt
@@ -0,0 +1,35 @@
+package de.rki.coronawarnapp.ui.settings.analytics
+
+import android.content.Context
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.datadonation.analytics.common.Districts
+import de.rki.coronawarnapp.datadonation.analytics.common.labelStringRes
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+
+data class SettingsPrivacyPreservingAnalyticsState(
+    val isAnalyticsEnabled: Boolean,
+    val ageGroup: PpaData.PPAAgeGroup,
+    val federalState: PpaData.PPAFederalState,
+    val district: Districts.District?
+) {
+    fun getAgeGroupRowBodyText(context: Context) =
+        context.getString(ageGroup.labelStringRes)
+
+    fun isDistrictRowVisible() =
+        federalState != PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+
+    fun getDistrictRowBodyText(context: Context) =
+        district?.districtName ?: context.getString(R.string.analytics_userinput_district_unspecified)
+
+    fun getFederalStateRowBodyText(context: Context) =
+        context.getString(federalState.labelStringRes)
+
+    fun isSettingsPpaSwitchOn() =
+        isAnalyticsEnabled
+
+    fun getSettingsPpaSwitchRowStateText(context: Context) =
+        when (isAnalyticsEnabled) {
+            true -> context.getString(R.string.settings_on)
+            false -> context.getString(R.string.settings_off)
+        }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e77b2e092de502230d8bbd7805861126ca504eee
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/analytics/SettingsPrivacyPreservingAnalyticsViewModel.kt
@@ -0,0 +1,47 @@
+package de.rki.coronawarnapp.ui.settings.analytics
+
+import androidx.lifecycle.asLiveData
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.datadonation.analytics.common.Districts
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
+import de.rki.coronawarnapp.util.flow.combine
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
+import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.flow.flow
+
+class SettingsPrivacyPreservingAnalyticsViewModel @AssistedInject constructor(
+    dispatcherProvider: DispatcherProvider,
+    analyticsSettings: AnalyticsSettings,
+    districts: Districts,
+    private val analytics: Analytics
+) : CWAViewModel() {
+
+    val settingsPrivacyPreservingAnalyticsState = combine(
+        analyticsSettings.userInfoAgeGroup.flow,
+        analyticsSettings.userInfoFederalState.flow,
+        analytics.isAnalyticsEnabledFlow(),
+        flow { emit(districts.loadDistricts()) },
+        analyticsSettings.userInfoDistrict.flow
+    ) { ageGroup, federalState, analyticsEnabled, districtsList, districtId ->
+        val selectedDistrict = districtsList.singleOrNull { it.districtId == districtId }
+
+        SettingsPrivacyPreservingAnalyticsState(
+            isAnalyticsEnabled = analyticsEnabled,
+            ageGroup = ageGroup,
+            federalState = federalState,
+            district = selectedDistrict
+        )
+    }.asLiveData(dispatcherProvider.IO)
+
+    @AssistedFactory
+    interface Factory : SimpleCWAViewModelFactory<SettingsPrivacyPreservingAnalyticsViewModel>
+
+    fun analyticsToggleEnabled() = launch {
+        val analyticsState = analytics.isAnalyticsEnabledFlow().first()
+        analytics.setAnalyticsEnabled(!analyticsState)
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/notifications/NotificationSettingsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/notifications/NotificationSettingsFragment.kt
index d9fee5b50db0778aca989d4b5ebf21f63b3ee1d9..38572c8ceb7966ed2fc29bd74e82239049356488 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/notifications/NotificationSettingsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/notifications/NotificationSettingsFragment.kt
@@ -20,7 +20,8 @@ import javax.inject.Inject
  * If os notifications are disabled he can navigate to them with one click. And if the os is enabled
  * the user can decide which notifications he wants to get: risk updates and/or test results.
  */
-class NotificationSettingsFragment : Fragment(R.layout.fragment_settings_notifications),
+class NotificationSettingsFragment :
+    Fragment(R.layout.fragment_settings_notifications),
     AutoInject {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragment.kt
index e58605b3d71f4294269e78980ca1f7af12582622..93995c1038b075335d493a2b3575fdde83d3806a 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragment.kt
@@ -38,6 +38,11 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), AutoInject {
         vm.backgroundPriorityState.observe2(this) {
             binding.backgroundState = it
         }
+
+        vm.analyticsState.observe2(this) {
+            binding.analyticsState = it
+        }
+
         setButtonOnClickListener()
     }
 
@@ -51,6 +56,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), AutoInject {
         val tracingRow = binding.settingsTracing.settingsRow
         val notificationRow = binding.settingsNotifications.settingsRow
         val backgroundPriorityRow = binding.settingsBackgroundPriority.settingsRow
+        val privacyPreservingAnalyticsRow = binding.settingsPrivacyPreservingAnalytics.settingsRow
         val resetRow = binding.settingsReset
         val goBack = binding.settingsHeader.headerButtonBack.buttonIcon
         resetRow.setOnClickListener {
@@ -73,6 +79,13 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), AutoInject {
                 SettingsFragmentDirections.actionSettingsFragmentToSettingsBackgroundPriorityFragment()
             )
         }
+
+        privacyPreservingAnalyticsRow.setOnClickListener {
+            findNavController().doNavigate(
+                SettingsFragmentDirections.actionSettingsFragmentToSettingsPrivacyPreservingAnalyticsFragment()
+            )
+        }
+
         goBack.setOnClickListener {
             (activity as MainActivity).goBack()
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModel.kt
index 0cd34185c056d102259086a7ad73fcb15e186920..52ce56147576358b28fb6914df7d4316fbf69ac6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModel.kt
@@ -4,6 +4,7 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.asLiveData
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
 import de.rki.coronawarnapp.ui.settings.notifications.NotificationSettings
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
@@ -17,7 +18,8 @@ class SettingsFragmentViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
     tracingStatus: GeneralTracingStatus,
     notificationSettings: NotificationSettings,
-    backgroundModeStatus: BackgroundModeStatus
+    backgroundModeStatus: BackgroundModeStatus,
+    analytics: Analytics
 ) : CWAViewModel(
     dispatcherProvider = dispatcherProvider
 ) {
@@ -40,7 +42,12 @@ class SettingsFragmentViewModel @AssistedInject constructor(
 
     val backgroundPriorityState: LiveData<SettingsBackgroundState> =
         backgroundModeStatus.isIgnoringBatteryOptimizations
-            .map { SettingsBackgroundState((it)) }
+            .map { SettingsBackgroundState(it) }
+            .asLiveData(dispatcherProvider.Default)
+
+    var analyticsState: LiveData<SettingsPrivacyPreservingAnalyticsState> =
+        analytics.isAnalyticsEnabledFlow()
+            .map { SettingsPrivacyPreservingAnalyticsState(it) }
             .asLiveData(dispatcherProvider.Default)
 
     @AssistedFactory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt
index 316465ca9aacea0243c0ccddf6d926047b8b9314..e30386531162f4243c983011d01a6d17fd428949 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt
@@ -14,8 +14,10 @@ data class SettingsNotificationState(
 ) {
 
     val isEnabled: Boolean
-        get() = (isNotificationsEnabled &&
-            (isNotificationsRiskEnabled || isNotificationsTestEnabled))
+        get() = (
+            isNotificationsEnabled &&
+                (isNotificationsRiskEnabled || isNotificationsTestEnabled)
+            )
 
     /**
      * Formats the settings icon color for notifications depending on notification values
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsPrivacyPreservingAnalyticsState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsPrivacyPreservingAnalyticsState.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f858772510a696041d88cc570d5eb651d3e093df
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsPrivacyPreservingAnalyticsState.kt
@@ -0,0 +1,37 @@
+package de.rki.coronawarnapp.ui.settings.start
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import androidx.annotation.ColorInt
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
+import de.rki.coronawarnapp.util.ContextExtensions.getDrawableCompat
+
+data class SettingsPrivacyPreservingAnalyticsState(
+    val isEnabled: Boolean
+) {
+
+    /**
+     * Formats the settings icon color for privacy-preserving analytics
+     */
+    @ColorInt
+    fun getPrivacyPreservingAnalyticsIconColor(context: Context): Int = context.getColorCompat(
+        if (isEnabled) R.color.colorAccentTintIcon
+        else R.color.colorTextSemanticRed
+    )
+
+    /**
+     * Formats the settings icon for privacy-preserving analytics
+     */
+    fun getPrivacyPreservingAnalyticsIcon(context: Context): Drawable? = context.getDrawableCompat(
+        if (isEnabled) R.drawable.ic_settings_privacy_preserving_analytics_enabled
+        else R.drawable.ic_settings_privacy_preserving_analytics_disabled
+    )
+
+    /**
+     * Formats the text display of settings item status depending on flag provided
+     */
+    fun getPrivacyPreservingAnalyticsText(context: Context): String = context.getString(
+        if (isEnabled) R.string.settings_on else R.string.settings_off
+    )
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionCountrySelectionFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionCountrySelectionFragment.kt
index c3a9a3130e34369ebae1e1ad2bb48881bcf2bc9c..af6a7cea2b789808c721da10f4fa84ed7e694114 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionCountrySelectionFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionCountrySelectionFragment.kt
@@ -44,9 +44,12 @@ class SubmissionCountrySelectionFragment : Fragment() {
             viewModel.updateCountryCheckedState(it)
         }
 
-        viewModel.countries.observe(viewLifecycleOwner, Observer {
-            adapter.setCountries(it)
-        })
+        viewModel.countries.observe(
+            viewLifecycleOwner,
+            Observer {
+                adapter.setCountries(it)
+            }
+        )
 
         binding.submissionCountrySelectionSelector.submissionCountrySelectorRecyclerview.adapter =
             adapter
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt
index d3e5a0c23a8f94572a15b81d025128cd14eaefc9..6458a16da1f8c82708ed7bfdc92a3a7e6db23193 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.ui.submission.qrcode.consent
 
+import android.app.Activity
+import android.content.Intent
 import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
@@ -37,6 +39,11 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
                 is SubmissionNavigationEvents.NavigateToDataPrivacy -> doNavigate(
                     SubmissionConsentFragmentDirections.actionSubmissionConsentFragmentToInformationPrivacyFragment()
                 )
+                is SubmissionNavigationEvents.ResolvePlayServicesException ->
+                    it.exception.status.startResolutionForResult(
+                        requireActivity(),
+                        REQUEST_USER_RESOLUTION
+                    )
             }
         }
         viewModel.countries.observe2(this) {
@@ -48,4 +55,15 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
         super.onResume()
         binding.contentContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (requestCode == REQUEST_USER_RESOLUTION) {
+            viewModel.giveGoogleConsentResult(resultCode == Activity.RESULT_OK)
+        }
+    }
+
+    companion object {
+        private const val REQUEST_USER_RESOLUTION = 3000
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
index 31fd005d0b24d35c4e741812dacfba27387e091a..f65e937154ccab0401ca5e1be6b7460652a4ced9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
@@ -1,8 +1,10 @@
 package de.rki.coronawarnapp.ui.submission.qrcode.consent
 
 import androidx.lifecycle.asLiveData
+import com.google.android.gms.common.api.ApiException
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
+import de.rki.coronawarnapp.nearby.modules.tekhistory.TEKHistoryProvider
 import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
 import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
@@ -10,11 +12,14 @@ import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import timber.log.Timber
+import kotlin.Exception
 
 class SubmissionConsentViewModel @AssistedInject constructor(
     private val submissionRepository: SubmissionRepository,
     interoperabilityRepository: InteroperabilityRepository,
-    dispatcherProvider: DispatcherProvider
+    dispatcherProvider: DispatcherProvider,
+    private val tekHistoryProvider: TEKHistoryProvider
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
     val routeToScreen: SingleLiveEvent<SubmissionNavigationEvents> = SingleLiveEvent()
@@ -24,7 +29,24 @@ class SubmissionConsentViewModel @AssistedInject constructor(
 
     fun onConsentButtonClick() {
         submissionRepository.giveConsentToSubmission()
-        routeToScreen.postValue(SubmissionNavigationEvents.NavigateToQRCodeScan)
+        launch {
+            try {
+                val preAuthorized = tekHistoryProvider.preAuthorizeExposureKeyHistory()
+                // Routes to QR code screen either user has already granted permission or it is older Api
+                routeToScreen.postValue(SubmissionNavigationEvents.NavigateToQRCodeScan)
+                Timber.i("Pre-authorized:$preAuthorized")
+            } catch (exception: Exception) {
+                if (exception is ApiException &&
+                    exception.status.hasResolution()
+                ) {
+                    Timber.d(exception, "Pre-auth requires user resolution")
+                    routeToScreen.postValue(SubmissionNavigationEvents.ResolvePlayServicesException(exception))
+                } else {
+                    Timber.d(exception, "Pre-auth failed with unrecoverable exception")
+                    routeToScreen.postValue(SubmissionNavigationEvents.NavigateToQRCodeScan)
+                }
+            }
+        }
     }
 
     fun onBackButtonClick() {
@@ -35,6 +57,12 @@ class SubmissionConsentViewModel @AssistedInject constructor(
         routeToScreen.postValue(SubmissionNavigationEvents.NavigateToDataPrivacy)
     }
 
+    fun giveGoogleConsentResult(accepted: Boolean) {
+        Timber.i("User allowed Google consent:$accepted")
+        // Navigate to QR code scan anyway regardless of consent result
+        routeToScreen.postValue(SubmissionNavigationEvents.NavigateToQRCodeScan)
+    }
+
     @AssistedFactory
     interface Factory : SimpleCWAViewModelFactory<SubmissionConsentViewModel>
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt
index e1d14baf17b2e2fd97352f09b28b2943dd2276d4..e3659a896f9a6735daae1944e46ba460a24cc917 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt
@@ -32,7 +32,8 @@ import javax.inject.Inject
 /**
  * A simple [Fragment] subclass.
  */
-class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_code_scan),
+class SubmissionQRCodeScanFragment :
+    Fragment(R.layout.fragment_submission_qr_code_scan),
     AutoInject {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt
index 1bceda1f85eca90f326d9e60b62821ae39104f5b..c498a79425bd19d785fbf8635f6b5810cba0bd9b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt
@@ -9,13 +9,16 @@ import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultAvailableBinding
 import de.rki.coronawarnapp.tracing.ui.TracingConsentDialog
+import de.rki.coronawarnapp.ui.submission.SubmissionBlockingDialog
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import timber.log.Timber
 import javax.inject.Inject
 
 /**
@@ -24,13 +27,17 @@ import javax.inject.Inject
  */
 class SubmissionTestResultAvailableFragment : Fragment(R.layout.fragment_submission_test_result_available), AutoInject {
 
+    @Inject lateinit var appShortcutsHelper: AppShortcutsHelper
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
     private val vm: SubmissionTestResultAvailableViewModel by cwaViewModels { viewModelFactory }
     private val binding: FragmentSubmissionTestResultAvailableBinding by viewBindingLazy()
+    private lateinit var keyRetrievalProgress: SubmissionBlockingDialog
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
+        keyRetrievalProgress = SubmissionBlockingDialog(requireContext())
+
         val backCallback = object : OnBackPressedCallback(true) {
             override fun handleOnBackPressed() = vm.goBack()
         }
@@ -49,6 +56,12 @@ class SubmissionTestResultAvailableFragment : Fragment(R.layout.fragment_submiss
             binding.submissionTestResultAvailableConsentStatus.consent = it
         }
 
+        vm.showKeyRetrievalProgress.observe2(this) { show ->
+            Timber.i("SubmissionTestResult:showKeyRetrievalProgress:$show")
+            keyRetrievalProgress.setState(show)
+            binding.submissionTestResultAvailableProceedButton.isEnabled = !show
+        }
+
         binding.apply {
             submissionTestResultAvailableProceedButton.setOnClickListener { vm.proceed() }
             submissionTestResultAvailableConsentStatus.setOnClickListener { vm.goConsent() }
@@ -77,6 +90,7 @@ class SubmissionTestResultAvailableFragment : Fragment(R.layout.fragment_submiss
     override fun onResume() {
         super.onResume()
         binding.submissionTestResultAvailableContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+        appShortcutsHelper.removeAppShortcut()
     }
 
     private fun showCloseDialog() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt
index bb90f61cda5dbd7f6be5cf25883fd72699df0098..9d122d70c945df4436468b3246aba2727db44107 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt
@@ -32,42 +32,51 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
     val consent = consentFlow.asLiveData(dispatcherProvider.Default)
     val showPermissionRequest = SingleLiveEvent<(Activity) -> Unit>()
     val showCloseDialog = SingleLiveEvent<Unit>()
+    val showKeyRetrievalProgress = SingleLiveEvent<Boolean>()
     val showTracingConsentDialog = SingleLiveEvent<(Boolean) -> Unit>()
 
-    private val tekHistoryUpdater = tekHistoryUpdaterFactory.create(object : TEKHistoryUpdater.Callback {
-        override fun onTEKAvailable(teks: List<TemporaryExposureKey>) {
-            Timber.d("onTEKAvailable(teks.size=%d)", teks.size)
-            autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
+    private val tekHistoryUpdater = tekHistoryUpdaterFactory.create(
+        object : TEKHistoryUpdater.Callback {
+            override fun onTEKAvailable(teks: List<TemporaryExposureKey>) {
+                Timber.d("onTEKAvailable(teks.size=%d)", teks.size)
+                autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
 
-            routeToScreen.postValue(
-                SubmissionTestResultAvailableFragmentDirections
-                    .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultConsentGivenFragment()
-            )
-        }
+                routeToScreen.postValue(
+                    SubmissionTestResultAvailableFragmentDirections
+                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultConsentGivenFragment()
+                )
 
-        override fun onTEKPermissionDeclined() {
-            routeToScreen.postValue(
-                SubmissionTestResultAvailableFragmentDirections
-                    .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment()
-            )
-        }
+                showKeyRetrievalProgress.postValue(false)
+            }
 
-        override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
-            showTracingConsentDialog.postValue(onConsentResult)
-        }
+            override fun onTEKPermissionDeclined() {
+                routeToScreen.postValue(
+                    SubmissionTestResultAvailableFragmentDirections
+                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment()
+                )
+                showKeyRetrievalProgress.postValue(false)
+            }
 
-        override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
-            showPermissionRequest.postValue(permissionRequest)
-        }
+            override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
+                showTracingConsentDialog.postValue(onConsentResult)
+                showKeyRetrievalProgress.postValue(false)
+            }
 
-        override fun onError(error: Throwable) {
-            Timber.e(error, "Failed to update TEKs.")
-            error.report(
-                exceptionCategory = ExceptionCategory.EXPOSURENOTIFICATION,
-                prefix = "SubmissionTestResultAvailableViewModel"
-            )
+            override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
+                showPermissionRequest.postValue(permissionRequest)
+                showKeyRetrievalProgress.postValue(false)
+            }
+
+            override fun onError(error: Throwable) {
+                Timber.e(error, "Failed to update TEKs.")
+                error.report(
+                    exceptionCategory = ExceptionCategory.EXPOSURENOTIFICATION,
+                    prefix = "SubmissionTestResultAvailableViewModel"
+                )
+                showKeyRetrievalProgress.postValue(false)
+            }
         }
-    })
+    )
 
     init {
         submissionRepository.refreshDeviceUIState(refreshTestResult = false)
@@ -94,6 +103,7 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
     }
 
     fun proceed() {
+        showKeyRetrievalProgress.value = true
         launch {
             if (consentFlow.first()) {
                 tekHistoryUpdater.updateTEKHistoryOrRequestPermission()
@@ -107,6 +117,7 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
     }
 
     fun handleActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        showKeyRetrievalProgress.value = true
         tekHistoryUpdater.handleActivityResult(requestCode, resultCode, data)
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarFragment.kt
index b19672226cdc2f0f6c55daf7ddfd36d286c8fbb3..44e574a02b8d267c89e83d1887beac6e74f62ed2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarFragment.kt
@@ -21,7 +21,8 @@ import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import javax.inject.Inject
 
-class SubmissionSymptomCalendarFragment : Fragment(R.layout.fragment_submission_symptom_calendar),
+class SubmissionSymptomCalendarFragment :
+    Fragment(R.layout.fragment_submission_symptom_calendar),
     AutoInject {
 
     private val navArgs by navArgs<SubmissionSymptomCalendarFragmentArgs>()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarViewModel.kt
index bf7306dae8e383771de71a6040e67caba25b5268..85af09cf324159ace2456eb156beb62d47331314 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/calendar/SubmissionSymptomCalendarViewModel.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.ui.submission.symptoms.calendar
 
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MediatorLiveData
 import androidx.lifecycle.asLiveData
 import androidx.navigation.NavDirections
 import dagger.assisted.Assisted
@@ -29,8 +31,17 @@ class SubmissionSymptomCalendarViewModel @AssistedInject constructor(
 
     val routeToScreen = SingleLiveEvent<NavDirections>()
     val showCancelDialog = SingleLiveEvent<Unit>()
-    val showUploadDialog = autoSubmission.isSubmissionRunning
-        .asLiveData(context = dispatcherProvider.Default)
+    private val mediatorShowUploadDialog = MediatorLiveData<Boolean>()
+
+    init {
+        mediatorShowUploadDialog.addSource(
+            autoSubmission.isSubmissionRunning.asLiveData(context = dispatcherProvider.Default)
+        ) { show ->
+            mediatorShowUploadDialog.postValue(show)
+        }
+    }
+
+    val showUploadDialog: LiveData<Boolean> = mediatorShowUploadDialog
 
     fun onLastSevenDaysStart() {
         updateSymptomStart(Symptoms.StartOf.LastSevenDays)
@@ -88,6 +99,8 @@ class SubmissionSymptomCalendarViewModel @AssistedInject constructor(
             } catch (e: Exception) {
                 Timber.tag(TAG).e(e, "performSubmission() failed.")
             } finally {
+                Timber.i("Hide uploading progress and navigate to HomeFragment")
+                mediatorShowUploadDialog.postValue(false)
                 routeToScreen.postValue(
                     SubmissionSymptomCalendarFragmentDirections.actionSubmissionSymptomCalendarFragmentToMainFragment()
                 )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/introduction/SubmissionSymptomIntroductionFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/introduction/SubmissionSymptomIntroductionFragment.kt
index c44abf570ebfe4b3f044569e9294018bcec869c0..40d9e4ebabc21d506dc6b74284ea83f5c202ff6c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/introduction/SubmissionSymptomIntroductionFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/symptoms/introduction/SubmissionSymptomIntroductionFragment.kt
@@ -24,7 +24,8 @@ import javax.inject.Inject
  * The [SubmissionSymptomIntroductionFragment], initial fragment displayed when the user starts the submission process
  * providing symptoms, asking whether or not the user has experienced any of the common symptoms of COVID-19.
  */
-class SubmissionSymptomIntroductionFragment : Fragment(R.layout.fragment_submission_symptom_intro),
+class SubmissionSymptomIntroductionFragment :
+    Fragment(R.layout.fragment_submission_symptom_intro),
     AutoInject {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt
index 72772175d3c7ef5b2e19bc214082cdc3206b3c26..9c82958cca133c04f554e1affcfb2362f19de084 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt
@@ -64,13 +64,16 @@ class SubmissionTestResultPendingViewModel @AssistedInject constructor(
         .onEach { testResultUIState ->
             testResultUIState.deviceUiState.withSuccess { deviceState ->
                 when (deviceState) {
-                    DeviceUIState.PAIRED_POSITIVE -> SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultAvailableFragment()
-                    DeviceUIState.PAIRED_NEGATIVE -> SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultNegativeFragment()
+                    DeviceUIState.PAIRED_POSITIVE ->
+                        SubmissionTestResultPendingFragmentDirections
+                            .actionSubmissionTestResultPendingFragmentToSubmissionTestResultAvailableFragment()
+                    DeviceUIState.PAIRED_NEGATIVE ->
+                        SubmissionTestResultPendingFragmentDirections
+                            .actionSubmissionTestResultPendingFragmentToSubmissionTestResultNegativeFragment()
                     DeviceUIState.PAIRED_REDEEMED,
-                    DeviceUIState.PAIRED_ERROR -> SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultInvalidFragment()
+                    DeviceUIState.PAIRED_ERROR ->
+                        SubmissionTestResultPendingFragmentDirections
+                            .actionSubmissionTestResultPendingFragmentToSubmissionTestResultInvalidFragment()
                     else -> {
                         Timber.w("Unknown success state: %s", deviceState)
                         null
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt
index edc8e35a592dd593e134177160442c4b7b81676a..4b61145a714f16401e56cc941d5e6ad282729d82 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt
@@ -22,7 +22,8 @@ import javax.inject.Inject
  * [SubmissionTestResultConsentGivenFragment], the test result screen that is shown to the user if they have provided
  * consent.
  */
-class SubmissionTestResultConsentGivenFragment : Fragment(R.layout.fragment_submission_test_result_consent_given),
+class SubmissionTestResultConsentGivenFragment :
+    Fragment(R.layout.fragment_submission_test_result_consent_given),
     AutoInject {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt
index b9f965dc59eb32a5916193cc0a4a742a1ded42b9..46577e1306d66b5a93e1da1aebab986539d7f6c1 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt
@@ -20,7 +20,8 @@ import javax.inject.Inject
  * [SubmissionTestResultNoConsentFragment], the test result screen that is shown to the user if they have not provided
  * consent
  */
-class SubmissionTestResultNoConsentFragment : Fragment(R.layout.fragment_submission_test_result_positive_no_consent),
+class SubmissionTestResultNoConsentFragment :
+    Fragment(R.layout.fragment_submission_test_result_positive_no_consent),
     AutoInject {
 
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionNavigationEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionNavigationEvents.kt
index 7bb0e89b29cba1bb52c6b942728f562065097dec..de51d34bff749610e87ed4dd9aa3a9fdc8261440 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionNavigationEvents.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionNavigationEvents.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.ui.submission.viewmodel
 
+import com.google.android.gms.common.api.ApiException
+
 sealed class SubmissionNavigationEvents {
     object NavigateToContact : SubmissionNavigationEvents()
     object NavigateToDispatcher : SubmissionNavigationEvents()
@@ -10,4 +12,5 @@ sealed class SubmissionNavigationEvents {
     object NavigateToTAN : SubmissionNavigationEvents()
     object NavigateToConsent : SubmissionNavigationEvents()
     object NavigateToMainActivity : SubmissionNavigationEvents()
+    data class ResolvePlayServicesException(val exception: ApiException) : SubmissionNavigationEvents()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt
index 5aef9891bc0113c36ed32cd435026028d1a7db30..2fd6b41f222745ebcd9ab224706efd87d14d5a27 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt
@@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionNoConsentPositiveOtherWarningBinding
 import de.rki.coronawarnapp.tracing.ui.TracingConsentDialog
+import de.rki.coronawarnapp.ui.submission.SubmissionBlockingDialog
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.doNavigate
@@ -38,6 +39,8 @@ class SubmissionResultPositiveOtherWarningNoConsentFragment :
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
+        val keysRetrievalProgress = SubmissionBlockingDialog(requireContext())
+
         binding.submissionPositiveOtherWarningNoConsentButtonNext.setOnClickListener {
             viewModel.onConsentButtonClicked()
         }
@@ -49,6 +52,11 @@ class SubmissionResultPositiveOtherWarningNoConsentFragment :
             doNavigate(it)
         }
 
+        viewModel.keysRetrievalProgress.observe2(this) { show ->
+            keysRetrievalProgress.setState(show)
+            binding.submissionPositiveOtherWarningNoConsentButtonNext.isEnabled = !show
+        }
+
         viewModel.showPermissionRequest.observe2(this) { permissionRequest ->
             permissionRequest.invoke(requireActivity())
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
index 5ba83a626c3e1969c2b0a13418b12467277eb8d9..4fe9eb0c0a6f39d578dca6e962211c4e5eca8f02 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
@@ -32,6 +32,8 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
 
     val routeToScreen = SingleLiveEvent<NavDirections>()
 
+    val keysRetrievalProgress = SingleLiveEvent<Boolean>()
+
     val showPermissionRequest = SingleLiveEvent<(Activity) -> Unit>()
 
     val showEnableTracingEvent = SingleLiveEvent<Unit>()
@@ -41,34 +43,40 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
 
     val showTracingConsentDialog = de.rki.coronawarnapp.ui.SingleLiveEvent<(Boolean) -> Unit>()
 
-    private val tekHistoryUpdater = tekHistoryUpdaterFactory.create(object : TEKHistoryUpdater.Callback {
-        override fun onTEKAvailable(teks: List<TemporaryExposureKey>) {
-            Timber.d("onTEKAvailable(tek.size=%d)", teks.size)
-            autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
-
-            routeToScreen.postValue(
-                SubmissionResultPositiveOtherWarningNoConsentFragmentDirections
-                    .actionSubmissionResultPositiveOtherWarningNoConsentFragmentToSubmissionResultReadyFragment()
-            )
-        }
+    private val tekHistoryUpdater = tekHistoryUpdaterFactory.create(
+        object : TEKHistoryUpdater.Callback {
+            override fun onTEKAvailable(teks: List<TemporaryExposureKey>) {
+                Timber.d("onTEKAvailable(tek.size=%d)", teks.size)
+                autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
+                keysRetrievalProgress.postValue(false)
+                routeToScreen.postValue(
+                    SubmissionResultPositiveOtherWarningNoConsentFragmentDirections
+                        .actionSubmissionResultPositiveOtherWarningNoConsentFragmentToSubmissionResultReadyFragment()
+                )
+            }
 
-        override fun onTEKPermissionDeclined() {
-            // stay on screen
-        }
+            override fun onTEKPermissionDeclined() {
+                keysRetrievalProgress.postValue(false)
+                // stay on screen
+            }
 
-        override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
-            showTracingConsentDialog.postValue(onConsentResult)
-        }
+            override fun onTracingConsentRequired(onConsentResult: (given: Boolean) -> Unit) {
+                keysRetrievalProgress.postValue(false)
+                showTracingConsentDialog.postValue(onConsentResult)
+            }
 
-        override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
-            showPermissionRequest.postValue(permissionRequest)
-        }
+            override fun onPermissionRequired(permissionRequest: (Activity) -> Unit) {
+                keysRetrievalProgress.postValue(false)
+                showPermissionRequest.postValue(permissionRequest)
+            }
 
-        override fun onError(error: Throwable) {
-            Timber.e(error, "Couldn't access temporary exposure key history.")
-            error.report(ExceptionCategory.EXPOSURENOTIFICATION, "Failed to obtain TEKs.")
+            override fun onError(error: Throwable) {
+                keysRetrievalProgress.postValue(false)
+                Timber.e(error, "Couldn't access temporary exposure key history.")
+                error.report(ExceptionCategory.EXPOSURENOTIFICATION, "Failed to obtain TEKs.")
+            }
         }
-    })
+    )
 
     fun onBackPressed() {
         routeToScreen.postValue(
@@ -78,6 +86,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
     }
 
     fun onConsentButtonClicked() {
+        keysRetrievalProgress.value = true
         submissionRepository.giveConsentToSubmission()
         launch {
             if (enfClient.isTracingEnabled.first()) {
@@ -96,6 +105,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
     }
 
     fun handleActivityRersult(requestCode: Int, resultCode: Int, data: Intent?) {
+        keysRetrievalProgress.value = true
         tekHistoryUpdater.handleActivityResult(requestCode, resultCode, data)
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/CountryListView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/CountryListView.kt
index 8a5a0c171e4ccf0e32a7ec85370a9c54a440712d..1fc07ae0a759dc612d0e6a1635959e92eac98ebf 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/CountryListView.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/CountryListView.kt
@@ -68,9 +68,12 @@ private class CountryFlagsAdapter : BaseAdapter<CountryFlagViewHolder>() {
     override fun onBindBaseVH(holder: CountryFlagViewHolder, position: Int, payloads: MutableList<Any>) =
         holder.bind(countryList[position])
 
-    class CountryFlagViewHolder(val parent: ViewGroup) : VH(
-        R.layout.view_country_list_entry_flag_item, parent
-    ), BindableVH<Country, ViewCountryListEntryFlagItemBinding> {
+    class CountryFlagViewHolder(val parent: ViewGroup) :
+        VH(
+            R.layout.view_country_list_entry_flag_item,
+            parent
+        ),
+        BindableVH<Country, ViewCountryListEntryFlagItemBinding> {
 
         override val viewBinding: Lazy<ViewCountryListEntryFlagItemBinding> = lazy {
             ViewCountryListEntryFlagItemBinding.bind(itemView)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/AppShortcuts.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/AppShortcuts.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b4b340aab0ba3df0a32615936c7d3d420d448722
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/AppShortcuts.kt
@@ -0,0 +1,5 @@
+package de.rki.coronawarnapp.util
+
+enum class AppShortcuts {
+    CONTACT_DIARY
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt
index b2c0555a70b90f928b90d414379154c12adcc23e..28805584195cbb5958de45501a85d5321d82a8e2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt
@@ -5,6 +5,8 @@ import android.content.Context
 import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.contactdiary.storage.ContactDiaryPreferences
 import de.rki.coronawarnapp.contactdiary.storage.repo.ContactDiaryRepository
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
 import de.rki.coronawarnapp.datadonation.survey.SurveySettings
 import de.rki.coronawarnapp.diagnosiskeys.download.DownloadDiagnosisKeysSettings
 import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository
@@ -40,7 +42,9 @@ class DataReset @Inject constructor(
     private var contactDiaryPreferences: ContactDiaryPreferences,
     private val cwaSettings: CWASettings,
     private val statisticsProvider: StatisticsProvider,
-    private val surveySettings: SurveySettings
+    private val surveySettings: SurveySettings,
+    private val analyticsSettings: AnalyticsSettings,
+    private val analytics: Analytics
 ) {
 
     private val mutex = Mutex()
@@ -59,6 +63,9 @@ class DataReset @Inject constructor(
         // Shared Preferences Reset
         SecurityHelper.resetSharedPrefs()
 
+        // Triggers deletion of all analytics contributed data
+        analytics.setAnalyticsEnabled(false)
+
         // Reset the current states stored in LiveData
         submissionRepository.reset()
         keyCacheRepository.clear()
@@ -69,6 +76,7 @@ class DataReset @Inject constructor(
         contactDiaryPreferences.clear()
         cwaSettings.clear()
         surveySettings.clear()
+        analyticsSettings.clear()
 
         // Clear contact diary database
         contactDiaryRepository.clear()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ExternalActionHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ExternalActionHelper.kt
index e200dadb0909c7054ad0986a34cbbea311043a5a..d9b1aa103170b0b6a62bd3fda04f0355f7e3ddb6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ExternalActionHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ExternalActionHelper.kt
@@ -26,11 +26,16 @@ object ExternalActionHelper {
      */
     fun shareText(fragment: Fragment, text: String, title: String?) {
         try {
-            fragment.startActivity(Intent.createChooser(Intent().apply {
-                action = Intent.ACTION_SEND
-                type = "text/plain"
-                putExtra(Intent.EXTRA_TEXT, text)
-            }, title))
+            fragment.startActivity(
+                Intent.createChooser(
+                    Intent().apply {
+                        action = Intent.ACTION_SEND
+                        type = "text/plain"
+                        putExtra(Intent.EXTRA_TEXT, text)
+                    },
+                    title
+                )
+            )
         } catch (exception: Exception) {
             // catch generic exception on share
             // possibly due to bad share content format
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HasHumanReadableError.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HasHumanReadableError.kt
index 82f66fda53b9599b39dd156620343d52cdb97de6..37eebfda6663da7d3587233005b48d36899a5d7e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HasHumanReadableError.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HasHumanReadableError.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.util
 
 import android.content.Context
+import de.rki.coronawarnapp.util.ui.LazyString
 
 interface HasHumanReadableError {
     fun toHumanReadableError(context: Context): HumanReadableError
@@ -19,3 +20,7 @@ fun Throwable.tryHumanReadableError(context: Context): HumanReadableError = when
         )
     }
 }
+
+fun HasHumanReadableError.toResolvingString() = object : LazyString {
+    override fun get(context: Context): String = toHumanReadableError(context).description
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HashExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HashExtensions.kt
index 97839c1c3b2f9e10205070f7cfbbb5747dae35da..86274ceac3a2fcf3f72699e2c4cbdc1f51fc8ad7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HashExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/HashExtensions.kt
@@ -1,37 +1,45 @@
 package de.rki.coronawarnapp.util
 
+import de.rki.coronawarnapp.util.HashExtensions.Format.BASE64
+import de.rki.coronawarnapp.util.HashExtensions.Format.HEX
+import okio.ByteString.Companion.toByteString
 import java.io.File
 import java.security.MessageDigest
 import java.util.Locale
 
 internal object HashExtensions {
 
-    fun ByteArray.toSHA256() = this.hashByteArray("SHA-256")
+    enum class Format {
+        HEX, BASE64
+    }
 
-    fun ByteArray.toSHA1() = this.hashByteArray("SHA-1")
+    fun ByteArray.toSHA256(format: Format = HEX) = this.hashByteArray("SHA-256", format)
 
-    fun ByteArray.toMD5() = this.hashByteArray("MD5")
+    fun ByteArray.toSHA1(format: Format = HEX) = this.hashByteArray("SHA-1", format)
 
-    fun String.toSHA256() = this.hashString("SHA-256")
+    fun ByteArray.toMD5(format: Format = HEX) = this.hashByteArray("MD5", format)
 
-    fun String.toSHA1() = this.hashString("SHA-1")
+    fun String.toSHA256(format: Format = HEX) = this.hashString("SHA-256", format)
 
-    fun String.toMD5() = this.hashString("MD5")
+    fun String.toSHA1(format: Format = HEX) = this.hashString("SHA-1", format)
 
-    private fun String.hashString(type: String): String = toByteArray().hashByteArray(type)
+    fun String.toMD5(format: Format = HEX) = this.hashString("MD5", format)
 
-    private fun ByteArray.hashByteArray(type: String): String = MessageDigest
+    private fun String.hashString(type: String, format: Format): String = toByteArray().hashByteArray(type, format)
+
+    private fun ByteArray.hashByteArray(type: String, format: Format): String = MessageDigest
         .getInstance(type)
         .digest(this)
-        .formatHash()
+        .formatHash(format)
 
-    private fun ByteArray.formatHash(): String = this
-        .joinToString(separator = "") { String.format("%02X", it) }
-        .toLowerCase(Locale.ROOT)
+    private fun ByteArray.formatHash(format: Format): String = when (format) {
+        HEX -> this.joinToString(separator = "") { String.format("%02X", it) }.toLowerCase(Locale.ROOT)
+        BASE64 -> this.toByteString().base64()
+    }
 
-    fun File.hashToMD5(): String = this.hashTo("MD5")
+    fun File.hashToMD5(format: Format = HEX): String = this.hashTo("MD5", format)
 
-    private fun File.hashTo(type: String): String = MessageDigest
+    private fun File.hashTo(type: String, format: Format): String = MessageDigest
         .getInstance(type)
         .let { md ->
             inputStream().use { stream ->
@@ -43,5 +51,5 @@ internal object HashExtensions {
             }
             md.digest()
         }
-        .formatHash()
+        .formatHash(format)
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/KeyFileHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/KeyFileHelper.kt
index 7d1fb448a2f38d9369a007a8964334f80282b371..4114507a2fe7f9e207610d28ba47bef28d8f5908 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/KeyFileHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/KeyFileHelper.kt
@@ -35,9 +35,9 @@ object KeyFileHelper {
         fileList.map { file ->
             async(Dispatchers.IO) {
                 val createdExportString = "created export for batch ${file.header.batchNum}" +
-                        "(of ${file.header.batchSize}) with ${file.keysCount} keys, BEG:${Date(
-                            file.header.startTimestamp
-                        ).logUTCFormat()}, END:${Date(file.header.endTimestamp).logUTCFormat()}"
+                    "(of ${file.header.batchSize}) with ${file.keysCount} keys, BEG:${Date(
+                        file.header.startTimestamp
+                    ).logUTCFormat()}, END:${Date(file.header.endTimestamp).logUTCFormat()}"
                 Timber.d(createdExportString)
                 Pair(
                     TemporaryExposureKeyExport
@@ -63,8 +63,8 @@ object KeyFileHelper {
                     createBinaryFile(
                         storageDirectory,
                         "${source.first.batchNum}-" +
-                                "${source.first.startTimestamp}-" +
-                                "${source.first.endTimestamp}.zip",
+                            "${source.first.startTimestamp}-" +
+                            "${source.first.endTimestamp}.zip",
                         source
                     )
                 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt
index 68c427d28d4369de241d8dc69b51f828aac49a62..05090cb511b29a6a47f37ce59ce1af4b6cd49a7b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt
@@ -62,7 +62,8 @@ object TimeAndDateExtensions {
      * @see TimeUnit
      */
     fun Long.millisecondsToHMS() = String.format(
-        "%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(this),
+        "%02d:%02d:%02d",
+        TimeUnit.MILLISECONDS.toHours(this),
         TimeUnit.MILLISECONDS.toMinutes(this) % TimeUnit.HOURS.toMinutes(1),
         TimeUnit.MILLISECONDS.toSeconds(this) % TimeUnit.MINUTES.toSeconds(1)
     )
@@ -84,4 +85,6 @@ object TimeAndDateExtensions {
     fun Instant.toLocalDate(): LocalDate = this.toDateTime(DateTimeZone.UTC).toLocalDate()
 
     fun Instant.toLocalTime(): LocalTime = this.toDateTime(DateTimeZone.UTC).toLocalTime()
+
+    val Instant.seconds get() = TimeUnit.MILLISECONDS.toSeconds(millis)
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/Views.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/Views.kt
index 2632c0168a4874e627b01161530197632dc17212..8402cecac39f917f30f98e2d71c010d0deaff2ea 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/Views.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/Views.kt
@@ -21,60 +21,24 @@ fun TextView.convertToHyperlink(url: String) {
     movementMethod = LinkMovementMethod.getInstance()
 }
 
-fun TextView.setUrlText(@StringRes textRes: Int, url: String) {
-    context.getString(textRes, url).also {
-        val indexOf = it.indexOf(url)
-        setText(
-            SpannableString(it).apply {
-                setSpan(
-                    URLSpan(url),
-                    indexOf,
-                    indexOf + url.length,
-                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
-                )
-            },
-            TextView.BufferType.SPANNABLE
-        )
-        movementMethod = LinkMovementMethod.getInstance()
-    }
+fun TextView.setUrl(@StringRes textRes: Int, @StringRes labelRes: Int, @StringRes urlRes: Int) {
+    setUrl(context.getString(textRes), context.getString(labelRes), context.getString(urlRes))
 }
 
 fun TextView.setUrl(@StringRes textRes: Int, label: String, url: String) {
-    context.getString(textRes).also {
-        val indexOf = it.indexOf(label)
-        if (indexOf > 0) {
-            setText(
-                SpannableString(it).apply {
-                    setSpan(
-                        URLSpan(url),
-                        indexOf,
-                        indexOf + label.length,
-                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
-                    )
-                },
-                TextView.BufferType.SPANNABLE
-            )
-            movementMethod = LinkMovementMethod.getInstance()
-        } else {
-            text = it
-        }
-    }
+    setUrl(context.getString(textRes), label, url)
 }
 
-fun TextView.setUrl(@StringRes textRes: Int, @StringRes labelRes: Int, @StringRes urlRes: Int) {
-    val url = context.getString(urlRes)
-    val label = context.getString(labelRes)
-    context.getString(textRes).also {
-        val indexOf = it.indexOf(label)
-        if (indexOf > 0) {
-            setText(
-                SpannableStringBuilder(it).urlSpan(indexOf, indexOf + label.length, url),
-                TextView.BufferType.SPANNABLE
-            )
-            movementMethod = LinkMovementMethod.getInstance()
-        } else {
-            text = it
-        }
+fun TextView.setUrl(content: String, label: String, url: String) {
+    val indexOf = content.indexOf(label)
+    if (indexOf > 0) {
+        setText(
+            SpannableStringBuilder(content).urlSpan(indexOf, indexOf + label.length, url),
+            TextView.BufferType.SPANNABLE
+        )
+        movementMethod = LinkMovementMethod.getInstance()
+    } else {
+        text = content
     }
 }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/BackgroundModeStatus.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/BackgroundModeStatus.kt
index 170d28cb3e1dd3953b4c921f11d805c7b26dddb3..c62ac5c9000d95cc91568c395271f6c45ca01c10 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/BackgroundModeStatus.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/BackgroundModeStatus.kt
@@ -90,7 +90,10 @@ class BackgroundModeStatus @Inject constructor(
         .onStart { emit(pollisIgnoringBatteryOptimizations()) }
         .distinctUntilChanged()
         .onCompletion {
-            if (it != null) Timber.w(it, "isIgnoringBatteryOptimizations failed.")
+            when {
+                it is CancellationException -> Timber.d("isIgnoringBatteryOptimizations canceled.")
+                it != null -> Timber.e(it, "isIgnoringBatteryOptimizations failed.")
+            }
         }
         .shareLatest(
             tag = "isIgnoringBatteryOptimizations",
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/AppInjector.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/AppInjector.kt
index 6026460d18eb05d467d670825a6ccad8e9d531b7..2c63e6eff976b62809dffa04ffacb214778e37c2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/AppInjector.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/di/AppInjector.kt
@@ -27,20 +27,23 @@ object AppInjector {
 
         if (activity is FragmentActivity) {
             activity.supportFragmentManager
-                .registerFragmentLifecycleCallbacks(object :
-                    FragmentManager.FragmentLifecycleCallbacks() {
-                    override fun onFragmentPreAttached(
-                        fm: FragmentManager,
-                        f: Fragment,
-                        context: Context
-                    ) {
-                        if (f is AutoInject) {
-                            Timber.tag(TAG).d("Injecting %s", f)
-                            AndroidSupportInjection.inject(f)
+                .registerFragmentLifecycleCallbacks(
+                    object :
+                        FragmentManager.FragmentLifecycleCallbacks() {
+                        override fun onFragmentPreAttached(
+                            fm: FragmentManager,
+                            f: Fragment,
+                            context: Context
+                        ) {
+                            if (f is AutoInject) {
+                                Timber.tag(TAG).d("Injecting %s", f)
+                                AndroidSupportInjection.inject(f)
+                            }
+                            super.onFragmentPreAttached(fm, f, context)
                         }
-                        super.onFragmentPreAttached(fm, f, context)
-                    }
-                }, true)
+                    },
+                    true
+                )
         }
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/FlowExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/FlowExtensions.kt
index 54a8c158833a3d7c82b270b6d15e1bde04bd6951..1abf9aded1592a32d94f65f06fcf70033f153fe5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/FlowExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/FlowExtensions.kt
@@ -48,7 +48,8 @@ inline fun <T1, T2, R> combine(
     flow2: Flow<T2>,
     crossinline transform: suspend (T1, T2) -> R
 ): Flow<R> = combine(
-    flow, flow2
+    flow,
+    flow2
 ) { args: Array<*> ->
     transform(
         args[0] as T1,
@@ -65,7 +66,11 @@ inline fun <T1, T2, T3, T4, T5, R> combine(
     flow5: Flow<T5>,
     crossinline transform: suspend (T1, T2, T3, T4, T5) -> R
 ): Flow<R> = combine(
-    flow, flow2, flow3, flow4, flow5
+    flow,
+    flow2,
+    flow3,
+    flow4,
+    flow5
 ) { args: Array<*> ->
     transform(
         args[0] as T1,
@@ -86,7 +91,12 @@ inline fun <T1, T2, T3, T4, T5, T6, R> combine(
     flow6: Flow<T6>,
     crossinline transform: suspend (T1, T2, T3, T4, T5, T6) -> R
 ): Flow<R> = combine(
-    flow, flow2, flow3, flow4, flow5, flow6
+    flow,
+    flow2,
+    flow3,
+    flow4,
+    flow5,
+    flow6
 ) { args: Array<*> ->
     transform(
         args[0] as T1,
@@ -109,7 +119,13 @@ inline fun <T1, T2, T3, T4, T5, T6, T7, R> combine(
     flow7: Flow<T7>,
     crossinline transform: suspend (T1, T2, T3, T4, T5, T6, T7) -> R
 ): Flow<R> = combine(
-    flow, flow2, flow3, flow4, flow5, flow6, flow7
+    flow,
+    flow2,
+    flow3,
+    flow4,
+    flow5,
+    flow6,
+    flow7
 ) { args: Array<*> ->
     transform(
         args[0] as T1,
@@ -134,7 +150,14 @@ inline fun <T1, T2, T3, T4, T5, T6, T7, T8, R> combine(
     flow8: Flow<T8>,
     crossinline transform: suspend (T1, T2, T3, T4, T5, T6, T7, T8) -> R
 ): Flow<R> = combine(
-    flow, flow2, flow3, flow4, flow5, flow6, flow7, flow8
+    flow,
+    flow2,
+    flow3,
+    flow4,
+    flow5,
+    flow6,
+    flow7,
+    flow8
 ) { args: Array<*> ->
     transform(
         args[0] as T1,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/HotDataFlow.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/HotDataFlow.kt
index 1fe9db2d964a52c0bc216428d4a5e6fe1ec415c4..adb705b8853b16d296567070479d47f4cc762cc0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/HotDataFlow.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/flow/HotDataFlow.kt
@@ -1,5 +1,6 @@
 package de.rki.coronawarnapp.util.flow
 
+import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.channels.BufferOverflow
 import kotlinx.coroutines.flow.Flow
@@ -80,8 +81,11 @@ class HotDataFlow<T : Any>(
             }
         }
         .onCompletion { err ->
-            if (err != null) Timber.tag(tag).w(err, "internal onCompletion due to error")
-            else Timber.tag(tag).v("internal onCompletion")
+            when {
+                err is CancellationException -> Timber.tag(tag).d("internal onCompletion due to cancelation")
+                err != null -> Timber.tag(tag).e(err, "internal onCompletion due to error")
+                else -> Timber.tag(tag).v("internal onCompletion")
+            }
         }
         .shareIn(
             scope = scope + coroutineContext,
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/lists/modular/mods/SavedStateMod.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/lists/modular/mods/SavedStateMod.kt
index b517643cde2b790c471c1374f7de7cfd41926f85..9356a9ad764c8dce5fcd135163f31aee7c7f0c9e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/lists/modular/mods/SavedStateMod.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/lists/modular/mods/SavedStateMod.kt
@@ -12,7 +12,8 @@ import de.rki.coronawarnapp.util.lists.modular.ModularAdapter
 import timber.log.Timber
 
 @Keep
-class SavedStateMod<T : ModularAdapter.VH> : ModularAdapter.Module.RecyclerViewLifecycle,
+class SavedStateMod<T : ModularAdapter.VH> :
+    ModularAdapter.Module.RecyclerViewLifecycle,
     ModularAdapter.Module.Binder<T> {
 
     private val savedStates = mutableMapOf<String, Parcelable>()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/shortcuts/AppShortcutsHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/shortcuts/AppShortcutsHelper.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0aeb1345d353a2b058806d25494139d272b83d14
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/shortcuts/AppShortcutsHelper.kt
@@ -0,0 +1,54 @@
+package de.rki.coronawarnapp.util.shortcuts
+
+import android.content.Context
+import android.content.Intent
+import androidx.core.content.pm.ShortcutInfoCompat
+import androidx.core.content.pm.ShortcutManagerCompat
+import androidx.core.graphics.drawable.IconCompat
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.ui.launcher.LauncherActivity
+import de.rki.coronawarnapp.util.AppShortcuts
+import de.rki.coronawarnapp.util.di.AppContext
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class AppShortcutsHelper @Inject constructor(@AppContext private val context: Context) {
+
+    suspend fun restoreAppShortcut() = withContext(Dispatchers.IO) {
+        if (ShortcutManagerCompat.getDynamicShortcuts(context).size == 0) {
+            val shortcut = ShortcutInfoCompat.Builder(context, CONTACT_DIARY_SHORTCUT_ID)
+                .setShortLabel(context.getString(R.string.app_shortcut_contact_diary_title))
+                .setLongLabel(context.getString(R.string.app_shortcut_contact_diary_title))
+                .setIcon(IconCompat.createWithResource(context, R.drawable.ic_contact_diary_shortcut_icon))
+                .setIntent(createContactDiaryIntent())
+                .build()
+
+            ShortcutManagerCompat.addDynamicShortcuts(context, listOf(shortcut))
+        }
+    }
+
+    fun removeAppShortcut() {
+        ShortcutManagerCompat.removeDynamicShortcuts(context, listOf(CONTACT_DIARY_SHORTCUT_ID))
+    }
+
+    private fun createContactDiaryIntent() = Intent(context, LauncherActivity::class.java).apply {
+        action = Intent.ACTION_VIEW
+        putExtra(SHORTCUT_EXTRA_ID, AppShortcuts.CONTACT_DIARY.toString())
+    }
+
+    companion object {
+        private const val CONTACT_DIARY_SHORTCUT_ID = "contact_diary_id"
+        private const val SHORTCUT_EXTRA_ID = "shortcut_extra"
+
+        fun getShortcutType(intent: Intent): AppShortcuts? {
+            intent.getStringExtra(SHORTCUT_EXTRA_ID)?.let {
+                return AppShortcuts.valueOf(it)
+            }
+
+            return null
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/SingleLiveEvent.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/SingleLiveEvent.kt
index 981619aa074d513b901af0c8ca476d0ebeecef9e..70994140f0ef6d7ee0b9cd5335327adecaae79ed 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/SingleLiveEvent.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/SingleLiveEvent.kt
@@ -51,11 +51,14 @@ class SingleLiveEvent<T> : MutableLiveData<T>() {
         }
 
         // Observe the internal MutableLiveData
-        super.observe(owner, Observer<T> { t ->
-            if (pending.compareAndSet(true, false)) {
-                observer.onChanged(t)
+        super.observe(
+            owner,
+            Observer<T> { t ->
+                if (pending.compareAndSet(true, false)) {
+                    observer.onChanged(t)
+                }
             }
-        })
+        )
     }
 
     @MainThread
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/worker/WorkerBinder.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/worker/WorkerBinder.kt
index 8b46456b27c1def869e714c1eaedc68b8111346b..75469df735f76971adbeb20e8bc75fc6df622960 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/worker/WorkerBinder.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/worker/WorkerBinder.kt
@@ -5,6 +5,7 @@ import dagger.Binds
 import dagger.Module
 import dagger.multibindings.IntoMap
 import de.rki.coronawarnapp.contactdiary.retention.ContactDiaryRetentionWorker
+import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsPeriodicWorker
 import de.rki.coronawarnapp.deadman.DeadmanNotificationOneTimeWorker
 import de.rki.coronawarnapp.deadman.DeadmanNotificationPeriodicWorker
 import de.rki.coronawarnapp.nearby.ExposureStateUpdateWorker
@@ -87,4 +88,11 @@ abstract class WorkerBinder {
     abstract fun contactDiaryCleanWorker(
         factory: ContactDiaryRetentionWorker.Factory
     ): InjectedWorkerFactory<out ListenableWorker>
+
+    @Binds
+    @IntoMap
+    @WorkerKey(DataDonationAnalyticsPeriodicWorker::class)
+    abstract fun dataDonationAnalyticsPeriodicWorker(
+        factory: DataDonationAnalyticsPeriodicWorker.Factory
+    ): InjectedWorkerFactory<out ListenableWorker>
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/BackgroundWorkHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/BackgroundWorkHelper.kt
index 8f1569b31291269029d022e4da11633af2177d4b..a9e401d3052a701545febd8e362bedb0ce0389c6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/BackgroundWorkHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/BackgroundWorkHelper.kt
@@ -21,8 +21,10 @@ object BackgroundWorkHelper {
      * @see BackgroundConstants.MINUTES_IN_DAY
      */
     fun getDiagnosisTestResultRetrievalPeriodicWorkTimeInterval(): Long =
-        (BackgroundConstants.MINUTES_IN_DAY /
-                BackgroundConstants.DIAGNOSIS_TEST_RESULT_RETRIEVAL_TRIES_PER_DAY).toLong()
+        (
+            BackgroundConstants.MINUTES_IN_DAY /
+                BackgroundConstants.DIAGNOSIS_TEST_RESULT_RETRIEVAL_TRIES_PER_DAY
+            ).toLong()
 
     /**
      * Get background noise one time work delay
@@ -37,7 +39,7 @@ object BackgroundWorkHelper {
     fun getBackgroundNoiseOneTimeWorkDelay() = Random.nextLong(
         0,
         BackgroundConstants.MAX_HOURS_TO_NEXT_BACKGROUND_NOISE_EXECUTION -
-                BackgroundConstants.MIN_HOURS_TO_NEXT_BACKGROUND_NOISE_EXECUTION
+            BackgroundConstants.MIN_HOURS_TO_NEXT_BACKGROUND_NOISE_EXECUTION
     )
 
     /**
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisKeyRetrievalPeriodicWorker.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisKeyRetrievalPeriodicWorker.kt
index d375bd226aed66840c86fb5f591dca37de4c15d8..5a59a5b2f2d0952471b30f81ad39e3ade4ef2b1d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisKeyRetrievalPeriodicWorker.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisKeyRetrievalPeriodicWorker.kt
@@ -33,7 +33,8 @@ class DiagnosisKeyRetrievalPeriodicWorker @AssistedInject constructor(
             BackgroundWorkScheduler.scheduleDiagnosisKeyOneTimeWork()
         } catch (e: Exception) {
             Timber.tag(TAG).w(
-                e, "$id: Error during BackgroundWorkScheduler.scheduleDiagnosisKeyOneTimeWork()."
+                e,
+                "$id: Error during BackgroundWorkScheduler.scheduleDiagnosisKeyOneTimeWork()."
             )
 
             if (runAttemptCount > BackgroundConstants.WORKER_RETRY_COUNT_THRESHOLD) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt
index bada3ae70a4bded1eeb277260d7e8f73ac04c32b..1540f8aa6716b3fe2f59563403557f5b3f6bc0ea 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt
@@ -89,11 +89,11 @@ class DiagnosisTestResultRetrievalPeriodicWorker @AssistedInject constructor(
             return true
         }
 
-        if (TimeAndDateExtensions.calculateDays(
-                LocalData.initialPollingForTestResultTimeStamp(),
-                currentMillis
-            ) >= BackgroundConstants.POLLING_VALIDITY_MAX_DAYS
-        ) {
+        val calculateDays = TimeAndDateExtensions.calculateDays(
+            LocalData.initialPollingForTestResultTimeStamp(),
+            currentMillis
+        )
+        if (calculateDays >= BackgroundConstants.POLLING_VALIDITY_MAX_DAYS) {
             Timber.tag(TAG)
                 .d(" $id Maximum of ${BackgroundConstants.POLLING_VALIDITY_MAX_DAYS} days for polling exceeded.")
             return true
diff --git a/Corona-Warn-App/src/main/res/color/radiobutton_accented.xml b/Corona-Warn-App/src/main/res/color/radiobutton_accented.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d5cb9bf2edf3e983f9f1853dc53e02d26cf28f5a
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/color/radiobutton_accented.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/colorAccent" android:state_checked="true" />
+    <item android:color="@color/colorStableHairlineLight" />
+</selector>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/color/row.xml b/Corona-Warn-App/src/main/res/color/row.xml
deleted file mode 100644
index ae25457c52f41ff53f460586ce4e4cb282b311c5..0000000000000000000000000000000000000000
--- a/Corona-Warn-App/src/main/res/color/row.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@color/colorSurface1Pressed" android:state_pressed="true" /> <!-- pressed -->
-    <item android:color="@color/colorTransparent" /> <!-- default -->
-</selector>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_illustration_interoperability.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_illustration_interoperability.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e82ad9aed03b52bc673a7cbfc3e1df7bd25b3cf
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/drawable-night/ic_illustration_interoperability.xml
@@ -0,0 +1,1060 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="375dp"
+    android:height="209dp"
+    android:viewportWidth="375"
+    android:viewportHeight="209">
+  <group>
+    <clip-path
+        android:pathData="M0,0h375v209h-375z"/>
+    <path
+        android:pathData="M0,0h375v209h-375z"
+        android:fillColor="#000000"/>
+    <path
+        android:pathData="M123.402,136.31V135.764L123.341,135.278L123.402,135.825V136.371L123.462,136.796L123.402,136.31Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.373,134.125L124.252,133.032V132.546L124.191,132.061L124.13,132.121L124.191,132.607V133.153L124.252,134.185L124.312,134.671L124.373,134.61V134.125Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M123.584,138.373L123.523,137.888H123.038V137.948L123.523,137.888L123.584,138.434V138.92V138.373Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M129.837,129.51L129.776,128.964L129.23,128.539L129.169,128.6L129.715,129.085L129.776,129.571L129.351,131.149L129.412,131.089L129.837,129.51Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M120.063,133.396L120.488,132.91L120.063,133.396Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M119.092,142.44L119.152,142.865V142.805V142.44H119.092Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M129.655,127.446L129.594,126.414L129.533,125.929H129.472L129.533,126.475L129.594,127.507L129.655,127.993L129.715,127.932L129.655,127.446Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M130.079,125.261L130.019,124.776L129.958,124.29V124.836L130.019,125.383L130.079,125.808V125.261Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M184.776,191.311L185.323,191.736L184.776,191.311Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M127.348,154.947L127.408,155.494L127.348,154.947Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M147.503,140.377L146.531,140.984L147.564,140.377H147.503Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M118.484,141.409L118.545,141.834V141.895V141.409H118.484Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M138.154,157.375L138.396,157.557L138.154,157.375Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M123.827,141.59L124.373,142.076V142.197V142.015L123.766,141.53L123.219,141.044V141.105L123.827,141.59Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.495,143.533L124.434,143.048V142.684V143.109L124.495,143.533Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M123.219,140.983V140.497L123.159,140.012V139.708V140.012L122.673,140.072L123.219,140.619V140.983Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M181.923,187.243L182.348,186.758L181.923,187.243Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.07,144.323L124.555,145.112L125.162,146.084V146.144L124.555,145.112L124.07,144.323Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M127.773,153.307L127.712,152.275V151.79L128.198,151.182V150.697L128.623,149.604L129.108,149.058L130.079,147.965L130.019,147.904L129.108,148.936L128.562,149.543L128.137,150.636L128.198,151.122L127.651,151.729L127.712,152.275L127.773,153.307V153.793L127.348,154.339V154.4L127.833,153.854L127.773,153.307Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.069,175.101L125.041,175.04L124.919,174.979L123.887,175.04H123.462L123.523,175.162L124.069,175.101Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M159.947,161.441L159.522,161.502L159.947,161.441Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M182.652,167.755H183.016H182.47L182.045,167.816L182.652,167.755Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M147.806,162.292H147.867L147.442,161.928L147.806,162.292Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M188.055,171.095L189.026,170.487V170.427L187.994,171.095L187.569,171.58L187.63,171.641L188.055,171.095Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M189.566,181.465L189.324,181.482L189.328,181.543L189.57,181.526L189.566,181.465Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M116.238,139.467L116.178,138.435H116.117L116.238,139.406V139.892L115.753,140.438L115.813,140.499L116.299,140.013L116.238,139.467Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M188.358,174.798H188.601L188.662,174.737H188.358V174.798Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M122.552,169.942L122.43,169.881H121.945L122.066,170.002L122.552,169.942Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M111.746,135.582V136.007H111.807V135.582H111.746Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M112.839,136.007H112.778L112.839,136.432L112.899,136.978V136.553L112.839,136.007Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M113.931,137.038L113.992,137.463V137.524V137.038H113.931Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M122.916,144.14L123.523,144.08L122.613,143.897L122.916,144.14Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M121.641,169.638L121.52,169.517L121.641,169.638Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M123.827,164.478H124.13L123.766,164.175L123.827,164.478Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M163.887,157.477L163.403,157.512L163.407,157.572L163.892,157.538L163.887,157.477Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M164.257,155.371L164.197,155.553H164.318V155.371H164.257Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M162.497,159.743H162.982V159.683L162.497,159.743Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M183.502,149.787L183.077,149.423H182.895L183.441,149.848L183.502,149.787Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M166.443,154.279L165.958,153.854H165.775L166.261,154.279H166.443Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M184.655,149.301L184.594,149.361L184.837,149.422L184.655,149.301Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M165.108,152.519L164.986,152.397L165.047,152.519H165.108Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M149.688,157.982L149.566,157.921L149.688,157.982Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M149.142,157.497L149.263,157.618L149.202,157.072L149.142,156.586L149.081,156.525V157.011L149.142,157.497Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M141.25,157.01V156.585H141.128V157.01H141.25Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M149.688,156.04L150.113,156.404L149.688,156.04Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M159.704,149.36L159.219,148.996L159.644,149.36H159.704Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M164.865,155.372L165.29,154.825H165.229L164.865,155.311V155.372Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M137.486,157.252L137.364,157.191L137.486,157.252Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M149.02,154.461L149.445,154.886V154.825L149.02,154.461Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M163.226,155.433V155.493H163.772L163.894,155.433H163.772H163.226Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M167.111,140.62L167.05,140.56L166.625,141.106L167.111,140.62Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M176.945,144.626L176.885,144.08L177.856,143.533V143.473L176.824,144.08L176.885,144.626L176.46,145.112V145.172L176.945,144.626Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M164.501,140.741H164.683L164.44,140.802L164.986,141.227H165.047L164.501,140.741Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M181.134,144.323L181.255,144.08L181.073,144.323L179.556,144.93L181.134,144.323Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M174.821,144.201L175.306,144.14L175.792,143.654H175.731L175.246,144.201H174.699L174.274,144.747L174.335,144.808L174.821,144.201Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M150.173,140.194H150.113L149.141,140.801L150.173,140.194Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M164.076,141.833L164.501,141.287H164.44L164.015,141.833V142.198L164.076,142.319V141.833Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M151.206,139.588L151.691,139.527L153.27,138.374L153.695,137.827L154.18,137.281L155.212,136.674L154.18,137.281L153.695,137.827L153.209,138.374L151.691,139.527L151.145,139.588L150.659,140.134L151.206,139.588Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M150.781,148.572L150.234,148.086L149.566,147.054L149.02,146.022L148.413,145.597V145.051L148.292,144.019L147.745,143.473L147.199,143.048L147.138,142.016H146.592H147.077L147.199,143.048L147.745,143.473L148.292,144.019L148.352,145.051L148.413,145.597L149.02,146.022L149.566,147.054L150.174,148.086L150.72,148.572L151.206,148.511L151.327,148.633L151.266,148.511L150.781,148.572Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M145.924,139.952H145.863L145.985,140.984L146.592,142.016L145.985,140.984L145.924,139.952Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M162.861,140.863L161.89,140.924L162.861,140.863Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M156.851,137.099V136.978L156.791,137.038L156.851,137.099L156.305,137.645L156.851,137.099Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M153.998,150.818L153.512,150.454L153.937,150.818H153.998Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M168.871,35.536L169.842,35.476L170.935,35.961L172.028,36.447L172.089,37.479H172.149L172.028,36.447L170.996,35.961L169.903,35.476L168.871,35.536Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M167.9,37.235L168.932,37.721V37.66L167.9,37.235Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M170.328,33.411L170.571,33.351L170.328,33.411Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M172.514,34.808L172.453,34.261L171.36,33.836L170.814,33.351L171.36,33.836L172.453,34.261V34.808L173.06,35.84H173.364H173.121L172.514,34.808Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M150.234,86.408L149.809,86.469L150.234,86.408Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M173.971,35.778H174.153L174.699,36.264L174.153,35.778H173.971Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M166.443,38.936L166.989,39.421L167.475,39.361L167.05,39.421L166.443,38.936Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M151.934,64.676L151.874,64.737V65.222L152.359,65.161H151.934V64.676Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M163.954,40.696H163.407H163.954L164.986,41.121L165.472,41.061L165.047,41.121L163.954,40.696Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M176.824,35.597L177.31,35.536L177.917,36.507L177.31,35.536L176.824,35.597Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M220.108,113.787L219.137,113.848L220.108,113.787Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M146.895,90.84H146.835L146.895,91.386L147.381,91.872H147.442L146.956,91.386L146.895,90.84Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M174.76,38.327L175.913,38.752H176.399L176.52,39.784L177.067,40.27L177.127,40.816V41.302L177.188,41.909V42.395L176.702,42.941H176.763L177.249,42.395L177.188,41.848V41.302L177.127,40.816L177.067,40.27L176.52,39.784L176.46,38.752H175.913L174.821,38.327L173.728,37.842L173.242,37.903L173.728,37.842L174.76,38.327Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M184.109,27.158H183.866H184.109L183.623,28.251L185.262,28.615L183.684,28.251L184.109,27.158Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M186.598,32.258L186.537,31.772L186.476,30.679L186.962,30.072V29.526L186.355,29.101L185.809,28.615H185.687H185.748L186.355,29.101L186.901,29.587L186.962,30.072L186.476,30.679L186.537,31.772V32.258L186.598,32.743L186.659,33.29V32.743L186.598,32.258Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M179.07,23.82L178.099,24.427L178.16,25.459V26.005L178.22,26.491L178.706,25.459L179.131,24.366L179.617,23.212L179.556,22.727L179.495,22.241L179.07,23.273V23.82Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M100.015,105.953L99.955,105.957L99.981,106.32L100.041,106.316L100.015,105.953Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M81.757,108.323H81.696L81.271,108.809V108.87L81.757,108.323Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M101.426,105.834L101.547,105.713L101.183,105.409H100.94L101.426,105.834Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M79.51,105.835H79.875L80.482,106.26L80.543,106.199L79.996,105.774L79.51,105.835Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M172.635,37.418L173.243,37.904L172.635,37.418Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M93.41,124.704L93.046,124.729L93.055,124.851L93.418,124.825L93.41,124.704Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M71.679,114.759L71.133,114.82L70.587,114.334L69.555,114.941L70.04,114.88L70.647,114.82L71.194,115.366L72.226,115.305L72.772,115.245L72.165,114.759H71.679Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M84.064,110.752L84.671,111.238L84.61,110.752H84.064Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M188.116,37.478L187.994,37.296V37.417L188.116,37.478Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M193.761,52.23L193.883,52.351L193.761,51.866L193.822,51.684L193.761,51.744V52.23Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M186.962,33.229L186.78,33.29L186.962,33.229Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M194.186,49.195L194.065,49.073L194.126,49.316L194.186,49.195Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M226.058,50.773L226.665,50.713L227.697,51.138L227.15,50.106L226.604,49.681L224.054,50.348L225.086,50.834L226.058,50.773Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M199.225,71.352L199.347,71.23V70.866L199.225,71.352Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M195.401,55.933H195.34L195.401,55.993V55.933Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M204.871,186.817H204.81L204.385,187.242H204.506L204.871,186.817Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M190.787,174.736L190.726,174.433L190.665,174.312V174.615L190.787,174.736Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M202.2,187.485L201.653,187.85L202.2,187.485Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M204.749,147.177L205.296,146.57L205.781,146.084L205.721,146.145L205.235,146.57L204.688,147.177L203.292,147.784H203.353L204.749,147.177Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M209.97,146.812L210.517,146.751L209.91,146.812L209.485,147.297L209.545,147.358L209.97,146.812Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M216.162,153.187H216.648H216.162L215.677,153.247L216.162,153.187Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M202.139,147.358V147.48H202.321L202.139,147.358Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M209.849,182.75H209.788L209.302,183.296H209.424L209.849,182.75Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M212.034,147.176V147.722H212.095L212.034,147.176Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M207.117,186.394L206.995,186.515H207.117V186.394Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M207.967,184.45L207.724,184.511L207.785,184.572L207.967,184.693V184.45Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M251.19,138.739L252.162,138.678L253.194,138.617L252.222,138.678L251.19,138.739Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M199.893,187.182H199.589L199.771,187.303L199.893,187.182Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M209.181,186.454V186.394L208.756,186.94L209.181,186.454Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M208.271,189.125L208.088,189.368L208.271,189.125Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M208.695,187.546V187.485L208.574,187.546H208.695Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M245.727,128.175V128.114L244.695,128.661L244.755,128.721L245.727,128.175Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M243.662,128.295L243.602,127.749V128.295L242.691,128.842L243.662,128.295Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M238.442,128.114L239.413,127.021H239.352L238.381,128.114L237.956,128.661L237.713,128.721L238.017,128.661L238.442,128.114Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M236.863,128.235H236.803L236.317,128.782H236.378L236.863,128.235Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M252.526,128.114L252.465,128.175L251.979,128.782H252.04L252.526,128.114Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M235.831,128.297L235.285,128.358L234.313,128.418L235.345,128.358L235.831,128.297Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M246.819,128.053L247.851,127.992H248.034H247.791L246.759,128.053L246.819,128.539L246.395,128.599L246.819,128.539V128.053Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M248.883,128.417H248.823L248.883,128.903L248.944,129.024L248.883,128.417Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M209.302,129.693L209.363,129.571L209.302,129.632V129.693Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M190.544,130.482L190.605,130.36L190.483,130.482H190.544Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M214.645,128.843V128.782H214.463L214.645,128.843Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M207.542,129.328L207.603,129.207L207.299,128.964L207.542,129.328Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M193.579,128.113L194.186,128.053L193.579,128.113Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M221.808,121.559H221.747L220.715,122.044H220.776L221.808,121.559Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M225.329,120.708L224.358,121.376H224.418L225.329,120.708Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M222.779,120.891L223.265,120.83L222.719,120.891L222.233,121.559H221.99L222.294,121.498L222.779,120.891Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M230.914,124.471H231.278H230.853L230.368,125.078L230.914,124.471Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M136.818,114.395L137.304,114.819H137.364L136.818,114.395Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M138.336,114.759L138.639,115.062L138.7,115.002L138.457,114.759H138.336Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M264.242,160.167L264.667,159.135H264.606L264.181,160.228L263.696,160.774H263.635H263.696L264.242,160.167Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M262.178,160.897H262.117L261.632,161.99H261.692L262.178,160.897Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M179.374,104.62H179.313L177.674,105.288H177.795L179.374,104.62Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M269.402,159.804L267.277,159.986H266.853H267.277L269.402,159.804Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M198.375,93.39V93.45L198.861,93.875L199.468,94.361V94.3L198.982,93.875L198.375,93.39Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M280.451,160.654L280.937,160.108L281.908,159.501H281.847L280.876,160.108L280.39,160.654L279.419,160.715L278.933,160.776L279.419,160.715L280.451,160.654Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M138.275,122.104L138.214,121.011L137.122,120.586L137.729,121.072L138.275,122.104Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M276.687,159.863L275.169,159.985L276.687,159.863Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M274.077,159.501H274.38H274.016L272.498,160.169L271.891,160.229L272.559,160.169L274.077,159.501Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M270.495,160.289L269.948,160.35L270.495,160.289Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M197.464,95.576V96.122L197.525,96.062V95.576H197.464Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M200.56,103.65L199.65,104.257L200.196,104.743L200.682,105.228L200.257,105.775L199.286,106.321V106.382L200.318,105.775L200.743,105.228L200.257,104.743L199.711,104.257L200.621,103.65L201.653,103.043H201.593L200.56,103.65Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M204.324,103.406L203.717,103.467L202.928,103.528L203.778,103.467L204.324,103.406Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M216.708,117.126L217.741,117.551H217.801L216.769,117.126H216.708Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M199.164,96.486H199.043L198.618,96.911V96.972L199.164,96.486Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M206.935,104.255L207.967,103.708V103.162H207.845L207.906,103.708L206.874,104.255H206.51H206.935Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M88.07,176.012L87.099,175.162L87.524,175.587L88.07,176.012Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M300.12,159.258H300.181L300.12,158.226L300.545,157.133H300.484L300.059,158.226L300.12,159.258Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M194.793,95.757L195.4,96.728H195.461L194.854,95.757H194.793Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M191.151,94.422L192.122,94.847H192.304H192.183L191.151,94.422Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M190.058,94.481V94.542L190.544,94.967H191.151H190.665L190.058,94.481Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M197.95,96.061H198.071L198.496,96L197.586,96.061H197.95Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M192.729,95.332L192.669,94.847H192.608L192.669,95.393L193.276,95.879L193.458,95.818L193.276,95.879L192.729,95.332Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M285.551,166.542L286.583,166.421H287.129H286.644L285.551,166.542Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M292.167,170.791L293.078,170.73L292.167,170.791Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M289.8,159.985H289.982H289.739L288.829,160.532L289.8,159.985Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M288.525,163.628L288.464,163.689L289.557,164.66H289.921H289.618L288.525,163.628Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M290.589,164.599L291.682,165.024V164.963L290.65,164.599H290.589Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M292.471,169.151L291.985,169.212L292.471,169.151Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M295.628,172.613L295.446,172.674L295.628,172.613Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M298.724,160.957L299.27,159.803L298.603,159.378L299.635,159.318L299.999,159.257L299.635,159.318L298.603,159.378L299.21,159.803L298.724,160.957L297.631,161.503H297.692L298.724,160.957Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M53.098,197.366L52.675,197.396L52.679,197.457L53.103,197.427L53.098,197.366Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M55.713,187.729V187.851L56.685,188.215H57.231V188.154L56.806,188.215L55.713,187.729Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M58.688,184.875V184.997L59.113,184.936L59.659,184.875V184.814L59.173,184.875H58.688Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M286.097,159.196V158.649H286.036V159.196L285.065,159.742V159.803L286.097,159.196Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M53.164,196.896H53.65L54.135,196.835H54.196H53.71L53.164,196.896Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M60.934,180.079L61.42,180.019V179.958L60.995,180.019L60.934,180.079Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M54.681,196.288L55.167,196.228V196.167L54.742,196.228L54.681,196.288Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M54.924,193.13L55.471,193.069V193.009L54.985,193.069L54.924,193.13Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M61.481,179.412V179.473L61.906,179.412H62.452V179.352L62.027,179.412H61.481Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M55.167,172.126L55.045,172.065V172.551L55.167,172.49V172.126Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M284.033,159.379L283.972,158.771L283.912,158.832L283.972,159.379L283.487,159.925H283.547L284.033,159.379Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M60.63,174.858H60.509V175.162L60.63,175.283V174.858Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M62.452,178.804V178.925L62.938,178.865H63.423V178.743L62.998,178.804H62.452Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M63.904,178.181L63.42,178.215L63.424,178.275L63.909,178.241L63.904,178.181Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M153.877,162.959L154.241,162.898L153.877,162.959Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M158.551,161.564L159.401,161.503H159.461H158.915L158.551,161.564Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M146.713,160.835L146.652,160.774L146.713,161.26L147.259,161.806L147.32,161.867L146.774,161.321L146.713,160.835Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M150.477,162.109L150.781,162.352L150.538,162.109H150.477Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M151.57,162.595V162.655H151.691L151.631,162.595H151.57Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M139.792,159.742H139.732V160.228L139.792,160.714H139.853L139.792,160.289V159.742Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M180.223,104.56L179.374,104.621L180.284,104.56L180.831,104.014H180.77L180.223,104.56Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M183.866,103.771L183.38,103.832L181.984,103.893L183.441,103.832L183.927,103.771L184.898,103.164L185.991,103.043L184.898,103.164L183.866,103.771Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M184.473,113.06L184.534,113.181V113.12L184.473,113.06Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M185.869,150.212H185.748L185.809,150.273L185.869,150.212Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M136.575,159.438L136.211,159.135L136.575,159.499L137.182,159.985L138.639,159.863V159.803L137.182,159.924L136.575,159.438Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M127.347,155.858L126.862,155.433V155.493L127.408,155.979L127.347,155.858Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M126.376,156.525L125.83,156.039L125.284,155.554V155.614L125.769,156.039L126.376,156.525Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M127.894,155.857L127.409,155.493L127.894,155.918V155.857Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M188.055,103.466H188.115L189.087,102.859L188.055,103.466Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M134.815,156.708L134.39,156.586V156.04L134.269,156.101V156.526L134.815,156.708Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M133.338,155.546L133.217,155.555L133.251,156.039L133.372,156.031L133.338,155.546Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M122.006,162.11L121.034,162.717L122.066,162.11L122.491,161.018H122.552H122.431L122.006,162.11Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M134.633,162.171V162.717H134.693V162.292L134.633,162.171Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M130.505,162.535L130.383,162.475L130.444,163.021L130.505,163.507L130.565,163.567V163.082L130.505,162.535Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M137.243,162.534L136.818,162.109H136.757L137.243,162.534Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M123.219,160.472L123.462,160.411L123.219,160.472Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M123.02,160.472L122.959,160.477L122.998,161.022L123.059,161.017L123.02,160.472Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.13,161.988L123.644,162.049H123.584L124.13,161.988Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M198.193,106.441L197.646,106.502H197.404L197.768,106.441H198.193Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M189.39,129.996V130.057L189.936,129.996H189.39Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M190.119,125.2L190.058,125.261H190.119V125.2Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M198.739,105.956L198.679,105.896L198.193,106.442H198.314L198.739,105.956Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M191.455,129.146L191.576,128.782L191.455,128.843V129.146Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M189.39,121.74L189.694,122.104L189.936,122.712L189.876,122.226L189.39,121.74Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M190.119,116.944L190.605,115.852H190.544L190.058,116.944L189.573,117.491L190.119,116.944Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M209.667,128.599L210.213,128.053H210.152L209.667,128.599Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M219.198,122.59V122.651L219.258,123.197H219.319L219.258,122.165V122.651L219.198,122.59Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M212.277,128.357H212.338L212.823,127.871L213.005,127.811L212.763,127.871L212.277,128.357Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M219.258,122.164L220.169,121.679H220.108L219.198,122.164L219.258,122.65V122.164Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M210.274,128.053L210.638,127.992L210.274,128.053Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M192.608,115.184H192.547L191.515,115.791H191.576L192.608,115.184Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M204.931,128.903H204.688H205.053L205.538,128.356H205.963H205.478L204.931,128.903Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M194.429,128.053H194.49L196.129,127.507H196.068L194.429,128.053Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M198.496,108.991L196.311,108.687L197.222,106.502H197.161L196.25,108.687L198.375,108.991L197.404,110.144H197.464L198.496,108.991Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M194.065,114.029L194.004,113.483L193.883,112.026V111.48L195.947,110.812L195.886,110.266H195.825V110.812L193.822,111.48V112.026L193.944,113.483L194.004,114.029L193.519,115.122H193.579L194.065,114.029Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M193.154,115.122H193.518L193.094,115.183L193.154,115.668V115.122Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M239.595,160.349L240.263,160.835L240.567,159.256V158.771L241.538,157.617L242.631,157.556V158.103L243.602,158.042L244.695,157.921L245.666,157.314V156.828L245.12,156.342L245.059,155.796H245.545V155.189L245.059,155.25L243.966,155.31L242.934,155.978L242.509,156.524L242.024,157.071L239.96,157.192V156.707L239.292,156.221L238.26,156.767L237.774,156.342L237.713,155.796H237.228L236.742,155.857L236.681,155.371L236.621,154.946L236.074,154.4L235.467,153.914L235.042,155.007L234.617,155.553L234.557,155.068L234.01,154.521L233.403,154.582V154.096H232.918L232.978,155.189L233.039,155.614L232.553,156.16L231.582,156.767V157.253L230.489,157.374L230.004,157.921V158.467L229.093,159.074V159.56L230.064,158.953H230.611L231.157,158.892L231.764,159.378L232.796,159.803L233.282,159.256L233.343,159.803L233.889,160.774L233.464,161.32L233.95,162.352L233.525,162.899L233.585,163.445L235.164,163.324L235.649,163.809L237.228,163.142L237.592,161.563L238.138,161.017L238.563,160.47L239.535,159.863L239.595,160.349Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M228.121,19.266L229.153,19.691L229.214,20.237L230.307,20.662L231.339,21.087L231.825,20.601L231.278,20.055L231.764,18.962L231.703,18.476L231.642,17.93L231.035,17.02L230.064,17.08L228.911,16.655L228.364,16.716L228.425,17.202L228,18.173L228.121,19.266Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M318.939,85.923L318.393,84.891L317.3,83.98H316.814L316.268,84.466L315.236,85.133L313.718,85.255L312.686,85.316L312.201,85.376L310.562,84.891L310.501,84.466L309.894,83.373L309.469,83.434H308.922L307.89,84.648L307.405,85.133L306.433,85.194L305.341,84.284L304.187,82.705L304.127,81.673V81.248L303.52,80.763L302.912,80.277V79.791L301.759,78.759L301.638,76.695L302.002,75.117L301.455,74.631L300.423,74.146L300.302,72.567L300.241,71.535L299.756,72.081L299.816,72.628L298.906,74.813L297.934,76.452L296.417,77.06L294.899,77.727L293.867,78.274L292.167,76.331L292.107,74.753L293.139,74.146L294.596,73.599L295.142,74.024L295.749,74.51L296.174,73.963L296.113,72.871L296.053,72.324L296.538,71.292L296.963,70.26L296.417,69.228L295.385,68.864L295.324,68.318H294.778L294.292,68.925L293.26,68.985L292.774,69.046L292.228,69.532L290.225,70.746L289.193,70.807L288.586,69.35L287.432,67.771L286.825,67.286L287.371,66.739H287.918L287.796,65.161L287.129,63.583L285.914,62.125L286.4,61.033L286.886,60.486L287.493,60.426L287.432,59.879L286.825,59.029L286.764,58.483L286.643,56.905V56.358L285.49,56.419L285.429,55.448L284.943,54.416L284.336,53.93L283.79,52.898H283.183V52.412L282.636,51.987L282.151,52.473L281.544,50.955L280.329,48.952L279.662,47.009L279.115,45.977L277.415,45.006L277.294,43.428L276.748,43.003L275.655,41.971L275.594,41L274.987,39.907L274.441,39.482L273.834,38.935L273.166,36.993L272.68,36.507L271.588,36.082L271.527,35.536L270.556,35.05L269.948,34.564L269.22,32.015H268.674L268.613,30.983L268.006,30.011V30.497L267.46,29.526L267.399,28.433L266.852,28.008L266.306,26.915L265.638,26.066L264.606,26.187L264.546,25.58V25.094L265.578,25.034L266.124,24.426L265.942,22.302L265.82,20.784L265.76,19.752L266.245,19.691L266.67,18.113L266.488,15.988L265.335,13.499L265.76,12.467L266.67,11.314L267.156,10.221L266.488,8.764L266.367,7.186L265.82,6.214L264.788,5.668L265.213,4.575L264.728,4.636L264.121,4.15L263.514,4.211L263.089,5.243L262.664,5.304L262.057,4.332L261.449,3.786L260.964,3.847L260.417,3.422L260.357,2.45L259.81,2.511L258.718,2.572L258.293,3.058L257.746,3.118L257.261,3.179L256.714,2.086L256.047,1.661L256.654,1.115L256.593,0.508L255.986,0.569L253.922,0.69L251.979,1.965L250.947,2.511L249.429,2.633L248.337,2.693L248.883,3.24L249.005,4.697L248.519,5.304L249.065,5.729L249.672,6.214L250.219,7.307L251.251,7.246L251.797,7.671L250.826,8.764L250.401,10.403L250.886,10.342L251.494,10.889L250.522,11.921L249.49,11.981L248.397,11.071L248.883,10.464L248.276,9.432L247.73,9.007L247.244,9.553L246.819,10.646V11.192L246.941,12.164V12.71L246.516,13.803L244.998,13.924L243.905,13.985V14.531L243.541,16.535V17.081L242.691,18.234V18.72L242.752,19.266L242.084,18.781L241.598,18.295L240.688,19.934L240.627,18.841L240.566,17.809L240.991,17.263L240.506,16.777L240.384,15.867H239.898L239.291,15.927L238.806,15.381L238.381,16.899H238.927L238.988,17.931L238.442,17.992L238.381,17.445L237.895,17.506L237.956,17.992V18.538L239.17,20.056L238.077,20.116L237.531,19.631V19.084L236.985,19.691L236.499,20.723H236.013L235.163,22.969L234.617,23.516L234.131,24.062L234.678,24.548L235.285,25.034L234.313,26.187L233.767,26.733H233.342L234.435,27.705L234.496,28.676L234.556,29.708L234.617,30.254L234.071,30.801L233.16,31.408L231.582,32.076L231.157,32.622L229.457,31.651L228.425,31.165L227.393,31.226L226.3,30.861L226.239,30.315L226.179,29.283L226.118,28.858L227.696,28.19L227.636,27.705L228.668,27.644L229.093,27.037L228.061,26.612L227.514,26.126L226.968,25.641L225.936,25.701L225.329,24.669L224.843,24.73L223.265,25.337L222.293,25.398V25.944L221.201,26.005L222.354,26.49L222.9,26.976L223.447,27.462L223.508,28.008L223.568,29.04L224.115,29.404L224.175,29.89H224.6L224.236,30.983V31.468L224.357,33.107L225.45,33.047L226.422,32.925L226.907,33.411L226.968,33.957L227.575,34.443L227.636,34.929L228.182,35.475L227.696,36.021L227.15,37.054L228.364,38.025L228.911,38.571L227.939,39.178L227.271,38.632L226.361,39.239L225.268,39.36L225.814,38.207H226.3L225.147,37.236L224.722,37.782L223.629,37.843L222.536,37.418L222.597,37.903L222.111,38.996L221.686,40.635L220.715,41.121L220.229,41.667L220.29,42.76L219.865,43.792L219.379,44.399L218.955,45.006L219.44,45.431L221.14,46.402L222.172,46.827V47.374L223.325,48.345L223.993,49.863L224.054,50.348L226.604,49.681L227.15,50.105L227.696,51.138L226.664,50.713L226.057,50.773L225.086,50.834L224.054,50.348L223.447,49.863L222.9,49.923L222.415,50.47L221.929,49.984L220.836,50.591L219.319,50.166L218.226,49.681L217.133,49.741V49.256L216.648,49.316L215.009,49.438L213.491,49.013L213.552,50.045L213.005,50.652L213.066,51.138L214.159,51.623L214.705,52.048L216.283,52.473V51.987L216.83,51.927L217.923,52.837L218.59,54.841L217.558,55.508L217.073,56.055L215.98,55.63L214.948,55.691H214.462L213.309,54.719L212.762,54.234L212.216,53.748L211.791,54.841L211.245,54.355L209.666,53.93L209.606,52.959L209.059,53.02L208.999,52.473V51.987L208.391,51.441V50.955L207.724,49.923L207.177,49.498V48.952L207.602,48.345L207.542,47.374L206.995,46.827V46.342L206.449,45.917L205.963,45.37L204.324,45.492H203.778L203.353,45.553L202.685,45.006H203.292L203.231,44.46L202.685,44.521L202.199,44.581L202.139,44.035L201.107,44.096L200.621,43.61L199.892,42.639L200.439,41.606L199.832,41.667L199.346,41.182L199.771,41.121H200.439L200.864,41.06L202.017,42.032L202.503,42.456L203.11,42.396L203.049,41.91L204.081,42.335L205.174,42.76L205.781,42.699H206.206L206.752,43.185L207.845,43.124L208.877,43.003L210.456,43.428L210.941,42.881L211.427,42.335L211.973,42.821V43.306L213.066,43.246L214.037,43.185L215.13,43.124L216.101,41.971H216.587L217.619,41.364L218.105,40.878L218.044,40.392L218.59,39.785H219.076L219.015,39.239L218.955,38.693H219.501L219.865,36.568L219.258,35.536L219.197,34.504H218.651L218.59,33.533L218.165,34.018L217.558,33.593L217.498,32.5L216.526,32.561L215.919,32.622V32.076L214.341,31.711L213.309,32.258L212.762,31.833L212.216,31.286L211.123,30.861L211.184,31.347L210.638,30.861L209.484,30.072L207.967,30.133L206.267,29.222L204.81,28.737L203.717,29.404L200.075,29.647L199.589,29.708L198.921,29.162L197.95,29.829L197.889,29.222L197.404,28.797L196.918,29.283L196.311,28.312L195.764,28.372L195.157,27.34H194.732L194.247,28.494H193.761L193.154,27.462L192.608,27.522L192.729,29.101L191.697,29.162L191.09,28.676L190.24,28.737V29.04L189.026,29.344L187.933,30.133L187.326,31.347L187.205,33.229H186.962H187.144L186.658,33.775L186.719,34.322L186.233,34.929V35.414L186.84,35.9L187.387,36.386L187.933,36.871L187.994,37.296L188.115,37.478L189.087,37.843L190.179,38.814L190.24,39.907L190.301,40.392L189.815,41L189.876,42.032L189.937,42.517L189.997,43.549L190.604,44.581L191.151,45.067L191.211,45.613L192.304,45.977L192.85,46.524L193.458,47.556L194.065,48.527V49.074L194.186,49.195L194.125,49.316V49.559L193.64,50.166L194.247,51.198L193.822,51.684L193.761,51.866L193.882,52.352L194.368,52.716V53.262L194.429,53.809V54.294L195.036,54.841L195.522,54.234L195.582,54.78L196.129,55.266L195.097,55.812L195.339,55.933H195.4V55.994L196.189,56.298L196.25,56.783V57.33L197.282,57.269L197.343,57.815L197.95,58.301V58.787L198.011,59.272L197.464,59.879L196.979,59.94L196.493,60.001H196.432L197.039,61.033L197.586,60.972L198.132,61.397L198.678,61.883L200.317,62.308L201.957,62.733L202.503,63.218L203.11,64.25L202.624,65.282L201.592,65.889L201.167,67.043L201.228,67.529L200.742,68.135L200.257,68.621L200.317,69.714L199.832,70.26L200.378,70.746L199.892,71.292L199.346,71.353V71.232L199.225,71.353L198.921,72.385L198.436,73.538L198.011,74.085L197.525,74.692L197.039,75.724L196.554,76.27L196.129,77.181L196.25,78.334L197.282,78.274L198.253,77.666H198.678L198.739,78.152L198.375,79.245L198.436,79.791L199.407,79.731L199.953,80.277L201.107,80.702L201.532,80.156L202.564,80.095L203.171,80.034L203.656,80.52L204.203,80.459L204.263,81.491L203.717,81.552L202.624,81.613L201.592,81.673L200.075,81.795V82.341H199.589V81.795L199.043,82.402L199.103,82.887V83.434L199.164,83.919L198.739,83.98L198.132,82.948L197.646,83.494V84.041L197.707,84.587L197.768,85.619H197.828L198.436,86.044L198.496,87.137L197.464,88.29L197.525,88.776L198.071,89.201L197.646,90.233L198.253,91.265L198.314,92.358L199.407,92.783L199.892,93.268V93.815L199.528,94.361L199.468,94.3V94.361L198.86,93.875L198.375,93.45L197.889,93.936L197.95,94.482L198.496,94.968L199.043,94.907L198.557,96H198.496L198.071,96.061V96.546L198.618,96.486V96.911L199.043,96.486H199.164L199.65,96.425L199.771,97.457L199.832,98.55H199.771L198.739,98.61L199.346,99.643L199.892,99.582H200.317L200.378,100.067L200.985,100.978L201.046,102.01L201.653,103.042H202.139H202.199L202.746,102.981V103.528H202.928L203.717,103.467L204.324,103.406L204.87,103.346L205.781,103.285H205.842H205.902L206.449,103.771L206.51,104.256H206.874L207.906,103.71L207.845,103.164H207.967L208.452,103.103L209.545,103.588L210.152,104.56L211.184,104.499V105.045L210.759,105.531V106.077L211.852,107.595L212.58,109.113L211.548,109.72L213.066,109.598L213.127,110.084L213.187,110.63L214.766,110.934H215.312L216.405,111.359L216.466,112.452L216.526,112.877L217.498,112.816L218.044,112.755L219.015,112.695L219.137,113.848L220.108,113.787H220.169L220.776,114.759L220.29,115.305L219.804,115.851L219.319,116.458L218.347,117.065L217.801,117.551H217.74L216.708,117.126L216.283,117.187V117.673L216.344,118.705L216.405,119.251L217.012,120.283L217.558,121.254L217.619,121.861L218.165,122.226L219.197,122.59V122.165L220.108,121.679H220.169H220.229L220.715,122.043L221.747,121.558H221.808H221.99H222.233L222.718,120.89L223.265,120.829H223.325L224.357,121.376L225.329,120.708L225.875,120.647L226.422,121.254L227.089,122.104L227.575,122.59L227.636,123.622L227.696,124.715L227.757,125.261L228.789,125.2L230.367,125.079L230.853,124.472H231.278H231.339L231.399,125.018L232.067,125.989L233.039,125.929L233.099,126.414L233.646,127.932L233.706,128.418H234.313L235.285,128.357L235.831,128.296L236.317,128.782L236.802,128.236H236.863H236.924L237.41,128.721H237.713L237.956,128.661L238.381,128.114L239.352,127.021H239.413L240.506,126.961V127.446L240.991,127.932L242.691,128.843L243.602,128.296V127.75L244.209,128.236L244.694,128.661L245.726,128.114V128.175L245.787,128.114L245.848,128.6H246.394L246.819,128.539L246.758,128.053L247.79,127.993H248.033L248.397,127.932V128.418L248.883,128.903L248.822,128.418H248.883L249.794,128.357H249.854L249.915,128.296L251.008,128.843L251.979,128.782L252.465,128.175L252.526,128.114H253.133L253.254,129.753L252.708,130.239L251.676,130.846L251.251,131.453L251.736,131.817H252.161L252.829,131.757V132.242L252.343,132.849L251.858,133.396L251.918,133.942L252.404,133.881L253.618,135.399L253.74,136.977L253.315,138.556L253.193,138.616L252.161,138.677L251.19,138.738L250.644,138.799L250.219,139.284L249.794,140.923L248.276,141.53L248.458,144.019L248.883,143.473H249.429L249.854,142.987L249.915,143.959H250.522L251.494,142.866L251.979,142.38L252.951,142.32L253.011,143.17L253.072,143.777L252.101,144.323L251.008,144.991L250.583,145.537L251.129,146.023L251.736,146.508L250.704,147.055L249.672,146.63L249.126,146.691L248.58,147.237H248.155V147.783L248.64,148.269L250.219,148.147L250.826,148.633L250.886,149.119L252.465,149.544L251.979,149.604L251.372,150.151L250.886,149.665L250.947,150.758L251.494,151.183L251.069,151.79L250.462,151.244L249.976,150.819L249.429,151.304L249.551,152.397L249.005,153.004L249.612,153.429L249.672,154.461L248.64,154.522L248.215,156.1V156.646L249.308,157.071L250.401,157.557L250.886,157.496L251.918,157.436L252.586,157.921V158.407L253.558,158.346L254.043,157.8L254.59,158.286L255.682,158.225V158.711L256.775,159.135L257.807,159.075L258.353,159.56L258.9,160.046L259.993,159.985L261.632,161.989L262.117,160.896H262.178H262.664L263.635,160.775H263.696L264.181,160.228L264.606,159.135H264.667L265.76,159.56L266.852,159.985H267.277L269.402,159.803L269.948,160.35L270.495,160.289H270.556L271.588,160.228H271.891L272.498,160.167L274.016,159.5H274.38L274.562,159.439L275.169,159.985L276.687,159.864H276.748L277.78,159.803L278.326,159.743L278.933,160.228L278.387,160.775H278.933L279.419,160.714L280.39,160.653L280.876,160.107L281.847,159.5H281.908L283.061,159.925H283.486L283.972,159.378L283.911,158.832L283.972,158.771H284.518L285.004,158.711L285.065,159.743L286.036,159.196V158.65H286.097L286.825,158.589H287.068L288.161,159.075L288.221,159.56V160.107L288.828,160.532L289.739,159.985H289.982L290.346,159.925L291.924,160.35L293.503,160.228L294.049,160.167L295.142,161.2L296.174,161.624H296.538L297.206,161.564L297.631,161.503L298.724,160.957L299.209,159.803L298.602,159.378L299.634,159.318L299.999,159.257H300.12L300.059,158.225L300.484,157.132L299.999,157.193L298.966,156.707L297.813,156.222L297.267,155.797L295.688,154.886L294.596,154.4L293.503,153.429L293.321,151.365L292.774,150.94L292.167,150.454L292.107,149.422L291.56,148.33L291.014,148.39V147.905L289.86,147.48L288.282,146.508L288.343,147.055L287.857,147.601L287.25,147.115L286.218,146.63L286.582,144.505L286.522,144.019L287.007,143.473L286.946,142.441L287.432,141.834L286.886,141.348L286.764,139.952L287.25,138.799L287.189,137.767L287.675,137.706L288.221,138.192L289.132,137.038L289.678,136.492L290.164,136.006L290.589,134.853L291.075,135.399L291.56,134.306L290.892,132.728L289.921,132.849H289.435L288.343,132.424L288.768,131.332L289.253,130.785L289.8,130.725L289.253,130.239L287.554,129.268L285.429,127.932L284.336,126.961L283.79,127.568L282.697,127.628L282.758,128.114L282.272,128.721L281.24,128.236L280.694,127.811L280.633,126.779L280.572,126.172L279.48,125.747L278.447,125.807L277.962,126.354L277.84,124.836L277.78,123.743L278.751,122.104L277.173,121.801L276.626,121.254L277.051,120.647L276.991,119.129L276.444,118.583L275.837,117.733L276.262,116.58H276.808L276.687,115.001H276.201L277.051,113.362L278.144,113.909L278.69,114.819L279.844,115.305L280.39,115.791L281.301,114.637L281.24,114.152L280.694,113.119L280.087,111.602L278.933,111.177L279.965,110.57L280.997,110.509V109.963L280.936,109.477L280.815,107.352L281.847,107.231L282.333,106.685L282.818,105.713L283.79,104.56L284.215,103.588L284.154,102.981L284.093,102.435H284.7L285.186,102.86L285.732,103.467L286.704,102.799L287.25,101.767L287.614,100.675L288.586,100.067L289.193,100.007L290.346,101.039L290.285,100.432L290.71,99.4L291.196,99.339L292.228,99.278L292.835,99.764L293.867,100.189L295.445,100.128L295.992,100.614L297.024,100.553L297.57,100.492L298.117,100.978L297.995,99.885L297.51,99.4V98.914H297.934L300.666,99.218L302.245,99.643L302.67,98.55V98.003L302.609,97.518L303.095,97.457L303.034,96.971L302.548,96.486L303.52,96.425L304.612,96.304L304.005,95.272H304.552L305.037,94.664L306.13,95.15L307.162,95.09L307.041,93.997L308.012,93.936L307.526,92.965L307.89,92.479L308.437,91.933L309.53,91.326L310.015,91.811L310.562,92.722L311.654,92.661L313.718,92.054L314.204,91.993H314.75L314.69,91.447L314.629,90.476L315.54,89.808L317.179,89.14L318.575,87.562L319,86.955L318.939,85.923Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M179.495,94.179L180.102,94.118L180.588,94.665L180.649,95.15L181.195,94.604L181.134,94.058L182.166,93.997L182.652,93.936V93.451L183.077,92.904L183.684,92.297L182.531,91.872L181.074,93.025L180.406,92.054L179.981,92.54L180.042,93.147V93.633L179.01,94.179H179.495Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M181.377,90.355L181.438,91.387L181.923,90.841L182.409,90.294V89.869L181.316,89.384L180.831,89.991H180.284L180.345,90.416H180.891L181.377,90.355Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M189.997,94.483L190.058,94.544V94.483L190.665,94.969H191.151L191.09,94.423H191.151L192.183,94.847H192.304H192.608H192.669L192.729,95.333L193.276,95.879L193.458,95.819H193.822L194.793,95.758H194.854L195.461,96.729L196.432,96.183L197.464,95.576H197.525V96.062H197.586L198.496,96.001H198.557L199.043,94.908L198.496,94.969L197.95,94.483L197.889,93.937L198.375,93.451V93.391L198.982,93.876L199.468,94.301L199.528,94.362L199.893,93.815V93.269L199.407,92.783L198.314,92.358L198.254,91.266L197.647,90.234L198.071,89.202L197.525,88.777L197.464,88.291L198.496,87.138L198.436,86.045L197.829,85.62H197.768H197.282L195.158,85.802L194.672,85.863L194.125,85.316L193.64,85.377L192.608,85.984L192.547,85.438L191.515,85.498L191.029,85.559L190.544,85.62H189.997L189.512,86.227H188.965L187.994,86.288L187.387,86.348L186.901,86.409H186.355V86.895L186.416,87.502H185.93L185.444,87.563H184.898L184.412,88.17V88.655L184.473,89.202L184.534,89.687L185.566,89.627V90.052L185.626,90.598L185.08,90.659L185.141,91.144L185.262,92.783L186.355,93.694L186.841,93.633V93.208L187.326,92.601H187.812L188.419,93.087L187.933,94.119L187.994,95.151L188.055,95.576L189.512,95.03L189.997,94.483Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M198.072,96.061L198.496,96L198.072,96.061Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M179.374,104.621L180.224,104.56L180.77,104.014H180.831L181.316,103.953L181.924,103.892H181.984L183.381,103.831L183.866,103.771L184.898,103.164L185.991,103.042H186.537L188.055,103.467L189.087,102.86H189.148L189.694,103.346L190.726,103.831L192.365,104.256L192.851,104.196L193.458,105.228L195.097,106.138L195.643,106.624L197.222,106.503H197.404H197.647L198.193,106.442L198.679,105.896L198.739,105.956V105.896L199.286,106.32L200.257,105.774L200.682,105.228L200.196,104.742L199.65,104.256L200.561,103.649L201.593,103.042H201.653L201.046,102.01L200.986,100.978L200.379,100.068L200.318,99.582H199.893L199.347,99.643L198.739,98.611L199.771,98.55H199.832L199.771,97.457L199.65,96.425L199.164,96.486L198.618,96.972V96.911V96.486L198.072,96.547V96.061H197.95H197.586H197.525L197.465,96.122V95.575L196.433,96.182L195.461,96.729H195.401L194.793,95.757L193.822,95.818H193.458L193.276,95.879L192.669,95.393L192.608,94.847H192.304H192.122L191.151,94.422H191.09L191.151,94.968H190.544L190.058,94.543L189.998,94.483L189.512,95.029L188.055,95.575L187.509,95.757V96.243L187.569,96.789L187.63,97.275L187.691,98.307V98.854L187.812,99.885L187.326,100.493L186.841,101.039H186.294L185.141,100.068L184.655,99.643L184.534,98.55L183.441,97.579L182.956,97.639L182.409,97.154L182.349,96.607L181.316,96.729L180.284,97.336L179.799,97.822L179.313,97.882L178.888,98.914L178.949,100.068L178.524,101.1L178.038,102.071L177.674,105.288L179.313,104.621H179.374Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M182.895,111.48L183.805,111.723L184.291,112.573L184.473,112.997V113.058L184.534,113.119V113.18L184.716,113.908L184.595,114.637L184.413,114.758L185.02,114.697L184.655,115.304V115.365L185.627,115.911L186.416,116.033L187.569,116.883L187.63,117.126L188.48,117.065L188.541,117.55L189.573,117.49L190.058,116.943L190.544,115.851H190.605L190.058,115.911L190.605,115.851H191.09L191.515,115.79L192.547,115.183H192.608L193.154,115.669L193.094,115.183L193.519,115.122L194.004,114.029L193.944,113.483L193.822,112.026V111.48L195.825,110.812V110.266H195.886L197.404,110.144L198.375,108.991L196.25,108.687L197.161,106.502H197.222L195.643,106.623L195.097,106.138L193.458,105.227L192.851,104.195L192.365,104.256L190.726,103.831L189.694,103.345L189.148,102.859H189.087L188.116,103.466H188.055L186.537,103.041H185.991L184.898,103.163L183.927,103.77L183.441,103.831L181.984,103.891H181.924L181.316,103.952L180.831,104.013L180.284,104.559L179.374,104.62L177.795,105.288H177.674L177.795,106.866L177.856,107.352V107.898L178.524,109.416L178.645,110.994L179.738,110.933L179.799,111.419L180.284,111.905L180.77,111.844L181.377,112.33H181.62L182.045,111.783L182.895,111.48Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M219.258,122.651L219.198,122.165V122.59L219.258,122.651Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M199.71,104.256L200.257,104.742L200.742,105.228L200.317,105.774L199.285,106.381V106.32L198.739,105.895V105.956L198.314,106.442H198.193H197.768L197.403,106.502H197.221L196.311,108.688L198.496,108.991L197.464,110.145H197.403L195.886,110.266L195.947,110.813L193.882,111.48V112.027L194.004,113.484L194.065,114.03L193.579,115.123H193.518H193.154V115.669L192.608,115.184L191.576,115.791H191.515L191.09,115.851H190.604L190.119,116.944L189.572,117.49L188.54,117.551L188.48,117.065L187.63,117.126L187.69,117.976L187.933,118.765L188.297,119.069L188.419,120.587L188.722,120.951L189.39,121.74L189.876,122.226L189.937,122.711L190.119,123.136L190.24,124.836L190.119,125.2V125.261H190.058L189.937,125.747L188.055,127.204L188.54,127.811L189.512,127.993L189.269,129.571V129.935L189.39,130.057V129.996H189.937H189.997L190.483,130.482L190.604,130.36L190.847,129.935L191.393,129.328L191.454,129.146V128.843L191.576,128.782V128.721L192.486,128.053L193.579,128.114L194.186,128.053H194.429L196.068,127.507H196.129L197.646,127.386L199.225,127.689L200.317,128.236L202.381,128.6L202.928,128.539L203.474,129.025L204.688,128.903H204.931L205.478,128.357H205.963L206.631,128.296L207.177,128.782L207.299,128.964L207.602,129.207L208.027,128.175L208.634,128.296L209.302,129.632L209.363,129.571L209.484,129.207L209.606,128.6H209.666L210.152,128.053H210.213H210.273L210.638,127.993H210.698L212.277,128.357L212.762,127.871L213.005,127.811H213.309L214.462,128.782H214.644L214.584,127.689L214.766,127.264L214.098,126.172L214.401,125.018L214.341,124.047L215.069,123.197H215.676L216.587,123.075L217.255,123.318H217.74L218.226,123.258L219.258,123.197L219.197,122.651V122.59L218.165,122.226L217.619,121.861L217.558,121.254L217.012,120.283L216.405,119.251L216.344,118.705L216.283,117.673V117.187L216.708,117.126H216.769L217.801,117.551L218.347,117.065L219.319,116.458L219.804,115.851L220.29,115.305L220.776,114.759L220.169,113.787H220.108L219.137,113.848L219.015,112.695L218.044,112.755L217.498,112.816L216.526,112.877L216.466,112.452L216.405,111.359L215.312,110.934H214.766L213.187,110.631L213.127,110.084L213.066,109.599L211.548,109.72L212.58,109.113L211.852,107.595L210.759,106.078V105.531L211.184,105.045V104.499L210.152,104.56L209.545,103.589L208.452,103.103L207.967,103.164V103.71L206.935,104.256H206.51L206.449,103.771L205.902,103.285H205.842H205.781L204.87,103.346L204.324,103.406L203.778,103.467L202.928,103.528H202.746V102.981L202.199,103.042H201.653L200.621,103.649L199.71,104.256Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M190.058,115.912L190.604,115.852L190.058,115.912Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M185.02,149.483L184.777,149.24L184.655,149.301L184.837,149.422L185.02,149.483Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M249.794,140.924L250.219,139.285L250.644,138.799L251.19,138.738L252.222,138.677L253.194,138.617L253.315,138.556L253.74,136.978L253.618,135.399L252.404,133.882L251.919,133.942L251.858,133.396L252.344,132.85L252.829,132.243V131.757L252.162,131.818H251.737L251.251,131.453L251.676,130.846L252.708,130.239L253.254,129.754L253.133,128.114H252.526L252.04,128.782H251.979L251.008,128.843L249.915,128.297L249.855,128.357H249.794L248.883,128.418L248.944,129.025L248.883,128.904L248.398,128.418V127.932L248.033,127.993H247.851L246.819,128.054V128.539L246.394,128.6H245.848L245.787,128.114L245.727,128.175L244.755,128.722L244.695,128.661L244.209,128.236L243.602,127.75L243.663,128.297L242.691,128.843L240.991,127.932L240.506,127.447V126.961L239.413,127.022L238.442,128.114L238.017,128.661L237.713,128.722H237.41L236.924,128.236H236.863L236.378,128.782H236.317L235.831,128.297L235.346,128.357L234.314,128.418H233.707L233.646,127.932L233.099,126.415L233.039,125.929L232.067,125.99L231.4,125.018L231.339,124.472H231.278H230.914L230.368,125.079L228.789,125.2L227.757,125.261L227.697,124.715L227.636,123.622L227.575,122.59L227.089,122.104L226.422,121.255L225.875,120.647L225.329,120.708L224.418,121.376H224.358L223.326,120.83H223.265L222.779,120.89L222.294,121.497L221.99,121.558H221.808L220.776,122.044H220.715L220.23,121.679H220.169L219.258,122.165L219.319,123.197H219.258L218.226,123.258L217.741,123.319H217.255L216.587,123.076L215.677,123.197H215.069L214.341,124.047L214.402,125.018L214.098,126.172L214.766,127.265L214.584,127.689L214.645,128.782V128.843L214.462,128.782L213.309,127.811H213.005L212.823,127.872L212.338,128.357H212.277L210.699,127.993H210.638L210.274,128.054H210.213L209.667,128.6H209.606L209.484,129.207L209.363,129.571L209.302,129.693V129.632L208.635,128.297L208.027,128.175L207.603,129.207L207.542,129.329L207.299,128.964L207.178,128.782L206.631,128.297L205.963,128.357H205.538L205.053,128.904H204.689L203.474,129.025L202.928,128.539L202.382,128.6L200.318,128.236L199.225,127.689L197.647,127.386L196.129,127.507L194.49,128.054H194.429H194.186L193.579,128.114L192.486,128.054L191.576,128.722V128.782L191.454,129.146L191.394,129.329L190.847,129.936L190.605,130.361L190.544,130.482H190.483L189.997,129.996H189.937L189.39,130.057L189.451,130.118L189.208,131.696L189.512,132.121L189.269,132.546L190.058,133.032L190.483,133.76L191.515,134.914L191.151,135.096V135.764L191.576,135.946L192.001,136.674L191.697,137.828L191.151,138.253L190.119,138.192L189.087,139.224L188.844,139.77L188.419,140.742L187.873,140.924L187.448,141.591L187.266,142.259L187.144,143.413V143.838L187.205,144.445L187.084,144.93L187.144,145.477L186.901,145.902L187.023,146.266L186.476,146.63L186.173,147.055L186.355,147.723H185.869L185.627,148.208L185.505,148.816L185.687,149.18L185.627,149.908L185.748,150.212H185.869L186.112,150.09L186.719,150.212L186.901,150.394L187.691,150.151L189.148,150.03L190.119,150.212L190.908,150.515L191.515,150.819L192.486,150.94L192.972,150.151L193.883,149.969L194.49,149.908L196.007,150.515L196.554,150.09L197.647,149.058L198.011,149.119L198.861,149.058L199.832,148.937L200.014,148.512L200.196,147.905L201.653,147.298L202.139,147.48V147.359L202.321,147.48L202.625,147.601L203.292,147.784L204.689,147.176L205.235,146.569L205.721,146.144L205.781,146.084L207.299,146.023V146.448L208.392,146.327L208.938,146.873L209.484,147.298L209.909,146.812L210.516,146.752L211.063,147.237L212.034,147.723V147.176L213.248,147.662V148.148L213.309,148.694L213.734,148.633H213.795L213.855,149.665L213.916,150.697L213.977,151.244H214.462L214.948,151.183L215.616,152.154L215.677,153.247L216.162,153.186H216.648H216.769V153.611L216.83,154.158L217.376,154.704L217.923,155.19L218.469,155.615L218.408,156.222L218.894,155.615L219.501,156.161L219.987,156.586L220.533,156.525L220.412,155.008L220.897,153.915L221.444,153.854L221.929,154.34L222.961,153.733L223.933,152.64H224.418L224.479,153.065L225.025,153.004L224.965,152.033L224.904,151.487L224.843,150.515L225.39,151.487L225.936,151.972L225.997,152.519L226.604,153.49L225.572,153.551V154.097L225.633,154.643L225.693,155.129L226.786,155.615L227.818,155.979L229.336,154.886L230.246,154.279H230.793L231.339,153.672L231.946,155.251L232.432,154.643L232.917,153.611L232.857,153.065L233.342,153.004L233.949,153.49L234.435,152.944L234.921,152.883L236.499,152.822L236.56,153.308H237.045L236.985,152.762L237.531,152.701L237.895,151.122L238.927,150.515L238.988,151.608L239.595,151.547L240.991,149.848L242.023,149.301L242.388,148.694L242.934,148.148L243.42,148.087L244.573,148.573L244.998,148.026L244.512,147.48L245.423,146.934L245.909,145.841L246.455,145.295L246.941,145.234L247.366,144.687V144.141L247.973,144.627L248.398,144.566L248.458,144.08V144.02L248.276,141.531L249.794,140.924Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M217.923,155.189L217.377,154.704L216.83,154.157L216.77,153.611V153.186H216.648H216.162L215.677,153.247L215.616,152.154L214.948,151.183L214.463,151.243H213.977L213.916,150.697L213.856,149.665L213.795,148.633H213.734L213.309,148.694L213.249,148.147V147.662L212.034,147.176L212.095,147.722H212.034L211.063,147.237L210.517,146.751L209.97,146.812L209.545,147.358L209.485,147.297L208.938,146.872L208.392,146.326L207.299,146.447V146.022L205.782,146.083L205.296,146.569L204.75,147.176L203.353,147.783L203.778,147.844L204.325,148.329L206.024,149.301L205.903,151.122L207.178,151.304L208.271,151.729L208.331,152.761L208.938,153.307L209.485,153.793L210.577,154.218V154.764L211.184,155.736L211.245,156.282L211.306,157.375H210.76L210.82,157.86V158.407L211.427,158.892V159.378L211.549,160.471L211.609,161.503L212.217,162.292L213.249,161.928L213.916,162.231L214.281,162.413L214.584,162.231L215.009,161.624H215.13H215.191L216.162,161.746L216.527,161.867L216.77,161.988L216.709,161.503V160.956L216.102,160.471V159.985L216.587,159.378H217.134V159.864L217.619,159.317L218.651,159.257L219.137,158.71L219.683,158.65L220.169,158.589L220.108,157.618L219.562,157.071H219.016L217.923,156.707V156.221H218.409L218.469,155.614L217.923,155.189Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M298.177,176.072L298.238,176.011L298.177,175.525V176.072Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M300.181,159.258H300.12H299.998L299.634,159.318L298.602,159.379L299.27,159.804L298.724,160.957L297.692,161.504H297.631L297.206,161.564L296.538,161.625H296.174L295.142,161.2L294.049,160.168L293.503,160.229L291.924,160.35H291.864H291.439L291.499,161.443L291.56,161.989L293.078,162.414L293.685,162.9V163.264L293.806,164.357L293.199,164.418L291.742,164.539V165.025L291.682,164.964V165.025L290.589,164.6L289.921,164.66H289.557L288.464,163.689L288.039,164.236L287.553,165.328L288.646,165.753L288.707,166.3L289.253,166.239H289.739L291.317,167.149L290.892,167.757L289.921,168.303L291.439,169.214H291.985L292.471,169.153H292.592L293.624,169.638V170.124L293.139,170.731H293.078L292.167,170.792L292.714,171.217L294.292,171.642L295.445,172.674L295.628,172.613L296.477,172.552H296.781H296.902H296.963L297.509,173.099L297.024,173.584H297.509H297.57L298.117,174.07L298.238,176.013L298.602,174.981L298.541,174.434V174.009L299.573,173.402L300.545,172.31L300.484,171.763L300.97,170.67L301.395,169.578L302.487,169.517L302.852,168.424L303.459,168.364L304.491,169.396L305.159,169.881L305.219,170.913H304.612L305.219,171.399L305.826,172.492V172.977L304.794,173.584L304.309,173.645L305.401,173.949L306.433,174.434L306.919,173.888L307.465,173.827L309.59,174.192L308.983,173.706L309.529,173.281L308.376,172.795L307.89,171.763L308.315,171.217L308.255,170.67L308.194,170.124H308.74L308.801,171.156L309.287,170.063L309.226,169.031L309.165,168.546L308.619,167.999L308.012,167.028L308.497,166.967V166.482L308.437,165.45L308.376,164.903L307.83,164.418L307.769,163.871L308.255,163.325L308.74,162.232L309.226,161.807L310.258,161.686L310.197,161.2L309.712,160.654L308.68,161.261L307.587,161.382L306.616,161.443L306.008,160.472L304.976,160.532L304.43,160.047L303.762,159.015L303.216,158.529L302.67,158.043L302.062,157.497L301.638,157.558L300.545,157.133L300.12,158.226L300.181,159.258Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M297.57,173.584H297.51H297.024L297.51,173.099L296.963,172.552H296.903H296.781H296.478L295.628,172.613L295.446,172.674L294.292,171.642L292.714,171.217L292.167,170.792L293.078,170.731H293.139L293.624,170.124V169.638L292.592,169.153H292.471L291.985,169.213H291.439L289.921,168.303L290.893,167.756L291.318,167.149L289.739,166.239H289.254L288.707,166.299L288.646,165.753L287.554,165.328H287.432H287.129L287.189,165.874V166.421H287.129H286.582L285.55,166.542L285.611,167.089H285.49H285.065L284.033,167.21L283.061,167.756L282.09,168.363L280.572,169.517H280.512L282.09,169.881L282.151,170.428L282.636,170.913L282.272,171.945L282.333,172.492L282.819,173.524L283.426,174.07L283.972,174.009H284.458L285.004,173.949H285.49L285.975,173.888L286.461,173.281L287.068,173.827L287.129,174.313L288.161,174.252L288.707,174.191L289.8,174.616V175.102L291.378,176.013L292.532,176.498L293.017,176.923L294.596,176.802L295.688,176.741H296.174L297.206,176.134L298.177,176.073V175.527L298.238,176.013V176.073V176.013L298.117,174.07L297.57,173.584Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M282.09,168.364L283.061,167.757L284.033,167.21L285.065,167.089H285.489H285.611L285.55,166.542L286.643,166.421H287.129H287.189V165.875L287.129,165.328H287.432H287.554L288.039,164.236L288.464,163.689L288.525,163.629L289.618,164.661H289.921L290.589,164.6H290.65L291.682,164.964L291.742,165.025V164.539L293.199,164.418L293.806,164.357L293.685,163.264V162.9L293.078,162.414L291.56,161.989L291.499,161.443L291.439,160.35H291.864H291.924L290.346,159.925L289.982,159.986H289.8L288.828,160.532L288.221,160.108V159.561L288.161,159.076L287.068,158.59H286.825L286.097,158.651V159.197L285.065,159.804V159.743L285.004,158.711L284.518,158.772H283.972L284.033,159.379L283.547,159.925H283.486H283.061L281.908,159.5L280.936,160.108L280.451,160.654L279.419,160.715L278.933,160.775H278.387L278.933,160.229L278.326,159.743L277.78,159.804L276.748,159.865H276.687L275.169,159.986L274.562,159.44L274.38,159.5H274.077L272.559,160.168L271.891,160.229H271.588L270.556,160.29H270.495L269.948,160.35L269.402,159.804L267.277,159.986H266.852L265.76,159.561L264.667,159.136L264.242,160.168L263.696,160.775H263.635L262.664,160.897H262.178L261.692,161.989H261.632L263.271,162.354L263.817,162.293H264.303L264.849,162.839L265.335,162.779L265.881,162.172L266.367,162.111L266.974,162.657L268.067,162.597L268.127,163.629L268.613,163.568L269.645,163.507L270.131,163.993L270.191,164.539L270.859,165.45L271.345,165.935L272.498,166.907L272.984,167.392L273.045,167.939L272.559,167.999L272.134,169.092V169.578L272.195,170.063H272.741L272.68,169.517H273.166L273.773,169.456L275.776,169.274L276.323,168.789L276.808,168.728L277.233,168.182L278.326,168.607H278.872L278.933,169.092V169.639L279.479,169.578L280.512,169.517H280.572L282.09,168.364Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M54.24,168.464L53.695,168.503L53.729,168.987L54.275,168.949L54.24,168.464Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M104.461,182.264L103.915,182.325L103.49,182.447L102.883,182.386L102.336,181.961L101.244,182.022L100.879,182.082L100.697,182.264H100.333L99.847,182.204L99.24,182.022L98.937,181.172V181.111L98.573,181.172H98.026L97.48,180.686L97.54,179.897L97.298,179.29L96.63,178.925L95.476,179.35H94.201L94.141,178.804L93.655,178.865L92.563,178.379L92.016,178.44L91.409,177.954V177.893L90.863,177.469L90.377,176.983L89.77,177.044L89.284,177.104L88.677,176.072H88.191L88.07,176.012L87.524,175.587L87.099,175.162L87.038,175.101L86.552,175.162H85.945V174.676L85.885,174.13L85.338,173.644L84.731,173.219L84.853,173.098L84.731,173.158L84.124,172.612L83.092,172.733L81.999,172.248L81.453,171.762L80.907,171.823H80.36L79.328,171.883L78.782,171.398L78.175,170.426L77.143,170.487L76.536,170.002L76.05,170.062L75.018,170.123L74.411,170.184L73.925,169.698L73.318,169.759H72.833L72.286,169.212L71.74,168.727L71.193,168.787L70.101,168.362L69.554,168.423L68.462,167.937V167.452L67.369,167.513L66.823,166.966L66.337,167.027L65.305,167.088L64.698,166.663L64.091,166.177L63.119,166.784L62.512,165.752L61.966,165.266L61.905,164.72V164.234L60.873,164.781L60.327,164.841L59.781,164.356V164.841L59.295,164.902L58.749,164.963H58.263L58.809,165.449L58.324,166.056L57.838,166.602L57.777,166.056L57.231,165.57L56.685,165.631H56.138L55.592,165.145L55.167,166.238L54.62,165.752L54.074,166.359L53.589,166.905L54.196,167.391V167.877L54.681,167.33L54.742,167.877L54.256,168.484L55.288,168.362L55.349,168.848L54.863,169.455V169.941L54.378,170.487H54.924L54.985,171.034L54.438,171.58L53.892,171.094L53.406,171.641L53.467,172.673H53.528V172.612L54.62,172.551H55.046V172.066L55.167,172.126V172.005L56.199,172.43H56.745V172.915L56.806,173.462L56.867,173.948H57.352L57.899,173.887L58.384,173.826L58.991,174.312H59.538L60.084,174.797L60.509,175.162V174.858H60.631V174.737H61.116L61.662,174.676L61.723,175.162H62.209L62.755,175.101L63.241,175.647L62.816,176.194L62.877,176.679L62.937,177.226H63.362L63.969,177.711L64.03,178.197H63.969V178.258L63.423,178.318L63.484,178.743H63.423V178.865H62.937L62.452,178.925L62.512,179.35H62.452V179.411H61.905L61.48,179.472V179.958H61.42V180.018L60.934,180.079L60.509,180.565V181.05L60.084,181.657V182.143L59.598,182.75L59.659,183.236V183.782L59.72,184.328L59.781,184.814H59.659V184.875L59.113,184.935L58.688,184.996L58.749,185.36L57.717,186.514L57.777,187.06L57.292,187.607V188.153H57.231V188.214H56.685L55.713,187.849L55.774,188.76L55.835,189.306L55.895,189.853L56.442,190.338L56.502,190.824V191.37L56.017,191.978L55.531,192.463V193.01H55.47V193.07L54.924,193.131L54.56,193.617V194.163L54.074,194.709L54.62,195.195L55.167,195.134V195.681L55.228,196.166H55.167V196.227L54.681,196.288L54.256,196.834H54.196H54.135L53.649,196.895H53.164L53.224,197.38H53.103L53.164,197.441L52.678,197.502L52.739,197.927L52.253,198.534L52.314,199.566L52.374,200.598H52.921H52.86H53.346L53.953,201.084L54.499,201.569L55.046,202.055V202.601L56.138,203.026L56.745,203.512V204.058L56.26,204.605L56.806,204.544H57.352L56.867,205.576L56.927,206.183L55.835,206.244L56.442,206.669L56.502,207.761L57.049,208.247L57.595,208.186L58.141,208.672L58.749,209.704L59.234,209.097L59.174,208.611L60.206,208.004L61.298,207.943L61.784,207.397L62.33,207.336L63.362,207.822L63.909,207.761L64.334,206.669L65.366,206.608L66.458,207.033L67.065,207.519L68.158,207.458L68.705,208.429L69.737,208.368L71.315,208.247H71.861L72.954,208.672L73.44,208.126L74.472,208.065L75.079,208.551L75.564,208.49L75.625,209.036L76.111,208.976L76.657,208.429L76.596,207.883V207.336L77.629,206.79L77.568,206.244L78.6,206.183L79.086,205.637L80.118,205.515H80.664L81.757,206.001L82.242,205.394L83.274,204.787L83.153,203.755L83.638,203.208L84.185,203.148L84.671,202.601L84.61,202.055L85.642,201.509L86.128,201.448L87.22,201.387L88.191,200.234L87.645,199.748V199.202L87.038,198.777L86.977,198.17V197.684L86.856,196.652L86.795,195.62L87.342,195.013L87.767,194.467L88.799,193.859L89.77,192.767L90.316,192.706L90.863,192.16L91.834,191.006L92.259,190.521L93.291,189.853V189.367L93.777,189.306V188.821L94.262,188.214H94.809L95.78,188.092L96.873,188.032L97.905,187.971L98.451,187.91H98.937L99.483,187.849L100.454,187.242L101.061,187.182L101.486,186.696L102.579,186.575H103.125L103.611,185.968H104.158L104.643,185.36L105.129,184.814L105.068,184.328L105.554,183.782L105.493,183.236L105.432,182.143L105.311,182.022L104.886,182.507L104.461,182.264Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M52.374,200.598L52.314,199.566L52.253,198.534L52.739,197.927L52.678,197.502V197.441L53.103,197.38H53.224L53.164,196.895L53.71,196.834H54.196H54.256L54.681,196.288L54.742,196.227L55.167,196.166H55.228L55.167,195.681V195.134L54.62,195.195L54.074,194.709L54.56,194.163V193.617L54.924,193.131L54.985,193.07L55.47,193.01H55.531V192.463L56.017,191.978L56.502,191.37V190.824L56.442,190.338L55.895,189.853L55.835,189.306L55.774,188.76L55.713,187.849V187.728L56.806,188.214L57.231,188.153H57.292V187.607L57.777,187.06L57.717,186.514L58.749,185.36L58.688,184.996V184.875H59.174L59.659,184.814H59.781L59.72,184.328L59.659,183.782V183.236L59.598,182.75L60.084,182.143V181.657L60.509,181.05V180.565L60.934,180.079L60.995,180.018L61.42,179.958H61.48V179.472V179.411H62.027L62.452,179.35H62.512L62.452,178.925V178.804H62.998L63.423,178.743H63.484L63.423,178.318V178.258L63.969,178.197H64.03L63.969,177.711L63.362,177.226H62.937L62.877,176.679L62.816,176.194L63.241,175.647L62.755,175.101L62.209,175.162H61.723L61.662,174.676L61.116,174.737H60.631V174.858V175.283L60.509,175.162L60.084,174.797L59.538,174.312H58.991L58.384,173.826L57.899,173.887L57.352,173.948H56.867L56.806,173.462L56.745,172.915V172.43H56.199L55.167,172.005V172.126V172.491L55.046,172.551H54.62L53.528,172.612V172.673L53.589,173.098L53.649,173.705V174.19L53.224,174.737V175.283L53.346,176.376L52.799,176.861L52.374,177.469L52.435,178.501L51.889,179.047L51.464,179.593L51.525,180.686L51.039,181.232L50.553,182.325L50.068,182.811L49.582,183.418L49.643,183.964L49.157,184.511L48.671,185.603L48.186,185.664L47.093,185.725L46.607,186.271L46.668,186.757V187.303L46.729,187.849L46.243,188.396L45.757,189.003L45.818,189.489V189.974L46.85,189.913L47.457,190.399H47.943L48.003,191.431L48.064,191.978L47.578,192.524L47.093,193.07L47.153,193.617L46.668,194.163L47.214,194.649L46.789,195.741L46.85,196.288H46.304L45.757,196.834L45.818,197.38L45.393,198.473L44.847,199.02L44.907,199.566L45.454,199.505H45.939L46.486,198.898L47.032,199.445L47.093,199.93L47.578,199.869H48.125L48.671,200.355L49.764,200.78L50.371,201.266L50.796,200.719L50.857,201.266L51.342,201.205L52.86,200.598H52.921H52.374Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M103.49,197.685L102.883,197.199V196.653L102.276,196.167L101.79,196.774L101.851,197.26L100.758,197.381H100.272L99.726,197.442L99.786,197.988L100.819,197.867H101.365L101.972,198.899L102.458,198.838L102.518,199.324H103.065L103.55,198.777L103.49,198.231L104.036,198.17L104.522,197.624L103.975,197.685H103.49Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M108.65,196.288H108.104L107.618,196.349L107.011,195.863H106.525V196.41L107.132,196.895H107.618L108.225,197.381L108.771,197.32L108.711,196.774L108.65,196.288Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M94.627,199.931H94.141V200.477L93.109,200.538V201.084L93.17,201.631L94.202,201.024L94.687,200.963L94.627,200.416L95.173,199.87L94.627,199.931Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.555,177.105L125.041,176.498L124.98,176.012L125.465,175.466L125.041,175.041L124.069,175.101L123.523,175.162L123.462,175.041H123.341L122.734,174.009V173.523L122.612,172.491V171.945L123.098,171.398L123.037,170.852V170.366L122.552,169.941L122.066,170.002L121.944,169.88L121.641,169.638L121.519,169.516L121.337,169.395V168.909L121.823,168.848H122.369L122.916,168.788L123.401,168.181L123.887,167.634L124.373,167.088L123.826,166.602L123.766,166.117L123.219,165.57L123.159,165.085L123.705,165.024V164.478H123.826L123.766,164.174L123.705,164.053L123.159,163.628V163.081L123.644,163.021L123.098,162.535V162.049H123.159H123.341H123.584H123.644L124.13,161.989L124.069,161.442L123.462,160.41L123.219,160.471H123.037L123.098,161.017H122.976H122.552H122.491L122.066,162.11L121.034,162.717H120.973L120.366,161.685L120.852,160.592L121.823,159.5V158.953L122.248,158.407L123.341,158.346L124.312,157.739L124.737,156.646V156.161L125.223,155.554L125.283,155.614V155.554L125.83,156.039L126.376,156.525L126.801,155.432L126.862,155.493V155.432L127.347,155.857V155.432L127.408,155.493L127.347,154.947V154.4V154.339L127.772,153.793V153.307L127.712,152.275L127.651,151.729L128.197,151.122L128.137,150.636L128.562,149.544L129.108,148.937L130.018,147.905L129.533,147.419H129.047L128.44,147.48L127.894,146.994L126.801,147.115L125.769,146.63L125.223,146.144H125.162V146.083L124.555,145.112L124.069,144.323L124.008,144.201L123.523,144.08L122.916,144.141L122.612,143.898L121.944,143.776L121.884,143.837H121.337L120.852,144.444L120.791,143.898L120.245,143.412L119.638,142.927H119.152V142.805V142.866L119.091,142.441L118.545,141.955V141.895V141.834L118.484,141.409L117.938,140.984V140.377L117.391,140.438L117.452,140.984L116.906,141.045L116.359,141.105L115.813,140.559V140.498L115.752,140.438L116.238,139.891V139.406L116.117,138.434H115.631L115.145,138.495L114.599,138.556L113.992,137.524V137.463L113.931,137.038H113.445L112.899,137.099V136.977L112.838,136.431L112.778,136.006L112.292,136.067H111.806V136.006H111.746V135.581L111.199,135.095V134.974H111.139V134.488L111.078,133.942V133.396L109.985,133.456L109.439,133.517L108.953,133.578H108.407L107.921,133.638L107.435,134.185V134.731L107.496,135.217L107.01,135.763L107.071,136.309L107.132,137.402L107.193,137.949H106.586L106.1,138.009L105.554,138.556H105.068L104.036,139.163L103.004,139.77L101.972,139.83L100.94,139.891L101,140.438H101.486L102.579,140.862L103.125,141.348H102.64V141.955L101.608,141.47L100.515,141.53L99.483,141.591L99.422,141.045L98.39,141.166L97.297,140.741L96.205,140.255L96.265,140.802L95.112,140.316L95.658,139.77L95.051,139.284V138.798L95.537,138.191L94.991,138.252L94.505,138.313L93.898,137.766L93.412,137.827V138.373L92.926,138.92L92.987,139.952V140.438L93.655,141.47L93.109,142.016L93.169,142.623V143.048L93.776,143.594L93.837,144.08L92.805,144.141L92.198,143.716L91.712,143.776H91.166L91.652,143.169L90.62,143.23L89.527,143.351L88.98,142.927L89.041,143.351L88.009,143.412L87.949,142.987L87.888,141.895H87.341L86.795,141.955V141.47L85.702,140.984L85.217,141.591V142.077L84.185,142.137V141.652L83.092,141.712L82.546,141.773L81.999,141.227L81.453,141.834L81.028,141.895H80.481L79.935,141.955L79.996,142.441L80.542,142.38H81.028L81.513,142.319L81.574,142.866V143.412L81.149,143.473V143.898L80.603,143.959L80.117,144.019L79.632,144.626L80.117,144.566L80.724,144.991L81.331,146.023L81.271,145.537L82.363,145.962L82.303,145.416H82.788L82.849,145.962L83.942,146.872H84.549V147.358H85.035L85.095,147.905L85.156,148.39L86.188,148.329L87.281,148.269L86.734,148.815H87.281L87.827,149.24L87.402,150.333H87.888L88.495,150.818L88.555,151.365L89.041,151.304V151.79L88.07,152.943L88.131,153.49L88.798,154.461L89.223,154.4L89.284,155.493L89.891,155.979L89.952,156.464L91.045,156.889L91.53,156.343L91.591,156.889V157.436L91.105,157.982L91.652,157.921L91.166,158.528L91.227,159.56L91.287,160.046L90.802,160.653V161.199L91.348,161.139L91.409,161.685V162.171L91.955,162.656L92.016,163.203L92.077,164.235L92.137,164.72L91.591,164.295L91.53,163.688L91.469,163.203L90.923,162.717L90.862,162.171L90.316,161.746L90.255,161.199L89.77,161.806L89.891,163.324V163.81L89.466,164.417L89.527,165.449L88.98,165.51L90.073,165.935L89.648,166.481L88.555,166.542L88.616,167.149V167.634L88.131,168.181V168.727L87.645,168.788L87.706,169.759L87.22,169.82L86.674,170.366L86.734,170.913L85.763,172.066L84.852,173.098L84.731,173.219L85.338,173.644L85.884,174.13L85.945,174.676V175.162H86.552L87.038,175.101L87.099,175.162L88.07,176.012L88.191,176.073H88.677L89.284,177.105L89.77,177.044L90.377,176.983L90.862,177.469L91.409,177.894V177.955L92.016,178.44L92.562,178.379L93.655,178.865L94.141,178.804L94.201,179.351H95.476L96.63,178.926L97.297,179.29L97.54,179.897L97.479,180.686L98.026,181.172H98.572L98.937,181.111L99.179,180.747L99.544,180.565L100.151,180.383L100.576,180.322L101.122,180.99V181.779L100.879,182.083L101.243,182.022L102.336,181.961L102.882,182.386L103.489,182.447L103.914,182.325L104.461,182.265L104.886,182.508L105.311,182.022L105.432,181.961L105.189,181.779L105.007,181.536L104.886,181.233L105.371,180.686L104.825,180.201L105.311,179.108L105.25,178.562L105.736,178.015L106.282,177.955L106.768,177.408L107.314,177.347H107.8L108.346,177.287L108.832,176.74L109.317,176.133H109.864L110.41,176.619L110.956,177.105L111.442,177.044L112.535,176.983L112.596,178.076L113.081,177.469H113.628L114.113,176.862H114.66L114.72,177.408V177.894H115.206L115.752,177.833L115.813,178.319V178.865L116.299,178.319L116.906,178.804L117.452,179.29L117.513,179.836L118.059,180.322L118.545,180.261H119.091L119.638,180.201L120.184,180.14H120.73L121.155,179.533V179.047L121.095,178.501L121.641,178.44H122.127L122.673,178.379L122.612,177.833H123.219L123.705,177.772V178.319L124.616,177.347L124.069,177.59L124.555,177.105Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M65.426,41.122L65.973,41.668L66.58,42.154L67.066,42.64L67.612,42.579L68.158,42.518L68.219,43.125V43.611L68.28,44.157L68.34,44.643L68.826,45.129L69.979,46.1H70.526L71.011,46.039L71.072,46.586L71.133,47.071L72.165,47.496L72.772,48.043L72.711,47.496L73.258,46.889V47.436H73.804L74.775,46.828L75.322,46.768L76.414,47.193L76.9,46.646L77.507,47.132L78.539,47.071V47.618L79.571,47.011L80.057,46.403L81.15,46.889L81.635,46.828L82.182,46.282L82.728,46.768L82.789,47.314L83.274,46.768L83.76,46.707L84.792,46.1L85.217,45.068L85.824,45.554H86.31L87.402,45.432L87.342,44.4L87.827,43.793L88.313,43.732L88.252,43.186V42.7L88.738,42.154L88.677,41.668L88.131,41.122L88.07,40.636V40.09L87.038,40.151L86.978,39.604L87.463,39.119L88.009,39.544L87.949,39.058L87.463,38.572L87.402,38.026V37.54L88.374,36.933L88.313,36.387L87.827,36.933L86.795,37.055V36.508L86.735,36.023L87.22,35.416L87.16,34.869L86.067,34.444L86.128,34.991L85.581,35.537L85.156,36.083L84.549,36.144L84.063,35.658L84.003,35.112L83.032,35.719L81.999,36.326L81.453,36.387L81.878,34.748L81.332,34.262V34.748L80.846,35.901L80.907,36.387L80.482,36.933L79.875,36.508L79.814,35.416L80.3,34.869L80.239,33.837L79.632,33.291L79.207,33.898L78.6,33.352V33.958L78.175,34.444L77.689,35.051H77.143L77.082,34.566V34.019L76.961,32.987L76.475,32.502L75.929,33.534L75.565,34.626L74.957,34.687V34.201H74.411L73.865,34.262L73.015,35.901L72.954,35.355L72.408,35.416V34.869L72.893,34.323L72.833,33.776V33.291L72.711,32.198H73.258L73.743,32.137L74.229,31.045L73.622,31.105V30.62L74.168,30.013L74.108,29.527L74.047,28.434L72.954,27.463L71.861,27.524L72.408,28.07L73.015,29.041L72.529,29.102V29.648L72.59,30.134V30.68L72.104,31.166L71.558,30.741L71.497,29.709L70.951,30.255L70.89,29.223L70.829,28.131V28.677H70.344L69.797,28.252L69.919,29.83L68.765,29.345L69.372,29.83L69.919,30.316L68.887,30.923L68.401,30.984V30.438L68.34,29.952L67.733,29.466L67.794,29.952V30.498H67.308L67.248,30.013L66.762,30.559L66.823,31.045H67.369L67.855,30.984L68.462,31.47L69.494,31.348L70.04,31.895L70.587,32.38L70.647,32.926H71.133L71.679,32.866L71.801,33.837L71.194,33.898L70.162,33.473L69.069,33.534L69.676,34.019L70.222,34.505L70.769,34.991L70.283,35.537L69.797,35.598L69.19,35.112L68.644,34.626L68.098,34.687L67.005,34.201L65.973,33.776L64.941,34.323L65.002,34.869L66.034,34.808L67.066,34.748L67.673,35.233V35.719H68.158L68.219,36.265L68.28,36.751L67.794,37.358L67.855,38.39L68.34,37.783V38.329L67.915,38.876L67.43,39.483H66.883L66.398,39.544L65.791,39.604L65.366,40.151L64.759,39.665L64.334,40.758L64.88,41.183L65.426,41.122Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M84.367,109.72L83.821,109.234L83.76,108.688L82.728,108.202L82.182,108.263H81.817L81.332,108.809L81.271,108.748L81.21,108.809L80.664,108.323L80.118,107.838L79.571,107.352L79.025,106.927L79.511,106.32L79.45,105.834H79.571V105.774L80.057,105.713L80.603,106.138L81.028,105.652L80.968,105.106L81.514,104.559L81.939,104.013H82.06L82.121,103.952L83.214,103.892L83.699,103.831L83.153,103.345L83.639,103.285L84.185,103.224L84.61,102.678L84.064,102.192L83.457,101.646L83.517,102.192L83.032,102.253L82.485,102.313L81.878,102.495L80.785,102.01L80.36,102.617L79.328,102.678L78.782,103.224L78.357,103.77L76.779,104.377L77.325,104.863L78.418,105.349L78.904,105.288L78.479,105.834L77.447,105.895L77.507,106.441L77.568,106.988L76.536,107.595L75.99,107.109L74.958,106.623L74.897,106.077L74.29,105.652L73.743,105.106L72.711,105.167L72.226,106.259L71.679,106.32L72.226,106.806L72.286,107.352L72.347,107.838L71.862,108.384L71.437,108.93L70.89,108.991L70.465,109.537L71.012,110.569L71.072,111.055L71.619,110.994L71.679,112.026L72.165,111.48L73.258,111.419L73.743,111.359L73.804,111.844L73.379,112.451L72.833,112.512L71.254,113.119L70.283,114.273L69.251,114.333L69.858,114.758L69.312,114.819L69.372,115.365L67.794,115.487L67.309,115.547L66.762,116.094L66.823,116.64L67.369,116.579L68.401,116.519L68.948,117.004L68.401,117.065L67.855,117.126L67.369,117.187L66.823,117.733L66.337,118.279L66.883,118.765L67.43,118.219L67.976,118.704L67.491,119.251L67.551,119.797L68.037,119.736L68.583,119.676L67.551,120.283L69.13,120.161L69.19,120.647L69.251,121.193L70.222,120.586L70.708,120.525L71.315,121.011L72.347,120.95L72.772,120.404L73.318,120.89L74.351,120.829L74.29,120.283L74.836,120.222L75.322,119.676L75.382,120.161L75.929,120.1L76.414,119.554L76.961,119.493L77.993,119.433L79.025,119.372L79.996,119.311L80.603,119.797L81.635,119.251L82.06,118.704L82,118.158L82.546,118.097L82.971,117.551L82.91,117.065L83.457,117.004L83.396,116.458L83.335,115.912L83.274,115.365L83.76,114.819L83.699,114.333L83.639,113.787L84.124,113.241L84.064,112.209L84.003,111.723L84.549,111.116L83.942,110.63L84.489,110.569L84.549,111.055L85.035,110.509V110.448L84.974,110.569L84.367,109.72ZM72.226,115.305L71.194,115.365L70.647,114.819L70.101,114.88L69.615,114.94L70.647,114.394L71.194,114.88L71.74,114.819L72.226,114.758L72.772,115.244L72.226,115.305Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M67.855,120.829L68.948,120.282L67.369,120.889L67.855,120.829Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M87.403,106.868L87.342,106.382V105.775L86.674,104.804V104.318L86.613,103.772H86.128L85.521,103.832L85.035,103.893V103.347L84.489,103.407L84.003,103.954H83.457L82.91,104.014L82,104.075H81.878L81.453,104.682L80.907,105.229L80.968,105.775L80.543,106.2L80.482,106.261L79.875,105.836H79.511L79.389,105.896V106.382L78.904,106.989L79.45,107.414L80.057,107.9L80.603,108.385L81.15,108.932L81.271,108.81L81.696,108.325H81.757H82.182L82.728,108.264L83.821,108.689V109.235L84.367,109.721L84.974,110.753L85.096,110.632L85.521,110.146L85.946,109.6L86.553,109.539H87.038L86.917,108.507L87.463,107.9L87.524,108.446L87.585,108.992L88.07,108.932L88.01,108.446L87.949,107.9L87.463,107.414L86.917,107.96L86.37,107.475L86.856,106.928L87.403,106.868Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M133.236,185.846L133.176,184.814V184.268L133.115,183.722L132.872,183.236L132.629,182.993L132.508,183.115L132.022,183.054L131.537,183.357H130.929L130.687,183.54L130.505,183.904L129.958,184.147L129.533,184.754L129.169,185.118L129.351,185.543L129.29,186.15L129.412,186.696L129.655,187.121L129.715,187.668V187.85L129.412,188.214L129.776,188.76L130.201,189.185V189.671L130.565,190.157L130.929,190.217L131.476,190.703L131.415,190.157L131.961,189.61L131.901,189.125L132.326,188.032V187.485L132.265,186.939L132.751,186.453L133.236,185.846Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M132.872,195.378L133.358,194.285L133.297,193.739H132.751V193.253L132.204,192.768H132.69L132.144,192.221L131.537,191.796V191.25L131.051,191.796L130.505,191.857V192.343L130.019,192.403H129.473L129.048,193.011L128.501,193.071L127.409,193.132L126.923,193.678L126.377,193.193L126.437,193.678L125.891,194.225L125.952,194.832L126.012,195.317L126.619,196.349V196.835L126.741,197.867H127.226L128.258,197.746L127.773,198.353L127.287,198.899L127.348,199.445V199.992L126.923,200.477L126.377,200.538L126.923,201.024L126.498,202.117L127.044,202.602L127.105,203.149V203.634L128.198,204.12L128.744,204.059H129.23V203.513L129.169,203.027L129.715,202.42L130.747,202.906L131.294,202.845L131.84,203.331L132.326,202.784L132.265,202.238L132.204,201.206L132.144,200.113L132.629,199.081L132.569,198.535V197.988L132.508,197.503V196.956L132.447,196.471L132.933,196.41L133.419,195.864V195.378H132.872Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M159.705,208.187L158.673,208.794L157.641,208.854L157.155,209.461L156.548,208.915L156.062,208.976L155.516,209.522L155.03,209.583L154.484,209.643H153.998L152.966,210.251L151.874,210.311L150.781,209.886L149.749,209.401L149.142,208.915L148.11,208.976L147.078,209.583L147.017,209.097L146.531,208.611L145.985,209.158H145.499L145.56,210.251L145.014,210.797L145.074,211.343L145.681,211.829L146.774,212.315L147.26,212.254L147.867,212.74L149.445,213.164L150.052,213.65L150.659,214.682L151.691,214.561L152.238,215.046L153.27,214.986L154.363,215.411L154.423,215.957L155.03,216.989L156.062,217.414L156.609,216.868L157.701,217.293L157.641,216.261L158.612,215.653L158.551,214.621H158.066L158.551,214.075L158.005,214.136L157.944,213.589V213.043L158.43,212.497L158.369,211.95V211.465L158.309,210.918L158.794,210.372H159.28L159.766,209.219L159.705,208.733V208.187Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M89.649,115.244L89.163,115.305L89.224,116.276H89.77L90.256,116.216L90.742,115.73L90.134,115.184L89.649,115.244Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M96.994,132.605L95.962,132.666L96.508,133.213L97.055,133.152L97.601,133.091L97.54,132.605H96.994Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M103.49,85.862L103.429,85.315V84.83L103.368,84.283L102.883,84.83L102.336,84.89L102.883,85.315L103.49,85.862Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M109.378,80.156L109.985,80.641V81.127L109.5,81.734L110.532,81.127L110.471,80.641L110.957,80.034V79.488L110.896,79.002V78.456L110.775,77.424L110.35,79.002L110.41,79.549L109.378,79.609V80.156Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M89.345,88.958L89.406,89.444L89.891,88.351L90.377,87.805L90.984,88.29V88.837L91.47,88.23L91.409,87.744L91.895,87.137H92.441V86.591L92.866,86.044L92.805,85.559L92.38,86.105H91.834L90.802,86.226L90.863,87.198L90.316,86.773L90.256,86.226L89.77,86.833L89.831,87.319L89.345,88.412V88.958Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M92.016,110.874V110.327L91.409,109.842L90.863,110.388L90.438,110.995L90.984,111.481L92.016,110.874Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M91.106,90.477L90.074,91.084V91.569L90.134,92.176L91.166,91.509L91.106,91.023V90.477Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M92.138,90.415L91.713,90.961L91.166,91.508L90.742,92.601L91.288,93.086V93.632L91.773,92.54V92.054L91.713,91.447L92.198,90.961L92.138,90.415Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M89.892,96.305L90.438,96.548V96.305H89.892Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M90.438,96.547V96.85L89.952,97.457L90.498,97.397L91.045,97.336V96.79H90.984L90.438,96.547Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M80.178,131.939L81.21,131.878H80.725L80.178,131.939Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M95.173,112.938L95.719,112.392L95.173,112.938Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M94.748,118.401L95.233,118.826L95.294,119.372L94.869,119.919L94.323,120.526V121.011L94.384,121.497L93.898,122.104L93.473,123.197L92.987,123.743V124.29L93.048,124.715H93.412V124.775H93.594L93.655,125.868H93.109L93.17,126.293L94.019,126.232L94.505,126.172L94.08,126.718L93.594,127.325L93.048,127.386H92.502L92.016,127.932L92.077,128.478H91.53L90.498,128.539L89.952,128.6L89.466,128.661L88.859,128.175H88.313V127.689L87.767,127.75H87.281L86.735,127.811L87.342,128.236L86.795,128.843L86.249,128.357H85.702L85.763,128.903L85.278,129.996L84.246,130.057L82.728,130.725V131.21L82.242,131.271L81.21,131.878L81.271,132.91H81.817L82.364,132.849L82.303,132.303H82.849V132.789L83.335,132.242L84.367,131.635L85.46,132.121L86.492,131.999L86.552,132.546L87.099,133.032L88.131,132.971L88.617,132.424V131.878L88.556,131.332L89.041,130.785L89.648,131.271L90.134,131.21H90.68L91.166,131.15L91.713,131.089L92.259,131.635L92.866,132.121V132.607H93.412L93.898,131.999L94.93,131.939L95.476,132.424L96.569,132.364L96.508,131.817L97.055,131.271L97.601,131.757L98.147,132.242H98.633L99.179,132.182L99.24,132.667L100.272,132.607L100.819,132.546H101.365L101.851,132.485L102.397,132.971H102.943L103.49,133.456L104.522,132.849L105.068,132.789L105.614,133.274L106.1,132.728L106.586,132.182L107.132,132.121L107.618,131.575L108.103,131.028L107.557,130.543H107.071L106.525,131.15L105.918,130.664H105.432L104.886,130.178L104.34,129.693L104.279,129.207L104.825,129.146H105.311L105.857,129.571L106.343,129.025V128.478L105.797,128.539L106.282,127.993H106.889L107.375,127.932H107.921L107.861,127.325H108.407L108.893,127.264L109.378,126.718L109.864,126.172L109.803,125.625L110.35,124.593L110.289,124.047L110.228,122.954L109.621,122.468L108.528,122.044L107.496,122.104L106.889,121.619L106.464,122.165L105.857,122.226L105.372,122.772L104.825,122.286L104.765,121.801V121.254L105.25,121.194L105.797,120.647L106.282,120.101V119.615L106.222,119.008V118.523L105.614,118.037L105.554,117.49L104.461,117.066L103.975,117.126L103.915,116.58L104.4,116.519L104.947,116.458L105.493,117.005L105.311,114.394V113.848L105.25,113.302L105.19,112.816L104.643,112.27L104.582,111.784H104.097L103.55,111.359H103.004V110.873L102.883,109.781V109.234L103.368,108.749L103.308,108.202L102.761,107.717L102.701,107.17V106.685L103.125,105.592L102.579,105.106L101.972,104.074L101.911,104.196L101.972,104.256L101.486,105.349L101.183,105.41L101.547,105.713L101.426,105.835H101.547L101.061,106.442L100.454,105.956H99.969V106.32V106.503L99.483,106.563H99.544V107.049L98.997,107.11L98.512,107.656L98.026,108.263H97.48L97.419,107.777V107.595L96.933,108.142L96.448,108.202V108.688L95.962,108.202L95.416,108.749L94.93,109.295L94.991,109.841L95.051,110.934L95.112,111.42L95.659,111.905L96.205,111.845L95.719,112.391L96.205,112.33L97.298,112.816V113.362L96.326,113.423V113.969H95.78L95.841,114.516L95.901,115.062H95.355L94.869,115.669V116.155L95.416,116.094L95.476,116.641V117.126H96.023L95.537,117.733H94.991L94.93,117.187L94.505,117.733L94.687,117.855L94.748,118.401Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M89.648,121.375L89.163,121.922L88.677,122.529L88.07,121.983L87.584,122.59H87.099L86.552,122.65L86.006,122.711L85.46,122.165L84.974,122.772V123.257L84.488,123.804L85.581,123.743L86.127,123.682V124.229H85.581L85.642,124.775L86.734,124.714L87.22,124.107H87.706L88.252,124.047V124.593L88.313,125.139V125.686L89.406,125.564H89.952L89.466,126.171L90.013,126.596L90.62,127.082L91.045,127.021L92.137,126.961L92.684,126.9L93.169,126.353V126.293L93.109,125.868H93.655L93.594,124.775H93.412L93.048,124.836V124.714L92.987,124.289V123.743L93.473,123.197L93.898,122.104L94.383,121.497L94.323,121.011V120.526L94.869,119.918L95.294,119.372L95.233,118.826L94.748,118.401L94.687,117.854L94.505,117.733L94.08,117.369L94.019,116.822L93.534,116.883H93.048L92.987,116.397L91.409,117.005L90.863,117.065L90.377,117.612L89.406,117.672L88.859,118.279H88.373V118.826L88.92,118.765L89.406,118.219L90.013,118.704L90.438,118.158L90.984,118.097V118.644L90.498,119.19L90.559,119.676V120.222L90.134,120.283L90.62,120.768L90.195,121.315L89.648,121.375Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M97.48,108.263H98.026L98.512,107.656L98.997,107.11L99.544,107.049V106.563H99.483L99.969,106.503V106.32L99.908,105.956H99.969H100.454L101.061,106.442L101.547,105.835H101.426L100.94,105.41H101.183L101.486,105.349L101.972,104.256L101.911,104.196L101.365,103.224L100.758,102.739L100.212,102.314H99.665L98.633,102.375L98.148,102.435L97.54,101.95L96.994,102.01V101.464H97.54L98.087,101.889H98.633L99.18,101.828L99.119,101.342L100.151,101.282L100.637,100.675H100.09L99.544,100.189L99.058,100.25V99.764L100.029,99.643H100.576L101.122,100.068L101.669,99.582L102.154,99.521L102.094,98.975L103.126,98.429L103.611,97.822V97.336L103.004,96.85L103.49,96.243H104.036L103.975,95.697L104.522,95.636L105.007,95.15L104.947,94.604V94.058L104.461,94.118H103.854L103.368,94.179L103.308,93.633L102.701,93.147L102.215,93.208L101.183,93.268H100.637L99.604,93.39H99.058L98.087,93.997L97.54,94.058V93.511L97.48,92.965L97.419,92.479L98.451,91.872H98.937L98.876,91.326L99.362,90.78L99.908,90.719L100.454,90.658L101.001,90.112L101.426,89.565L102.458,89.444V88.958L102.943,88.412L102.336,87.926H101.851L101.304,87.987V87.501L100.272,88.048L99.18,87.623L99.119,87.076L98.633,87.683L98.148,87.137H98.573L97.54,86.651L97.055,86.712V87.198L96.569,88.29H97.176L96.63,88.897L95.537,88.412L96.084,88.897L95.598,88.958L95.051,89.444L95.659,89.93V90.537L95.719,91.022L95.173,90.537L94.627,90.597V89.99L94.08,90.051L93.534,90.112L93.048,90.719L93.109,91.204V91.751L93.17,92.236L93.716,92.722L93.777,93.268L92.745,93.329L92.805,93.876V94.361L92.259,94.422L91.773,94.968L91.834,95.515L91.895,96.061L90.863,96.607L90.984,96.789H91.045L91.409,97.093L91.955,97.639L92.38,96.486H92.987L93.412,95.94L93.959,95.879L93.473,96.425L92.987,97.032L92.502,97.579L93.048,97.518V98.064L92.502,98.125H92.016L91.531,98.671L91.045,99.764L91.105,100.31V100.796L91.652,100.25L92.077,99.218L92.563,99.157L93.17,99.582L93.23,100.128L92.684,100.675L92.198,100.735L92.259,101.282L92.745,101.221L93.291,101.16L93.837,101.707H94.384V102.192H93.898V102.739L93.412,103.285L92.927,103.831L92.441,104.439H91.955V104.985L91.47,105.531H90.923L90.984,106.138H90.438L90.498,106.624L90.559,107.717L90.62,108.263L91.105,108.202V107.656L91.045,107.11H91.591L92.137,107.595L92.198,108.142L92.745,108.627V108.081L92.684,107.535L93.17,106.988L93.716,107.474L93.777,108.02L94.748,107.413L94.809,107.96L95.355,107.899L95.294,107.352H95.841L96.387,107.838L96.873,107.777L97.419,107.231V107.595V107.777L97.48,108.263Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M151.752,165.812L150.963,165.266L151.691,164.78L151.874,164.598L151.813,164.173L151.631,163.688L151.449,163.263L151.57,162.656V162.595L151.084,162.656L150.781,162.352L150.477,162.109L149.445,162.17L148.899,162.231H148.413L147.867,162.291H147.806L147.442,161.927L147.321,161.866L147.26,161.806L146.713,161.259L146.653,160.774L146.167,160.349L145.56,159.863L144.589,159.924L144.042,159.985H143.496L142.95,160.045L142.403,159.56L141.857,159.62L141.918,160.106L140.946,160.713L140.4,160.774H139.854V160.713H139.793L139.732,160.227V159.742L139.246,159.802H138.639V159.863H139.307H138.761L138.822,160.349V160.956L138.882,161.441L138.336,161.502L137.79,161.017L137.304,161.563L136.818,162.109L137.243,162.534L137.365,162.595L136.879,163.141L136.333,162.656L135.786,162.716L135.24,162.777H134.754L134.693,162.716H134.633V162.17L134.147,161.745L133.601,161.806L133.661,162.352L133.722,163.384H133.176L132.69,163.991L132.204,164.538V165.084L131.719,164.598L131.112,164.113L130.565,163.566L130.505,163.506L130.444,163.02L130.383,162.474L129.958,162.049L129.412,162.109L128.926,162.656L128.987,163.202L128.441,164.295L127.955,164.355L126.923,164.416L126.316,163.87L124.313,164.598L124.13,164.477H123.827H123.705V165.023L123.159,165.084L123.22,165.57L123.766,166.116L123.827,166.602L124.373,167.087L123.888,167.634L123.402,168.18L122.916,168.787L122.37,168.848H121.824L121.338,168.908V169.394L121.52,169.516L121.641,169.637L121.945,169.88H122.431L122.552,169.94L123.038,170.365V170.851L123.098,171.397L122.613,171.944V172.49L122.734,173.522V174.008L123.341,175.04H123.463H123.888L124.92,174.979L125.041,175.04L125.466,175.465L124.98,176.011L125.041,176.497L124.555,177.104L124.07,177.59L124.616,177.347V177.286L125.041,177.104L125.587,176.497L126.073,176.436L126.619,176.375L127.651,175.829L128.137,175.283L128.076,174.736L128.562,174.19L129.048,173.583L130.14,173.522L130.626,173.461L131.78,174.494L132.265,173.886L133.904,174.858L133.844,174.311L134.39,173.765L134.876,173.704H135.422L134.936,174.251L134.997,174.797L135.543,175.283L135.058,175.768L136.15,176.74L136.879,178.864L137.486,180.868L138.093,181.414L139.307,183.903H139.854L141.007,184.874L141.553,185.906L142.16,186.331L142.707,186.878L144.346,188.274L147.745,191.249L148.292,191.188L148.899,192.22L149.931,192.159L150.538,193.131L151.024,192.584L152.723,194.041L153.331,194.527L153.816,195.013L154.363,194.952L155.455,195.923H156.062L156.548,196.409L156.669,197.441V197.987L156.73,198.473L157.823,198.958L158.369,198.898H158.855L159.948,199.323L160.494,199.808L160.555,200.355L161.101,200.84L161.708,202.358L162.376,203.876L162.497,205.454L161.951,206.001L161.465,206.061L160.98,206.122V206.608L161.04,207.154V207.64L161.101,208.125L160.615,208.732L160.13,209.279L160.19,209.825L160.737,210.311L161.222,210.25H161.769L162.254,210.189L162.801,209.643H163.287V209.097L164.319,208.489L164.258,207.943L164.197,206.911L164.683,206.365L165.168,205.818L165.654,205.211H166.2L166.686,205.151H167.232V204.604L167.172,204.119V203.572L167.05,202.479V201.994L166.99,201.447L166.383,200.962L165.411,201.569L164.804,200.719L164.561,199.323L164.683,198.473L165.168,198.412V197.866L165.654,197.38H165.108L165.593,196.834L166.079,196.287L166.625,196.227L167.111,196.166L167.172,196.712L168.264,197.198L168.811,197.137H169.297L169.843,197.077L170.389,197.016V197.502L170.45,198.048L170.996,198.534V199.08L171.603,199.566H172.089L172.635,199.505L173.121,198.898L173.06,197.866L173,196.834L172.939,196.287L171.846,195.862L171.3,194.83L170.693,194.345L169.6,193.859L168.568,193.981L168.022,193.495L167.475,193.009L165.775,192.584L165.29,192.099L164.683,191.613H164.197L163.165,191.734L162.558,191.249L161.465,190.824H160.919L161.465,190.277L161.951,190.217L162.437,189.67L162.376,188.578L160.737,188.213L160.251,188.274L158.673,188.335L157.58,188.456L156.548,187.97L155.88,186.999L155.395,186.453L154.241,185.482L153.573,184.51L152.541,183.539L152.481,182.446L152.906,181.9L152.359,180.928L151.691,179.896V179.35L151.145,178.864L151.084,177.893H150.477L149.445,177.407L148.353,176.983H147.806L146.713,176.558L146.653,176.011L146.106,175.586V175.04L145.499,174.008L145.985,173.461L145.924,172.915V172.429L146.349,171.883L146.896,171.276L146.835,170.79H146.289L145.742,170.305V169.819L145.196,169.88L145.681,169.273L146.167,169.212L146.106,168.18L147.199,168.119L147.685,168.059H148.231L148.778,167.998L149.263,167.451L149.749,167.391L149.688,166.905L150.295,166.844H150.781L150.842,167.33L151.388,167.816L151.327,166.784L151.813,166.723L151.934,166.602L151.813,166.541L151.752,165.812Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M136.575,159.5L136.211,159.136L135.725,159.257L135.3,159.318L134.936,158.893V158.529L134.875,157.982L135.361,157.436V156.95L134.815,156.707L134.268,156.525V156.1H133.843L133.358,156.161L133.297,156.04L133.236,156.1L133.176,155.554L132.204,155.675H131.658L131.112,155.736H130.626L130.08,155.797L129.594,155.858H129.048L127.955,155.433V155.918L127.894,155.858V155.918L127.408,155.493V155.554V155.493L127.348,155.433V155.858L127.408,155.979L126.862,155.493L126.801,155.433L126.376,156.525L125.769,156.04L125.284,155.615L125.223,155.554L124.737,156.161V156.647L124.312,157.739L123.341,158.347L122.248,158.407L121.823,158.954V159.5L120.852,160.593L120.366,161.685L120.974,162.717H121.034L122.006,162.11L122.43,161.018H122.552H122.977V160.471H123.038H123.22L123.463,160.411L124.07,161.443L124.13,161.989L123.584,162.05H123.341H123.159H123.098V162.535L123.645,163.021L123.159,163.082V163.628L123.705,164.053L123.766,164.174L124.13,164.478L124.312,164.599L126.316,163.871L126.923,164.417L127.955,164.357L128.44,164.296L128.987,163.203L128.926,162.657L129.412,162.11L129.958,162.05L130.383,162.475L130.505,162.535L130.565,163.082V163.567L131.112,164.114L131.719,164.599L132.204,165.085V164.539L132.69,163.992L133.176,163.385H133.722L133.661,162.353L133.601,161.807L134.147,161.746L134.633,162.171L134.693,162.293V162.717L134.754,162.778H135.24L135.786,162.717L136.332,162.657L136.879,163.142L137.364,162.596L137.243,162.535L136.757,162.11H136.818L137.304,161.564L137.789,161.018L138.336,161.503L138.882,161.443L138.821,160.957V160.35L138.761,159.864H139.307H138.639L137.182,159.986L136.575,159.5Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M162.497,159.741L162.982,159.681L163.407,158.649L163.347,157.616H163.407V157.556L163.893,157.495L163.832,157.07V156.524L163.225,156.038L163.165,155.492H163.225V155.431H163.772H163.893L164.379,155.128L164.257,155.37H164.318V155.552L164.864,155.674L164.804,155.431L164.864,155.37V155.31L165.229,154.824L164.864,153.853L164.621,153.246L164.318,152.881L164.682,152.699H164.621H164.682L165.046,152.517L164.986,152.396L164.439,151.789L164.561,151.303L164.197,150.878L163.589,150.939L163.043,150.817L162.193,150.453L162.072,150.15L161.708,149.846L161.404,149.421V149.36L160.372,149.482H159.826L159.704,149.36H159.644L159.219,148.996L158.733,149.057H158.187L157.155,149.178L156.851,149.482L156.669,149.725L156.73,150.271L156.244,150.817L155.151,150.878L154.119,150.939L153.998,150.817H153.937L153.512,150.453L153.026,150.514V151.06H152.48L151.994,151.121L151.387,151.182L151.448,151.667L150.962,152.214L150.537,152.76L148.898,152.881L148.959,153.974L149.02,154.46L149.445,154.824V154.885L149.627,155.006L149.688,155.492V156.038L150.112,156.402L150.234,156.524V157.009L150.295,157.556L149.809,157.616L149.87,158.102L149.688,157.981L149.566,157.92L149.263,157.616L149.141,157.495L149.08,157.009V156.524L148.109,156.099L147.623,156.16V156.706L147.016,156.22H146.531L145.438,156.342H144.952L144.467,156.888L143.981,156.949L143.374,157.009L142.828,156.524L142.342,157.07L141.796,157.131H141.249V157.009H141.128V156.584L140.217,156.16L139.732,157.252L139.246,157.313L138.7,157.799L138.396,157.556L138.153,157.374H137.607L137.485,157.252L137.364,157.192L137.06,156.888L136.514,156.402L135.968,156.463L135.482,157.009L135.361,156.949V157.434L134.875,157.981L135.421,157.616L135.543,157.495L136.271,157.981L136.332,158.77L136.211,159.134L136.575,159.438L137.182,159.923L138.639,159.802H139.246L139.732,159.741H139.792V160.288L139.853,160.713V160.773H140.399L140.946,160.713L141.917,160.105L141.856,159.62L142.403,159.559L142.949,160.045L143.495,159.984H144.042L144.588,159.923L145.559,159.863L146.167,160.348L146.652,160.773L146.713,160.834L146.774,161.32L147.32,161.866L147.441,161.927L147.866,162.291L148.413,162.23H148.898L149.445,162.17L150.477,162.109H150.537L150.78,162.352L151.084,162.655L151.569,162.594H151.63L151.691,162.655L152.601,162.291L153.026,162.23L153.694,162.959H153.876L154.241,162.898H154.787L155.394,163.323L155.515,162.837L156.244,162.473L156.912,162.594L156.851,162.412L157.215,161.623H157.337H157.762L158.551,161.562L158.915,161.502H159.461H159.522L159.947,161.441L160.372,161.259L160.858,161.077L161.465,161.198L162.132,160.591L162.436,159.741H162.497Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M134.936,158.529L134.875,157.982L134.936,158.529Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M129.958,124.29L130.019,124.776L130.08,125.261V125.808V125.868L129.533,125.929L129.594,126.415L129.655,127.447L129.715,127.933L129.655,127.993V128.054L129.23,128.54L129.776,128.965L129.837,129.511L129.412,131.089L129.351,131.15V131.211H128.805L128.319,131.271H127.833L127.226,131.332L126.741,130.846L125.162,131.514L124.191,132.061L124.252,132.546V133.032L124.373,134.125V134.61L124.312,134.671V134.732L123.341,135.278L123.402,135.764V136.31L123.463,136.796V136.856L123.038,137.889H123.523L123.584,138.374V138.921V138.981H123.098V139.467V139.528L123.159,139.71V140.013L123.22,140.499V140.985V141.045L123.766,141.531L124.373,142.017V142.199V142.563L124.434,142.684V143.049L124.495,143.534V143.656V144.141L124.009,144.202L124.07,144.323L124.555,145.113L125.162,146.145H125.223L125.769,146.63L126.801,147.116L127.894,146.995L128.441,147.48L129.048,147.42H129.533L130.019,147.905L130.08,147.966L129.108,149.059L128.623,149.605L128.198,150.698V151.183L127.712,151.79V152.276L127.773,153.308L127.833,153.854L127.348,154.401V154.947L127.409,155.494V155.554V155.494L127.894,155.858L127.955,155.919V155.433L129.048,155.858H129.594L130.08,155.797L130.626,155.736H131.112L131.658,155.676H132.204L133.176,155.554H133.297V156.04L133.358,156.161L133.843,156.101H134.268L134.39,156.04V156.586L134.815,156.708L135.361,156.951L135.483,157.011L135.968,156.465L136.515,156.404L137.061,156.89L137.364,157.193L137.486,157.254L137.607,157.375H138.154L138.396,157.558L138.7,157.8L139.246,157.315L139.732,157.254L140.218,156.161L141.128,156.586H141.25V157.011V157.133H141.796L142.342,157.072L142.828,156.526L143.374,157.011L143.982,156.951L144.467,156.89L144.953,156.343H145.439L146.531,156.222H147.017L147.624,156.708V156.161L148.11,156.101L149.081,156.526L149.142,156.586L149.202,157.072L149.263,157.618L149.567,157.922L149.688,157.983L149.87,158.104L149.809,157.618L150.295,157.558L150.234,157.011V156.526L150.113,156.404L149.688,156.04V155.494L149.627,155.008L149.445,154.886L149.02,154.462L148.96,153.976L148.899,152.883L150.538,152.762L150.963,152.215L151.449,151.669L151.388,151.183L151.995,151.123L152.481,151.062H153.027V150.516L152.663,150.091L152.177,149.484L151.691,149.059L151.327,148.634L151.206,148.512L150.72,148.573L150.174,148.087L149.567,147.055L149.02,146.023L148.413,145.598L148.352,145.052L148.292,144.02L147.745,143.474L147.199,143.049L147.078,142.017H146.592L145.985,140.985L145.863,139.953H145.924L146.471,140.438L146.531,140.985L147.503,140.377H147.563L148.11,140.863L149.142,140.802L150.113,140.195H150.174L150.659,140.135L151.145,139.588L151.691,139.528L153.209,138.374L153.695,137.828L154.18,137.281L155.212,136.674L155.819,137.16V137.706L156.305,137.646L156.851,137.099L156.791,137.039V137.099L156.73,136.553L156.669,134.975L157.094,134.428L156.609,134.489L156.548,133.943V133.396L156.427,131.818L156.366,131.332L155.759,130.3L155.698,129.814L155.637,129.268L156.184,128.661L155.698,128.722H155.637L155.091,128.236V127.75L154.484,127.265L153.877,126.233L154.362,125.686L154.848,125.079V124.594L154.787,124.047V123.501L154.727,123.015V122.651L154.666,121.498L153.088,121.558L152.966,120.526L152.905,119.434L151.873,119.555H151.327L151.266,119.009L150.72,118.584V118.037L150.174,118.098L149.688,118.644L149.142,118.705H148.595L147.624,119.312L146.592,119.919L146.046,119.434L146.106,119.919L145.56,119.98L144.467,120.041L143.982,120.101L142.828,119.616H143.435L143.374,119.069H143.86V118.523L143.799,117.977H143.314L142.707,118.037L142.282,118.644L141.675,117.612L141.189,117.673H140.643L140.582,117.187H140.096L139.489,117.248V116.702L139.975,116.155L139.429,115.67L138.821,115.184L138.7,115.063L138.457,115.305L138.639,115.063L138.336,114.759L137.425,114.82H137.364H137.304L136.818,114.395H136.332V114.881V114.395V114.273L136.15,114.334L136.272,115.366V115.913L136.818,116.337L136.879,116.884L135.847,117.491L135.361,117.552V118.037H135.847L135.908,118.523L135.968,119.069L137.061,119.555L136.575,120.101L137.122,120.587L138.214,121.012L138.275,122.105L137.729,121.073L137.122,120.587L136.029,120.648L135.058,120.708V121.255L135.118,122.287L135.179,122.833L134.693,123.38V123.865L134.147,122.894L134.086,122.408L134.026,121.862H133.54V122.408L133.054,122.469L132.994,121.923L133.479,121.376L132.386,120.891L131.354,120.951L130.262,121.073H129.776V121.619L129.29,122.165L129.351,122.712H129.898V123.197L130.444,123.683L130.383,123.744L129.958,124.29Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M136.332,114.395H136.818L137.364,114.819H137.425L138.335,114.759H138.457L138.7,115.002L139.003,114.698H139.489L138.943,114.152L138.335,113.666L138.882,113.18L139.428,113.12L138.821,112.634V112.148L139.307,112.088V111.541L139.246,111.056L139.792,110.995L140.217,110.449L140.824,110.388L140.764,109.842L141.735,109.234L142.221,108.202L141.674,107.717L142.16,107.11H142.646L142.706,107.595H143.253L143.678,106.988V106.503L143.617,105.956L143.071,105.471L142.585,105.531L142.039,105.592L141.978,105.046H141.492L141.432,104.56L141.917,103.953H142.464L141.856,103.467V102.921H141.31L140.824,102.982L140.885,103.528L139.792,103.649H139.246L138.76,104.196L139.367,104.681V105.228L138.821,104.742L138.335,105.288L138.275,104.742L138.214,104.256H137.668L137.243,104.864L137.303,105.349L136.757,105.41L136.15,104.924H135.664L135.604,104.439H135.118V104.985L134.632,105.531L134.693,106.078L134.754,107.11V107.656L134.814,108.142L134.875,108.688V109.174L134.936,109.72L134.45,110.327L134.997,110.813L135.543,110.752L135.604,111.298L136.15,111.723V112.33L136.211,112.816L136.271,113.848L136.332,114.273V114.395Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M138.457,115.305L138.7,115.063V115.002L138.639,115.063L138.457,115.305Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M111.746,135.581H111.807V136.006V136.067H112.293L112.778,136.006H112.839L112.9,136.552V136.977V137.099L113.446,137.038H113.932H113.992V137.524L114.599,138.556L115.146,138.495L115.631,138.434H116.117H116.178L116.238,139.466L116.299,140.013L115.814,140.498V140.559L116.36,141.105L116.906,141.045L117.453,140.984L117.392,140.438L117.938,140.377V140.984L118.485,141.409H118.545V141.895V141.955L119.092,142.441H119.152V142.805V142.927H119.638L120.245,143.412L120.792,143.898L120.852,144.444L121.338,143.837H121.884L121.945,143.777V143.716L122.066,142.866L121.763,142.259L121.702,141.712V141.166L122.188,140.68L122.613,140.073H122.673L123.159,140.013V139.709L123.098,139.527V139.466V138.981H123.584V138.92V138.434L123.523,137.888L123.038,137.949V137.888L123.463,136.856V136.795L123.402,136.37V135.824L123.341,135.278L123.28,135.338L123.22,134.853L122.127,133.821L121.581,133.335L121.034,132.849L120.488,132.91L120.063,133.396L120.002,133.456L119.456,133.517L119.395,132.971L117.817,132.546H117.392L116.846,133.092L116.906,133.638L115.814,133.699L115.328,133.76H114.842L114.782,133.274L114.235,132.789L113.689,132.849L113.628,132.242L113.082,132.303L112.596,132.91L112.05,132.364L112.11,132.971L111.078,133.517L111.139,134.063L111.2,134.61V134.974V135.095L111.746,135.581Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M124.494,144.142V143.656V143.535L124.433,143.11V142.685L124.373,142.563V142.199V142.078L123.826,141.592L123.219,141.106V141.046V140.985V140.621L122.673,140.074H122.612L122.187,140.681L121.702,141.167V141.713L121.762,142.26L122.066,142.867L121.944,143.717V143.777L122.612,143.899L123.523,144.081L124.009,144.202L124.494,144.142Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M119.395,132.971L119.456,133.517L120.002,133.457L120.063,133.396L120.488,132.91L121.034,132.85L121.58,133.335L122.127,133.821L123.219,134.853L123.28,135.339L123.341,135.278L124.312,134.732V134.671L124.251,134.185L124.191,133.153V132.607L124.13,132.121L124.191,132.06L125.162,131.514L126.74,130.846L127.226,131.332L127.833,131.271H128.319L128.804,131.211H129.351V131.15L129.776,129.571L129.715,129.086L129.169,128.6L129.229,128.539L129.654,128.054V127.993L129.594,127.507L129.533,126.475L129.472,125.929H129.533L130.079,125.868V125.808L130.019,125.383L129.958,124.836V124.29L130.383,123.744L129.897,123.319L129.351,123.804L128.865,123.865L128.683,121.74L128.137,121.801L127.651,121.862L127.165,122.469L126.133,123.015V122.529L126.073,121.983L125.526,122.59H125.041L124.555,122.651L123.523,123.197L122.977,123.804L123.037,124.29L123.098,124.776V125.322L123.159,125.868L123.219,126.9L122.248,128.054H121.762L121.216,128.114L121.155,127.082L121.641,126.475L121.095,126.536L121.58,125.99L122.066,125.383V124.897L121.459,124.411L120.427,124.472L119.941,125.565L120.063,126.597L119.577,127.204L119.638,127.69L119.031,127.75L119.091,128.236L118.606,128.843L117.574,128.904L117.634,129.936H118.181V130.421L117.209,131.028L117.149,129.996L116.602,130.057V130.543L116.663,131.028L116.724,132.06H117.27L117.816,132.546L119.395,132.971Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M139.186,101.827H138.579L137.061,101.948L136.575,102.009L136.029,102.555L136.09,103.041L136.697,104.073L136.636,103.587V103.041L137.122,102.494L137.607,102.434H138.154L138.639,102.373H139.186L139.732,102.312L140.218,101.766L140.764,101.705L141.796,101.645L142.342,102.13L142.949,102.555L142.889,102.07L143.374,101.523L143.86,100.977L143.799,99.945H143.253L143.192,99.459L143.739,98.852L144.164,98.306L143.678,98.366L143.192,98.913H142.646L142.16,98.973L141.675,99.52L141.128,99.58L140.643,100.127L140.157,100.734L140.218,101.22L139.671,101.766L139.186,101.827Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M140.4,112.27L140.461,113.302L141.553,113.241L141.614,113.727L142.646,113.666L143.192,113.605L143.132,113.12V112.634L143.071,112.088L143.01,111.602H142.525L141.918,111.116L141.493,111.663L140.886,111.177L140.946,111.723L140.4,111.784V112.27Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M144.285,110.388L143.8,110.935L143.86,111.481L144.407,111.967L143.921,112.513L143.982,113.059L144.528,113.484L145.56,113.424L146.106,113.363L146.167,113.97H145.621L146.714,114.395H147.26L146.653,113.909L147.199,113.302H147.685L148.11,112.209L147.563,111.785L148.535,110.57L149.02,110.024L148.413,109.053L148.96,108.506H148.413L148.899,107.96L147.806,108.021L147.321,108.081L146.835,108.628H147.321L147.928,109.053L147.442,109.66H146.896L146.41,109.72V110.267L146.471,110.752H145.924L145.378,110.328L145.864,109.72L145.803,109.235H145.257L145.317,109.781L144.832,110.328L144.285,110.388Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M144.649,115.608V115.122H144.103L143.557,115.183L143.617,115.729L144.164,116.154L144.771,116.64H145.256L145.803,116.579L145.742,116.033L145.196,115.608H144.649Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M147.321,115.427L146.774,115.488L146.228,115.002L146.288,115.488V116.034L146.835,116.52V115.973L147.381,115.913L147.321,115.427Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M186.416,145.538H186.294H185.869L185.384,145.598H185.141H184.898H184.837L184.291,145.113L183.745,144.627L183.138,144.202H182.713H182.652L182.045,143.17L181.559,143.716L181.256,144.081L181.134,144.323L179.556,144.93H179.495V144.445L179.374,143.413L178.888,143.898L178.402,143.959L177.856,143.534L176.885,144.081L176.945,144.627L176.46,145.173V145.113L176.338,145.173L176.278,144.081L175.792,143.656L175.306,144.141L174.821,144.202L174.335,144.809L174.274,144.748L174.214,144.809L173.667,144.263L172.696,144.384H172.574L172.089,143.898L171.482,143.413L170.935,142.927L169.843,142.988L168.75,142.563L168.204,142.017L167.111,140.62L166.625,141.106H166.564L166.018,140.681L164.925,140.742H164.683H164.5L165.047,141.227H164.986L164.5,141.288L164.075,141.834V142.32L164.015,142.199V142.32L163.408,141.349L162.861,140.863L161.89,140.924L161.769,140.985L162.315,140.377L162.801,139.831L162.194,139.345L161.222,139.406H161.162L160.069,138.92L159.583,138.981L158.976,138.496L158.43,138.556V138.01L158.369,137.524L158.308,136.492H157.823H157.762L157.033,136.674L156.851,136.978V137.099L156.305,137.646L155.819,137.706V137.16L155.212,136.674L154.18,137.281L153.695,137.828L153.27,138.374L151.691,139.528L151.206,139.588L150.659,140.135L150.174,140.195L149.142,140.802L148.11,140.863L147.563,140.377L146.531,140.985L146.47,140.438L145.924,139.952L145.985,140.985L146.592,142.017H147.138L147.199,143.049L147.745,143.474L148.292,144.02L148.413,145.052V145.598L149.02,146.023L149.566,147.055L150.234,148.087L150.781,148.573L151.266,148.512L151.327,148.634L151.691,149.059L152.177,149.484L152.663,150.091L153.027,150.516L153.512,150.455L153.998,150.819L154.12,150.94L155.152,150.88L156.244,150.819L156.73,150.273L156.669,149.726L156.851,149.484L157.155,149.18L158.187,149.059H158.733L159.219,148.998L159.705,149.362L159.826,149.484H160.372L161.404,149.362V149.423L161.708,149.848L162.072,150.151L162.194,150.455L163.043,150.819L163.59,150.94L164.197,150.88L164.561,151.305L164.44,151.79L164.986,152.397L165.108,152.519H165.047L164.683,152.701L164.318,152.883L164.622,153.247L164.5,153.005L165.715,153.794L165.775,153.854H165.957L166.443,154.279L166.807,154.219L167.414,154.704L167.9,155.19H167.961L168.932,155.129L169.539,155.069L170.025,155.008H170.268L171.603,154.461H172.028L171.664,153.976L171.967,153.854L172.028,153.308L172.817,153.187L173.607,153.247L174.153,153.187L174.699,153.126L175.671,152.519L176.156,151.972L177.188,151.365L177.674,150.819L178.16,150.212L178.099,149.726L178.645,149.18L179.131,149.119H179.677L180.709,148.998H181.256L181.802,148.937H182.288L182.348,149.423H182.834H182.895H183.077L183.502,149.787L184.473,149.301L184.594,149.362L184.655,149.301L184.777,149.241L185.019,149.484L185.566,149.726L185.627,149.908L185.687,149.18L185.505,148.816L185.627,148.209L185.869,147.723H186.355L186.173,147.055L186.476,146.63L187.023,146.266L186.901,145.902L186.659,146.266L186.416,145.538Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M185.019,149.484L184.837,149.423L184.594,149.362L184.473,149.302L183.502,149.787L183.441,149.848L182.895,149.423H182.834H182.348L182.288,148.938H181.802L181.256,148.998H180.709L179.677,149.12H179.131L178.645,149.18L178.099,149.727L178.159,150.212L177.674,150.819L177.188,151.366L176.156,151.973L175.67,152.519L174.699,153.126L174.153,153.187L173.606,153.248L172.817,153.187L172.028,153.308L171.967,153.855L171.664,153.976L172.028,154.462H171.603L170.268,155.008H170.025L169.539,155.069L168.932,155.13L167.961,155.19H167.9L167.414,154.705L166.807,154.219L166.443,154.28H166.261L165.775,153.855L165.715,153.794L164.5,153.005L164.622,153.248L164.865,153.855L165.229,154.826H165.29L164.865,155.372L164.804,155.433L164.865,155.676L164.318,155.555H164.197L164.258,155.372L164.379,155.13L163.893,155.433L163.772,155.494H163.226H163.165L163.226,156.04L163.833,156.526V157.072L163.893,157.497V157.558L163.408,157.619H163.347L163.408,158.651L162.983,159.683V159.743H162.497H162.436L162.133,160.593L162.194,160.533L163.408,160.775L163.59,161.2L164.197,161.686L164.743,162.172L164.804,162.718V163.264L165.411,163.75L165.957,164.236L166.504,164.661L167.05,165.146H167.596L167.657,165.693L168.204,165.632L168.75,166.118L169.236,166.057H169.782L170.268,165.996L171.36,166.239L171.664,166.057L172.21,165.45L172.757,164.782L173.182,164.418L174.092,164.357L174.517,164.175L175.246,163.568L176.399,163.143L177.067,163.75L177.188,163.568L177.977,163.386L177.917,162.9H177.977H178.524L179.131,162.839L179.92,163.082L180.588,163.143L181.073,162.111L181.559,161.565L182.045,160.957L182.53,160.472L183.016,159.865V159.379H183.502L183.987,158.772L184.473,158.165L184.352,156.647L184.837,156.04L184.716,155.008L185.262,154.462L185.748,153.915L186.294,153.855L186.719,153.308L187.266,152.762L187.751,152.216L187.691,151.669L186.719,150.455L186.901,150.394L186.719,150.212L186.112,150.091L185.869,150.212L185.809,150.273L185.748,150.212L185.626,149.909L185.566,149.727L185.019,149.484Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M154.787,123.501V124.048L154.848,124.594V125.08L154.362,125.687L153.877,126.233L154.484,127.265L155.091,127.751V128.237L155.637,128.722H155.698L156.184,128.662L155.637,129.269L155.698,129.815L155.759,130.301L156.366,131.333L156.426,131.818L156.548,133.397V133.943L156.609,134.489L157.094,134.429L156.669,134.975L156.73,136.553L156.791,137.1V137.039L156.851,136.978L157.033,136.675L157.762,136.493H157.823H158.308L158.369,137.525L158.43,138.01V138.557L158.976,138.496L159.583,138.982L160.069,138.921L161.162,139.407H161.222L162.194,139.346L162.801,139.832L162.315,140.378L161.769,140.985L161.89,140.924L162.861,140.864L163.408,141.349L164.015,142.321V142.199V141.835L164.44,141.289H164.5L164.986,141.228L164.44,140.803L164.683,140.742H164.925L166.018,140.682L166.564,141.107H166.625L167.05,140.56L167.111,140.621L168.204,142.017L168.75,142.563L169.843,142.988L170.935,142.928L171.482,143.413L172.089,143.899L172.574,144.385H172.696L173.667,144.263L174.214,144.81L174.274,144.749L174.699,144.203H175.246L175.731,143.656H175.792L176.278,144.081L176.338,145.174L176.46,145.113L176.885,144.628L176.824,144.081L177.856,143.474V143.535L178.402,143.96L178.888,143.899L179.374,143.413L179.495,144.445V144.931H179.556L181.073,144.324L181.256,144.081L181.559,143.717L182.045,143.171L182.652,144.203H182.713H183.138L183.745,144.628L184.291,145.113L184.837,145.599H184.898H185.141H185.384L185.869,145.538H186.294H186.416L186.659,146.267L186.901,145.902L187.144,145.477L187.083,144.931L187.205,144.445L187.144,143.838V143.413L187.266,142.26L187.448,141.592L187.873,140.924L188.419,140.742L188.844,139.771L189.087,139.225L190.119,138.193L191.151,138.253L191.697,137.828L192.001,136.675L191.576,135.946L191.151,135.764V135.097L191.515,134.914L190.483,133.761L190.058,133.032L189.269,132.547L189.512,132.122L189.208,131.697L189.451,130.119L189.39,130.058L189.269,129.936V129.572L189.512,127.994L188.54,127.812L188.055,127.205L189.937,125.748L190.058,125.262L190.119,125.201L190.24,124.837L190.119,123.137L189.937,122.712L189.694,122.105L189.39,121.741L188.723,120.952L188.419,120.588L188.298,119.07L187.933,118.766L187.691,117.977L187.63,117.127L187.569,116.884L186.416,116.034L185.627,115.913L184.655,115.367V115.306L185.019,114.699L184.412,114.76L184.594,114.638L184.716,113.91L184.534,113.181L184.473,113.06V112.999L184.291,112.574L183.805,111.724L182.895,111.481L182.045,111.785L181.62,112.331L181.438,112.574L180.406,112.635L179.799,112.696H179.677L179.495,112.271L179.009,111.724L178.22,111.906L177.735,111.967V112.453L178.281,112.392L177.795,113.485L177.31,114.031L176.278,114.092V113.545L176.217,113.06V112.574L174.699,113.667V114.213L173.849,115.002L174.76,115.306L174.821,115.792L174.335,116.399H173.849V116.945L173.91,117.431V117.977L172.878,118.038L172.332,118.099V117.552L171.785,117.613L170.268,118.22L169.661,117.734L169.6,117.249V116.702L169.539,116.156L168.993,115.67V115.185L167.354,115.245L166.868,115.852H166.382L165.29,115.427L164.804,115.974L164.258,116.034L164.318,116.52L163.772,116.581L163.286,117.188L162.679,116.642L162.254,117.249L161.769,117.795L161.283,118.341H160.737L160.251,118.948H159.705L159.765,119.495L159.219,119.555L158.187,119.616L157.641,119.677L156.609,120.284L156.184,121.377L155.698,121.862L156.244,122.348L156.305,122.894L156.123,122.834L155.334,122.894L154.727,122.227V122.652V123.016L154.787,123.501Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M201.107,205.698L201.714,206.73H202.26L202.139,205.637L201.653,205.091L201.046,204.666L200.985,204.18L200.439,203.634L199.953,203.694L199.346,203.209L198.254,202.723L197.222,202.844L196.675,202.298L196.068,201.873L195.583,201.934L194.551,202.48L195.097,202.966H195.643L196.736,202.844L197.222,203.33L198.314,203.755L198.921,204.301L200.014,204.726L200.561,205.212L201.107,205.698Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M162.497,35.535V36.021L163.044,35.475L162.983,34.929H163.529L164.015,34.868L164.501,33.289L163.893,32.804H163.347L163.408,33.411H162.861L162.315,33.472L162.376,33.957L162.436,34.443L161.89,34.989L162.497,35.535Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M148.231,88.169L148.717,87.562L148.656,87.016L149.142,86.469H149.688H149.81L150.234,86.408L150.599,84.83L150.477,83.191V82.705L150.417,82.159L149.87,81.188L149.81,80.641L151.267,79.488V78.941L151.206,77.97L151.145,77.363L150.599,76.938L149.992,76.392V75.845L149.931,75.36L150.417,74.328L150.356,73.721L150.295,72.689L149.688,72.203V71.717L149.627,70.685L150.113,70.078L149.992,69.046L149.931,68.014L149.87,66.921L150.356,65.889L150.842,65.282L151.874,64.675V64.736L151.934,64.675V65.161H152.359L152.906,64.615L153.391,64.068H153.877L154.97,64.007L155.455,63.4L154.848,62.368L154.788,61.883V61.336L154.18,60.304L154.666,59.758L155.637,59.151V58.604L156.062,57.026L156.002,56.48L155.941,55.994L155.88,54.901L156.366,54.416L156.852,53.323L156.791,52.23L157.823,51.623L158.794,51.016L159.28,50.53L159.219,49.984L159.158,48.891L160.19,48.284L161.162,47.192V46.706L161.587,46.099L161.04,45.067L160.433,44.642L160.98,44.035L161.405,43.488L162.922,42.335V41.849L163.347,40.696H163.408H163.954L165.047,41.121L165.472,41.06V40.575L165.351,39.542L166.383,38.935H166.443L167.05,39.421L167.475,39.36V38.875L167.84,37.236H167.9L168.932,37.661V37.175L168.811,36.143V35.597L168.872,35.536L169.904,35.475L169.843,34.443L170.268,33.411H170.329L170.571,33.35H170.814L171.361,33.836L172.453,34.261L172.514,34.807L173.121,35.839H173.364L173.607,35.779H173.971H174.153L174.699,36.264L176.278,36.143L176.763,35.597H176.824L177.31,35.536L177.917,36.507L178.888,35.961L179.435,35.9L179.374,35.414L179.86,34.261L180.345,33.715L180.285,33.168V32.683L180.224,32.197L180.709,31.104L180.527,28.979L181.013,28.433H181.499L182.045,28.372L183.077,27.705L183.563,27.219L183.866,27.158H184.109L183.684,28.251L185.262,28.615H185.687H185.809L186.355,29.101L186.962,29.526V30.072L186.477,30.679L186.537,31.772L186.598,32.258L186.659,32.743V33.29H186.78L186.962,33.229H187.205L187.327,31.347L187.934,30.133L189.026,29.344L190.24,29.04V28.737L190.544,27.158L190.423,27.219L189.391,27.28L188.844,27.34L189.33,26.794L189.269,25.701L188.723,25.276L189.208,25.216L189.755,24.669L189.694,24.123L189.633,23.576L189.148,23.637L189.087,23.091L187.994,23.152L187.023,23.759L186.962,22.727L185.87,22.787L185.323,22.302L184.352,23.455V23.941L183.927,24.548L183.32,23.516L183.259,22.969L183.745,22.423V21.938L183.684,20.845L183.138,20.905L182.166,21.998V22.545L181.134,23.152L181.256,24.73L181.317,25.276L180.709,24.791V24.244L180.163,23.759L180.102,23.212V22.666L180.042,22.18L179.495,22.241L179.556,22.727L179.617,23.212L179.131,24.366L178.706,25.458L178.22,26.49L178.16,26.005V25.458L178.099,24.426L179.07,23.819V23.273L179.495,22.241L180.042,21.634L179.435,21.148L177.917,22.302L177.371,21.816L176.885,22.423L176.946,22.909L177.978,23.334L176.46,24.001L175.914,23.516L175.428,24.062L175.489,25.155H174.942L175.549,25.641L174.517,26.794L173.91,25.762L173.485,26.369L173.546,26.855V27.401L173.06,27.948L172.514,27.462H171.968V28.008L171.421,27.522L170.875,27.583L170.45,28.13V28.615L169.964,28.676L169.479,29.283L169.539,30.254L170.086,30.74L170.146,31.833L169.6,31.286L169.054,30.801L168.507,30.861L168.082,32.015L167.415,30.922L166.99,31.529L167.05,32.561L167.597,33.593L167.657,34.079L167.111,33.593L166.504,32.622L166.565,33.654L166.14,34.747L165.593,34.2L165.472,33.229L164.986,33.775L165.108,35.354H164.622L164.076,35.414L163.59,35.961L164.136,36.446L163.651,37.054L163.165,37.539L163.226,38.085L163.772,38.571L163.287,39.178L161.708,39.3L161.647,38.693L161.162,39.3V39.785L161.283,40.878V41.364L160.858,42.457L160.798,41.424L160.737,40.392L160.676,39.846L160.19,40.453H159.705L159.158,40.514L158.673,41.06L159.158,41L159.766,41.485V42.032L159.219,41.485L158.733,42.092L158.126,41.607H157.641L157.701,42.699L157.216,43.306L158.733,42.639L159.341,43.124V43.61L158.309,43.731H157.762L157.337,44.338V44.824L158.369,44.763L158.43,45.795L157.944,45.856H157.398L156.912,46.463L156.427,47.009L155.334,46.584L154.848,47.131L154.909,47.677V48.163H154.423L153.938,48.709L154.484,49.256L153.998,49.802L152.906,49.923L153.513,50.409L154.059,50.895L154.545,50.288L154.666,51.32L153.573,51.38L153.027,51.441L153.088,51.987L153.634,52.412L153.148,53.02H152.602L152.116,53.627L151.631,54.173L152.238,54.719V55.144L151.752,55.751L151.206,55.266V54.78L150.659,55.812L150.72,56.358L151.267,56.298L151.388,57.39L150.842,57.937L150.356,57.998L150.417,59.029L149.931,59.576H149.385L149.445,60.122L149.931,60.062L149.992,60.608L150.052,61.154L149.567,61.701L148.474,61.276L148.413,60.729L147.867,60.244L147.381,60.79L146.896,61.397H146.349L145.803,61.458L145.864,62.49L145.378,63.036L144.953,64.129H144.467L143.921,64.19L143.982,64.736L144.042,65.768L143.435,65.282L142.95,65.829L142.464,66.436L141.918,65.889L141.432,66.496L140.886,67.043H140.4L140.521,68.136L139.914,67.65H139.368L139.975,68.196V68.682L139.489,68.743L138.882,68.257L138.457,68.803L137.911,68.864H137.365L136.818,68.925L136.879,69.471L137.486,70.442L136.94,70.503H136.393L135.301,70.078H134.815L134.329,70.685L134.876,71.171L134.936,71.717H134.39L133.358,71.839L132.872,72.931L132.812,71.839L132.265,71.899L131.78,72.446L131.294,71.96L130.687,72.021H130.201L130.262,72.567V73.114L130.808,73.538H131.355L131.415,74.024L130.869,74.085L130.383,74.631L129.291,74.753L129.351,75.238L129.958,75.724V76.27L128.866,75.845L128.926,76.331V76.877L129.533,77.849L130.626,77.788V78.334L130.14,78.395L128.987,77.849L129.048,78.456L129.108,78.941L129.655,79.913L130.262,80.398L129.715,81.006L129.23,80.52L128.683,81.066L128.744,81.613L129.776,82.037L129.291,82.098H128.805V82.645L129.412,83.13L129.898,83.616L130.99,83.555L132.022,82.948L131.051,84.041L130.565,84.587L130.019,85.194L131.233,86.166L130.687,86.226L130.08,86.287L129.655,86.773L129.108,86.348L128.562,86.408L128.076,87.38L128.137,87.987L127.712,89.019L128.259,89.565L129.169,87.926L130.201,87.805L130.262,88.351L130.323,89.444H129.837L129.898,90.476L129.412,91.022L129.351,90.536L128.926,91.022V91.568L129.048,92.661V93.147L130.14,94.118L131.78,94.543L130.748,95.636L131.901,96.121L132.387,95.515L132.447,96.607L134.026,96.486L135.058,96.425L136.09,95.818L136.15,96.364L137.122,95.757L137.607,95.15L138.032,94.118L138.579,93.511L140.157,92.904L140.096,92.418L140.582,91.811L141.614,91.751L141.675,92.297L142.221,92.722L143.253,92.176L143.192,91.083L144.164,89.99L144.042,88.897L143.496,88.472L144.467,87.319L144.953,86.773L145.439,86.166H145.985L146.046,87.198L145.56,87.744L145.074,87.805L145.135,88.837L145.621,88.776L147.26,89.747L148.231,88.594V88.169Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M146.835,90.841H146.895L146.956,91.387L147.442,91.873L147.867,91.326V90.78L147.806,90.234L147.259,89.748L146.349,90.901L146.531,90.841H146.835Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M176.763,42.943H176.702L177.188,42.396V41.91L177.127,41.304V40.818L177.067,40.271L176.52,39.786L176.399,38.754H175.913L174.76,38.329L173.728,37.843L173.242,37.904L172.635,37.418L172.149,37.479H172.089L172.028,36.447L170.935,35.961L169.843,35.476L168.871,35.536L168.811,35.597V36.143L168.932,37.175V37.661V37.722L167.9,37.236H167.839L167.475,38.875V39.361L166.989,39.422L166.443,38.936H166.382L165.35,39.543L165.472,40.575V41.061L164.986,41.121L163.954,40.696H163.408H163.347L162.922,41.85V42.335L161.404,43.489L160.979,44.035L160.433,44.642L161.04,45.067L161.586,46.099L161.161,46.706V47.192L160.19,48.285L159.158,48.892L159.219,49.985L159.279,50.531L158.794,51.017L157.823,51.624L156.79,52.231L156.851,53.324L156.366,54.416L155.88,54.902L155.941,55.995L156.001,56.48L156.062,57.027L155.637,58.605V59.151L154.666,59.758L154.18,60.305L154.787,61.337V61.883L154.848,62.369L155.455,63.401L154.969,64.008L153.877,64.069H153.391L152.905,64.615L152.359,65.161L151.873,65.222V64.736V64.676L150.841,65.283L150.356,65.89L149.87,66.922L149.931,68.015L149.991,69.047L150.113,70.079L149.627,70.686L149.688,71.718V72.203L150.295,72.689L150.356,73.721L150.416,74.328L149.931,75.36L149.991,75.846V76.392L150.598,76.938L151.145,77.364L151.205,77.971L151.266,78.942V79.488L149.809,80.642L149.87,81.188L150.416,82.159L150.477,82.706V83.191L150.598,84.83L150.234,86.409L149.809,86.47H149.688H149.141L148.656,87.016L148.716,87.562L148.231,88.169V88.594L147.259,89.748L147.806,90.233L147.867,90.78V91.326L147.442,91.872H147.381L146.895,91.387L146.835,90.84H146.531L146.349,90.901L146.41,91.933L146.47,92.419L146.531,93.512V94.058L146.592,94.544L146.652,95.09V95.576H147.199L147.259,96.608L147.684,96.061L148.292,96.547L147.806,97.64L147.867,98.125V98.672L147.927,99.157L147.988,100.25L148.049,100.796L148.656,101.282L148.109,101.828L148.17,102.86L148.777,103.346L149.263,103.285L149.384,104.925L150.538,105.349V105.835L150.598,106.381L150.052,106.442L150.113,106.928L149.566,107.474L149.627,108.021V108.567L150.234,108.992L150.295,109.599L150.841,110.024L150.902,110.57L150.963,111.602L150.477,112.209L151.023,112.634L151.509,112.088L152.116,112.574L153.634,111.967L154.18,112.452L154.666,112.391L155.273,112.331L155.212,111.845L155.151,110.813L155.091,109.72L155.516,109.174H156.062L156.608,109.113L157.094,108.506L156.548,108.567L157.033,108.021L158.065,107.414L159.158,107.899V108.385L159.704,108.324L160.736,108.263L161.283,108.203L161.222,107.171L161.161,106.685L162.133,105.046L162.011,104.014L162.497,103.468L163.043,102.86L162.983,102.375H162.436L162.922,101.282L163.408,100.736L162.861,100.25L162.801,99.704L162.74,99.218L163.225,98.611V98.065L163.65,97.033V96.547L163.59,95.94L162.983,94.968L164.015,94.362L162.376,93.997L162.861,93.39L163.954,93.876L164.5,93.815L165.472,92.722L165.411,92.176V91.63H165.897L166.443,91.569L166.989,92.055L167.475,90.962L167.961,90.415L168.932,89.808L167.839,89.383V88.837L168.386,88.23H168.871L169.782,86.652L169.235,86.105L169.175,85.073L168.143,85.62V85.134L168.082,84.588L167.475,84.102L166.989,83.677L166.929,83.131L166.868,82.584L165.836,83.191L165.289,82.706L164.743,82.159L164.622,81.188L164.075,80.702L164.015,80.156L163.529,79.67L164.015,79.61L164.5,79.063L164.44,78.031L164.379,77.485L164.318,76.453L164.865,76.392L164.257,75.967L164.743,75.36L164.682,74.328L165.168,73.782L165.107,72.689L163.529,72.811L163.468,71.778L163.954,71.232L165.047,71.657L165.532,71.111L166.079,71.05L166.504,70.504H167.111L168.082,69.896L167.536,69.411L168.507,68.257L167.961,67.772L168.993,67.711L169.478,66.618L169.964,67.104L170.996,66.497L170.45,66.011L170.935,65.465L171.482,65.404L172.514,64.797L172.392,63.765V63.219L172.332,62.733L172.817,61.64H173.303L173.728,60.548L174.274,59.94L173.667,59.516V58.969L173.546,57.876L173.485,56.845L173.971,56.298V55.752L173.91,55.266L174.396,54.659L175.488,54.598L175.428,53.506L175.306,52.534V51.988H175.792L176.338,52.413L177.309,51.32L177.917,51.806H178.463L178.949,51.745L179.495,52.231L179.981,51.684L179.859,50.592L179.313,50.106L178.766,49.135L178.706,48.588L178.645,47.556L178.584,46.464L179.009,45.917L178.524,45.432L178.463,44.946L177.917,44.4L177.856,43.914L177.795,43.368V42.882L176.763,42.943Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M197.039,75.724L197.525,74.692L198.011,74.085L198.436,73.538L198.921,72.385L199.225,71.353L199.346,70.867V71.232V71.353L199.893,71.292L200.378,70.746L199.832,70.26L200.317,69.714L200.257,68.621L200.742,68.135L201.228,67.528L201.167,67.043L201.592,65.889L202.624,65.282L203.11,64.25L202.503,63.218L201.957,62.733L200.317,62.308L198.678,61.883L198.132,61.397L197.586,60.972L197.039,61.033L196.432,60.001H196.493L196.979,59.94L197.464,59.879L198.011,59.272L197.95,58.787V58.301L197.343,57.815L197.282,57.269L196.25,57.33V56.783L196.189,56.298L195.4,55.994L195.34,55.933L195.097,55.812L196.129,55.266L195.582,54.78L195.522,54.234L195.036,54.841L194.429,54.294V53.809L194.368,53.262V52.716L193.883,52.352L193.761,52.23V51.745L193.822,51.684L194.247,51.198L193.64,50.166L194.125,49.559V49.316L194.065,49.074V48.527L193.458,47.556L192.851,46.524L192.304,45.977L191.211,45.613L191.151,45.067L190.604,44.581L189.997,43.549L189.937,42.517L189.876,42.031L189.815,40.999L190.301,40.392L190.24,39.907L190.179,38.814L189.087,37.843L188.115,37.478L187.994,37.418V37.296L187.933,36.871L187.387,36.386L186.841,35.9L186.233,35.414V34.929L186.719,34.322L186.658,33.775L187.144,33.229H186.962L186.78,33.29H186.658L186.598,32.743L186.537,32.258V31.772L186.476,30.679L186.962,30.072L186.901,29.587L186.355,29.101L185.748,28.615H185.687H185.262L183.623,28.251L184.109,27.158H183.866L183.562,27.219L183.077,27.705L182.045,28.372L181.498,28.433H181.013L180.527,28.979L180.709,31.104L180.223,32.197L180.284,32.682V33.168L180.345,33.715L179.859,34.261L179.374,35.414L179.434,35.9L178.888,35.961L177.917,36.507L177.31,35.536L176.824,35.597H176.763L176.277,36.143L174.699,36.264L174.153,35.779H173.971H173.606L173.364,35.839H173.06L172.453,34.807V34.261L171.36,33.836L170.814,33.35H170.571L170.328,33.411H170.267L169.843,34.443L169.903,35.475L170.996,35.961L172.028,36.446L172.149,37.478L172.635,37.418L173.242,37.903L173.728,37.843L174.821,38.328L175.913,38.753H176.46L176.52,39.785L177.067,40.271L177.127,40.817L177.188,41.303V41.849L177.249,42.396L176.763,42.942L177.795,42.881L177.856,43.367V43.913L177.917,44.399L178.463,44.945L178.524,45.431L179.07,45.917L178.584,46.463L178.645,47.556L178.766,48.588V49.134L179.374,50.105L179.92,50.591L179.981,51.684L180.527,51.623L181.073,52.109L182.166,52.048L182.227,52.595L182.712,53.019L182.773,53.566V54.051L182.895,55.144V55.69L183.502,56.116V56.662L182.955,56.723H182.47L181.984,56.783V57.33L181.073,58.969V59.454L180.648,60.547L180.163,61.154L179.191,62.247V62.733L179.252,63.279L178.22,63.886L177.734,64.432L177.249,64.979V65.525L177.37,66.618L176.338,67.164L175.792,66.678L175.245,66.739L175.306,67.771L174.335,68.925L174.396,69.957L174.456,70.442L175.003,70.928L175.124,71.96L174.578,72.567L174.638,73.114L175.731,73.538L175.792,74.024L175.853,75.117L175.974,76.634L176.035,77.727L175.003,78.334L175.063,79.366L175.124,79.913L176.277,81.37L177.856,81.248L178.402,81.795L179.495,81.734L180.041,81.673L180.648,82.705L180.709,83.676L181.255,84.223L181.802,84.709L183.38,84.587L183.927,84.526L184.352,83.434L184.837,82.887L185.444,83.919L185.93,83.312L186.416,82.766L187.448,82.22L188.965,81.552H189.512L190.058,81.491L189.997,80.945L189.937,80.398L190.483,79.852L191.09,80.884L191.515,80.277L192.547,79.731L193.033,78.638L193.579,79.123L194.672,79.063L195.157,79.002L195.643,78.456L196.129,77.181L196.554,76.27L197.039,75.724Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M212.823,171.52L212.277,171.581L211.791,171.459H211.306L210.213,171.763L209.606,171.399L208.695,171.459L208.088,171.52L207.481,170.974L205.478,171.702L204.931,171.945L204.264,173.281L203.05,174.495L201.896,174.98L201.593,175.587L200.439,175.83L199.468,175.345L198.921,175.405L197.768,175.466L197.222,175.527L196.311,175.587L195.158,175.648L194.368,175.284L193.64,175.345L192.486,175.466L191.576,175.527L190.908,175.223L190.787,174.737L190.665,174.616V174.313L190.483,173.705L190.301,173.584V173.341L190.18,173.22L189.39,174.13L188.844,174.677L188.662,174.737L188.601,174.798H188.358L188.965,175.77L189.026,176.802L189.573,177.287L189.633,177.834L190.18,177.773L190.665,177.712L191.272,178.258L190.787,178.744V179.291L189.755,179.898L189.815,180.444L189.876,181.476H189.573V181.537L189.33,181.597L189.451,182.569V183.054L189.512,184.086L190.665,184.633L191.212,185.058L191.758,185.543L192.304,186.029L192.851,186.515L192.911,187.061L192.972,187.547L192.486,188.154L193.397,188.518H193.519L194.611,188.457L195.643,188.397L196.675,188.336L197.222,188.822L197.889,188.154L197.707,187.607L198.072,187.425L199.164,186.94L199.589,187.182H199.893L200.136,186.879H200.318L200.803,187.486L201.35,187.425L201.41,187.972L201.653,187.85L202.2,187.486L202.442,187.365H202.928L203.414,187.304L204.385,187.243L204.81,186.818H204.871L204.992,186.636L206.024,186.575L206.995,186.515L207.117,186.393L207.056,186.029L206.631,185.483L206.571,184.936L207.481,184.511L207.785,184.572L207.724,184.511L207.967,184.451V184.39L208.452,183.844L208.392,183.358L208.938,183.297H209.302L209.788,182.751H209.849L209.909,182.69L210.456,182.629L211.002,182.569H211.549V183.115H212.095L213.127,182.994L214.523,182.933V182.447L214.402,181.355L213.916,181.415L213.309,180.93V180.383L212.216,180.505L211.791,181.051L211.67,180.019V179.473L212.095,178.926L212.641,178.866V178.319L213.127,177.773L212.52,177.287L212.459,176.255H213.005L212.945,175.162L212.884,174.13L213.916,174.07L214.948,174.009L215.434,173.402L215.009,172.552L212.823,171.52Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M193.519,188.519H193.397L193.458,188.579L193.519,188.519Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M216.162,161.746L215.191,161.625H215.13H215.009L214.584,162.232L214.28,162.414L213.916,162.232L213.248,161.928L212.216,162.293L211.609,161.503L211.549,160.471L211.427,159.379V158.893L210.82,158.407V157.861L210.759,157.375H211.306L211.245,156.283L211.184,155.736L210.577,154.765V154.218L209.484,153.794L208.938,153.308L208.331,152.761L208.27,151.729L207.178,151.305L205.903,151.122L206.024,149.301L204.324,148.33L203.778,147.844L203.353,147.784H203.292L202.625,147.601L202.321,147.48H202.139L201.653,147.298L200.196,147.905L200.014,148.512L199.832,148.937L198.861,149.058L198.011,149.119L197.647,149.058L196.554,150.09L196.007,150.515L194.49,149.908L193.883,149.969L192.972,150.151L192.486,150.94L191.515,150.819L190.908,150.515L190.119,150.212L189.148,150.03L187.691,150.151L186.901,150.394L186.719,150.455L187.691,151.669L187.751,152.215L187.266,152.761L186.719,153.308L186.294,153.854L185.748,153.915L185.262,154.461L184.716,155.008L184.837,156.04L184.352,156.647L184.473,158.164L183.987,158.771L183.502,159.379H183.016V159.864L182.531,160.471L182.045,160.957L181.559,161.564L181.074,162.11L180.588,163.142L180.649,163.203L180.224,164.235H180.709L181.256,164.174L181.316,164.721L181.377,165.753L181.438,166.299L181.984,166.724L182.045,167.817L182.47,167.756H183.016H183.138L183.745,168.242L184.23,168.727V169.213L183.805,169.82L183.866,170.306L183.927,170.791H184.352L185.141,170.731H185.323H185.505L185.93,170.67L186.537,171.216L187.569,171.581L187.994,171.095L189.026,170.427V170.488L189.087,170.427L189.694,170.974L189.208,171.52V172.066L189.815,172.006L190.362,172.977L190.18,173.22L190.301,173.341V173.584L190.483,173.705L190.665,174.313L190.726,174.434L190.787,174.737L190.908,175.223L191.576,175.527L192.486,175.466L193.64,175.345L194.368,175.284L195.158,175.648L196.311,175.587L197.222,175.527L197.768,175.466L198.921,175.405L199.468,175.345L200.439,175.83L201.593,175.587L201.896,174.98L203.05,174.495L204.264,173.28L204.931,171.945L205.478,171.702L207.481,170.974L208.088,171.52L208.695,171.459L209.606,171.399L210.213,171.763L211.306,171.459H211.791L212.277,171.581L212.823,171.52L215.009,172.552V172.309V171.824L215.434,170.731L214.887,170.245L214.827,169.213L214.766,168.606L215.252,168.12L215.737,167.513L215.191,167.574L214.705,167.635L214.645,167.088L215.07,165.996V165.51L215.555,164.903L216.162,165.389L216.223,166.481L216.709,166.421L217.194,165.874V165.328L217.68,165.267L218.166,164.174L217.983,162.11L217.68,162.96L216.891,162.05L216.769,161.989L216.526,161.868L216.162,161.746Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M212.095,183.115H211.548V182.568H211.002L210.456,182.629L209.909,182.69L209.849,182.75L209.424,183.297H209.302H208.938L208.392,183.358L208.452,183.843L207.967,184.39V184.45V184.693L208.27,184.815L208.634,185.361L209.12,185.3L209.181,185.847V186.332V186.393V186.454L208.756,186.939L209.059,187.425L208.695,187.486V187.546H208.574L208.27,187.607L208.513,188.032L208.331,189.064L208.27,189.125L208.088,189.368L207.845,189.61L207.906,190.157L207.42,190.703H207.36V190.764L207.906,191.249L208.938,191.189L209.484,191.128L209.97,190.582V191.128L210.031,191.614L209.545,191.674L208.574,192.828L209.12,193.253L209.606,192.706L211.123,192.039L211.609,191.492L212.641,190.885V190.4L213.066,189.853L214.098,189.185L214.584,188.7L215.069,188.093L216.101,187.546L216.587,187.486L217.68,187.425L218.712,187.364L219.258,187.304L219.744,186.757L219.683,185.664L219.137,185.725L218.044,185.239L217.558,185.3L216.405,184.329L215.373,184.39L215.312,183.904V183.358L214.705,182.933H214.523L213.127,182.993L212.095,183.115Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M207.906,190.157L207.845,189.611L208.088,189.368L208.27,189.125L208.331,189.065L208.513,188.033L208.27,187.608L208.574,187.547L208.695,187.486L209.059,187.426L208.756,186.94L209.181,186.394V186.333V185.847L209.12,185.301L208.634,185.362L208.27,184.815L207.967,184.694L207.784,184.572L207.481,184.512L206.57,184.937L206.631,185.483L207.056,186.029L207.117,186.394V186.515H206.995L206.024,186.576L204.992,186.636L204.87,186.819L204.506,187.244H204.385L203.413,187.304L202.928,187.365H202.442L202.199,187.486L201.653,187.851L201.41,187.972L201.349,187.426L200.803,187.486L200.317,186.879H200.135L199.892,187.183L199.771,187.304L199.589,187.183L199.164,186.94L198.071,187.426L197.707,187.608L197.889,188.154L197.221,188.822L196.675,188.336L195.643,188.397L194.611,188.458L193.518,188.518L193.457,188.579H193.579L192.547,189.186L192.061,189.733L191.576,190.34H191.09L190.483,190.4L190.422,190.34L189.936,189.854L189.451,190.461L188.965,191.007L187.933,191.068L186.901,191.736H186.415L185.383,191.797L185.323,191.736L184.776,191.311L184.837,191.857L184.351,191.918L183.805,192.404L184.412,192.829L184.959,193.314L185.019,193.861V194.407L184.534,194.953L184.109,196.046L183.562,196.592H183.077L183.623,197.139L182.652,197.746H182.591H182.53H182.105L181.62,198.292L181.68,198.899V199.385H181.559H181.073L181.62,200.417L182.227,200.903L183.259,200.842V201.328L183.38,202.42L183.987,202.906L184.412,202.36L185.019,202.299L185.505,202.238H186.051L186.112,202.785V203.27L185.08,203.331L184.473,203.392L184.048,203.938L184.594,204.424V204.97L184.655,205.516L185.201,205.456L186.294,205.881L186.78,205.334H187.326L187.812,205.274V205.759L188.844,205.213L189.39,205.152L189.936,205.091L190.969,205.031L191.515,205.516L192.122,205.941L192.061,205.456L193.093,205.395L193.64,205.881L194.186,206.366L195.279,206.791L194.854,207.398L194.307,207.459L193.761,208.005L193.275,207.52L193.215,206.973L192.668,206.488L191.636,207.095L191.576,206.548L191.09,206.609L190.544,206.67H190.058L189.512,206.731L189.026,207.277H188.48L187.933,207.338H187.447L186.901,207.398L186.476,208.005V208.491L187.083,209.523L187.569,209.462L188.115,209.948L188.722,210.494V210.98L188.783,212.012L188.297,212.619L188.904,213.044V213.59L188.965,214.137L189.572,215.169L190.119,215.108L190.665,215.047L191.09,214.501L190.604,214.015L190.544,213.469L190.969,212.923L191.576,213.408L191.636,213.955V214.44L191.697,214.987L192.243,215.472L192.79,215.412L193.336,216.444L193.882,216.383L193.822,215.351L193.761,214.865V214.319L194.186,213.773L194.247,214.805L194.793,214.744L194.854,215.776H195.461L197.586,215.594L197.525,215.108L196.432,214.683L196.371,214.137L195.764,213.651L195.704,212.558L195.218,212.619L194.55,211.648L194.004,211.162L193.943,210.13L194.49,210.069L195.097,210.494V211.041L195.643,211.526H196.189L197.221,210.919L198.193,210.312L198.132,209.219L197.161,209.887H196.614L196.068,209.402L196.007,208.916L196.493,208.309L197.464,207.216L198.011,207.155L198.618,208.187L199.71,208.612L199.65,208.127V207.58L199.528,206.488L199.467,205.456H198.921L197.828,205.031L197.221,204.059L196.736,204.12L195.643,203.634L194.55,203.209L193.457,203.27L192.911,202.785L193.397,202.238L193.882,201.692L193.822,201.145L193.336,201.206L192.729,200.174L193.215,199.567H193.7L194.793,199.446L195.4,199.992L195.461,200.478V201.024L195.946,200.963L196.432,199.871L195.886,199.931L194.247,198.474L193.579,197.442L192.486,197.017L191.94,196.532L191.879,195.5L191.818,194.953V194.468L191.272,193.982L191.697,193.375L192.729,192.768H193.215L193.336,193.8L193.943,194.286L194.49,195.318L195.157,196.35L196.25,196.775L197.282,197.199V196.714L196.189,196.228L195.582,195.743V195.257L195.522,194.711L196.129,195.196L196.675,195.621L197.221,196.167L198.86,196.592L198.8,196.046L198.253,196.107L197.707,195.075L197.1,194.589L197.646,194.528H198.132L198.193,195.5L199.285,195.439L200.317,194.893L200.803,194.346H200.257L199.164,193.921L198.071,193.496L197.525,193.011L196.979,192.464L196.918,191.979L197.464,191.918L199.043,191.797H199.528V191.25L199.467,190.765L199.953,190.157L200.56,190.704L201.046,191.189L202.139,191.068L202.685,190.522L202.078,190.036L202.624,189.975L203.596,189.915L204.688,190.4L206.327,190.279L206.874,190.765L207.359,190.704H207.42L207.906,190.157Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M181.681,198.899L181.62,198.292L182.106,197.746H182.531H182.591H182.652L183.623,197.139L183.077,196.592H183.563L184.109,196.046L184.534,194.953L185.02,194.407V193.861L184.959,193.314L184.413,192.829L183.805,192.404L183.198,191.979L183.138,190.886L182.591,190.947L182.531,189.915V189.368L181.984,188.883L181.924,187.851L181.863,187.304L181.924,187.244L182.349,186.758L182.288,186.211L181.741,185.24L181.681,184.694L180.588,184.755L180.102,184.269L179.495,183.783L178.463,184.39L177.978,184.451L177.492,184.937L177.553,185.483V185.969L177.613,186.515L177.674,187.547L178.22,188.033L178.281,188.518L178.342,189.065L177.795,189.125L177.856,189.672V190.157L177.917,190.643V191.189L177.978,191.736L178.038,192.768L177.553,193.314L177.613,193.861V194.407L178.22,194.893L177.735,195.439V195.925H178.281L178.342,196.471L177.795,196.532L177.856,197.564L178.888,197.442L179.435,197.989L180.527,197.867V198.353L181.134,199.385H181.559H181.681V198.899Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M178.463,184.389L179.495,183.782L180.102,184.268L180.588,184.753L181.68,184.693L181.741,185.239L182.288,186.21L182.348,186.757L181.923,187.242L181.863,187.303L181.923,187.849L181.984,188.881L182.53,189.367V189.913L182.591,190.946L183.137,190.885L183.198,191.978L183.805,192.402L184.352,191.917L184.837,191.856L184.777,191.31L185.323,191.735L185.384,191.795L186.416,191.735H186.901L187.933,191.067L188.965,191.006L189.451,190.46L189.937,189.853L190.422,190.338L190.483,190.399L191.09,190.338H191.576L192.061,189.731L192.547,189.185L193.579,188.578H193.458L193.397,188.517L192.486,188.153L192.972,187.546L192.911,187.06L192.851,186.514L192.304,186.028L191.758,185.543L191.211,185.057L190.665,184.632L189.512,184.086L189.451,183.054V182.568L189.33,181.597V181.475H189.572H189.876L189.815,180.443L189.754,179.897L190.787,179.29V178.743L191.272,178.258L190.665,177.711L190.179,177.772L189.633,177.833L189.572,177.286L189.026,176.801L188.965,175.769L188.358,174.797V174.737H188.662L188.844,174.676L189.39,174.13L190.179,173.219L190.362,172.976L189.815,172.005L189.208,172.066V171.519L189.694,170.973L189.087,170.427L189.026,170.487L188.055,171.094L187.63,171.641L187.569,171.58L186.537,171.216L185.93,170.669L185.505,170.73H185.444H185.141L184.352,170.791H183.927L183.866,170.305L183.805,169.819L184.23,169.212V168.727L183.744,168.241L183.137,167.755H183.016H182.652L182.045,167.816L181.984,166.723L181.438,166.298L181.377,165.752L181.316,164.72L181.255,164.174L180.709,164.234H180.223L180.648,163.202L180.588,163.142L179.92,163.081L179.131,162.838L178.524,162.899H177.977H177.917L177.977,163.384L177.188,163.567L177.067,163.749L176.399,163.142L175.245,163.567L174.517,164.174L174.092,164.356L173.181,164.417L172.756,164.781L172.21,165.449L171.664,166.056L171.36,166.238L170.268,165.995L169.782,166.056H169.235L168.75,166.116L168.203,165.631L167.657,165.691L167.596,165.145H167.05L166.504,164.659L165.957,164.234L165.411,163.749L164.804,163.263V162.717L164.743,162.17L164.197,161.685L163.59,161.199L163.408,160.774L162.193,160.531L162.133,160.592L161.465,161.199L160.858,161.078L160.372,161.26L159.947,161.442L159.522,161.503H159.462H159.401L158.551,161.563L157.762,161.624H157.337H157.215L156.851,162.413L156.912,162.595L156.244,162.474L155.516,162.838L155.394,163.324L154.787,162.899H154.241L153.877,162.96H153.694L153.027,162.231L152.602,162.292L151.691,162.656H151.57L151.448,163.263L151.63,163.688L151.813,164.174L151.873,164.599L151.691,164.781L150.963,165.266L151.752,165.813L151.813,166.541L151.934,166.602L152.42,166.723L152.845,166.177L152.905,166.723L152.966,167.209V167.755L152.541,168.362H151.995L151.509,168.909L152.055,169.394L152.116,169.941L152.177,170.973L152.723,171.459L152.784,172.005L153.33,172.491L153.755,171.398L154.241,170.851L154.726,169.759L154.666,169.212L155.212,169.152L155.759,169.698L156.366,170.184L156.912,170.669L157.458,171.641L157.033,172.733L157.094,173.28L157.155,174.312L158.187,174.251L158.247,174.797L158.794,174.737L159.28,175.162L159.887,175.708L158.308,175.829L158.855,176.315L159.401,176.801L160.069,177.833L160.554,177.772L161.708,178.743V179.229L162.801,179.715L163.833,179.108L164.379,179.047L165.472,180.079L166.625,180.99L167.232,182.022L168.264,181.961L168.871,182.932L169.964,183.418H170.51L171.117,184.328H171.603L172.149,184.875L173.242,184.753H173.728L174.335,185.178L174.396,185.785L174.881,186.21L175.428,186.15L175.549,187.182L176.581,187.121V187.667L177.127,187.607H177.674L177.552,186.575V186.028L177.492,185.543V184.996V184.935L177.977,184.45L178.463,184.389Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M99.24,182.023L99.847,182.205L100.333,182.266H100.697L100.879,182.084L101.122,181.78V180.991L100.576,180.323L100.151,180.384L99.544,180.566L99.179,180.748L98.937,181.112V181.173L99.24,182.023Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M134.936,158.891L135.3,159.316L135.725,159.256L136.211,159.134L136.332,158.77L136.271,157.981L135.543,157.495L135.421,157.617L134.875,157.981L134.936,158.527V158.891Z"
+        android:fillColor="#3F3F43"/>
+    <path
+        android:pathData="M95.968,83.755V35.02H23.036V83.755H95.968Z"
+        android:fillColor="#004996"/>
+    <path
+        android:pathData="M95.968,83.755V35.02H23.036V83.755H95.968Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#00000000"
+        android:strokeColor="#000000"/>
+    <path
+        android:pathData="M59.5,41.787L59.196,42.701H58.217L59.027,43.276L58.723,44.19L59.5,43.615L60.31,44.19L60.006,43.276L60.783,42.701H59.804L59.5,41.787Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M51.396,43.986L51.092,44.9H50.113L50.924,45.475L50.62,46.389L51.396,45.814L52.173,46.389L51.869,45.475L52.679,44.9H51.7L51.396,43.986Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M45.487,49.943L45.183,50.857H44.204L45.015,51.432L44.711,52.38L45.487,51.805L46.264,52.38L45.96,51.432L46.771,50.857H45.791L45.487,49.943Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M43.259,58.065L42.955,58.979H41.976L42.752,59.555L42.449,60.468L43.259,59.893L44.035,60.468L43.732,59.555L44.542,58.979H43.563L43.259,58.065Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M45.454,66.188L45.15,67.136H44.171L44.947,67.712L44.643,68.625L45.454,68.05L46.23,68.625L45.926,67.678L46.737,67.136H45.758L45.454,66.188Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M51.396,72.145L51.092,73.092H50.113L50.89,73.668L50.586,74.581L51.396,74.006L52.173,74.581L51.869,73.668L52.646,73.092H51.7L51.396,72.145Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M59.5,74.311L59.196,75.258H58.217L59.027,75.834L58.723,76.747L59.5,76.172L60.31,76.747L60.006,75.8L60.783,75.258H59.804L59.5,74.311Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M67.638,43.986L67.908,44.9H68.887L68.11,45.475L68.414,46.389L67.638,45.814L66.827,46.389L67.131,45.475L66.354,44.9H67.334L67.638,43.986Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M73.547,49.943L73.817,50.857H74.796L74.019,51.432L74.323,52.38L73.547,51.805L72.736,52.38L73.04,51.432L72.263,50.857H73.243L73.547,49.943Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M75.775,58.065L76.079,58.979H77.058L76.247,59.555L76.551,60.468L75.775,59.893L74.964,60.468L75.268,59.555L74.492,58.979H75.471L75.775,58.065Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M73.58,66.188L73.884,67.136H74.863L74.053,67.712L74.357,68.625L73.58,68.05L72.77,68.625L73.074,67.678L72.297,67.136H73.276L73.58,66.188Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M67.638,72.145L67.941,73.092H68.921L68.11,73.668L68.414,74.581L67.638,74.006L66.861,74.581L67.131,73.668L66.354,73.092H67.334L67.638,72.145Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M222.567,109.981C222.172,116.249 216.767,120.941 210.593,120.569C204.419,120.198 199.645,114.893 200.041,108.626C200.436,102.358 205.841,97.667 212.016,98.038C218.19,98.41 222.963,103.715 222.567,109.981Z"
+        android:strokeWidth="5.643"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"/>
+    <path
+        android:pathData="M273.252,114.043C271.097,148.823 241.577,175.237 207.407,173.142C173.235,171.047 147.2,141.226 149.356,106.446C151.51,71.667 181.031,45.253 215.201,47.348C249.372,49.443 275.408,79.263 273.252,114.043Z"
+        android:strokeAlpha="0.25"
+        android:strokeWidth="5.643"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
+        android:fillAlpha="0.25"/>
+    <path
+        android:pathData="M290.147,114.065C287.405,157.67 249.833,190.786 206.344,188.16C162.853,185.533 129.717,148.146 132.461,104.541C135.203,60.938 172.775,27.821 216.264,30.448C259.754,33.074 292.891,70.461 290.147,114.065Z"
+        android:strokeAlpha="0.1"
+        android:strokeWidth="5.643"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
+        android:fillAlpha="0.1"/>
+    <path
+        android:pathData="M306.416,115.048C303.108,167.651 257.783,207.6 205.32,204.432C152.855,201.263 112.882,156.162 116.192,103.559C119.5,50.957 164.825,11.008 217.288,14.176C269.751,17.345 309.726,62.446 306.416,115.048Z"
+        android:strokeAlpha="0.05"
+        android:strokeWidth="5.643"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
+        android:fillAlpha="0.05"/>
+    <path
+        android:pathData="M256.357,113.022C254.788,138.471 233.307,157.775 208.468,156.244C183.63,154.713 164.682,132.917 166.251,107.468C167.82,82.019 189.302,62.715 214.14,64.245C238.978,65.777 257.926,87.573 256.357,113.022Z"
+        android:strokeAlpha="0.4"
+        android:strokeWidth="5.643"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
+        android:fillAlpha="0.4"/>
+    <path
+        android:pathData="M239.274,110.903C238.294,126.45 224.896,138.211 209.443,137.278C193.988,136.346 182.167,123.063 183.146,107.516C184.125,91.969 197.523,80.208 212.977,81.141C228.431,82.073 240.252,95.356 239.274,110.903Z"
+        android:strokeAlpha="0.8"
+        android:strokeWidth="5.643"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
+        android:fillAlpha="0.8"/>
+    <path
+        android:pathData="M197.66,205.46C196.84,196.26 196.26,187.05 195.15,177.86C192.83,158.73 189.65,139.72 186.86,120.65C177.15,119.4 170.39,118.57 170.39,118.57C170.39,118.57 152.52,115.72 152.27,123.91C152.02,132.1 172.17,136.25 172.17,136.25H173.8L175.24,148.16C175.24,148.16 159.51,167.16 160.64,173.5C161.77,179.84 171.64,177.08 171.64,177.08C171.64,177.08 165.84,194.37 170.29,198.93C173.55,202.28 176.84,200.81 176.84,200.81C176.84,200.81 168.59,208.29 172.31,214.95C173.94,217.88 183.55,218.73 183.55,218.73L199.08,218.24C198.055,214.06 197.585,209.763 197.68,205.46"
+        android:fillColor="#F7B994"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M203,253.3C197.133,254.12 191.711,250.035 190.88,244.17L170.68,100.44C169.86,94.574 173.945,89.151 179.81,88.32L237.42,80.23C243.288,79.405 248.714,83.492 249.54,89.36L269.74,233.08C270.559,238.95 266.469,244.374 260.6,245.2L203,253.3Z"
+        android:fillColor="#1E1E1F"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M261,245.15L203.39,253.25C197.522,254.069 192.101,249.978 191.28,244.11L171.08,100.39C170.681,97.572 171.419,94.71 173.132,92.437C174.844,90.163 177.391,88.664 180.21,88.27L237.81,80.17C243.676,79.35 249.099,83.435 249.93,89.3L270.12,233C270.525,235.821 269.791,238.688 268.08,240.967C266.369,243.246 263.822,244.751 261,245.15Z"
+        android:strokeWidth="4.03"
+        android:fillColor="#00000000"
+        android:fillType="evenOdd"
+        android:strokeColor="#4A4A4A"/>
+    <path
+        android:pathData="M314.33,191.85C314.33,191.85 306.68,189.85 298.87,178.19C291.06,166.53 283.87,138.56 278.72,135.57C278.72,135.57 276.83,111.14 264.29,109.3C264.29,109.3 260.29,91.61 258.99,91.57C257.69,91.53 250.85,91.36 248.79,99.99C246.73,108.62 249.39,124.47 257.58,129.07C257.58,129.07 271.93,230.29 271.95,230.59C272.35,238.74 271.54,238.32 270.44,241.1C280.2,243.56 332.22,259.25 375,272.25V205.48L314.33,191.85Z"
+        android:fillColor="#F7B994"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M219.944,165.41m-12.581,1.768a12.705,12.705 127,1 1,25.163 -3.536a12.705,12.705 127,1 1,-25.163 3.536"
+        android:strokeWidth="3.388"
+        android:fillColor="#00000000"
+        android:strokeColor="#83D2F2"/>
+    <group>
+      <clip-path
+          android:pathData="M188.375,141.621L219.944,165.41L243.733,133.841L251.514,189.199L219.944,165.41L196.156,196.979L188.375,141.621Z"
+          android:fillType="evenOdd"/>
+      <path
+          android:pathData="M219.944,165.41m-19.291,2.711a19.481,19.481 127,1 1,38.583 -5.422a19.481,19.481 127,1 1,-38.583 5.422"
+          android:strokeAlpha="0.6"
+          android:strokeWidth="3.388"
+          android:fillColor="#00000000"
+          android:strokeColor="#95B9CB"
+          android:fillAlpha="0.6"/>
+      <path
+          android:pathData="M219.945,165.41m-26.001,3.654a26.257,26.257 127,1 1,52.003 -7.309a26.257,26.257 127,1 1,-52.003 7.309"
+          android:strokeAlpha="0.24"
+          android:strokeWidth="3.388"
+          android:fillColor="#00000000"
+          android:strokeColor="#95B9CB"
+          android:fillAlpha="0.24"/>
+    </group>
+  </group>
+</vector>
diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_illustration_ppa.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_illustration_ppa.xml
new file mode 100644
index 0000000000000000000000000000000000000000..edc34fc1a2352e665d9ccfa3fe29c376fb788c8d
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/drawable-night/ic_illustration_ppa.xml
@@ -0,0 +1,157 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="360dp"
+    android:height="185dp"
+    android:viewportWidth="360"
+    android:viewportHeight="185">
+  <path
+      android:pathData="M230.919,133.645C273.583,133.645 292.169,106.736 332.003,111.83C341.472,113.041 346.496,116.824 360,127.435V157.207L0,159.288V125.288C12,120.288 8,122.288 21,125.288C64.498,135.326 115.003,109.323 138.503,108.413C140.698,108.328 142.815,108.288 144.85,108.288C195.624,108.284 198.052,133.645 230.919,133.645Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path
+        android:pathData="M0,133H360V166H0V133Z"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M106.597,149.828C70.681,149.828 55.034,132.275 21.5,135.598C13.529,136.388 3.407,138.856 -7.961,145.777V165.197L367.097,166.288V152.224C365.015,151.253 362.939,150.423 360.974,149.816C360.974,149.816 323.18,137.903 281.325,148.096C245.476,156.835 204.18,133.963 184.396,133.37C182.549,133.314 180.766,133.288 179.053,133.288C136.31,133.286 134.266,149.828 106.597,149.828Z"
+        android:fillColor="#282828"
+        android:fillType="evenOdd"/>
+  </group>
+  <path
+      android:pathData="M288.671,126.16C288.671,126.16 274.869,106.905 284.581,104.519C294.294,102.134 293.612,114.062 300.088,109.631C306.563,105.201 295.161,84.554 310.573,82.508C329.624,79.981 315.179,99.89 313.836,104.783C313.55,105.823 313.854,106.953 314.668,107.661C316.328,109.105 321.699,109.474 329.737,104.519C342.177,96.851 333.316,132.465 309.971,133.487C309.971,133.487 295.317,133.828 288.671,126.16Z"
+      android:fillColor="#333337"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M307.322,133.593C307.311,133.507 307.001,124.844 306.717,115.255C306.333,102.35 308.349,91.905 310.899,88.249L311.408,88.767C305.431,97.337 308.604,133.183 308.646,133.526L307.322,133.593Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M307.551,127.486C307.507,127.472 303.058,126.08 298.401,123.455C294.085,121.021 288.7,116.998 287.557,111.65L287.859,111.36C289.991,121.341 307.37,126.242 307.546,126.296L307.551,127.486Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M307.487,124.101L307.375,122.934C307.545,122.881 324.4,118.143 327.204,110.782L327.573,111.094C326.364,114.268 322.611,117.423 316.419,120.471C311.827,122.732 307.53,124.087 307.487,124.101Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M38.992,43.291C33.473,43.441 30.315,51.868 30.051,55.87C28.926,72.999 19.154,85.217 20.058,111.9C20.652,129.383 26.37,147.347 32.418,150.491C44.063,156.547 51.876,143.06 53.191,130.481C54.506,117.903 55.294,99.607 46.617,76.738C41.8,64.039 50.043,42.989 38.992,43.291Z"
+      android:fillColor="#333337"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M38.556,152.643C37.528,147.893 35.22,124.088 35.159,98.318C35.121,82.671 35.911,66.293 38.319,53.001L38.967,53.127C36.569,66.376 35.78,82.71 35.818,98.318C35.877,124.035 38.176,147.764 39.2,152.493L38.556,152.643Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M35.845,122.732C35.869,122.69 43.451,109.301 44.619,103.905L45.263,104.056C44.072,109.557 36.438,123.04 36.414,123.083L35.845,122.732Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M35.228,92.462C35.211,92.439 28.679,84.119 29.118,77.912L29.716,77.964C29.298,83.889 35.667,91.998 35.684,92.02L35.228,92.462Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M63.111,153.572C68.352,149.666 72.911,142.819 73.59,126.782C74.268,110.745 72.938,106.812 69.188,105.411C65.439,104.011 62.491,106.006 60.388,111.189C58.285,116.374 57.405,121.803 55.357,123.548C53.309,125.292 41.595,135.013 44.896,146.028C48.198,157.043 57.713,156.152 63.111,153.572Z"
+      android:fillColor="#333337"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M51.709,154.603C53.75,151.785 58.164,143.848 61.771,134.759C64.191,128.662 66.251,122.042 66.993,116.092L66.483,116.026C65.745,121.934 63.698,128.51 61.293,134.571C57.703,143.617 53.318,151.506 51.292,154.302L51.709,154.603Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M58.758,141.558C58.366,141.853 66.87,138.414 69.272,133.819L68.832,133.585C66.52,138.007 58.896,140.92 58.874,140.929L58.758,141.558Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M54.612,149.963C54.603,149.943 51.467,142.964 51.726,138.299L51.252,138.288C50.986,143.094 54.174,150.188 54.183,150.208L54.612,149.963Z"
+      android:fillColor="#3F3F43"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M267.985,7.146C265.714,7.606 262.907,9.68 263.002,10.287C263.035,10.499 270.118,10.299 277.398,10.287C288.375,10.27 293.863,10.287 294.562,10.287H308.403C309.484,10.287 307.501,6.725 306.742,6.099C305.429,5.017 303.437,4.542 301.759,5.052C299.461,5.75 299.504,7.764 297.33,8.193C295.911,8.473 294.387,7.913 293.454,7.146C292.032,5.977 292.623,4.855 291.239,3.482C290.27,2.52 289.006,2.078 287.364,2.435C285.447,2.851 285.703,2.958 282.934,5.052C281.962,5.788 280.912,7.901 279.059,8.193C274.03,8.986 271.932,6.346 267.985,7.146Z"
+      android:fillColor="#282828"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M7.75,21.288H37.201C36.069,19.735 34.948,19.245 34.133,19.085C32.131,18.69 31.285,20.154 27.998,20.186C27.414,20.192 25.971,20.194 24.316,19.635C23.335,19.304 23.308,19.122 21.862,18.534C20.667,18.048 19.619,17.621 18.181,17.432C17.083,17.288 16.259,17.348 15.113,17.432C13.812,17.528 13.009,17.593 12.045,17.983C11.33,18.273 10.878,18.599 10.205,19.085C9.555,19.554 8.669,20.269 7.75,21.288Z"
+      android:fillColor="#282828"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M95.787,11.288H58.854C60.273,9 61.68,8.277 62.701,8.041C65.213,7.46 66.272,9.617 70.396,9.664C71.129,9.673 72.938,9.676 75.012,8.853C76.243,8.364 76.277,8.095 78.09,7.229C79.588,6.513 80.904,5.884 82.706,5.605C84.084,5.393 85.117,5.482 86.554,5.605C88.185,5.746 89.191,5.842 90.401,6.417C91.299,6.844 91.865,7.324 92.71,8.041C93.524,8.732 94.635,9.786 95.787,11.288Z"
+      android:fillColor="#282828"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M238,37.288H196C195.448,37.288 195,36.84 195,36.288C195,35.736 195.448,35.288 196,35.288H238C238.552,35.288 239,35.736 239,36.288C239,36.84 238.552,37.288 238,37.288Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M230,44.288H196C195.448,44.288 195,43.84 195,43.288C195,42.736 195.448,42.288 196,42.288H230C230.552,42.288 231,42.736 231,43.288C231,43.84 230.552,44.288 230,44.288Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M224,30.288H196C195.448,30.288 195,29.84 195,29.288C195,28.736 195.448,28.288 196,28.288H224C224.552,28.288 225,28.736 225,29.288C225,29.84 224.552,30.288 224,30.288Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M247.705,48H191.294C188.922,48 187,45.621 187,42.684V22.316C187,19.379 188.922,17 191.294,17H247.705C250.076,17 252,19.379 252,22.316V42.684C252,45.621 250.076,48 247.705,48Z"
+      android:fillColor="#657887"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M196.689,44.594L188.167,51.835C187.678,52.251 187,51.835 187,51.12V43.879C187,43.394 187.33,43 187.738,43H196.26C196.978,43 197.273,44.097 196.689,44.594Z"
+      android:fillColor="#657887"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M158.927,46.469C158.927,46.469 166.919,53.947 169.944,55.966C172.45,57.64 180.079,61.146 180.079,61.146L177.161,65.083C177.161,65.083 169.899,63.465 167.664,62.424C165.372,61.357 159.307,56.726 159.307,56.726L158.927,46.469Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path
+        android:pathData="M117.894,171.26H136.354V184.924H117.894V171.26Z"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M120.964,171.26L118.078,176.74C117.681,177.495 117.946,178.429 118.682,178.859C122.17,180.892 131.703,186.088 135.819,184.688C136.396,184.491 136.538,183.737 136.089,183.324C133.464,180.908 125.3,173.198 125.932,171.304L120.964,171.26Z"
+        android:fillColor="#4A4A4A"
+        android:fillType="evenOdd"/>
+  </group>
+  <path
+      android:pathData="M120.698,171.77L126.278,172.513L153.875,108.792L139.503,79.926L139.336,119.436C139.336,119.436 126.518,144.915 124.472,154.911C122.453,164.779 120.698,171.77 120.698,171.77Z"
+      android:fillColor="#B96161"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M138.6,70.709L160.256,70.998C160.256,70.998 179.024,165.129 186.532,171.481L182.49,174.369C182.49,174.369 159.39,142.896 161.411,122.683C161.411,122.683 132.825,76.773 138.6,70.709Z"
+      android:fillColor="#C66A61"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M153.883,34.496L152.492,24.656C152.492,24.656 158.542,24.925 158.402,16.485C158.376,14.921 158.267,12.244 156.823,10.215L151.289,8.445L147.787,19.63L144.457,33.204L150.354,36.956L154.418,36.849L153.883,34.496Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M182.49,174.369L183.381,180.499C183.503,181.342 184.267,181.942 185.115,181.856C189.132,181.448 199.898,180.04 202.402,176.486C202.753,175.988 202.424,175.295 201.818,175.225C198.274,174.816 187.136,173.385 186.532,171.482L182.49,174.369Z"
+      android:fillColor="#4A4A4A"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M133.89,83.725L135.397,65.307L143.183,67.53L137.718,86.474C137.718,86.474 136.344,97.468 131.73,94.228C126.004,90.208 133.694,85.983 133.89,83.725Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M152.935,34.451C150.849,36.797 148.529,32.46 143.966,33.633C139.653,34.742 135.807,62.287 135.397,65.305C135.374,65.481 135.362,65.573 135.362,65.573C136.538,68.868 141.947,67.811 142.993,67.573L142.225,71.015L160.257,70.997C167.291,51.521 155.021,32.104 152.935,34.451Z"
+      android:fillColor="#B1DAEF"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M158.412,16.555C158.412,16.555 162.76,13.748 159.872,6.261C159.872,6.261 159.23,3.053 154.738,3.16C154.738,3.16 147.573,-3.257 140.835,2.197C134.097,7.651 138.696,13.106 138.696,13.106C138.696,13.106 129.712,21.234 132.813,32.25C132.813,32.25 136.129,39.416 139.979,36.956C143.829,34.496 143.616,39.844 145.647,32.678C147.68,25.512 151.209,26.582 149.819,14.496C149.819,14.496 154.631,14.817 155.701,9.898C155.701,9.898 158.253,11.1 158.412,16.555Z"
+      android:fillColor="#663014"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M174.341,67.847C175.252,68.352 178.71,69.325 179.852,69.554C180.13,69.609 180.827,69.645 181.118,69.093C182.736,66.026 187.601,58.544 187.904,58.094C188.234,57.604 188.204,57.472 187.776,57.193C187.491,57.008 183.608,55.917 182.479,55.589C182.095,55.477 181.762,56.088 181.641,56.233C179.761,58.478 174.639,66.238 174.311,66.729C173.914,67.322 173.971,67.642 174.341,67.847Z"
+      android:fillColor="#4A4A4A"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M185.209,61.816C186.749,61.493 184.794,64.428 184.052,65.474C183.373,66.43 182.761,67.38 182.299,67.156C181.837,66.932 182.211,65.432 182.786,64.247C183.36,63.062 184.272,62.013 185.209,61.816Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M202,39.773C202.164,39.773 202.398,39.664 202.57,39.563C206.968,36.75 209.757,33.477 209.757,30.148C209.757,27.383 207.859,25.43 205.406,25.43C203.882,25.43 202.71,26.273 202,27.563C201.304,26.281 200.117,25.43 198.593,25.43C196.14,25.43 194.242,27.383 194.242,30.148C194.242,33.477 197.031,36.75 201.437,39.563C201.601,39.664 201.835,39.773 202,39.773Z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M218.5,27L244.5,27A1.5,1.5 0,0 1,246 28.5L246,28.5A1.5,1.5 0,0 1,244.5 30L218.5,30A1.5,1.5 0,0 1,217 28.5L217,28.5A1.5,1.5 0,0 1,218.5 27z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M218.5,34L236.5,34A1.5,1.5 0,0 1,238 35.5L238,35.5A1.5,1.5 0,0 1,236.5 37L218.5,37A1.5,1.5 0,0 1,217 35.5L217,35.5A1.5,1.5 0,0 1,218.5 34z"
+      android:fillColor="#ffffff"/>
+</vector>
diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_submission_illustration_other_warning.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_submission_illustration_other_warning.xml
index 9463e9389e3d72b1700b24a47aa9e889ef9a7bec..dd183cd21f0a814ca8a91d0ec0717acd05610a97 100644
--- a/Corona-Warn-App/src/main/res/drawable-night/ic_submission_illustration_other_warning.xml
+++ b/Corona-Warn-App/src/main/res/drawable-night/ic_submission_illustration_other_warning.xml
@@ -1,306 +1,268 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="360dp"
-    android:height="220dp"
-    android:viewportWidth="360"
-    android:viewportHeight="220">
+    android:width="375dp"
+    android:height="209dp"
+    android:viewportWidth="375"
+    android:viewportHeight="209">
   <path
-      android:pathData="M173.7,100.7L142.89,100.6C142.58,100.595 142.28,100.713 142.057,100.928C141.834,101.144 141.705,101.44 141.7,101.75L141.7,101.75L141.7,111.39C141.7,112.041 142.219,112.574 142.87,112.59L142.87,112.59L173.68,112.68C174.335,112.68 174.869,112.155 174.88,111.5L174.88,101.87C174.883,101.557 174.761,101.256 174.541,101.033C174.322,100.81 174.023,100.683 173.71,100.68L173.71,100.68"
-      android:strokeWidth="1"
+      android:pathData="M179.255,95.65L146.752,95.545C146.066,95.534 145.507,96.074 145.496,96.762V96.773V106.983C145.496,107.671 146.045,108.233 146.731,108.254L179.233,108.349C179.93,108.349 180.489,107.788 180.499,107.099V96.9C180.51,96.212 179.951,95.65 179.265,95.64"
       android:fillColor="#B1BBC2"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M173.76,84L143,83.85C142.682,83.834 142.371,83.947 142.137,84.163C141.904,84.38 141.768,84.682 141.76,85L141.76,85L141.76,85L141.76,94.64C141.755,94.95 141.873,95.25 142.088,95.473C142.304,95.696 142.6,95.825 142.91,95.83L142.91,95.83L173.71,95.93C174.023,95.935 174.325,95.816 174.55,95.599C174.775,95.381 174.905,95.083 174.91,94.77L174.91,94.77L174.91,85.14C174.899,84.519 174.401,84.016 173.78,84L173.78,84"
-      android:strokeWidth="1"
+      android:pathData="M179.318,77.964L146.868,77.805C146.182,77.773 145.591,78.302 145.56,78.991C145.56,79.002 145.56,79.012 145.56,79.023V89.232C145.549,89.921 146.087,90.482 146.773,90.493L179.265,90.599C179.951,90.609 180.521,90.058 180.531,89.37V89.359V79.171C180.521,78.514 179.993,77.985 179.339,77.964"
       android:fillColor="#94A1AB"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M173.81,67.27L143,67.18C142.69,67.175 142.39,67.293 142.167,67.508C141.944,67.724 141.815,68.02 141.81,68.33L141.81,68.33L141.81,78.04C141.81,78.695 142.335,79.229 142.99,79.24L173.81,79.35C174.463,79.35 174.995,78.823 175,78.17L175,78.17L175,68.53C174.995,67.879 174.471,67.351 173.82,67.34"
-      android:strokeWidth="1"
+      android:pathData="M179.371,60.245L146.868,60.15C146.182,60.139 145.623,60.679 145.612,61.368V61.378V71.662C145.612,72.361 146.171,72.922 146.857,72.933L179.371,73.049C180.067,73.049 180.626,72.488 180.626,71.789V61.579C180.626,60.891 180.067,60.33 179.381,60.319"
       android:fillColor="#748692"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M173.85,50.61L143.05,50.5C142.399,50.5 141.866,51.019 141.85,51.67L141.85,61.33C141.844,61.972 142.358,62.499 143,62.51L143,62.51L173.81,62.62C174.123,62.623 174.424,62.501 174.647,62.281C174.87,62.062 174.997,61.763 175,61.45L175,61.45L175,51.8C175.005,51.49 174.887,51.19 174.672,50.967C174.456,50.744 174.16,50.615 173.85,50.61L173.85,50.61"
-      android:strokeWidth="1"
+      android:pathData="M179.413,42.601L146.92,42.484C146.235,42.484 145.676,43.035 145.654,43.723V53.954C145.644,54.632 146.192,55.193 146.868,55.204L179.37,55.32C180.056,55.331 180.615,54.77 180.626,54.081V43.861C180.636,43.173 180.098,42.611 179.413,42.601Z"
       android:fillColor="#657887"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M148.56,57.74L148.56,57.08L148.91,57.08L148.91,56.58L148.56,56.58L148.56,54.67L148,54.67L146.65,56.67L146.65,57.06L147.9,57.06L147.9,57.72L148.56,57.74ZM148,56.58L147.27,56.58L147.9,55.58L147.9,55.58L148,56.58ZM150.36,57.78C150.55,57.79 150.739,57.741 150.9,57.64C151.059,57.562 151.187,57.432 151.26,57.27C151.361,57.109 151.41,56.92 151.4,56.73C151.407,56.46 151.322,56.196 151.16,55.98C151.004,55.789 150.767,55.681 150.52,55.69C150.289,55.69 150.066,55.779 149.9,55.94C149.921,55.715 150.028,55.507 150.2,55.36C150.392,55.214 150.628,55.136 150.87,55.14L150.87,55.14L150.87,54.65L150.77,54.65C150.483,54.64 150.2,54.709 149.95,54.85C149.71,54.982 149.52,55.189 149.41,55.44C149.269,55.715 149.2,56.021 149.21,56.33L149.21,56.33L149.21,56.54C149.202,56.866 149.308,57.184 149.51,57.44C149.706,57.664 149.992,57.788 150.29,57.78L150.36,57.78ZM150.36,57.29C150.227,57.297 150.102,57.232 150.03,57.12C149.938,56.981 149.892,56.817 149.9,56.65L149.9,56.65L149.9,56.46C149.94,56.378 150.003,56.309 150.08,56.26C150.16,56.208 150.254,56.18 150.35,56.18C150.477,56.176 150.599,56.231 150.68,56.33C150.767,56.449 150.813,56.593 150.81,56.74C150.813,56.881 150.767,57.019 150.68,57.13C150.587,57.254 150.429,57.309 150.28,57.27L150.36,57.29ZM152.82,57.78C153.01,57.781 153.198,57.74 153.37,57.66C153.526,57.574 153.654,57.446 153.74,57.29C153.819,57.124 153.86,56.943 153.86,56.76C153.873,56.483 153.788,56.211 153.62,55.99C153.437,55.808 153.187,55.711 152.93,55.72C152.766,55.721 152.604,55.762 152.46,55.84L152.46,55.84L152.54,55.18L153.76,55.18L153.76,54.67L152,54.67L151.81,56.23L152.31,56.35L152.31,56.35C152.409,56.271 152.533,56.228 152.66,56.23C152.797,56.221 152.93,56.277 153.02,56.38C153.12,56.488 153.171,56.633 153.16,56.78C153.17,56.928 153.132,57.076 153.05,57.2C152.971,57.296 152.854,57.351 152.73,57.35C152.617,57.349 152.508,57.31 152.42,57.24C152.342,57.16 152.298,57.052 152.3,56.94L151.75,56.94C151.752,57.104 151.801,57.263 151.89,57.4C151.976,57.547 152.11,57.66 152.27,57.72C152.433,57.78 152.608,57.8 152.78,57.78L152.82,57.78ZM155.28,57.78C155.553,57.8 155.824,57.718 156.04,57.55C156.229,57.389 156.333,57.148 156.32,56.9C156.319,56.742 156.271,56.589 156.18,56.46C156.098,56.325 155.976,56.22 155.83,56.16C156.089,56.038 156.254,55.776 156.25,55.49C156.259,55.25 156.16,55.019 155.98,54.86C155.773,54.658 155.488,54.556 155.2,54.58C154.943,54.562 154.688,54.645 154.49,54.81C154.31,54.969 154.211,55.2 154.22,55.44C154.218,55.579 154.26,55.716 154.34,55.83C154.409,55.952 154.514,56.05 154.64,56.11C154.5,56.179 154.379,56.282 154.29,56.41C154.199,56.539 154.151,56.692 154.15,56.85C154.141,57.1 154.248,57.34 154.44,57.5C154.652,57.681 154.921,57.78 155.2,57.78L155.28,57.78ZM155.28,55.92C155.18,55.928 155.081,55.892 155.01,55.82C154.889,55.638 154.889,55.402 155.01,55.22C155.163,55.08 155.397,55.08 155.55,55.22C155.68,55.399 155.68,55.641 155.55,55.82C155.459,55.912 155.326,55.95 155.2,55.92L155.28,55.92ZM155.28,57.27C155.162,57.272 155.048,57.229 154.96,57.15C154.89,57.054 154.851,56.939 154.85,56.82C154.837,56.608 154.989,56.421 155.2,56.39L155.27,56.39C155.388,56.388 155.502,56.431 155.59,56.51C155.66,56.598 155.699,56.707 155.7,56.82C155.71,56.94 155.67,57.06 155.59,57.15C155.488,57.253 155.342,57.298 155.2,57.27L155.28,57.27ZM158.15,57.71L159.22,54.65L158.52,54.65L157.82,56.96L157.12,54.65L156.43,54.65L157.49,57.71L158.15,57.71ZM160.15,57.71L160.15,56.6L160.65,56.6L161.23,57.71L161.9,57.71L161.24,56.46C161.409,56.387 161.554,56.27 161.66,56.12C161.747,55.961 161.792,55.782 161.79,55.6C161.8,55.336 161.689,55.083 161.49,54.91C161.243,54.742 160.948,54.658 160.65,54.67L159.37,54.67L159.37,57.74L160.15,57.71ZM160.66,56.08L160.15,56.08L160.15,55.16L160.65,55.16C160.791,55.149 160.93,55.191 161.04,55.28C161.209,55.475 161.209,55.765 161.04,55.96C160.938,56.048 160.804,56.092 160.67,56.08L160.66,56.08ZM163.11,57.71L164.24,55L164.24,54.67L162,54.67L162,55.16L163.52,55.16L162.34,57.73L163.11,57.71ZM166.79,57.71L166.79,57.27L165.4,57.27L166.1,56.53C166.241,56.342 166.359,56.137 166.45,55.92C166.514,55.778 166.548,55.625 166.55,55.47C166.57,55.227 166.478,54.987 166.3,54.82C166.094,54.647 165.828,54.564 165.56,54.59C165.367,54.586 165.177,54.635 165.01,54.73C164.846,54.803 164.711,54.93 164.63,55.09C164.537,55.243 164.492,55.421 164.5,55.6L165.1,55.6C165.094,55.463 165.136,55.329 165.22,55.22C165.3,55.121 165.424,55.069 165.55,55.08C165.661,55.069 165.77,55.114 165.84,55.2C165.911,55.291 165.95,55.404 165.95,55.52C165.943,55.63 165.908,55.736 165.85,55.83C165.761,55.971 165.661,56.105 165.55,56.23L165.55,56.23L164.55,57.28L164.55,57.7L166.79,57.71ZM168.34,57.71C168.629,57.728 168.915,57.654 169.16,57.5C169.351,57.344 169.459,57.107 169.45,56.86C169.459,56.638 169.371,56.423 169.21,56.27C168.98,56.079 168.71,55.943 168.42,55.87C168.263,55.82 168.112,55.753 167.97,55.67C167.886,55.619 167.833,55.529 167.83,55.43C167.823,55.329 167.869,55.231 167.95,55.17C168.057,55.099 168.182,55.061 168.31,55.06C168.447,55.054 168.581,55.096 168.69,55.18C168.781,55.265 168.829,55.386 168.82,55.51L169.45,55.51C169.455,55.155 169.246,54.831 168.92,54.69C168.539,54.531 168.111,54.531 167.73,54.69C167.569,54.751 167.43,54.859 167.33,55C167.238,55.128 167.192,55.283 167.2,55.44C167.208,55.771 167.412,56.066 167.72,56.19C167.883,56.279 168.053,56.353 168.23,56.41C168.396,56.441 168.554,56.509 168.69,56.61C168.78,56.669 168.83,56.773 168.82,56.88C168.829,56.982 168.779,57.079 168.69,57.13C168.588,57.202 168.465,57.237 168.34,57.23C167.93,57.23 167.73,57.07 167.73,56.72L167.1,56.72C167.101,56.904 167.153,57.084 167.25,57.24C167.359,57.4 167.512,57.525 167.69,57.6C167.869,57.69 168.062,57.75 168.26,57.78L168.34,57.71Z"
-      android:strokeWidth="1"
-      android:fillColor="#FFFFFF"
-      android:fillType="nonZero"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M148,74.5L148,72.22L148.83,74.5L149.26,74.5L150.1,72.22L149.91,73.66L149.91,74.5L150.54,74.5L150.54,71.42L149.71,71.42L148.93,73.66L148.13,71.42L147.31,71.42L147.31,74.5L148,74.5ZM152.57,74.5L152.57,71.42L152.57,71.42L151.23,71.88L151.23,72.38L151.97,72.15L151.97,74.5L152.57,74.5ZM154.57,74.5C154.857,74.518 155.141,74.433 155.37,74.26C155.562,74.096 155.669,73.853 155.66,73.6C155.672,73.444 155.629,73.288 155.54,73.16C155.442,73.031 155.305,72.937 155.15,72.89C155.286,72.829 155.404,72.732 155.49,72.61C155.581,72.501 155.628,72.362 155.62,72.22C155.633,71.977 155.529,71.743 155.34,71.59C155.123,71.414 154.849,71.325 154.57,71.34C154.395,71.346 154.222,71.383 154.06,71.45C153.917,71.523 153.793,71.629 153.7,71.76C153.621,71.889 153.579,72.038 153.58,72.19L154.18,72.19C154.181,72.093 154.225,72.002 154.3,71.94C154.381,71.872 154.484,71.837 154.59,71.84C154.704,71.831 154.817,71.871 154.9,71.95C154.972,72.025 155.009,72.127 155,72.23C155.014,72.351 154.97,72.473 154.882,72.557C154.794,72.642 154.671,72.68 154.55,72.66L154.22,72.66L154.22,73.13L154.55,73.13C154.88,73.13 155.06,73.28 155.06,73.59C155.063,73.705 155.02,73.817 154.94,73.9C154.842,73.981 154.717,74.02 154.59,74.01C154.476,74.019 154.363,73.979 154.28,73.9C154.192,73.834 154.14,73.73 154.14,73.62L153.54,73.62C153.53,73.865 153.634,74.101 153.82,74.26C154.028,74.441 154.294,74.54 154.57,74.54L154.57,74.5ZM156.57,74.5L156.72,74.5C157.13,74.5 157.521,74.329 157.8,74.03C158.072,73.687 158.211,73.257 158.19,72.82L158.19,72.82L158.19,72.61C158.163,72.397 158.099,72.19 158,72C157.921,71.824 157.792,71.675 157.63,71.57C157.472,71.459 157.283,71.403 157.09,71.41C156.903,71.409 156.719,71.461 156.56,71.56C156.399,71.648 156.269,71.784 156.19,71.95C156.101,72.119 156.06,72.309 156.07,72.5C156.052,72.771 156.138,73.04 156.31,73.25C156.469,73.436 156.705,73.54 156.95,73.53C157.163,73.531 157.368,73.449 157.52,73.3C157.507,73.51 157.411,73.706 157.254,73.844C157.096,73.983 156.89,74.054 156.68,74.04L156.52,74.04L156.57,74.5ZM157.1,73C156.974,73.002 156.854,72.942 156.78,72.84C156.709,72.719 156.671,72.581 156.67,72.44C156.671,72.29 156.709,72.142 156.78,72.01C156.851,71.91 156.967,71.85 157.09,71.85C157.218,71.842 157.338,71.908 157.4,72.02C157.49,72.16 157.532,72.324 157.52,72.49L157.52,72.49L157.52,72.75C157.484,72.823 157.428,72.885 157.36,72.93C157.284,72.986 157.194,73.021 157.1,73.03L157.1,73ZM159.6,74.51C159.896,74.528 160.183,74.401 160.37,74.17C160.568,73.876 160.663,73.524 160.64,73.17L160.64,73.17L160.64,72.61C160.662,72.253 160.559,71.9 160.35,71.61C160.166,71.382 159.882,71.258 159.59,71.28C159.297,71.272 159.016,71.393 158.82,71.61C158.628,71.907 158.534,72.257 158.55,72.61L158.55,72.61L158.55,73.17C158.538,73.507 158.64,73.838 158.84,74.11C159.015,74.353 159.302,74.489 159.6,74.47L159.6,74.51ZM159.6,74.01C159.467,74.017 159.342,73.952 159.27,73.84C159.192,73.661 159.158,73.465 159.17,73.27L159.17,73.27L159.17,72.53C159.159,72.35 159.197,72.17 159.28,72.01C159.343,71.9 159.464,71.837 159.59,71.85C159.723,71.843 159.848,71.908 159.92,72.02C159.998,72.192 160.032,72.381 160.02,72.57L160.02,72.57L160.02,73.39C160.032,73.572 159.997,73.755 159.92,73.92C159.841,74.013 159.72,74.058 159.6,74.04L159.6,74.01ZM161.48,74.47L161.7,73.84L162.8,73.84L163.02,74.47L163.69,74.47L162.53,71.39L162,71.39L160.86,74.47L161.48,74.47ZM162.63,73.32L161.86,73.32L162.25,72.17L162.63,73.32ZM164.63,74.47L164.63,72.19L165.45,74.48L165.9,74.48L166.72,72.19L166.72,74.48L167.36,74.48L167.36,71.42L166.53,71.42L165.75,73.66L165,71.42L164.16,71.42L164.16,74.5L164.63,74.47ZM169.77,74.47L169.77,74L168.43,74L168.43,71.42L167.79,71.42L167.79,74.5L169.77,74.47Z"
-      android:strokeWidth="1"
-      android:fillColor="#FFFFFF"
-      android:fillType="nonZero"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M147.65,91.26L147.65,90L148.86,90L148.86,89.53L147.65,89.53L147.65,88.73L149,88.73L149,88.18L147,88.18L147,91.25L147.65,91.26ZM150.02,91.26L150.02,90.38L150.34,90.03L151.13,91.26L151.88,91.26L150.76,89.54L151.84,88.19L151.06,88.19L150.28,89.19L150.02,89.58L150.02,88.24L149.37,88.24L149.37,91.31L150.02,91.26ZM152.95,91.26C153.13,91.261 153.308,91.22 153.47,91.14C153.62,91.059 153.744,90.937 153.83,90.79C153.931,90.632 153.98,90.447 153.97,90.26L153.97,90.26L153.97,88.19L153.34,88.19L153.34,90.32C153.339,90.448 153.301,90.573 153.23,90.68C153.159,90.759 153.056,90.803 152.95,90.8C152.836,90.809 152.723,90.769 152.64,90.69C152.573,90.593 152.538,90.478 152.54,90.36L151.91,90.36C151.901,90.617 151.998,90.867 152.18,91.05C152.396,91.228 152.67,91.321 152.95,91.31L152.95,91.26ZM154.88,91.26L155,91.26C155.408,91.25 155.795,91.082 156.08,90.79C156.352,90.447 156.491,90.017 156.47,89.58L156.47,89.58L156.47,89.35C156.458,89.127 156.411,88.908 156.33,88.7C156.169,88.342 155.813,88.111 155.42,88.11C155.235,88.108 155.053,88.152 154.89,88.24C154.738,88.339 154.611,88.473 154.52,88.63C154.435,88.808 154.394,89.003 154.4,89.2C154.382,89.471 154.468,89.74 154.64,89.95C154.799,90.136 155.035,90.24 155.28,90.23C155.495,90.234 155.703,90.147 155.85,89.99C155.842,90.2 155.751,90.397 155.598,90.54C155.444,90.683 155.24,90.758 155.03,90.75L154.85,90.75L154.88,91.26ZM155.46,89.76C155.332,89.772 155.208,89.71 155.14,89.6C155.064,89.477 155.026,89.334 155.03,89.19C155.031,89.043 155.069,88.899 155.14,88.77C155.208,88.663 155.324,88.596 155.45,88.59C155.577,88.593 155.695,88.661 155.76,88.77C155.848,88.914 155.89,89.081 155.88,89.25L155.88,89.25L155.88,89.54C155.843,89.61 155.788,89.669 155.72,89.71C155.646,89.769 155.554,89.801 155.46,89.8L155.46,89.76ZM157.36,91.26L157.5,91.26C157.91,91.249 158.3,91.081 158.59,90.79C158.863,90.448 158.998,90.017 158.97,89.58L158.97,89.58L158.97,89.35C158.977,89.126 158.933,88.904 158.84,88.7C158.76,88.522 158.632,88.37 158.47,88.26C158.138,88.071 157.732,88.071 157.4,88.26C157.241,88.351 157.112,88.486 157.03,88.65C156.942,88.824 156.898,89.016 156.9,89.21C156.889,89.484 156.974,89.753 157.14,89.97C157.307,90.157 157.549,90.26 157.8,90.25C158.008,90.249 158.207,90.162 158.35,90.01C158.34,90.22 158.246,90.417 158.091,90.557C157.935,90.698 157.73,90.771 157.52,90.76L157.36,90.76L157.36,91.26ZM158,89.8C157.869,89.811 157.743,89.75 157.67,89.64C157.586,89.52 157.543,89.376 157.55,89.23C157.55,89.082 157.591,88.936 157.67,88.81C157.739,88.709 157.849,88.644 157.97,88.63C158.099,88.636 158.218,88.703 158.29,88.81C158.38,88.953 158.422,89.121 158.41,89.29L158.41,89.29L158.41,89.54C158.362,89.601 158.308,89.658 158.25,89.71C158.18,89.769 158.091,89.801 158,89.8L158,89.8ZM160.5,91.31C160.691,91.307 160.878,91.263 161.05,91.18C161.199,91.088 161.322,90.961 161.41,90.81C161.49,90.641 161.531,90.457 161.53,90.27C161.553,89.996 161.463,89.725 161.28,89.52C161.101,89.331 160.85,89.229 160.59,89.24C160.429,89.239 160.27,89.281 160.13,89.36L160.13,89.36L160.13,88.7L161.36,88.7L161.36,88.19L159.68,88.19L159.5,89.75L159.99,89.87L159.99,89.87C160.088,89.789 160.213,89.75 160.34,89.76C160.478,89.75 160.613,89.801 160.71,89.9C160.802,90.012 160.848,90.155 160.84,90.3C160.851,90.45 160.809,90.599 160.72,90.72C160.648,90.818 160.532,90.874 160.41,90.87C160.297,90.869 160.188,90.83 160.1,90.76C160.019,90.681 159.972,90.573 159.97,90.46L159.36,90.46C159.37,90.627 159.422,90.788 159.51,90.93C159.6,91.072 159.733,91.181 159.89,91.24C160.054,91.309 160.234,91.333 160.41,91.31L160.5,91.31ZM162.89,91.31C163.176,91.322 163.457,91.23 163.68,91.05C163.878,90.894 163.99,90.652 163.98,90.4C163.991,90.244 163.941,90.09 163.84,89.97C163.748,89.839 163.619,89.738 163.47,89.68C163.601,89.619 163.714,89.526 163.8,89.41C163.88,89.296 163.922,89.159 163.92,89.02C163.927,88.78 163.832,88.548 163.66,88.38C163.282,88.123 162.799,88.077 162.38,88.26C162.234,88.319 162.108,88.42 162.02,88.55C161.931,88.676 161.882,88.826 161.88,88.98L162.49,88.98C162.48,88.883 162.527,88.79 162.61,88.74C162.69,88.669 162.793,88.63 162.9,88.63C163.013,88.631 163.122,88.67 163.21,88.74C163.289,88.819 163.329,88.929 163.32,89.04C163.319,89.153 163.28,89.262 163.21,89.35C163.111,89.428 162.985,89.464 162.86,89.45L162.54,89.45L162.54,89.94L162.86,89.94C163.2,89.94 163.37,90.09 163.37,90.4C163.37,90.511 163.323,90.616 163.24,90.69C163.15,90.779 163.026,90.823 162.9,90.81C162.786,90.808 162.675,90.773 162.58,90.71C162.502,90.634 162.459,90.529 162.46,90.42L161.84,90.42C161.83,90.672 161.942,90.914 162.14,91.07C162.344,91.233 162.599,91.318 162.86,91.31L162.89,91.31ZM165.42,91.31C165.722,91.329 166.013,91.198 166.2,90.96C166.4,90.667 166.489,90.313 166.45,89.96L166.45,89.96L166.45,89.4C166.482,89.045 166.387,88.69 166.18,88.4C165.784,87.979 165.123,87.957 164.7,88.35C164.7,88.35 164.7,88.35 164.7,88.4C164.493,88.69 164.398,89.045 164.43,89.4L164.43,89.4L164.43,90C164.398,90.355 164.493,90.71 164.7,91C164.879,91.224 165.154,91.35 165.44,91.34L165.42,91.31ZM165.42,90.81C165.28,90.826 165.146,90.749 165.09,90.62C165.012,90.448 164.978,90.259 164.99,90.07L164.99,90.07L164.99,89.32C164.982,89.144 165.017,88.97 165.09,88.81C165.163,88.7 165.289,88.639 165.42,88.65C165.55,88.643 165.673,88.708 165.74,88.82C165.822,88.991 165.859,89.18 165.85,89.37L165.85,89.37L165.85,90.1C165.859,90.286 165.821,90.472 165.74,90.64C165.691,90.79 165.547,90.888 165.39,90.88L165.42,90.81ZM168.94,91.26L168.94,90.77L167.6,90.77L168.29,90.03C168.466,89.889 168.621,89.724 168.75,89.54C168.829,89.4 168.871,89.241 168.87,89.08C168.89,88.832 168.79,88.59 168.6,88.43C168.388,88.269 168.126,88.188 167.86,88.2C167.668,88.201 167.479,88.249 167.31,88.34C167.151,88.416 167.021,88.543 166.94,88.7C166.848,88.854 166.8,89.031 166.8,89.21L167.41,89.21C167.403,89.079 167.438,88.949 167.51,88.84C167.592,88.737 167.719,88.681 167.85,88.69C167.963,88.685 168.072,88.729 168.15,88.81C168.219,88.902 168.251,89.016 168.24,89.13C168.24,89.243 168.209,89.354 168.15,89.45C168.061,89.588 167.961,89.719 167.85,89.84L167.85,89.84L166.85,90.84L166.85,91.26L168.94,91.26Z"
-      android:strokeWidth="1"
-      android:fillColor="#FFFFFF"
-      android:fillType="nonZero"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M146.84,108L146.84,106.66L148.08,106.66L148.08,108L148.71,108L148.71,105L148.08,105L148.08,106.23L146.84,106.23L146.84,105L146.21,105L146.21,108L146.84,108ZM149.72,108L149.92,107.37L151,107.37L151.21,108L151.89,108L150.77,105L150.19,105L149.05,108L149.72,108ZM150.86,106.86L150.1,106.86L150.47,105.7L150.86,106.86ZM153.09,108.04C153.377,108.058 153.661,107.973 153.89,107.8C154.09,107.642 154.199,107.394 154.18,107.14C154.205,106.811 153.99,106.512 153.67,106.43C153.805,106.366 153.921,106.27 154.01,106.15C154.089,106.039 154.131,105.906 154.13,105.77C154.148,105.526 154.048,105.287 153.86,105.13C153.643,104.954 153.369,104.865 153.09,104.88C152.914,104.881 152.74,104.918 152.58,104.99C152.434,105.059 152.31,105.166 152.22,105.3C152.128,105.424 152.082,105.576 152.09,105.73L152.71,105.73C152.702,105.633 152.739,105.537 152.81,105.47C152.896,105.406 153.003,105.374 153.11,105.38C153.223,105.381 153.332,105.42 153.42,105.49C153.489,105.567 153.528,105.666 153.53,105.77C153.529,105.883 153.49,105.992 153.42,106.08C153.327,106.169 153.199,106.213 153.07,106.2L152.75,106.2L152.75,106.67L153.07,106.67C153.4,106.67 153.58,106.83 153.58,107.13C153.592,107.251 153.539,107.369 153.44,107.44C153.253,107.6 152.977,107.6 152.79,107.44C152.708,107.37 152.66,107.268 152.66,107.16L152.05,107.16C152.041,107.407 152.149,107.644 152.34,107.8C152.551,107.974 152.817,108.066 153.09,108.06L153.09,108.04ZM156.4,108.04L156.4,107.38L156.75,107.38L156.75,106.89L156.4,106.89L156.4,105L155.8,105L154.45,107L154.45,107.39L155.72,107.39L155.72,108.05L156.4,108.04ZM155.8,106.89L155.13,106.89L155.76,105.89L155.76,105.81L155.8,106.89ZM158.38,108.08C158.617,108.082 158.853,108.048 159.08,107.98C159.259,107.901 159.422,107.789 159.56,107.65L159.56,107.65L159.56,106.43L158.35,106.43L158.35,106.9L158.93,106.9L158.93,107.42C158.788,107.538 158.603,107.592 158.42,107.57C158.21,107.59 158.005,107.499 157.88,107.33C157.743,107.112 157.677,106.857 157.69,106.6L157.69,106.6L157.69,106.4C157.668,106.147 157.731,105.893 157.87,105.68C158.08,105.405 158.474,105.351 158.75,105.56L158.75,105.56C158.852,105.662 158.916,105.796 158.93,105.94L159.55,105.94C159.532,105.648 159.399,105.375 159.18,105.18C158.731,104.842 158.122,104.811 157.64,105.1C157.443,105.219 157.289,105.398 157.2,105.61C157.087,105.861 157.032,106.135 157.04,106.41L157.04,106.41L157.04,106.62C157.04,106.889 157.098,107.155 157.21,107.4C157.311,107.608 157.471,107.783 157.67,107.9C157.887,108.007 158.129,108.052 158.37,108.03L158.38,108.08ZM161.22,108.08C161.534,108.101 161.843,107.996 162.08,107.79C162.302,107.585 162.42,107.291 162.4,106.99L162.4,106.99L162.4,104.99L161.75,104.99L161.75,106.99C161.77,107.116 161.739,107.245 161.664,107.348C161.589,107.451 161.476,107.52 161.35,107.54L161.22,107.54C161.07,107.55 160.922,107.5 160.81,107.4C160.713,107.282 160.66,107.133 160.66,106.98L160.66,106.98L160.66,104.98L160,104.98L160,106.98C159.989,107.276 160.11,107.562 160.33,107.76C160.569,107.961 160.879,108.058 161.19,108.03L161.22,108.08ZM163.42,108.08L164,107L164.59,108.07L165.33,108.07L164.41,106.53L165.31,105.01L164.58,105.01L164,106.01L163.42,105.01L162.7,105.01L163.6,106.53L162.67,108.07L163.42,108.08ZM166.61,108.08C166.984,108.113 167.342,107.92 167.52,107.59C167.608,107.428 167.65,107.244 167.64,107.06C167.657,106.783 167.572,106.508 167.4,106.29C167.209,106.116 166.958,106.023 166.7,106.03C166.539,106.029 166.38,106.071 166.24,106.15L166.24,106.15L166.32,105.47L167.53,105.47L167.53,105L165.81,105L165.64,106.56L166.12,106.68L166.12,106.68C166.213,106.591 166.341,106.547 166.47,106.56C166.606,106.551 166.74,106.598 166.84,106.69C166.932,106.802 166.978,106.945 166.97,107.09C166.982,107.246 166.939,107.402 166.85,107.53C166.776,107.624 166.66,107.676 166.54,107.67C166.428,107.677 166.317,107.641 166.23,107.57C166.154,107.484 166.109,107.375 166.1,107.26L165.49,107.26C165.5,107.427 165.552,107.588 165.64,107.73C165.844,108.075 166.274,108.212 166.64,108.05L166.61,108.08ZM169.51,108.08L169.51,105L169.51,105L168.25,105.46L168.25,105.96L168.97,105.73L168.97,108.08L169.51,108.08Z"
-      android:strokeWidth="1"
-      android:fillColor="#FFFFFF"
-      android:fillType="nonZero"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M158.78,81.48m-8.35,0a8.35,8.35 0,1 1,16.7 0a8.35,8.35 0,1 1,-16.7 0"
-      android:strokeWidth="1"
-      android:fillColor="#232324"
-      android:fillType="nonZero"
-      android:strokeColor="#00000000"/>
-  <path
-      android:pathData="M158.59,75.15C157.295,75.943 155.846,76.45 154.34,76.64C154.12,76.66 153.949,76.84 153.94,77.06L153.94,83.63C153.932,84.632 154.437,85.568 155.28,86.11C156.71,86.95 158.28,87.76 158.63,87.95C158.679,87.981 158.741,87.981 158.79,87.95C159.16,87.76 160.7,86.95 162.13,86.11C162.973,85.568 163.478,84.632 163.47,83.63L163.47,77.06C163.461,76.84 163.29,76.66 163.07,76.64C161.628,76.418 160.244,75.912 159,75.15C158.945,75.13 158.885,75.13 158.83,75.15C158.768,75.13 158.702,75.13 158.64,75.15"
-      android:strokeWidth="1"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M152.733,50.152V49.453H153.103V48.923H152.733V46.901H152.143L150.719,49.019V49.432H152.037V50.131L152.733,50.152ZM152.143,48.923H151.373L152.037,47.864L152.143,48.923ZM154.632,50.194C154.833,50.205 155.033,50.152 155.202,50.046C155.371,49.961 155.508,49.824 155.582,49.654C155.687,49.485 155.74,49.284 155.729,49.082C155.74,48.796 155.645,48.521 155.476,48.288C155.308,48.087 155.065,47.97 154.801,47.981C154.559,47.981 154.316,48.076 154.147,48.246C154.168,48.002 154.284,47.79 154.464,47.631C154.664,47.472 154.917,47.398 155.17,47.398V46.879H155.065C154.759,46.869 154.464,46.943 154.2,47.091C153.947,47.229 153.746,47.451 153.63,47.716C153.482,48.002 153.409,48.33 153.419,48.659V48.881C153.409,49.23 153.525,49.559 153.736,49.834C153.947,50.067 154.242,50.205 154.559,50.194H154.632ZM154.632,49.675C154.495,49.686 154.358,49.612 154.284,49.495C154.189,49.347 154.137,49.178 154.147,48.998V48.796C154.189,48.712 154.253,48.637 154.337,48.584C154.421,48.532 154.516,48.5 154.622,48.5C154.759,48.5 154.886,48.553 154.97,48.659C155.065,48.786 155.107,48.934 155.107,49.093C155.107,49.241 155.065,49.389 154.97,49.506C154.875,49.633 154.706,49.696 154.548,49.654L154.632,49.675ZM157.228,50.194C157.428,50.194 157.628,50.152 157.808,50.067C157.977,49.972 158.103,49.845 158.198,49.675C158.282,49.495 158.325,49.305 158.325,49.114C158.335,48.818 158.251,48.532 158.071,48.299C157.882,48.108 157.618,48.002 157.344,48.013C157.175,48.013 156.995,48.055 156.848,48.14L156.932,47.441H158.219V46.901H156.32L156.12,48.553L156.647,48.68C156.753,48.595 156.879,48.553 157.017,48.553C157.164,48.542 157.301,48.606 157.396,48.712C157.502,48.828 157.555,48.976 157.544,49.135C157.555,49.294 157.512,49.453 157.428,49.58C157.344,49.686 157.217,49.739 157.09,49.739C156.974,49.739 156.858,49.696 156.763,49.622C156.679,49.538 156.637,49.421 156.637,49.305H156.057C156.057,49.474 156.109,49.644 156.204,49.792C156.299,49.951 156.436,50.067 156.605,50.131C156.774,50.194 156.964,50.215 157.143,50.194H157.228ZM159.823,50.194C160.108,50.215 160.392,50.131 160.624,49.951C160.825,49.781 160.93,49.527 160.92,49.262C160.92,49.093 160.867,48.934 160.772,48.796C160.688,48.659 160.561,48.542 160.403,48.479C160.677,48.352 160.846,48.076 160.846,47.769C160.857,47.515 160.751,47.271 160.561,47.102C160.34,46.89 160.044,46.784 159.738,46.805C159.464,46.784 159.2,46.869 158.989,47.049C158.799,47.218 158.694,47.462 158.704,47.716C158.704,47.864 158.747,48.013 158.831,48.129C158.905,48.256 159.01,48.362 159.148,48.426C159,48.5 158.873,48.606 158.778,48.743C158.683,48.881 158.631,49.04 158.631,49.209C158.62,49.474 158.736,49.728 158.937,49.898C159.158,50.088 159.443,50.194 159.738,50.194H159.823ZM159.823,48.224C159.717,48.235 159.612,48.193 159.538,48.118C159.411,47.928 159.411,47.674 159.538,47.483C159.696,47.335 159.949,47.335 160.108,47.483C160.245,47.674 160.245,47.928 160.108,48.118C160.013,48.214 159.875,48.256 159.738,48.224H159.823ZM159.823,49.654C159.696,49.654 159.58,49.612 159.485,49.527C159.411,49.421 159.369,49.305 159.369,49.178C159.348,48.955 159.517,48.754 159.738,48.722H159.812C159.939,48.722 160.055,48.764 160.15,48.849C160.224,48.945 160.266,49.061 160.266,49.178C160.276,49.305 160.234,49.432 160.15,49.527C160.044,49.633 159.886,49.686 159.738,49.654H159.823ZM162.85,50.12L163.979,46.879H163.241L162.502,49.326L161.764,46.879H161.036L162.154,50.12H162.85ZM164.96,50.12V48.945H165.488L166.1,50.12H166.806L166.11,48.796C166.29,48.722 166.437,48.595 166.553,48.436C166.648,48.267 166.69,48.076 166.69,47.886C166.701,47.61 166.585,47.335 166.374,47.155C166.11,46.975 165.804,46.89 165.488,46.901H164.137V50.152L164.96,50.12ZM165.498,48.394H164.96V47.419H165.488C165.635,47.409 165.783,47.451 165.899,47.547C166.079,47.758 166.079,48.055 165.899,48.267C165.794,48.362 165.646,48.404 165.509,48.394H165.498V48.394ZM168.083,50.12L169.275,47.25V46.901H166.912V47.419H168.515L167.271,50.141L168.083,50.12ZM171.965,50.12V49.654H170.499L171.237,48.87C171.385,48.669 171.511,48.457 171.606,48.224C171.67,48.076 171.712,47.917 171.712,47.748C171.733,47.494 171.638,47.239 171.448,47.059C171.227,46.879 170.952,46.784 170.668,46.816C170.467,46.816 170.267,46.858 170.087,46.964C169.919,47.038 169.771,47.176 169.686,47.345C169.591,47.504 169.539,47.695 169.549,47.886H170.182C170.172,47.737 170.224,47.599 170.309,47.483C170.393,47.377 170.52,47.324 170.657,47.335C170.773,47.324 170.889,47.367 170.963,47.462C171.037,47.557 171.079,47.674 171.079,47.801C171.068,47.917 171.037,48.034 170.973,48.129C170.879,48.277 170.773,48.426 170.657,48.553L169.602,49.665V50.11L171.965,50.12ZM173.6,50.12C173.906,50.141 174.212,50.057 174.465,49.898C174.666,49.728 174.782,49.485 174.771,49.22C174.782,48.987 174.687,48.754 174.518,48.595C174.275,48.394 173.991,48.246 173.685,48.171C173.516,48.118 173.358,48.044 173.21,47.96C173.126,47.907 173.062,47.811 173.062,47.705C173.052,47.599 173.104,47.494 173.189,47.43C173.305,47.356 173.431,47.314 173.569,47.314C173.716,47.303 173.853,47.356 173.97,47.441C174.064,47.525 174.117,47.663 174.107,47.79H174.771C174.771,47.61 174.719,47.43 174.624,47.271C174.518,47.123 174.381,46.996 174.212,46.922C173.811,46.752 173.358,46.752 172.957,46.922C172.788,46.985 172.64,47.102 172.535,47.25C172.44,47.388 172.387,47.547 172.398,47.716C172.408,48.065 172.619,48.383 172.946,48.51C173.115,48.606 173.294,48.68 173.484,48.743C173.664,48.775 173.822,48.849 173.97,48.955C174.064,49.019 174.117,49.125 174.107,49.241C174.117,49.347 174.064,49.453 173.97,49.506C173.864,49.58 173.727,49.622 173.6,49.612C173.168,49.612 172.957,49.442 172.957,49.072H172.292C172.292,49.262 172.345,49.453 172.45,49.622C172.566,49.792 172.725,49.93 172.915,50.004C173.104,50.099 173.305,50.162 173.516,50.194L173.6,50.12Z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M152.142,67.902V65.488L153.018,67.902H153.472L154.358,65.488L154.157,67.013V67.902H154.822V64.64H153.946L153.124,67.013L152.28,64.64H151.415V67.902H152.142ZM156.964,67.902V64.64L155.55,65.127V65.657L156.331,65.413V67.902H156.964V67.902ZM159.073,67.902C159.379,67.924 159.675,67.828 159.917,67.648C160.118,67.479 160.234,67.214 160.223,66.949C160.234,66.78 160.192,66.621 160.097,66.483C159.991,66.345 159.854,66.25 159.685,66.197C159.833,66.134 159.949,66.028 160.044,65.901C160.139,65.784 160.192,65.636 160.181,65.488C160.192,65.233 160.086,64.979 159.886,64.82C159.654,64.63 159.369,64.545 159.073,64.555C158.884,64.566 158.704,64.598 158.535,64.672C158.388,64.746 158.251,64.863 158.156,65C158.071,65.138 158.029,65.297 158.029,65.456H158.662C158.662,65.35 158.715,65.255 158.789,65.191C158.873,65.117 158.979,65.085 159.095,65.085C159.211,65.075 159.337,65.117 159.422,65.202C159.495,65.276 159.538,65.392 159.527,65.498C159.538,65.615 159.495,65.731 159.422,65.826C159.327,65.922 159.19,65.964 159.052,65.953H158.704V66.451H159.052C159.4,66.451 159.59,66.61 159.59,66.938C159.59,67.066 159.548,67.182 159.464,67.267C159.358,67.352 159.232,67.394 159.095,67.383C158.979,67.394 158.852,67.352 158.768,67.267C158.673,67.193 158.62,67.087 158.62,66.97H157.987C157.976,67.225 158.082,67.479 158.282,67.648C158.504,67.839 158.778,67.945 159.073,67.945V67.902ZM161.131,67.902H161.289C161.721,67.902 162.133,67.722 162.428,67.405C162.713,67.044 162.861,66.589 162.84,66.123V65.901C162.829,65.678 162.776,65.456 162.692,65.255C162.608,65.064 162.47,64.905 162.302,64.799C162.133,64.683 161.932,64.619 161.732,64.63C161.531,64.63 161.342,64.683 161.173,64.788C161.004,64.884 160.867,65.021 160.782,65.202C160.688,65.382 160.645,65.583 160.656,65.784C160.635,66.07 160.73,66.356 160.909,66.578C161.078,66.78 161.331,66.885 161.584,66.875C161.806,66.875 162.027,66.79 162.186,66.631C162.154,67.097 161.764,67.447 161.299,67.415H161.131V67.902ZM161.742,66.324C161.605,66.324 161.479,66.261 161.405,66.155C161.331,66.028 161.289,65.879 161.289,65.731C161.289,65.572 161.331,65.413 161.405,65.276C161.479,65.17 161.605,65.106 161.732,65.106C161.869,65.096 161.996,65.17 162.059,65.286C162.154,65.435 162.196,65.604 162.186,65.784V66.06C162.143,66.134 162.091,66.208 162.017,66.25C161.932,66.314 161.837,66.345 161.742,66.356V66.324ZM164.38,67.923C164.696,67.945 164.992,67.807 165.192,67.563C165.403,67.256 165.498,66.875 165.477,66.504V65.911C165.498,65.53 165.393,65.159 165.171,64.852C164.981,64.608 164.675,64.481 164.369,64.503C164.063,64.481 163.757,64.619 163.557,64.852C163.346,65.17 163.251,65.54 163.272,65.911V66.504C163.262,66.864 163.367,67.214 163.578,67.5C163.757,67.754 164.063,67.902 164.38,67.881V67.923ZM164.38,67.394C164.243,67.405 164.106,67.33 164.032,67.214C163.947,67.023 163.916,66.822 163.926,66.61V65.826C163.916,65.636 163.958,65.445 164.042,65.276C164.106,65.159 164.232,65.096 164.369,65.106C164.506,65.096 164.644,65.17 164.717,65.286C164.802,65.466 164.833,65.668 164.823,65.869V66.737C164.833,66.928 164.802,67.118 164.717,67.299C164.633,67.394 164.506,67.447 164.38,67.426V67.394ZM166.363,67.881L166.595,67.214H167.756L167.988,67.881H168.695L167.471,64.619H166.859L165.656,67.881H166.363ZM167.576,66.663H166.764L167.175,65.445L167.576,66.663ZM169.686,67.881V65.456L170.551,67.881H171.026L171.891,65.456V67.881H172.566V64.64H171.691L170.868,67.013L170.034,64.64H169.148V67.902L169.686,67.881ZM175.109,67.881V67.373H173.695V64.64H173.02V67.902L175.109,67.881Z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M151.773,85.653V84.318H153.05V83.82H151.773V82.973H153.198V82.391H151.088V85.642L151.773,85.653ZM154.274,85.653V84.721L154.611,84.35L155.445,85.653H156.236L155.054,83.831L156.194,82.401H155.371L154.548,83.46L154.274,83.873V82.454H153.588V85.706L154.274,85.653ZM157.365,85.653C157.554,85.653 157.744,85.61 157.913,85.526C158.071,85.441 158.198,85.314 158.293,85.155C158.398,84.985 158.451,84.795 158.441,84.594V82.401H157.776V84.657C157.776,84.795 157.734,84.922 157.66,85.038C157.586,85.123 157.481,85.165 157.365,85.165C157.249,85.176 157.122,85.134 157.038,85.049C156.964,84.943 156.932,84.827 156.932,84.7H156.267C156.257,84.975 156.362,85.24 156.552,85.43C156.784,85.621 157.069,85.716 157.365,85.706V85.653V85.653ZM159.401,85.653H159.527C159.96,85.642 160.371,85.462 160.667,85.155C160.951,84.795 161.099,84.339 161.078,83.873V83.63C161.067,83.397 161.015,83.164 160.93,82.941C160.761,82.56 160.382,82.316 159.97,82.316C159.78,82.316 159.58,82.359 159.411,82.454C159.253,82.56 159.116,82.698 159.021,82.867C158.936,83.058 158.884,83.259 158.894,83.471C158.873,83.757 158.968,84.043 159.147,84.265C159.316,84.466 159.569,84.572 159.823,84.562C160.055,84.562 160.266,84.477 160.424,84.308C160.403,84.774 160.023,85.134 159.559,85.113H159.548H159.369L159.401,85.653ZM160.012,84.064C159.875,84.075 159.749,84.011 159.675,83.895C159.591,83.768 159.559,83.609 159.559,83.46C159.559,83.301 159.601,83.153 159.675,83.016C159.749,82.899 159.865,82.836 160.002,82.825C160.139,82.825 160.255,82.899 160.329,83.016C160.424,83.174 160.466,83.344 160.456,83.524V83.831C160.413,83.905 160.361,83.969 160.287,84.011C160.213,84.075 160.107,84.106 160.012,84.106V84.064ZM162.017,85.653H162.165C162.597,85.642 163.009,85.462 163.314,85.155C163.599,84.795 163.747,84.339 163.715,83.873V83.63C163.726,83.397 163.673,83.153 163.578,82.941C163.494,82.751 163.357,82.592 163.188,82.475C162.84,82.274 162.407,82.274 162.059,82.475C161.89,82.571 161.753,82.719 161.669,82.888C161.574,83.068 161.532,83.28 161.532,83.481C161.521,83.768 161.605,84.053 161.785,84.286C161.964,84.488 162.217,84.594 162.481,84.583C162.703,84.583 162.914,84.488 163.061,84.329C163.04,84.795 162.65,85.144 162.186,85.123H162.017V85.653ZM162.692,84.106C162.555,84.117 162.418,84.053 162.344,83.937C162.26,83.81 162.207,83.662 162.217,83.503C162.217,83.344 162.26,83.196 162.344,83.058C162.418,82.952 162.534,82.878 162.66,82.867C162.798,82.878 162.924,82.941 162.998,83.058C163.093,83.206 163.135,83.386 163.125,83.566V83.831C163.072,83.895 163.019,83.958 162.956,84.011C162.882,84.075 162.787,84.106 162.692,84.106ZM165.329,85.706C165.53,85.706 165.73,85.653 165.91,85.568C166.068,85.473 166.194,85.335 166.289,85.176C166.374,84.996 166.416,84.805 166.416,84.604C166.437,84.318 166.342,84.032 166.152,83.81C165.962,83.609 165.699,83.503 165.424,83.513C165.256,83.513 165.087,83.556 164.939,83.64V82.941H166.237V82.401H164.464L164.274,84.053L164.791,84.18H164.802C164.907,84.096 165.034,84.053 165.171,84.064C165.319,84.053 165.456,84.106 165.562,84.212C165.656,84.329 165.709,84.488 165.699,84.636C165.709,84.795 165.667,84.954 165.572,85.081C165.498,85.187 165.372,85.24 165.245,85.24C165.129,85.24 165.013,85.197 164.918,85.123C164.834,85.038 164.781,84.922 164.781,84.805H164.137C164.148,84.985 164.201,85.155 164.296,85.303C164.391,85.451 164.528,85.568 164.696,85.632C164.865,85.706 165.055,85.727 165.245,85.706H165.329ZM167.851,85.706C168.157,85.716 168.452,85.621 168.684,85.43C168.895,85.261 169.011,85.007 169.001,84.742C169.011,84.572 168.958,84.413 168.853,84.286C168.758,84.149 168.621,84.043 168.463,83.979C168.6,83.916 168.716,83.821 168.811,83.693C168.895,83.577 168.937,83.429 168.937,83.28C168.948,83.026 168.842,82.783 168.663,82.603C168.262,82.327 167.756,82.285 167.313,82.475C167.154,82.539 167.028,82.645 166.933,82.783C166.838,82.92 166.785,83.079 166.785,83.238H167.429C167.418,83.132 167.471,83.037 167.555,82.984C167.64,82.91 167.745,82.867 167.861,82.867C167.977,82.867 168.093,82.91 168.188,82.984C168.273,83.068 168.315,83.185 168.304,83.301C168.304,83.418 168.262,83.535 168.188,83.63C168.083,83.715 167.956,83.746 167.819,83.736H167.481V84.255H167.819C168.178,84.255 168.357,84.413 168.357,84.742C168.357,84.858 168.304,84.975 168.22,85.049C168.125,85.144 167.998,85.187 167.861,85.176C167.745,85.176 167.619,85.134 167.524,85.07C167.439,84.985 167.397,84.88 167.397,84.763H166.743C166.732,85.028 166.849,85.282 167.06,85.451C167.271,85.621 167.545,85.716 167.819,85.706H167.851V85.706ZM170.52,85.706C170.836,85.727 171.142,85.589 171.343,85.335C171.554,85.028 171.649,84.646 171.606,84.276V83.683C171.638,83.312 171.543,82.931 171.321,82.624C170.9,82.179 170.203,82.158 169.76,82.571C169.739,82.581 169.729,82.603 169.707,82.624C169.486,82.931 169.391,83.312 169.423,83.683V84.318C169.391,84.689 169.486,85.07 169.707,85.377C169.897,85.61 170.182,85.748 170.488,85.737L170.52,85.706ZM170.52,85.176C170.372,85.197 170.235,85.113 170.172,84.975C170.087,84.795 170.056,84.594 170.066,84.392V83.598C170.056,83.407 170.098,83.227 170.172,83.058C170.245,82.941 170.383,82.878 170.52,82.888C170.657,82.878 170.783,82.952 170.857,83.068C170.942,83.248 170.984,83.45 170.973,83.651V84.424C170.984,84.625 170.942,84.816 170.857,84.996C170.805,85.155 170.657,85.261 170.488,85.25L170.52,85.176ZM174.233,85.653V85.134H172.82L173.547,84.35C173.737,84.202 173.896,84.022 174.033,83.831C174.117,83.683 174.159,83.513 174.159,83.344C174.18,83.079 174.075,82.825 173.874,82.656C173.653,82.486 173.379,82.401 173.094,82.412C172.893,82.412 172.693,82.465 172.514,82.56C172.345,82.645 172.208,82.772 172.123,82.941C172.028,83.1 171.976,83.291 171.976,83.481H172.619C172.609,83.344 172.651,83.206 172.725,83.09C172.809,82.984 172.946,82.92 173.083,82.931C173.199,82.92 173.315,82.973 173.4,83.058C173.474,83.153 173.505,83.28 173.495,83.397C173.495,83.513 173.463,83.63 173.4,83.736C173.305,83.884 173.199,84.022 173.083,84.149L172.028,85.208V85.653H174.233Z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M150.919,103.382V101.963H152.227V103.382H152.892V100.205H152.227V101.507H150.919V100.205H150.254V103.382H150.919ZM153.957,103.382L154.168,102.715H155.307L155.529,103.382H156.246L155.065,100.205H154.453L153.25,103.382H153.957ZM155.16,102.175H154.358L154.748,100.946L155.16,102.175ZM157.512,103.424C157.818,103.445 158.113,103.35 158.356,103.17C158.567,103.001 158.683,102.736 158.662,102.471C158.673,102.302 158.63,102.143 158.535,102.005C158.441,101.867 158.293,101.761 158.124,101.719C158.261,101.656 158.388,101.55 158.483,101.423C158.567,101.306 158.609,101.168 158.609,101.02C158.63,100.766 158.525,100.512 158.324,100.342C158.092,100.152 157.808,100.067 157.512,100.078C157.322,100.078 157.143,100.12 156.974,100.194C156.816,100.268 156.689,100.385 156.594,100.522C156.499,100.649 156.447,100.819 156.457,100.978H157.111C157.101,100.872 157.143,100.777 157.217,100.702C157.312,100.639 157.417,100.596 157.533,100.607C157.649,100.607 157.765,100.649 157.86,100.724C157.934,100.808 157.976,100.914 157.976,101.02C157.976,101.137 157.934,101.253 157.86,101.348C157.765,101.444 157.628,101.486 157.491,101.476H157.153V101.973H157.491C157.839,101.973 158.029,102.143 158.029,102.46C158.04,102.588 157.987,102.715 157.881,102.789C157.681,102.958 157.396,102.958 157.196,102.789C157.111,102.715 157.059,102.609 157.059,102.492H156.415C156.404,102.757 156.521,103.001 156.721,103.17C156.942,103.35 157.227,103.456 157.512,103.445V103.424ZM161.004,103.424V102.725H161.373V102.206H161.004V100.205H160.371L158.947,102.323V102.736H160.287V103.435L161.004,103.424ZM160.371,102.206H159.664L160.329,101.147V101.062L160.371,102.206ZM163.093,103.467C163.346,103.467 163.589,103.435 163.831,103.361C164.021,103.276 164.19,103.159 164.338,103.011V101.719H163.061V102.217H163.673V102.768C163.525,102.895 163.325,102.948 163.135,102.926C162.913,102.948 162.703,102.852 162.565,102.672C162.418,102.439 162.354,102.175 162.365,101.899V101.687C162.344,101.423 162.407,101.147 162.555,100.925C162.776,100.628 163.198,100.575 163.483,100.798C163.483,100.798 163.483,100.798 163.494,100.808C163.599,100.914 163.673,101.062 163.684,101.211H164.338C164.317,100.904 164.179,100.607 163.947,100.406C163.473,100.046 162.829,100.014 162.323,100.321C162.112,100.448 161.953,100.639 161.859,100.861C161.743,101.126 161.679,101.412 161.69,101.709V101.931C161.69,102.217 161.753,102.503 161.869,102.757C161.975,102.979 162.143,103.159 162.354,103.287C162.586,103.403 162.84,103.445 163.093,103.424V103.467ZM166.089,103.467C166.416,103.488 166.743,103.382 166.996,103.159C167.228,102.948 167.355,102.63 167.334,102.312V100.194H166.648V102.312C166.69,102.588 166.5,102.852 166.226,102.895H166.089C165.931,102.905 165.772,102.852 165.656,102.746C165.551,102.619 165.498,102.461 165.498,102.302V100.183H164.802V102.302C164.791,102.619 164.918,102.916 165.15,103.128C165.403,103.34 165.73,103.445 166.057,103.414L166.089,103.467ZM168.41,103.467L169.022,102.323L169.644,103.456H170.425L169.454,101.825L170.404,100.215H169.633L169.022,101.274L168.41,100.215H167.65L168.6,101.825L167.619,103.456L168.41,103.467ZM171.775,103.467C171.975,103.477 172.176,103.435 172.355,103.34C172.513,103.244 172.64,103.107 172.735,102.948C172.83,102.778 172.872,102.577 172.862,102.386C172.883,102.09 172.788,101.804 172.608,101.571C172.408,101.391 172.144,101.285 171.87,101.295C171.701,101.295 171.532,101.338 171.385,101.423L171.469,100.702H172.746V100.205H170.931L170.752,101.857L171.258,101.984C171.353,101.889 171.49,101.846 171.627,101.857C171.775,101.846 171.912,101.899 172.018,101.994C172.113,102.111 172.165,102.27 172.155,102.418C172.165,102.588 172.123,102.746 172.028,102.884C171.954,102.979 171.828,103.043 171.701,103.032C171.585,103.043 171.469,103.001 171.374,102.926C171.29,102.831 171.248,102.715 171.237,102.598H170.593C170.604,102.778 170.657,102.948 170.752,103.096C170.857,103.234 170.994,103.35 171.153,103.435C171.353,103.488 171.575,103.488 171.775,103.435V103.467V103.467ZM174.834,103.467V100.205L173.505,100.692V101.221L174.265,100.978V103.467H174.834Z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M163.515,84.138C168.38,84.138 172.323,80.179 172.323,75.295C172.323,70.411 168.38,66.451 163.515,66.451C158.65,66.451 154.706,70.411 154.706,75.295C154.706,80.179 158.65,84.138 163.515,84.138Z"
+      android:fillColor="#232324"/>
+  <path
+      android:pathData="M163.314,68.591C161.953,69.427 160.424,69.967 158.831,70.169C158.599,70.19 158.419,70.381 158.409,70.614V77.572C158.398,78.631 158.936,79.626 159.822,80.198C161.331,81.088 162.987,81.946 163.357,82.147C163.409,82.179 163.473,82.179 163.525,82.147C163.916,81.946 165.54,81.088 167.049,80.198C167.935,79.626 168.473,78.631 168.462,77.572V70.614C168.452,70.381 168.273,70.19 168.041,70.169C166.521,69.936 165.055,69.396 163.747,68.591C163.694,68.57 163.62,68.57 163.568,68.591C163.504,68.57 163.43,68.57 163.367,68.591"
       android:fillColor="#657887"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M158.69,78.93C159.14,78.93 159.53,79.49 159.59,80.18L157.78,80.18C157.78,79.49 158.21,78.93 158.69,78.93M157.1,80.18L156.8,80.18C156.409,80.191 156.095,80.508 156.09,80.9L156.09,83.39C156.087,83.581 156.161,83.765 156.294,83.902C156.427,84.039 156.609,84.117 156.8,84.12L160.62,84.12C160.811,84.117 160.993,84.039 161.126,83.902C161.259,83.765 161.333,83.581 161.33,83.39L161.33,83.39L161.33,80.9C161.325,80.508 161.011,80.191 160.62,80.18L160.33,80.18C160.448,79.616 160.256,79.031 159.826,78.647C159.396,78.262 158.794,78.137 158.246,78.317C157.698,78.497 157.288,78.956 157.17,79.52L157.17,79.52C157.12,79.737 157.12,79.963 157.17,80.18"
-      android:strokeWidth="1"
-      android:fillColor="#FFFFFF"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:pathData="M163.42,72.594C163.895,72.594 164.306,73.187 164.369,73.918H162.46C162.46,73.187 162.913,72.594 163.42,72.594ZM161.743,73.918H161.426C161.015,73.928 160.688,74.267 160.677,74.68V77.318C160.677,77.741 161.004,78.08 161.426,78.091H165.456C165.878,78.08 166.215,77.741 166.205,77.318V74.68C166.205,74.267 165.867,73.928 165.456,73.918H165.15C165.34,72.996 164.749,72.086 163.831,71.895C162.913,71.704 162.006,72.298 161.816,73.219C161.764,73.452 161.764,73.685 161.816,73.918"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M158,81.85C158.002,82.095 158.135,82.321 158.35,82.44L158.35,83.18C158.355,83.281 158.439,83.36 158.54,83.36L158.88,83.36C158.928,83.363 158.975,83.346 159.01,83.314C159.046,83.283 159.067,83.238 159.07,83.19L159.07,83.19L159.07,82.45C159.289,82.32 159.418,82.08 159.407,81.826C159.395,81.572 159.245,81.345 159.016,81.235C158.787,81.125 158.515,81.15 158.31,81.3C158.117,81.421 158,81.632 158,81.86"
-      android:strokeWidth="1"
+      android:pathData="M162.692,75.687C162.692,75.951 162.84,76.184 163.061,76.311V77.095C163.072,77.201 163.156,77.286 163.262,77.286H163.62C163.726,77.296 163.81,77.212 163.821,77.106V77.095V76.311C164.158,76.089 164.253,75.634 164.032,75.295C163.81,74.956 163.357,74.86 163.019,75.083C162.818,75.22 162.692,75.443 162.692,75.687Z"
       android:fillColor="#657887"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M143.5,96L142.82,96C142.281,95.97 141.85,95.539 141.82,95L141.82,85.25C141.795,84.942 141.894,84.637 142.095,84.402C142.296,84.168 142.582,84.023 142.89,84L143.45,84L143.5,96Z"
-      android:strokeWidth="1"
-      android:fillColor="#FF919A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:pathData="M147.395,90.673H146.678C146.108,90.641 145.655,90.186 145.623,89.614C145.623,88.713 145.623,82.338 145.623,79.287C145.57,78.61 146.077,78.017 146.752,77.964C146.762,77.964 146.773,77.964 146.783,77.964C147.047,77.964 146.604,77.964 146.868,77.964H147.342L147.395,90.673Z"
+      android:fillColor="#C4314A"
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M143.55,62.53L142.88,62.53C142.344,62.492 141.918,62.066 141.88,61.53L141.88,51.75C141.855,51.434 141.961,51.121 142.173,50.885C142.384,50.649 142.683,50.51 143,50.5L143.59,50.5L143.55,62.53Z"
-      android:strokeWidth="1"
-      android:fillColor="#FF919A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:pathData="M147.448,55.225H146.741C146.171,55.183 145.728,54.738 145.686,54.166V43.808C145.633,43.13 146.14,42.537 146.815,42.484C146.836,42.484 146.857,42.484 146.868,42.484H147.437L147.448,55.225Z"
+      android:fillColor="#C4314A"
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M143.57,79.25L142.89,79.25C142.36,79.2 141.94,78.78 141.89,78.25L141.89,68.47C141.868,68.156 141.973,67.847 142.182,67.612C142.391,67.377 142.686,67.235 143,67.22L143.55,67.22L143.57,79.25Z"
-      android:strokeWidth="1"
-      android:fillColor="#FF919A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:pathData="M147.469,72.933H146.752C146.193,72.88 145.75,72.435 145.697,71.874V61.516C145.644,60.838 146.161,60.245 146.847,60.192H146.858H147.427L147.469,72.933Z"
+      android:fillColor="#C4314A"
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M191.22,80.54C191.22,81.888 190.128,82.98 188.78,82.98C187.432,82.98 186.34,81.888 186.34,80.54C186.34,79.192 187.432,78.1 188.78,78.1C190.128,78.1 191.22,79.192 191.22,80.54L191.22,80.54"
-      android:strokeWidth="1"
+      android:pathData="M197.099,74.299C197.099,75.729 195.947,76.883 194.519,76.883C193.092,76.883 191.94,75.729 191.94,74.299C191.94,72.869 193.092,71.715 194.519,71.715C195.947,71.715 197.099,72.869 197.099,74.299Z"
       android:fillColor="#3F3F43"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M208.31,80.51C208.299,81.884 207.177,82.989 205.803,82.98C204.43,82.971 203.323,81.851 203.33,80.477C203.337,79.103 204.456,77.995 205.83,78C206.493,78 207.128,78.265 207.594,78.737C208.06,79.209 208.318,79.847 208.31,80.51L208.31,80.51"
-      android:strokeWidth="1"
+      android:pathData="M215.166,74.268C215.156,75.729 213.972,76.894 212.513,76.883C211.054,76.873 209.891,75.687 209.901,74.225C209.912,72.774 211.096,71.599 212.544,71.609C213.993,71.609 215.166,72.785 215.166,74.236V74.246"
       android:fillColor="#3F3F43"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M328.35,126.63L245.18,126.63C241.66,126.63 238.8,123.17 238.8,118.9L238.8,32.15C238.8,27.89 241.66,24.43 245.18,24.43L328.35,24.43C331.87,24.43 334.72,27.89 334.72,32.15L334.72,118.9C334.72,123.17 331.87,126.63 328.35,126.63"
-      android:strokeWidth="1"
+      android:pathData="M342.069,123.113H254.144C250.423,123.113 247.399,119.448 247.399,114.926V23.05C247.399,18.538 250.423,14.874 254.144,14.874H342.069C345.791,14.874 348.803,18.538 348.803,23.05V114.926C348.803,119.448 345.791,123.113 342.069,123.113Z"
       android:fillColor="#94A1AB"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M322,96.81C321.994,98.406 323.284,99.704 324.88,99.71C326.476,99.715 327.774,98.426 327.78,96.83C327.785,95.234 326.496,93.936 324.9,93.93L324.9,93.93C324.133,93.925 323.395,94.226 322.851,94.766C322.306,95.307 322,96.043 322,96.81L322,96.81"
-      android:strokeWidth="1"
+      android:pathData="M335.356,91.531C335.345,93.225 336.709,94.591 338.401,94.602C340.092,94.613 341.456,93.246 341.466,91.552C341.477,89.857 340.113,88.491 338.422,88.48C338.411,88.48 338.411,88.48 338.401,88.48C336.72,88.48 335.356,89.847 335.356,91.531Z"
       android:fillColor="#E8F5FF"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M310.45,96.81C310.45,98.401 311.739,99.69 313.33,99.69C314.921,99.69 316.21,98.401 316.21,96.81C316.21,95.219 314.921,93.93 313.33,93.93C311.739,93.93 310.45,95.219 310.45,96.81L310.45,96.81"
-      android:strokeWidth="1"
+      android:pathData="M323.146,91.531C323.146,93.215 324.51,94.581 326.191,94.581C327.872,94.581 329.235,93.215 329.235,91.531C329.235,89.847 327.872,88.48 326.191,88.48C324.51,88.48 323.146,89.847 323.146,91.531Z"
       android:fillColor="#E8F5FF"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M298.93,96.81C298.93,98.401 300.219,99.69 301.81,99.69C303.401,99.69 304.69,98.401 304.69,96.81C304.69,95.219 303.401,93.93 301.81,93.93C300.219,93.93 298.93,95.219 298.93,96.81L298.93,96.81"
-      android:strokeWidth="1"
+      android:pathData="M310.967,91.531C310.967,93.215 312.331,94.581 314.012,94.581C315.693,94.581 317.056,93.215 317.056,91.531C317.056,89.847 315.693,88.48 314.012,88.48C312.331,88.48 310.967,89.847 310.967,91.531Z"
       android:fillColor="#E8F5FF"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M322,69.11C321.689,70.67 322.7,72.186 324.26,72.498C325.819,72.81 327.336,71.798 327.648,70.239C327.96,68.68 326.949,67.162 325.39,66.85C325.017,66.78 324.633,66.78 324.26,66.85C323.121,67.08 322.23,67.971 322,69.11"
-      android:strokeWidth="1"
+      android:pathData="M335.356,62.194C335.029,63.846 336.096,65.456 337.745,65.784C339.395,66.112 341.002,65.043 341.329,63.39C341.657,61.738 340.589,60.129 338.94,59.8C338.549,59.726 338.137,59.726 337.745,59.8C336.54,60.044 335.599,60.986 335.356,62.194Z"
       android:fillColor="#DCE1E5"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M310.5,69.11C310.184,70.674 311.196,72.198 312.759,72.514C314.323,72.831 315.847,71.821 316.165,70.257C316.483,68.694 315.473,67.169 313.91,66.85C313.533,66.78 313.147,66.78 312.77,66.85C311.628,67.079 310.734,67.969 310.5,69.11"
-      android:strokeWidth="1"
+      android:pathData="M323.199,62.194C322.86,63.846 323.928,65.466 325.588,65.805C327.237,66.144 328.855,65.075 329.193,63.412C329.531,61.76 328.464,60.139 326.804,59.8C326.402,59.715 326,59.715 325.599,59.8C324.393,60.044 323.442,60.986 323.199,62.194Z"
       android:fillColor="#DCE1E5"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M299,69.11C298.684,70.674 299.696,72.198 301.259,72.514C302.823,72.831 304.347,71.821 304.665,70.257C304.983,68.694 303.973,67.169 302.41,66.85C302.031,66.77 301.639,66.77 301.26,66.85C300.121,67.08 299.23,67.971 299,69.11"
-      android:strokeWidth="1"
+      android:pathData="M311.041,62.194C310.703,63.846 311.781,65.466 313.43,65.805C315.079,66.144 316.697,65.064 317.035,63.412C317.373,61.76 316.295,60.139 314.646,59.8C314.244,59.715 313.832,59.715 313.43,59.8C312.225,60.044 311.284,60.986 311.041,62.194Z"
       android:fillColor="#DCE1E5"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M248.87,48.31L289.93,48.31C290.92,48.299 291.719,47.5 291.73,46.51L291.73,38.58C291.719,37.59 290.92,36.791 289.93,36.78L248.87,36.78C247.88,36.791 247.081,37.59 247.07,38.58L247.07,46.51C247.081,47.5 247.88,48.299 248.87,48.31"
-      android:strokeWidth="1"
+      android:pathData="M258.045,40.165H301.453C302.499,40.154 303.345,39.307 303.355,38.258V29.86C303.345,28.811 302.499,27.964 301.453,27.953H258.045C256.998,27.964 256.153,28.811 256.142,29.86V38.258C256.153,39.307 256.998,40.154 258.045,40.165Z"
       android:fillColor="#657887"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M322,42C321.689,43.56 322.7,45.076 324.26,45.388C325.819,45.7 327.336,44.688 327.648,43.129C327.96,41.57 326.949,40.052 325.39,39.74C325.017,39.67 324.633,39.67 324.26,39.74C323.121,39.97 322.23,40.861 322,42"
-      android:strokeWidth="1"
+      android:pathData="M335.356,33.482C335.029,35.134 336.096,36.744 337.745,37.072C339.395,37.4 341.002,36.331 341.329,34.679C341.657,33.026 340.589,31.417 338.94,31.088C338.549,31.014 338.137,31.014 337.745,31.088C336.54,31.332 335.599,32.274 335.356,33.482Z"
       android:fillColor="#DCE1E5"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M310.5,42C310.184,43.564 311.196,45.088 312.759,45.404C314.323,45.721 315.847,44.711 316.165,43.147C316.483,41.584 315.473,40.059 313.91,39.74C313.533,39.67 313.147,39.67 312.77,39.74C311.628,39.969 310.734,40.859 310.5,42"
-      android:strokeWidth="1"
+      android:pathData="M323.199,33.482C322.86,35.134 323.928,36.754 325.588,37.093C327.237,37.432 328.855,36.362 329.193,34.7C329.531,33.048 328.464,31.427 326.804,31.088C326.402,31.003 326,31.003 325.599,31.088C324.393,31.332 323.442,32.274 323.199,33.482Z"
       android:fillColor="#DCE1E5"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M299,42C298.684,43.564 299.696,45.088 301.259,45.404C302.823,45.721 304.347,44.711 304.665,43.147C304.983,41.584 303.973,40.059 302.41,39.74C302.031,39.66 301.639,39.66 301.26,39.74C300.121,39.97 299.23,40.861 299,42"
-      android:strokeWidth="1"
+      android:pathData="M311.041,33.482C310.703,35.134 311.781,36.754 313.43,37.093C315.079,37.432 316.697,36.352 317.035,34.7C317.373,33.048 316.295,31.427 314.646,31.088C314.244,31.003 313.832,31.003 313.43,31.088C312.225,31.332 311.284,32.274 311.041,33.482Z"
       android:fillColor="#DCE1E5"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M249.24,75.49L290.3,75.49C291.29,75.49 292.095,74.69 292.1,73.7L292.1,65.76C292.078,64.782 291.279,64 290.3,64L249.24,64C248.25,64 247.445,64.8 247.44,65.79L247.44,73.7C247.445,74.69 248.25,75.49 249.24,75.49"
-      android:strokeWidth="1"
+      android:pathData="M258.436,68.951H301.844C302.89,68.951 303.736,68.104 303.747,67.055V58.646C303.725,57.608 302.88,56.782 301.844,56.782H258.436C257.39,56.782 256.544,57.629 256.533,58.678V67.055C256.544,68.104 257.39,68.951 258.436,68.951Z"
       android:fillColor="#657887"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M249.24,101.8L290.3,101.8C291.292,101.795 292.095,100.992 292.1,100L292.1,92.07C292.095,91.08 291.29,90.28 290.3,90.28L249.24,90.28C248.25,90.28 247.445,91.08 247.44,92.07L247.44,100C247.445,100.992 248.248,101.795 249.24,101.8L249.24,101.8"
-      android:strokeWidth="1"
+      android:pathData="M258.436,96.815H301.844C302.89,96.815 303.747,95.957 303.747,94.909V86.51C303.736,85.462 302.89,84.615 301.844,84.615H258.436C257.39,84.615 256.544,85.462 256.533,86.51V94.909C256.533,95.957 257.39,96.815 258.436,96.815Z"
       android:fillColor="#657887"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M205,137.24C207.15,113.3 238.49,115.62 240.87,116.57C247.49,101.45 269.87,99.7 277.74,105.29C280.882,99.377 285.948,94.713 292.1,92.07C308.71,84.38 338.1,81.07 355.19,114.64C356.63,114.64 358.07,114.64 359.5,114.76L359.5,137.24L205,137.24Z"
-      android:strokeWidth="1"
+      android:pathData="M211.667,134.35C213.94,108.995 247.072,111.452 249.588,112.458C256.586,96.445 280.246,94.591 288.566,100.512C291.885,94.253 297.245,89.307 303.747,86.51C321.306,78.366 352.377,74.86 370.444,110.414C371.966,110.382 373.488,110.425 375,110.541C375,120.317 375,134.35 375,134.35H211.667Z"
       android:fillColor="#3F3F43"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M226.15,80.48C226.156,81.855 225.045,82.974 223.67,82.98C222.295,82.985 221.176,81.875 221.17,80.5C221.165,79.125 222.275,78.006 223.65,78L223.65,78C225.02,78 226.13,79.11 226.13,80.48L226.13,80.48"
-      android:strokeWidth="1"
+      android:pathData="M234.026,74.236C234.037,75.697 232.863,76.873 231.404,76.883C229.945,76.894 228.772,75.718 228.761,74.257C228.751,72.795 229.924,71.62 231.383,71.609C231.394,71.609 231.394,71.609 231.404,71.609C232.853,71.609 234.026,72.785 234.026,74.236C234.026,74.246 234.026,74.236 234.026,74.236Z"
       android:fillColor="#3F3F43"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M46.73,22.4L47.39,30.48C47.15,27.54 46.84,23.69 46.73,22.4"
-      android:strokeWidth="1"
+      android:pathData="M44.348,12.724L45.046,21.281C44.792,18.167 44.465,14.09 44.348,12.724Z"
       android:fillColor="#E1EEFF"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M45.05,40.14l-0.83,10.53l9.7,0.79l1.69,-11.19z"
-      android:strokeWidth="1"
+      android:pathData="M42.572,31.512L41.695,42.664L51.949,43.501L53.736,31.65L42.572,31.512Z"
       android:fillColor="#F6B893"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M57.6,31.46C57.79,48.62 41.3,48.09 40.69,31.62C40.75,14.79 57.22,14.62 57.6,31.46"
-      android:strokeWidth="1"
+      android:pathData="M55.84,22.319C56.041,40.493 38.608,39.932 37.963,22.489C38.026,4.664 55.438,4.484 55.84,22.319Z"
       android:fillColor="#F6B893"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M34.55,98.3C27.28,125.5 33.21,164.84 34.82,196.37L39.82,196.61C39.82,196.61 43.48,145.44 44.82,133.81C45.24,130.28 46.56,122.74 47.22,119.46C47.27,119.21 47.81,118.13 47.86,119.4C48.13,127.4 51.6,136.33 52.27,145.18C53.81,165.86 53.17,180.18 53.71,197.28C53.71,197.28 59.41,200.77 59.42,200.73C60.7,196 64.54,156.87 64.64,151C64.64,149.8 66.64,124.73 60.64,99.12L34.55,98.3Z"
-      android:strokeWidth="1"
+      android:pathData="M31.472,93.109C23.786,121.916 30.055,163.581 31.757,196.974L37.043,197.228C37.043,197.228 40.912,143.034 42.329,130.717C42.773,126.978 44.168,118.993 44.866,115.519C44.919,115.254 45.49,114.11 45.543,115.455C45.828,123.928 49.496,133.386 50.205,142.759C51.833,164.661 51.156,179.827 51.727,197.937C51.727,197.937 57.753,201.634 57.764,201.591C59.117,196.582 63.176,155.14 63.282,148.923C63.282,147.652 65.396,121.1 59.053,93.977L31.472,93.109Z"
       android:fillColor="#8C8C98"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M62.62,51.53C58.69,48.36 58.54,49.38 54.35,48.48C51.21,52.65 45.83,50.23 44.28,48.55C44.09,48.35 43.59,48.55 43.51,48.55C26.42,49.77 35.22,86.55 34.03,97.49C34,98 34,99 34.54,99C34.54,99 50.26,101.22 56.67,99.94C57.59,99.76 60.67,99.43 60.79,98.76C61.84,87.86 67.47,57.19 62.62,51.55"
-      android:strokeWidth="1"
+      android:pathData="M61.147,43.575C56.992,40.218 56.833,41.298 52.404,40.345C49.084,44.761 43.397,42.198 41.758,40.419C41.557,40.207 41.029,40.419 40.944,40.419C22.877,41.711 32.18,80.664 30.922,92.251C30.859,92.812 30.922,93.892 31.461,93.839C31.461,93.839 48.08,96.191 54.856,94.835C55.829,94.644 59.085,94.295 59.212,93.585C60.322,82.041 66.274,49.559 61.147,43.585"
       android:fillColor="#C66A61"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M37,50.75L37,50.75C38.015,51.722 39.507,52.008 40.81,51.48C42.201,50.805 43.414,49.811 44.35,48.58C45.63,47.108 46.122,45.108 45.67,43.21C45.558,42.535 45.249,41.908 44.78,41.41C41.691,37.832 40.729,32.885 42.25,28.41C42.25,28.25 42.45,26.83 42.53,26.97C43.39,28.37 47.7,28.97 56.92,32.44C56.922,33.479 56.868,34.517 56.76,35.55C56.452,37.252 55.769,38.865 54.76,40.27C53.948,41.062 53.472,42.136 53.43,43.27C53.319,45.31 53.721,47.346 54.6,49.19C56.004,52.018 59.398,53.222 62.27,51.91C64.038,51.059 65.145,49.252 65.1,47.29C65.103,47.24 65.085,47.19 65.051,47.153C65.018,47.115 64.97,47.093 64.92,47.09L64.92,47.09C63.92,47.09 59.79,46.75 60.92,41.34C61.8,36.75 62.82,26.7 58.22,21C58.15,20.93 58.09,20.85 58.02,20.77C57.979,20.703 57.928,20.643 57.87,20.59C57.78,20.48 57.68,20.38 57.58,20.27C57.491,20.175 57.398,20.085 57.3,20C55.723,18.447 53.717,17.402 51.54,17L51.54,17C51.2,17 42.25,15.94 40.68,21.24C40.672,21.29 40.638,21.332 40.59,21.35C40.2,21.6 38.07,23.09 37.83,27.47C37.57,32.3 38.4,34.06 38.6,37.76C38.85,42.19 38.83,46.2 33.26,46.34C33.207,46.34 33.156,46.361 33.119,46.399C33.081,46.436 33.06,46.487 33.06,46.54C33.055,46.56 33.055,46.58 33.06,46.6C33.804,48.43 35.211,49.912 37,50.75"
-      android:strokeWidth="1"
+      android:pathData="M34.062,42.749C35.14,43.776 36.715,44.083 38.09,43.522C39.559,42.812 40.838,41.753 41.832,40.451C43.185,38.894 43.703,36.776 43.227,34.763C43.111,34.054 42.783,33.387 42.286,32.857C39.02,29.065 38.005,23.833 39.612,19.089C39.612,18.919 39.823,17.415 39.908,17.564C40.817,19.046 45.374,19.682 55.121,23.357C55.121,24.458 55.068,25.56 54.951,26.651C54.624,28.451 53.905,30.167 52.837,31.65C51.981,32.486 51.473,33.63 51.431,34.827C51.315,36.987 51.738,39.148 52.668,41.097C54.148,44.094 57.742,45.365 60.777,43.977C62.648,43.077 63.821,41.16 63.768,39.084C63.779,38.979 63.694,38.883 63.578,38.873H63.567C62.51,38.873 58.144,38.513 59.339,32.783C60.28,27.922 61.358,17.278 56.495,11.241C56.421,11.167 56.357,11.082 56.284,10.997C56.241,10.934 56.188,10.86 56.125,10.807C56.03,10.69 55.924,10.584 55.818,10.468C55.713,10.351 55.628,10.267 55.522,10.171C53.852,8.53 51.738,7.418 49.433,6.994C49.074,6.994 39.612,5.871 37.952,11.484C37.942,11.538 37.91,11.58 37.857,11.601C37.445,11.866 35.193,13.444 34.939,18.083C34.664,23.198 35.542,25.062 35.753,28.981C36.018,33.673 35.996,37.919 30.108,38.068C29.992,38.068 29.896,38.163 29.896,38.279C29.896,38.301 29.896,38.322 29.907,38.343C30.689,40.281 32.169,41.859 34.062,42.749Z"
       android:fillColor="#4A4A4A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M40,191.84L34.77,193C34.48,195 30.71,203.86 35.25,205.93C37.04,206.93 38.42,207.93 40.36,206.01C44.53,203.58 40.04,193.51 39.96,191.82"
-      android:strokeWidth="1"
+      android:pathData="M37.234,192.176L31.705,193.405C31.398,195.523 27.412,204.906 32.212,207.099C34.104,208.158 35.563,209.217 37.614,207.183C42.022,204.61 37.276,193.945 37.191,192.155"
       android:fillColor="#4A4A4A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M53.76,194.14C53.89,195.21 52.76,202.81 53.84,203.52C54.108,203.826 54.453,204.054 54.84,204.18L72.84,204.5C76.08,201.05 60.06,199.8 60.42,194.08L53.76,194.14"
-      android:strokeWidth="1"
+      android:pathData="M51.78,194.612C51.918,195.745 50.723,203.794 51.865,204.546C52.15,204.875 52.51,205.108 52.922,205.245L71.951,205.584C75.376,201.93 58.44,200.606 58.821,194.548L51.78,194.612Z"
       android:fillColor="#4A4A4A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M49.55,51.54C48.899,51.25 48.231,51 47.55,50.79C46.967,50.553 46.329,50.487 45.71,50.6C45.233,50.906 44.693,51.101 44.13,51.17C43.938,51.179 43.751,51.11 43.61,50.98C43.45,50.81 43.42,50.62 43.21,49.85C43,49.08 41.21,45.85 40.98,45.17C40.58,44 40,44 40,43.3C40,43.04 40.09,42.89 40.92,41.8C41.61,40.89 42.01,40.39 42.23,40.11C42.604,39.556 43.048,39.052 43.55,38.61C43.892,38.331 44.297,38.139 44.73,38.05C45.088,38.046 45.443,37.981 45.78,37.86C46.011,37.687 46.232,37.5 46.44,37.3C46.95,36.86 47.12,36.72 47.35,36.74C49.294,37.239 51.264,37.633 53.25,37.92C53.64,37.92 55.72,38.69 56.15,38.8C56.77,38.96 57.39,39.14 57.99,39.36C58.24,39.45 57.82,40.73 57.53,41.08C56.866,42.034 56.274,43.037 55.76,44.08C55.501,44.929 55.369,45.812 55.37,46.7C55.37,47.4 55.44,47.89 55.5,49.51C55.532,49.888 55.488,50.269 55.37,50.63C55.253,50.888 55.119,51.139 54.97,51.38C54.86,51.64 54.73,51.891 54.58,52.13C54.29,52.47 53.91,52.38 53.58,52.32C52.38,52.14 52.46,52.51 51.48,52.32C50.844,52.131 50.227,51.88 49.64,51.57"
-      android:strokeWidth="1"
+      android:pathData="M47.329,43.586C46.642,43.278 45.934,43.014 45.215,42.791C44.602,42.537 43.925,42.473 43.27,42.59C42.762,42.918 42.192,43.119 41.599,43.194C41.399,43.204 41.198,43.13 41.05,42.993C40.881,42.812 40.849,42.611 40.627,41.796C40.405,40.98 38.513,37.559 38.269,36.839C37.847,35.6 37.233,35.6 37.233,34.859C37.233,34.583 37.328,34.424 38.206,33.27C38.935,32.306 39.358,31.777 39.591,31.48C39.982,30.898 40.458,30.358 40.986,29.892C41.346,29.595 41.779,29.394 42.234,29.298C42.71,29.214 42.932,29.298 43.344,29.097C43.587,28.917 43.82,28.716 44.042,28.504C44.581,28.038 44.761,27.89 45.004,27.911C47.055,28.441 49.137,28.854 51.241,29.161C51.653,29.161 53.852,29.976 54.307,30.093C54.962,30.262 55.618,30.453 56.252,30.686C56.516,30.781 56.072,32.137 55.766,32.507C55.068,33.514 54.434,34.583 53.894,35.685C53.62,36.585 53.482,37.517 53.482,38.46C53.482,39.201 53.556,39.72 53.62,41.436C53.651,41.838 53.609,42.241 53.482,42.622C53.355,42.897 53.218,43.162 53.059,43.416C52.943,43.692 52.806,43.956 52.647,44.21C52.34,44.57 51.939,44.475 51.59,44.412C50.321,44.221 50.406,44.613 49.37,44.412C48.693,44.21 48.048,43.946 47.424,43.617"
       android:fillColor="#EFEFEF"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M31.08,75.36C31.19,74.722 31.388,74.103 31.67,73.52L34,68.72L34,68.66C38.49,60.56 38.89,59.88 39.3,59.17C39.3,59.09 41.3,55.67 41.3,55.58C41.45,55.13 41.93,53.64 42.3,52.18L42.3,52.07C42.45,51.18 42.59,50.29 42.74,49.41L42.74,49.23L44.25,43.47C44.25,43.08 45.25,42.72 45.36,42.36C45.36,42.36 46.07,42.36 46.14,42.77C46.63,45.98 47.57,45.35 47.35,47.03C47.06,49.592 46.609,52.134 46,54.64C45.71,55.76 45.26,57.49 44.66,59.64C43.77,63.008 42.671,66.318 41.37,69.55C40.173,72.447 38.738,75.24 37.08,77.9L36.98,78.05C35.17,80.25 33.98,80.64 33.19,80.52L33,80.52L31.49,79.93C31.11,79.78 30.94,79.05 30.88,78.6C30.77,77.543 30.81,76.476 31,75.43"
-      android:strokeWidth="1"
+      android:pathData="M27.803,68.813C27.92,68.135 28.131,67.479 28.427,66.864L30.89,61.781V61.717C35.637,53.139 36.06,52.418 36.493,51.666C36.493,51.582 38.608,47.96 38.608,47.864C38.766,47.388 39.274,45.81 39.665,44.263C39.665,44.263 39.665,44.189 39.665,44.147C39.823,43.204 39.971,42.262 40.13,41.33C40.13,41.266 40.13,41.203 40.13,41.139L41.726,35.039C41.726,34.626 42.783,34.244 42.9,33.863C42.9,33.863 43.65,33.863 43.724,34.297C44.242,37.697 45.236,37.03 45.004,38.809C44.697,41.52 44.211,44.21 43.566,46.869C43.259,48.055 42.783,49.887 42.149,52.164C41.208,55.733 40.045,59.239 38.671,62.66C37.402,65.731 35.891,68.686 34.136,71.503L34.03,71.662C32.117,73.992 30.858,74.405 30.023,74.278H29.823L28.226,73.653C27.824,73.494 27.645,72.721 27.581,72.244C27.465,71.122 27.507,69.999 27.708,68.887"
       android:fillColor="#F6B893"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M44.92,53L46.41,52.73C48,49.5 49,44.48 47.59,41.62C46.06,39.62 43.5,42.87 43.12,44.84C42.601,47.634 42.649,50.504 43.26,53.28"
-      android:strokeWidth="1"
+      android:pathData="M42.435,45.132L44.01,44.846C45.691,41.425 46.748,36.108 45.257,33.079C43.64,30.961 40.933,34.403 40.532,36.49C39.982,39.444 40.035,42.484 40.68,45.428"
       android:fillColor="#F6B893"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M65.7,76C65.579,75.393 65.37,74.807 65.08,74.26L62.63,69.72L62.63,69.66C58,62 57.58,61.4 57.16,60.72C57.16,60.65 55.16,57.42 55.08,57.34C54.93,56.91 54.42,55.5 54.08,54.11L54.08,54L53.6,51.46L53.6,51.3C53.829,49.248 53.711,47.172 53.25,45.16C53.14,44.69 53.02,44.24 52.88,43.81C52.829,43.432 52.711,43.066 52.53,42.73C52.43,42.54 51.6,41.02 50.53,41.14C49.998,41.253 49.54,41.588 49.27,42.06C49.066,42.407 48.933,42.791 48.88,43.19C48.56,45.221 48.6,47.293 49,49.31C49.337,51.756 49.832,54.178 50.48,56.56C50.79,57.62 51.26,59.27 51.9,61.29C52.858,64.489 54.013,67.625 55.36,70.68C56.617,73.426 58.102,76.062 59.8,78.56C59.831,78.611 59.868,78.658 59.91,78.7C61.76,80.76 62.97,81.11 63.76,80.98C63.826,80.971 63.89,80.95 63.95,80.92L65.47,80.32C65.78,80.112 65.976,79.772 66,79.4C66.05,78.258 65.949,77.115 65.7,76"
-      android:strokeWidth="1"
+      android:pathData="M64.403,69.491C64.276,68.845 64.054,68.231 63.747,67.648L61.157,62.84C61.157,62.819 61.157,62.798 61.157,62.776C56.252,54.695 55.818,54.028 55.374,53.308C55.374,53.234 53.26,49.813 53.175,49.728C53.017,49.273 52.478,47.78 52.118,46.307C52.118,46.276 52.118,46.233 52.118,46.201L51.611,43.512C51.611,43.448 51.611,43.395 51.611,43.331C51.854,41.16 51.727,38.957 51.241,36.829C51.125,36.331 50.998,35.854 50.85,35.399C50.797,34.996 50.67,34.615 50.48,34.255C50.374,34.054 49.496,32.444 48.365,32.571C47.805,32.688 47.319,33.048 47.033,33.545C46.822,33.916 46.674,34.319 46.621,34.742C46.272,36.892 46.304,39.084 46.716,41.224C47.076,43.819 47.593,46.382 48.281,48.902C48.608,50.025 49.105,51.772 49.782,53.912C50.797,57.301 52.013,60.616 53.44,63.857C54.772,66.769 56.336,69.554 58.134,72.202C58.165,72.255 58.208,72.308 58.25,72.351C60.206,74.532 61.485,74.903 62.32,74.765C62.394,74.755 62.457,74.733 62.521,74.702L64.128,74.066C64.466,73.854 64.688,73.494 64.72,73.092C64.773,71.884 64.667,70.677 64.403,69.491Z"
       android:fillColor="#F6B893"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M32.53,80.32C32.227,79.009 32.093,77.665 32.13,76.32C32.199,74.934 32.43,73.562 32.82,72.23C33.33,70.23 33.82,68.55 33.82,68.45C32.678,69.176 31.714,70.15 31,71.3C29,75.13 30.62,79.3 30.93,79.3L31,79.3C31.21,79.3 31.28,79.3 31.34,79.38C31.4,79.46 31.4,79.66 31.49,79.86C31.558,80.028 31.692,80.162 31.86,80.23C31.86,80.23 32.57,80.41 32.55,80.31"
-      android:strokeWidth="1"
+      android:pathData="M29.336,74.066C29.019,72.679 28.871,71.249 28.913,69.83C28.987,68.358 29.231,66.907 29.643,65.498C30.182,63.38 30.7,61.601 30.7,61.495C29.495,62.268 28.469,63.295 27.719,64.513C25.604,68.57 27.317,72.986 27.645,72.986H27.719C27.941,72.986 28.015,72.986 28.078,73.071C28.142,73.155 28.142,73.367 28.237,73.579C28.311,73.759 28.448,73.897 28.628,73.971C28.628,73.971 29.379,74.161 29.358,74.056"
       android:fillColor="#C66A61"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M65.13,80.5C65.252,78.946 65.208,77.384 65,75.84C64.729,74.482 64.292,73.162 63.7,71.91C62.89,69.97 62.17,68.42 62.11,68.33C63.36,68.858 64.474,69.661 65.37,70.68C67.93,74.17 66.97,78.59 66.66,78.6L66.59,78.6C66.39,78.6 66.32,78.66 66.27,78.73C66.22,78.8 66.27,79.01 66.2,79.23C66.144,79.4 66.031,79.545 65.88,79.64C65.652,79.942 65.401,80.226 65.13,80.49"
-      android:strokeWidth="1"
+      android:pathData="M63.8,74.257C63.927,72.615 63.885,70.952 63.663,69.321C63.377,67.881 62.912,66.483 62.289,65.159C61.432,63.105 60.671,61.463 60.608,61.368C61.929,61.929 63.113,62.776 64.054,63.856C66.76,67.553 65.745,72.234 65.418,72.244H65.344C65.132,72.244 65.058,72.308 65.006,72.382C64.953,72.456 65.006,72.679 64.932,72.912C64.868,73.092 64.752,73.251 64.593,73.346C64.35,73.664 64.086,73.971 63.8,74.246"
       android:fillColor="#C66A61"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M141.58,91.86L106.1,91.86C101.458,91.849 97.682,95.598 97.66,100.24L97.66,100.24L97.66,185.69C97.682,190.332 101.458,194.081 106.1,194.07L141.58,194.07C146.222,194.081 149.998,190.332 150.02,185.69L150.02,185.69L150.02,100.24C149.998,95.598 146.222,91.849 141.58,91.86L141.58,91.86"
-      android:strokeWidth="1"
-      android:fillColor="#1E1E1F"
-      android:fillType="nonZero"
-      android:strokeColor="#00000000"/>
+      android:pathData="M149.359,86.288H111.93C107.035,86.267 103.047,90.249 103.026,95.163V185.663C103.047,190.577 107.035,194.559 111.93,194.538H149.359C154.254,194.559 158.242,190.577 158.263,185.663V95.163C158.242,90.249 154.254,86.267 149.359,86.288Z"
+      android:fillColor="#1E1E1F"/>
   <path
-      android:pathData="M142,92.28C145.255,92.274 147.899,94.905 147.91,98.16L147.91,187.77C147.899,191.025 145.255,193.656 142,193.65L104.84,193.65C101.585,193.656 98.941,191.025 98.93,187.77L98.93,98.16C98.941,94.905 101.585,92.274 104.84,92.28L142,92.28ZM142,89.36L104.84,89.36C102.501,89.355 100.255,90.279 98.597,91.929C96.94,93.579 96.005,95.821 96,98.16L96,98.16L96,187.77C96.005,190.109 96.94,192.351 98.597,194.001C100.255,195.651 102.501,196.575 104.84,196.57L142,196.57C144.339,196.575 146.585,195.651 148.243,194.001C149.9,192.351 150.835,190.109 150.84,187.77L150.84,187.77L150.84,98.16C150.835,95.821 149.9,93.579 148.243,91.929C146.585,90.279 144.339,89.355 142,89.36L142,89.36Z"
-      android:strokeWidth="1"
+      android:pathData="M149.802,86.733C153.231,86.722 156.026,89.518 156.037,92.96V187.866C156.026,191.308 153.231,194.104 149.802,194.093H110.6C107.172,194.104 104.376,191.308 104.366,187.866V92.96C104.376,89.518 107.172,86.722 110.6,86.733H149.802ZM149.802,83.64H110.6C105.463,83.63 101.285,87.803 101.275,92.96V187.866C101.285,193.023 105.463,197.196 110.6,197.186H149.802C154.94,197.196 159.117,193.023 159.128,187.866V92.96C159.117,87.803 154.94,83.63 149.802,83.64Z"
       android:fillColor="#4A4A4A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M143.25,156.13L103.77,156.33C103.218,156.33 102.77,155.882 102.77,155.33L102.61,124.16C102.61,123.608 103.058,123.16 103.61,123.16L103.61,123.16L143.09,122.96C143.642,122.96 144.09,123.408 144.09,123.96L144.25,155.12C144.266,155.385 144.176,155.646 144,155.845C143.824,156.044 143.575,156.165 143.31,156.18L143.25,156.18"
-      android:strokeWidth="1"
+      android:pathData="M151.121,154.356L109.472,154.568C108.891,154.568 108.417,154.091 108.417,153.509L108.248,120.497C108.216,119.914 108.67,119.416 109.25,119.385C109.271,119.385 109.282,119.385 109.303,119.385L150.952,119.173C151.532,119.173 152.007,119.649 152.007,120.232L152.176,153.233C152.207,153.816 151.764,154.324 151.184,154.356C151.163,154.356 151.142,154.356 151.121,154.356Z"
       android:fillColor="#4A4A4A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
   <path
-      android:pathData="M133.73,139.6C133.425,139.69 133.106,139.72 132.79,139.69L131.25,139.69C130.879,139.709 130.512,139.611 130.2,139.41C130.201,138.34 129.969,137.282 129.52,136.31C129.907,135.633 130.653,135.242 131.43,135.31C132.62,135.36 132,134.47 131.82,134.21C130.98,132.97 130.63,133.74 130.45,134.13C130.128,134.542 129.671,134.829 129.16,134.94C128.997,134.96 128.833,134.96 128.67,134.94C128.019,134.109 127.197,133.427 126.26,132.94L126.26,132.94C126.457,131.994 126.89,131.113 127.52,130.38C127.646,130.215 127.811,130.085 128,130C128.47,129.82 128.92,129.46 127.51,128.73C126.29,128.09 126.19,128.73 126.22,129.13C126.23,129.347 126.2,129.564 126.13,129.77C126.04,130.04 125.82,130.82 125.54,131.51C125.406,131.851 125.181,132.148 124.89,132.37C123.885,132.091 122.834,132.019 121.8,132.16C121.491,131.888 121.307,131.501 121.29,131.09C121.27,130.858 121.29,130.625 121.35,130.4C121.54,129.7 121.09,129.84 120.69,129.89C119.23,130.1 119.69,130.71 119.99,130.89C120.29,131.07 120.3,131.62 120.35,131.89C120.397,132.13 120.354,132.379 120.23,132.59C119.259,132.954 118.376,133.519 117.64,134.25C116.777,133.79 116.015,133.161 115.4,132.4C115.289,132.248 115.223,132.068 115.21,131.88C115.13,131.01 114.67,130.96 113.87,132.09C113.07,133.22 113.52,133.31 114.29,133.39C115.068,133.72 115.79,134.169 116.43,134.72C116.59,134.862 116.729,135.027 116.84,135.21C116.645,135.478 116.468,135.758 116.31,136.05C115.976,136.679 115.734,137.352 115.59,138.05C114.908,138.417 114.079,138.382 113.43,137.96C112.61,137.39 112.22,137.83 112.12,138.75C112,139.9 112.93,139.61 113.43,139.4C114.006,139.257 114.612,139.289 115.17,139.49L115.47,139.67C115.501,140.652 115.729,141.618 116.14,142.51C115.437,143.19 114.579,143.688 113.64,143.96C112.48,143.69 111.64,144.07 112.64,145.7C113.64,147.33 114.71,145.27 114.71,145.27C115.178,144.84 115.673,144.439 116.19,144.07C116.38,143.925 116.593,143.814 116.82,143.74C117.394,144.542 118.121,145.222 118.96,145.74L118.96,145.79C119.166,146.654 118.801,147.554 118.05,148.03C117.05,148.68 118.05,149.03 118.36,149.15C119.77,149.67 119.61,148.85 119.53,148.42C119.552,147.894 119.757,147.391 120.11,147C120.331,146.803 120.595,146.659 120.88,146.58C121.858,146.843 122.88,146.897 123.88,146.74C124.42,147.55 124.762,148.474 124.88,149.44C124.916,149.736 124.875,150.035 124.76,150.31C124.56,150.93 125.02,151.02 126.05,150.74C127.28,150.39 126.76,149.87 126.42,149.63C126.28,149.53 126.18,149.48 126.13,149.32C125.832,148.583 125.591,147.824 125.41,147.05C125.38,146.814 125.38,146.576 125.41,146.34C126.228,146.031 126.984,145.577 127.64,145C128.409,144.877 129.139,145.378 129.3,146.14C129.72,147.26 130.3,146.35 130.46,146.14C131.28,144.88 130.46,144.85 130.01,144.84C129.594,144.804 129.222,144.569 129.01,144.21C128.917,144.045 128.853,143.866 128.82,143.68C128.98,143.44 129.13,143.2 129.27,142.94C129.601,142.31 129.844,141.637 129.99,140.94C130.776,140.628 131.647,140.603 132.45,140.87C132.916,140.959 133.365,141.121 133.78,141.35C134.29,141.76 134.54,141.35 134.62,140.29C134.75,139.05 134.08,139.36 133.73,139.6Z"
-      android:strokeWidth="1"
+      android:pathData="M141.078,136.849C140.751,136.944 140.424,136.976 140.086,136.944C139.812,136.944 139.305,136.944 138.462,136.944C138.071,136.966 137.681,136.86 137.354,136.648C137.354,135.515 137.111,134.392 136.636,133.365C137.048,132.644 137.829,132.231 138.651,132.306C139.907,132.358 139.253,131.416 139.063,131.141C138.177,129.827 137.807,130.643 137.618,131.056C137.28,131.49 136.795,131.797 136.257,131.914C136.088,131.935 135.909,131.935 135.74,131.914C135.054,131.035 134.189,130.314 133.197,129.795C133.408,128.789 133.862,127.857 134.527,127.084C134.664,126.915 134.843,126.788 135.043,126.703C135.539,126.512 136.014,126.131 134.527,125.358C133.24,124.68 133.134,125.358 133.166,125.781C133.176,126.014 133.145,126.237 133.071,126.459C132.976,126.745 132.744,127.571 132.448,128.302C132.311,128.662 132.069,128.98 131.763,129.213C130.708,128.916 129.589,128.842 128.503,128.991C128.176,128.705 127.986,128.292 127.965,127.857C127.944,127.614 127.965,127.36 128.028,127.127C128.229,126.385 127.754,126.533 127.332,126.586C125.792,126.809 126.277,127.455 126.593,127.646C126.91,127.836 126.92,128.419 126.973,128.705C127.026,128.959 126.973,129.224 126.847,129.446C125.823,129.827 124.895,130.431 124.114,131.204C123.207,130.717 122.395,130.05 121.751,129.245C121.635,129.086 121.561,128.895 121.551,128.694C121.466,127.773 120.981,127.72 120.137,128.916C119.293,130.113 119.768,130.209 120.58,130.293C121.403,130.643 122.163,131.119 122.838,131.702C123.007,131.85 123.154,132.03 123.27,132.221C123.059,132.507 122.88,132.803 122.711,133.11C122.363,133.778 122.099,134.487 121.952,135.229C121.234,135.62 120.359,135.578 119.673,135.133C118.808,134.53 118.396,134.996 118.291,135.97C118.164,137.188 119.145,136.881 119.673,136.658C120.285,136.51 120.918,136.542 121.509,136.754C121.614,136.807 121.72,136.87 121.825,136.944C121.857,137.982 122.099,139.01 122.532,139.952C121.793,140.672 120.886,141.202 119.894,141.488C118.671,141.202 117.785,141.604 118.84,143.331C119.894,145.057 121.023,142.875 121.023,142.875C121.519,142.42 122.036,141.996 122.585,141.604C122.785,141.456 123.007,141.329 123.249,141.255C123.851,142.102 124.621,142.822 125.507,143.373V143.426C125.728,144.337 125.338,145.29 124.547,145.798C123.492,146.487 124.547,146.857 124.874,146.985C126.361,147.535 126.192,146.667 126.108,146.211C126.129,145.65 126.351,145.121 126.72,144.707C126.952,144.496 127.237,144.347 127.532,144.263C128.566,144.538 129.642,144.602 130.697,144.432C131.267,145.29 131.625,146.264 131.752,147.292C131.794,147.609 131.742,147.927 131.625,148.213C131.414,148.87 131.9,148.965 132.986,148.668C134.284,148.298 133.735,147.747 133.377,147.493C133.229,147.387 133.123,147.334 133.071,147.165C132.754,146.381 132.501,145.576 132.311,144.76C132.28,144.506 132.28,144.263 132.311,144.008C133.176,143.68 133.967,143.204 134.664,142.589C134.769,142.589 135.877,142.335 136.415,143.797C136.858,144.983 137.47,144.019 137.639,143.797C138.504,142.462 137.639,142.43 137.164,142.42C136.721,142.377 136.331,142.134 136.109,141.753C136.014,141.573 135.94,141.393 135.909,141.191C136.077,140.937 136.236,140.683 136.383,140.408C136.731,139.751 136.985,139.052 137.143,138.332C137.976,138.003 138.894,137.972 139.738,138.258C140.223,138.353 140.698,138.522 141.141,138.766C141.679,139.2 141.943,138.766 142.027,137.643C142.154,136.267 141.447,136.595 141.078,136.849Z"
       android:fillColor="#FF919A"
-      android:fillType="evenOdd"
-      android:strokeColor="#00000000"/>
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M359.968,50.755V2.02H287.036V50.755H359.968Z"
+      android:fillColor="#004996"/>
+  <path
+      android:pathData="M359.968,50.755V2.02H287.036V50.755H359.968Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#00000000"
+      android:strokeColor="#000000"/>
+  <path
+      android:pathData="M323.5,8.787L323.196,9.701H322.217L323.027,10.276L322.723,11.19L323.5,10.615L324.31,11.19L324.006,10.276L324.783,9.701H323.804L323.5,8.787Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M315.396,10.987L315.092,11.901H314.113L314.924,12.476L314.62,13.39L315.396,12.815L316.173,13.39L315.869,12.476L316.679,11.901H315.7L315.396,10.987Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M309.487,16.944L309.184,17.857H308.204L309.015,18.433L308.711,19.38L309.487,18.805L310.264,19.38L309.96,18.433L310.77,17.857H309.791L309.487,16.944Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M307.259,25.066L306.955,25.98H305.976L306.752,26.555L306.449,27.469L307.259,26.894L308.035,27.469L307.732,26.555L308.542,25.98H307.563L307.259,25.066Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M309.454,33.189L309.15,34.136H308.171L308.947,34.712L308.643,35.625L309.454,35.05L310.23,35.625L309.926,34.678L310.737,34.136H309.758L309.454,33.189Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M315.396,39.145L315.092,40.093H314.113L314.89,40.668L314.586,41.582L315.396,41.007L316.173,41.582L315.869,40.668L316.646,40.093H315.7L315.396,39.145Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M323.5,41.311L323.196,42.259H322.217L323.027,42.834L322.723,43.748L323.5,43.173L324.31,43.748L324.006,42.8L324.783,42.259H323.804L323.5,41.311Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M331.638,10.987L331.908,11.901H332.887L332.11,12.476L332.414,13.39L331.638,12.815L330.827,13.39L331.131,12.476L330.354,11.901H331.334L331.638,10.987Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M337.547,16.944L337.817,17.857H338.796L338.019,18.433L338.323,19.38L337.547,18.805L336.736,19.38L337.04,18.433L336.263,17.857H337.243L337.547,16.944Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M339.775,25.066L340.079,25.98H341.058L340.247,26.555L340.551,27.469L339.775,26.894L338.964,27.469L339.268,26.555L338.492,25.98H339.471L339.775,25.066Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M337.58,33.189L337.884,34.136H338.863L338.053,34.712L338.357,35.625L337.58,35.05L336.77,35.625L337.074,34.678L336.297,34.136H337.276L337.58,33.189Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
+  <path
+      android:pathData="M331.638,39.145L331.941,40.093H332.921L332.11,40.668L332.414,41.582L331.638,41.007L330.861,41.582L331.131,40.668L330.354,40.093H331.334L331.638,39.145Z"
+      android:strokeWidth="0.25"
+      android:fillColor="#FFD500"
+      android:strokeColor="#FFD500"/>
 </vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/ic_contact_diary_shortcut_icon.xml b/Corona-Warn-App/src/main/res/drawable/ic_contact_diary_shortcut_icon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b032e95724c50691682b18b343ded2797988b7b2
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/drawable/ic_contact_diary_shortcut_icon.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="34dp"
+    android:height="34dp"
+    android:viewportWidth="34"
+    android:viewportHeight="34">
+  <path
+      android:pathData="M17,17m-17,0a17,17 0,1 1,34 0a17,17 0,1 1,-34 0"
+      android:fillColor="#F5F5F5"/>
+  <path
+      android:pathData="M24.3816,24.6345V10.1056C24.3816,8.8422 23.476,8 22.2126,8H11.9787C10.9164,8 9.9932,9.0445 10,10.1056C10,14.7983 10,19.7317 10,24.4238C10,25.6872 10.8425,26.5294 12.1546,26.5294H23.8971C23.8971,26.5294 24.3182,26.5294 24.3182,26.1083C24.3182,25.6872 24.3182,25.266 24.3182,25.266C24.3182,25.266 24.3182,24.8496 23.8971,24.8449C23.476,24.8402 12.948,24.8449 12.948,24.8449C12.948,24.8449 11.6845,24.8449 11.6845,23.5816C11.6845,23.0036 11.6845,22.7393 11.6845,22.7393C11.6845,21.4759 12.948,21.4759 12.948,21.4759C11.8333,21.4759 21.1642,21.4759 23.4759,21.4759C23.4759,21.4759 23.0548,22.3182 23.0548,23.1604C23.0548,23.6429 23.4759,24.6345 23.4759,24.6345C23.8971,24.6345 24.3816,24.6345 24.3816,24.6345Z"
+      android:fillColor="#777677"/>
+</vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/ic_illustration_interoperability.xml b/Corona-Warn-App/src/main/res/drawable/ic_illustration_interoperability.xml
index 9000e1ab170b30f045442c7ac041f45085ccc2e8..5b8b8b9f788359d64c3cf1515b643d35746e17f4 100644
--- a/Corona-Warn-App/src/main/res/drawable/ic_illustration_interoperability.xml
+++ b/Corona-Warn-App/src/main/res/drawable/ic_illustration_interoperability.xml
@@ -1,134 +1,1047 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="360dp"
-    android:height="220dp"
-    android:viewportWidth="360"
-    android:viewportHeight="220">
+    android:width="375dp"
+    android:height="209dp"
+    android:viewportWidth="375"
+    android:viewportHeight="209">
   <group>
     <clip-path
-        android:pathData="M0,0h360v220h-360z"/>
+        android:pathData="M0,0h375v209h-375z"/>
     <path
-        android:pathData="M253.634,-1.772L246.507,0.715L248.993,9.699L244.965,8.771L240.009,17.142L237.207,13.429L232.251,22.711L232.881,27.667L228.853,30.469L227.295,26.126L224.195,22.413L220.167,23.026L222.636,31.082L225.754,32.01L226.367,36.669L222.339,34.497L218.311,42.553L222.339,48.438L212.724,45.968L212.111,48.438L217.067,51.853L214.598,53.394L209.624,51.853L206.524,47.194L204.353,43.166L198.784,42.553L197.855,39.138L210.255,41.012L217.067,36.966L215.526,31.397L203.74,27.054L189.799,26.441L187.926,21.783L179.887,19.926L163.775,32.01L147.961,58.665L129.677,70.434L127.803,87.807L130.605,93.061L136.192,92.448L142.076,89.348L145.789,83.148L149.204,107.947L153.53,109.803L156.017,105.145L161.288,104.532L163.145,91.204L168.416,83.464L163.46,78.805L163.46,70.136L169.957,63.008L173.372,49.681L178.941,48.14L182.356,53.394L174.3,64.549L173.985,76.949L182.672,81.59L197.855,74.777L200.342,80.679L185.141,85.635L185.456,96.791L179.257,93.989L178.328,107.316L169.957,114.129L154.773,119.103L143.32,116.616L141.446,98.647L135.246,100.188L134.318,119.103L131.849,116.931L121.936,120.031L116.963,129.015L108.294,130.258L102.392,137.684L94.353,134.584L80.098,139.54L88.452,147.614L92.182,153.183L91.551,159.085L84.424,165.897L67.068,164.969L61.814,161.239L57.471,160.626L54.686,160.941L56.228,163.41L55.299,167.438L50.641,179.225L47.559,181.379L46.613,185.109L49.1,186.65L46,194.409L50.028,197.193L53.741,195.652L57.769,199.049L55.912,202.465L59.012,204.934L64.897,201.834L76.07,203.393L88.767,196.265L86.91,190.381L95.895,184.181L105.509,180.468L105.509,175.197L109.222,172.395L119.765,176.423L129.362,168.997L134.318,169.61L141.148,182.64L155.386,192.85L160.658,196.58L159.117,205.564L161.288,206.493L166.244,199.365L163.775,196.878L165.631,192.85L172.129,195.021L170.272,190.065L160.658,186.965L161.603,184.496L156.945,183.55L152.602,180.153L149.204,173.025L145.789,170.854L143.618,164.969L151.061,162.798L176.157,183.253L176.472,192.237L193.827,212.062L201.27,202.78L190.097,190.065L196.612,191.309L195.369,188.209L201.883,185.722L207.768,189.137L217.995,182.64L210.868,173.34L215.824,152.57L222.023,148.542L224.808,151.642L237.207,147.614L249.309,139.243L246.191,152.885L288.03,173.025L294.545,172.71L298.888,167.438L301.357,171.782L306.629,169.925L305.403,157.211L290.517,150.714L289.886,146.37L287.417,143.883L283.704,143.586L284.632,135.53L288.66,130.258L283.704,124.374L277.505,124.672L274.405,113.218L284.93,98.647L297.014,97.404L314.387,89.348L315,81.905L302.916,81.59L297.329,70.434L291.76,74.777L293.617,67.649L287.102,67.649L284.632,64.252L284.632,54.952L262.619,23.341L265.736,5.355L253.634,-1.772ZM74.038,25.548L68.171,28.105L71.481,30.206L69.975,33.219L65.457,38.49L72.83,45.408L81.096,44.952L88.171,42.693L88.924,39.243L87.121,32.921L81.096,34.129L80.501,31.555L73.741,32.623L74.932,27.492L74.038,25.548ZM97.05,84.076L91.184,89.786L91.937,98.21L94.336,98.525L90.431,103.183L90.728,105.285L96.157,104.689L95.247,108.595L95.842,114.304L92.69,112.658L87.874,115.652L91.184,116.721L88.767,119.278L85.317,118.822L84.861,121.082L92.094,124.391L90.273,125.145L86.823,124.234L81.096,127.701L82.147,129.505L86.21,128.454L87.716,129.961L90.431,127.544L94.494,129.208L101.569,129.208L104.126,129.961L108.189,127.999L104.721,125.74L110.448,122.132L110.133,119.278L104.879,118.367L106.683,116.406L105.176,108.297L102.917,107.089L103.215,102.43L100.501,99.12L99.747,97.019L103.81,94.602L105.176,90.837L100.22,90.399L97.646,91.134L97.804,89.33L103.057,86.178L102.164,84.672L97.05,84.076ZM83.058,98.963L77.646,100.924L79.292,102.728L77.191,104.532L73.741,102.273L71.026,106.791L73.741,109.19L67.716,112.815L68.014,116.265L70.273,117.474L79.292,116.406L82.147,115.968L84.108,111.747L85.159,108.139L88.171,105.74L87.121,101.222L83.058,98.963ZM132.724,178.682L129.012,180.118L129.152,183.761L131.078,185.967L132.287,183.113L132.497,182.044L133.075,180.836L132.724,178.682ZM131.411,187.123L125.089,189.4L127.348,199.768L132.707,198.944L133.022,190.853L131.411,187.123ZM145.737,203.778L144.196,206.457L155.281,212.972L157.558,211.344L157.103,207.911L158.276,205.564L158.241,203.971L152.006,205.477L145.737,203.778Z"
-        android:strokeWidth="1"
-        android:fillColor="#DBE1E5"
-        android:fillType="nonZero"
-        android:strokeColor="#00000000"/>
-  </group>
-  <group>
-    <clip-path
-        android:pathData="M0,0h360v220h-360z"/>
-    <path
-        android:pathData="M16,8l80,0l0,54.545l-80,0z"
-        android:strokeWidth="1"
-        android:fillColor="#3F51B5"
-        android:fillType="nonZero"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M56,13.455L56.995,15.484L59.216,15.807L57.609,17.385L57.989,19.616L56,18.564L54.013,19.616L54.393,17.385L52.785,15.807L55.007,15.484L56,13.455ZM46.447,16.331L47.442,18.36L49.664,18.685L48.056,20.264L48.436,22.495L46.449,21.442L44.462,22.495L44.84,20.264L43.233,18.685L45.456,18.36L46.447,16.331ZM39.66,22.635L40.655,24.664L42.878,24.987L41.271,26.565L41.649,28.796L39.662,27.744L37.675,28.796L38.055,26.565L36.447,24.987L38.669,24.664L39.66,22.635ZM65.553,16.331L64.558,18.36L62.336,18.685L63.944,20.264L63.564,22.495L65.551,21.442L67.538,22.495L67.16,20.264L68.767,18.685L66.544,18.36L65.553,16.331ZM46.447,46.991L47.442,49.02L49.664,49.345L48.056,50.924L48.436,53.155L46.449,52.102L44.462,53.155L44.84,50.924L43.233,49.345L45.456,49.02L46.447,46.991ZM65.553,46.991L64.558,49.02L62.336,49.345L63.944,50.924L63.564,53.155L65.551,52.102L67.538,53.155L67.16,50.924L68.767,49.345L66.544,49.02L65.553,46.991ZM72.34,22.635L71.345,24.664L69.122,24.987L70.729,26.565L70.351,28.796L72.338,27.744L74.325,28.796L73.945,26.565L75.553,24.987L73.331,24.664L72.34,22.635ZM39.66,40.596L40.655,42.625L42.878,42.951L41.271,44.529L41.649,46.76L39.662,45.707L37.675,46.76L38.055,44.529L36.447,42.951L38.669,42.625L39.66,40.596ZM72.34,40.596L71.345,42.625L69.122,42.951L70.729,44.529L70.351,46.76L72.338,45.707L74.325,46.76L73.945,44.529L75.553,42.951L73.331,42.625L72.34,40.596ZM74.602,32.191L75.596,34.22L77.818,34.545L76.211,36.124L76.591,38.355L74.604,37.302L72.616,38.355L72.996,36.124L71.384,34.545L73.607,34.22L74.602,32.191ZM37.398,32.191L38.393,34.22L40.616,34.545L39.007,36.124L39.387,38.355L37.4,37.302L35.413,38.355L35.793,36.124L34.182,34.545L36.404,34.22L37.398,32.191ZM56,50.927L56.995,52.956L59.216,53.282L57.609,54.86L57.987,57.091L56,56.038L54.013,57.091L54.393,54.86L52.785,53.282L55.007,52.956L56,50.927Z"
-        android:strokeWidth="1"
-        android:fillColor="#FFEB3B"
-        android:fillType="nonZero"
-        android:strokeColor="#00000000"/>
-  </group>
-  <group>
-    <clip-path
-        android:pathData="M0,0h360v220h-360z"/>
+        android:pathData="M123.402,136.31V135.764L123.341,135.278L123.402,135.825V136.371L123.462,136.796L123.402,136.31Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.373,134.125L124.252,133.032V132.546L124.191,132.061L124.13,132.121L124.191,132.607V133.153L124.252,134.185L124.312,134.671L124.373,134.61V134.125Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M123.584,138.373L123.523,137.888H123.038V137.948L123.523,137.888L123.584,138.434V138.92V138.373Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M129.837,129.51L129.776,128.964L129.23,128.539L129.169,128.6L129.715,129.085L129.776,129.571L129.351,131.149L129.412,131.089L129.837,129.51Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M120.063,133.396L120.488,132.91L120.063,133.396Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M119.092,142.44L119.152,142.865V142.805V142.44H119.092Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M129.655,127.446L129.594,126.414L129.533,125.929H129.472L129.533,126.475L129.594,127.507L129.655,127.993L129.715,127.932L129.655,127.446Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M130.079,125.261L130.019,124.776L129.958,124.29V124.836L130.019,125.383L130.079,125.808V125.261Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M184.776,191.311L185.323,191.736L184.776,191.311Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M127.348,154.947L127.408,155.494L127.348,154.947Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M147.503,140.377L146.531,140.984L147.564,140.377H147.503Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M118.484,141.409L118.545,141.834V141.895V141.409H118.484Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M138.154,157.375L138.396,157.557L138.154,157.375Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M123.827,141.59L124.373,142.076V142.197V142.015L123.766,141.53L123.219,141.044V141.105L123.827,141.59Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.495,143.533L124.434,143.048V142.684V143.109L124.495,143.533Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M123.219,140.983V140.497L123.159,140.012V139.708V140.012L122.673,140.072L123.219,140.619V140.983Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M181.923,187.243L182.348,186.758L181.923,187.243Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.07,144.323L124.555,145.112L125.162,146.084V146.144L124.555,145.112L124.07,144.323Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M127.773,153.307L127.712,152.275V151.79L128.198,151.182V150.697L128.623,149.604L129.108,149.058L130.079,147.965L130.019,147.904L129.108,148.936L128.562,149.543L128.137,150.636L128.198,151.122L127.651,151.729L127.712,152.275L127.773,153.307V153.793L127.348,154.339V154.4L127.833,153.854L127.773,153.307Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.069,175.101L125.041,175.04L124.919,174.979L123.887,175.04H123.462L123.523,175.162L124.069,175.101Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M159.947,161.441L159.522,161.502L159.947,161.441Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M182.652,167.755H183.016H182.47L182.045,167.816L182.652,167.755Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M147.806,162.292H147.867L147.442,161.928L147.806,162.292Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M188.055,171.095L189.026,170.487V170.427L187.994,171.095L187.569,171.58L187.63,171.641L188.055,171.095Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M189.566,181.465L189.324,181.482L189.328,181.543L189.57,181.526L189.566,181.465Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M116.238,139.467L116.178,138.435H116.117L116.238,139.406V139.892L115.753,140.438L115.813,140.499L116.299,140.013L116.238,139.467Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M188.358,174.798H188.601L188.662,174.737H188.358V174.798Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M122.552,169.942L122.43,169.881H121.945L122.066,170.002L122.552,169.942Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M111.746,135.582V136.007H111.807V135.582H111.746Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M112.839,136.007H112.778L112.839,136.432L112.899,136.978V136.553L112.839,136.007Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M113.931,137.038L113.992,137.463V137.524V137.038H113.931Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M122.916,144.14L123.523,144.08L122.613,143.897L122.916,144.14Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M121.641,169.638L121.52,169.517L121.641,169.638Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M123.827,164.478H124.13L123.766,164.175L123.827,164.478Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M163.887,157.477L163.403,157.512L163.407,157.572L163.892,157.538L163.887,157.477Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M164.257,155.371L164.197,155.553H164.318V155.371H164.257Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M162.497,159.743H162.982V159.683L162.497,159.743Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M183.502,149.787L183.077,149.423H182.895L183.441,149.848L183.502,149.787Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M166.443,154.279L165.958,153.854H165.775L166.261,154.279H166.443Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M184.655,149.301L184.594,149.361L184.837,149.422L184.655,149.301Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M165.108,152.519L164.986,152.397L165.047,152.519H165.108Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M149.688,157.982L149.566,157.921L149.688,157.982Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M149.142,157.497L149.263,157.618L149.202,157.072L149.142,156.586L149.081,156.525V157.011L149.142,157.497Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M141.25,157.01V156.585H141.128V157.01H141.25Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M149.688,156.04L150.113,156.404L149.688,156.04Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M159.704,149.36L159.219,148.996L159.644,149.36H159.704Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M164.865,155.372L165.29,154.825H165.229L164.865,155.311V155.372Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M137.486,157.252L137.364,157.191L137.486,157.252Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M149.02,154.461L149.445,154.886V154.825L149.02,154.461Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M163.226,155.433V155.493H163.772L163.894,155.433H163.772H163.226Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M167.111,140.62L167.05,140.56L166.625,141.106L167.111,140.62Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M176.945,144.626L176.885,144.08L177.856,143.533V143.473L176.824,144.08L176.885,144.626L176.46,145.112V145.172L176.945,144.626Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M164.501,140.741H164.683L164.44,140.802L164.986,141.227H165.047L164.501,140.741Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M181.134,144.323L181.255,144.08L181.073,144.323L179.556,144.93L181.134,144.323Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M174.821,144.201L175.306,144.14L175.792,143.654H175.731L175.246,144.201H174.699L174.274,144.747L174.335,144.808L174.821,144.201Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M150.173,140.194H150.113L149.141,140.801L150.173,140.194Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M164.076,141.833L164.501,141.287H164.44L164.015,141.833V142.198L164.076,142.319V141.833Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M151.206,139.588L151.691,139.527L153.27,138.374L153.695,137.827L154.18,137.281L155.212,136.674L154.18,137.281L153.695,137.827L153.209,138.374L151.691,139.527L151.145,139.588L150.659,140.134L151.206,139.588Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M150.781,148.572L150.234,148.086L149.566,147.054L149.02,146.022L148.413,145.597V145.051L148.292,144.019L147.745,143.473L147.199,143.048L147.138,142.016H146.592H147.077L147.199,143.048L147.745,143.473L148.292,144.019L148.352,145.051L148.413,145.597L149.02,146.022L149.566,147.054L150.174,148.086L150.72,148.572L151.206,148.511L151.327,148.633L151.266,148.511L150.781,148.572Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M145.924,139.952H145.863L145.985,140.984L146.592,142.016L145.985,140.984L145.924,139.952Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M162.861,140.863L161.89,140.924L162.861,140.863Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M156.851,137.099V136.978L156.791,137.038L156.851,137.099L156.305,137.645L156.851,137.099Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M153.998,150.818L153.512,150.454L153.937,150.818H153.998Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M168.871,35.536L169.842,35.476L170.935,35.961L172.028,36.447L172.089,37.479H172.149L172.028,36.447L170.996,35.961L169.903,35.476L168.871,35.536Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M167.9,37.235L168.932,37.721V37.66L167.9,37.235Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M170.328,33.411L170.571,33.351L170.328,33.411Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M172.514,34.808L172.453,34.261L171.36,33.836L170.814,33.351L171.36,33.836L172.453,34.261V34.808L173.06,35.84H173.364H173.121L172.514,34.808Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M150.234,86.408L149.809,86.469L150.234,86.408Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M173.971,35.778H174.153L174.699,36.264L174.153,35.778H173.971Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M166.443,38.936L166.989,39.421L167.475,39.361L167.05,39.421L166.443,38.936Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M151.934,64.676L151.874,64.737V65.222L152.359,65.161H151.934V64.676Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M163.954,40.696H163.407H163.954L164.986,41.121L165.472,41.061L165.047,41.121L163.954,40.696Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M176.824,35.597L177.31,35.536L177.917,36.507L177.31,35.536L176.824,35.597Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M220.108,113.787L219.137,113.848L220.108,113.787Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M146.895,90.84H146.835L146.895,91.386L147.381,91.872H147.442L146.956,91.386L146.895,90.84Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M174.76,38.327L175.913,38.752H176.399L176.52,39.784L177.067,40.27L177.127,40.816V41.302L177.188,41.909V42.395L176.702,42.941H176.763L177.249,42.395L177.188,41.848V41.302L177.127,40.816L177.067,40.27L176.52,39.784L176.46,38.752H175.913L174.821,38.327L173.728,37.842L173.242,37.903L173.728,37.842L174.76,38.327Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M184.109,27.158H183.866H184.109L183.623,28.251L185.262,28.615L183.684,28.251L184.109,27.158Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M186.598,32.258L186.537,31.772L186.476,30.679L186.962,30.072V29.526L186.355,29.101L185.809,28.615H185.687H185.748L186.355,29.101L186.901,29.587L186.962,30.072L186.476,30.679L186.537,31.772V32.258L186.598,32.743L186.659,33.29V32.743L186.598,32.258Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M179.07,23.82L178.099,24.427L178.16,25.459V26.005L178.22,26.491L178.706,25.459L179.131,24.366L179.617,23.212L179.556,22.727L179.495,22.241L179.07,23.273V23.82Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M100.015,105.953L99.955,105.957L99.981,106.32L100.041,106.316L100.015,105.953Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M81.757,108.323H81.696L81.271,108.809V108.87L81.757,108.323Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M101.426,105.834L101.547,105.713L101.183,105.409H100.94L101.426,105.834Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M79.51,105.835H79.875L80.482,106.26L80.543,106.199L79.996,105.774L79.51,105.835Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M172.635,37.418L173.243,37.904L172.635,37.418Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M93.41,124.704L93.046,124.729L93.055,124.851L93.418,124.825L93.41,124.704Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M71.679,114.759L71.133,114.82L70.587,114.334L69.555,114.941L70.04,114.88L70.647,114.82L71.194,115.366L72.226,115.305L72.772,115.245L72.165,114.759H71.679Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M84.064,110.752L84.671,111.238L84.61,110.752H84.064Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M188.116,37.478L187.994,37.296V37.417L188.116,37.478Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M193.761,52.23L193.883,52.351L193.761,51.866L193.822,51.684L193.761,51.744V52.23Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M186.962,33.229L186.78,33.29L186.962,33.229Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M194.186,49.195L194.065,49.073L194.126,49.316L194.186,49.195Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M226.058,50.773L226.665,50.713L227.697,51.138L227.15,50.106L226.604,49.681L224.054,50.348L225.086,50.834L226.058,50.773Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M199.225,71.352L199.347,71.23V70.866L199.225,71.352Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M195.401,55.933H195.34L195.401,55.993V55.933Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M204.871,186.817H204.81L204.385,187.242H204.506L204.871,186.817Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M190.787,174.736L190.726,174.433L190.665,174.312V174.615L190.787,174.736Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M202.2,187.485L201.653,187.85L202.2,187.485Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M204.749,147.177L205.296,146.57L205.781,146.084L205.721,146.145L205.235,146.57L204.688,147.177L203.292,147.784H203.353L204.749,147.177Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M209.97,146.812L210.517,146.751L209.91,146.812L209.485,147.297L209.545,147.358L209.97,146.812Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M216.162,153.187H216.648H216.162L215.677,153.247L216.162,153.187Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M202.139,147.358V147.48H202.321L202.139,147.358Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M209.849,182.75H209.788L209.302,183.296H209.424L209.849,182.75Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M212.034,147.176V147.722H212.095L212.034,147.176Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M207.117,186.394L206.995,186.515H207.117V186.394Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M207.967,184.45L207.724,184.511L207.785,184.572L207.967,184.693V184.45Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M251.19,138.739L252.162,138.678L253.194,138.617L252.222,138.678L251.19,138.739Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M199.893,187.182H199.589L199.771,187.303L199.893,187.182Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M209.181,186.454V186.394L208.756,186.94L209.181,186.454Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M208.271,189.125L208.088,189.368L208.271,189.125Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M208.695,187.546V187.485L208.574,187.546H208.695Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M245.727,128.175V128.114L244.695,128.661L244.755,128.721L245.727,128.175Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M243.662,128.295L243.602,127.749V128.295L242.691,128.842L243.662,128.295Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M238.442,128.114L239.413,127.021H239.352L238.381,128.114L237.956,128.661L237.713,128.721L238.017,128.661L238.442,128.114Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M236.863,128.235H236.803L236.317,128.782H236.378L236.863,128.235Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M252.526,128.114L252.465,128.175L251.979,128.782H252.04L252.526,128.114Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M235.831,128.297L235.285,128.358L234.313,128.418L235.345,128.358L235.831,128.297Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M246.819,128.053L247.851,127.992H248.034H247.791L246.759,128.053L246.819,128.539L246.395,128.599L246.819,128.539V128.053Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M248.883,128.417H248.823L248.883,128.903L248.944,129.024L248.883,128.417Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M209.302,129.693L209.363,129.571L209.302,129.632V129.693Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M190.544,130.482L190.605,130.36L190.483,130.482H190.544Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M214.645,128.843V128.782H214.463L214.645,128.843Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M207.542,129.328L207.603,129.207L207.299,128.964L207.542,129.328Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M193.579,128.113L194.186,128.053L193.579,128.113Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M221.808,121.559H221.747L220.715,122.044H220.776L221.808,121.559Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M225.329,120.708L224.358,121.376H224.418L225.329,120.708Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M222.779,120.891L223.265,120.83L222.719,120.891L222.233,121.559H221.99L222.294,121.498L222.779,120.891Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M230.914,124.471H231.278H230.853L230.368,125.078L230.914,124.471Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M136.818,114.395L137.304,114.819H137.364L136.818,114.395Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M138.336,114.759L138.639,115.062L138.7,115.002L138.457,114.759H138.336Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M264.242,160.167L264.667,159.135H264.606L264.181,160.228L263.696,160.774H263.635H263.696L264.242,160.167Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M262.178,160.897H262.117L261.632,161.99H261.692L262.178,160.897Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M179.374,104.62H179.313L177.674,105.288H177.795L179.374,104.62Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M269.402,159.804L267.277,159.986H266.853H267.277L269.402,159.804Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M198.375,93.39V93.45L198.861,93.875L199.468,94.361V94.3L198.982,93.875L198.375,93.39Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M280.451,160.654L280.937,160.108L281.908,159.501H281.847L280.876,160.108L280.39,160.654L279.419,160.715L278.933,160.776L279.419,160.715L280.451,160.654Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M138.275,122.104L138.214,121.011L137.122,120.586L137.729,121.072L138.275,122.104Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M276.687,159.863L275.169,159.985L276.687,159.863Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M274.077,159.501H274.38H274.016L272.498,160.169L271.891,160.229L272.559,160.169L274.077,159.501Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M270.495,160.289L269.948,160.35L270.495,160.289Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M197.464,95.576V96.122L197.525,96.062V95.576H197.464Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M200.56,103.65L199.65,104.257L200.196,104.743L200.682,105.228L200.257,105.775L199.286,106.321V106.382L200.318,105.775L200.743,105.228L200.257,104.743L199.711,104.257L200.621,103.65L201.653,103.043H201.593L200.56,103.65Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M204.324,103.406L203.717,103.467L202.928,103.528L203.778,103.467L204.324,103.406Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M216.708,117.126L217.741,117.551H217.801L216.769,117.126H216.708Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M199.164,96.486H199.043L198.618,96.911V96.972L199.164,96.486Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M206.935,104.255L207.967,103.708V103.162H207.845L207.906,103.708L206.874,104.255H206.51H206.935Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M88.07,176.012L87.099,175.162L87.524,175.587L88.07,176.012Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M300.12,159.258H300.181L300.12,158.226L300.545,157.133H300.484L300.059,158.226L300.12,159.258Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M194.793,95.757L195.4,96.728H195.461L194.854,95.757H194.793Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M191.151,94.422L192.122,94.847H192.304H192.183L191.151,94.422Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M190.058,94.481V94.542L190.544,94.967H191.151H190.665L190.058,94.481Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M197.95,96.061H198.071L198.496,96L197.586,96.061H197.95Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M192.729,95.332L192.669,94.847H192.608L192.669,95.393L193.276,95.879L193.458,95.818L193.276,95.879L192.729,95.332Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M285.551,166.542L286.583,166.421H287.129H286.644L285.551,166.542Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M292.167,170.791L293.078,170.73L292.167,170.791Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M289.8,159.985H289.982H289.739L288.829,160.532L289.8,159.985Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M288.525,163.628L288.464,163.689L289.557,164.66H289.921H289.618L288.525,163.628Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M290.589,164.599L291.682,165.024V164.963L290.65,164.599H290.589Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M292.471,169.151L291.985,169.212L292.471,169.151Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M295.628,172.613L295.446,172.674L295.628,172.613Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M298.724,160.957L299.27,159.803L298.603,159.378L299.635,159.318L299.999,159.257L299.635,159.318L298.603,159.378L299.21,159.803L298.724,160.957L297.631,161.503H297.692L298.724,160.957Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M53.098,197.366L52.675,197.396L52.679,197.457L53.103,197.427L53.098,197.366Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M55.713,187.729V187.851L56.685,188.215H57.231V188.154L56.806,188.215L55.713,187.729Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M58.688,184.875V184.997L59.113,184.936L59.659,184.875V184.814L59.173,184.875H58.688Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M286.097,159.196V158.649H286.036V159.196L285.065,159.742V159.803L286.097,159.196Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M53.164,196.896H53.65L54.135,196.835H54.196H53.71L53.164,196.896Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M60.934,180.079L61.42,180.019V179.958L60.995,180.019L60.934,180.079Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M54.681,196.288L55.167,196.228V196.167L54.742,196.228L54.681,196.288Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M54.924,193.13L55.471,193.069V193.009L54.985,193.069L54.924,193.13Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M61.481,179.412V179.473L61.906,179.412H62.452V179.352L62.027,179.412H61.481Z"
+        android:fillColor="#D8D8D8"/>
     <path
-        android:pathData="M212.567,107.982C212.172,114.249 206.767,118.941 200.593,118.569C194.418,118.198 189.645,112.894 190.041,106.626C190.436,100.359 195.841,95.668 202.016,96.039C208.19,96.41 212.963,101.715 212.567,107.982Z"
+        android:pathData="M55.167,172.126L55.045,172.065V172.551L55.167,172.49V172.126Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M284.033,159.379L283.972,158.771L283.912,158.832L283.972,159.379L283.487,159.925H283.547L284.033,159.379Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M60.63,174.858H60.509V175.162L60.63,175.283V174.858Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M62.452,178.804V178.925L62.938,178.865H63.423V178.743L62.998,178.804H62.452Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M63.904,178.181L63.42,178.215L63.424,178.275L63.909,178.241L63.904,178.181Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M153.877,162.959L154.241,162.898L153.877,162.959Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M158.551,161.564L159.401,161.503H159.461H158.915L158.551,161.564Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M146.713,160.835L146.652,160.774L146.713,161.26L147.259,161.806L147.32,161.867L146.774,161.321L146.713,160.835Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M150.477,162.109L150.781,162.352L150.538,162.109H150.477Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M151.57,162.595V162.655H151.691L151.631,162.595H151.57Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M139.792,159.742H139.732V160.228L139.792,160.714H139.853L139.792,160.289V159.742Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M180.223,104.56L179.374,104.621L180.284,104.56L180.831,104.014H180.77L180.223,104.56Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M183.866,103.771L183.38,103.832L181.984,103.893L183.441,103.832L183.927,103.771L184.898,103.164L185.991,103.043L184.898,103.164L183.866,103.771Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M184.473,113.06L184.534,113.181V113.12L184.473,113.06Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M185.869,150.212H185.748L185.809,150.273L185.869,150.212Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M136.575,159.438L136.211,159.135L136.575,159.499L137.182,159.985L138.639,159.863V159.803L137.182,159.924L136.575,159.438Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M127.347,155.858L126.862,155.433V155.493L127.408,155.979L127.347,155.858Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M126.376,156.525L125.83,156.039L125.284,155.554V155.614L125.769,156.039L126.376,156.525Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M127.894,155.857L127.409,155.493L127.894,155.918V155.857Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M188.055,103.466H188.115L189.087,102.859L188.055,103.466Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M134.815,156.708L134.39,156.586V156.04L134.269,156.101V156.526L134.815,156.708Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M133.338,155.546L133.217,155.555L133.251,156.039L133.372,156.031L133.338,155.546Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M122.006,162.11L121.034,162.717L122.066,162.11L122.491,161.018H122.552H122.431L122.006,162.11Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M134.633,162.171V162.717H134.693V162.292L134.633,162.171Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M130.505,162.535L130.383,162.475L130.444,163.021L130.505,163.507L130.565,163.567V163.082L130.505,162.535Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M137.243,162.534L136.818,162.109H136.757L137.243,162.534Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M123.219,160.472L123.462,160.411L123.219,160.472Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M123.02,160.472L122.959,160.477L122.998,161.022L123.059,161.017L123.02,160.472Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.13,161.988L123.644,162.049H123.584L124.13,161.988Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M198.193,106.441L197.646,106.502H197.404L197.768,106.441H198.193Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M189.39,129.996V130.057L189.936,129.996H189.39Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M190.119,125.2L190.058,125.261H190.119V125.2Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M198.739,105.956L198.679,105.896L198.193,106.442H198.314L198.739,105.956Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M191.455,129.146L191.576,128.782L191.455,128.843V129.146Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M189.39,121.74L189.694,122.104L189.936,122.712L189.876,122.226L189.39,121.74Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M190.119,116.944L190.605,115.852H190.544L190.058,116.944L189.573,117.491L190.119,116.944Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M209.667,128.599L210.213,128.053H210.152L209.667,128.599Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M219.198,122.59V122.651L219.258,123.197H219.319L219.258,122.165V122.651L219.198,122.59Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M212.277,128.357H212.338L212.823,127.871L213.005,127.811L212.763,127.871L212.277,128.357Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M219.258,122.164L220.169,121.679H220.108L219.198,122.164L219.258,122.65V122.164Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M210.274,128.053L210.638,127.992L210.274,128.053Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M192.608,115.184H192.547L191.515,115.791H191.576L192.608,115.184Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M204.931,128.903H204.688H205.053L205.538,128.356H205.963H205.478L204.931,128.903Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M194.429,128.053H194.49L196.129,127.507H196.068L194.429,128.053Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M198.496,108.991L196.311,108.687L197.222,106.502H197.161L196.25,108.687L198.375,108.991L197.404,110.144H197.464L198.496,108.991Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M194.065,114.029L194.004,113.483L193.883,112.026V111.48L195.947,110.812L195.886,110.266H195.825V110.812L193.822,111.48V112.026L193.944,113.483L194.004,114.029L193.519,115.122H193.579L194.065,114.029Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M193.154,115.122H193.518L193.094,115.183L193.154,115.668V115.122Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M239.595,160.349L240.263,160.835L240.567,159.256V158.771L241.538,157.617L242.631,157.556V158.103L243.602,158.042L244.695,157.921L245.666,157.314V156.828L245.12,156.342L245.059,155.796H245.545V155.189L245.059,155.25L243.966,155.31L242.934,155.978L242.509,156.524L242.024,157.071L239.96,157.192V156.707L239.292,156.221L238.26,156.767L237.774,156.342L237.713,155.796H237.228L236.742,155.857L236.681,155.371L236.621,154.946L236.074,154.4L235.467,153.914L235.042,155.007L234.617,155.553L234.557,155.068L234.01,154.521L233.403,154.582V154.096H232.918L232.978,155.189L233.039,155.614L232.553,156.16L231.582,156.767V157.253L230.489,157.374L230.004,157.921V158.467L229.093,159.074V159.56L230.064,158.953H230.611L231.157,158.892L231.764,159.378L232.796,159.803L233.282,159.256L233.343,159.803L233.889,160.774L233.464,161.32L233.95,162.352L233.525,162.899L233.585,163.445L235.164,163.324L235.649,163.809L237.228,163.142L237.592,161.563L238.138,161.017L238.563,160.47L239.535,159.863L239.595,160.349Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M228.121,19.266L229.153,19.691L229.214,20.237L230.307,20.662L231.339,21.087L231.825,20.601L231.278,20.055L231.764,18.962L231.703,18.476L231.642,17.93L231.035,17.02L230.064,17.08L228.911,16.655L228.364,16.716L228.425,17.202L228,18.173L228.121,19.266Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M318.939,85.923L318.393,84.891L317.3,83.98H316.814L316.268,84.466L315.236,85.133L313.718,85.255L312.686,85.316L312.201,85.376L310.562,84.891L310.501,84.466L309.894,83.373L309.469,83.434H308.922L307.89,84.648L307.405,85.133L306.433,85.194L305.341,84.284L304.187,82.705L304.127,81.673V81.248L303.52,80.763L302.912,80.277V79.791L301.759,78.759L301.638,76.695L302.002,75.117L301.455,74.631L300.423,74.146L300.302,72.567L300.241,71.535L299.756,72.081L299.816,72.628L298.906,74.813L297.934,76.452L296.417,77.06L294.899,77.727L293.867,78.274L292.167,76.331L292.107,74.753L293.139,74.146L294.596,73.599L295.142,74.024L295.749,74.51L296.174,73.963L296.113,72.871L296.053,72.324L296.538,71.292L296.963,70.26L296.417,69.228L295.385,68.864L295.324,68.318H294.778L294.292,68.925L293.26,68.985L292.774,69.046L292.228,69.532L290.225,70.746L289.193,70.807L288.586,69.35L287.432,67.771L286.825,67.286L287.371,66.739H287.918L287.796,65.161L287.129,63.583L285.914,62.125L286.4,61.033L286.886,60.486L287.493,60.426L287.432,59.879L286.825,59.029L286.764,58.483L286.643,56.905V56.358L285.49,56.419L285.429,55.448L284.943,54.416L284.336,53.93L283.79,52.898H283.183V52.412L282.636,51.987L282.151,52.473L281.544,50.955L280.329,48.952L279.662,47.009L279.115,45.977L277.415,45.006L277.294,43.428L276.748,43.003L275.655,41.971L275.594,41L274.987,39.907L274.441,39.482L273.834,38.935L273.166,36.993L272.68,36.507L271.588,36.082L271.527,35.536L270.556,35.05L269.948,34.564L269.22,32.015H268.674L268.613,30.983L268.006,30.011V30.497L267.46,29.526L267.399,28.433L266.852,28.008L266.306,26.915L265.638,26.066L264.606,26.187L264.546,25.58V25.094L265.578,25.034L266.124,24.426L265.942,22.302L265.82,20.784L265.76,19.752L266.245,19.691L266.67,18.113L266.488,15.988L265.335,13.499L265.76,12.467L266.67,11.314L267.156,10.221L266.488,8.764L266.367,7.186L265.82,6.214L264.788,5.668L265.213,4.575L264.728,4.636L264.121,4.15L263.514,4.211L263.089,5.243L262.664,5.304L262.057,4.332L261.449,3.786L260.964,3.847L260.417,3.422L260.357,2.45L259.81,2.511L258.718,2.572L258.293,3.058L257.746,3.118L257.261,3.179L256.714,2.086L256.047,1.661L256.654,1.115L256.593,0.508L255.986,0.569L253.922,0.69L251.979,1.965L250.947,2.511L249.429,2.633L248.337,2.693L248.883,3.24L249.005,4.697L248.519,5.304L249.065,5.729L249.672,6.214L250.219,7.307L251.251,7.246L251.797,7.671L250.826,8.764L250.401,10.403L250.886,10.342L251.494,10.889L250.522,11.921L249.49,11.981L248.397,11.071L248.883,10.464L248.276,9.432L247.73,9.007L247.244,9.553L246.819,10.646V11.192L246.941,12.164V12.71L246.516,13.803L244.998,13.924L243.905,13.985V14.531L243.541,16.535V17.081L242.691,18.234V18.72L242.752,19.266L242.084,18.781L241.598,18.295L240.688,19.934L240.627,18.841L240.566,17.809L240.991,17.263L240.506,16.777L240.384,15.867H239.898L239.291,15.927L238.806,15.381L238.381,16.899H238.927L238.988,17.931L238.442,17.992L238.381,17.445L237.895,17.506L237.956,17.992V18.538L239.17,20.056L238.077,20.116L237.531,19.631V19.084L236.985,19.691L236.499,20.723H236.013L235.163,22.969L234.617,23.516L234.131,24.062L234.678,24.548L235.285,25.034L234.313,26.187L233.767,26.733H233.342L234.435,27.705L234.496,28.676L234.556,29.708L234.617,30.254L234.071,30.801L233.16,31.408L231.582,32.076L231.157,32.622L229.457,31.651L228.425,31.165L227.393,31.226L226.3,30.861L226.239,30.315L226.179,29.283L226.118,28.858L227.696,28.19L227.636,27.705L228.668,27.644L229.093,27.037L228.061,26.612L227.514,26.126L226.968,25.641L225.936,25.701L225.329,24.669L224.843,24.73L223.265,25.337L222.293,25.398V25.944L221.201,26.005L222.354,26.49L222.9,26.976L223.447,27.462L223.508,28.008L223.568,29.04L224.115,29.404L224.175,29.89H224.6L224.236,30.983V31.468L224.357,33.107L225.45,33.047L226.422,32.925L226.907,33.411L226.968,33.957L227.575,34.443L227.636,34.929L228.182,35.475L227.696,36.021L227.15,37.054L228.364,38.025L228.911,38.571L227.939,39.178L227.271,38.632L226.361,39.239L225.268,39.36L225.814,38.207H226.3L225.147,37.236L224.722,37.782L223.629,37.843L222.536,37.418L222.597,37.903L222.111,38.996L221.686,40.635L220.715,41.121L220.229,41.667L220.29,42.76L219.865,43.792L219.379,44.399L218.955,45.006L219.44,45.431L221.14,46.402L222.172,46.827V47.374L223.325,48.345L223.993,49.863L224.054,50.348L226.604,49.681L227.15,50.105L227.696,51.138L226.664,50.713L226.057,50.773L225.086,50.834L224.054,50.348L223.447,49.863L222.9,49.923L222.415,50.47L221.929,49.984L220.836,50.591L219.319,50.166L218.226,49.681L217.133,49.741V49.256L216.648,49.316L215.009,49.438L213.491,49.013L213.552,50.045L213.005,50.652L213.066,51.138L214.159,51.623L214.705,52.048L216.283,52.473V51.987L216.83,51.927L217.923,52.837L218.59,54.841L217.558,55.508L217.073,56.055L215.98,55.63L214.948,55.691H214.462L213.309,54.719L212.762,54.234L212.216,53.748L211.791,54.841L211.245,54.355L209.666,53.93L209.606,52.959L209.059,53.02L208.999,52.473V51.987L208.391,51.441V50.955L207.724,49.923L207.177,49.498V48.952L207.602,48.345L207.542,47.374L206.995,46.827V46.342L206.449,45.917L205.963,45.37L204.324,45.492H203.778L203.353,45.553L202.685,45.006H203.292L203.231,44.46L202.685,44.521L202.199,44.581L202.139,44.035L201.107,44.096L200.621,43.61L199.892,42.639L200.439,41.606L199.832,41.667L199.346,41.182L199.771,41.121H200.439L200.864,41.06L202.017,42.032L202.503,42.456L203.11,42.396L203.049,41.91L204.081,42.335L205.174,42.76L205.781,42.699H206.206L206.752,43.185L207.845,43.124L208.877,43.003L210.456,43.428L210.941,42.881L211.427,42.335L211.973,42.821V43.306L213.066,43.246L214.037,43.185L215.13,43.124L216.101,41.971H216.587L217.619,41.364L218.105,40.878L218.044,40.392L218.59,39.785H219.076L219.015,39.239L218.955,38.693H219.501L219.865,36.568L219.258,35.536L219.197,34.504H218.651L218.59,33.533L218.165,34.018L217.558,33.593L217.498,32.5L216.526,32.561L215.919,32.622V32.076L214.341,31.711L213.309,32.258L212.762,31.833L212.216,31.286L211.123,30.861L211.184,31.347L210.638,30.861L209.484,30.072L207.967,30.133L206.267,29.222L204.81,28.737L203.717,29.404L200.075,29.647L199.589,29.708L198.921,29.162L197.95,29.829L197.889,29.222L197.404,28.797L196.918,29.283L196.311,28.312L195.764,28.372L195.157,27.34H194.732L194.247,28.494H193.761L193.154,27.462L192.608,27.522L192.729,29.101L191.697,29.162L191.09,28.676L190.24,28.737V29.04L189.026,29.344L187.933,30.133L187.326,31.347L187.205,33.229H186.962H187.144L186.658,33.775L186.719,34.322L186.233,34.929V35.414L186.84,35.9L187.387,36.386L187.933,36.871L187.994,37.296L188.115,37.478L189.087,37.843L190.179,38.814L190.24,39.907L190.301,40.392L189.815,41L189.876,42.032L189.937,42.517L189.997,43.549L190.604,44.581L191.151,45.067L191.211,45.613L192.304,45.977L192.85,46.524L193.458,47.556L194.065,48.527V49.074L194.186,49.195L194.125,49.316V49.559L193.64,50.166L194.247,51.198L193.822,51.684L193.761,51.866L193.882,52.352L194.368,52.716V53.262L194.429,53.809V54.294L195.036,54.841L195.522,54.234L195.582,54.78L196.129,55.266L195.097,55.812L195.339,55.933H195.4V55.994L196.189,56.298L196.25,56.783V57.33L197.282,57.269L197.343,57.815L197.95,58.301V58.787L198.011,59.272L197.464,59.879L196.979,59.94L196.493,60.001H196.432L197.039,61.033L197.586,60.972L198.132,61.397L198.678,61.883L200.317,62.308L201.957,62.733L202.503,63.218L203.11,64.25L202.624,65.282L201.592,65.889L201.167,67.043L201.228,67.529L200.742,68.135L200.257,68.621L200.317,69.714L199.832,70.26L200.378,70.746L199.892,71.292L199.346,71.353V71.232L199.225,71.353L198.921,72.385L198.436,73.538L198.011,74.085L197.525,74.692L197.039,75.724L196.554,76.27L196.129,77.181L196.25,78.334L197.282,78.274L198.253,77.666H198.678L198.739,78.152L198.375,79.245L198.436,79.791L199.407,79.731L199.953,80.277L201.107,80.702L201.532,80.156L202.564,80.095L203.171,80.034L203.656,80.52L204.203,80.459L204.263,81.491L203.717,81.552L202.624,81.613L201.592,81.673L200.075,81.795V82.341H199.589V81.795L199.043,82.402L199.103,82.887V83.434L199.164,83.919L198.739,83.98L198.132,82.948L197.646,83.494V84.041L197.707,84.587L197.768,85.619H197.828L198.436,86.044L198.496,87.137L197.464,88.29L197.525,88.776L198.071,89.201L197.646,90.233L198.253,91.265L198.314,92.358L199.407,92.783L199.892,93.268V93.815L199.528,94.361L199.468,94.3V94.361L198.86,93.875L198.375,93.45L197.889,93.936L197.95,94.482L198.496,94.968L199.043,94.907L198.557,96H198.496L198.071,96.061V96.546L198.618,96.486V96.911L199.043,96.486H199.164L199.65,96.425L199.771,97.457L199.832,98.55H199.771L198.739,98.61L199.346,99.643L199.892,99.582H200.317L200.378,100.067L200.985,100.978L201.046,102.01L201.653,103.042H202.139H202.199L202.746,102.981V103.528H202.928L203.717,103.467L204.324,103.406L204.87,103.346L205.781,103.285H205.842H205.902L206.449,103.771L206.51,104.256H206.874L207.906,103.71L207.845,103.164H207.967L208.452,103.103L209.545,103.588L210.152,104.56L211.184,104.499V105.045L210.759,105.531V106.077L211.852,107.595L212.58,109.113L211.548,109.72L213.066,109.598L213.127,110.084L213.187,110.63L214.766,110.934H215.312L216.405,111.359L216.466,112.452L216.526,112.877L217.498,112.816L218.044,112.755L219.015,112.695L219.137,113.848L220.108,113.787H220.169L220.776,114.759L220.29,115.305L219.804,115.851L219.319,116.458L218.347,117.065L217.801,117.551H217.74L216.708,117.126L216.283,117.187V117.673L216.344,118.705L216.405,119.251L217.012,120.283L217.558,121.254L217.619,121.861L218.165,122.226L219.197,122.59V122.165L220.108,121.679H220.169H220.229L220.715,122.043L221.747,121.558H221.808H221.99H222.233L222.718,120.89L223.265,120.829H223.325L224.357,121.376L225.329,120.708L225.875,120.647L226.422,121.254L227.089,122.104L227.575,122.59L227.636,123.622L227.696,124.715L227.757,125.261L228.789,125.2L230.367,125.079L230.853,124.472H231.278H231.339L231.399,125.018L232.067,125.989L233.039,125.929L233.099,126.414L233.646,127.932L233.706,128.418H234.313L235.285,128.357L235.831,128.296L236.317,128.782L236.802,128.236H236.863H236.924L237.41,128.721H237.713L237.956,128.661L238.381,128.114L239.352,127.021H239.413L240.506,126.961V127.446L240.991,127.932L242.691,128.843L243.602,128.296V127.75L244.209,128.236L244.694,128.661L245.726,128.114V128.175L245.787,128.114L245.848,128.6H246.394L246.819,128.539L246.758,128.053L247.79,127.993H248.033L248.397,127.932V128.418L248.883,128.903L248.822,128.418H248.883L249.794,128.357H249.854L249.915,128.296L251.008,128.843L251.979,128.782L252.465,128.175L252.526,128.114H253.133L253.254,129.753L252.708,130.239L251.676,130.846L251.251,131.453L251.736,131.817H252.161L252.829,131.757V132.242L252.343,132.849L251.858,133.396L251.918,133.942L252.404,133.881L253.618,135.399L253.74,136.977L253.315,138.556L253.193,138.616L252.161,138.677L251.19,138.738L250.644,138.799L250.219,139.284L249.794,140.923L248.276,141.53L248.458,144.019L248.883,143.473H249.429L249.854,142.987L249.915,143.959H250.522L251.494,142.866L251.979,142.38L252.951,142.32L253.011,143.17L253.072,143.777L252.101,144.323L251.008,144.991L250.583,145.537L251.129,146.023L251.736,146.508L250.704,147.055L249.672,146.63L249.126,146.691L248.58,147.237H248.155V147.783L248.64,148.269L250.219,148.147L250.826,148.633L250.886,149.119L252.465,149.544L251.979,149.604L251.372,150.151L250.886,149.665L250.947,150.758L251.494,151.183L251.069,151.79L250.462,151.244L249.976,150.819L249.429,151.304L249.551,152.397L249.005,153.004L249.612,153.429L249.672,154.461L248.64,154.522L248.215,156.1V156.646L249.308,157.071L250.401,157.557L250.886,157.496L251.918,157.436L252.586,157.921V158.407L253.558,158.346L254.043,157.8L254.59,158.286L255.682,158.225V158.711L256.775,159.135L257.807,159.075L258.353,159.56L258.9,160.046L259.993,159.985L261.632,161.989L262.117,160.896H262.178H262.664L263.635,160.775H263.696L264.181,160.228L264.606,159.135H264.667L265.76,159.56L266.852,159.985H267.277L269.402,159.803L269.948,160.35L270.495,160.289H270.556L271.588,160.228H271.891L272.498,160.167L274.016,159.5H274.38L274.562,159.439L275.169,159.985L276.687,159.864H276.748L277.78,159.803L278.326,159.743L278.933,160.228L278.387,160.775H278.933L279.419,160.714L280.39,160.653L280.876,160.107L281.847,159.5H281.908L283.061,159.925H283.486L283.972,159.378L283.911,158.832L283.972,158.771H284.518L285.004,158.711L285.065,159.743L286.036,159.196V158.65H286.097L286.825,158.589H287.068L288.161,159.075L288.221,159.56V160.107L288.828,160.532L289.739,159.985H289.982L290.346,159.925L291.924,160.35L293.503,160.228L294.049,160.167L295.142,161.2L296.174,161.624H296.538L297.206,161.564L297.631,161.503L298.724,160.957L299.209,159.803L298.602,159.378L299.634,159.318L299.999,159.257H300.12L300.059,158.225L300.484,157.132L299.999,157.193L298.966,156.707L297.813,156.222L297.267,155.797L295.688,154.886L294.596,154.4L293.503,153.429L293.321,151.365L292.774,150.94L292.167,150.454L292.107,149.422L291.56,148.33L291.014,148.39V147.905L289.86,147.48L288.282,146.508L288.343,147.055L287.857,147.601L287.25,147.115L286.218,146.63L286.582,144.505L286.522,144.019L287.007,143.473L286.946,142.441L287.432,141.834L286.886,141.348L286.764,139.952L287.25,138.799L287.189,137.767L287.675,137.706L288.221,138.192L289.132,137.038L289.678,136.492L290.164,136.006L290.589,134.853L291.075,135.399L291.56,134.306L290.892,132.728L289.921,132.849H289.435L288.343,132.424L288.768,131.332L289.253,130.785L289.8,130.725L289.253,130.239L287.554,129.268L285.429,127.932L284.336,126.961L283.79,127.568L282.697,127.628L282.758,128.114L282.272,128.721L281.24,128.236L280.694,127.811L280.633,126.779L280.572,126.172L279.48,125.747L278.447,125.807L277.962,126.354L277.84,124.836L277.78,123.743L278.751,122.104L277.173,121.801L276.626,121.254L277.051,120.647L276.991,119.129L276.444,118.583L275.837,117.733L276.262,116.58H276.808L276.687,115.001H276.201L277.051,113.362L278.144,113.909L278.69,114.819L279.844,115.305L280.39,115.791L281.301,114.637L281.24,114.152L280.694,113.119L280.087,111.602L278.933,111.177L279.965,110.57L280.997,110.509V109.963L280.936,109.477L280.815,107.352L281.847,107.231L282.333,106.685L282.818,105.713L283.79,104.56L284.215,103.588L284.154,102.981L284.093,102.435H284.7L285.186,102.86L285.732,103.467L286.704,102.799L287.25,101.767L287.614,100.675L288.586,100.067L289.193,100.007L290.346,101.039L290.285,100.432L290.71,99.4L291.196,99.339L292.228,99.278L292.835,99.764L293.867,100.189L295.445,100.128L295.992,100.614L297.024,100.553L297.57,100.492L298.117,100.978L297.995,99.885L297.51,99.4V98.914H297.934L300.666,99.218L302.245,99.643L302.67,98.55V98.003L302.609,97.518L303.095,97.457L303.034,96.971L302.548,96.486L303.52,96.425L304.612,96.304L304.005,95.272H304.552L305.037,94.664L306.13,95.15L307.162,95.09L307.041,93.997L308.012,93.936L307.526,92.965L307.89,92.479L308.437,91.933L309.53,91.326L310.015,91.811L310.562,92.722L311.654,92.661L313.718,92.054L314.204,91.993H314.75L314.69,91.447L314.629,90.476L315.54,89.808L317.179,89.14L318.575,87.562L319,86.955L318.939,85.923Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M179.495,94.179L180.102,94.118L180.588,94.665L180.649,95.15L181.195,94.604L181.134,94.058L182.166,93.997L182.652,93.936V93.451L183.077,92.904L183.684,92.297L182.531,91.872L181.074,93.025L180.406,92.054L179.981,92.54L180.042,93.147V93.633L179.01,94.179H179.495Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M181.377,90.355L181.438,91.387L181.923,90.841L182.409,90.294V89.869L181.316,89.384L180.831,89.991H180.284L180.345,90.416H180.891L181.377,90.355Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M189.997,94.483L190.058,94.544V94.483L190.665,94.969H191.151L191.09,94.423H191.151L192.183,94.847H192.304H192.608H192.669L192.729,95.333L193.276,95.879L193.458,95.819H193.822L194.793,95.758H194.854L195.461,96.729L196.432,96.183L197.464,95.576H197.525V96.062H197.586L198.496,96.001H198.557L199.043,94.908L198.496,94.969L197.95,94.483L197.889,93.937L198.375,93.451V93.391L198.982,93.876L199.468,94.301L199.528,94.362L199.893,93.815V93.269L199.407,92.783L198.314,92.358L198.254,91.266L197.647,90.234L198.071,89.202L197.525,88.777L197.464,88.291L198.496,87.138L198.436,86.045L197.829,85.62H197.768H197.282L195.158,85.802L194.672,85.863L194.125,85.316L193.64,85.377L192.608,85.984L192.547,85.438L191.515,85.498L191.029,85.559L190.544,85.62H189.997L189.512,86.227H188.965L187.994,86.288L187.387,86.348L186.901,86.409H186.355V86.895L186.416,87.502H185.93L185.444,87.563H184.898L184.412,88.17V88.655L184.473,89.202L184.534,89.687L185.566,89.627V90.052L185.626,90.598L185.08,90.659L185.141,91.144L185.262,92.783L186.355,93.694L186.841,93.633V93.208L187.326,92.601H187.812L188.419,93.087L187.933,94.119L187.994,95.151L188.055,95.576L189.512,95.03L189.997,94.483Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M198.072,96.061L198.496,96L198.072,96.061Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M179.374,104.621L180.224,104.56L180.77,104.014H180.831L181.316,103.953L181.924,103.892H181.984L183.381,103.831L183.866,103.771L184.898,103.164L185.991,103.042H186.537L188.055,103.467L189.087,102.86H189.148L189.694,103.346L190.726,103.831L192.365,104.256L192.851,104.196L193.458,105.228L195.097,106.138L195.643,106.624L197.222,106.503H197.404H197.647L198.193,106.442L198.679,105.896L198.739,105.956V105.896L199.286,106.32L200.257,105.774L200.682,105.228L200.196,104.742L199.65,104.256L200.561,103.649L201.593,103.042H201.653L201.046,102.01L200.986,100.978L200.379,100.068L200.318,99.582H199.893L199.347,99.643L198.739,98.611L199.771,98.55H199.832L199.771,97.457L199.65,96.425L199.164,96.486L198.618,96.972V96.911V96.486L198.072,96.547V96.061H197.95H197.586H197.525L197.465,96.122V95.575L196.433,96.182L195.461,96.729H195.401L194.793,95.757L193.822,95.818H193.458L193.276,95.879L192.669,95.393L192.608,94.847H192.304H192.122L191.151,94.422H191.09L191.151,94.968H190.544L190.058,94.543L189.998,94.483L189.512,95.029L188.055,95.575L187.509,95.757V96.243L187.569,96.789L187.63,97.275L187.691,98.307V98.854L187.812,99.885L187.326,100.493L186.841,101.039H186.294L185.141,100.068L184.655,99.643L184.534,98.55L183.441,97.579L182.956,97.639L182.409,97.154L182.349,96.607L181.316,96.729L180.284,97.336L179.799,97.822L179.313,97.882L178.888,98.914L178.949,100.068L178.524,101.1L178.038,102.071L177.674,105.288L179.313,104.621H179.374Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M182.895,111.48L183.805,111.723L184.291,112.573L184.473,112.997V113.058L184.534,113.119V113.18L184.716,113.908L184.595,114.637L184.413,114.758L185.02,114.697L184.655,115.304V115.365L185.627,115.911L186.416,116.033L187.569,116.883L187.63,117.126L188.48,117.065L188.541,117.55L189.573,117.49L190.058,116.943L190.544,115.851H190.605L190.058,115.911L190.605,115.851H191.09L191.515,115.79L192.547,115.183H192.608L193.154,115.669L193.094,115.183L193.519,115.122L194.004,114.029L193.944,113.483L193.822,112.026V111.48L195.825,110.812V110.266H195.886L197.404,110.144L198.375,108.991L196.25,108.687L197.161,106.502H197.222L195.643,106.623L195.097,106.138L193.458,105.227L192.851,104.195L192.365,104.256L190.726,103.831L189.694,103.345L189.148,102.859H189.087L188.116,103.466H188.055L186.537,103.041H185.991L184.898,103.163L183.927,103.77L183.441,103.831L181.984,103.891H181.924L181.316,103.952L180.831,104.013L180.284,104.559L179.374,104.62L177.795,105.288H177.674L177.795,106.866L177.856,107.352V107.898L178.524,109.416L178.645,110.994L179.738,110.933L179.799,111.419L180.284,111.905L180.77,111.844L181.377,112.33H181.62L182.045,111.783L182.895,111.48Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M219.258,122.651L219.198,122.165V122.59L219.258,122.651Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M199.71,104.256L200.257,104.742L200.742,105.228L200.317,105.774L199.285,106.381V106.32L198.739,105.895V105.956L198.314,106.442H198.193H197.768L197.403,106.502H197.221L196.311,108.688L198.496,108.991L197.464,110.145H197.403L195.886,110.266L195.947,110.813L193.882,111.48V112.027L194.004,113.484L194.065,114.03L193.579,115.123H193.518H193.154V115.669L192.608,115.184L191.576,115.791H191.515L191.09,115.851H190.604L190.119,116.944L189.572,117.49L188.54,117.551L188.48,117.065L187.63,117.126L187.69,117.976L187.933,118.765L188.297,119.069L188.419,120.587L188.722,120.951L189.39,121.74L189.876,122.226L189.937,122.711L190.119,123.136L190.24,124.836L190.119,125.2V125.261H190.058L189.937,125.747L188.055,127.204L188.54,127.811L189.512,127.993L189.269,129.571V129.935L189.39,130.057V129.996H189.937H189.997L190.483,130.482L190.604,130.36L190.847,129.935L191.393,129.328L191.454,129.146V128.843L191.576,128.782V128.721L192.486,128.053L193.579,128.114L194.186,128.053H194.429L196.068,127.507H196.129L197.646,127.386L199.225,127.689L200.317,128.236L202.381,128.6L202.928,128.539L203.474,129.025L204.688,128.903H204.931L205.478,128.357H205.963L206.631,128.296L207.177,128.782L207.299,128.964L207.602,129.207L208.027,128.175L208.634,128.296L209.302,129.632L209.363,129.571L209.484,129.207L209.606,128.6H209.666L210.152,128.053H210.213H210.273L210.638,127.993H210.698L212.277,128.357L212.762,127.871L213.005,127.811H213.309L214.462,128.782H214.644L214.584,127.689L214.766,127.264L214.098,126.172L214.401,125.018L214.341,124.047L215.069,123.197H215.676L216.587,123.075L217.255,123.318H217.74L218.226,123.258L219.258,123.197L219.197,122.651V122.59L218.165,122.226L217.619,121.861L217.558,121.254L217.012,120.283L216.405,119.251L216.344,118.705L216.283,117.673V117.187L216.708,117.126H216.769L217.801,117.551L218.347,117.065L219.319,116.458L219.804,115.851L220.29,115.305L220.776,114.759L220.169,113.787H220.108L219.137,113.848L219.015,112.695L218.044,112.755L217.498,112.816L216.526,112.877L216.466,112.452L216.405,111.359L215.312,110.934H214.766L213.187,110.631L213.127,110.084L213.066,109.599L211.548,109.72L212.58,109.113L211.852,107.595L210.759,106.078V105.531L211.184,105.045V104.499L210.152,104.56L209.545,103.589L208.452,103.103L207.967,103.164V103.71L206.935,104.256H206.51L206.449,103.771L205.902,103.285H205.842H205.781L204.87,103.346L204.324,103.406L203.778,103.467L202.928,103.528H202.746V102.981L202.199,103.042H201.653L200.621,103.649L199.71,104.256Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M190.058,115.912L190.604,115.852L190.058,115.912Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M185.02,149.483L184.777,149.24L184.655,149.301L184.837,149.422L185.02,149.483Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M249.794,140.924L250.219,139.285L250.644,138.799L251.19,138.738L252.222,138.677L253.194,138.617L253.315,138.556L253.74,136.978L253.618,135.399L252.404,133.882L251.919,133.942L251.858,133.396L252.344,132.85L252.829,132.243V131.757L252.162,131.818H251.737L251.251,131.453L251.676,130.846L252.708,130.239L253.254,129.754L253.133,128.114H252.526L252.04,128.782H251.979L251.008,128.843L249.915,128.297L249.855,128.357H249.794L248.883,128.418L248.944,129.025L248.883,128.904L248.398,128.418V127.932L248.033,127.993H247.851L246.819,128.054V128.539L246.394,128.6H245.848L245.787,128.114L245.727,128.175L244.755,128.722L244.695,128.661L244.209,128.236L243.602,127.75L243.663,128.297L242.691,128.843L240.991,127.932L240.506,127.447V126.961L239.413,127.022L238.442,128.114L238.017,128.661L237.713,128.722H237.41L236.924,128.236H236.863L236.378,128.782H236.317L235.831,128.297L235.346,128.357L234.314,128.418H233.707L233.646,127.932L233.099,126.415L233.039,125.929L232.067,125.99L231.4,125.018L231.339,124.472H231.278H230.914L230.368,125.079L228.789,125.2L227.757,125.261L227.697,124.715L227.636,123.622L227.575,122.59L227.089,122.104L226.422,121.255L225.875,120.647L225.329,120.708L224.418,121.376H224.358L223.326,120.83H223.265L222.779,120.89L222.294,121.497L221.99,121.558H221.808L220.776,122.044H220.715L220.23,121.679H220.169L219.258,122.165L219.319,123.197H219.258L218.226,123.258L217.741,123.319H217.255L216.587,123.076L215.677,123.197H215.069L214.341,124.047L214.402,125.018L214.098,126.172L214.766,127.265L214.584,127.689L214.645,128.782V128.843L214.462,128.782L213.309,127.811H213.005L212.823,127.872L212.338,128.357H212.277L210.699,127.993H210.638L210.274,128.054H210.213L209.667,128.6H209.606L209.484,129.207L209.363,129.571L209.302,129.693V129.632L208.635,128.297L208.027,128.175L207.603,129.207L207.542,129.329L207.299,128.964L207.178,128.782L206.631,128.297L205.963,128.357H205.538L205.053,128.904H204.689L203.474,129.025L202.928,128.539L202.382,128.6L200.318,128.236L199.225,127.689L197.647,127.386L196.129,127.507L194.49,128.054H194.429H194.186L193.579,128.114L192.486,128.054L191.576,128.722V128.782L191.454,129.146L191.394,129.329L190.847,129.936L190.605,130.361L190.544,130.482H190.483L189.997,129.996H189.937L189.39,130.057L189.451,130.118L189.208,131.696L189.512,132.121L189.269,132.546L190.058,133.032L190.483,133.76L191.515,134.914L191.151,135.096V135.764L191.576,135.946L192.001,136.674L191.697,137.828L191.151,138.253L190.119,138.192L189.087,139.224L188.844,139.77L188.419,140.742L187.873,140.924L187.448,141.591L187.266,142.259L187.144,143.413V143.838L187.205,144.445L187.084,144.93L187.144,145.477L186.901,145.902L187.023,146.266L186.476,146.63L186.173,147.055L186.355,147.723H185.869L185.627,148.208L185.505,148.816L185.687,149.18L185.627,149.908L185.748,150.212H185.869L186.112,150.09L186.719,150.212L186.901,150.394L187.691,150.151L189.148,150.03L190.119,150.212L190.908,150.515L191.515,150.819L192.486,150.94L192.972,150.151L193.883,149.969L194.49,149.908L196.007,150.515L196.554,150.09L197.647,149.058L198.011,149.119L198.861,149.058L199.832,148.937L200.014,148.512L200.196,147.905L201.653,147.298L202.139,147.48V147.359L202.321,147.48L202.625,147.601L203.292,147.784L204.689,147.176L205.235,146.569L205.721,146.144L205.781,146.084L207.299,146.023V146.448L208.392,146.327L208.938,146.873L209.484,147.298L209.909,146.812L210.516,146.752L211.063,147.237L212.034,147.723V147.176L213.248,147.662V148.148L213.309,148.694L213.734,148.633H213.795L213.855,149.665L213.916,150.697L213.977,151.244H214.462L214.948,151.183L215.616,152.154L215.677,153.247L216.162,153.186H216.648H216.769V153.611L216.83,154.158L217.376,154.704L217.923,155.19L218.469,155.615L218.408,156.222L218.894,155.615L219.501,156.161L219.987,156.586L220.533,156.525L220.412,155.008L220.897,153.915L221.444,153.854L221.929,154.34L222.961,153.733L223.933,152.64H224.418L224.479,153.065L225.025,153.004L224.965,152.033L224.904,151.487L224.843,150.515L225.39,151.487L225.936,151.972L225.997,152.519L226.604,153.49L225.572,153.551V154.097L225.633,154.643L225.693,155.129L226.786,155.615L227.818,155.979L229.336,154.886L230.246,154.279H230.793L231.339,153.672L231.946,155.251L232.432,154.643L232.917,153.611L232.857,153.065L233.342,153.004L233.949,153.49L234.435,152.944L234.921,152.883L236.499,152.822L236.56,153.308H237.045L236.985,152.762L237.531,152.701L237.895,151.122L238.927,150.515L238.988,151.608L239.595,151.547L240.991,149.848L242.023,149.301L242.388,148.694L242.934,148.148L243.42,148.087L244.573,148.573L244.998,148.026L244.512,147.48L245.423,146.934L245.909,145.841L246.455,145.295L246.941,145.234L247.366,144.687V144.141L247.973,144.627L248.398,144.566L248.458,144.08V144.02L248.276,141.531L249.794,140.924Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M217.923,155.189L217.377,154.704L216.83,154.157L216.77,153.611V153.186H216.648H216.162L215.677,153.247L215.616,152.154L214.948,151.183L214.463,151.243H213.977L213.916,150.697L213.856,149.665L213.795,148.633H213.734L213.309,148.694L213.249,148.147V147.662L212.034,147.176L212.095,147.722H212.034L211.063,147.237L210.517,146.751L209.97,146.812L209.545,147.358L209.485,147.297L208.938,146.872L208.392,146.326L207.299,146.447V146.022L205.782,146.083L205.296,146.569L204.75,147.176L203.353,147.783L203.778,147.844L204.325,148.329L206.024,149.301L205.903,151.122L207.178,151.304L208.271,151.729L208.331,152.761L208.938,153.307L209.485,153.793L210.577,154.218V154.764L211.184,155.736L211.245,156.282L211.306,157.375H210.76L210.82,157.86V158.407L211.427,158.892V159.378L211.549,160.471L211.609,161.503L212.217,162.292L213.249,161.928L213.916,162.231L214.281,162.413L214.584,162.231L215.009,161.624H215.13H215.191L216.162,161.746L216.527,161.867L216.77,161.988L216.709,161.503V160.956L216.102,160.471V159.985L216.587,159.378H217.134V159.864L217.619,159.317L218.651,159.257L219.137,158.71L219.683,158.65L220.169,158.589L220.108,157.618L219.562,157.071H219.016L217.923,156.707V156.221H218.409L218.469,155.614L217.923,155.189Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M298.177,176.072L298.238,176.011L298.177,175.525V176.072Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M300.181,159.258H300.12H299.998L299.634,159.318L298.602,159.379L299.27,159.804L298.724,160.957L297.692,161.504H297.631L297.206,161.564L296.538,161.625H296.174L295.142,161.2L294.049,160.168L293.503,160.229L291.924,160.35H291.864H291.439L291.499,161.443L291.56,161.989L293.078,162.414L293.685,162.9V163.264L293.806,164.357L293.199,164.418L291.742,164.539V165.025L291.682,164.964V165.025L290.589,164.6L289.921,164.66H289.557L288.464,163.689L288.039,164.236L287.553,165.328L288.646,165.753L288.707,166.3L289.253,166.239H289.739L291.317,167.149L290.892,167.757L289.921,168.303L291.439,169.214H291.985L292.471,169.153H292.592L293.624,169.638V170.124L293.139,170.731H293.078L292.167,170.792L292.714,171.217L294.292,171.642L295.445,172.674L295.628,172.613L296.477,172.552H296.781H296.902H296.963L297.509,173.099L297.024,173.584H297.509H297.57L298.117,174.07L298.238,176.013L298.602,174.981L298.541,174.434V174.009L299.573,173.402L300.545,172.31L300.484,171.763L300.97,170.67L301.395,169.578L302.487,169.517L302.852,168.424L303.459,168.364L304.491,169.396L305.159,169.881L305.219,170.913H304.612L305.219,171.399L305.826,172.492V172.977L304.794,173.584L304.309,173.645L305.401,173.949L306.433,174.434L306.919,173.888L307.465,173.827L309.59,174.192L308.983,173.706L309.529,173.281L308.376,172.795L307.89,171.763L308.315,171.217L308.255,170.67L308.194,170.124H308.74L308.801,171.156L309.287,170.063L309.226,169.031L309.165,168.546L308.619,167.999L308.012,167.028L308.497,166.967V166.482L308.437,165.45L308.376,164.903L307.83,164.418L307.769,163.871L308.255,163.325L308.74,162.232L309.226,161.807L310.258,161.686L310.197,161.2L309.712,160.654L308.68,161.261L307.587,161.382L306.616,161.443L306.008,160.472L304.976,160.532L304.43,160.047L303.762,159.015L303.216,158.529L302.67,158.043L302.062,157.497L301.638,157.558L300.545,157.133L300.12,158.226L300.181,159.258Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M297.57,173.584H297.51H297.024L297.51,173.099L296.963,172.552H296.903H296.781H296.478L295.628,172.613L295.446,172.674L294.292,171.642L292.714,171.217L292.167,170.792L293.078,170.731H293.139L293.624,170.124V169.638L292.592,169.153H292.471L291.985,169.213H291.439L289.921,168.303L290.893,167.756L291.318,167.149L289.739,166.239H289.254L288.707,166.299L288.646,165.753L287.554,165.328H287.432H287.129L287.189,165.874V166.421H287.129H286.582L285.55,166.542L285.611,167.089H285.49H285.065L284.033,167.21L283.061,167.756L282.09,168.363L280.572,169.517H280.512L282.09,169.881L282.151,170.428L282.636,170.913L282.272,171.945L282.333,172.492L282.819,173.524L283.426,174.07L283.972,174.009H284.458L285.004,173.949H285.49L285.975,173.888L286.461,173.281L287.068,173.827L287.129,174.313L288.161,174.252L288.707,174.191L289.8,174.616V175.102L291.378,176.013L292.532,176.498L293.017,176.923L294.596,176.802L295.688,176.741H296.174L297.206,176.134L298.177,176.073V175.527L298.238,176.013V176.073V176.013L298.117,174.07L297.57,173.584Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M282.09,168.364L283.061,167.757L284.033,167.21L285.065,167.089H285.489H285.611L285.55,166.542L286.643,166.421H287.129H287.189V165.875L287.129,165.328H287.432H287.554L288.039,164.236L288.464,163.689L288.525,163.629L289.618,164.661H289.921L290.589,164.6H290.65L291.682,164.964L291.742,165.025V164.539L293.199,164.418L293.806,164.357L293.685,163.264V162.9L293.078,162.414L291.56,161.989L291.499,161.443L291.439,160.35H291.864H291.924L290.346,159.925L289.982,159.986H289.8L288.828,160.532L288.221,160.108V159.561L288.161,159.076L287.068,158.59H286.825L286.097,158.651V159.197L285.065,159.804V159.743L285.004,158.711L284.518,158.772H283.972L284.033,159.379L283.547,159.925H283.486H283.061L281.908,159.5L280.936,160.108L280.451,160.654L279.419,160.715L278.933,160.775H278.387L278.933,160.229L278.326,159.743L277.78,159.804L276.748,159.865H276.687L275.169,159.986L274.562,159.44L274.38,159.5H274.077L272.559,160.168L271.891,160.229H271.588L270.556,160.29H270.495L269.948,160.35L269.402,159.804L267.277,159.986H266.852L265.76,159.561L264.667,159.136L264.242,160.168L263.696,160.775H263.635L262.664,160.897H262.178L261.692,161.989H261.632L263.271,162.354L263.817,162.293H264.303L264.849,162.839L265.335,162.779L265.881,162.172L266.367,162.111L266.974,162.657L268.067,162.597L268.127,163.629L268.613,163.568L269.645,163.507L270.131,163.993L270.191,164.539L270.859,165.45L271.345,165.935L272.498,166.907L272.984,167.392L273.045,167.939L272.559,167.999L272.134,169.092V169.578L272.195,170.063H272.741L272.68,169.517H273.166L273.773,169.456L275.776,169.274L276.323,168.789L276.808,168.728L277.233,168.182L278.326,168.607H278.872L278.933,169.092V169.639L279.479,169.578L280.512,169.517H280.572L282.09,168.364Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M54.24,168.464L53.695,168.503L53.729,168.987L54.275,168.949L54.24,168.464Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M104.461,182.264L103.915,182.325L103.49,182.447L102.883,182.386L102.336,181.961L101.244,182.022L100.879,182.082L100.697,182.264H100.333L99.847,182.204L99.24,182.022L98.937,181.172V181.111L98.573,181.172H98.026L97.48,180.686L97.54,179.897L97.298,179.29L96.63,178.925L95.476,179.35H94.201L94.141,178.804L93.655,178.865L92.563,178.379L92.016,178.44L91.409,177.954V177.893L90.863,177.469L90.377,176.983L89.77,177.044L89.284,177.104L88.677,176.072H88.191L88.07,176.012L87.524,175.587L87.099,175.162L87.038,175.101L86.552,175.162H85.945V174.676L85.885,174.13L85.338,173.644L84.731,173.219L84.853,173.098L84.731,173.158L84.124,172.612L83.092,172.733L81.999,172.248L81.453,171.762L80.907,171.823H80.36L79.328,171.883L78.782,171.398L78.175,170.426L77.143,170.487L76.536,170.002L76.05,170.062L75.018,170.123L74.411,170.184L73.925,169.698L73.318,169.759H72.833L72.286,169.212L71.74,168.727L71.193,168.787L70.101,168.362L69.554,168.423L68.462,167.937V167.452L67.369,167.513L66.823,166.966L66.337,167.027L65.305,167.088L64.698,166.663L64.091,166.177L63.119,166.784L62.512,165.752L61.966,165.266L61.905,164.72V164.234L60.873,164.781L60.327,164.841L59.781,164.356V164.841L59.295,164.902L58.749,164.963H58.263L58.809,165.449L58.324,166.056L57.838,166.602L57.777,166.056L57.231,165.57L56.685,165.631H56.138L55.592,165.145L55.167,166.238L54.62,165.752L54.074,166.359L53.589,166.905L54.196,167.391V167.877L54.681,167.33L54.742,167.877L54.256,168.484L55.288,168.362L55.349,168.848L54.863,169.455V169.941L54.378,170.487H54.924L54.985,171.034L54.438,171.58L53.892,171.094L53.406,171.641L53.467,172.673H53.528V172.612L54.62,172.551H55.046V172.066L55.167,172.126V172.005L56.199,172.43H56.745V172.915L56.806,173.462L56.867,173.948H57.352L57.899,173.887L58.384,173.826L58.991,174.312H59.538L60.084,174.797L60.509,175.162V174.858H60.631V174.737H61.116L61.662,174.676L61.723,175.162H62.209L62.755,175.101L63.241,175.647L62.816,176.194L62.877,176.679L62.937,177.226H63.362L63.969,177.711L64.03,178.197H63.969V178.258L63.423,178.318L63.484,178.743H63.423V178.865H62.937L62.452,178.925L62.512,179.35H62.452V179.411H61.905L61.48,179.472V179.958H61.42V180.018L60.934,180.079L60.509,180.565V181.05L60.084,181.657V182.143L59.598,182.75L59.659,183.236V183.782L59.72,184.328L59.781,184.814H59.659V184.875L59.113,184.935L58.688,184.996L58.749,185.36L57.717,186.514L57.777,187.06L57.292,187.607V188.153H57.231V188.214H56.685L55.713,187.849L55.774,188.76L55.835,189.306L55.895,189.853L56.442,190.338L56.502,190.824V191.37L56.017,191.978L55.531,192.463V193.01H55.47V193.07L54.924,193.131L54.56,193.617V194.163L54.074,194.709L54.62,195.195L55.167,195.134V195.681L55.228,196.166H55.167V196.227L54.681,196.288L54.256,196.834H54.196H54.135L53.649,196.895H53.164L53.224,197.38H53.103L53.164,197.441L52.678,197.502L52.739,197.927L52.253,198.534L52.314,199.566L52.374,200.598H52.921H52.86H53.346L53.953,201.084L54.499,201.569L55.046,202.055V202.601L56.138,203.026L56.745,203.512V204.058L56.26,204.605L56.806,204.544H57.352L56.867,205.576L56.927,206.183L55.835,206.244L56.442,206.669L56.502,207.761L57.049,208.247L57.595,208.186L58.141,208.672L58.749,209.704L59.234,209.097L59.174,208.611L60.206,208.004L61.298,207.943L61.784,207.397L62.33,207.336L63.362,207.822L63.909,207.761L64.334,206.669L65.366,206.608L66.458,207.033L67.065,207.519L68.158,207.458L68.705,208.429L69.737,208.368L71.315,208.247H71.861L72.954,208.672L73.44,208.126L74.472,208.065L75.079,208.551L75.564,208.49L75.625,209.036L76.111,208.976L76.657,208.429L76.596,207.883V207.336L77.629,206.79L77.568,206.244L78.6,206.183L79.086,205.637L80.118,205.515H80.664L81.757,206.001L82.242,205.394L83.274,204.787L83.153,203.755L83.638,203.208L84.185,203.148L84.671,202.601L84.61,202.055L85.642,201.509L86.128,201.448L87.22,201.387L88.191,200.234L87.645,199.748V199.202L87.038,198.777L86.977,198.17V197.684L86.856,196.652L86.795,195.62L87.342,195.013L87.767,194.467L88.799,193.859L89.77,192.767L90.316,192.706L90.863,192.16L91.834,191.006L92.259,190.521L93.291,189.853V189.367L93.777,189.306V188.821L94.262,188.214H94.809L95.78,188.092L96.873,188.032L97.905,187.971L98.451,187.91H98.937L99.483,187.849L100.454,187.242L101.061,187.182L101.486,186.696L102.579,186.575H103.125L103.611,185.968H104.158L104.643,185.36L105.129,184.814L105.068,184.328L105.554,183.782L105.493,183.236L105.432,182.143L105.311,182.022L104.886,182.507L104.461,182.264Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M52.374,200.598L52.314,199.566L52.253,198.534L52.739,197.927L52.678,197.502V197.441L53.103,197.38H53.224L53.164,196.895L53.71,196.834H54.196H54.256L54.681,196.288L54.742,196.227L55.167,196.166H55.228L55.167,195.681V195.134L54.62,195.195L54.074,194.709L54.56,194.163V193.617L54.924,193.131L54.985,193.07L55.47,193.01H55.531V192.463L56.017,191.978L56.502,191.37V190.824L56.442,190.338L55.895,189.853L55.835,189.306L55.774,188.76L55.713,187.849V187.728L56.806,188.214L57.231,188.153H57.292V187.607L57.777,187.06L57.717,186.514L58.749,185.36L58.688,184.996V184.875H59.174L59.659,184.814H59.781L59.72,184.328L59.659,183.782V183.236L59.598,182.75L60.084,182.143V181.657L60.509,181.05V180.565L60.934,180.079L60.995,180.018L61.42,179.958H61.48V179.472V179.411H62.027L62.452,179.35H62.512L62.452,178.925V178.804H62.998L63.423,178.743H63.484L63.423,178.318V178.258L63.969,178.197H64.03L63.969,177.711L63.362,177.226H62.937L62.877,176.679L62.816,176.194L63.241,175.647L62.755,175.101L62.209,175.162H61.723L61.662,174.676L61.116,174.737H60.631V174.858V175.283L60.509,175.162L60.084,174.797L59.538,174.312H58.991L58.384,173.826L57.899,173.887L57.352,173.948H56.867L56.806,173.462L56.745,172.915V172.43H56.199L55.167,172.005V172.126V172.491L55.046,172.551H54.62L53.528,172.612V172.673L53.589,173.098L53.649,173.705V174.19L53.224,174.737V175.283L53.346,176.376L52.799,176.861L52.374,177.469L52.435,178.501L51.889,179.047L51.464,179.593L51.525,180.686L51.039,181.232L50.553,182.325L50.068,182.811L49.582,183.418L49.643,183.964L49.157,184.511L48.671,185.603L48.186,185.664L47.093,185.725L46.607,186.271L46.668,186.757V187.303L46.729,187.849L46.243,188.396L45.757,189.003L45.818,189.489V189.974L46.85,189.913L47.457,190.399H47.943L48.003,191.431L48.064,191.978L47.578,192.524L47.093,193.07L47.153,193.617L46.668,194.163L47.214,194.649L46.789,195.741L46.85,196.288H46.304L45.757,196.834L45.818,197.38L45.393,198.473L44.847,199.02L44.907,199.566L45.454,199.505H45.939L46.486,198.898L47.032,199.445L47.093,199.93L47.578,199.869H48.125L48.671,200.355L49.764,200.78L50.371,201.266L50.796,200.719L50.857,201.266L51.342,201.205L52.86,200.598H52.921H52.374Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M103.49,197.685L102.883,197.199V196.653L102.276,196.167L101.79,196.774L101.851,197.26L100.758,197.381H100.272L99.726,197.442L99.786,197.988L100.819,197.867H101.365L101.972,198.899L102.458,198.838L102.518,199.324H103.065L103.55,198.777L103.49,198.231L104.036,198.17L104.522,197.624L103.975,197.685H103.49Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M108.65,196.288H108.104L107.618,196.349L107.011,195.863H106.525V196.41L107.132,196.895H107.618L108.225,197.381L108.771,197.32L108.711,196.774L108.65,196.288Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M94.627,199.931H94.141V200.477L93.109,200.538V201.084L93.17,201.631L94.202,201.024L94.687,200.963L94.627,200.416L95.173,199.87L94.627,199.931Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.555,177.105L125.041,176.498L124.98,176.012L125.465,175.466L125.041,175.041L124.069,175.101L123.523,175.162L123.462,175.041H123.341L122.734,174.009V173.523L122.612,172.491V171.945L123.098,171.398L123.037,170.852V170.366L122.552,169.941L122.066,170.002L121.944,169.88L121.641,169.638L121.519,169.516L121.337,169.395V168.909L121.823,168.848H122.369L122.916,168.788L123.401,168.181L123.887,167.634L124.373,167.088L123.826,166.602L123.766,166.117L123.219,165.57L123.159,165.085L123.705,165.024V164.478H123.826L123.766,164.174L123.705,164.053L123.159,163.628V163.081L123.644,163.021L123.098,162.535V162.049H123.159H123.341H123.584H123.644L124.13,161.989L124.069,161.442L123.462,160.41L123.219,160.471H123.037L123.098,161.017H122.976H122.552H122.491L122.066,162.11L121.034,162.717H120.973L120.366,161.685L120.852,160.592L121.823,159.5V158.953L122.248,158.407L123.341,158.346L124.312,157.739L124.737,156.646V156.161L125.223,155.554L125.283,155.614V155.554L125.83,156.039L126.376,156.525L126.801,155.432L126.862,155.493V155.432L127.347,155.857V155.432L127.408,155.493L127.347,154.947V154.4V154.339L127.772,153.793V153.307L127.712,152.275L127.651,151.729L128.197,151.122L128.137,150.636L128.562,149.544L129.108,148.937L130.018,147.905L129.533,147.419H129.047L128.44,147.48L127.894,146.994L126.801,147.115L125.769,146.63L125.223,146.144H125.162V146.083L124.555,145.112L124.069,144.323L124.008,144.201L123.523,144.08L122.916,144.141L122.612,143.898L121.944,143.776L121.884,143.837H121.337L120.852,144.444L120.791,143.898L120.245,143.412L119.638,142.927H119.152V142.805V142.866L119.091,142.441L118.545,141.955V141.895V141.834L118.484,141.409L117.938,140.984V140.377L117.391,140.438L117.452,140.984L116.906,141.045L116.359,141.105L115.813,140.559V140.498L115.752,140.438L116.238,139.891V139.406L116.117,138.434H115.631L115.145,138.495L114.599,138.556L113.992,137.524V137.463L113.931,137.038H113.445L112.899,137.099V136.977L112.838,136.431L112.778,136.006L112.292,136.067H111.806V136.006H111.746V135.581L111.199,135.095V134.974H111.139V134.488L111.078,133.942V133.396L109.985,133.456L109.439,133.517L108.953,133.578H108.407L107.921,133.638L107.435,134.185V134.731L107.496,135.217L107.01,135.763L107.071,136.309L107.132,137.402L107.193,137.949H106.586L106.1,138.009L105.554,138.556H105.068L104.036,139.163L103.004,139.77L101.972,139.83L100.94,139.891L101,140.438H101.486L102.579,140.862L103.125,141.348H102.64V141.955L101.608,141.47L100.515,141.53L99.483,141.591L99.422,141.045L98.39,141.166L97.297,140.741L96.205,140.255L96.265,140.802L95.112,140.316L95.658,139.77L95.051,139.284V138.798L95.537,138.191L94.991,138.252L94.505,138.313L93.898,137.766L93.412,137.827V138.373L92.926,138.92L92.987,139.952V140.438L93.655,141.47L93.109,142.016L93.169,142.623V143.048L93.776,143.594L93.837,144.08L92.805,144.141L92.198,143.716L91.712,143.776H91.166L91.652,143.169L90.62,143.23L89.527,143.351L88.98,142.927L89.041,143.351L88.009,143.412L87.949,142.987L87.888,141.895H87.341L86.795,141.955V141.47L85.702,140.984L85.217,141.591V142.077L84.185,142.137V141.652L83.092,141.712L82.546,141.773L81.999,141.227L81.453,141.834L81.028,141.895H80.481L79.935,141.955L79.996,142.441L80.542,142.38H81.028L81.513,142.319L81.574,142.866V143.412L81.149,143.473V143.898L80.603,143.959L80.117,144.019L79.632,144.626L80.117,144.566L80.724,144.991L81.331,146.023L81.271,145.537L82.363,145.962L82.303,145.416H82.788L82.849,145.962L83.942,146.872H84.549V147.358H85.035L85.095,147.905L85.156,148.39L86.188,148.329L87.281,148.269L86.734,148.815H87.281L87.827,149.24L87.402,150.333H87.888L88.495,150.818L88.555,151.365L89.041,151.304V151.79L88.07,152.943L88.131,153.49L88.798,154.461L89.223,154.4L89.284,155.493L89.891,155.979L89.952,156.464L91.045,156.889L91.53,156.343L91.591,156.889V157.436L91.105,157.982L91.652,157.921L91.166,158.528L91.227,159.56L91.287,160.046L90.802,160.653V161.199L91.348,161.139L91.409,161.685V162.171L91.955,162.656L92.016,163.203L92.077,164.235L92.137,164.72L91.591,164.295L91.53,163.688L91.469,163.203L90.923,162.717L90.862,162.171L90.316,161.746L90.255,161.199L89.77,161.806L89.891,163.324V163.81L89.466,164.417L89.527,165.449L88.98,165.51L90.073,165.935L89.648,166.481L88.555,166.542L88.616,167.149V167.634L88.131,168.181V168.727L87.645,168.788L87.706,169.759L87.22,169.82L86.674,170.366L86.734,170.913L85.763,172.066L84.852,173.098L84.731,173.219L85.338,173.644L85.884,174.13L85.945,174.676V175.162H86.552L87.038,175.101L87.099,175.162L88.07,176.012L88.191,176.073H88.677L89.284,177.105L89.77,177.044L90.377,176.983L90.862,177.469L91.409,177.894V177.955L92.016,178.44L92.562,178.379L93.655,178.865L94.141,178.804L94.201,179.351H95.476L96.63,178.926L97.297,179.29L97.54,179.897L97.479,180.686L98.026,181.172H98.572L98.937,181.111L99.179,180.747L99.544,180.565L100.151,180.383L100.576,180.322L101.122,180.99V181.779L100.879,182.083L101.243,182.022L102.336,181.961L102.882,182.386L103.489,182.447L103.914,182.325L104.461,182.265L104.886,182.508L105.311,182.022L105.432,181.961L105.189,181.779L105.007,181.536L104.886,181.233L105.371,180.686L104.825,180.201L105.311,179.108L105.25,178.562L105.736,178.015L106.282,177.955L106.768,177.408L107.314,177.347H107.8L108.346,177.287L108.832,176.74L109.317,176.133H109.864L110.41,176.619L110.956,177.105L111.442,177.044L112.535,176.983L112.596,178.076L113.081,177.469H113.628L114.113,176.862H114.66L114.72,177.408V177.894H115.206L115.752,177.833L115.813,178.319V178.865L116.299,178.319L116.906,178.804L117.452,179.29L117.513,179.836L118.059,180.322L118.545,180.261H119.091L119.638,180.201L120.184,180.14H120.73L121.155,179.533V179.047L121.095,178.501L121.641,178.44H122.127L122.673,178.379L122.612,177.833H123.219L123.705,177.772V178.319L124.616,177.347L124.069,177.59L124.555,177.105Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M65.426,41.122L65.973,41.668L66.58,42.154L67.066,42.64L67.612,42.579L68.158,42.518L68.219,43.125V43.611L68.28,44.157L68.34,44.643L68.826,45.129L69.979,46.1H70.526L71.011,46.039L71.072,46.586L71.133,47.071L72.165,47.496L72.772,48.043L72.711,47.496L73.258,46.889V47.436H73.804L74.775,46.828L75.322,46.768L76.414,47.193L76.9,46.646L77.507,47.132L78.539,47.071V47.618L79.571,47.011L80.057,46.403L81.15,46.889L81.635,46.828L82.182,46.282L82.728,46.768L82.789,47.314L83.274,46.768L83.76,46.707L84.792,46.1L85.217,45.068L85.824,45.554H86.31L87.402,45.432L87.342,44.4L87.827,43.793L88.313,43.732L88.252,43.186V42.7L88.738,42.154L88.677,41.668L88.131,41.122L88.07,40.636V40.09L87.038,40.151L86.978,39.604L87.463,39.119L88.009,39.544L87.949,39.058L87.463,38.572L87.402,38.026V37.54L88.374,36.933L88.313,36.387L87.827,36.933L86.795,37.055V36.508L86.735,36.023L87.22,35.416L87.16,34.869L86.067,34.444L86.128,34.991L85.581,35.537L85.156,36.083L84.549,36.144L84.063,35.658L84.003,35.112L83.032,35.719L81.999,36.326L81.453,36.387L81.878,34.748L81.332,34.262V34.748L80.846,35.901L80.907,36.387L80.482,36.933L79.875,36.508L79.814,35.416L80.3,34.869L80.239,33.837L79.632,33.291L79.207,33.898L78.6,33.352V33.958L78.175,34.444L77.689,35.051H77.143L77.082,34.566V34.019L76.961,32.987L76.475,32.502L75.929,33.534L75.565,34.626L74.957,34.687V34.201H74.411L73.865,34.262L73.015,35.901L72.954,35.355L72.408,35.416V34.869L72.893,34.323L72.833,33.776V33.291L72.711,32.198H73.258L73.743,32.137L74.229,31.045L73.622,31.105V30.62L74.168,30.013L74.108,29.527L74.047,28.434L72.954,27.463L71.861,27.524L72.408,28.07L73.015,29.041L72.529,29.102V29.648L72.59,30.134V30.68L72.104,31.166L71.558,30.741L71.497,29.709L70.951,30.255L70.89,29.223L70.829,28.131V28.677H70.344L69.797,28.252L69.919,29.83L68.765,29.345L69.372,29.83L69.919,30.316L68.887,30.923L68.401,30.984V30.438L68.34,29.952L67.733,29.466L67.794,29.952V30.498H67.308L67.248,30.013L66.762,30.559L66.823,31.045H67.369L67.855,30.984L68.462,31.47L69.494,31.348L70.04,31.895L70.587,32.38L70.647,32.926H71.133L71.679,32.866L71.801,33.837L71.194,33.898L70.162,33.473L69.069,33.534L69.676,34.019L70.222,34.505L70.769,34.991L70.283,35.537L69.797,35.598L69.19,35.112L68.644,34.626L68.098,34.687L67.005,34.201L65.973,33.776L64.941,34.323L65.002,34.869L66.034,34.808L67.066,34.748L67.673,35.233V35.719H68.158L68.219,36.265L68.28,36.751L67.794,37.358L67.855,38.39L68.34,37.783V38.329L67.915,38.876L67.43,39.483H66.883L66.398,39.544L65.791,39.604L65.366,40.151L64.759,39.665L64.334,40.758L64.88,41.183L65.426,41.122Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M84.367,109.72L83.821,109.234L83.76,108.688L82.728,108.202L82.182,108.263H81.817L81.332,108.809L81.271,108.748L81.21,108.809L80.664,108.323L80.118,107.838L79.571,107.352L79.025,106.927L79.511,106.32L79.45,105.834H79.571V105.774L80.057,105.713L80.603,106.138L81.028,105.652L80.968,105.106L81.514,104.559L81.939,104.013H82.06L82.121,103.952L83.214,103.892L83.699,103.831L83.153,103.345L83.639,103.285L84.185,103.224L84.61,102.678L84.064,102.192L83.457,101.646L83.517,102.192L83.032,102.253L82.485,102.313L81.878,102.495L80.785,102.01L80.36,102.617L79.328,102.678L78.782,103.224L78.357,103.77L76.779,104.377L77.325,104.863L78.418,105.349L78.904,105.288L78.479,105.834L77.447,105.895L77.507,106.441L77.568,106.988L76.536,107.595L75.99,107.109L74.958,106.623L74.897,106.077L74.29,105.652L73.743,105.106L72.711,105.167L72.226,106.259L71.679,106.32L72.226,106.806L72.286,107.352L72.347,107.838L71.862,108.384L71.437,108.93L70.89,108.991L70.465,109.537L71.012,110.569L71.072,111.055L71.619,110.994L71.679,112.026L72.165,111.48L73.258,111.419L73.743,111.359L73.804,111.844L73.379,112.451L72.833,112.512L71.254,113.119L70.283,114.273L69.251,114.333L69.858,114.758L69.312,114.819L69.372,115.365L67.794,115.487L67.309,115.547L66.762,116.094L66.823,116.64L67.369,116.579L68.401,116.519L68.948,117.004L68.401,117.065L67.855,117.126L67.369,117.187L66.823,117.733L66.337,118.279L66.883,118.765L67.43,118.219L67.976,118.704L67.491,119.251L67.551,119.797L68.037,119.736L68.583,119.676L67.551,120.283L69.13,120.161L69.19,120.647L69.251,121.193L70.222,120.586L70.708,120.525L71.315,121.011L72.347,120.95L72.772,120.404L73.318,120.89L74.351,120.829L74.29,120.283L74.836,120.222L75.322,119.676L75.382,120.161L75.929,120.1L76.414,119.554L76.961,119.493L77.993,119.433L79.025,119.372L79.996,119.311L80.603,119.797L81.635,119.251L82.06,118.704L82,118.158L82.546,118.097L82.971,117.551L82.91,117.065L83.457,117.004L83.396,116.458L83.335,115.912L83.274,115.365L83.76,114.819L83.699,114.333L83.639,113.787L84.124,113.241L84.064,112.209L84.003,111.723L84.549,111.116L83.942,110.63L84.489,110.569L84.549,111.055L85.035,110.509V110.448L84.974,110.569L84.367,109.72ZM72.226,115.305L71.194,115.365L70.647,114.819L70.101,114.88L69.615,114.94L70.647,114.394L71.194,114.88L71.74,114.819L72.226,114.758L72.772,115.244L72.226,115.305Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M67.855,120.829L68.948,120.282L67.369,120.889L67.855,120.829Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M87.403,106.868L87.342,106.382V105.775L86.674,104.804V104.318L86.613,103.772H86.128L85.521,103.832L85.035,103.893V103.347L84.489,103.407L84.003,103.954H83.457L82.91,104.014L82,104.075H81.878L81.453,104.682L80.907,105.229L80.968,105.775L80.543,106.2L80.482,106.261L79.875,105.836H79.511L79.389,105.896V106.382L78.904,106.989L79.45,107.414L80.057,107.9L80.603,108.385L81.15,108.932L81.271,108.81L81.696,108.325H81.757H82.182L82.728,108.264L83.821,108.689V109.235L84.367,109.721L84.974,110.753L85.096,110.632L85.521,110.146L85.946,109.6L86.553,109.539H87.038L86.917,108.507L87.463,107.9L87.524,108.446L87.585,108.992L88.07,108.932L88.01,108.446L87.949,107.9L87.463,107.414L86.917,107.96L86.37,107.475L86.856,106.928L87.403,106.868Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M133.236,185.846L133.176,184.814V184.268L133.115,183.722L132.872,183.236L132.629,182.993L132.508,183.115L132.022,183.054L131.537,183.357H130.929L130.687,183.54L130.505,183.904L129.958,184.147L129.533,184.754L129.169,185.118L129.351,185.543L129.29,186.15L129.412,186.696L129.655,187.121L129.715,187.668V187.85L129.412,188.214L129.776,188.76L130.201,189.185V189.671L130.565,190.157L130.929,190.217L131.476,190.703L131.415,190.157L131.961,189.61L131.901,189.125L132.326,188.032V187.485L132.265,186.939L132.751,186.453L133.236,185.846Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M132.872,195.378L133.358,194.285L133.297,193.739H132.751V193.253L132.204,192.768H132.69L132.144,192.221L131.537,191.796V191.25L131.051,191.796L130.505,191.857V192.343L130.019,192.403H129.473L129.048,193.011L128.501,193.071L127.409,193.132L126.923,193.678L126.377,193.193L126.437,193.678L125.891,194.225L125.952,194.832L126.012,195.317L126.619,196.349V196.835L126.741,197.867H127.226L128.258,197.746L127.773,198.353L127.287,198.899L127.348,199.445V199.992L126.923,200.477L126.377,200.538L126.923,201.024L126.498,202.117L127.044,202.602L127.105,203.149V203.634L128.198,204.12L128.744,204.059H129.23V203.513L129.169,203.027L129.715,202.42L130.747,202.906L131.294,202.845L131.84,203.331L132.326,202.784L132.265,202.238L132.204,201.206L132.144,200.113L132.629,199.081L132.569,198.535V197.988L132.508,197.503V196.956L132.447,196.471L132.933,196.41L133.419,195.864V195.378H132.872Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M159.705,208.187L158.673,208.794L157.641,208.854L157.155,209.461L156.548,208.915L156.062,208.976L155.516,209.522L155.03,209.583L154.484,209.643H153.998L152.966,210.251L151.874,210.311L150.781,209.886L149.749,209.401L149.142,208.915L148.11,208.976L147.078,209.583L147.017,209.097L146.531,208.611L145.985,209.158H145.499L145.56,210.251L145.014,210.797L145.074,211.343L145.681,211.829L146.774,212.315L147.26,212.254L147.867,212.74L149.445,213.164L150.052,213.65L150.659,214.682L151.691,214.561L152.238,215.046L153.27,214.986L154.363,215.411L154.423,215.957L155.03,216.989L156.062,217.414L156.609,216.868L157.701,217.293L157.641,216.261L158.612,215.653L158.551,214.621H158.066L158.551,214.075L158.005,214.136L157.944,213.589V213.043L158.43,212.497L158.369,211.95V211.465L158.309,210.918L158.794,210.372H159.28L159.766,209.219L159.705,208.733V208.187Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M89.649,115.244L89.163,115.305L89.224,116.276H89.77L90.256,116.216L90.742,115.73L90.134,115.184L89.649,115.244Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M96.994,132.605L95.962,132.666L96.508,133.213L97.055,133.152L97.601,133.091L97.54,132.605H96.994Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M103.49,85.862L103.429,85.315V84.83L103.368,84.283L102.883,84.83L102.336,84.89L102.883,85.315L103.49,85.862Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M109.378,80.156L109.985,80.641V81.127L109.5,81.734L110.532,81.127L110.471,80.641L110.957,80.034V79.488L110.896,79.002V78.456L110.775,77.424L110.35,79.002L110.41,79.549L109.378,79.609V80.156Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M89.345,88.958L89.406,89.444L89.891,88.351L90.377,87.805L90.984,88.29V88.837L91.47,88.23L91.409,87.744L91.895,87.137H92.441V86.591L92.866,86.044L92.805,85.559L92.38,86.105H91.834L90.802,86.226L90.863,87.198L90.316,86.773L90.256,86.226L89.77,86.833L89.831,87.319L89.345,88.412V88.958Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M92.016,110.874V110.327L91.409,109.842L90.863,110.388L90.438,110.995L90.984,111.481L92.016,110.874Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M91.106,90.477L90.074,91.084V91.569L90.134,92.176L91.166,91.509L91.106,91.023V90.477Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M92.138,90.415L91.713,90.961L91.166,91.508L90.742,92.601L91.288,93.086V93.632L91.773,92.54V92.054L91.713,91.447L92.198,90.961L92.138,90.415Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M89.892,96.305L90.438,96.548V96.305H89.892Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M90.438,96.547V96.85L89.952,97.457L90.498,97.397L91.045,97.336V96.79H90.984L90.438,96.547Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M80.178,131.939L81.21,131.878H80.725L80.178,131.939Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M95.173,112.938L95.719,112.392L95.173,112.938Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M94.748,118.401L95.233,118.826L95.294,119.372L94.869,119.919L94.323,120.526V121.011L94.384,121.497L93.898,122.104L93.473,123.197L92.987,123.743V124.29L93.048,124.715H93.412V124.775H93.594L93.655,125.868H93.109L93.17,126.293L94.019,126.232L94.505,126.172L94.08,126.718L93.594,127.325L93.048,127.386H92.502L92.016,127.932L92.077,128.478H91.53L90.498,128.539L89.952,128.6L89.466,128.661L88.859,128.175H88.313V127.689L87.767,127.75H87.281L86.735,127.811L87.342,128.236L86.795,128.843L86.249,128.357H85.702L85.763,128.903L85.278,129.996L84.246,130.057L82.728,130.725V131.21L82.242,131.271L81.21,131.878L81.271,132.91H81.817L82.364,132.849L82.303,132.303H82.849V132.789L83.335,132.242L84.367,131.635L85.46,132.121L86.492,131.999L86.552,132.546L87.099,133.032L88.131,132.971L88.617,132.424V131.878L88.556,131.332L89.041,130.785L89.648,131.271L90.134,131.21H90.68L91.166,131.15L91.713,131.089L92.259,131.635L92.866,132.121V132.607H93.412L93.898,131.999L94.93,131.939L95.476,132.424L96.569,132.364L96.508,131.817L97.055,131.271L97.601,131.757L98.147,132.242H98.633L99.179,132.182L99.24,132.667L100.272,132.607L100.819,132.546H101.365L101.851,132.485L102.397,132.971H102.943L103.49,133.456L104.522,132.849L105.068,132.789L105.614,133.274L106.1,132.728L106.586,132.182L107.132,132.121L107.618,131.575L108.103,131.028L107.557,130.543H107.071L106.525,131.15L105.918,130.664H105.432L104.886,130.178L104.34,129.693L104.279,129.207L104.825,129.146H105.311L105.857,129.571L106.343,129.025V128.478L105.797,128.539L106.282,127.993H106.889L107.375,127.932H107.921L107.861,127.325H108.407L108.893,127.264L109.378,126.718L109.864,126.172L109.803,125.625L110.35,124.593L110.289,124.047L110.228,122.954L109.621,122.468L108.528,122.044L107.496,122.104L106.889,121.619L106.464,122.165L105.857,122.226L105.372,122.772L104.825,122.286L104.765,121.801V121.254L105.25,121.194L105.797,120.647L106.282,120.101V119.615L106.222,119.008V118.523L105.614,118.037L105.554,117.49L104.461,117.066L103.975,117.126L103.915,116.58L104.4,116.519L104.947,116.458L105.493,117.005L105.311,114.394V113.848L105.25,113.302L105.19,112.816L104.643,112.27L104.582,111.784H104.097L103.55,111.359H103.004V110.873L102.883,109.781V109.234L103.368,108.749L103.308,108.202L102.761,107.717L102.701,107.17V106.685L103.125,105.592L102.579,105.106L101.972,104.074L101.911,104.196L101.972,104.256L101.486,105.349L101.183,105.41L101.547,105.713L101.426,105.835H101.547L101.061,106.442L100.454,105.956H99.969V106.32V106.503L99.483,106.563H99.544V107.049L98.997,107.11L98.512,107.656L98.026,108.263H97.48L97.419,107.777V107.595L96.933,108.142L96.448,108.202V108.688L95.962,108.202L95.416,108.749L94.93,109.295L94.991,109.841L95.051,110.934L95.112,111.42L95.659,111.905L96.205,111.845L95.719,112.391L96.205,112.33L97.298,112.816V113.362L96.326,113.423V113.969H95.78L95.841,114.516L95.901,115.062H95.355L94.869,115.669V116.155L95.416,116.094L95.476,116.641V117.126H96.023L95.537,117.733H94.991L94.93,117.187L94.505,117.733L94.687,117.855L94.748,118.401Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M89.648,121.375L89.163,121.922L88.677,122.529L88.07,121.983L87.584,122.59H87.099L86.552,122.65L86.006,122.711L85.46,122.165L84.974,122.772V123.257L84.488,123.804L85.581,123.743L86.127,123.682V124.229H85.581L85.642,124.775L86.734,124.714L87.22,124.107H87.706L88.252,124.047V124.593L88.313,125.139V125.686L89.406,125.564H89.952L89.466,126.171L90.013,126.596L90.62,127.082L91.045,127.021L92.137,126.961L92.684,126.9L93.169,126.353V126.293L93.109,125.868H93.655L93.594,124.775H93.412L93.048,124.836V124.714L92.987,124.289V123.743L93.473,123.197L93.898,122.104L94.383,121.497L94.323,121.011V120.526L94.869,119.918L95.294,119.372L95.233,118.826L94.748,118.401L94.687,117.854L94.505,117.733L94.08,117.369L94.019,116.822L93.534,116.883H93.048L92.987,116.397L91.409,117.005L90.863,117.065L90.377,117.612L89.406,117.672L88.859,118.279H88.373V118.826L88.92,118.765L89.406,118.219L90.013,118.704L90.438,118.158L90.984,118.097V118.644L90.498,119.19L90.559,119.676V120.222L90.134,120.283L90.62,120.768L90.195,121.315L89.648,121.375Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M97.48,108.263H98.026L98.512,107.656L98.997,107.11L99.544,107.049V106.563H99.483L99.969,106.503V106.32L99.908,105.956H99.969H100.454L101.061,106.442L101.547,105.835H101.426L100.94,105.41H101.183L101.486,105.349L101.972,104.256L101.911,104.196L101.365,103.224L100.758,102.739L100.212,102.314H99.665L98.633,102.375L98.148,102.435L97.54,101.95L96.994,102.01V101.464H97.54L98.087,101.889H98.633L99.18,101.828L99.119,101.342L100.151,101.282L100.637,100.675H100.09L99.544,100.189L99.058,100.25V99.764L100.029,99.643H100.576L101.122,100.068L101.669,99.582L102.154,99.521L102.094,98.975L103.126,98.429L103.611,97.822V97.336L103.004,96.85L103.49,96.243H104.036L103.975,95.697L104.522,95.636L105.007,95.15L104.947,94.604V94.058L104.461,94.118H103.854L103.368,94.179L103.308,93.633L102.701,93.147L102.215,93.208L101.183,93.268H100.637L99.604,93.39H99.058L98.087,93.997L97.54,94.058V93.511L97.48,92.965L97.419,92.479L98.451,91.872H98.937L98.876,91.326L99.362,90.78L99.908,90.719L100.454,90.658L101.001,90.112L101.426,89.565L102.458,89.444V88.958L102.943,88.412L102.336,87.926H101.851L101.304,87.987V87.501L100.272,88.048L99.18,87.623L99.119,87.076L98.633,87.683L98.148,87.137H98.573L97.54,86.651L97.055,86.712V87.198L96.569,88.29H97.176L96.63,88.897L95.537,88.412L96.084,88.897L95.598,88.958L95.051,89.444L95.659,89.93V90.537L95.719,91.022L95.173,90.537L94.627,90.597V89.99L94.08,90.051L93.534,90.112L93.048,90.719L93.109,91.204V91.751L93.17,92.236L93.716,92.722L93.777,93.268L92.745,93.329L92.805,93.876V94.361L92.259,94.422L91.773,94.968L91.834,95.515L91.895,96.061L90.863,96.607L90.984,96.789H91.045L91.409,97.093L91.955,97.639L92.38,96.486H92.987L93.412,95.94L93.959,95.879L93.473,96.425L92.987,97.032L92.502,97.579L93.048,97.518V98.064L92.502,98.125H92.016L91.531,98.671L91.045,99.764L91.105,100.31V100.796L91.652,100.25L92.077,99.218L92.563,99.157L93.17,99.582L93.23,100.128L92.684,100.675L92.198,100.735L92.259,101.282L92.745,101.221L93.291,101.16L93.837,101.707H94.384V102.192H93.898V102.739L93.412,103.285L92.927,103.831L92.441,104.439H91.955V104.985L91.47,105.531H90.923L90.984,106.138H90.438L90.498,106.624L90.559,107.717L90.62,108.263L91.105,108.202V107.656L91.045,107.11H91.591L92.137,107.595L92.198,108.142L92.745,108.627V108.081L92.684,107.535L93.17,106.988L93.716,107.474L93.777,108.02L94.748,107.413L94.809,107.96L95.355,107.899L95.294,107.352H95.841L96.387,107.838L96.873,107.777L97.419,107.231V107.595V107.777L97.48,108.263Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M151.752,165.812L150.963,165.266L151.691,164.78L151.874,164.598L151.813,164.173L151.631,163.688L151.449,163.263L151.57,162.656V162.595L151.084,162.656L150.781,162.352L150.477,162.109L149.445,162.17L148.899,162.231H148.413L147.867,162.291H147.806L147.442,161.927L147.321,161.866L147.26,161.806L146.713,161.259L146.653,160.774L146.167,160.349L145.56,159.863L144.589,159.924L144.042,159.985H143.496L142.95,160.045L142.403,159.56L141.857,159.62L141.918,160.106L140.946,160.713L140.4,160.774H139.854V160.713H139.793L139.732,160.227V159.742L139.246,159.802H138.639V159.863H139.307H138.761L138.822,160.349V160.956L138.882,161.441L138.336,161.502L137.79,161.017L137.304,161.563L136.818,162.109L137.243,162.534L137.365,162.595L136.879,163.141L136.333,162.656L135.786,162.716L135.24,162.777H134.754L134.693,162.716H134.633V162.17L134.147,161.745L133.601,161.806L133.661,162.352L133.722,163.384H133.176L132.69,163.991L132.204,164.538V165.084L131.719,164.598L131.112,164.113L130.565,163.566L130.505,163.506L130.444,163.02L130.383,162.474L129.958,162.049L129.412,162.109L128.926,162.656L128.987,163.202L128.441,164.295L127.955,164.355L126.923,164.416L126.316,163.87L124.313,164.598L124.13,164.477H123.827H123.705V165.023L123.159,165.084L123.22,165.57L123.766,166.116L123.827,166.602L124.373,167.087L123.888,167.634L123.402,168.18L122.916,168.787L122.37,168.848H121.824L121.338,168.908V169.394L121.52,169.516L121.641,169.637L121.945,169.88H122.431L122.552,169.94L123.038,170.365V170.851L123.098,171.397L122.613,171.944V172.49L122.734,173.522V174.008L123.341,175.04H123.463H123.888L124.92,174.979L125.041,175.04L125.466,175.465L124.98,176.011L125.041,176.497L124.555,177.104L124.07,177.59L124.616,177.347V177.286L125.041,177.104L125.587,176.497L126.073,176.436L126.619,176.375L127.651,175.829L128.137,175.283L128.076,174.736L128.562,174.19L129.048,173.583L130.14,173.522L130.626,173.461L131.78,174.494L132.265,173.886L133.904,174.858L133.844,174.311L134.39,173.765L134.876,173.704H135.422L134.936,174.251L134.997,174.797L135.543,175.283L135.058,175.768L136.15,176.74L136.879,178.864L137.486,180.868L138.093,181.414L139.307,183.903H139.854L141.007,184.874L141.553,185.906L142.16,186.331L142.707,186.878L144.346,188.274L147.745,191.249L148.292,191.188L148.899,192.22L149.931,192.159L150.538,193.131L151.024,192.584L152.723,194.041L153.331,194.527L153.816,195.013L154.363,194.952L155.455,195.923H156.062L156.548,196.409L156.669,197.441V197.987L156.73,198.473L157.823,198.958L158.369,198.898H158.855L159.948,199.323L160.494,199.808L160.555,200.355L161.101,200.84L161.708,202.358L162.376,203.876L162.497,205.454L161.951,206.001L161.465,206.061L160.98,206.122V206.608L161.04,207.154V207.64L161.101,208.125L160.615,208.732L160.13,209.279L160.19,209.825L160.737,210.311L161.222,210.25H161.769L162.254,210.189L162.801,209.643H163.287V209.097L164.319,208.489L164.258,207.943L164.197,206.911L164.683,206.365L165.168,205.818L165.654,205.211H166.2L166.686,205.151H167.232V204.604L167.172,204.119V203.572L167.05,202.479V201.994L166.99,201.447L166.383,200.962L165.411,201.569L164.804,200.719L164.561,199.323L164.683,198.473L165.168,198.412V197.866L165.654,197.38H165.108L165.593,196.834L166.079,196.287L166.625,196.227L167.111,196.166L167.172,196.712L168.264,197.198L168.811,197.137H169.297L169.843,197.077L170.389,197.016V197.502L170.45,198.048L170.996,198.534V199.08L171.603,199.566H172.089L172.635,199.505L173.121,198.898L173.06,197.866L173,196.834L172.939,196.287L171.846,195.862L171.3,194.83L170.693,194.345L169.6,193.859L168.568,193.981L168.022,193.495L167.475,193.009L165.775,192.584L165.29,192.099L164.683,191.613H164.197L163.165,191.734L162.558,191.249L161.465,190.824H160.919L161.465,190.277L161.951,190.217L162.437,189.67L162.376,188.578L160.737,188.213L160.251,188.274L158.673,188.335L157.58,188.456L156.548,187.97L155.88,186.999L155.395,186.453L154.241,185.482L153.573,184.51L152.541,183.539L152.481,182.446L152.906,181.9L152.359,180.928L151.691,179.896V179.35L151.145,178.864L151.084,177.893H150.477L149.445,177.407L148.353,176.983H147.806L146.713,176.558L146.653,176.011L146.106,175.586V175.04L145.499,174.008L145.985,173.461L145.924,172.915V172.429L146.349,171.883L146.896,171.276L146.835,170.79H146.289L145.742,170.305V169.819L145.196,169.88L145.681,169.273L146.167,169.212L146.106,168.18L147.199,168.119L147.685,168.059H148.231L148.778,167.998L149.263,167.451L149.749,167.391L149.688,166.905L150.295,166.844H150.781L150.842,167.33L151.388,167.816L151.327,166.784L151.813,166.723L151.934,166.602L151.813,166.541L151.752,165.812Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M136.575,159.5L136.211,159.136L135.725,159.257L135.3,159.318L134.936,158.893V158.529L134.875,157.982L135.361,157.436V156.95L134.815,156.707L134.268,156.525V156.1H133.843L133.358,156.161L133.297,156.04L133.236,156.1L133.176,155.554L132.204,155.675H131.658L131.112,155.736H130.626L130.08,155.797L129.594,155.858H129.048L127.955,155.433V155.918L127.894,155.858V155.918L127.408,155.493V155.554V155.493L127.348,155.433V155.858L127.408,155.979L126.862,155.493L126.801,155.433L126.376,156.525L125.769,156.04L125.284,155.615L125.223,155.554L124.737,156.161V156.647L124.312,157.739L123.341,158.347L122.248,158.407L121.823,158.954V159.5L120.852,160.593L120.366,161.685L120.974,162.717H121.034L122.006,162.11L122.43,161.018H122.552H122.977V160.471H123.038H123.22L123.463,160.411L124.07,161.443L124.13,161.989L123.584,162.05H123.341H123.159H123.098V162.535L123.645,163.021L123.159,163.082V163.628L123.705,164.053L123.766,164.174L124.13,164.478L124.312,164.599L126.316,163.871L126.923,164.417L127.955,164.357L128.44,164.296L128.987,163.203L128.926,162.657L129.412,162.11L129.958,162.05L130.383,162.475L130.505,162.535L130.565,163.082V163.567L131.112,164.114L131.719,164.599L132.204,165.085V164.539L132.69,163.992L133.176,163.385H133.722L133.661,162.353L133.601,161.807L134.147,161.746L134.633,162.171L134.693,162.293V162.717L134.754,162.778H135.24L135.786,162.717L136.332,162.657L136.879,163.142L137.364,162.596L137.243,162.535L136.757,162.11H136.818L137.304,161.564L137.789,161.018L138.336,161.503L138.882,161.443L138.821,160.957V160.35L138.761,159.864H139.307H138.639L137.182,159.986L136.575,159.5Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M162.497,159.741L162.982,159.681L163.407,158.649L163.347,157.616H163.407V157.556L163.893,157.495L163.832,157.07V156.524L163.225,156.038L163.165,155.492H163.225V155.431H163.772H163.893L164.379,155.128L164.257,155.37H164.318V155.552L164.864,155.674L164.804,155.431L164.864,155.37V155.31L165.229,154.824L164.864,153.853L164.621,153.246L164.318,152.881L164.682,152.699H164.621H164.682L165.046,152.517L164.986,152.396L164.439,151.789L164.561,151.303L164.197,150.878L163.589,150.939L163.043,150.817L162.193,150.453L162.072,150.15L161.708,149.846L161.404,149.421V149.36L160.372,149.482H159.826L159.704,149.36H159.644L159.219,148.996L158.733,149.057H158.187L157.155,149.178L156.851,149.482L156.669,149.725L156.73,150.271L156.244,150.817L155.151,150.878L154.119,150.939L153.998,150.817H153.937L153.512,150.453L153.026,150.514V151.06H152.48L151.994,151.121L151.387,151.182L151.448,151.667L150.962,152.214L150.537,152.76L148.898,152.881L148.959,153.974L149.02,154.46L149.445,154.824V154.885L149.627,155.006L149.688,155.492V156.038L150.112,156.402L150.234,156.524V157.009L150.295,157.556L149.809,157.616L149.87,158.102L149.688,157.981L149.566,157.92L149.263,157.616L149.141,157.495L149.08,157.009V156.524L148.109,156.099L147.623,156.16V156.706L147.016,156.22H146.531L145.438,156.342H144.952L144.467,156.888L143.981,156.949L143.374,157.009L142.828,156.524L142.342,157.07L141.796,157.131H141.249V157.009H141.128V156.584L140.217,156.16L139.732,157.252L139.246,157.313L138.7,157.799L138.396,157.556L138.153,157.374H137.607L137.485,157.252L137.364,157.192L137.06,156.888L136.514,156.402L135.968,156.463L135.482,157.009L135.361,156.949V157.434L134.875,157.981L135.421,157.616L135.543,157.495L136.271,157.981L136.332,158.77L136.211,159.134L136.575,159.438L137.182,159.923L138.639,159.802H139.246L139.732,159.741H139.792V160.288L139.853,160.713V160.773H140.399L140.946,160.713L141.917,160.105L141.856,159.62L142.403,159.559L142.949,160.045L143.495,159.984H144.042L144.588,159.923L145.559,159.863L146.167,160.348L146.652,160.773L146.713,160.834L146.774,161.32L147.32,161.866L147.441,161.927L147.866,162.291L148.413,162.23H148.898L149.445,162.17L150.477,162.109H150.537L150.78,162.352L151.084,162.655L151.569,162.594H151.63L151.691,162.655L152.601,162.291L153.026,162.23L153.694,162.959H153.876L154.241,162.898H154.787L155.394,163.323L155.515,162.837L156.244,162.473L156.912,162.594L156.851,162.412L157.215,161.623H157.337H157.762L158.551,161.562L158.915,161.502H159.461H159.522L159.947,161.441L160.372,161.259L160.858,161.077L161.465,161.198L162.132,160.591L162.436,159.741H162.497Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M134.936,158.529L134.875,157.982L134.936,158.529Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M129.958,124.29L130.019,124.776L130.08,125.261V125.808V125.868L129.533,125.929L129.594,126.415L129.655,127.447L129.715,127.933L129.655,127.993V128.054L129.23,128.54L129.776,128.965L129.837,129.511L129.412,131.089L129.351,131.15V131.211H128.805L128.319,131.271H127.833L127.226,131.332L126.741,130.846L125.162,131.514L124.191,132.061L124.252,132.546V133.032L124.373,134.125V134.61L124.312,134.671V134.732L123.341,135.278L123.402,135.764V136.31L123.463,136.796V136.856L123.038,137.889H123.523L123.584,138.374V138.921V138.981H123.098V139.467V139.528L123.159,139.71V140.013L123.22,140.499V140.985V141.045L123.766,141.531L124.373,142.017V142.199V142.563L124.434,142.684V143.049L124.495,143.534V143.656V144.141L124.009,144.202L124.07,144.323L124.555,145.113L125.162,146.145H125.223L125.769,146.63L126.801,147.116L127.894,146.995L128.441,147.48L129.048,147.42H129.533L130.019,147.905L130.08,147.966L129.108,149.059L128.623,149.605L128.198,150.698V151.183L127.712,151.79V152.276L127.773,153.308L127.833,153.854L127.348,154.401V154.947L127.409,155.494V155.554V155.494L127.894,155.858L127.955,155.919V155.433L129.048,155.858H129.594L130.08,155.797L130.626,155.736H131.112L131.658,155.676H132.204L133.176,155.554H133.297V156.04L133.358,156.161L133.843,156.101H134.268L134.39,156.04V156.586L134.815,156.708L135.361,156.951L135.483,157.011L135.968,156.465L136.515,156.404L137.061,156.89L137.364,157.193L137.486,157.254L137.607,157.375H138.154L138.396,157.558L138.7,157.8L139.246,157.315L139.732,157.254L140.218,156.161L141.128,156.586H141.25V157.011V157.133H141.796L142.342,157.072L142.828,156.526L143.374,157.011L143.982,156.951L144.467,156.89L144.953,156.343H145.439L146.531,156.222H147.017L147.624,156.708V156.161L148.11,156.101L149.081,156.526L149.142,156.586L149.202,157.072L149.263,157.618L149.567,157.922L149.688,157.983L149.87,158.104L149.809,157.618L150.295,157.558L150.234,157.011V156.526L150.113,156.404L149.688,156.04V155.494L149.627,155.008L149.445,154.886L149.02,154.462L148.96,153.976L148.899,152.883L150.538,152.762L150.963,152.215L151.449,151.669L151.388,151.183L151.995,151.123L152.481,151.062H153.027V150.516L152.663,150.091L152.177,149.484L151.691,149.059L151.327,148.634L151.206,148.512L150.72,148.573L150.174,148.087L149.567,147.055L149.02,146.023L148.413,145.598L148.352,145.052L148.292,144.02L147.745,143.474L147.199,143.049L147.078,142.017H146.592L145.985,140.985L145.863,139.953H145.924L146.471,140.438L146.531,140.985L147.503,140.377H147.563L148.11,140.863L149.142,140.802L150.113,140.195H150.174L150.659,140.135L151.145,139.588L151.691,139.528L153.209,138.374L153.695,137.828L154.18,137.281L155.212,136.674L155.819,137.16V137.706L156.305,137.646L156.851,137.099L156.791,137.039V137.099L156.73,136.553L156.669,134.975L157.094,134.428L156.609,134.489L156.548,133.943V133.396L156.427,131.818L156.366,131.332L155.759,130.3L155.698,129.814L155.637,129.268L156.184,128.661L155.698,128.722H155.637L155.091,128.236V127.75L154.484,127.265L153.877,126.233L154.362,125.686L154.848,125.079V124.594L154.787,124.047V123.501L154.727,123.015V122.651L154.666,121.498L153.088,121.558L152.966,120.526L152.905,119.434L151.873,119.555H151.327L151.266,119.009L150.72,118.584V118.037L150.174,118.098L149.688,118.644L149.142,118.705H148.595L147.624,119.312L146.592,119.919L146.046,119.434L146.106,119.919L145.56,119.98L144.467,120.041L143.982,120.101L142.828,119.616H143.435L143.374,119.069H143.86V118.523L143.799,117.977H143.314L142.707,118.037L142.282,118.644L141.675,117.612L141.189,117.673H140.643L140.582,117.187H140.096L139.489,117.248V116.702L139.975,116.155L139.429,115.67L138.821,115.184L138.7,115.063L138.457,115.305L138.639,115.063L138.336,114.759L137.425,114.82H137.364H137.304L136.818,114.395H136.332V114.881V114.395V114.273L136.15,114.334L136.272,115.366V115.913L136.818,116.337L136.879,116.884L135.847,117.491L135.361,117.552V118.037H135.847L135.908,118.523L135.968,119.069L137.061,119.555L136.575,120.101L137.122,120.587L138.214,121.012L138.275,122.105L137.729,121.073L137.122,120.587L136.029,120.648L135.058,120.708V121.255L135.118,122.287L135.179,122.833L134.693,123.38V123.865L134.147,122.894L134.086,122.408L134.026,121.862H133.54V122.408L133.054,122.469L132.994,121.923L133.479,121.376L132.386,120.891L131.354,120.951L130.262,121.073H129.776V121.619L129.29,122.165L129.351,122.712H129.898V123.197L130.444,123.683L130.383,123.744L129.958,124.29Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M136.332,114.395H136.818L137.364,114.819H137.425L138.335,114.759H138.457L138.7,115.002L139.003,114.698H139.489L138.943,114.152L138.335,113.666L138.882,113.18L139.428,113.12L138.821,112.634V112.148L139.307,112.088V111.541L139.246,111.056L139.792,110.995L140.217,110.449L140.824,110.388L140.764,109.842L141.735,109.234L142.221,108.202L141.674,107.717L142.16,107.11H142.646L142.706,107.595H143.253L143.678,106.988V106.503L143.617,105.956L143.071,105.471L142.585,105.531L142.039,105.592L141.978,105.046H141.492L141.432,104.56L141.917,103.953H142.464L141.856,103.467V102.921H141.31L140.824,102.982L140.885,103.528L139.792,103.649H139.246L138.76,104.196L139.367,104.681V105.228L138.821,104.742L138.335,105.288L138.275,104.742L138.214,104.256H137.668L137.243,104.864L137.303,105.349L136.757,105.41L136.15,104.924H135.664L135.604,104.439H135.118V104.985L134.632,105.531L134.693,106.078L134.754,107.11V107.656L134.814,108.142L134.875,108.688V109.174L134.936,109.72L134.45,110.327L134.997,110.813L135.543,110.752L135.604,111.298L136.15,111.723V112.33L136.211,112.816L136.271,113.848L136.332,114.273V114.395Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M138.457,115.305L138.7,115.063V115.002L138.639,115.063L138.457,115.305Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M111.746,135.581H111.807V136.006V136.067H112.293L112.778,136.006H112.839L112.9,136.552V136.977V137.099L113.446,137.038H113.932H113.992V137.524L114.599,138.556L115.146,138.495L115.631,138.434H116.117H116.178L116.238,139.466L116.299,140.013L115.814,140.498V140.559L116.36,141.105L116.906,141.045L117.453,140.984L117.392,140.438L117.938,140.377V140.984L118.485,141.409H118.545V141.895V141.955L119.092,142.441H119.152V142.805V142.927H119.638L120.245,143.412L120.792,143.898L120.852,144.444L121.338,143.837H121.884L121.945,143.777V143.716L122.066,142.866L121.763,142.259L121.702,141.712V141.166L122.188,140.68L122.613,140.073H122.673L123.159,140.013V139.709L123.098,139.527V139.466V138.981H123.584V138.92V138.434L123.523,137.888L123.038,137.949V137.888L123.463,136.856V136.795L123.402,136.37V135.824L123.341,135.278L123.28,135.338L123.22,134.853L122.127,133.821L121.581,133.335L121.034,132.849L120.488,132.91L120.063,133.396L120.002,133.456L119.456,133.517L119.395,132.971L117.817,132.546H117.392L116.846,133.092L116.906,133.638L115.814,133.699L115.328,133.76H114.842L114.782,133.274L114.235,132.789L113.689,132.849L113.628,132.242L113.082,132.303L112.596,132.91L112.05,132.364L112.11,132.971L111.078,133.517L111.139,134.063L111.2,134.61V134.974V135.095L111.746,135.581Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M124.494,144.142V143.656V143.535L124.433,143.11V142.685L124.373,142.563V142.199V142.078L123.826,141.592L123.219,141.106V141.046V140.985V140.621L122.673,140.074H122.612L122.187,140.681L121.702,141.167V141.713L121.762,142.26L122.066,142.867L121.944,143.717V143.777L122.612,143.899L123.523,144.081L124.009,144.202L124.494,144.142Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M119.395,132.971L119.456,133.517L120.002,133.457L120.063,133.396L120.488,132.91L121.034,132.85L121.58,133.335L122.127,133.821L123.219,134.853L123.28,135.339L123.341,135.278L124.312,134.732V134.671L124.251,134.185L124.191,133.153V132.607L124.13,132.121L124.191,132.06L125.162,131.514L126.74,130.846L127.226,131.332L127.833,131.271H128.319L128.804,131.211H129.351V131.15L129.776,129.571L129.715,129.086L129.169,128.6L129.229,128.539L129.654,128.054V127.993L129.594,127.507L129.533,126.475L129.472,125.929H129.533L130.079,125.868V125.808L130.019,125.383L129.958,124.836V124.29L130.383,123.744L129.897,123.319L129.351,123.804L128.865,123.865L128.683,121.74L128.137,121.801L127.651,121.862L127.165,122.469L126.133,123.015V122.529L126.073,121.983L125.526,122.59H125.041L124.555,122.651L123.523,123.197L122.977,123.804L123.037,124.29L123.098,124.776V125.322L123.159,125.868L123.219,126.9L122.248,128.054H121.762L121.216,128.114L121.155,127.082L121.641,126.475L121.095,126.536L121.58,125.99L122.066,125.383V124.897L121.459,124.411L120.427,124.472L119.941,125.565L120.063,126.597L119.577,127.204L119.638,127.69L119.031,127.75L119.091,128.236L118.606,128.843L117.574,128.904L117.634,129.936H118.181V130.421L117.209,131.028L117.149,129.996L116.602,130.057V130.543L116.663,131.028L116.724,132.06H117.27L117.816,132.546L119.395,132.971Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M139.186,101.827H138.579L137.061,101.948L136.575,102.009L136.029,102.555L136.09,103.041L136.697,104.073L136.636,103.587V103.041L137.122,102.494L137.607,102.434H138.154L138.639,102.373H139.186L139.732,102.312L140.218,101.766L140.764,101.705L141.796,101.645L142.342,102.13L142.949,102.555L142.889,102.07L143.374,101.523L143.86,100.977L143.799,99.945H143.253L143.192,99.459L143.739,98.852L144.164,98.306L143.678,98.366L143.192,98.913H142.646L142.16,98.973L141.675,99.52L141.128,99.58L140.643,100.127L140.157,100.734L140.218,101.22L139.671,101.766L139.186,101.827Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M140.4,112.27L140.461,113.302L141.553,113.241L141.614,113.727L142.646,113.666L143.192,113.605L143.132,113.12V112.634L143.071,112.088L143.01,111.602H142.525L141.918,111.116L141.493,111.663L140.886,111.177L140.946,111.723L140.4,111.784V112.27Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M144.285,110.388L143.8,110.935L143.86,111.481L144.407,111.967L143.921,112.513L143.982,113.059L144.528,113.484L145.56,113.424L146.106,113.363L146.167,113.97H145.621L146.714,114.395H147.26L146.653,113.909L147.199,113.302H147.685L148.11,112.209L147.563,111.785L148.535,110.57L149.02,110.024L148.413,109.053L148.96,108.506H148.413L148.899,107.96L147.806,108.021L147.321,108.081L146.835,108.628H147.321L147.928,109.053L147.442,109.66H146.896L146.41,109.72V110.267L146.471,110.752H145.924L145.378,110.328L145.864,109.72L145.803,109.235H145.257L145.317,109.781L144.832,110.328L144.285,110.388Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M144.649,115.608V115.122H144.103L143.557,115.183L143.617,115.729L144.164,116.154L144.771,116.64H145.256L145.803,116.579L145.742,116.033L145.196,115.608H144.649Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M147.321,115.427L146.774,115.488L146.228,115.002L146.288,115.488V116.034L146.835,116.52V115.973L147.381,115.913L147.321,115.427Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M186.416,145.538H186.294H185.869L185.384,145.598H185.141H184.898H184.837L184.291,145.113L183.745,144.627L183.138,144.202H182.713H182.652L182.045,143.17L181.559,143.716L181.256,144.081L181.134,144.323L179.556,144.93H179.495V144.445L179.374,143.413L178.888,143.898L178.402,143.959L177.856,143.534L176.885,144.081L176.945,144.627L176.46,145.173V145.113L176.338,145.173L176.278,144.081L175.792,143.656L175.306,144.141L174.821,144.202L174.335,144.809L174.274,144.748L174.214,144.809L173.667,144.263L172.696,144.384H172.574L172.089,143.898L171.482,143.413L170.935,142.927L169.843,142.988L168.75,142.563L168.204,142.017L167.111,140.62L166.625,141.106H166.564L166.018,140.681L164.925,140.742H164.683H164.5L165.047,141.227H164.986L164.5,141.288L164.075,141.834V142.32L164.015,142.199V142.32L163.408,141.349L162.861,140.863L161.89,140.924L161.769,140.985L162.315,140.377L162.801,139.831L162.194,139.345L161.222,139.406H161.162L160.069,138.92L159.583,138.981L158.976,138.496L158.43,138.556V138.01L158.369,137.524L158.308,136.492H157.823H157.762L157.033,136.674L156.851,136.978V137.099L156.305,137.646L155.819,137.706V137.16L155.212,136.674L154.18,137.281L153.695,137.828L153.27,138.374L151.691,139.528L151.206,139.588L150.659,140.135L150.174,140.195L149.142,140.802L148.11,140.863L147.563,140.377L146.531,140.985L146.47,140.438L145.924,139.952L145.985,140.985L146.592,142.017H147.138L147.199,143.049L147.745,143.474L148.292,144.02L148.413,145.052V145.598L149.02,146.023L149.566,147.055L150.234,148.087L150.781,148.573L151.266,148.512L151.327,148.634L151.691,149.059L152.177,149.484L152.663,150.091L153.027,150.516L153.512,150.455L153.998,150.819L154.12,150.94L155.152,150.88L156.244,150.819L156.73,150.273L156.669,149.726L156.851,149.484L157.155,149.18L158.187,149.059H158.733L159.219,148.998L159.705,149.362L159.826,149.484H160.372L161.404,149.362V149.423L161.708,149.848L162.072,150.151L162.194,150.455L163.043,150.819L163.59,150.94L164.197,150.88L164.561,151.305L164.44,151.79L164.986,152.397L165.108,152.519H165.047L164.683,152.701L164.318,152.883L164.622,153.247L164.5,153.005L165.715,153.794L165.775,153.854H165.957L166.443,154.279L166.807,154.219L167.414,154.704L167.9,155.19H167.961L168.932,155.129L169.539,155.069L170.025,155.008H170.268L171.603,154.461H172.028L171.664,153.976L171.967,153.854L172.028,153.308L172.817,153.187L173.607,153.247L174.153,153.187L174.699,153.126L175.671,152.519L176.156,151.972L177.188,151.365L177.674,150.819L178.16,150.212L178.099,149.726L178.645,149.18L179.131,149.119H179.677L180.709,148.998H181.256L181.802,148.937H182.288L182.348,149.423H182.834H182.895H183.077L183.502,149.787L184.473,149.301L184.594,149.362L184.655,149.301L184.777,149.241L185.019,149.484L185.566,149.726L185.627,149.908L185.687,149.18L185.505,148.816L185.627,148.209L185.869,147.723H186.355L186.173,147.055L186.476,146.63L187.023,146.266L186.901,145.902L186.659,146.266L186.416,145.538Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M185.019,149.484L184.837,149.423L184.594,149.362L184.473,149.302L183.502,149.787L183.441,149.848L182.895,149.423H182.834H182.348L182.288,148.938H181.802L181.256,148.998H180.709L179.677,149.12H179.131L178.645,149.18L178.099,149.727L178.159,150.212L177.674,150.819L177.188,151.366L176.156,151.973L175.67,152.519L174.699,153.126L174.153,153.187L173.606,153.248L172.817,153.187L172.028,153.308L171.967,153.855L171.664,153.976L172.028,154.462H171.603L170.268,155.008H170.025L169.539,155.069L168.932,155.13L167.961,155.19H167.9L167.414,154.705L166.807,154.219L166.443,154.28H166.261L165.775,153.855L165.715,153.794L164.5,153.005L164.622,153.248L164.865,153.855L165.229,154.826H165.29L164.865,155.372L164.804,155.433L164.865,155.676L164.318,155.555H164.197L164.258,155.372L164.379,155.13L163.893,155.433L163.772,155.494H163.226H163.165L163.226,156.04L163.833,156.526V157.072L163.893,157.497V157.558L163.408,157.619H163.347L163.408,158.651L162.983,159.683V159.743H162.497H162.436L162.133,160.593L162.194,160.533L163.408,160.775L163.59,161.2L164.197,161.686L164.743,162.172L164.804,162.718V163.264L165.411,163.75L165.957,164.236L166.504,164.661L167.05,165.146H167.596L167.657,165.693L168.204,165.632L168.75,166.118L169.236,166.057H169.782L170.268,165.996L171.36,166.239L171.664,166.057L172.21,165.45L172.757,164.782L173.182,164.418L174.092,164.357L174.517,164.175L175.246,163.568L176.399,163.143L177.067,163.75L177.188,163.568L177.977,163.386L177.917,162.9H177.977H178.524L179.131,162.839L179.92,163.082L180.588,163.143L181.073,162.111L181.559,161.565L182.045,160.957L182.53,160.472L183.016,159.865V159.379H183.502L183.987,158.772L184.473,158.165L184.352,156.647L184.837,156.04L184.716,155.008L185.262,154.462L185.748,153.915L186.294,153.855L186.719,153.308L187.266,152.762L187.751,152.216L187.691,151.669L186.719,150.455L186.901,150.394L186.719,150.212L186.112,150.091L185.869,150.212L185.809,150.273L185.748,150.212L185.626,149.909L185.566,149.727L185.019,149.484Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M154.787,123.501V124.048L154.848,124.594V125.08L154.362,125.687L153.877,126.233L154.484,127.265L155.091,127.751V128.237L155.637,128.722H155.698L156.184,128.662L155.637,129.269L155.698,129.815L155.759,130.301L156.366,131.333L156.426,131.818L156.548,133.397V133.943L156.609,134.489L157.094,134.429L156.669,134.975L156.73,136.553L156.791,137.1V137.039L156.851,136.978L157.033,136.675L157.762,136.493H157.823H158.308L158.369,137.525L158.43,138.01V138.557L158.976,138.496L159.583,138.982L160.069,138.921L161.162,139.407H161.222L162.194,139.346L162.801,139.832L162.315,140.378L161.769,140.985L161.89,140.924L162.861,140.864L163.408,141.349L164.015,142.321V142.199V141.835L164.44,141.289H164.5L164.986,141.228L164.44,140.803L164.683,140.742H164.925L166.018,140.682L166.564,141.107H166.625L167.05,140.56L167.111,140.621L168.204,142.017L168.75,142.563L169.843,142.988L170.935,142.928L171.482,143.413L172.089,143.899L172.574,144.385H172.696L173.667,144.263L174.214,144.81L174.274,144.749L174.699,144.203H175.246L175.731,143.656H175.792L176.278,144.081L176.338,145.174L176.46,145.113L176.885,144.628L176.824,144.081L177.856,143.474V143.535L178.402,143.96L178.888,143.899L179.374,143.413L179.495,144.445V144.931H179.556L181.073,144.324L181.256,144.081L181.559,143.717L182.045,143.171L182.652,144.203H182.713H183.138L183.745,144.628L184.291,145.113L184.837,145.599H184.898H185.141H185.384L185.869,145.538H186.294H186.416L186.659,146.267L186.901,145.902L187.144,145.477L187.083,144.931L187.205,144.445L187.144,143.838V143.413L187.266,142.26L187.448,141.592L187.873,140.924L188.419,140.742L188.844,139.771L189.087,139.225L190.119,138.193L191.151,138.253L191.697,137.828L192.001,136.675L191.576,135.946L191.151,135.764V135.097L191.515,134.914L190.483,133.761L190.058,133.032L189.269,132.547L189.512,132.122L189.208,131.697L189.451,130.119L189.39,130.058L189.269,129.936V129.572L189.512,127.994L188.54,127.812L188.055,127.205L189.937,125.748L190.058,125.262L190.119,125.201L190.24,124.837L190.119,123.137L189.937,122.712L189.694,122.105L189.39,121.741L188.723,120.952L188.419,120.588L188.298,119.07L187.933,118.766L187.691,117.977L187.63,117.127L187.569,116.884L186.416,116.034L185.627,115.913L184.655,115.367V115.306L185.019,114.699L184.412,114.76L184.594,114.638L184.716,113.91L184.534,113.181L184.473,113.06V112.999L184.291,112.574L183.805,111.724L182.895,111.481L182.045,111.785L181.62,112.331L181.438,112.574L180.406,112.635L179.799,112.696H179.677L179.495,112.271L179.009,111.724L178.22,111.906L177.735,111.967V112.453L178.281,112.392L177.795,113.485L177.31,114.031L176.278,114.092V113.545L176.217,113.06V112.574L174.699,113.667V114.213L173.849,115.002L174.76,115.306L174.821,115.792L174.335,116.399H173.849V116.945L173.91,117.431V117.977L172.878,118.038L172.332,118.099V117.552L171.785,117.613L170.268,118.22L169.661,117.734L169.6,117.249V116.702L169.539,116.156L168.993,115.67V115.185L167.354,115.245L166.868,115.852H166.382L165.29,115.427L164.804,115.974L164.258,116.034L164.318,116.52L163.772,116.581L163.286,117.188L162.679,116.642L162.254,117.249L161.769,117.795L161.283,118.341H160.737L160.251,118.948H159.705L159.765,119.495L159.219,119.555L158.187,119.616L157.641,119.677L156.609,120.284L156.184,121.377L155.698,121.862L156.244,122.348L156.305,122.894L156.123,122.834L155.334,122.894L154.727,122.227V122.652V123.016L154.787,123.501Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M201.107,205.698L201.714,206.73H202.26L202.139,205.637L201.653,205.091L201.046,204.666L200.985,204.18L200.439,203.634L199.953,203.694L199.346,203.209L198.254,202.723L197.222,202.844L196.675,202.298L196.068,201.873L195.583,201.934L194.551,202.48L195.097,202.966H195.643L196.736,202.844L197.222,203.33L198.314,203.755L198.921,204.301L200.014,204.726L200.561,205.212L201.107,205.698Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M162.497,35.535V36.021L163.044,35.475L162.983,34.929H163.529L164.015,34.868L164.501,33.289L163.893,32.804H163.347L163.408,33.411H162.861L162.315,33.472L162.376,33.957L162.436,34.443L161.89,34.989L162.497,35.535Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M148.231,88.169L148.717,87.562L148.656,87.016L149.142,86.469H149.688H149.81L150.234,86.408L150.599,84.83L150.477,83.191V82.705L150.417,82.159L149.87,81.188L149.81,80.641L151.267,79.488V78.941L151.206,77.97L151.145,77.363L150.599,76.938L149.992,76.392V75.845L149.931,75.36L150.417,74.328L150.356,73.721L150.295,72.689L149.688,72.203V71.717L149.627,70.685L150.113,70.078L149.992,69.046L149.931,68.014L149.87,66.921L150.356,65.889L150.842,65.282L151.874,64.675V64.736L151.934,64.675V65.161H152.359L152.906,64.615L153.391,64.068H153.877L154.97,64.007L155.455,63.4L154.848,62.368L154.788,61.883V61.336L154.18,60.304L154.666,59.758L155.637,59.151V58.604L156.062,57.026L156.002,56.48L155.941,55.994L155.88,54.901L156.366,54.416L156.852,53.323L156.791,52.23L157.823,51.623L158.794,51.016L159.28,50.53L159.219,49.984L159.158,48.891L160.19,48.284L161.162,47.192V46.706L161.587,46.099L161.04,45.067L160.433,44.642L160.98,44.035L161.405,43.488L162.922,42.335V41.849L163.347,40.696H163.408H163.954L165.047,41.121L165.472,41.06V40.575L165.351,39.542L166.383,38.935H166.443L167.05,39.421L167.475,39.36V38.875L167.84,37.236H167.9L168.932,37.661V37.175L168.811,36.143V35.597L168.872,35.536L169.904,35.475L169.843,34.443L170.268,33.411H170.329L170.571,33.35H170.814L171.361,33.836L172.453,34.261L172.514,34.807L173.121,35.839H173.364L173.607,35.779H173.971H174.153L174.699,36.264L176.278,36.143L176.763,35.597H176.824L177.31,35.536L177.917,36.507L178.888,35.961L179.435,35.9L179.374,35.414L179.86,34.261L180.345,33.715L180.285,33.168V32.683L180.224,32.197L180.709,31.104L180.527,28.979L181.013,28.433H181.499L182.045,28.372L183.077,27.705L183.563,27.219L183.866,27.158H184.109L183.684,28.251L185.262,28.615H185.687H185.809L186.355,29.101L186.962,29.526V30.072L186.477,30.679L186.537,31.772L186.598,32.258L186.659,32.743V33.29H186.78L186.962,33.229H187.205L187.327,31.347L187.934,30.133L189.026,29.344L190.24,29.04V28.737L190.544,27.158L190.423,27.219L189.391,27.28L188.844,27.34L189.33,26.794L189.269,25.701L188.723,25.276L189.208,25.216L189.755,24.669L189.694,24.123L189.633,23.576L189.148,23.637L189.087,23.091L187.994,23.152L187.023,23.759L186.962,22.727L185.87,22.787L185.323,22.302L184.352,23.455V23.941L183.927,24.548L183.32,23.516L183.259,22.969L183.745,22.423V21.938L183.684,20.845L183.138,20.905L182.166,21.998V22.545L181.134,23.152L181.256,24.73L181.317,25.276L180.709,24.791V24.244L180.163,23.759L180.102,23.212V22.666L180.042,22.18L179.495,22.241L179.556,22.727L179.617,23.212L179.131,24.366L178.706,25.458L178.22,26.49L178.16,26.005V25.458L178.099,24.426L179.07,23.819V23.273L179.495,22.241L180.042,21.634L179.435,21.148L177.917,22.302L177.371,21.816L176.885,22.423L176.946,22.909L177.978,23.334L176.46,24.001L175.914,23.516L175.428,24.062L175.489,25.155H174.942L175.549,25.641L174.517,26.794L173.91,25.762L173.485,26.369L173.546,26.855V27.401L173.06,27.948L172.514,27.462H171.968V28.008L171.421,27.522L170.875,27.583L170.45,28.13V28.615L169.964,28.676L169.479,29.283L169.539,30.254L170.086,30.74L170.146,31.833L169.6,31.286L169.054,30.801L168.507,30.861L168.082,32.015L167.415,30.922L166.99,31.529L167.05,32.561L167.597,33.593L167.657,34.079L167.111,33.593L166.504,32.622L166.565,33.654L166.14,34.747L165.593,34.2L165.472,33.229L164.986,33.775L165.108,35.354H164.622L164.076,35.414L163.59,35.961L164.136,36.446L163.651,37.054L163.165,37.539L163.226,38.085L163.772,38.571L163.287,39.178L161.708,39.3L161.647,38.693L161.162,39.3V39.785L161.283,40.878V41.364L160.858,42.457L160.798,41.424L160.737,40.392L160.676,39.846L160.19,40.453H159.705L159.158,40.514L158.673,41.06L159.158,41L159.766,41.485V42.032L159.219,41.485L158.733,42.092L158.126,41.607H157.641L157.701,42.699L157.216,43.306L158.733,42.639L159.341,43.124V43.61L158.309,43.731H157.762L157.337,44.338V44.824L158.369,44.763L158.43,45.795L157.944,45.856H157.398L156.912,46.463L156.427,47.009L155.334,46.584L154.848,47.131L154.909,47.677V48.163H154.423L153.938,48.709L154.484,49.256L153.998,49.802L152.906,49.923L153.513,50.409L154.059,50.895L154.545,50.288L154.666,51.32L153.573,51.38L153.027,51.441L153.088,51.987L153.634,52.412L153.148,53.02H152.602L152.116,53.627L151.631,54.173L152.238,54.719V55.144L151.752,55.751L151.206,55.266V54.78L150.659,55.812L150.72,56.358L151.267,56.298L151.388,57.39L150.842,57.937L150.356,57.998L150.417,59.029L149.931,59.576H149.385L149.445,60.122L149.931,60.062L149.992,60.608L150.052,61.154L149.567,61.701L148.474,61.276L148.413,60.729L147.867,60.244L147.381,60.79L146.896,61.397H146.349L145.803,61.458L145.864,62.49L145.378,63.036L144.953,64.129H144.467L143.921,64.19L143.982,64.736L144.042,65.768L143.435,65.282L142.95,65.829L142.464,66.436L141.918,65.889L141.432,66.496L140.886,67.043H140.4L140.521,68.136L139.914,67.65H139.368L139.975,68.196V68.682L139.489,68.743L138.882,68.257L138.457,68.803L137.911,68.864H137.365L136.818,68.925L136.879,69.471L137.486,70.442L136.94,70.503H136.393L135.301,70.078H134.815L134.329,70.685L134.876,71.171L134.936,71.717H134.39L133.358,71.839L132.872,72.931L132.812,71.839L132.265,71.899L131.78,72.446L131.294,71.96L130.687,72.021H130.201L130.262,72.567V73.114L130.808,73.538H131.355L131.415,74.024L130.869,74.085L130.383,74.631L129.291,74.753L129.351,75.238L129.958,75.724V76.27L128.866,75.845L128.926,76.331V76.877L129.533,77.849L130.626,77.788V78.334L130.14,78.395L128.987,77.849L129.048,78.456L129.108,78.941L129.655,79.913L130.262,80.398L129.715,81.006L129.23,80.52L128.683,81.066L128.744,81.613L129.776,82.037L129.291,82.098H128.805V82.645L129.412,83.13L129.898,83.616L130.99,83.555L132.022,82.948L131.051,84.041L130.565,84.587L130.019,85.194L131.233,86.166L130.687,86.226L130.08,86.287L129.655,86.773L129.108,86.348L128.562,86.408L128.076,87.38L128.137,87.987L127.712,89.019L128.259,89.565L129.169,87.926L130.201,87.805L130.262,88.351L130.323,89.444H129.837L129.898,90.476L129.412,91.022L129.351,90.536L128.926,91.022V91.568L129.048,92.661V93.147L130.14,94.118L131.78,94.543L130.748,95.636L131.901,96.121L132.387,95.515L132.447,96.607L134.026,96.486L135.058,96.425L136.09,95.818L136.15,96.364L137.122,95.757L137.607,95.15L138.032,94.118L138.579,93.511L140.157,92.904L140.096,92.418L140.582,91.811L141.614,91.751L141.675,92.297L142.221,92.722L143.253,92.176L143.192,91.083L144.164,89.99L144.042,88.897L143.496,88.472L144.467,87.319L144.953,86.773L145.439,86.166H145.985L146.046,87.198L145.56,87.744L145.074,87.805L145.135,88.837L145.621,88.776L147.26,89.747L148.231,88.594V88.169Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M146.835,90.841H146.895L146.956,91.387L147.442,91.873L147.867,91.326V90.78L147.806,90.234L147.259,89.748L146.349,90.901L146.531,90.841H146.835Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M176.763,42.943H176.702L177.188,42.396V41.91L177.127,41.304V40.818L177.067,40.271L176.52,39.786L176.399,38.754H175.913L174.76,38.329L173.728,37.843L173.242,37.904L172.635,37.418L172.149,37.479H172.089L172.028,36.447L170.935,35.961L169.843,35.476L168.871,35.536L168.811,35.597V36.143L168.932,37.175V37.661V37.722L167.9,37.236H167.839L167.475,38.875V39.361L166.989,39.422L166.443,38.936H166.382L165.35,39.543L165.472,40.575V41.061L164.986,41.121L163.954,40.696H163.408H163.347L162.922,41.85V42.335L161.404,43.489L160.979,44.035L160.433,44.642L161.04,45.067L161.586,46.099L161.161,46.706V47.192L160.19,48.285L159.158,48.892L159.219,49.985L159.279,50.531L158.794,51.017L157.823,51.624L156.79,52.231L156.851,53.324L156.366,54.416L155.88,54.902L155.941,55.995L156.001,56.48L156.062,57.027L155.637,58.605V59.151L154.666,59.758L154.18,60.305L154.787,61.337V61.883L154.848,62.369L155.455,63.401L154.969,64.008L153.877,64.069H153.391L152.905,64.615L152.359,65.161L151.873,65.222V64.736V64.676L150.841,65.283L150.356,65.89L149.87,66.922L149.931,68.015L149.991,69.047L150.113,70.079L149.627,70.686L149.688,71.718V72.203L150.295,72.689L150.356,73.721L150.416,74.328L149.931,75.36L149.991,75.846V76.392L150.598,76.938L151.145,77.364L151.205,77.971L151.266,78.942V79.488L149.809,80.642L149.87,81.188L150.416,82.159L150.477,82.706V83.191L150.598,84.83L150.234,86.409L149.809,86.47H149.688H149.141L148.656,87.016L148.716,87.562L148.231,88.169V88.594L147.259,89.748L147.806,90.233L147.867,90.78V91.326L147.442,91.872H147.381L146.895,91.387L146.835,90.84H146.531L146.349,90.901L146.41,91.933L146.47,92.419L146.531,93.512V94.058L146.592,94.544L146.652,95.09V95.576H147.199L147.259,96.608L147.684,96.061L148.292,96.547L147.806,97.64L147.867,98.125V98.672L147.927,99.157L147.988,100.25L148.049,100.796L148.656,101.282L148.109,101.828L148.17,102.86L148.777,103.346L149.263,103.285L149.384,104.925L150.538,105.349V105.835L150.598,106.381L150.052,106.442L150.113,106.928L149.566,107.474L149.627,108.021V108.567L150.234,108.992L150.295,109.599L150.841,110.024L150.902,110.57L150.963,111.602L150.477,112.209L151.023,112.634L151.509,112.088L152.116,112.574L153.634,111.967L154.18,112.452L154.666,112.391L155.273,112.331L155.212,111.845L155.151,110.813L155.091,109.72L155.516,109.174H156.062L156.608,109.113L157.094,108.506L156.548,108.567L157.033,108.021L158.065,107.414L159.158,107.899V108.385L159.704,108.324L160.736,108.263L161.283,108.203L161.222,107.171L161.161,106.685L162.133,105.046L162.011,104.014L162.497,103.468L163.043,102.86L162.983,102.375H162.436L162.922,101.282L163.408,100.736L162.861,100.25L162.801,99.704L162.74,99.218L163.225,98.611V98.065L163.65,97.033V96.547L163.59,95.94L162.983,94.968L164.015,94.362L162.376,93.997L162.861,93.39L163.954,93.876L164.5,93.815L165.472,92.722L165.411,92.176V91.63H165.897L166.443,91.569L166.989,92.055L167.475,90.962L167.961,90.415L168.932,89.808L167.839,89.383V88.837L168.386,88.23H168.871L169.782,86.652L169.235,86.105L169.175,85.073L168.143,85.62V85.134L168.082,84.588L167.475,84.102L166.989,83.677L166.929,83.131L166.868,82.584L165.836,83.191L165.289,82.706L164.743,82.159L164.622,81.188L164.075,80.702L164.015,80.156L163.529,79.67L164.015,79.61L164.5,79.063L164.44,78.031L164.379,77.485L164.318,76.453L164.865,76.392L164.257,75.967L164.743,75.36L164.682,74.328L165.168,73.782L165.107,72.689L163.529,72.811L163.468,71.778L163.954,71.232L165.047,71.657L165.532,71.111L166.079,71.05L166.504,70.504H167.111L168.082,69.896L167.536,69.411L168.507,68.257L167.961,67.772L168.993,67.711L169.478,66.618L169.964,67.104L170.996,66.497L170.45,66.011L170.935,65.465L171.482,65.404L172.514,64.797L172.392,63.765V63.219L172.332,62.733L172.817,61.64H173.303L173.728,60.548L174.274,59.94L173.667,59.516V58.969L173.546,57.876L173.485,56.845L173.971,56.298V55.752L173.91,55.266L174.396,54.659L175.488,54.598L175.428,53.506L175.306,52.534V51.988H175.792L176.338,52.413L177.309,51.32L177.917,51.806H178.463L178.949,51.745L179.495,52.231L179.981,51.684L179.859,50.592L179.313,50.106L178.766,49.135L178.706,48.588L178.645,47.556L178.584,46.464L179.009,45.917L178.524,45.432L178.463,44.946L177.917,44.4L177.856,43.914L177.795,43.368V42.882L176.763,42.943Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M197.039,75.724L197.525,74.692L198.011,74.085L198.436,73.538L198.921,72.385L199.225,71.353L199.346,70.867V71.232V71.353L199.893,71.292L200.378,70.746L199.832,70.26L200.317,69.714L200.257,68.621L200.742,68.135L201.228,67.528L201.167,67.043L201.592,65.889L202.624,65.282L203.11,64.25L202.503,63.218L201.957,62.733L200.317,62.308L198.678,61.883L198.132,61.397L197.586,60.972L197.039,61.033L196.432,60.001H196.493L196.979,59.94L197.464,59.879L198.011,59.272L197.95,58.787V58.301L197.343,57.815L197.282,57.269L196.25,57.33V56.783L196.189,56.298L195.4,55.994L195.34,55.933L195.097,55.812L196.129,55.266L195.582,54.78L195.522,54.234L195.036,54.841L194.429,54.294V53.809L194.368,53.262V52.716L193.883,52.352L193.761,52.23V51.745L193.822,51.684L194.247,51.198L193.64,50.166L194.125,49.559V49.316L194.065,49.074V48.527L193.458,47.556L192.851,46.524L192.304,45.977L191.211,45.613L191.151,45.067L190.604,44.581L189.997,43.549L189.937,42.517L189.876,42.031L189.815,40.999L190.301,40.392L190.24,39.907L190.179,38.814L189.087,37.843L188.115,37.478L187.994,37.418V37.296L187.933,36.871L187.387,36.386L186.841,35.9L186.233,35.414V34.929L186.719,34.322L186.658,33.775L187.144,33.229H186.962L186.78,33.29H186.658L186.598,32.743L186.537,32.258V31.772L186.476,30.679L186.962,30.072L186.901,29.587L186.355,29.101L185.748,28.615H185.687H185.262L183.623,28.251L184.109,27.158H183.866L183.562,27.219L183.077,27.705L182.045,28.372L181.498,28.433H181.013L180.527,28.979L180.709,31.104L180.223,32.197L180.284,32.682V33.168L180.345,33.715L179.859,34.261L179.374,35.414L179.434,35.9L178.888,35.961L177.917,36.507L177.31,35.536L176.824,35.597H176.763L176.277,36.143L174.699,36.264L174.153,35.779H173.971H173.606L173.364,35.839H173.06L172.453,34.807V34.261L171.36,33.836L170.814,33.35H170.571L170.328,33.411H170.267L169.843,34.443L169.903,35.475L170.996,35.961L172.028,36.446L172.149,37.478L172.635,37.418L173.242,37.903L173.728,37.843L174.821,38.328L175.913,38.753H176.46L176.52,39.785L177.067,40.271L177.127,40.817L177.188,41.303V41.849L177.249,42.396L176.763,42.942L177.795,42.881L177.856,43.367V43.913L177.917,44.399L178.463,44.945L178.524,45.431L179.07,45.917L178.584,46.463L178.645,47.556L178.766,48.588V49.134L179.374,50.105L179.92,50.591L179.981,51.684L180.527,51.623L181.073,52.109L182.166,52.048L182.227,52.595L182.712,53.019L182.773,53.566V54.051L182.895,55.144V55.69L183.502,56.116V56.662L182.955,56.723H182.47L181.984,56.783V57.33L181.073,58.969V59.454L180.648,60.547L180.163,61.154L179.191,62.247V62.733L179.252,63.279L178.22,63.886L177.734,64.432L177.249,64.979V65.525L177.37,66.618L176.338,67.164L175.792,66.678L175.245,66.739L175.306,67.771L174.335,68.925L174.396,69.957L174.456,70.442L175.003,70.928L175.124,71.96L174.578,72.567L174.638,73.114L175.731,73.538L175.792,74.024L175.853,75.117L175.974,76.634L176.035,77.727L175.003,78.334L175.063,79.366L175.124,79.913L176.277,81.37L177.856,81.248L178.402,81.795L179.495,81.734L180.041,81.673L180.648,82.705L180.709,83.676L181.255,84.223L181.802,84.709L183.38,84.587L183.927,84.526L184.352,83.434L184.837,82.887L185.444,83.919L185.93,83.312L186.416,82.766L187.448,82.22L188.965,81.552H189.512L190.058,81.491L189.997,80.945L189.937,80.398L190.483,79.852L191.09,80.884L191.515,80.277L192.547,79.731L193.033,78.638L193.579,79.123L194.672,79.063L195.157,79.002L195.643,78.456L196.129,77.181L196.554,76.27L197.039,75.724Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M212.823,171.52L212.277,171.581L211.791,171.459H211.306L210.213,171.763L209.606,171.399L208.695,171.459L208.088,171.52L207.481,170.974L205.478,171.702L204.931,171.945L204.264,173.281L203.05,174.495L201.896,174.98L201.593,175.587L200.439,175.83L199.468,175.345L198.921,175.405L197.768,175.466L197.222,175.527L196.311,175.587L195.158,175.648L194.368,175.284L193.64,175.345L192.486,175.466L191.576,175.527L190.908,175.223L190.787,174.737L190.665,174.616V174.313L190.483,173.705L190.301,173.584V173.341L190.18,173.22L189.39,174.13L188.844,174.677L188.662,174.737L188.601,174.798H188.358L188.965,175.77L189.026,176.802L189.573,177.287L189.633,177.834L190.18,177.773L190.665,177.712L191.272,178.258L190.787,178.744V179.291L189.755,179.898L189.815,180.444L189.876,181.476H189.573V181.537L189.33,181.597L189.451,182.569V183.054L189.512,184.086L190.665,184.633L191.212,185.058L191.758,185.543L192.304,186.029L192.851,186.515L192.911,187.061L192.972,187.547L192.486,188.154L193.397,188.518H193.519L194.611,188.457L195.643,188.397L196.675,188.336L197.222,188.822L197.889,188.154L197.707,187.607L198.072,187.425L199.164,186.94L199.589,187.182H199.893L200.136,186.879H200.318L200.803,187.486L201.35,187.425L201.41,187.972L201.653,187.85L202.2,187.486L202.442,187.365H202.928L203.414,187.304L204.385,187.243L204.81,186.818H204.871L204.992,186.636L206.024,186.575L206.995,186.515L207.117,186.393L207.056,186.029L206.631,185.483L206.571,184.936L207.481,184.511L207.785,184.572L207.724,184.511L207.967,184.451V184.39L208.452,183.844L208.392,183.358L208.938,183.297H209.302L209.788,182.751H209.849L209.909,182.69L210.456,182.629L211.002,182.569H211.549V183.115H212.095L213.127,182.994L214.523,182.933V182.447L214.402,181.355L213.916,181.415L213.309,180.93V180.383L212.216,180.505L211.791,181.051L211.67,180.019V179.473L212.095,178.926L212.641,178.866V178.319L213.127,177.773L212.52,177.287L212.459,176.255H213.005L212.945,175.162L212.884,174.13L213.916,174.07L214.948,174.009L215.434,173.402L215.009,172.552L212.823,171.52Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M193.519,188.519H193.397L193.458,188.579L193.519,188.519Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M216.162,161.746L215.191,161.625H215.13H215.009L214.584,162.232L214.28,162.414L213.916,162.232L213.248,161.928L212.216,162.293L211.609,161.503L211.549,160.471L211.427,159.379V158.893L210.82,158.407V157.861L210.759,157.375H211.306L211.245,156.283L211.184,155.736L210.577,154.765V154.218L209.484,153.794L208.938,153.308L208.331,152.761L208.27,151.729L207.178,151.305L205.903,151.122L206.024,149.301L204.324,148.33L203.778,147.844L203.353,147.784H203.292L202.625,147.601L202.321,147.48H202.139L201.653,147.298L200.196,147.905L200.014,148.512L199.832,148.937L198.861,149.058L198.011,149.119L197.647,149.058L196.554,150.09L196.007,150.515L194.49,149.908L193.883,149.969L192.972,150.151L192.486,150.94L191.515,150.819L190.908,150.515L190.119,150.212L189.148,150.03L187.691,150.151L186.901,150.394L186.719,150.455L187.691,151.669L187.751,152.215L187.266,152.761L186.719,153.308L186.294,153.854L185.748,153.915L185.262,154.461L184.716,155.008L184.837,156.04L184.352,156.647L184.473,158.164L183.987,158.771L183.502,159.379H183.016V159.864L182.531,160.471L182.045,160.957L181.559,161.564L181.074,162.11L180.588,163.142L180.649,163.203L180.224,164.235H180.709L181.256,164.174L181.316,164.721L181.377,165.753L181.438,166.299L181.984,166.724L182.045,167.817L182.47,167.756H183.016H183.138L183.745,168.242L184.23,168.727V169.213L183.805,169.82L183.866,170.306L183.927,170.791H184.352L185.141,170.731H185.323H185.505L185.93,170.67L186.537,171.216L187.569,171.581L187.994,171.095L189.026,170.427V170.488L189.087,170.427L189.694,170.974L189.208,171.52V172.066L189.815,172.006L190.362,172.977L190.18,173.22L190.301,173.341V173.584L190.483,173.705L190.665,174.313L190.726,174.434L190.787,174.737L190.908,175.223L191.576,175.527L192.486,175.466L193.64,175.345L194.368,175.284L195.158,175.648L196.311,175.587L197.222,175.527L197.768,175.466L198.921,175.405L199.468,175.345L200.439,175.83L201.593,175.587L201.896,174.98L203.05,174.495L204.264,173.28L204.931,171.945L205.478,171.702L207.481,170.974L208.088,171.52L208.695,171.459L209.606,171.399L210.213,171.763L211.306,171.459H211.791L212.277,171.581L212.823,171.52L215.009,172.552V172.309V171.824L215.434,170.731L214.887,170.245L214.827,169.213L214.766,168.606L215.252,168.12L215.737,167.513L215.191,167.574L214.705,167.635L214.645,167.088L215.07,165.996V165.51L215.555,164.903L216.162,165.389L216.223,166.481L216.709,166.421L217.194,165.874V165.328L217.68,165.267L218.166,164.174L217.983,162.11L217.68,162.96L216.891,162.05L216.769,161.989L216.526,161.868L216.162,161.746Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M212.095,183.115H211.548V182.568H211.002L210.456,182.629L209.909,182.69L209.849,182.75L209.424,183.297H209.302H208.938L208.392,183.358L208.452,183.843L207.967,184.39V184.45V184.693L208.27,184.815L208.634,185.361L209.12,185.3L209.181,185.847V186.332V186.393V186.454L208.756,186.939L209.059,187.425L208.695,187.486V187.546H208.574L208.27,187.607L208.513,188.032L208.331,189.064L208.27,189.125L208.088,189.368L207.845,189.61L207.906,190.157L207.42,190.703H207.36V190.764L207.906,191.249L208.938,191.189L209.484,191.128L209.97,190.582V191.128L210.031,191.614L209.545,191.674L208.574,192.828L209.12,193.253L209.606,192.706L211.123,192.039L211.609,191.492L212.641,190.885V190.4L213.066,189.853L214.098,189.185L214.584,188.7L215.069,188.093L216.101,187.546L216.587,187.486L217.68,187.425L218.712,187.364L219.258,187.304L219.744,186.757L219.683,185.664L219.137,185.725L218.044,185.239L217.558,185.3L216.405,184.329L215.373,184.39L215.312,183.904V183.358L214.705,182.933H214.523L213.127,182.993L212.095,183.115Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M207.906,190.157L207.845,189.611L208.088,189.368L208.27,189.125L208.331,189.065L208.513,188.033L208.27,187.608L208.574,187.547L208.695,187.486L209.059,187.426L208.756,186.94L209.181,186.394V186.333V185.847L209.12,185.301L208.634,185.362L208.27,184.815L207.967,184.694L207.784,184.572L207.481,184.512L206.57,184.937L206.631,185.483L207.056,186.029L207.117,186.394V186.515H206.995L206.024,186.576L204.992,186.636L204.87,186.819L204.506,187.244H204.385L203.413,187.304L202.928,187.365H202.442L202.199,187.486L201.653,187.851L201.41,187.972L201.349,187.426L200.803,187.486L200.317,186.879H200.135L199.892,187.183L199.771,187.304L199.589,187.183L199.164,186.94L198.071,187.426L197.707,187.608L197.889,188.154L197.221,188.822L196.675,188.336L195.643,188.397L194.611,188.458L193.518,188.518L193.457,188.579H193.579L192.547,189.186L192.061,189.733L191.576,190.34H191.09L190.483,190.4L190.422,190.34L189.936,189.854L189.451,190.461L188.965,191.007L187.933,191.068L186.901,191.736H186.415L185.383,191.797L185.323,191.736L184.776,191.311L184.837,191.857L184.351,191.918L183.805,192.404L184.412,192.829L184.959,193.314L185.019,193.861V194.407L184.534,194.953L184.109,196.046L183.562,196.592H183.077L183.623,197.139L182.652,197.746H182.591H182.53H182.105L181.62,198.292L181.68,198.899V199.385H181.559H181.073L181.62,200.417L182.227,200.903L183.259,200.842V201.328L183.38,202.42L183.987,202.906L184.412,202.36L185.019,202.299L185.505,202.238H186.051L186.112,202.785V203.27L185.08,203.331L184.473,203.392L184.048,203.938L184.594,204.424V204.97L184.655,205.516L185.201,205.456L186.294,205.881L186.78,205.334H187.326L187.812,205.274V205.759L188.844,205.213L189.39,205.152L189.936,205.091L190.969,205.031L191.515,205.516L192.122,205.941L192.061,205.456L193.093,205.395L193.64,205.881L194.186,206.366L195.279,206.791L194.854,207.398L194.307,207.459L193.761,208.005L193.275,207.52L193.215,206.973L192.668,206.488L191.636,207.095L191.576,206.548L191.09,206.609L190.544,206.67H190.058L189.512,206.731L189.026,207.277H188.48L187.933,207.338H187.447L186.901,207.398L186.476,208.005V208.491L187.083,209.523L187.569,209.462L188.115,209.948L188.722,210.494V210.98L188.783,212.012L188.297,212.619L188.904,213.044V213.59L188.965,214.137L189.572,215.169L190.119,215.108L190.665,215.047L191.09,214.501L190.604,214.015L190.544,213.469L190.969,212.923L191.576,213.408L191.636,213.955V214.44L191.697,214.987L192.243,215.472L192.79,215.412L193.336,216.444L193.882,216.383L193.822,215.351L193.761,214.865V214.319L194.186,213.773L194.247,214.805L194.793,214.744L194.854,215.776H195.461L197.586,215.594L197.525,215.108L196.432,214.683L196.371,214.137L195.764,213.651L195.704,212.558L195.218,212.619L194.55,211.648L194.004,211.162L193.943,210.13L194.49,210.069L195.097,210.494V211.041L195.643,211.526H196.189L197.221,210.919L198.193,210.312L198.132,209.219L197.161,209.887H196.614L196.068,209.402L196.007,208.916L196.493,208.309L197.464,207.216L198.011,207.155L198.618,208.187L199.71,208.612L199.65,208.127V207.58L199.528,206.488L199.467,205.456H198.921L197.828,205.031L197.221,204.059L196.736,204.12L195.643,203.634L194.55,203.209L193.457,203.27L192.911,202.785L193.397,202.238L193.882,201.692L193.822,201.145L193.336,201.206L192.729,200.174L193.215,199.567H193.7L194.793,199.446L195.4,199.992L195.461,200.478V201.024L195.946,200.963L196.432,199.871L195.886,199.931L194.247,198.474L193.579,197.442L192.486,197.017L191.94,196.532L191.879,195.5L191.818,194.953V194.468L191.272,193.982L191.697,193.375L192.729,192.768H193.215L193.336,193.8L193.943,194.286L194.49,195.318L195.157,196.35L196.25,196.775L197.282,197.199V196.714L196.189,196.228L195.582,195.743V195.257L195.522,194.711L196.129,195.196L196.675,195.621L197.221,196.167L198.86,196.592L198.8,196.046L198.253,196.107L197.707,195.075L197.1,194.589L197.646,194.528H198.132L198.193,195.5L199.285,195.439L200.317,194.893L200.803,194.346H200.257L199.164,193.921L198.071,193.496L197.525,193.011L196.979,192.464L196.918,191.979L197.464,191.918L199.043,191.797H199.528V191.25L199.467,190.765L199.953,190.157L200.56,190.704L201.046,191.189L202.139,191.068L202.685,190.522L202.078,190.036L202.624,189.975L203.596,189.915L204.688,190.4L206.327,190.279L206.874,190.765L207.359,190.704H207.42L207.906,190.157Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M181.681,198.899L181.62,198.292L182.106,197.746H182.531H182.591H182.652L183.623,197.139L183.077,196.592H183.563L184.109,196.046L184.534,194.953L185.02,194.407V193.861L184.959,193.314L184.413,192.829L183.805,192.404L183.198,191.979L183.138,190.886L182.591,190.947L182.531,189.915V189.368L181.984,188.883L181.924,187.851L181.863,187.304L181.924,187.244L182.349,186.758L182.288,186.211L181.741,185.24L181.681,184.694L180.588,184.755L180.102,184.269L179.495,183.783L178.463,184.39L177.978,184.451L177.492,184.937L177.553,185.483V185.969L177.613,186.515L177.674,187.547L178.22,188.033L178.281,188.518L178.342,189.065L177.795,189.125L177.856,189.672V190.157L177.917,190.643V191.189L177.978,191.736L178.038,192.768L177.553,193.314L177.613,193.861V194.407L178.22,194.893L177.735,195.439V195.925H178.281L178.342,196.471L177.795,196.532L177.856,197.564L178.888,197.442L179.435,197.989L180.527,197.867V198.353L181.134,199.385H181.559H181.681V198.899Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M178.463,184.389L179.495,183.782L180.102,184.268L180.588,184.753L181.68,184.693L181.741,185.239L182.288,186.21L182.348,186.757L181.923,187.242L181.863,187.303L181.923,187.849L181.984,188.881L182.53,189.367V189.913L182.591,190.946L183.137,190.885L183.198,191.978L183.805,192.402L184.352,191.917L184.837,191.856L184.777,191.31L185.323,191.735L185.384,191.795L186.416,191.735H186.901L187.933,191.067L188.965,191.006L189.451,190.46L189.937,189.853L190.422,190.338L190.483,190.399L191.09,190.338H191.576L192.061,189.731L192.547,189.185L193.579,188.578H193.458L193.397,188.517L192.486,188.153L192.972,187.546L192.911,187.06L192.851,186.514L192.304,186.028L191.758,185.543L191.211,185.057L190.665,184.632L189.512,184.086L189.451,183.054V182.568L189.33,181.597V181.475H189.572H189.876L189.815,180.443L189.754,179.897L190.787,179.29V178.743L191.272,178.258L190.665,177.711L190.179,177.772L189.633,177.833L189.572,177.286L189.026,176.801L188.965,175.769L188.358,174.797V174.737H188.662L188.844,174.676L189.39,174.13L190.179,173.219L190.362,172.976L189.815,172.005L189.208,172.066V171.519L189.694,170.973L189.087,170.427L189.026,170.487L188.055,171.094L187.63,171.641L187.569,171.58L186.537,171.216L185.93,170.669L185.505,170.73H185.444H185.141L184.352,170.791H183.927L183.866,170.305L183.805,169.819L184.23,169.212V168.727L183.744,168.241L183.137,167.755H183.016H182.652L182.045,167.816L181.984,166.723L181.438,166.298L181.377,165.752L181.316,164.72L181.255,164.174L180.709,164.234H180.223L180.648,163.202L180.588,163.142L179.92,163.081L179.131,162.838L178.524,162.899H177.977H177.917L177.977,163.384L177.188,163.567L177.067,163.749L176.399,163.142L175.245,163.567L174.517,164.174L174.092,164.356L173.181,164.417L172.756,164.781L172.21,165.449L171.664,166.056L171.36,166.238L170.268,165.995L169.782,166.056H169.235L168.75,166.116L168.203,165.631L167.657,165.691L167.596,165.145H167.05L166.504,164.659L165.957,164.234L165.411,163.749L164.804,163.263V162.717L164.743,162.17L164.197,161.685L163.59,161.199L163.408,160.774L162.193,160.531L162.133,160.592L161.465,161.199L160.858,161.078L160.372,161.26L159.947,161.442L159.522,161.503H159.462H159.401L158.551,161.563L157.762,161.624H157.337H157.215L156.851,162.413L156.912,162.595L156.244,162.474L155.516,162.838L155.394,163.324L154.787,162.899H154.241L153.877,162.96H153.694L153.027,162.231L152.602,162.292L151.691,162.656H151.57L151.448,163.263L151.63,163.688L151.813,164.174L151.873,164.599L151.691,164.781L150.963,165.266L151.752,165.813L151.813,166.541L151.934,166.602L152.42,166.723L152.845,166.177L152.905,166.723L152.966,167.209V167.755L152.541,168.362H151.995L151.509,168.909L152.055,169.394L152.116,169.941L152.177,170.973L152.723,171.459L152.784,172.005L153.33,172.491L153.755,171.398L154.241,170.851L154.726,169.759L154.666,169.212L155.212,169.152L155.759,169.698L156.366,170.184L156.912,170.669L157.458,171.641L157.033,172.733L157.094,173.28L157.155,174.312L158.187,174.251L158.247,174.797L158.794,174.737L159.28,175.162L159.887,175.708L158.308,175.829L158.855,176.315L159.401,176.801L160.069,177.833L160.554,177.772L161.708,178.743V179.229L162.801,179.715L163.833,179.108L164.379,179.047L165.472,180.079L166.625,180.99L167.232,182.022L168.264,181.961L168.871,182.932L169.964,183.418H170.51L171.117,184.328H171.603L172.149,184.875L173.242,184.753H173.728L174.335,185.178L174.396,185.785L174.881,186.21L175.428,186.15L175.549,187.182L176.581,187.121V187.667L177.127,187.607H177.674L177.552,186.575V186.028L177.492,185.543V184.996V184.935L177.977,184.45L178.463,184.389Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M99.24,182.023L99.847,182.205L100.333,182.266H100.697L100.879,182.084L101.122,181.78V180.991L100.576,180.323L100.151,180.384L99.544,180.566L99.179,180.748L98.937,181.112V181.173L99.24,182.023Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M134.936,158.891L135.3,159.316L135.725,159.256L136.211,159.134L136.332,158.77L136.271,157.981L135.543,157.495L135.421,157.617L134.875,157.981L134.936,158.527V158.891Z"
+        android:fillColor="#D8D8D8"/>
+    <path
+        android:pathData="M95.968,83.755V35.02H23.036V83.755H95.968Z"
+        android:fillColor="#004996"/>
+    <path
+        android:pathData="M95.968,83.755V35.02H23.036V83.755H95.968Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#00000000"
+        android:strokeColor="#000000"/>
+    <path
+        android:pathData="M59.5,41.787L59.196,42.701H58.217L59.027,43.276L58.723,44.19L59.5,43.615L60.31,44.19L60.006,43.276L60.783,42.701H59.804L59.5,41.787Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M51.396,43.986L51.092,44.9H50.113L50.924,45.475L50.62,46.389L51.396,45.814L52.173,46.389L51.869,45.475L52.679,44.9H51.7L51.396,43.986Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M45.487,49.943L45.183,50.857H44.204L45.015,51.432L44.711,52.38L45.487,51.805L46.264,52.38L45.96,51.432L46.771,50.857H45.791L45.487,49.943Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M43.259,58.065L42.955,58.979H41.976L42.752,59.555L42.449,60.468L43.259,59.893L44.035,60.468L43.732,59.555L44.542,58.979H43.563L43.259,58.065Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M45.454,66.188L45.15,67.136H44.171L44.947,67.712L44.643,68.625L45.454,68.05L46.23,68.625L45.926,67.678L46.737,67.136H45.758L45.454,66.188Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M51.396,72.145L51.092,73.092H50.113L50.89,73.668L50.586,74.581L51.396,74.006L52.173,74.581L51.869,73.668L52.646,73.092H51.7L51.396,72.145Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M59.5,74.311L59.196,75.258H58.217L59.027,75.834L58.723,76.747L59.5,76.172L60.31,76.747L60.006,75.8L60.783,75.258H59.804L59.5,74.311Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M67.638,43.986L67.908,44.9H68.887L68.11,45.475L68.414,46.389L67.638,45.814L66.827,46.389L67.131,45.475L66.354,44.9H67.334L67.638,43.986Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M73.547,49.943L73.817,50.857H74.796L74.019,51.432L74.323,52.38L73.547,51.805L72.736,52.38L73.04,51.432L72.263,50.857H73.243L73.547,49.943Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M75.775,58.065L76.079,58.979H77.058L76.247,59.555L76.551,60.468L75.775,59.893L74.964,60.468L75.268,59.555L74.492,58.979H75.471L75.775,58.065Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M73.58,66.188L73.884,67.136H74.863L74.053,67.712L74.357,68.625L73.58,68.05L72.77,68.625L73.074,67.678L72.297,67.136H73.276L73.58,66.188Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M67.638,72.145L67.941,73.092H68.921L68.11,73.668L68.414,74.581L67.638,74.006L66.861,74.581L67.131,73.668L66.354,73.092H67.334L67.638,72.145Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M222.567,109.981C222.172,116.249 216.767,120.941 210.593,120.569C204.419,120.198 199.645,114.893 200.041,108.626C200.436,102.358 205.841,97.667 212.016,98.038C218.19,98.41 222.963,103.715 222.567,109.981Z"
         android:strokeWidth="5.643"
         android:fillColor="#00000000"
-        android:strokeColor="#C2D6E1"
-        android:fillType="evenOdd"/>
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"/>
     <path
-        android:pathData="M263.252,112.042C261.097,146.822 231.577,173.236 197.407,171.142C163.235,169.047 137.2,139.226 139.356,104.446C141.511,69.667 171.031,43.253 205.201,45.347C239.372,47.442 265.408,77.263 263.252,112.042Z"
-        android:strokeAlpha="0.35999998"
+        android:pathData="M273.252,114.043C271.097,148.823 241.577,175.237 207.407,173.142C173.235,171.047 147.2,141.226 149.356,106.446C151.51,71.667 181.031,45.253 215.201,47.348C249.372,49.443 275.408,79.263 273.252,114.043Z"
+        android:strokeAlpha="0.36"
         android:strokeWidth="5.643"
         android:fillColor="#00000000"
-        android:strokeColor="#C2D6E1"
         android:fillType="evenOdd"
-        android:fillAlpha="0.35999998"/>
+        android:strokeColor="#C2D6E1"
+        android:fillAlpha="0.36"/>
     <path
-        android:pathData="M280.147,112.065C277.405,155.67 239.833,188.786 196.344,186.16C152.853,183.534 119.717,146.146 122.461,102.542C125.203,58.938 162.775,25.822 206.264,28.448C249.754,31.074 282.891,68.462 280.147,112.065Z"
+        android:pathData="M290.147,114.065C287.405,157.67 249.833,190.786 206.344,188.16C162.853,185.533 129.717,148.146 132.461,104.541C135.203,60.938 172.775,27.821 216.264,30.448C259.754,33.074 292.891,70.461 290.147,114.065Z"
         android:strokeAlpha="0.14"
         android:strokeWidth="5.643"
         android:fillColor="#00000000"
-        android:strokeColor="#C2D6E1"
         android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
         android:fillAlpha="0.14"/>
     <path
-        android:pathData="M296.416,113.048C293.108,165.651 247.783,205.6 195.32,202.432C142.855,199.263 102.882,154.162 106.192,101.559C109.5,48.957 154.825,9.008 207.288,12.176C259.751,15.345 299.726,60.446 296.416,113.048Z"
+        android:pathData="M306.416,115.048C303.108,167.651 257.783,207.6 205.32,204.432C152.855,201.263 112.882,156.162 116.192,103.559C119.5,50.957 164.825,11.008 217.288,14.176C269.751,17.345 309.726,62.446 306.416,115.048Z"
         android:strokeAlpha="0.04"
         android:strokeWidth="5.643"
         android:fillColor="#00000000"
-        android:strokeColor="#C2D6E1"
         android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
         android:fillAlpha="0.04"/>
     <path
-        android:pathData="M246.357,111.022C244.788,136.471 223.307,155.775 198.468,154.244C173.63,152.713 154.682,130.917 156.251,105.468C157.82,80.018 179.302,60.714 204.14,62.245C228.978,63.777 247.926,85.573 246.357,111.022Z"
+        android:pathData="M256.357,113.022C254.788,138.471 233.307,157.775 208.468,156.244C183.63,154.713 164.682,132.917 166.251,107.468C167.82,82.019 189.302,62.715 214.14,64.245C238.978,65.777 257.926,87.573 256.357,113.022Z"
         android:strokeAlpha="0.5"
         android:strokeWidth="5.643"
         android:fillColor="#00000000"
-        android:strokeColor="#C2D6E1"
         android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"
         android:fillAlpha="0.5"/>
     <path
-        android:pathData="M229.274,108.903C228.294,124.45 214.896,136.211 199.443,135.278C183.988,134.346 172.166,121.063 173.146,105.516C174.125,89.969 187.523,78.208 202.977,79.141C218.431,80.073 230.252,93.356 229.274,108.903Z"
+        android:pathData="M239.274,110.903C238.294,126.45 224.896,138.211 209.443,137.278C193.988,136.346 182.167,123.063 183.146,107.516C184.125,91.969 197.523,80.208 212.977,81.141C228.431,82.073 240.252,95.356 239.274,110.903Z"
         android:strokeWidth="5.643"
         android:fillColor="#00000000"
-        android:strokeColor="#C2D6E1"
-        android:fillType="evenOdd"/>
-  </group>
-  <group>
-    <clip-path
-        android:pathData="M0,0h360v220h-360z"/>
+        android:fillType="evenOdd"
+        android:strokeColor="#C2D6E1"/>
     <path
-        android:pathData="M187.66,203.46C186.84,194.26 186.26,185.05 185.15,175.86C182.83,156.73 179.65,137.72 176.86,118.65C167.15,117.4 160.39,116.57 160.39,116.57C160.39,116.57 142.52,113.72 142.27,121.91C142.02,130.1 162.17,134.25 162.17,134.25L163.8,134.25L165.24,146.16C165.24,146.16 149.51,165.16 150.64,171.5C151.77,177.84 161.64,175.08 161.64,175.08C161.64,175.08 155.84,192.37 160.29,196.93C163.55,200.28 166.84,198.81 166.84,198.81C166.84,198.81 158.59,206.29 162.31,212.95C163.94,215.88 173.55,216.73 173.55,216.73L189.08,216.24C188.055,212.06 187.585,207.763 187.68,203.46"
-        android:strokeWidth="1"
+        android:pathData="M197.66,205.46C196.84,196.26 196.26,187.05 195.15,177.86C192.83,158.73 189.65,139.72 186.86,120.65C177.15,119.4 170.39,118.57 170.39,118.57C170.39,118.57 152.52,115.72 152.27,123.91C152.02,132.1 172.17,136.25 172.17,136.25H173.8L175.24,148.16C175.24,148.16 159.51,167.16 160.64,173.5C161.77,179.84 171.64,177.08 171.64,177.08C171.64,177.08 165.84,194.37 170.29,198.93C173.55,202.28 176.84,200.81 176.84,200.81C176.84,200.81 168.59,208.29 172.31,214.95C173.94,217.88 183.55,218.73 183.55,218.73L199.08,218.24C198.055,214.06 197.585,209.763 197.68,205.46"
         android:fillColor="#F7B994"
-        android:fillType="evenOdd"
-        android:strokeColor="#00000000"/>
+        android:fillType="evenOdd"/>
     <path
-        android:pathData="M193,251.3C187.134,252.12 181.711,248.035 180.88,242.17L160.68,98.44C159.86,92.574 163.945,87.151 169.81,86.32L227.42,78.23C233.288,77.405 238.714,81.492 239.54,87.36L259.74,231.08C260.559,236.95 256.469,242.374 250.6,243.2L193,251.3Z"
-        android:strokeWidth="1"
+        android:pathData="M203,253.3C197.133,254.12 191.711,250.035 190.88,244.17L170.68,100.44C169.86,94.574 173.945,89.151 179.81,88.32L237.42,80.23C243.288,79.405 248.714,83.492 249.54,89.36L269.74,233.08C270.559,238.95 266.469,244.374 260.6,245.2L203,253.3Z"
         android:fillColor="#F8F8F8"
-        android:fillType="evenOdd"
-        android:strokeColor="#00000000"/>
+        android:fillType="evenOdd"/>
     <path
-        android:pathData="M251,243.15L193.39,251.25C187.522,252.069 182.101,247.978 181.28,242.11L161.08,98.39C160.681,95.572 161.419,92.71 163.132,90.437C164.844,88.163 167.391,86.664 170.21,86.27L227.81,78.17C233.676,77.35 239.099,81.435 239.93,87.3L260.12,231C260.525,233.821 259.791,236.688 258.08,238.967C256.37,241.246 253.822,242.751 251,243.15Z"
+        android:pathData="M261,245.15L203.39,253.25C197.522,254.069 192.101,249.978 191.28,244.11L171.08,100.39C170.681,97.572 171.419,94.71 173.132,92.437C174.844,90.163 177.391,88.664 180.21,88.27L237.81,80.17C243.676,79.35 249.099,83.435 249.93,89.3L270.12,233C270.525,235.821 269.791,238.688 268.08,240.967C266.369,243.246 263.822,244.751 261,245.15Z"
         android:strokeWidth="4.03"
         android:fillColor="#00000000"
-        android:strokeColor="#4A4A4A"
-        android:fillType="evenOdd"/>
+        android:fillType="evenOdd"
+        android:strokeColor="#4A4A4A"/>
     <path
-        android:pathData="M304.33,189.85C304.33,189.85 296.68,187.85 288.87,176.19C281.06,164.53 273.87,136.56 268.72,133.57C268.72,133.57 266.83,109.14 254.29,107.3C254.29,107.3 250.29,89.61 248.99,89.57C247.69,89.53 240.85,89.36 238.79,97.99C236.73,106.62 239.39,122.47 247.58,127.07C247.58,127.07 261.93,228.29 261.95,228.59C262.35,236.74 261.54,236.32 260.44,239.1C270.2,241.56 322.22,257.25 365,270.25L365,203.48L304.33,189.85Z"
-        android:strokeWidth="1"
+        android:pathData="M314.33,191.85C314.33,191.85 306.68,189.85 298.87,178.19C291.06,166.53 283.87,138.56 278.72,135.57C278.72,135.57 276.83,111.14 264.29,109.3C264.29,109.3 260.29,91.61 258.99,91.57C257.69,91.53 250.85,91.36 248.79,99.99C246.73,108.62 249.39,124.47 257.58,129.07C257.58,129.07 271.93,230.29 271.95,230.59C272.35,238.74 271.54,238.32 270.44,241.1C280.2,243.56 332.22,259.25 375,272.25V205.48L314.33,191.85Z"
         android:fillColor="#F7B994"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M198.06,148.466L200.642,150.412C196.908,155.366 195.064,161.745 195.996,168.374C196.903,174.83 200.308,180.513 205.411,184.359L205.412,184.359L203.467,186.94C197.852,182.708 193.851,176.335 192.795,168.823C191.74,161.31 193.829,154.081 198.06,148.466ZM236.533,143.059C242.148,147.29 246.149,153.664 247.205,161.176C248.261,168.688 246.171,175.917 241.94,181.532L239.36,179.588C243.093,174.634 244.936,168.255 244.004,161.627C243.073,154.998 239.542,149.374 234.588,145.641L236.533,143.059Z"
+        android:strokeAlpha="0.24"
+        android:fillColor="#95B9CB"
         android:fillType="evenOdd"
-        android:strokeColor="#00000000"/>
-  </group>
-  <group>
-    <clip-path
-        android:pathData="M0,0h360v220h-360z"/>
+        android:fillAlpha="0.24"/>
     <path
-        android:pathData="M209.945,163.41m-12.581,1.768a12.705,12.705 127,1 1,25.163 -3.536a12.705,12.705 127,1 1,-25.163 3.536"
-        android:strokeWidth="3.388"
-        android:fillColor="#00000000"
-        android:strokeColor="#007FAD"
+        android:pathData="M203.222,152.357L205.804,154.302C203.066,157.935 201.714,162.613 202.397,167.474C203.062,172.208 205.559,176.376 209.302,179.196L209.302,179.196L207.357,181.777C203.063,178.542 200.004,173.668 199.196,167.924C198.389,162.179 199.987,156.65 203.222,152.357ZM232.643,148.222C236.937,151.458 239.996,156.331 240.804,162.076C241.611,167.821 240.013,173.349 236.778,177.642L234.197,175.697C236.935,172.064 238.286,167.387 237.603,162.526C236.92,157.665 234.331,153.541 230.698,150.803L232.643,148.222Z"
+        android:strokeAlpha="0.6"
+        android:fillColor="#95B9CB"
+        android:fillType="evenOdd"
+        android:fillAlpha="0.6"/>
+    <path
+        android:pathData="M205.597,167.024C204.479,159.069 210.021,151.715 217.976,150.597C225.93,149.479 233.284,155.021 234.402,162.975C235.52,170.93 229.978,178.284 222.024,179.402C218.153,179.946 214.306,178.92 211.247,176.614C208.187,174.309 206.141,170.894 205.597,167.024ZM231.202,163.425C230.332,157.238 224.612,152.927 218.426,153.797C212.239,154.666 207.928,160.386 208.798,166.573C209.221,169.586 210.81,172.238 213.192,174.033C215.574,175.828 218.561,176.624 221.574,176.201C227.761,175.331 232.071,169.611 231.202,163.425Z"
+        android:fillColor="#007FAD"
         android:fillType="evenOdd"/>
-    <group>
-      <clip-path
-          android:pathData="M178.376,139.621l31.569,23.789l23.789,-31.569l7.78,55.358l-31.569,-23.789l-23.789,31.569z"/>
-      <path
-          android:pathData="M209.945,163.41m-19.291,2.711a19.481,19.481 127,1 1,38.583 -5.422a19.481,19.481 127,1 1,-38.583 5.422"
-          android:strokeWidth="3.388"
-          android:fillColor="#00000000"
-          android:strokeColor="#C2D6E1"
-          android:fillType="evenOdd"/>
-      <path
-          android:pathData="M209.945,163.41m-26.001,3.654a26.257,26.257 127,1 1,52.003 -7.309a26.257,26.257 127,1 1,-52.003 7.309"
-          android:strokeWidth="3.388"
-          android:fillColor="#00000000"
-          android:strokeColor="#E9F0F4"
-          android:fillType="evenOdd"/>
-    </group>
   </group>
 </vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/ic_illustration_ppa.xml b/Corona-Warn-App/src/main/res/drawable/ic_illustration_ppa.xml
new file mode 100644
index 0000000000000000000000000000000000000000..64700c254220df20d2b6f53d5817257c3ba2a6ee
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/drawable/ic_illustration_ppa.xml
@@ -0,0 +1,157 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="360dp"
+    android:height="185dp"
+    android:viewportWidth="360"
+    android:viewportHeight="185">
+  <path
+      android:pathData="M230.919,133.645C273.583,133.645 292.169,106.736 332.003,111.83C341.472,113.041 346.496,116.824 360,127.435V157.207L0,159.288V125.288C12,120.288 8,122.288 21,125.288C64.498,135.326 115.003,109.323 138.503,108.413C140.698,108.328 142.815,108.288 144.85,108.288C195.624,108.284 198.052,133.645 230.919,133.645Z"
+      android:fillColor="#E8F5FF"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path
+        android:pathData="M0,133H360V166H0V133Z"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M106.597,149.828C70.681,149.828 55.034,132.275 21.5,135.598C13.529,136.388 3.407,138.856 -7.961,145.777V165.197L367.097,166.288V152.224C365.015,151.253 362.939,150.423 360.974,149.816C360.974,149.816 323.18,137.903 281.325,148.096C245.476,156.835 204.18,133.963 184.396,133.37C182.549,133.314 180.766,133.288 179.053,133.288C136.31,133.286 134.266,149.828 106.597,149.828Z"
+        android:fillColor="#D8ECF9"
+        android:fillType="evenOdd"/>
+  </group>
+  <path
+      android:pathData="M288.671,126.16C288.671,126.16 274.869,106.905 284.581,104.519C294.294,102.134 293.612,114.062 300.088,109.631C306.563,105.201 295.161,84.554 310.573,82.508C329.624,79.981 315.179,99.89 313.836,104.783C313.55,105.823 313.854,106.953 314.668,107.661C316.328,109.105 321.699,109.474 329.737,104.519C342.177,96.851 333.316,132.465 309.971,133.487C309.971,133.487 295.317,133.828 288.671,126.16Z"
+      android:fillColor="#B8E0FA"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M307.322,133.593C307.311,133.507 307.001,124.844 306.717,115.255C306.333,102.35 308.349,91.905 310.899,88.249L311.408,88.767C305.431,97.337 308.604,133.183 308.646,133.526L307.322,133.593Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M307.551,127.486C307.507,127.472 303.058,126.08 298.401,123.455C294.085,121.021 288.7,116.998 287.557,111.65L287.859,111.36C289.991,121.341 307.37,126.242 307.546,126.296L307.551,127.486Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M307.487,124.101L307.375,122.934C307.545,122.881 324.4,118.143 327.204,110.782L327.573,111.094C326.364,114.268 322.611,117.423 316.419,120.471C311.827,122.732 307.53,124.087 307.487,124.101Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M38.992,43.291C33.473,43.441 30.315,51.868 30.051,55.87C28.926,72.999 19.154,85.217 20.058,111.9C20.652,129.383 26.37,147.347 32.418,150.491C44.063,156.547 51.876,143.06 53.191,130.481C54.506,117.903 55.294,99.607 46.617,76.738C41.8,64.039 50.043,42.989 38.992,43.291Z"
+      android:fillColor="#B8E0FA"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M38.556,152.643C37.528,147.893 35.22,124.088 35.159,98.318C35.121,82.671 35.911,66.293 38.319,53.001L38.967,53.127C36.569,66.376 35.78,82.71 35.818,98.318C35.877,124.035 38.176,147.764 39.2,152.493L38.556,152.643Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M35.845,122.732C35.869,122.69 43.451,109.301 44.619,103.905L45.263,104.056C44.072,109.557 36.438,123.04 36.414,123.083L35.845,122.732Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M35.228,92.462C35.211,92.439 28.679,84.119 29.118,77.912L29.716,77.964C29.298,83.889 35.667,91.998 35.684,92.02L35.228,92.462Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M63.111,153.572C68.352,149.666 72.911,142.819 73.59,126.782C74.268,110.745 72.938,106.812 69.188,105.411C65.439,104.011 62.491,106.006 60.388,111.189C58.285,116.374 57.405,121.803 55.357,123.548C53.309,125.292 41.595,135.013 44.896,146.028C48.198,157.043 57.713,156.152 63.111,153.572Z"
+      android:fillColor="#B8E0FA"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M51.709,154.603C53.75,151.785 58.164,143.848 61.771,134.759C64.191,128.662 66.251,122.042 66.993,116.092L66.483,116.026C65.745,121.934 63.698,128.51 61.293,134.571C57.703,143.617 53.318,151.506 51.292,154.302L51.709,154.603Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M58.758,141.558C58.366,141.853 66.87,138.414 69.272,133.819L68.832,133.585C66.52,138.007 58.896,140.92 58.874,140.929L58.758,141.558Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M54.612,149.963C54.603,149.943 51.467,142.964 51.726,138.299L51.252,138.288C50.986,143.094 54.174,150.188 54.183,150.208L54.612,149.963Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M267.985,7.146C265.714,7.606 262.907,9.68 263.002,10.287C263.035,10.499 270.118,10.299 277.398,10.287C288.375,10.27 293.863,10.287 294.562,10.287H308.403C309.484,10.287 307.501,6.725 306.742,6.099C305.429,5.017 303.437,4.542 301.759,5.052C299.461,5.75 299.504,7.764 297.33,8.193C295.911,8.473 294.387,7.913 293.454,7.146C292.032,5.977 292.623,4.855 291.239,3.482C290.27,2.52 289.006,2.078 287.364,2.435C285.447,2.851 285.703,2.958 282.934,5.052C281.962,5.788 280.912,7.901 279.059,8.193C274.03,8.986 271.932,6.346 267.985,7.146Z"
+      android:fillColor="#D8ECF9"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M7.75,21.288H37.201C36.069,19.735 34.948,19.245 34.133,19.085C32.131,18.69 31.285,20.154 27.998,20.186C27.414,20.192 25.971,20.194 24.316,19.635C23.335,19.304 23.308,19.122 21.862,18.534C20.667,18.048 19.619,17.621 18.181,17.432C17.083,17.288 16.259,17.348 15.113,17.432C13.812,17.528 13.009,17.593 12.045,17.983C11.33,18.273 10.878,18.599 10.205,19.085C9.555,19.554 8.669,20.269 7.75,21.288Z"
+      android:fillColor="#D8ECF9"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M95.787,11.288H58.854C60.273,9 61.68,8.277 62.701,8.041C65.213,7.46 66.272,9.617 70.396,9.664C71.129,9.673 72.938,9.676 75.012,8.853C76.243,8.364 76.277,8.095 78.09,7.229C79.588,6.513 80.904,5.884 82.706,5.605C84.084,5.393 85.117,5.482 86.554,5.605C88.185,5.746 89.191,5.842 90.401,6.417C91.299,6.844 91.865,7.324 92.71,8.041C93.524,8.732 94.635,9.786 95.787,11.288Z"
+      android:fillColor="#D8ECF9"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M238,37.288H196C195.448,37.288 195,36.84 195,36.288C195,35.736 195.448,35.288 196,35.288H238C238.552,35.288 239,35.736 239,36.288C239,36.84 238.552,37.288 238,37.288Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M230,44.288H196C195.448,44.288 195,43.84 195,43.288C195,42.736 195.448,42.288 196,42.288H230C230.552,42.288 231,42.736 231,43.288C231,43.84 230.552,44.288 230,44.288Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M224,30.288H196C195.448,30.288 195,29.84 195,29.288C195,28.736 195.448,28.288 196,28.288H224C224.552,28.288 225,28.736 225,29.288C225,29.84 224.552,30.288 224,30.288Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M247.705,48H191.294C188.922,48 187,45.621 187,42.684V22.316C187,19.379 188.922,17 191.294,17H247.705C250.076,17 252,19.379 252,22.316V42.684C252,45.621 250.076,48 247.705,48Z"
+      android:fillColor="#657887"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M196.689,44.594L188.167,51.835C187.678,52.251 187,51.835 187,51.12V43.879C187,43.394 187.33,43 187.738,43H196.26C196.978,43 197.273,44.097 196.689,44.594Z"
+      android:fillColor="#657887"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M158.927,46.469C158.927,46.469 166.919,53.947 169.944,55.966C172.45,57.64 180.079,61.146 180.079,61.146L177.161,65.083C177.161,65.083 169.899,63.465 167.664,62.424C165.372,61.357 159.307,56.726 159.307,56.726L158.927,46.469Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path
+        android:pathData="M117.894,171.26H136.354V184.924H117.894V171.26Z"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M120.964,171.26L118.078,176.74C117.681,177.495 117.946,178.429 118.682,178.859C122.17,180.892 131.703,186.088 135.819,184.688C136.396,184.491 136.538,183.737 136.089,183.324C133.464,180.908 125.3,173.198 125.932,171.304L120.964,171.26Z"
+        android:fillColor="#4A4A4A"
+        android:fillType="evenOdd"/>
+  </group>
+  <path
+      android:pathData="M120.698,171.77L126.278,172.513L153.875,108.792L139.503,79.926L139.336,119.436C139.336,119.436 126.518,144.915 124.472,154.911C122.453,164.779 120.698,171.77 120.698,171.77Z"
+      android:fillColor="#B96161"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M138.6,70.709L160.256,70.998C160.256,70.998 179.024,165.129 186.532,171.481L182.49,174.369C182.49,174.369 159.39,142.896 161.411,122.683C161.411,122.683 132.825,76.773 138.6,70.709Z"
+      android:fillColor="#C66A61"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M153.883,34.496L152.492,24.656C152.492,24.656 158.542,24.925 158.402,16.485C158.376,14.921 158.267,12.244 156.823,10.215L151.289,8.445L147.787,19.63L144.457,33.204L150.354,36.956L154.418,36.849L153.883,34.496Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M182.49,174.369L183.381,180.499C183.503,181.342 184.267,181.942 185.115,181.856C189.132,181.448 199.898,180.04 202.402,176.486C202.753,175.988 202.424,175.295 201.818,175.225C198.274,174.816 187.136,173.385 186.532,171.482L182.49,174.369Z"
+      android:fillColor="#4A4A4A"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M133.89,83.725L135.397,65.307L143.183,67.53L137.718,86.474C137.718,86.474 136.344,97.468 131.73,94.228C126.004,90.208 133.694,85.983 133.89,83.725Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M152.935,34.451C150.849,36.797 148.529,32.46 143.966,33.633C139.653,34.742 135.807,62.287 135.397,65.305C135.374,65.481 135.362,65.573 135.362,65.573C136.538,68.868 141.947,67.811 142.993,67.573L142.225,71.015L160.257,70.997C167.291,51.521 155.021,32.104 152.935,34.451Z"
+      android:fillColor="#B1DAEF"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M158.412,16.555C158.412,16.555 162.76,13.748 159.872,6.261C159.872,6.261 159.23,3.053 154.738,3.16C154.738,3.16 147.573,-3.257 140.835,2.197C134.097,7.651 138.696,13.106 138.696,13.106C138.696,13.106 129.712,21.234 132.813,32.25C132.813,32.25 136.129,39.416 139.979,36.956C143.829,34.496 143.616,39.844 145.647,32.678C147.68,25.512 151.209,26.582 149.819,14.496C149.819,14.496 154.631,14.817 155.701,9.898C155.701,9.898 158.253,11.1 158.412,16.555Z"
+      android:fillColor="#663014"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M174.341,67.847C175.252,68.352 178.71,69.325 179.852,69.554C180.13,69.609 180.827,69.645 181.118,69.093C182.736,66.026 187.601,58.544 187.904,58.094C188.234,57.604 188.204,57.472 187.776,57.193C187.491,57.008 183.608,55.917 182.479,55.589C182.095,55.477 181.762,56.088 181.641,56.233C179.761,58.478 174.639,66.238 174.311,66.729C173.914,67.322 173.971,67.642 174.341,67.847Z"
+      android:fillColor="#4A4A4A"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M185.209,61.816C186.749,61.493 184.794,64.428 184.052,65.474C183.373,66.43 182.761,67.38 182.299,67.156C181.837,66.932 182.211,65.432 182.786,64.247C183.36,63.062 184.272,62.013 185.209,61.816Z"
+      android:fillColor="#F6B893"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M202,39.773C202.164,39.773 202.398,39.664 202.57,39.563C206.968,36.75 209.757,33.477 209.757,30.148C209.757,27.383 207.859,25.43 205.406,25.43C203.882,25.43 202.71,26.273 202,27.563C201.304,26.281 200.117,25.43 198.593,25.43C196.14,25.43 194.242,27.383 194.242,30.148C194.242,33.477 197.031,36.75 201.437,39.563C201.601,39.664 201.835,39.773 202,39.773Z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M218.5,27L244.5,27A1.5,1.5 0,0 1,246 28.5L246,28.5A1.5,1.5 0,0 1,244.5 30L218.5,30A1.5,1.5 0,0 1,217 28.5L217,28.5A1.5,1.5 0,0 1,218.5 27z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M218.5,34L236.5,34A1.5,1.5 0,0 1,238 35.5L238,35.5A1.5,1.5 0,0 1,236.5 37L218.5,37A1.5,1.5 0,0 1,217 35.5L217,35.5A1.5,1.5 0,0 1,218.5 34z"
+      android:fillColor="#ffffff"/>
+</vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/ic_settings_privacy_preserving_analytics_disabled.xml b/Corona-Warn-App/src/main/res/drawable/ic_settings_privacy_preserving_analytics_disabled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1336c553128941193180679db9fd541c9dc2f26
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/drawable/ic_settings_privacy_preserving_analytics_disabled.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="40dp"
+    android:height="40dp"
+    android:viewportWidth="40"
+    android:viewportHeight="40">
+  <path
+      android:pathData="M13.1385,12.148C12.8616,11.9327 12.4612,11.9523 12.2067,12.2067C11.9311,12.4824 11.9311,12.9294 12.2067,13.205L27.5009,28.4991L27.5674,28.5579C27.8443,28.7732 28.2447,28.7536 28.4991,28.4991C28.7748,28.2235 28.7748,27.7765 28.4991,27.5009L13.205,12.2067L13.1385,12.148ZM13,17.2H15.2035L16,17.9965V27H13V17.2ZM18.6,27V20.5965L21.4,23.3965V27H18.6ZM24.2,27V26.1965L25.0035,27H24.2ZM24.2,22.2035L27,25.0035V21H24.2V22.2035ZM18.6,16.6035L21.4,19.4035V13H18.6V16.6035Z"
+      android:fillColor="#C00F2D"
+      android:fillType="evenOdd"/>
+</vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/ic_settings_privacy_preserving_analytics_enabled.xml b/Corona-Warn-App/src/main/res/drawable/ic_settings_privacy_preserving_analytics_enabled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..42244d24fd3b0544c97a7d1b68e9ad8252e4b90f
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/drawable/ic_settings_privacy_preserving_analytics_enabled.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="40dp"
+    android:height="40dp"
+    android:viewportWidth="40"
+    android:viewportHeight="40">
+  <path
+      android:pathData="M11,16.8H14.8571V28H11V16.8ZM18.2,12H21.8V28H18.2V12ZM25.4,21.1429H29V28H25.4V21.1429Z"
+      android:fillColor="#007FAD"/>
+</vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/ic_submission_illustration_other_warning.xml b/Corona-Warn-App/src/main/res/drawable/ic_submission_illustration_other_warning.xml
index 542e35187c3a4044e28ddaa13052d088660137f4..7f85bff8eca639c46882a31c35d0f29e09d44d93 100644
--- a/Corona-Warn-App/src/main/res/drawable/ic_submission_illustration_other_warning.xml
+++ b/Corona-Warn-App/src/main/res/drawable/ic_submission_illustration_other_warning.xml
@@ -1,405 +1,329 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="361dp"
-    android:height="221dp"
-    android:viewportWidth="361"
-    android:viewportHeight="221">
-    <group>
-        <clip-path android:pathData="M0.5,0.1h360v220h-360z" />
-        <path
-            android:fillColor="#B1BBC2"
-            android:fillType="evenOdd"
-            android:pathData="M174.363,100.835L143.485,100.733C142.828,100.73 142.293,101.261 142.291,101.918L142.259,111.573C142.257,112.229 142.788,112.764 143.445,112.766L174.323,112.869C174.98,112.871 175.514,112.34 175.516,111.683L175.549,102.029C175.55,101.371 175.019,100.837 174.363,100.835"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#94A1AB"
-            android:fillType="evenOdd"
-            android:pathData="M174.422,84.121L143.545,84.018C142.887,84.016 142.353,84.548 142.351,85.204L142.319,94.858C142.317,95.516 142.848,96.051 143.505,96.053L174.382,96.155C175.039,96.158 175.574,95.627 175.576,94.969L175.608,85.315C175.61,84.658 175.079,84.123 174.422,84.121"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BE0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M143.997,96.052C143.997,96.052 143.579,96.054 143.561,96.054C143.285,96.052 143.597,96.058 143.322,96.051C143.095,96.047 142.381,95.786 142.355,95.022C142.354,94.175 142.355,88.153 142.355,85.274C142.348,84.263 143.166,84.025 143.455,84.024C143.706,84.024 143.294,84.026 143.545,84.023C143.6,84.023 143.995,84.023 143.995,84.023L143.997,96.052Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#748692"
-            android:fillType="evenOdd"
-            android:pathData="M174.472,67.412L143.596,67.31C142.938,67.307 142.403,67.838 142.401,68.495L142.369,78.15C142.367,78.806 142.898,79.341 143.555,79.343L174.433,79.446C175.09,79.448 175.624,78.917 175.626,78.26L175.658,68.606C175.66,67.948 175.129,67.414 174.472,67.412"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#657887"
-            android:fillType="evenOdd"
-            android:pathData="M174.515,50.708L143.638,50.605C142.981,50.603 142.447,51.134 142.444,51.791L142.412,61.445C142.41,62.102 142.941,62.637 143.599,62.639L174.476,62.741C175.132,62.744 175.667,62.213 175.669,61.555L175.701,51.901C175.703,51.244 175.173,50.71 174.515,50.708"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#E7EAEF"
-            android:fillType="evenOdd"
-            android:pathData="M159.431,89.897C164.014,89.897 167.73,86.182 167.73,81.599C167.73,77.016 164.014,73.3 159.431,73.3C154.848,73.3 151.133,77.016 151.133,81.599C151.133,86.182 154.848,89.897 159.431,89.897"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <group>
-            <clip-path android:pathData="M151.132,81.599C151.132,86.183 154.848,89.898 159.431,89.898L159.431,89.898C164.014,89.898 167.73,86.183 167.73,81.599L167.73,81.599C167.73,77.016 164.014,73.3 159.431,73.3L159.431,73.3C154.848,73.3 151.132,77.016 151.132,81.599L151.132,81.599Z" />
-            <path
-                android:fillColor="#FFFFFF"
-                android:fillType="evenOdd"
-                android:pathData="M150.583,90.447l17.696,0l0,-17.696l-17.696,0z"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <path
-            android:fillColor="#657887"
-            android:fillType="evenOdd"
-            android:pathData="M159.221,75.229C158.649,75.574 156.802,76.603 154.949,76.739C154.725,76.755 154.551,76.939 154.551,77.159L154.551,83.753C154.551,84.766 155.088,85.706 155.969,86.236C157.393,87.091 158.954,87.9 159.322,88.088C159.373,88.114 159.432,88.114 159.482,88.088C159.851,87.9 161.412,87.091 162.835,86.236C163.716,85.706 164.253,84.766 164.253,83.753L164.253,77.159C164.253,76.939 164.08,76.755 163.855,76.739C162.003,76.603 160.156,75.574 159.582,75.229C159.528,75.196 159.464,75.179 159.402,75.179C159.34,75.179 159.277,75.196 159.221,75.229"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#FFFFFF"
-            android:fillType="evenOdd"
-            android:pathData="M157.715,80.334L157.419,80.334C157.026,80.334 156.708,80.66 156.708,81.062L156.708,83.557C156.708,83.96 157.026,84.287 157.419,84.287L161.194,84.287C161.587,84.287 161.906,83.96 161.906,83.557L161.906,81.062C161.906,80.66 161.587,80.334 161.194,80.334L160.898,80.334C160.846,79.247 160.152,78.384 159.307,78.384C158.462,78.384 157.768,79.247 157.715,80.334M159.307,79.086C159.77,79.086 160.166,79.645 160.211,80.334L158.402,80.334C158.448,79.645 158.843,79.086 159.307,79.086"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <group>
-            <clip-path android:pathData="M157.715,80.334L157.419,80.334C157.026,80.334 156.708,80.661 156.708,81.063L156.708,81.063L156.708,83.557C156.708,83.961 157.026,84.287 157.419,84.287L157.419,84.287L161.194,84.287C161.587,84.287 161.906,83.961 161.906,83.557L161.906,83.557L161.906,81.063C161.906,80.661 161.587,80.334 161.194,80.334L161.194,80.334L160.898,80.334C160.846,79.247 160.152,78.383 159.306,78.383L159.306,78.383C158.462,78.383 157.768,79.247 157.715,80.334L157.715,80.334ZM159.306,79.087C159.77,79.087 160.165,79.645 160.212,80.334L160.212,80.334L158.402,80.334C158.447,79.645 158.843,79.087 159.306,79.087L159.306,79.087Z" />
-            <path
-                android:fillColor="#FFFFFF"
-                android:fillType="evenOdd"
-                android:pathData="M155.909,85.085l6.795,0l0,-7.5l-6.795,0z"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <path
-            android:fillColor="#657887"
-            android:fillType="evenOdd"
-            android:pathData="M158.579,81.954C158.579,82.203 158.724,82.421 158.937,82.537L158.937,83.28C158.937,83.377 159.021,83.457 159.126,83.457L159.465,83.457C159.569,83.457 159.654,83.377 159.654,83.28L159.654,82.537C159.868,82.421 160.013,82.203 160.013,81.954C160.013,81.582 159.691,81.281 159.295,81.281C158.9,81.281 158.579,81.582 158.579,81.954"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#FFFFFF"
-            android:fillType="nonZero"
-            android:pathData="M149.055,57.873L149.055,57.207L149.404,57.207L149.404,56.714L149.055,56.714L149.055,54.795L148.438,54.795L147.154,56.822L147.182,57.207L148.444,57.207L148.444,57.873L149.055,57.873ZM148.444,56.714L147.763,56.714L148.404,55.697L148.444,55.628L148.444,56.714ZM150.811,57.915C151.011,57.915 151.191,57.87 151.349,57.78C151.508,57.69 151.631,57.564 151.717,57.401C151.804,57.239 151.847,57.058 151.847,56.858C151.847,56.545 151.768,56.293 151.611,56.101C151.453,55.91 151.24,55.814 150.972,55.814C150.723,55.814 150.516,55.897 150.353,56.063C150.386,55.815 150.488,55.621 150.656,55.482C150.824,55.342 151.047,55.27 151.323,55.266L151.323,55.266L151.382,55.266L151.382,54.763L151.281,54.763C150.969,54.764 150.695,54.835 150.459,54.975C150.223,55.116 150.042,55.314 149.916,55.57C149.79,55.825 149.727,56.12 149.727,56.454L149.727,56.454L149.727,56.674C149.727,57.051 149.827,57.351 150.026,57.577C150.225,57.802 150.487,57.915 150.811,57.915ZM150.799,57.423C150.653,57.423 150.541,57.365 150.46,57.25C150.38,57.135 150.34,56.976 150.34,56.771L150.34,56.771L150.34,56.585C150.378,56.501 150.437,56.433 150.517,56.381C150.598,56.33 150.687,56.304 150.786,56.304C150.924,56.304 151.034,56.356 151.116,56.459C151.198,56.561 151.238,56.697 151.238,56.864C151.238,57.029 151.198,57.164 151.117,57.267C151.036,57.371 150.93,57.423 150.799,57.423ZM153.264,57.915C153.477,57.915 153.661,57.872 153.818,57.785C153.974,57.699 154.094,57.577 154.178,57.419C154.262,57.262 154.304,57.084 154.304,56.886C154.304,56.559 154.221,56.304 154.054,56.122C153.888,55.941 153.658,55.85 153.365,55.85C153.202,55.85 153.047,55.888 152.902,55.966L152.902,55.966L152.978,55.304L154.202,55.304L154.202,54.795L152.477,54.795L152.3,56.359L152.786,56.48L152.845,56.425C152.935,56.349 153.053,56.311 153.198,56.311C153.356,56.311 153.478,56.357 153.564,56.45C153.65,56.543 153.693,56.677 153.693,56.852C153.693,57.034 153.656,57.174 153.581,57.274C153.506,57.373 153.4,57.423 153.262,57.423C153.138,57.423 153.037,57.387 152.96,57.316C152.884,57.245 152.839,57.145 152.826,57.017L152.826,57.017L152.221,57.017C152.227,57.191 152.276,57.347 152.368,57.484C152.461,57.621 152.587,57.727 152.746,57.802C152.905,57.878 153.078,57.915 153.264,57.915ZM155.727,57.915C156.047,57.915 156.3,57.836 156.486,57.677C156.672,57.519 156.765,57.303 156.765,57.029C156.765,56.859 156.721,56.71 156.634,56.584C156.546,56.458 156.428,56.359 156.279,56.287C156.41,56.218 156.513,56.126 156.587,56.01C156.662,55.895 156.699,55.762 156.699,55.613C156.699,55.348 156.612,55.138 156.436,54.984C156.261,54.83 156.023,54.752 155.725,54.752C155.424,54.752 155.187,54.83 155.012,54.986C154.837,55.142 154.75,55.351 154.75,55.613C154.75,55.762 154.787,55.895 154.861,56.01C154.935,56.126 155.038,56.218 155.169,56.287C155.021,56.358 154.903,56.456 154.816,56.583C154.728,56.71 154.684,56.859 154.684,57.029C154.684,57.301 154.778,57.517 154.966,57.676C155.153,57.836 155.407,57.915 155.727,57.915ZM155.727,56.051C155.611,56.051 155.522,56.013 155.458,55.938C155.395,55.864 155.363,55.765 155.363,55.642C155.363,55.518 155.395,55.421 155.458,55.351C155.522,55.28 155.61,55.245 155.725,55.245C155.84,55.245 155.93,55.281 155.993,55.354C156.057,55.426 156.088,55.523 156.088,55.642C156.088,55.765 156.057,55.864 155.994,55.938C155.931,56.013 155.842,56.051 155.727,56.051ZM155.727,57.423C155.591,57.423 155.486,57.382 155.41,57.302C155.334,57.222 155.295,57.116 155.295,56.985C155.295,56.85 155.334,56.742 155.412,56.663C155.489,56.583 155.593,56.543 155.723,56.543C155.854,56.543 155.958,56.583 156.035,56.664C156.113,56.744 156.152,56.851 156.152,56.985C156.152,57.122 156.114,57.229 156.039,57.306C155.963,57.384 155.859,57.423 155.727,57.423ZM158.605,57.873L159.677,54.795L158.971,54.795L158.274,57.11L157.58,54.795L156.876,54.795L157.944,57.873L158.605,57.873ZM160.601,57.873L160.601,56.746L161.107,56.746L161.684,57.873L162.364,57.873L162.364,57.843L161.698,56.585C161.883,56.502 162.021,56.391 162.112,56.25C162.203,56.11 162.248,55.935 162.248,55.725C162.248,55.429 162.149,55.2 161.952,55.038C161.755,54.876 161.474,54.795 161.111,54.795L161.111,54.795L159.967,54.795L159.967,57.873L160.601,57.873ZM161.113,56.232L160.601,56.232L160.601,55.308L161.111,55.308C161.281,55.308 161.408,55.35 161.49,55.433C161.573,55.516 161.614,55.631 161.614,55.776C161.614,55.918 161.57,56.03 161.483,56.111C161.395,56.192 161.272,56.232 161.113,56.232L161.113,56.232ZM163.567,57.873L164.758,55.137L164.758,54.795L162.584,54.795L162.584,55.289L164.115,55.289L162.923,57.873L163.567,57.873ZM167.259,57.873L167.259,57.38L165.935,57.38L166.635,56.642C166.827,56.432 166.962,56.249 167.041,56.091C167.12,55.933 167.159,55.778 167.159,55.626C167.159,55.348 167.072,55.133 166.896,54.981C166.721,54.829 166.474,54.752 166.157,54.752C165.95,54.752 165.765,54.796 165.601,54.885C165.438,54.973 165.311,55.094 165.222,55.249C165.132,55.404 165.087,55.576 165.087,55.763L165.087,55.763L165.701,55.763C165.701,55.608 165.74,55.483 165.82,55.388C165.9,55.293 166.009,55.245 166.147,55.245C166.275,55.245 166.374,55.284 166.443,55.362C166.512,55.441 166.546,55.548 166.546,55.685C166.546,55.785 166.513,55.891 166.448,56.002C166.382,56.113 166.281,56.244 166.145,56.393L166.145,56.393L165.149,57.454L165.149,57.873L167.259,57.873ZM168.815,57.915C169.156,57.915 169.427,57.839 169.629,57.688C169.83,57.536 169.931,57.327 169.931,57.061C169.931,56.821 169.849,56.621 169.684,56.461C169.519,56.3 169.256,56.165 168.895,56.057C168.699,55.998 168.551,55.934 168.45,55.867C168.349,55.799 168.299,55.715 168.299,55.615C168.299,55.508 168.342,55.422 168.428,55.356C168.514,55.29 168.634,55.258 168.789,55.258C168.95,55.258 169.075,55.297 169.164,55.375C169.252,55.453 169.297,55.563 169.297,55.704L169.297,55.704L169.931,55.704C169.931,55.519 169.883,55.354 169.788,55.209C169.693,55.064 169.56,54.952 169.388,54.872C169.216,54.792 169.02,54.752 168.8,54.752C168.581,54.752 168.385,54.789 168.209,54.862C168.034,54.936 167.899,55.037 167.805,55.168C167.712,55.298 167.665,55.447 167.665,55.613C167.665,55.933 167.839,56.187 168.189,56.376C168.317,56.445 168.491,56.515 168.711,56.586C168.931,56.658 169.083,56.725 169.168,56.789C169.252,56.854 169.295,56.946 169.295,57.065C169.295,57.175 169.252,57.261 169.168,57.322C169.083,57.383 168.966,57.414 168.815,57.414C168.409,57.414 168.206,57.244 168.206,56.905L168.206,56.905L167.569,56.905C167.569,57.103 167.621,57.278 167.723,57.429C167.825,57.58 167.973,57.699 168.168,57.785C168.362,57.872 168.578,57.915 168.815,57.915Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#FFFFFF"
-            android:fillType="nonZero"
-            android:pathData="M148.561,74.668L148.561,73.826L148.498,72.376L149.327,74.668L149.762,74.668L150.593,72.374L150.53,73.826L150.53,74.668L151.166,74.668L151.166,71.59L150.333,71.59L149.547,73.822L148.756,71.59L147.927,71.59L147.927,74.668L148.561,74.668ZM153.143,74.668L153.143,71.585L153.078,71.585L151.803,72.042L151.803,72.539L152.532,72.313L152.532,74.668L153.143,74.668ZM155.116,74.71C155.444,74.71 155.708,74.628 155.908,74.463C156.107,74.298 156.207,74.079 156.207,73.805C156.207,73.636 156.164,73.49 156.079,73.366C155.994,73.242 155.864,73.149 155.691,73.087C155.83,73.023 155.943,72.932 156.029,72.814C156.115,72.695 156.158,72.566 156.158,72.425C156.158,72.151 156.066,71.937 155.881,71.781C155.697,71.625 155.441,71.547 155.116,71.547C154.928,71.547 154.757,71.583 154.601,71.655C154.445,71.727 154.324,71.827 154.237,71.954C154.151,72.082 154.107,72.226 154.107,72.387L154.107,72.387L154.718,72.387C154.718,72.284 154.758,72.2 154.837,72.136C154.916,72.072 155.014,72.04 155.131,72.04C155.26,72.04 155.362,72.075 155.436,72.144C155.51,72.213 155.547,72.309 155.547,72.433C155.547,72.562 155.51,72.664 155.435,72.742C155.36,72.819 155.245,72.858 155.09,72.858L155.09,72.858L154.765,72.858L154.765,73.336L155.088,73.336C155.427,73.336 155.596,73.49 155.596,73.797C155.596,73.924 155.555,74.026 155.472,74.102C155.39,74.179 155.276,74.218 155.131,74.218C155.004,74.218 154.897,74.181 154.81,74.108C154.724,74.034 154.68,73.94 154.68,73.824L154.68,73.824L154.069,73.824C154.069,74.091 154.167,74.305 154.362,74.467C154.557,74.629 154.809,74.71 155.116,74.71ZM157.059,74.698L157.209,74.695C157.677,74.676 158.038,74.519 158.293,74.226C158.549,73.933 158.676,73.53 158.676,73.017L158.676,73.017L158.676,72.791C158.675,72.545 158.63,72.328 158.543,72.137C158.456,71.947 158.333,71.801 158.175,71.7C158.017,71.598 157.837,71.547 157.634,71.547C157.436,71.547 157.259,71.594 157.101,71.688C156.943,71.782 156.82,71.913 156.732,72.081C156.644,72.25 156.6,72.435 156.6,72.636C156.6,72.953 156.682,73.205 156.845,73.392C157.009,73.579 157.226,73.672 157.498,73.672C157.711,73.672 157.897,73.594 158.057,73.437C158.013,73.912 157.725,74.162 157.194,74.186L157.194,74.186L157.059,74.188L157.059,74.698ZM157.649,73.205C157.509,73.205 157.401,73.151 157.324,73.043C157.247,72.935 157.209,72.798 157.209,72.63C157.209,72.461 157.248,72.32 157.327,72.208C157.406,72.096 157.507,72.04 157.63,72.04C157.762,72.04 157.868,72.097 157.947,72.211C158.026,72.325 158.065,72.486 158.065,72.693L158.065,72.693L158.065,72.945C158.028,73.017 157.975,73.078 157.903,73.129C157.832,73.18 157.747,73.205 157.649,73.205ZM160.145,74.71C160.485,74.71 160.743,74.597 160.919,74.372C161.095,74.146 161.183,73.821 161.183,73.395L161.183,73.395L161.183,72.829C161.179,72.416 161.088,72.099 160.911,71.878C160.733,71.658 160.477,71.547 160.141,71.547C159.806,71.547 159.549,71.659 159.371,71.881C159.192,72.104 159.103,72.43 159.103,72.86L159.103,72.86L159.103,73.427C159.107,73.84 159.198,74.157 159.376,74.378C159.553,74.6 159.81,74.71 160.145,74.71ZM160.145,74.218C159.995,74.218 159.885,74.157 159.817,74.035C159.748,73.913 159.714,73.726 159.714,73.476L159.714,73.476L159.714,72.727C159.718,72.492 159.755,72.319 159.823,72.208C159.891,72.097 159.997,72.042 160.141,72.042C160.289,72.042 160.398,72.1 160.468,72.217C160.538,72.333 160.572,72.519 160.572,72.774L160.572,72.774L160.572,73.505C160.57,73.746 160.535,73.925 160.469,74.042C160.403,74.159 160.295,74.218 160.145,74.218ZM162.034,74.668L162.245,74.034L163.358,74.034L163.571,74.668L164.245,74.668L163.093,71.59L162.506,71.59L161.36,74.668L162.034,74.668ZM163.186,73.52L162.417,73.52L162.799,72.368L163.186,73.52ZM165.167,74.668L165.167,73.826L165.104,72.376L165.933,74.668L166.368,74.668L167.199,72.374L167.136,73.826L167.136,74.668L167.772,74.668L167.772,71.59L166.939,71.59L166.152,73.822L165.362,71.59L164.533,71.59L164.533,74.668L165.167,74.668ZM170.307,74.668L170.307,74.158L168.96,74.158L168.96,71.59L168.326,71.59L168.326,74.668L170.307,74.668Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#FFFFFF"
-            android:fillType="nonZero"
-            android:pathData="M148.205,91.463L148.205,90.205L149.423,90.205L149.423,89.693L148.205,89.693L148.205,88.898L149.575,88.898L149.575,88.385L147.571,88.385L147.571,91.463L148.205,91.463ZM150.575,91.463L150.575,90.583L150.905,90.228L151.696,91.463L152.45,91.463L151.326,89.752L152.419,88.385L151.639,88.385L150.854,89.397L150.575,89.78L150.575,88.385L149.941,88.385L149.941,91.463L150.575,91.463ZM153.512,91.505C153.71,91.505 153.889,91.464 154.047,91.383C154.204,91.301 154.327,91.185 154.413,91.035C154.5,90.885 154.543,90.712 154.543,90.516L154.543,90.516L154.543,88.385L153.909,88.385L153.909,90.516C153.909,90.669 153.873,90.788 153.801,90.871C153.729,90.954 153.633,90.996 153.512,90.996C153.375,90.996 153.275,90.96 153.211,90.888C153.148,90.816 153.116,90.705 153.116,90.554L153.116,90.554L152.478,90.554C152.478,90.857 152.569,91.091 152.751,91.257C152.932,91.422 153.186,91.505 153.512,91.505ZM155.452,91.492L155.603,91.49C156.07,91.471 156.432,91.314 156.687,91.021C156.942,90.728 157.07,90.325 157.07,89.812L157.07,89.812L157.07,89.585C157.068,89.34 157.024,89.122 156.937,88.932C156.849,88.742 156.727,88.596 156.569,88.495C156.411,88.393 156.23,88.342 156.027,88.342C155.83,88.342 155.653,88.389 155.495,88.483C155.337,88.577 155.214,88.708 155.126,88.876C155.038,89.045 154.994,89.23 154.994,89.431C154.994,89.748 155.075,90 155.239,90.187C155.402,90.374 155.62,90.467 155.892,90.467C156.105,90.467 156.291,90.389 156.45,90.232C156.407,90.707 156.119,90.957 155.588,90.981L155.588,90.981L155.452,90.983L155.452,91.492ZM156.042,90C155.903,90 155.795,89.946 155.718,89.838C155.641,89.73 155.603,89.593 155.603,89.425C155.603,89.256 155.642,89.115 155.721,89.003C155.8,88.891 155.901,88.835 156.023,88.835C156.156,88.835 156.261,88.892 156.34,89.006C156.419,89.12 156.459,89.281 156.459,89.488L156.459,89.488L156.459,89.74C156.422,89.812 156.368,89.873 156.297,89.924C156.226,89.974 156.141,90 156.042,90ZM157.937,91.492L158.087,91.49C158.555,91.471 158.916,91.314 159.171,91.021C159.426,90.728 159.554,90.325 159.554,89.812L159.554,89.812L159.554,89.585C159.553,89.34 159.508,89.122 159.421,88.932C159.333,88.742 159.211,88.596 159.053,88.495C158.895,88.393 158.715,88.342 158.512,88.342C158.314,88.342 158.137,88.389 157.979,88.483C157.821,88.577 157.698,88.708 157.61,88.876C157.522,89.045 157.478,89.23 157.478,89.431C157.478,89.748 157.56,90 157.723,90.187C157.887,90.374 158.104,90.467 158.376,90.467C158.589,90.467 158.775,90.389 158.934,90.232C158.891,90.707 158.603,90.957 158.072,90.981L158.072,90.981L157.937,90.983L157.937,91.492ZM158.526,90C158.387,90 158.279,89.946 158.202,89.838C158.125,89.73 158.087,89.593 158.087,89.425C158.087,89.256 158.126,89.115 158.205,89.003C158.284,88.891 158.385,88.835 158.507,88.835C158.64,88.835 158.746,88.892 158.825,89.006C158.903,89.12 158.943,89.281 158.943,89.488L158.943,89.488L158.943,89.74C158.906,89.812 158.852,89.873 158.781,89.924C158.71,89.974 158.625,90 158.526,90ZM161.031,91.505C161.244,91.505 161.429,91.462 161.585,91.375C161.742,91.288 161.862,91.167 161.946,91.009C162.03,90.852 162.072,90.674 162.072,90.476C162.072,90.149 161.988,89.894 161.822,89.712C161.656,89.531 161.426,89.44 161.133,89.44C160.969,89.44 160.815,89.478 160.67,89.556L160.67,89.556L160.746,88.894L161.97,88.894L161.97,88.385L160.245,88.385L160.067,89.949L160.554,90.07L160.613,90.015C160.703,89.939 160.821,89.9 160.966,89.9C161.124,89.9 161.246,89.947 161.332,90.04C161.418,90.133 161.461,90.267 161.461,90.442C161.461,90.624 161.423,90.764 161.349,90.863C161.274,90.963 161.167,91.013 161.029,91.013C160.905,91.013 160.805,90.977 160.728,90.906C160.651,90.835 160.606,90.735 160.594,90.607L160.594,90.607L159.989,90.607C159.995,90.781 160.044,90.937 160.136,91.074C160.228,91.211 160.354,91.317 160.513,91.392C160.673,91.467 160.845,91.505 161.031,91.505ZM163.433,91.505C163.762,91.505 164.025,91.423 164.225,91.258C164.424,91.093 164.524,90.874 164.524,90.6C164.524,90.431 164.481,90.285 164.396,90.161C164.311,90.036 164.182,89.943 164.008,89.881C164.148,89.818 164.26,89.727 164.346,89.609C164.432,89.49 164.475,89.361 164.475,89.22C164.475,88.946 164.383,88.732 164.198,88.576C164.014,88.42 163.759,88.342 163.433,88.342C163.246,88.342 163.074,88.378 162.918,88.45C162.763,88.522 162.641,88.622 162.555,88.749C162.468,88.877 162.425,89.021 162.425,89.182L162.425,89.182L163.036,89.182C163.036,89.079 163.075,88.995 163.154,88.931C163.233,88.867 163.331,88.835 163.448,88.835C163.578,88.835 163.679,88.869 163.753,88.939C163.827,89.008 163.864,89.104 163.864,89.228C163.864,89.356 163.827,89.459 163.752,89.537C163.678,89.614 163.563,89.653 163.408,89.653L163.408,89.653L163.082,89.653L163.082,90.131L163.406,90.131C163.744,90.131 163.913,90.285 163.913,90.592C163.913,90.719 163.872,90.821 163.789,90.897C163.707,90.974 163.593,91.013 163.448,91.013C163.321,91.013 163.214,90.976 163.128,90.903C163.041,90.829 162.998,90.735 162.998,90.619L162.998,90.619L162.387,90.619C162.387,90.886 162.484,91.1 162.679,91.262C162.875,91.424 163.126,91.505 163.433,91.505ZM165.971,91.505C166.311,91.505 166.569,91.392 166.745,91.167C166.921,90.941 167.009,90.616 167.009,90.19L167.009,90.19L167.009,89.624C167.005,89.211 166.914,88.894 166.737,88.673C166.559,88.453 166.302,88.342 165.967,88.342C165.632,88.342 165.375,88.454 165.196,88.676C165.018,88.899 164.929,89.225 164.929,89.655L164.929,89.655L164.929,90.222C164.933,90.635 165.024,90.952 165.202,91.173C165.379,91.394 165.636,91.505 165.971,91.505ZM165.971,91.013C165.82,91.013 165.711,90.952 165.642,90.83C165.574,90.708 165.54,90.521 165.54,90.27L165.54,90.27L165.54,89.522C165.544,89.287 165.58,89.114 165.649,89.003C165.717,88.892 165.823,88.837 165.967,88.837C166.115,88.837 166.224,88.895 166.294,89.011C166.363,89.128 166.398,89.313 166.398,89.569L166.398,89.569L166.398,90.3C166.395,90.541 166.361,90.72 166.295,90.837C166.228,90.954 166.121,91.013 165.971,91.013ZM169.501,91.463L169.501,90.97L168.177,90.97L168.877,90.232C169.069,90.022 169.204,89.838 169.283,89.681C169.362,89.523 169.401,89.368 169.401,89.215C169.401,88.938 169.314,88.723 169.138,88.571C168.963,88.418 168.716,88.342 168.399,88.342C168.192,88.342 168.007,88.386 167.843,88.474C167.68,88.563 167.553,88.684 167.464,88.839C167.374,88.994 167.329,89.165 167.329,89.353L167.329,89.353L167.943,89.353C167.943,89.198 167.982,89.073 168.062,88.978C168.142,88.883 168.251,88.835 168.389,88.835C168.517,88.835 168.616,88.874 168.685,88.952C168.754,89.031 168.788,89.138 168.788,89.275C168.788,89.375 168.755,89.48 168.69,89.592C168.624,89.703 168.523,89.834 168.387,89.983L168.387,89.983L167.391,91.044L167.391,91.463L169.501,91.463Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#FFFFFF"
-            android:fillType="nonZero"
-            android:pathData="M147.405,108.258L147.405,106.939L148.642,106.939L148.642,108.258L149.276,108.258L149.276,105.18L148.642,105.18L148.642,106.427L147.405,106.427L147.405,105.18L146.771,105.18L146.771,108.258L147.405,108.258ZM150.282,108.258L150.494,107.624L151.606,107.624L151.819,108.258L152.494,108.258L151.342,105.18L150.754,105.18L149.608,108.258L150.282,108.258ZM151.435,107.11L150.665,107.11L151.048,105.958L151.435,107.11ZM153.669,108.3C153.997,108.3 154.261,108.218 154.461,108.053C154.66,107.888 154.76,107.669 154.76,107.395C154.76,107.226 154.717,107.08 154.632,106.956C154.547,106.832 154.417,106.738 154.244,106.676C154.383,106.613 154.496,106.522 154.582,106.404C154.668,106.285 154.711,106.156 154.711,106.015C154.711,105.741 154.619,105.527 154.434,105.371C154.25,105.215 153.994,105.137 153.669,105.137C153.481,105.137 153.31,105.173 153.154,105.245C152.998,105.317 152.877,105.417 152.79,105.544C152.704,105.672 152.66,105.816 152.66,105.977L152.66,105.977L153.271,105.977C153.271,105.874 153.311,105.79 153.39,105.726C153.469,105.662 153.567,105.63 153.684,105.63C153.813,105.63 153.915,105.664 153.989,105.734C154.063,105.803 154.1,105.899 154.1,106.023C154.1,106.151 154.063,106.254 153.988,106.332C153.913,106.409 153.799,106.448 153.644,106.448L153.644,106.448L153.318,106.448L153.318,106.926L153.641,106.926C153.98,106.926 154.149,107.08 154.149,107.387C154.149,107.514 154.108,107.616 154.025,107.692C153.943,107.769 153.829,107.808 153.684,107.808C153.557,107.808 153.45,107.771 153.363,107.698C153.277,107.624 153.233,107.53 153.233,107.414L153.233,107.414L152.622,107.414C152.622,107.681 152.72,107.895 152.915,108.057C153.11,108.219 153.362,108.3 153.669,108.3ZM156.988,108.258L156.988,107.592L157.337,107.592L157.337,107.099L156.988,107.099L156.988,105.18L156.371,105.18L155.087,107.207L155.115,107.592L156.377,107.592L156.377,108.258L156.988,108.258ZM156.377,107.099L155.696,107.099L156.337,106.082L156.377,106.013L156.377,107.099ZM158.966,108.3C159.22,108.3 159.451,108.262 159.659,108.187C159.868,108.112 160.029,108.006 160.144,107.869L160.144,107.869L160.144,106.641L158.932,106.641L158.932,107.108L159.509,107.108L159.509,107.638C159.408,107.74 159.238,107.791 159,107.791C158.763,107.791 158.583,107.708 158.461,107.543C158.338,107.378 158.277,107.135 158.277,106.812L158.277,106.812L158.277,106.615C158.278,106.295 158.335,106.054 158.448,105.892C158.561,105.73 158.725,105.649 158.941,105.649C159.11,105.649 159.243,105.69 159.339,105.772C159.436,105.853 159.498,105.982 159.526,106.159L159.526,106.159L160.144,106.159C160.106,105.826 159.984,105.573 159.778,105.398C159.572,105.224 159.287,105.137 158.922,105.137C158.66,105.137 158.431,105.197 158.236,105.316C158.04,105.435 157.891,105.607 157.787,105.832C157.684,106.057 157.632,106.323 157.632,106.63L157.632,106.63L157.632,106.839C157.635,107.138 157.691,107.398 157.8,107.619C157.909,107.841 158.064,108.009 158.265,108.126C158.466,108.242 158.7,108.3 158.966,108.3ZM161.807,108.3C162.173,108.3 162.46,108.202 162.671,108.006C162.882,107.81 162.987,107.544 162.987,107.207L162.987,107.207L162.987,105.18L162.351,105.18L162.351,107.228C162.345,107.603 162.164,107.791 161.807,107.791C161.637,107.791 161.503,107.744 161.407,107.652C161.31,107.56 161.262,107.413 161.262,107.211L161.262,107.211L161.262,105.18L160.628,105.18L160.628,107.23C160.632,107.563 160.74,107.824 160.951,108.015C161.163,108.205 161.448,108.3 161.807,108.3ZM164.017,108.258L164.609,107.18L165.201,108.258L165.939,108.258L165.019,106.706L165.915,105.18L165.186,105.18L164.609,106.241L164.032,105.18L163.302,105.18L164.199,106.706L163.279,108.258L164.017,108.258ZM167.207,108.3C167.42,108.3 167.604,108.257 167.761,108.17C167.917,108.083 168.037,107.962 168.121,107.804C168.205,107.647 168.247,107.469 168.247,107.271C168.247,106.944 168.164,106.689 167.998,106.507C167.831,106.326 167.602,106.235 167.308,106.235C167.145,106.235 166.991,106.273 166.845,106.351L166.845,106.351L166.922,105.689L168.146,105.689L168.146,105.18L166.42,105.18L166.243,106.744L166.729,106.865L166.788,106.81C166.879,106.734 166.996,106.696 167.141,106.696C167.299,106.696 167.421,106.742 167.507,106.835C167.593,106.928 167.636,107.062 167.636,107.237C167.636,107.419 167.599,107.559 167.524,107.659C167.449,107.758 167.343,107.808 167.205,107.808C167.081,107.808 166.98,107.772 166.904,107.701C166.827,107.63 166.782,107.53 166.769,107.402L166.769,107.402L166.165,107.402C166.17,107.576 166.219,107.732 166.312,107.869C166.404,108.006 166.53,108.112 166.689,108.187C166.848,108.262 167.021,108.3 167.207,108.3ZM170.12,108.258L170.12,105.175L170.055,105.175L168.78,105.632L168.78,106.129L169.509,105.903L169.509,108.258L170.12,108.258Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BE0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M144.053,62.632C144.053,62.632 143.636,62.634 143.617,62.634C143.342,62.632 143.654,62.637 143.379,62.632C143.152,62.626 142.437,62.365 142.412,61.602C142.411,60.754 142.412,54.733 142.412,51.854C142.405,50.843 143.223,50.605 143.511,50.605C143.762,50.604 143.351,50.606 143.602,50.603C143.656,50.603 144.051,50.604 144.051,50.604L144.053,62.632Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BE0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M144.065,79.348C144.065,79.348 143.648,79.35 143.63,79.35C143.354,79.348 143.666,79.354 143.391,79.348C143.164,79.343 142.449,79.082 142.424,78.318C142.424,77.471 142.424,71.449 142.424,68.571C142.417,67.559 143.236,67.321 143.524,67.32C143.774,67.32 143.363,67.322 143.614,67.319C143.669,67.319 144.063,67.32 144.063,67.32L144.065,79.348Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#A6B4BC"
-            android:fillType="evenOdd"
-            android:pathData="M191.722,80.638C191.722,81.988 190.628,83.081 189.279,83.081C187.93,83.081 186.835,81.988 186.835,80.638C186.835,79.289 187.93,78.196 189.279,78.196C190.628,78.196 191.722,79.289 191.722,80.638"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#A6B4BC"
-            android:fillType="evenOdd"
-            android:pathData="M208.812,80.605C208.812,81.977 207.7,83.09 206.328,83.09C204.956,83.09 203.843,81.977 203.843,80.605C203.843,79.233 204.956,78.121 206.328,78.121C207.7,78.121 208.812,79.233 208.812,80.605"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#94A1AB"
-            android:fillType="evenOdd"
-            android:pathData="M328.845,126.726L245.679,126.726C242.158,126.726 239.304,123.268 239.304,119.004L239.304,32.251C239.304,27.986 242.158,24.528 245.679,24.528L328.845,24.528C332.366,24.528 335.22,27.986 335.22,32.251L335.22,119.004C335.22,123.268 332.366,126.726 328.845,126.726"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#E8F5FF"
-            android:fillType="evenOdd"
-            android:pathData="M322.474,96.909C322.474,98.5 323.764,99.79 325.355,99.79C326.946,99.79 328.236,98.5 328.236,96.909C328.236,95.317 326.946,94.028 325.355,94.028C323.764,94.028 322.474,95.317 322.474,96.909"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#E8F5FF"
-            android:fillType="evenOdd"
-            android:pathData="M310.951,96.909C310.951,98.5 312.241,99.79 313.832,99.79C315.423,99.79 316.713,98.5 316.713,96.909C316.713,95.317 315.423,94.028 313.832,94.028C312.241,94.028 310.951,95.317 310.951,96.909"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#E8F5FF"
-            android:fillType="evenOdd"
-            android:pathData="M299.428,96.909C299.428,98.5 300.718,99.79 302.308,99.79C303.9,99.79 305.19,98.5 305.19,96.909C305.19,95.317 303.9,94.028 302.308,94.028C300.718,94.028 299.428,95.317 299.428,96.909"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#DCE1E5"
-            android:fillType="evenOdd"
-            android:pathData="M322.528,69.213C322.143,71.242 323.89,72.989 325.918,72.604C327.047,72.39 327.968,71.469 328.182,70.341C328.567,68.312 326.821,66.565 324.791,66.95C323.664,67.163 322.741,68.086 322.528,69.213"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#DCE1E5"
-            android:fillType="evenOdd"
-            android:pathData="M311.005,69.213C310.62,71.242 312.366,72.989 314.395,72.604C315.524,72.39 316.445,71.469 316.659,70.341C317.044,68.312 315.298,66.565 313.268,66.95C312.141,67.163 311.218,68.086 311.005,69.213"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#DCE1E5"
-            android:fillType="evenOdd"
-            android:pathData="M299.481,69.213C299.097,71.242 300.843,72.989 302.872,72.604C304,72.39 304.922,71.469 305.135,70.341C305.521,68.312 303.774,66.565 301.745,66.95C300.617,67.163 299.695,68.086 299.481,69.213"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#657887"
-            android:fillType="evenOdd"
-            android:pathData="M249.368,48.407L290.431,48.407C291.422,48.407 292.226,47.603 292.226,46.612L292.226,38.679C292.226,37.687 291.422,36.883 290.431,36.883L249.368,36.883C248.377,36.883 247.574,37.687 247.574,38.679L247.574,46.612C247.574,47.603 248.377,48.407 249.368,48.407"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#DCE1E5"
-            android:fillType="evenOdd"
-            android:pathData="M322.528,42.081C322.143,44.11 323.89,45.857 325.918,45.472C327.047,45.258 327.968,44.336 328.182,43.209C328.567,41.18 326.821,39.433 324.791,39.818C323.664,40.032 322.741,40.954 322.528,42.081"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#DCE1E5"
-            android:fillType="evenOdd"
-            android:pathData="M311.005,42.081C310.62,44.11 312.366,45.857 314.395,45.472C315.524,45.258 316.445,44.336 316.659,43.209C317.044,41.18 315.298,39.433 313.268,39.818C312.141,40.032 311.218,40.954 311.005,42.081"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#DCE1E5"
-            android:fillType="evenOdd"
-            android:pathData="M299.481,42.081C299.097,44.11 300.843,45.857 302.872,45.472C304,45.258 304.922,44.336 305.135,43.209C305.521,41.18 303.774,39.433 301.745,39.818C300.617,40.032 299.695,40.954 299.481,42.081"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#657887"
-            android:fillType="evenOdd"
-            android:pathData="M249.738,75.59L290.801,75.59C291.792,75.59 292.596,74.786 292.596,73.796L292.596,65.863C292.596,64.87 291.792,64.067 290.801,64.067L249.738,64.067C248.747,64.067 247.943,64.87 247.943,65.863L247.943,73.796C247.943,74.786 248.747,75.59 249.738,75.59"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#657887"
-            android:fillType="evenOdd"
-            android:pathData="M249.738,101.899L290.801,101.899C291.792,101.899 292.596,101.096 292.596,100.105L292.596,92.171C292.596,91.18 291.792,90.376 290.801,90.376L249.738,90.376C248.747,90.376 247.943,91.18 247.943,92.171L247.943,100.105C247.943,101.096 248.747,101.899 249.738,101.899"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <group>
-            <clip-path android:pathData="M205.488,87.08l179.566,0l0,50.259l-179.566,0z" />
-            <path
-                android:fillColor="#D8ECF9"
-                android:fillType="evenOdd"
-                android:pathData="M205.488,137.339C207.64,113.404 238.984,115.718 241.359,116.668C247.984,101.553 270.401,99.797 278.229,105.388C282.143,98.12 287.522,94.521 292.596,92.171C309.207,84.476 338.622,81.178 355.692,114.744C382.384,114.197 384.593,136.26 385.054,137.339L297.156,137.339L205.488,137.339Z"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <path
-            android:fillColor="#A6B4BC"
-            android:fillType="evenOdd"
-            android:pathData="M226.65,80.576C226.65,81.948 225.538,83.06 224.166,83.06C222.793,83.06 221.681,81.948 221.681,80.576C221.681,79.204 222.793,78.091 224.166,78.091C225.538,78.091 226.65,79.204 226.65,80.576"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#E1EEFF"
-            android:fillType="evenOdd"
-            android:pathData="M47.231,22.5L47.891,30.585C47.654,27.644 47.343,23.786 47.231,22.5"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#F6B893"
-            android:fillType="evenOdd"
-            android:pathData="M45.547,40.243l-0.829,10.532l9.703,0.786l1.688,-11.196z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#F6B893"
-            android:fillType="evenOdd"
-            android:pathData="M58.096,31.557C58.29,48.725 41.801,48.193 41.19,31.717C41.252,14.89 57.717,14.735 58.096,31.557"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#8C8C98"
-            android:fillType="evenOdd"
-            android:pathData="M35.046,98.4C27.783,125.6 33.713,164.943 35.323,196.472L40.275,196.712C40.275,196.712 43.935,145.54 45.325,133.914C45.748,130.382 47.065,122.836 47.727,119.558C47.778,119.308 48.324,118.23 48.367,119.501C48.641,127.539 52.114,136.431 52.777,145.279C54.325,165.956 53.682,180.321 54.225,197.375C54.225,197.375 59.915,200.866 59.926,200.829C61.202,196.092 65.044,156.972 65.136,151.1C65.156,149.896 67.122,124.833 61.143,99.217L35.046,98.4Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#C66A61"
-            android:fillType="evenOdd"
-            android:pathData="M63.121,51.63C59.194,48.461 59.039,49.482 54.854,48.583C51.711,52.75 46.328,50.327 44.779,48.649C44.595,48.45 44.09,48.687 44.008,48.637C26.924,49.859 35.724,86.622 34.532,97.578C34.474,98.114 34.553,99.131 35.039,99.082C35.039,99.082 50.763,101.303 57.174,100.021C58.092,99.837 61.221,99.508 61.286,98.838C62.339,87.944 67.97,57.275 63.121,51.63"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <group>
-            <clip-path android:pathData="M33.543,16.945l32.089,0l0,35.573l-32.089,0z" />
-            <path
-                android:fillColor="#4A4A4A"
-                android:fillType="evenOdd"
-                android:pathData="M37.462,50.848C37.473,50.855 37.485,50.858 37.498,50.863C37.856,51.01 38.996,52.46 41.308,51.585C43.199,50.87 44.29,49.219 44.852,48.685C46.033,47.562 46.597,45.325 46.171,43.321C45.941,42.238 45.517,41.792 45.284,41.518C40.704,36.131 42.19,30.556 42.746,28.571C42.792,28.408 42.946,26.989 43.033,27.133C43.89,28.527 48.2,29.161 57.418,32.599C57.505,32.632 57.281,35.619 57.264,35.71C57.151,36.337 56.651,38.684 55.291,40.427C55.175,40.574 53.983,41.68 53.961,43.387C53.94,45.06 53.96,46.757 55.131,49.307C56.563,52.425 60.118,53.135 62.796,52.027C64.724,51.228 65.517,49.322 65.632,47.41C65.639,47.299 65.55,47.206 65.438,47.205C64.458,47.203 60.314,46.874 61.387,41.46C62.295,36.853 63.324,26.803 58.719,21.054C58.654,20.975 58.589,20.896 58.524,20.815C58.479,20.756 58.426,20.696 58.373,20.641C58.279,20.534 58.182,20.426 58.084,20.323C57.991,20.228 57.897,20.132 57.803,20.038C56.366,18.614 54.485,17.553 52.036,17.051C52.031,17.05 52.024,17.05 52.018,17.049C51.679,17.008 42.732,15.99 41.16,21.294C41.145,21.339 41.115,21.378 41.074,21.403C40.678,21.645 38.554,23.14 38.311,27.518C38.049,32.349 38.877,34.107 39.082,37.808C39.325,42.241 39.307,46.245 33.736,46.391C33.604,46.395 33.512,46.52 33.553,46.646C33.787,47.343 34.671,49.352 37.462,50.848"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <group>
-            <clip-path android:pathData="M33.528,191.945l9.105,0l0,15.276l-9.105,0z" />
-            <path
-                android:fillColor="#4A4A4A"
-                android:fillType="evenOdd"
-                android:pathData="M40.462,191.945L35.267,193.122C34.979,195.135 31.213,203.976 35.753,206.049C37.538,207.082 38.919,208.028 40.861,206.131C45.031,203.701 40.542,193.632 40.462,191.945"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <path
-            android:fillColor="#4A4A4A"
-            android:fillType="evenOdd"
-            android:pathData="M54.257,194.239C54.395,195.308 53.238,202.91 54.341,203.618C54.701,204.038 55.123,204.211 55.32,204.278C61.058,204.38 67.599,204.497 73.337,204.6C76.58,201.147 60.565,199.899 60.925,194.184C58.702,194.202 56.479,194.22 54.257,194.239"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#EFEFEF"
-            android:fillType="evenOdd"
-            android:pathData="M50.048,51.641C49.047,51.22 48.537,51.008 48.078,50.891C47.144,50.655 46.677,50.537 46.239,50.704C45.757,50.888 45.362,51.267 44.663,51.266C44.456,51.266 44.286,51.232 44.138,51.078C43.976,50.912 43.95,50.716 43.744,49.955C43.499,49.051 41.749,45.918 41.511,45.27C41.084,44.107 40.463,44.053 40.461,43.396C40.46,43.142 40.552,42.985 41.38,41.898C42.068,40.994 42.472,40.488 42.694,40.212C43.637,39.032 43.748,38.898 44.006,38.713C44.282,38.516 44.66,38.244 45.188,38.151C45.642,38.07 45.846,38.186 46.239,37.964C46.3,37.93 46.287,37.932 46.896,37.401C47.405,36.958 47.576,36.816 47.815,36.839C47.923,36.85 52.603,38.024 53.712,38.024C54.097,38.024 56.183,38.791 56.613,38.9C56.746,38.934 57.562,39.138 58.452,39.462C58.695,39.551 58.28,40.827 57.993,41.18C57.86,41.343 56.402,43.57 56.219,44.147C55.854,45.303 55.826,46.362 55.825,46.769C55.825,47.466 55.905,47.962 55.957,49.58C55.967,49.874 55.977,50.283 55.825,50.704C55.753,50.908 55.707,50.932 55.432,51.454C55.126,52.031 55.137,52.086 55.038,52.203C54.754,52.538 54.365,52.446 53.987,52.39C52.788,52.214 52.873,52.585 51.886,52.39C51.516,52.317 51.561,52.277 50.048,51.641"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#F6B893"
-            android:fillType="evenOdd"
-            android:pathData="M31.581,75.457C31.688,74.815 31.886,74.197 32.169,73.622L34.532,68.818C34.542,68.798 34.553,68.778 34.563,68.758C39.051,60.661 39.448,59.985 39.856,59.271C39.903,59.192 41.838,55.765 41.867,55.677C42.016,55.231 42.5,53.741 42.849,52.279C42.858,52.244 42.864,52.208 42.87,52.172C43.016,51.283 43.162,50.395 43.308,49.506C43.318,49.446 43.324,49.386 43.326,49.326L44.836,43.571C44.852,43.178 45.826,42.822 45.946,42.462C45.946,42.462 46.662,42.432 46.728,42.867C47.218,46.079 48.159,45.447 47.939,47.128C47.741,48.639 47.429,51.36 46.577,54.739C46.294,55.86 45.845,57.591 45.237,59.717C44.212,63.308 43.345,66.265 41.952,69.626C41.05,71.805 39.686,74.716 37.663,77.98C37.63,78.032 37.594,78.083 37.556,78.13C35.754,80.329 34.559,80.723 33.772,80.605C33.706,80.594 33.642,80.574 33.58,80.55L32.071,79.958C31.692,79.81 31.524,79.084 31.462,78.634C31.327,77.665 31.411,76.482 31.581,75.457"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#F6B893"
-            android:fillType="evenOdd"
-            android:pathData="M45.417,53.067L46.907,52.8C48.496,49.601 49.489,44.577 48.094,41.722C46.558,39.758 44.002,42.972 43.618,44.94C42.875,48.051 43.389,51.103 43.761,53.383"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#F6B893"
-            android:fillType="evenOdd"
-            android:pathData="M66.196,76.118C66.078,75.507 65.87,74.92 65.577,74.379L63.125,69.842C63.115,69.823 63.104,69.804 63.093,69.785C58.454,62.152 58.044,61.516 57.622,60.843C57.574,60.769 55.575,57.54 55.544,57.456C55.388,57.033 54.877,55.619 54.505,54.229C54.496,54.196 54.488,54.162 54.481,54.128C54.323,53.281 54.162,52.435 54.002,51.588C53.991,51.531 53.984,51.475 53.981,51.417C54.167,49.7 54.167,47.593 53.633,45.282C53.523,44.809 53.398,44.357 53.262,43.927C53.22,43.652 53.126,43.265 52.909,42.853C52.806,42.658 51.981,41.142 50.858,41.264C50.154,41.34 49.698,42.015 49.597,42.184C49.405,42.508 49.272,42.894 49.211,43.312C48.766,46.396 49.055,47.827 49.301,49.43C49.522,50.87 49.876,53.465 50.784,56.676C51.085,57.742 51.562,59.386 52.205,61.406C53.291,64.813 54.206,67.621 55.659,70.8C56.601,72.862 58.017,75.613 60.103,78.685C60.135,78.733 60.173,78.781 60.212,78.825C62.06,80.883 63.27,81.231 64.061,81.098C64.128,81.086 64.191,81.064 64.255,81.04L65.767,80.436C66.145,80.285 66.424,79.929 66.481,79.497C66.603,78.566 66.382,77.095 66.196,76.118"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <group>
-            <clip-path android:pathData="M30.5,68.569l3.84,0l0,11.881l-3.84,0z" />
-            <path
-                android:fillColor="#C66A61"
-                android:fillType="evenOdd"
-                android:pathData="M33.029,80.417C32.751,79.111 32.57,77.753 32.633,76.438C32.675,75.537 32.807,74.092 33.321,72.347C33.825,70.314 34.299,68.673 34.34,68.569C34.34,68.566 32.291,69.832 31.478,71.395C29.486,75.231 31.102,79.454 31.413,79.418C31.436,79.415 31.459,79.414 31.483,79.414C31.688,79.419 31.759,79.43 31.819,79.489C31.939,79.604 31.879,79.77 31.967,79.973C32.014,80.08 32.11,80.219 32.34,80.339C32.38,80.359 33.05,80.517 33.029,80.417"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <path
-            android:fillColor="#C66A61"
-            android:fillType="evenOdd"
-            android:pathData="M65.625,80.602C65.702,79.269 65.761,77.234 65.5,75.944C65.319,75.06 64.97,73.652 64.196,72.006C63.388,70.073 62.67,68.524 62.614,68.427C62.613,68.424 64.831,69.363 65.872,70.784C68.425,74.272 67.471,78.692 67.159,78.704C67.135,78.705 67.112,78.707 67.089,78.712C66.887,78.746 66.819,78.768 66.768,78.835C66.667,78.968 66.752,79.122 66.695,79.336C66.666,79.449 66.591,79.602 66.382,79.755C66.347,79.781 65.62,80.705 65.625,80.602"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-    </group>
-    <group>
-        <clip-path android:pathData="M0.5,0.1h360v220h-360z" />
-        <path
-            android:fillColor="#FFFFFF"
-            android:fillType="evenOdd"
-            android:pathData="M142.082,91.956L106.598,91.956C101.941,91.956 98.162,95.712 98.162,100.34L98.162,185.788C98.162,190.418 101.941,194.174 106.598,194.174L142.082,194.174C146.742,194.174 150.518,190.418 150.518,185.788L150.518,100.34C150.518,95.712 146.742,91.956 142.082,91.956"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <group>
-            <clip-path android:pathData="M96.5,89.463l54.849,0l0,107.203l-54.849,0z" />
-            <path
-                android:fillColor="#4A4A4A"
-                android:fillType="evenOdd"
-                android:pathData="M142.51,92.382C145.765,92.382 148.415,95.016 148.415,98.257L148.415,187.873C148.415,191.113 145.765,193.748 142.51,193.748L105.339,193.748C102.082,193.748 99.433,191.113 99.433,187.873L99.433,98.257C99.433,95.016 102.082,92.382 105.339,92.382L142.51,92.382ZM142.51,89.463L105.339,89.463C100.458,89.463 96.5,93.399 96.5,98.257L96.5,187.873C96.5,192.728 100.458,196.666 105.339,196.666L142.51,196.666C147.392,196.666 151.349,192.728 151.349,187.873L151.349,98.257C151.349,93.399 147.392,89.463 142.51,89.463L142.51,89.463Z"
-                android:strokeWidth="1"
-                android:strokeColor="#00000000" />
-        </group>
-        <path
-            android:fillColor="#EFEFEF"
-            android:fillType="evenOdd"
-            android:pathData="M143.748,156.229L104.269,156.431C103.691,156.434 103.218,155.966 103.216,155.387L103.056,124.224C103.053,123.645 103.521,123.173 104.1,123.17L143.578,122.968C144.157,122.965 144.629,123.433 144.632,124.011L144.791,155.174C144.794,155.754 144.328,156.227 143.748,156.229"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M129.855,142.919C127.959,146.528 123.495,147.915 119.888,146.018C116.279,144.121 114.892,139.658 116.788,136.05C118.686,132.442 123.148,131.054 126.757,132.951C130.365,134.848 131.753,139.31 129.855,142.919"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M131.004,146.116C130.834,146.376 130.258,147.288 129.845,146.173C129.305,144.718 128.164,145.036 128.164,145.036L127.105,145.185L129.328,142.676C129.328,142.676 129.275,143.683 129.603,144.186C129.769,144.439 130.115,144.81 130.549,144.82C130.984,144.83 131.825,144.862 131.004,146.116"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M118.883,149.179C118.592,149.072 117.575,148.711 118.57,148.062C119.87,147.214 119.485,145.819 119.485,145.819L119.105,144.821L122.044,146.433C122.044,146.433 121.049,146.603 120.633,147.035C120.421,147.252 119.96,148.023 120.046,148.449C120.132,148.875 120.288,149.703 118.883,149.179"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M126.377,145.445C126.377,145.445 125.785,145.753 125.97,147.083C126.081,147.877 126.618,149.095 126.694,149.348C126.744,149.51 126.843,149.558 126.981,149.657C127.323,149.899 127.84,150.422 126.613,150.765C125.583,151.054 125.115,150.958 125.323,150.345C125.429,150.032 125.48,149.8 125.443,149.471C125.366,148.75 124.854,147.001 124.177,146.528C123.156,145.816 123.5,146.034 123.5,146.034L125.69,144.38L126.377,145.445Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M121.169,129.912C121.57,129.855 122.019,129.718 121.827,130.416C121.76,130.659 121.749,130.894 121.769,131.109C121.821,131.673 122.011,131.981 122.45,132.338L122.787,132.613L120.537,132.813C120.537,132.813 120.937,132.466 120.828,131.888C120.782,131.647 120.746,131.113 120.473,130.915C120.225,130.732 119.707,130.12 121.169,129.912"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M117.635,136.873C117.458,136.747 117.369,136.531 117.412,136.318C117.487,135.947 117.647,135.381 116.913,134.725C116.072,133.975 114.866,133.402 114.766,133.392C114,133.307 113.508,133.274 114.349,132.087C115.146,130.965 115.608,131.011 115.686,131.881C115.703,132.068 115.772,132.248 115.883,132.401C116.281,132.945 117.793,134.422 118.818,134.441C119.132,134.446 118.779,136.061 118.779,136.061C118.721,136.47 117.635,136.873 117.635,136.873"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M112.602,138.792C112.702,137.872 113.09,137.43 113.909,138C115.329,138.987 116.945,137.543 116.945,137.543L117.256,136.693L116.925,140.685C116.925,140.685 116.29,139.838 115.647,139.531C115.335,139.383 114.375,139.25 113.909,139.44C113.405,139.647 112.477,139.939 112.602,138.792"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M118.834,144.073C118.834,144.073 117.93,143.175 116.696,144.113C115.46,145.05 115.218,145.312 115.218,145.312C115.218,145.312 114.21,147.358 113.151,145.735C112.093,144.114 112.963,143.729 114.121,143.999C114.121,143.999 116.518,143.325 116.918,142.026C117.317,140.728 117.103,141.06 117.103,141.06L119.895,143.241L118.834,144.073Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M124.245,132.636C124.245,132.636 125.431,132.957 126.016,131.527C126.297,130.842 126.517,130.056 126.612,129.786C126.685,129.581 126.715,129.365 126.697,129.148C126.666,128.757 126.769,128.109 127.987,128.745C129.398,129.484 128.952,129.837 128.483,130.023C128.293,130.099 128.126,130.222 127.991,130.375C127.521,130.901 126.52,132.457 126.737,133.457C127.022,134.78 127.042,134.386 127.042,134.386L124.046,134.065L124.245,132.636Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M132.324,134.264C132.499,134.521 133.117,135.405 131.929,135.356C130.379,135.29 129.883,136.65 129.883,136.65L129.611,137.684L128.156,134.664C128.156,134.664 129.064,135.102 129.655,134.994C129.952,134.939 130.775,134.581 130.952,134.183C131.13,133.786 131.484,133.023 132.324,134.264"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-        <path
-            android:fillColor="#BF0F2D"
-            android:fillType="evenOdd"
-            android:pathData="M130.176,138.689C130.176,138.689 130.33,139.798 131.752,139.774C132.553,139.761 133.03,139.775 133.294,139.79C133.463,139.799 134.095,139.795 134.235,139.699C134.58,139.461 135.248,139.154 135.15,140.426C135.067,141.491 134.816,141.897 134.312,141.491C134.055,141.285 133.301,141.086 132.981,141.007C132.276,140.833 131.115,140.653 130.438,141.128C129.419,141.842 129.742,141.594 129.742,141.594L128.94,138.969L130.176,138.689Z"
-            android:strokeWidth="1"
-            android:strokeColor="#00000000" />
-    </group>
+    android:width="375dp"
+    android:height="210dp"
+    android:viewportWidth="375"
+    android:viewportHeight="210">
+  <path
+      android:pathData="M180.673,97.38L148.071,97.272C147.378,97.269 146.813,97.829 146.811,98.521L146.777,108.697C146.775,109.389 147.336,109.953 148.03,109.955L180.631,110.063C181.324,110.065 181.889,109.506 181.891,108.813L181.925,98.638C181.927,97.945 181.366,97.382 180.673,97.38"
+      android:fillColor="#B1BBC2"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M180.736,79.765L148.135,79.656C147.441,79.654 146.876,80.214 146.874,80.906L146.84,91.081C146.838,91.774 147.399,92.338 148.093,92.34L180.694,92.447C181.387,92.45 181.952,91.891 181.954,91.197L181.988,81.022C181.99,80.33 181.429,79.767 180.736,79.765"
+      android:fillColor="#94A1AB"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M148.612,92.339C148.612,92.339 148.171,92.341 148.152,92.341C147.861,92.339 148.19,92.345 147.9,92.338C147.66,92.333 146.906,92.058 146.879,91.254C146.878,90.36 146.879,84.014 146.879,80.979C146.872,79.914 147.735,79.663 148.04,79.662C148.305,79.662 147.871,79.664 148.135,79.661C148.193,79.661 148.61,79.661 148.61,79.661L148.612,92.339Z"
+      android:fillColor="#BE0F2D"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M180.789,62.154L148.189,62.046C147.494,62.043 146.929,62.603 146.927,63.295L146.894,73.471C146.892,74.163 147.452,74.727 148.146,74.729L180.747,74.837C181.441,74.839 182.005,74.28 182.007,73.587L182.041,63.412C182.043,62.719 181.483,62.155 180.789,62.154"
+      android:fillColor="#748692"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M180.835,44.548L148.234,44.44C147.54,44.438 146.976,44.998 146.973,45.69L146.939,55.865C146.937,56.558 147.498,57.122 148.192,57.124L180.793,57.231C181.486,57.234 182.051,56.674 182.053,55.981L182.087,45.806C182.089,45.114 181.529,44.55 180.835,44.548"
+      android:fillColor="#657887"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M164.908,85.852C169.747,85.852 173.67,81.936 173.67,77.107C173.67,72.276 169.747,68.36 164.908,68.36C160.069,68.36 156.146,72.276 156.146,77.107C156.146,81.936 160.069,85.852 164.908,85.852"
+      android:fillColor="#E7EAEF"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M156.493,77.189a8.481,8.466 0,1 0,16.962 0a8.481,8.466 0,1 0,-16.962 0z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M164.687,70.393C164.083,70.756 162.133,71.841 160.176,71.984C159.94,72.001 159.756,72.195 159.756,72.427V79.377C159.756,80.444 160.323,81.435 161.253,81.993C162.757,82.894 164.405,83.747 164.793,83.945C164.847,83.973 164.91,83.973 164.963,83.945C165.352,83.747 167,82.894 168.503,81.993C169.433,81.435 169.999,80.444 169.999,79.377V72.427C169.999,72.195 169.817,72.001 169.579,71.984C167.624,71.841 165.674,70.756 165.068,70.393C165.011,70.358 164.944,70.34 164.878,70.34C164.812,70.34 164.746,70.358 164.687,70.393"
+      android:fillColor="#657887"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M163.097,75.773H162.785C162.369,75.773 162.033,76.117 162.033,76.541V79.17C162.033,79.594 162.369,79.939 162.785,79.939H166.77C167.185,79.939 167.522,79.594 167.522,79.17V76.541C167.522,76.117 167.185,75.773 166.77,75.773H166.457C166.402,74.628 165.67,73.718 164.777,73.718C163.885,73.718 163.153,74.628 163.097,75.773M164.777,74.458C165.266,74.458 165.684,75.047 165.732,75.773H163.822C163.87,75.047 164.287,74.458 164.777,74.458"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M0,8.06H7.174V0.156H0V8.06Z"
+      android:fillColor="#ffffff"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path
+        android:pathData="M0.843,0.997h374.157v208.159h-374.157z"/>
+    <path
+        android:pathData="M163.533,77.48C163.533,77.743 163.686,77.972 163.912,78.095V78.878C163.912,78.98 164.001,79.064 164.112,79.064H164.471C164.581,79.064 164.671,78.98 164.671,78.878V78.095C164.897,77.972 165.05,77.743 165.05,77.48C165.05,77.088 164.71,76.771 164.291,76.771C163.873,76.771 163.533,77.088 163.533,77.48"
+        android:fillColor="#657887"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M153.097,51.016H153.647V50.396H154.086V49.922H153.647V47.787H152.826L151.486,49.904V50.396H153.097V51.016ZM152.005,49.935V49.919L153.093,48.224H153.106V49.935H152.005ZM155.703,51.071C156.399,51.071 156.909,50.604 156.909,49.953V49.948C156.909,49.342 156.472,48.895 155.851,48.895C155.412,48.895 155.09,49.118 154.962,49.414H154.951C154.951,49.378 154.951,49.344 154.953,49.311C154.976,48.7 155.193,48.203 155.712,48.203C156,48.203 156.2,48.347 156.285,48.568L156.293,48.588H156.866L156.862,48.564C156.759,48.076 156.314,47.731 155.716,47.731C154.893,47.731 154.399,48.369 154.399,49.436V49.441C154.399,50.573 154.989,51.071 155.703,51.071ZM155.05,49.962V49.96C155.05,49.599 155.331,49.34 155.701,49.34C156.07,49.34 156.34,49.602 156.34,49.969V49.973C156.34,50.322 156.054,50.599 155.694,50.599C155.334,50.599 155.05,50.32 155.05,49.962ZM158.564,51.071C159.277,51.071 159.776,50.615 159.776,49.951V49.946C159.776,49.333 159.333,48.888 158.718,48.888C158.394,48.888 158.127,49.015 157.986,49.232H157.975L158.065,48.259H159.586V47.787H157.604L157.45,49.664H157.953C157.991,49.593 158.045,49.53 158.105,49.481C158.228,49.378 158.387,49.322 158.57,49.322C158.948,49.322 159.219,49.586 159.219,49.955V49.96C159.219,50.338 158.953,50.602 158.568,50.602C158.228,50.602 157.982,50.394 157.935,50.123L157.933,50.107H157.391L157.394,50.136C157.436,50.671 157.892,51.071 158.564,51.071ZM161.366,51.071C162.105,51.071 162.621,50.687 162.621,50.136V50.132C162.621,49.722 162.322,49.405 161.894,49.318V49.304C162.261,49.206 162.503,48.937 162.503,48.593V48.588C162.503,48.094 162.033,47.731 161.366,47.731C160.702,47.731 160.23,48.094 160.23,48.588V48.593C160.23,48.937 160.471,49.206 160.838,49.304V49.318C160.411,49.405 160.113,49.722 160.113,50.132V50.136C160.113,50.687 160.628,51.071 161.366,51.071ZM161.366,49.121C161.031,49.121 160.8,48.926 160.8,48.646V48.642C160.8,48.362 161.033,48.168 161.366,48.168C161.7,48.168 161.932,48.362 161.932,48.642V48.646C161.932,48.926 161.702,49.121 161.366,49.121ZM161.366,50.631C160.981,50.631 160.706,50.409 160.706,50.101V50.096C160.706,49.785 160.977,49.561 161.366,49.561C161.756,49.561 162.026,49.785 162.026,50.096V50.101C162.026,50.409 161.753,50.631 161.366,50.631ZM163.878,51.016H164.547L165.668,47.787H165.039L164.218,50.4H164.207L163.388,47.787H162.759L163.878,51.016ZM166.005,51.016H166.582V49.807H167.206L167.841,51.016H168.499L167.795,49.72C168.17,49.584 168.403,49.232 168.403,48.799V48.794C168.403,48.17 167.982,47.787 167.293,47.787H166.005V51.016ZM166.582,49.351V48.255H167.222C167.584,48.255 167.812,48.461 167.812,48.799V48.803C167.812,49.15 167.598,49.351 167.233,49.351H166.582ZM168.991,51.016H169.595L170.975,48.268V47.787H168.729V48.259H170.407V48.271L168.991,51.016ZM171.391,51.016H173.659V50.543H172.154V50.519L172.865,49.843C173.433,49.297 173.61,49.04 173.61,48.66V48.655C173.61,48.123 173.158,47.731 172.512,47.731C171.856,47.731 171.359,48.154 171.359,48.745V48.761H171.901V48.745C171.907,48.434 172.158,48.194 172.516,48.194C172.827,48.194 173.044,48.4 173.046,48.689V48.693C173.046,48.933 172.954,49.096 172.532,49.51L171.391,50.622V51.016ZM175.265,51.071C176.052,51.071 176.527,50.689 176.527,50.087V50.085C176.527,49.582 176.234,49.309 175.562,49.17L175.213,49.098C174.824,49.018 174.647,48.883 174.647,48.655V48.653C174.647,48.396 174.882,48.219 175.26,48.217C175.623,48.217 175.871,48.385 175.909,48.667L175.914,48.693H176.466L176.464,48.655C176.43,48.103 175.97,47.731 175.265,47.731C174.569,47.731 174.07,48.116 174.068,48.684V48.687C174.068,49.168 174.381,49.463 175.017,49.595L175.363,49.667C175.779,49.754 175.947,49.884 175.947,50.125V50.127C175.947,50.405 175.692,50.586 175.285,50.586C174.88,50.586 174.596,50.414 174.553,50.136L174.549,50.11H173.996L173.999,50.143C174.037,50.722 174.524,51.071 175.265,51.071Z"
+        android:fillColor="#ffffff"/>
+    <path
+        android:pathData="M152.255,68.788H152.776V66.493H152.792L153.722,68.788H154.114L155.045,66.493H155.063V68.788H155.582V65.56H154.915L153.926,68.025H153.91L152.922,65.56H152.255V68.788ZM156.927,68.788H157.493V65.56H156.922L156.079,66.153V66.683L156.913,66.11H156.927V68.788ZM159.417,68.844C160.131,68.844 160.623,68.45 160.623,67.889V67.884C160.623,67.437 160.308,67.155 159.831,67.11V67.099C160.218,67.019 160.509,66.752 160.509,66.352V66.347C160.509,65.846 160.077,65.504 159.411,65.504C158.76,65.504 158.319,65.866 158.272,66.412L158.27,66.439H158.807L158.809,66.417C158.838,66.139 159.07,65.963 159.411,65.963C159.757,65.963 159.954,66.132 159.954,66.423V66.428C159.954,66.71 159.717,66.911 159.361,66.911H158.992V67.341H159.375C159.786,67.341 160.037,67.529 160.037,67.869V67.873C160.037,68.166 159.789,68.372 159.415,68.372C159.037,68.372 158.786,68.182 158.755,67.92L158.753,67.895H158.2L158.202,67.922C158.247,68.464 158.708,68.844 159.417,68.844ZM162.281,65.504C161.586,65.504 161.073,65.971 161.073,66.622V66.627C161.073,67.233 161.512,67.681 162.134,67.681C162.57,67.681 162.892,67.457 163.02,67.162H163.033C163.033,67.197 163.031,67.231 163.029,67.265C163.006,67.875 162.789,68.372 162.27,68.372C161.982,68.372 161.785,68.229 161.698,68.007L161.691,67.987H161.118L161.123,68.012C161.223,68.499 161.671,68.844 162.268,68.844C163.091,68.844 163.586,68.206 163.586,67.139V67.135C163.586,66.003 162.993,65.504 162.281,65.504ZM162.281,67.235C161.915,67.235 161.642,66.974 161.642,66.607V66.602C161.642,66.253 161.93,65.976 162.288,65.976C162.651,65.976 162.932,66.256 162.932,66.614V66.616C162.932,66.976 162.651,67.235 162.281,67.235ZM165.242,68.844C166.032,68.844 166.51,68.202 166.51,67.175V67.171C166.51,66.144 166.032,65.504 165.242,65.504C164.45,65.504 163.973,66.144 163.973,67.171V67.175C163.973,68.202 164.45,68.844 165.242,68.844ZM165.242,68.372C164.806,68.372 164.555,67.92 164.555,67.175V67.171C164.555,66.426 164.806,65.978 165.242,65.978C165.676,65.978 165.929,66.426 165.929,67.171V67.175C165.929,67.92 165.676,68.372 165.242,68.372ZM166.719,68.788H167.323L167.596,67.954H168.798L169.07,68.788H169.677L168.522,65.56H167.874L166.719,68.788ZM168.191,66.135H168.205L168.652,67.508H167.742L168.191,66.135ZM170.026,68.788H170.548V66.493H170.563L171.494,68.788H171.885L172.816,66.493H172.834V68.788H173.353V65.56H172.686L171.698,68.025H171.682L170.693,65.56H170.026V68.788ZM173.929,68.788H175.971V68.303H174.506V65.56H173.929V68.788Z"
+        android:fillColor="#ffffff"/>
+    <path
+        android:pathData="M151.878,86.561H152.455V85.243H153.809V84.773H152.455V83.818H153.936V83.332H151.878V86.561ZM154.354,86.561H154.932V85.52L155.249,85.142L156.254,86.561H156.956L155.665,84.757L156.858,83.332H156.198L154.947,84.847H154.932V83.332H154.354V86.561ZM158.055,86.616C158.717,86.616 159.102,86.232 159.102,85.576V83.332H158.527V85.572C158.527,85.923 158.361,86.111 158.048,86.111C157.764,86.111 157.612,85.925 157.596,85.677L157.594,85.659H157.03L157.032,85.684C157.055,86.238 157.426,86.616 158.055,86.616ZM160.838,83.276C160.142,83.276 159.63,83.744 159.63,84.395V84.399C159.63,85.006 160.068,85.453 160.69,85.453C161.126,85.453 161.448,85.229 161.576,84.934H161.589C161.589,84.97 161.587,85.003 161.585,85.037C161.563,85.648 161.346,86.144 160.827,86.144C160.538,86.144 160.341,86.001 160.254,85.78L160.247,85.76H159.674L159.679,85.784C159.78,86.272 160.227,86.616 160.824,86.616C161.648,86.616 162.142,85.979 162.142,84.912V84.907C162.142,83.775 161.549,83.276 160.838,83.276ZM160.838,85.008C160.471,85.008 160.198,84.746 160.198,84.379V84.375C160.198,84.026 160.486,83.748 160.844,83.748C161.207,83.748 161.489,84.028 161.489,84.386V84.388C161.489,84.748 161.207,85.008 160.838,85.008ZM163.766,83.276C163.07,83.276 162.558,83.744 162.558,84.395V84.399C162.558,85.006 162.997,85.453 163.618,85.453C164.055,85.453 164.377,85.229 164.504,84.934H164.518C164.518,84.97 164.516,85.003 164.513,85.037C164.491,85.648 164.274,86.144 163.755,86.144C163.466,86.144 163.269,86.001 163.182,85.78L163.176,85.76H162.603L162.607,85.784C162.708,86.272 163.155,86.616 163.753,86.616C164.576,86.616 165.07,85.979 165.07,84.912V84.907C165.07,83.775 164.478,83.276 163.766,83.276ZM163.766,85.008C163.399,85.008 163.126,84.746 163.126,84.379V84.375C163.126,84.026 163.415,83.748 163.773,83.748C164.135,83.748 164.417,84.028 164.417,84.386V84.388C164.417,84.748 164.135,85.008 163.766,85.008ZM166.679,86.616C167.392,86.616 167.891,86.16 167.891,85.496V85.491C167.891,84.878 167.448,84.433 166.833,84.433C166.509,84.433 166.242,84.56 166.101,84.777H166.09L166.18,83.804H167.701V83.332H165.719L165.565,85.209H166.068C166.106,85.138 166.16,85.075 166.22,85.026C166.343,84.923 166.502,84.867 166.685,84.867C167.063,84.867 167.334,85.131 167.334,85.5V85.505C167.334,85.883 167.068,86.147 166.683,86.147C166.343,86.147 166.097,85.938 166.05,85.668L166.048,85.652H165.506L165.509,85.681C165.551,86.216 166.008,86.616 166.679,86.616ZM169.442,86.616C170.155,86.616 170.647,86.223 170.647,85.661V85.657C170.647,85.209 170.332,84.927 169.855,84.883V84.871C170.242,84.791 170.533,84.525 170.533,84.124V84.12C170.533,83.619 170.102,83.276 169.435,83.276C168.784,83.276 168.343,83.639 168.296,84.185L168.294,84.211H168.831L168.833,84.189C168.862,83.912 169.095,83.735 169.435,83.735C169.782,83.735 169.979,83.905 169.979,84.196V84.2C169.979,84.482 169.741,84.684 169.386,84.684H169.017V85.113H169.399C169.811,85.113 170.061,85.301 170.061,85.641V85.646C170.061,85.938 169.813,86.144 169.439,86.144C169.061,86.144 168.811,85.954 168.779,85.692L168.777,85.668H168.225L168.227,85.695C168.272,86.236 168.732,86.616 169.442,86.616ZM172.318,86.616C173.107,86.616 173.586,85.974 173.586,84.948V84.943C173.586,83.916 173.107,83.276 172.318,83.276C171.526,83.276 171.049,83.916 171.049,84.943V84.948C171.049,85.974 171.526,86.616 172.318,86.616ZM172.318,86.144C171.881,86.144 171.631,85.692 171.631,84.948V84.943C171.631,84.198 171.881,83.751 172.318,83.751C172.752,83.751 173.004,84.198 173.004,84.943V84.948C173.004,85.692 172.752,86.144 172.318,86.144ZM173.985,86.561H176.254V86.088H174.748V86.064L175.46,85.388C176.028,84.842 176.205,84.585 176.205,84.205V84.2C176.205,83.668 175.753,83.276 175.106,83.276C174.451,83.276 173.954,83.699 173.954,84.29V84.305H174.495V84.29C174.502,83.979 174.753,83.739 175.111,83.739C175.422,83.739 175.639,83.945 175.641,84.234V84.238C175.641,84.478 175.549,84.641 175.126,85.055L173.985,86.167V86.561Z"
+        android:fillColor="#ffffff"/>
+    <path
+        android:pathData="M151.031,104.333H151.608V102.932H153.179V104.333H153.754V101.105H153.179V102.447H151.608V101.105H151.031V104.333ZM154.101,104.333H154.705L154.978,103.498H156.179L156.452,104.333H157.058L155.904,101.105H155.255L154.101,104.333ZM155.573,101.68H155.586L156.034,103.053H155.123L155.573,101.68ZM158.499,104.389C159.212,104.389 159.704,103.995 159.704,103.434V103.429C159.704,102.982 159.389,102.7 158.912,102.655V102.644C159.299,102.563 159.59,102.297 159.59,101.897V101.892C159.59,101.391 159.158,101.049 158.492,101.049C157.841,101.049 157.4,101.411 157.353,101.957L157.351,101.984H157.888L157.89,101.962C157.919,101.684 158.152,101.507 158.492,101.507C158.839,101.507 159.035,101.677 159.035,101.968V101.973C159.035,102.255 158.798,102.456 158.443,102.456H158.073V102.886H158.456C158.868,102.886 159.118,103.073 159.118,103.413V103.418C159.118,103.711 158.87,103.917 158.496,103.917C158.118,103.917 157.868,103.727 157.836,103.465L157.834,103.44H157.281L157.284,103.467C157.328,104.009 157.789,104.389 158.499,104.389ZM161.698,104.333H162.248V103.713H162.687V103.239H162.248V101.105H161.427L160.087,103.221V103.713H161.698V104.333ZM160.606,103.252V103.237L161.693,101.541H161.707V103.252H160.606ZM164.495,104.389C165.379,104.389 165.903,103.863 165.903,102.986V102.637H164.56V103.087H165.339L165.337,103.136C165.325,103.588 164.99,103.888 164.502,103.888C163.921,103.888 163.556,103.443 163.556,102.702V102.7C163.556,101.975 163.905,101.55 164.487,101.55C164.883,101.55 165.162,101.751 165.285,102.098L165.292,102.123H165.878L165.869,102.087C165.746,101.492 165.249,101.049 164.484,101.049C163.554,101.049 162.967,101.68 162.967,102.704V102.707C162.967,103.749 163.554,104.389 164.495,104.389ZM167.704,104.389C168.525,104.389 169.028,103.908 169.028,103.194V101.105H168.453V103.147C168.453,103.595 168.182,103.888 167.704,103.888C167.225,103.888 166.952,103.595 166.952,103.147V101.105H166.375V103.194C166.375,103.908 166.885,104.389 167.704,104.389ZM169.415,104.333H170.044L170.809,103.145H170.829L171.592,104.333H172.256L171.196,102.722V102.715L172.274,101.105H171.628L170.88,102.319H170.856L170.106,101.105H169.424L170.467,102.7V102.707L169.415,104.333ZM173.762,104.389C174.476,104.389 174.974,103.933 174.974,103.268V103.264C174.974,102.651 174.531,102.205 173.916,102.205C173.592,102.205 173.326,102.333 173.185,102.55H173.173L173.263,101.577H174.784V101.105H172.802L172.648,102.982H173.151C173.189,102.91 173.243,102.847 173.303,102.798C173.426,102.695 173.585,102.639 173.769,102.639C174.147,102.639 174.417,102.903 174.417,103.273V103.277C174.417,103.655 174.151,103.919 173.766,103.919C173.426,103.919 173.18,103.711 173.133,103.44L173.131,103.425H172.59L172.592,103.454C172.634,103.988 173.091,104.389 173.762,104.389ZM176.18,104.333H176.746V101.105H176.176L175.332,101.698V102.228L176.167,101.655H176.18V104.333Z"
+        android:fillColor="#ffffff"/>
+    <path
+        android:pathData="M148.162,57.116C148.162,57.116 147.72,57.118 147.7,57.118C147.409,57.116 147.739,57.122 147.448,57.116C147.208,57.11 146.452,56.835 146.425,56.03C146.424,55.137 146.425,48.79 146.425,45.757C146.418,44.691 147.283,44.44 147.588,44.44C147.854,44.439 147.419,44.441 147.684,44.438C147.742,44.438 148.16,44.439 148.16,44.439L148.162,57.116Z"
+        android:fillColor="#BE0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M148.175,74.734C148.175,74.734 147.733,74.736 147.714,74.736C147.422,74.734 147.752,74.74 147.461,74.734C147.221,74.728 146.465,74.453 146.438,73.648C146.438,72.755 146.438,66.409 146.438,63.375C146.431,62.309 147.297,62.058 147.602,62.057C147.867,62.057 147.432,62.059 147.697,62.056C147.756,62.056 148.173,62.057 148.173,62.057L148.175,74.734Z"
+        android:fillColor="#BE0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M198.605,76.094C198.605,77.516 197.447,78.668 196.02,78.668C194.592,78.668 193.434,77.516 193.434,76.094C193.434,74.672 194.592,73.519 196.02,73.519C197.447,73.519 198.605,74.672 198.605,76.094"
+        android:fillColor="#A6B4BC"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M216.69,76.059C216.69,77.505 215.513,78.677 214.061,78.677C212.609,78.677 211.432,77.505 211.432,76.059C211.432,74.613 212.609,73.44 214.061,73.44C215.513,73.44 216.69,74.613 216.69,76.059"
+        android:fillColor="#A6B4BC"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M343.709,124.668H255.702C251.977,124.668 248.956,121.023 248.956,116.529V25.096C248.956,20.601 251.977,16.957 255.702,16.957H343.709C347.435,16.957 350.455,20.601 350.455,25.096V116.529C350.455,121.023 347.435,124.668 343.709,124.668"
+        android:fillColor="#94A1AB"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M336.967,93.242C336.967,94.919 338.332,96.279 340.015,96.279C341.699,96.279 343.064,94.919 343.064,93.242C343.064,91.565 341.699,90.206 340.015,90.206C338.332,90.206 336.967,91.565 336.967,93.242"
+        android:fillColor="#E8F5FF"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M324.774,93.242C324.774,94.919 326.139,96.279 327.822,96.279C329.506,96.279 330.871,94.919 330.871,93.242C330.871,91.565 329.506,90.206 327.822,90.206C326.139,90.206 324.774,91.565 324.774,93.242"
+        android:fillColor="#E8F5FF"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M312.58,93.242C312.58,94.919 313.945,96.279 315.628,96.279C317.312,96.279 318.677,94.919 318.677,93.242C318.677,91.565 317.312,90.206 315.628,90.206C313.945,90.206 312.58,91.565 312.58,93.242"
+        android:fillColor="#E8F5FF"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M337.024,64.052C336.617,66.19 338.465,68.032 340.612,67.626C341.806,67.401 342.781,66.43 343.007,65.24C343.415,63.102 341.567,61.261 339.419,61.667C338.226,61.892 337.25,62.864 337.024,64.052"
+        android:fillColor="#DCE1E5"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M324.83,64.052C324.423,66.19 326.271,68.032 328.418,67.626C329.612,67.401 330.587,66.43 330.813,65.24C331.221,63.102 329.373,61.261 327.225,61.667C326.032,61.892 325.056,62.864 324.83,64.052"
+        android:fillColor="#DCE1E5"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M312.636,64.052C312.229,66.19 314.077,68.032 316.224,67.626C317.418,67.401 318.393,66.43 318.619,65.24C319.027,63.102 317.178,61.261 315.031,61.667C313.838,61.892 312.862,62.864 312.636,64.052"
+        android:fillColor="#DCE1E5"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M259.607,42.123H303.06C304.108,42.123 304.959,41.277 304.959,40.232V31.871C304.959,30.826 304.108,29.978 303.06,29.978H259.607C258.558,29.978 257.708,30.826 257.708,31.871V40.232C257.708,41.277 258.558,42.123 259.607,42.123"
+        android:fillColor="#657887"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M337.024,35.457C336.617,37.595 338.465,39.437 340.612,39.03C341.806,38.805 342.781,37.833 343.007,36.645C343.415,34.507 341.567,32.666 339.419,33.071C338.226,33.296 337.25,34.269 337.024,35.457"
+        android:fillColor="#DCE1E5"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M324.83,35.457C324.423,37.595 326.271,39.437 328.418,39.03C329.612,38.805 330.587,37.833 330.813,36.645C331.221,34.507 329.373,32.666 327.225,33.071C326.032,33.296 325.056,34.269 324.83,35.457"
+        android:fillColor="#DCE1E5"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M312.636,35.457C312.229,37.595 314.077,39.437 316.224,39.03C317.418,38.805 318.393,37.833 318.619,36.645C319.027,34.507 317.178,32.666 315.031,33.071C313.838,33.296 312.862,34.269 312.636,35.457"
+        android:fillColor="#DCE1E5"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M259.998,70.773H303.451C304.5,70.773 305.35,69.926 305.35,68.882V60.521C305.35,59.475 304.5,58.629 303.451,58.629H259.998C258.949,58.629 258.099,59.475 258.099,60.521V68.882C258.099,69.926 258.949,70.773 259.998,70.773"
+        android:fillColor="#657887"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M259.998,98.501H303.451C304.5,98.501 305.35,97.655 305.35,96.61V88.249C305.35,87.204 304.5,86.356 303.451,86.356H259.998C258.949,86.356 258.099,87.204 258.099,88.249V96.61C258.099,97.655 258.949,98.501 259.998,98.501"
+        android:fillColor="#657887"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M213.172,135.853C215.45,110.627 248.618,113.066 251.131,114.067C258.142,98.136 281.863,96.286 290.147,102.179C294.289,94.518 299.981,90.725 305.35,88.248C322.928,80.138 354.055,76.662 372.118,112.039C400.364,111.463 402.702,134.716 403.189,135.853H310.176H213.172Z"
+        android:fillColor="#D8ECF9"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M235.566,76.028C235.566,77.474 234.389,78.646 232.937,78.646C231.485,78.646 230.308,77.474 230.308,76.028C230.308,74.582 231.485,73.409 232.937,73.409C234.389,73.409 235.566,74.582 235.566,76.028"
+        android:fillColor="#A6B4BC"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M150.438,87.893H112.496C107.515,87.893 103.475,91.893 103.475,96.823V187.826C103.475,192.756 107.515,196.756 112.496,196.756H150.438C155.421,196.756 159.459,192.756 159.459,187.826V96.823C159.459,91.893 155.421,87.893 150.438,87.893"
+        android:fillColor="#ffffff"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M150.897,88.347C154.378,88.347 157.21,91.153 157.21,94.604V190.045C157.21,193.496 154.378,196.303 150.897,196.303H111.148C107.666,196.303 104.834,193.496 104.834,190.045V94.604C104.834,91.153 107.666,88.347 111.148,88.347H150.897ZM150.897,85.238H111.148C105.929,85.238 101.697,89.43 101.697,94.604V190.045C101.697,195.217 105.929,199.411 111.148,199.411H150.897C156.117,199.411 160.347,195.217 160.347,190.045V94.604C160.347,89.43 156.117,85.238 150.897,85.238V85.238Z"
+        android:fillColor="#4A4A4A"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M152.22,156.344L110.006,156.56C109.387,156.563 108.882,156.065 108.879,155.448L108.708,122.259C108.705,121.643 109.205,121.14 109.824,121.136L152.038,120.922C152.658,120.919 153.163,121.417 153.166,122.033L153.336,155.222C153.339,155.838 152.84,156.341 152.22,156.344"
+        android:fillColor="#EFEFEF"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M139.997,142.169C137.969,146.012 133.197,147.49 129.338,145.469C125.48,143.45 123.997,138.696 126.025,134.854C128.053,131.011 132.825,129.533 136.683,131.553C140.541,133.574 142.025,138.327 139.997,142.169"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M141.225,145.574C141.043,145.851 140.427,146.822 139.985,145.636C139.409,144.085 138.188,144.424 138.188,144.424L137.057,144.582L139.433,141.911C139.433,141.911 139.376,142.982 139.727,143.518C139.904,143.788 140.274,144.184 140.738,144.194C141.203,144.204 142.102,144.238 141.225,145.574"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M128.264,148.837C127.952,148.721 126.865,148.338 127.93,147.647C129.32,146.743 128.907,145.258 128.907,145.258L128.501,144.194L131.643,145.912C131.643,145.912 130.581,146.093 130.134,146.553C129.909,146.784 129.415,147.605 129.508,148.059C129.6,148.512 129.766,149.393 128.264,148.837"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M136.277,144.86C136.277,144.86 135.644,145.188 135.842,146.605C135.96,147.45 136.534,148.746 136.616,149.015C136.67,149.189 136.775,149.239 136.923,149.345C137.288,149.604 137.841,150.16 136.528,150.526C135.428,150.833 134.928,150.73 135.151,150.077C135.264,149.744 135.318,149.497 135.279,149.148C135.195,148.379 134.65,146.516 133.924,146.013C132.833,145.256 133.2,145.488 133.2,145.488L135.543,143.726L136.277,144.86Z"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M130.709,128.317C131.138,128.256 131.618,128.11 131.413,128.853C131.341,129.112 131.329,129.362 131.35,129.591C131.406,130.192 131.609,130.52 132.079,130.9L132.44,131.193L130.033,131.406C130.033,131.406 130.461,131.036 130.344,130.421C130.295,130.164 130.256,129.596 129.965,129.384C129.699,129.19 129.145,128.539 130.709,128.317"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M126.93,135.73C126.741,135.597 126.645,135.365 126.692,135.139C126.772,134.744 126.943,134.14 126.158,133.442C125.259,132.643 123.969,132.035 123.862,132.023C123.043,131.932 122.517,131.898 123.417,130.634C124.268,129.438 124.764,129.486 124.846,130.414C124.864,130.614 124.937,130.805 125.057,130.967C125.483,131.547 127.099,133.12 128.195,133.139C128.531,133.145 128.154,134.866 128.154,134.866C128.091,135.301 126.93,135.73 126.93,135.73"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M121.548,137.773C121.655,136.793 122.069,136.323 122.946,136.931C124.464,137.982 126.192,136.443 126.192,136.443L126.524,135.538L126.171,139.79C126.171,139.79 125.492,138.888 124.804,138.562C124.47,138.404 123.444,138.262 122.946,138.464C122.407,138.684 121.414,138.997 121.548,137.773"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M128.213,143.399C128.213,143.399 127.246,142.443 125.925,143.441C124.605,144.439 124.345,144.717 124.345,144.717C124.345,144.717 123.268,146.897 122.136,145.169C121.004,143.442 121.935,143.031 123.172,143.318C123.172,143.318 125.736,142.601 126.163,141.219C126.59,139.835 126.361,140.189 126.361,140.189L129.346,142.512L128.213,143.399Z"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M133.998,131.218C133.998,131.218 135.265,131.56 135.893,130.036C136.192,129.308 136.428,128.471 136.53,128.184C136.607,127.965 136.639,127.733 136.62,127.502C136.587,127.086 136.698,126.396 137.999,127.074C139.508,127.86 139.032,128.236 138.53,128.436C138.327,128.516 138.149,128.647 138.003,128.81C137.5,129.37 136.431,131.026 136.662,132.093C136.967,133.501 136.989,133.081 136.989,133.081L133.785,132.739L133.998,131.218Z"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M142.637,132.952C142.823,133.226 143.485,134.168 142.215,134.114C140.556,134.045 140.027,135.493 140.027,135.493L139.736,136.594L138.18,133.378C138.18,133.378 139.15,133.845 139.782,133.73C140.1,133.671 140.981,133.288 141.171,132.866C141.36,132.443 141.739,131.63 142.637,132.952"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M140.341,137.664C140.341,137.664 140.505,138.845 142.026,138.82C142.883,138.806 143.392,138.821 143.674,138.837C143.856,138.847 144.531,138.842 144.681,138.739C145.05,138.486 145.765,138.159 145.659,139.514C145.571,140.649 145.302,141.081 144.763,140.648C144.488,140.428 143.682,140.217 143.34,140.133C142.587,139.947 141.344,139.756 140.621,140.261C139.531,141.022 139.876,140.758 139.876,140.758L139.019,137.962L140.341,137.664Z"
+        android:fillColor="#BF0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M112.533,156.551C112.533,156.551 112.365,156.556 112.311,156.556C111.495,156.552 110.679,156.567 109.863,156.549C109.192,156.533 108.741,156.04 108.741,155.356C108.739,152.856 108.741,130.873 108.741,122.381C108.741,121.521 109.184,121.072 110.039,121.072C110.782,121.071 111.524,121.076 112.266,121.069C112.428,121.067 112.528,121.069 112.528,121.069L112.533,156.551Z"
+        android:fillColor="#BE0F2D"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M45.705,14.819L46.403,23.34C46.153,20.24 45.824,16.175 45.705,14.819"
+        android:fillColor="#E1EEFF"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M43.922,33.52L43.045,44.62L53.313,45.449L55.099,33.648L43.922,33.52Z"
+        android:fillColor="#F6B893"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M57.202,24.365C57.408,42.459 39.958,41.898 39.313,24.533C39.377,6.799 56.801,6.635 57.202,24.365"
+        android:fillColor="#F6B893"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M32.81,94.813C25.125,123.48 31.4,164.946 33.103,198.176L38.344,198.429C38.344,198.429 42.217,144.497 43.688,132.243C44.135,128.521 45.529,120.568 46.229,117.113C46.283,116.849 46.861,115.714 46.907,117.052C47.197,125.524 50.872,134.896 51.573,144.222C53.211,166.014 52.531,181.153 53.105,199.128C53.105,199.128 59.127,202.807 59.138,202.767C60.489,197.775 64.554,156.545 64.652,150.357C64.673,149.087 66.753,122.673 60.426,95.675L32.81,94.813Z"
+        android:fillColor="#8C8C98"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M62.519,45.521C58.364,42.181 58.2,43.256 53.771,42.309C50.445,46.701 44.749,44.148 43.11,42.379C42.915,42.169 42.381,42.418 42.294,42.366C24.216,43.654 33.528,82.4 32.266,93.948C32.205,94.512 32.289,95.584 32.803,95.532C32.803,95.532 49.442,97.873 56.226,96.522C57.198,96.328 60.509,95.981 60.578,95.275C61.692,83.794 67.651,51.47 62.519,45.521"
+        android:fillColor="#C66A61"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M35.367,44.697C35.379,44.704 35.392,44.707 35.405,44.712C35.784,44.867 36.991,46.395 39.437,45.474C41.438,44.72 42.593,42.98 43.187,42.417C44.437,41.233 45.034,38.875 44.583,36.764C44.34,35.622 43.891,35.152 43.645,34.863C38.798,29.185 40.371,23.31 40.959,21.218C41.007,21.046 41.17,19.55 41.263,19.702C42.169,21.171 46.73,21.839 56.485,25.462C56.577,25.497 56.34,28.646 56.322,28.742C56.202,29.403 55.673,31.876 54.234,33.713C54.111,33.868 52.85,35.034 52.827,36.833C52.804,38.596 52.825,40.384 54.065,43.072C55.58,46.358 59.342,47.107 62.176,45.939C64.216,45.097 65.055,43.088 65.177,41.073C65.184,40.956 65.09,40.858 64.971,40.857C63.934,40.854 59.549,40.508 60.685,34.802C61.646,29.946 62.734,19.354 57.862,13.295C57.793,13.212 57.724,13.128 57.655,13.044C57.607,12.981 57.551,12.918 57.495,12.859C57.396,12.747 57.293,12.633 57.189,12.525C57.091,12.424 56.992,12.323 56.892,12.224C55.371,10.724 53.381,9.605 50.79,9.077C50.784,9.076 50.777,9.075 50.77,9.074C50.412,9.031 40.944,7.958 39.28,13.547C39.265,13.595 39.233,13.636 39.19,13.663C38.77,13.918 36.523,15.494 36.266,20.108C35.988,25.199 36.865,27.052 37.082,30.953C37.339,35.625 37.32,39.845 31.424,39.999C31.285,40.003 31.187,40.135 31.231,40.268C31.478,41.003 32.414,43.119 35.367,44.697"
+        android:fillColor="#4A4A4A"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M38.542,193.404L33.044,194.645C32.74,196.767 28.754,206.085 33.559,208.269C35.447,209.359 36.909,210.356 38.964,208.356C43.377,205.795 38.626,195.183 38.542,193.404"
+        android:fillColor="#4A4A4A"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M53.14,195.822C53.286,196.949 52.062,204.961 53.229,205.707C53.61,206.151 54.057,206.333 54.265,206.404C60.337,206.511 67.259,206.634 73.331,206.742C76.762,203.103 59.815,201.788 60.196,195.764C57.844,195.783 55.492,195.802 53.14,195.822"
+        android:fillColor="#4A4A4A"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M48.686,45.532C47.626,45.089 47.088,44.864 46.602,44.742C45.612,44.493 45.118,44.368 44.655,44.545C44.146,44.738 43.728,45.138 42.987,45.137C42.769,45.137 42.589,45.102 42.431,44.939C42.261,44.764 42.234,44.558 42.014,43.755C41.756,42.803 39.903,39.5 39.653,38.818C39.201,37.592 38.543,37.535 38.541,36.843C38.54,36.575 38.638,36.41 39.514,35.263C40.242,34.311 40.669,33.777 40.903,33.486C41.902,32.242 42.02,32.102 42.292,31.907C42.584,31.699 42.985,31.413 43.543,31.314C44.023,31.229 44.239,31.351 44.655,31.117C44.72,31.081 44.706,31.083 45.35,30.524C45.889,30.057 46.07,29.907 46.322,29.932C46.438,29.944 51.389,31.181 52.563,31.181C52.971,31.181 55.178,31.988 55.633,32.104C55.773,32.14 56.638,32.355 57.579,32.697C57.836,32.79 57.397,34.135 57.093,34.506C56.952,34.679 55.41,37.026 55.216,37.634C54.829,38.852 54.8,39.968 54.799,40.397C54.799,41.132 54.883,41.654 54.938,43.36C54.95,43.67 54.959,44.1 54.799,44.545C54.722,44.76 54.674,44.785 54.383,45.334C54.06,45.943 54.071,46.001 53.966,46.124C53.666,46.478 53.255,46.38 52.854,46.322C51.585,46.136 51.675,46.527 50.631,46.322C50.239,46.245 50.286,46.202 48.686,45.532"
+        android:fillColor="#EFEFEF"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M29.144,70.633C29.257,69.956 29.467,69.304 29.766,68.699L32.267,63.635C32.277,63.614 32.289,63.593 32.3,63.572C37.049,55.039 37.469,54.326 37.901,53.574C37.95,53.49 39.998,49.879 40.029,49.786C40.186,49.316 40.699,47.745 41.068,46.205C41.077,46.168 41.084,46.13 41.09,46.092C41.245,45.155 41.399,44.219 41.554,43.281C41.564,43.219 41.571,43.156 41.573,43.092L43.171,37.027C43.188,36.612 44.218,36.237 44.345,35.857C44.345,35.857 45.103,35.827 45.173,36.285C45.691,39.67 46.687,39.004 46.454,40.776C46.245,42.368 45.914,45.236 45.013,48.797C44.713,49.978 44.238,51.803 43.595,54.044C42.51,57.829 41.593,60.945 40.119,64.487C39.164,66.784 37.721,69.852 35.58,73.292C35.545,73.347 35.507,73.401 35.467,73.45C33.56,75.767 32.295,76.183 31.463,76.058C31.393,76.047 31.325,76.026 31.259,76L29.663,75.377C29.262,75.22 29.084,74.456 29.018,73.981C28.875,72.96 28.964,71.713 29.144,70.633"
+        android:fillColor="#F6B893"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M43.785,47.035L45.361,46.754C47.043,43.382 48.094,38.088 46.618,35.078C44.992,33.008 42.287,36.395 41.881,38.47C41.095,41.749 41.639,44.965 42.032,47.368"
+        android:fillColor="#F6B893"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M65.773,71.33C65.649,70.686 65.428,70.067 65.118,69.496L62.524,64.715C62.513,64.695 62.502,64.675 62.49,64.655C57.581,56.61 57.147,55.94 56.7,55.231C56.65,55.152 54.534,51.749 54.502,51.66C54.336,51.215 53.796,49.725 53.402,48.26C53.393,48.225 53.384,48.189 53.377,48.153C53.209,47.261 53.039,46.369 52.87,45.476C52.858,45.417 52.851,45.357 52.848,45.296C53.044,43.486 53.044,41.265 52.479,38.83C52.363,38.331 52.231,37.855 52.087,37.402C52.042,37.112 51.943,36.705 51.713,36.271C51.604,36.064 50.731,34.467 49.543,34.595C48.798,34.676 48.315,35.387 48.208,35.565C48.005,35.906 47.864,36.313 47.8,36.754C47.329,40.004 47.635,41.512 47.895,43.201C48.129,44.719 48.504,47.454 49.464,50.839C49.783,51.962 50.288,53.695 50.968,55.824C52.117,59.415 53.086,62.374 54.623,65.725C55.62,67.898 57.118,70.797 59.326,74.035C59.36,74.086 59.4,74.137 59.441,74.182C61.397,76.352 62.677,76.718 63.514,76.578C63.585,76.566 63.652,76.543 63.719,76.517L65.319,75.881C65.72,75.721 66.015,75.346 66.075,74.891C66.204,73.91 65.97,72.359 65.773,71.33"
+        android:fillColor="#F6B893"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M30.676,75.86C30.382,74.484 30.191,73.053 30.257,71.666C30.302,70.717 30.441,69.194 30.985,67.355C31.519,65.212 32.02,63.483 32.063,63.373C32.064,63.37 29.895,64.704 29.035,66.352C26.927,70.395 28.637,74.845 28.966,74.808C28.99,74.805 29.015,74.804 29.04,74.804C29.257,74.809 29.332,74.821 29.396,74.882C29.523,75.004 29.459,75.178 29.552,75.392C29.602,75.505 29.704,75.652 29.947,75.778C29.989,75.8 30.698,75.966 30.676,75.86"
+        android:fillColor="#C66A61"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M65.169,76.056C65.25,74.651 65.313,72.506 65.036,71.146C64.845,70.215 64.476,68.73 63.657,66.995C62.802,64.959 62.042,63.326 61.982,63.224C61.981,63.221 64.329,64.21 65.43,65.708C68.132,69.384 67.122,74.042 66.792,74.055C66.767,74.056 66.742,74.058 66.718,74.063C66.504,74.1 66.432,74.123 66.378,74.193C66.271,74.333 66.361,74.495 66.301,74.721C66.27,74.84 66.191,75.001 65.97,75.162C65.933,75.19 65.163,76.163 65.169,76.056"
+        android:fillColor="#C66A61"
+        android:fillType="evenOdd"/>
+  </group>
+  <group>
+    <clip-path
+        android:pathData="M288.196,3.985h72.836v48.803h-72.836z"/>
+    <path
+        android:pathData="M360.968,52.755V4.02H288.036V52.755H360.968Z"
+        android:fillColor="#004996"/>
+    <path
+        android:pathData="M360.968,52.755V4.02H288.036V52.755H360.968Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#00000000"
+        android:strokeColor="#000000"/>
+    <path
+        android:pathData="M324.5,10.787L324.196,11.701H323.217L324.027,12.276L323.723,13.19L324.5,12.615L325.31,13.19L325.006,12.276L325.783,11.701H324.804L324.5,10.787Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M316.396,12.987L316.092,13.901H315.113L315.924,14.476L315.62,15.39L316.396,14.815L317.173,15.39L316.869,14.476L317.679,13.901H316.7L316.396,12.987Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M310.488,18.944L310.184,19.857H309.205L310.015,20.433L309.711,21.38L310.488,20.805L311.264,21.38L310.96,20.433L311.771,19.857H310.792L310.488,18.944Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M308.259,27.066L307.955,27.98H306.976L307.753,28.555L307.449,29.469L308.259,28.894L309.036,29.469L308.732,28.555L309.542,27.98H308.563L308.259,27.066Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M310.454,35.189L310.15,36.136H309.171L309.947,36.712L309.644,37.625L310.454,37.05L311.231,37.625L310.927,36.678L311.737,36.136H310.758L310.454,35.189Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M316.396,41.145L316.092,42.093H315.113L315.89,42.668L315.586,43.582L316.396,43.007L317.173,43.582L316.869,42.668L317.646,42.093H316.7L316.396,41.145Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M324.5,43.311L324.196,44.259H323.217L324.027,44.834L323.723,45.748L324.5,45.173L325.31,45.748L325.006,44.8L325.783,44.259H324.804L324.5,43.311Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M332.638,12.987L332.908,13.901H333.887L333.11,14.476L333.414,15.39L332.638,14.815L331.827,15.39L332.131,14.476L331.354,13.901H332.334L332.638,12.987Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M338.546,18.944L338.816,19.857H339.796L339.019,20.433L339.323,21.38L338.546,20.805L337.736,21.38L338.04,20.433L337.263,19.857H338.242L338.546,18.944Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M340.775,27.066L341.079,27.98H342.058L341.247,28.555L341.551,29.469L340.775,28.894L339.964,29.469L340.268,28.555L339.492,27.98H340.471L340.775,27.066Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M338.58,35.189L338.884,36.136H339.863L339.053,36.712L339.357,37.625L338.58,37.05L337.77,37.625L338.073,36.678L337.297,36.136H338.276L338.58,35.189Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+    <path
+        android:pathData="M332.638,41.145L332.941,42.093H333.921L333.11,42.668L333.414,43.582L332.638,43.007L331.861,43.582L332.131,42.668L331.354,42.093H332.334L332.638,41.145Z"
+        android:strokeWidth="0.25"
+        android:fillColor="#FFD500"
+        android:strokeColor="#FFD500"/>
+  </group>
 </vector>
diff --git a/Corona-Warn-App/src/main/res/drawable/row.xml b/Corona-Warn-App/src/main/res/drawable/row.xml
deleted file mode 100644
index eb59fbbc1ffb2a3bb322f88d19920e37a9277ba1..0000000000000000000000000000000000000000
--- a/Corona-Warn-App/src/main/res/drawable/row.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item>
-        <shape android:shape="rectangle">
-            <solid android:color="@color/row" />
-        </shape>
-    </item>
-</selector>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/analytics_ppa_userinfo_input_adapter_item.xml b/Corona-Warn-App/src/main/res/layout/analytics_ppa_userinfo_input_adapter_item.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6c52c33301037a668d673cd29cb1598998a33a2f
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/analytics_ppa_userinfo_input_adapter_item.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="?selectableItemBackground">
+
+    <RadioButton
+        android:id="@+id/radiobutton"
+        style="@style/Widget.AppCompat.CompoundButton.RadioButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="8dp"
+        android:layout_marginBottom="8dp"
+        android:buttonTint="@color/radiobutton_accented"
+        android:buttonTintMode="src_atop"
+        android:clickable="false"
+        android:focusable="false" />
+
+    <TextView
+        android:id="@+id/label"
+        style="@style/body1"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_marginStart="64dp"
+        android:layout_marginEnd="16dp"
+        tools:text="Keine Angabe" />
+
+</FrameLayout>
diff --git a/Corona-Warn-App/src/main/res/layout/analytics_ppa_userinfo_input_fragment.xml b/Corona-Warn-App/src/main/res/layout/analytics_ppa_userinfo_input_fragment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a729a715dec1edf4577bd2c4a2331ae868b0b139
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/analytics_ppa_userinfo_input_fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <androidx.appcompat.widget.Toolbar
+        android:id="@+id/toolbar"
+        style="@style/CWAToolbar.Close"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/colorBackground"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:title="Ihr Alter/Bundesland/Kreis " />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/input_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        tools:listitem="@layout/analytics_ppa_userinfo_input_adapter_item" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_overview_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_overview_fragment.xml
index e4daa3c93f1de28c48b6383433b6bad2783457bf..f3fcf6ff7ae6c678d7ab130f34a86075b8638b16 100644
--- a/Corona-Warn-App/src/main/res/layout/contact_diary_overview_fragment.xml
+++ b/Corona-Warn-App/src/main/res/layout/contact_diary_overview_fragment.xml
@@ -42,11 +42,10 @@
             app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="@id/guideline_end"
+            app:layout_constraintHorizontal_bias="0.0"
             app:layout_constraintStart_toStartOf="@+id/guideline_start"
             app:layout_constraintTop_toBottomOf="@+id/contact_diary_overview_subtitle"
-            app:layout_constraintVertical_bias="0.0"
             tools:listitem="@layout/contact_diary_overview_list_item" />
-
         <androidx.constraintlayout.widget.Guideline
             android:id="@+id/guideline_start"
             android:layout_width="wrap_content"
diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_overview_list_item.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_overview_list_item.xml
index 29ad99976dd13a46d9511d1faf77924cf0d9798a..ee6ea381df3b131608f7b6ad74af1fd75c765b77 100644
--- a/Corona-Warn-App/src/main/res/layout/contact_diary_overview_list_item.xml
+++ b/Corona-Warn-App/src/main/res/layout/contact_diary_overview_list_item.xml
@@ -17,7 +17,7 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/spacing_small"
-            android:focusable="true"
+            android:focusable="false"
             app:layout_constraintBottom_toTopOf="@id/contact_diary_overview_element_guideline"
             app:layout_constraintEnd_toStartOf="@+id/contact_diary_overview_element_right_arrow"
             app:layout_constraintStart_toStartOf="parent"
@@ -48,6 +48,7 @@
             android:id="@+id/contact_diary_overview_nested_list_item_risk"
             layout="@layout/contact_diary_overview_nested_list_item_risk"
             android:layout_width="match_parent"
+            android:focusable="false"
             android:layout_height="wrap_content"
             app:layout_constraintTop_toBottomOf="@id/contact_diary_overview_element_guideline"
             app:layout_constraintStart_toStartOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_interoperability_configuration.xml b/Corona-Warn-App/src/main/res/layout/fragment_interoperability_configuration.xml
index 0fec8d14b854f83f60a54453e3b5cae672911f17..1aeb9f6e56af982cfbb97f9baea1e5918d6bcef2 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_interoperability_configuration.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_interoperability_configuration.xml
@@ -1,8 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <data>
+
+        <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" />
+
         <variable
             name="countryData"
             type="java.util.List&lt;de.rki.coronawarnapp.ui.Country&gt;" />
@@ -17,41 +21,117 @@
             layout="@layout/include_header"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:title="@{@string/interoperability_title}"
+            app:title="@{@string/interoperability_title}"
             app:icon="@{@drawable/ic_back}"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/interoperability_configuration_country_list_container"
+        <ScrollView
+            android:id="@+id/interoperability_layout"
             android:layout_width="match_parent"
             android:layout_height="0dp"
-            android:layout_marginBottom="10dp"
-            android:paddingStart="@dimen/spacing_normal"
-            android:paddingEnd="@dimen/spacing_normal"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/interoperability_configuration_header">
+            app:layout_constraintTop_toBottomOf="@+id/interoperability_configuration_header"
+            android:contentDescription="@string/interoperability_configuration_title">
 
-            <include
-                android:id="@+id/interoperability_configuration_country_list"
-                layout="@layout/include_interoperability"
+            <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                app:title="@{@string/interoperability_configuration_title}"
-                app:firstSection="@{@string/interoperability_configuration_first_section}"
-                app:secondSection="@{@string/interoperability_configuration_second_section}"
-                app:countryListTitle="@{@string/interoperability_configuration_list_title}"
-                app:fourthSection="@{@string/interoperability_configuration_information}"
-                app:countryData="@{countryData}"
-                app:isOnboarding="@{false}"
-                app:isRiskdetection="@{true}"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
-        </androidx.constraintlayout.widget.ConstraintLayout>
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="@dimen/spacing_normal"
+                android:paddingBottom="@dimen/spacing_normal">
+
+                <ImageView
+                    android:id="@+id/interoperability_illustration"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:contentDescription="@{@string/interoperability_eu_illustration_description}"
+                    android:src="@drawable/ic_illustration_interoperability"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/title"
+                    style="@style/headline4"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_small"
+                    android:accessibilityHeading="true"
+                    android:text="@string/interoperability_configuration_title"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/interoperability_illustration" />
+
+                <TextView
+                    android:id="@+id/label_interoperability_subtitle"
+                    style="@style/subtitle"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_small"
+                    android:text="@string/interoperability_configuration_first_section"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/title" />
+
+                <TextView
+                    android:id="@+id/label_interoperability_subtitle2"
+                    style="@style/subtitle"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:layout_marginBottom="@dimen/spacing_small"
+                    android:text="@string/interoperability_configuration_second_section"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/label_interoperability_subtitle" />
+
+                <include
+                    android:id="@+id/no_countries_riskdetails_infoview"
+                    layout="@layout/include_interop_riskdetails_no_countries_infoview"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:visibility="@{FormatterHelper.formatVisibility(countryData.empty)}"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/label_interoperability_subtitle2"
+                    tools:visibility="gone" />
+
+                <include
+                    android:id="@+id/country_list_overview"
+                    layout="@layout/include_interop_list_participating_countries_overview"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:visibility="@{FormatterHelper.formatVisibilityInverted(countryData.empty)}"
+                    app:countryData="@{countryData}"
+                    app:countryListTitle="@{@string/interoperability_configuration_list_title}"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/label_interoperability_subtitle2" />
+
+                <androidx.constraintlayout.widget.Barrier
+                    android:id="@+id/country_list_barrier"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    app:barrierAllowsGoneWidgets="false"
+                    app:barrierDirection="bottom"
+                    app:constraint_referenced_ids="country_list_overview, no_countries_riskdetails_infoview" />
+
+                <TextView
+                    android:id="@+id/label_interoperability_subtitle4"
+                    style="@style/subtitle"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:text="@string/interoperability_configuration_information"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/country_list_barrier" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+        </ScrollView>
     </androidx.constraintlayout.widget.ConstraintLayout>
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding.xml
index 23d33f19088d631a4552c3d70abd0598848c2ee8..b9efe5256f307b04c36963dbd0dcab79d36059e5 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_onboarding.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding.xml
@@ -11,24 +11,109 @@
         android:fillViewport="true"
         tools:context="de.rki.coronawarnapp.ui.onboarding.OnboardingFragment">
 
-        <include
-            android:id="@+id/onboarding_include"
-            layout="@layout/include_onboarding"
+        <ScrollView
             android:layout_width="0dp"
             android:layout_height="0dp"
-            android:layout_marginBottom="@dimen/spacing_small"
-            android:focusable="false"
-            app:body="@{@string/onboarding_body}"
-            app:bodyEmphasized="@{@string/onboarding_body_emphasized}"
-            app:headline="@{@string/onboarding_headline}"
-            app:easyLanguageText="@{@string/onboarding_tracing_easy_language_explanation}"
-            app:illustration="@{@drawable/ic_illustration_together}"
-            app:illustrationDescription="@{@string/onboarding_illustration_description}"
-            app:layout_constraintBottom_toTopOf="@+id/onboarding_button_next"
+            android:layout_marginBottom="@dimen/spacing_normal"
+            app:layout_constraintBottom_toTopOf="@id/onboarding_button_next"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:subtitle="@{@string/onboarding_subtitle}" />
+            app:layout_constraintTop_toTopOf="parent">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingBottom="@dimen/spacing_medium">
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/onboarding_illustration"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:contentDescription="@string/onboarding_illustration_description"
+                    android:focusable="true"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:srcCompat="@drawable/ic_illustration_together" />
+
+                <TextView
+                    android:id="@+id/onboarding_headline"
+                    style="@style/headline4"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/spacing_normal"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:focusable="true"
+                    android:text="@string/onboarding_headline"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_illustration"
+                    tools:text="@string/onboarding_headline" />
+
+                <TextView
+                    android:id="@+id/onboarding_subtitle"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/spacing_normal"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:focusable="true"
+                    android:text="@string/onboarding_subtitle"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_headline"
+                    tools:text="@string/onboarding_subtitle" />
+
+                <TextView
+                    android:id="@+id/onboarding_body"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/spacing_normal"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:autoLink="web|email"
+                    android:focusable="true"
+                    android:text="@string/onboarding_body"
+                    android:textColorLink="@color/colorTextTint"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_subtitle"
+                    tools:text="@string/onboarding_body" />
+
+                <TextView
+                    android:id="@+id/onboarding_body_emphasized"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/spacing_normal"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:focusable="true"
+                    android:text="@string/onboarding_body_emphasized"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/onboarding_body"
+                    tools:text="@string/onboarding_body_emphasized" />
+
+                <TextView
+                    android:id="@+id/onboarding_easy_language"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/spacing_normal"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:clickable="true"
+                    android:focusable="true"
+                    android:linksClickable="true"
+                    android:text="@string/onboarding_tracing_easy_language_explanation"
+                    android:textColorLink="@color/colorTextTint"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/onboarding_body_emphasized"
+                    tools:text="@string/onboarding_tracing_easy_language_explanation" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </ScrollView>
 
         <Button
             android:id="@+id/onboarding_button_next"
@@ -36,37 +121,11 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:text="@string/onboarding_button_start"
-            app:layout_constraintBottom_toBottomOf="@id/guideline_bottom"
-            app:layout_constraintEnd_toEndOf="@id/guideline_end"
-            app:layout_constraintStart_toStartOf="@id/guideline_start" />
-
-        <androidx.constraintlayout.widget.Guideline
-            android:id="@+id/guideline_top"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            app:layout_constraintGuide_begin="@dimen/guideline_top_onboarding" />
-
-        <androidx.constraintlayout.widget.Guideline
-            android:id="@+id/guideline_bottom"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            app:layout_constraintGuide_end="@dimen/spacing_small" />
-
-        <androidx.constraintlayout.widget.Guideline
-            android:id="@+id/guideline_start"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            app:layout_constraintGuide_begin="@dimen/guideline_start" />
-
-        <androidx.constraintlayout.widget.Guideline
-            android:id="@+id/guideline_end"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            app:layout_constraintGuide_end="@dimen/guideline_end" />
+            android:layout_marginHorizontal="@dimen/spacing_normal"
+            android:layout_marginBottom="@dimen/spacing_small"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent" />
 
     </androidx.constraintlayout.widget.ConstraintLayout>
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_delta_ppa.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_delta_ppa.xml
new file mode 100644
index 0000000000000000000000000000000000000000..464d8c50f8ee5babb217b25ac47cb0f9f474a57e
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_delta_ppa.xml
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/onboarding_ppa_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:contentDescription=""
+        android:fillViewport="true"
+        android:focusable="true">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/onboarding_header"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <include
+                android:id="@+id/onboarding_button_back"
+                layout="@layout/include_button_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="16dp"
+                android:layout_marginTop="8dp"
+                android:focusable="true"
+                app:icon="@{@drawable/ic_close}"
+                app:iconDescription="@{@string/accessibility_back}"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/statistics_explanation_header_title"
+                style="@style/headline6"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="16dp"
+                android:layout_marginTop="6dp"
+                android:accessibilityHeading="true"
+                android:focusable="true"
+                android:text="@string/onboarding_ppa_headline"
+                app:layout_constraintStart_toEndOf="@+id/onboarding_button_back"
+                app:layout_constraintTop_toTopOf="@+id/onboarding_button_back"
+                tools:text="@string/onboarding_ppa_headline" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <ScrollView
+            android:id="@+id/scroll_view"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_marginBottom="@dimen/spacing_small"
+            app:layout_constraintBottom_toTopOf="@+id/onboarding_button_next"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/onboarding_header">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/onboarding_body_short"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="14dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_body_short"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_body_short"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/federal_state_row"
+                    style="@style/row"
+                    android:layout_marginTop="28dp"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_body_short">
+
+                    <TextView
+                        android:id="@+id/federal_state_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_state_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/federal_state_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_state_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/federal_state_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/federal_state_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/district_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/federal_state_row">
+
+                    <TextView
+                        android:id="@+id/district_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_district_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/district_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_district_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/district_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/district_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/age_group_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/district_row">
+
+                    <TextView
+                        android:id="@+id/age_group_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_age_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/age_group_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_age_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/age_group_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/age_group_row" />
+
+                <TextView
+                    android:id="@+id/onboarding_body_long"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="31dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_body"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_body"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/age_group_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/consent_layout"
+                    style="@style/cardTracing"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="32dp"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
+                    app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_body_long">
+
+                    <TextView
+                        android:id="@+id/legal_title"
+                        style="@style/headline6"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/spacing_small"
+                        android:contentDescription="@string/ppa_onboarding_consent_title"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_consent_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/legal_body"
+                        style="@style/body1"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="27dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_body"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_title" />
+
+                    <TextView
+                        android:id="@+id/legal_point_consent"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="13dp"
+                        android:layout_marginTop="23dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_consent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_body" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@+id/bullet_point_consent"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_consent"
+                        app:srcCompat="@drawable/bullet_point" />
+
+                    <TextView
+                        android:id="@+id/legal_point_identity"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="13dp"
+                        android:layout_marginTop="23dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_identity"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_point_consent" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@+id/bullet_point_identity"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_identity"
+                        app:srcCompat="@drawable/bullet_point" />
+
+                    <TextView
+                        android:id="@+id/legal_point_sixteen"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="13dp"
+                        android:layout_marginTop="23dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_sixteen"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_point_identity" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@+id/bullet_point_sixteen"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_sixteen"
+                        app:srcCompat="@drawable/bullet_point" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/more_info_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="22dp"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/consent_layout">
+
+                    <TextView
+                        android:id="@+id/more_info_title"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_more_info_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/more_info_row" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@+id/body_start"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@+id/body_end"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+                <include layout="@layout/merge_guidelines_card" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </ScrollView>
+
+        <Button
+            android:id="@+id/onboarding_button_next"
+            style="@style/buttonPrimary"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/spacing_small"
+            android:text="@string/onboarding_ppa_consent_donate_button"
+            app:layout_constraintBottom_toTopOf="@id/onboarding_button_disable"
+            app:layout_constraintEnd_toEndOf="@id/guideline_end"
+            app:layout_constraintStart_toStartOf="@id/guideline_start" />
+
+        <Button
+            android:id="@+id/onboarding_button_disable"
+            style="@style/buttonPrimary"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:text="@string/onboarding_ppa_consent_not_donate_button"
+            app:layout_constraintBottom_toBottomOf="@id/guideline_bottom"
+            app:layout_constraintEnd_toEndOf="@id/guideline_end"
+            app:layout_constraintStart_toStartOf="@id/guideline_start" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_top"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_begin="@dimen/guideline_top" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_bottom"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_end="@dimen/spacing_small" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_start"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_end"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_ppa.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_ppa.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bd4f247b1a02d8edb40a9dec2995681519711807
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_ppa.xml
@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/onboarding_ppa_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:contentDescription=""
+        android:fillViewport="true"
+        android:focusable="true">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/onboarding_header"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/header"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <include
+                android:id="@+id/onboarding_button_back"
+                layout="@layout/include_button_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:focusable="true"
+                app:icon="@{@drawable/ic_back}"
+                app:iconDescription="@{@string/accessibility_back}"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="@id/guideline_back"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <androidx.constraintlayout.widget.Guideline
+                android:id="@+id/guideline_back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                app:layout_constraintGuide_begin="@dimen/guideline_back" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <ScrollView
+            android:id="@+id/scroll_view"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_marginBottom="@dimen/spacing_small"
+            app:layout_constraintBottom_toTopOf="@+id/onboarding_button_next"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/onboarding_header">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/onboarding_headline"
+                    style="@style/headline4"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="19dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_headline"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_headline"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/onboarding_body_short"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="35dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_body_short"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_body_short"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_headline" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/federal_state_row"
+                    style="@style/row"
+                    android:layout_marginTop="28dp"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_body_short">
+
+                    <TextView
+                        android:id="@+id/federal_state_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_state_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/federal_state_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_state_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/federal_state_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/federal_state_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/district_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/federal_state_row">
+
+                    <TextView
+                        android:id="@+id/district_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_district_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/district_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_district_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/district_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/district_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/age_group_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/district_row">
+
+                    <TextView
+                        android:id="@+id/age_group_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_age_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/age_group_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_age_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/age_group_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/age_group_row" />
+
+                <TextView
+                    android:id="@+id/onboarding_body_long"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="47dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_body"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_body"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/age_group_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/consent_layout"
+                    style="@style/cardTracing"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="34dp"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
+                    app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_body_long">
+
+                    <TextView
+                        android:id="@+id/legal_title"
+                        style="@style/headline6"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/spacing_small"
+                        android:contentDescription="@string/ppa_onboarding_consent_title"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_consent_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/legal_body"
+                        style="@style/body1"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="27dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_body"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_title" />
+
+                    <TextView
+                        android:id="@+id/legal_point_consent"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="13dp"
+                        android:layout_marginTop="23dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_consent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_body" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@+id/bullet_point_consent"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:srcCompat="@drawable/bullet_point"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_consent" />
+
+                    <TextView
+                        android:id="@+id/legal_point_identity"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="13dp"
+                        android:layout_marginTop="23dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_identity"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_point_consent" />
+
+                     <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@+id/bullet_point_identity"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:srcCompat="@drawable/bullet_point"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_identity" />
+
+                    <TextView
+                        android:id="@+id/legal_point_sixteen"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="13dp"
+                        android:layout_marginTop="23dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_sixteen"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_point_identity" />
+
+                     <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@+id/bullet_point_sixteen"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:srcCompat="@drawable/bullet_point"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_sixteen" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/more_info_row"
+                    style="@style/row"
+                    android:layout_marginTop="22dp"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/consent_layout">
+
+                    <TextView
+                        android:id="@+id/more_info_title"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_more_info_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/more_info_row" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@+id/body_start"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@+id/body_end"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+                <include layout="@layout/merge_guidelines_card" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </ScrollView>
+
+        <Button
+            android:id="@+id/onboarding_button_next"
+            style="@style/buttonPrimary"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/spacing_small"
+            android:text="@string/onboarding_ppa_consent_donate_button"
+            app:layout_constraintBottom_toTopOf="@id/onboarding_button_disable"
+            app:layout_constraintEnd_toEndOf="@id/guideline_end"
+            app:layout_constraintStart_toStartOf="@id/guideline_start" />
+
+        <Button
+            android:id="@+id/onboarding_button_disable"
+            style="@style/buttonPrimary"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:text="@string/onboarding_ppa_consent_not_donate_button"
+            app:layout_constraintBottom_toBottomOf="@id/guideline_bottom"
+            app:layout_constraintEnd_toEndOf="@id/guideline_end"
+            app:layout_constraintStart_toStartOf="@id/guideline_start" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_top"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_begin="@dimen/guideline_top" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_bottom"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_end="@dimen/spacing_small" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_start"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_end"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_ppa_more_info.xml b/Corona-Warn-App/src/main/res/layout/fragment_ppa_more_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3d6dfdd6af518ff567e5872880a4ec18965da228
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/fragment_ppa_more_info.xml
@@ -0,0 +1,771 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        tools:context=".datadonation.analytics.ui.PpaMoreInfoFragment">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/header"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/header"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <include
+                android:id="@+id/button_back"
+                layout="@layout/include_button_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:focusable="true"
+                app:icon="@{@drawable/ic_close}"
+                app:iconDescription="@{@string/accessibility_back}"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="@id/guideline_back"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <androidx.constraintlayout.widget.Guideline
+                android:id="@+id/guideline_back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                app:layout_constraintGuide_begin="@dimen/guideline_back" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <ScrollView
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            app:layout_constraintBottom_toBottomOf="@id/guideline_bottom"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHorizontal_bias="1.0"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/header"
+            app:layout_constraintVertical_bias="1.0">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/onboarding_headline"
+                    style="@style/headline4"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="12dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_headline"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_headline"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/legal_layout"
+                    style="@style/cardTracing"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="45dp"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
+                    app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_headline">
+
+                    <TextView
+                        android:id="@+id/legal_title"
+                        style="@style/headline6"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/spacing_small"
+                        android:contentDescription="@string/ppa_onboarding_more_info_title"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_more_info_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/legal_body"
+                        style="@style/body1"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="27dp"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_more_info_body"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_title" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <TextView
+                    android:id="@+id/data_processing_title"
+                    style="@style/subtitleBoldSixteen"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="41dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_data_processing_title"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_data_processing_title"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/legal_layout" />
+
+                <TextView
+                    android:id="@+id/data_processing_body"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="16dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_data_processing_body"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_data_processing_body"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/data_processing_title" />
+
+                <TextView
+                    android:id="@+id/data_processing_point_1_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="35dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_data_processing_point_1_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/data_processing_body" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/data_processing_point_1"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/data_processing_point_1_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/data_processing_point_2_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_data_processing_point_2_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/data_processing_point_1_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/data_processing_point_2"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/data_processing_point_2_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/data_processing_point_3_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_data_processing_point_3_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/data_processing_point_2_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/data_processing_point_3"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/data_processing_point_3_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/data_processing_point_4_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_data_processing_point_4_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/data_processing_point_3_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/data_processing_point_4"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/data_processing_point_4_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_title"
+                    style="@style/subtitleBoldSixteen"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="41dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_rki_data_title"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_title"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/data_processing_point_4_text" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_1_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="23dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_1_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_title" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_1"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_1_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_2_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_2_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_1_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_2"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_2_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_3_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_3_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_2_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_3"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_3_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_4_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_4_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_3_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_4"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_4_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_body_1"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="23dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_rki_data_body_1"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_body_1"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_4_text" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_5_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="23dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_5_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_body_1" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_5"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_5_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_6_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_6_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_5_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_6"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_6_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_7_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_7_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_6_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_7"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_7_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_8_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_8_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_7_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_8"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_8_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_9_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_9_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_8_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_9"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_9_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_body_2"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="23dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_rki_data_body_2"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_body_2"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_9_text" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_10_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="23dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_10_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_body_2" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_10"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_10_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_11_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_11_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_10_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_11"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_11_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_12_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_12_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_11_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_12"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_12_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_13_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_13_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_12_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_13"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_13_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_14_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_14_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_13_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_14"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_14_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_15_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_15_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_14_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_15"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_15_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/rki_data_point_16_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_rki_data_point_16_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_15_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/rki_data_point_16"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/rki_data_point_16_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/other_info_body"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="23dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_other_info_body"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_other_info_body"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/rki_data_point_16_text" />
+
+                <TextView
+                    android:id="@+id/other_info_point_1_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="23dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_other_info_point_1_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/other_info_body" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/other_info_point_1"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/other_info_point_1_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/other_info_point_3_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_other_info_point_2_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/other_info_point_1_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/other_info_point_3"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/other_info_point_3_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/other_info_point_4_text"
+                    style="@style/subtitle"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="13dp"
+                    android:layout_marginTop="15dp"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_more_info_other_info_point_3_text"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/other_info_point_3_text" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/other_info_point_4"
+                    android:layout_width="@dimen/bullet_point_size"
+                    android:layout_height="@dimen/bullet_point_size"
+                    android:layout_marginTop="@dimen/spacing_tiny"
+                    android:importantForAccessibility="no"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toTopOf="@id/other_info_point_4_text"
+                    app:srcCompat="@drawable/bullet_point" />
+
+                <TextView
+                    android:id="@+id/much_privacy_body"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="35dp"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_more_info_much_privacy_body"
+                    android:focusable="true"
+                    android:paddingBottom="51dp"
+                    android:text="@string/onboarding_ppa_more_info_much_privacy_body"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/other_info_point_4_text" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@+id/body_start"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@+id/body_end"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+                <include layout="@layout/merge_guidelines_card" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </ScrollView>
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_bottom"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_end="@dimen/guideline_bottom" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
index 7ecd203b6b2a293e9cb0c33c4814f52fa3817d5b..e80f31e3e0f6ca848e59ba75f3ca403dfa2c933e 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
@@ -14,6 +14,10 @@
         <variable
             name="backgroundState"
             type="de.rki.coronawarnapp.ui.settings.start.SettingsBackgroundState" />
+
+        <variable
+            name="analyticsState"
+            type="de.rki.coronawarnapp.ui.settings.start.SettingsPrivacyPreservingAnalyticsState" />
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
@@ -35,6 +39,7 @@
             app:title="@{@string/settings_title}" />
 
         <ScrollView
+            android:id="@+id/scrollview"
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:fillViewport="true"
@@ -93,6 +98,21 @@
                     app:statusText="@{backgroundState.getBackgroundPriorityText(context)}"
                     app:subtitle="@{@string/settings_background_priority_title}" />
 
+                <include
+                    android:id="@+id/settings_privacy_preserving_analytics"
+                    layout="@layout/include_setting_row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:body="@{@string/settings_privacy_preserving_analytics_body_description}"
+                    app:color="@{analyticsState.getPrivacyPreservingAnalyticsIconColor(context)}"
+                    app:icon="@{analyticsState.getPrivacyPreservingAnalyticsIcon(context)}"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/settings_background_priority"
+                    app:showDivider="@{true}"
+                    app:statusText="@{analyticsState.getPrivacyPreservingAnalyticsText(context)}"
+                    app:subtitle="@{@string/settings_privacy_preserving_analytics_title}"/>
+
                 <androidx.constraintlayout.widget.ConstraintLayout
                     android:id="@+id/settings_reset"
                     style="@style/row"
@@ -100,7 +120,7 @@
                     android:layout_height="wrap_content"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/settings_background_priority">
+                    app:layout_constraintTop_toBottomOf="@+id/settings_privacy_preserving_analytics">
 
                     <androidx.constraintlayout.widget.ConstraintLayout
                         android:layout_width="0dp"
@@ -147,4 +167,4 @@
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings_privacy_preserving_analytics.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings_privacy_preserving_analytics.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21731d367ee1d3f4849102e6fe107334e371ba31
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings_privacy_preserving_analytics.xml
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/onboarding_ppa_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:contentDescription=""
+        android:fillViewport="true"
+        android:focusable="true">
+
+        <include
+            android:id="@+id/settings_ppa_header"
+            layout="@layout/include_header"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:contentDescription="@string/settings_background_priority_title"
+            android:focusable="true"
+            app:icon="@{@drawable/ic_back}"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:title="@{@string/settings_privacy_preserving_analytics_title}" />
+
+        <ScrollView
+            android:id="@+id/scrollview"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            app:layout_constraintBottom_toTopOf="@+id/guideline_bottom"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/settings_ppa_header">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/onboarding_illustration"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_small"
+                    android:contentDescription="@string/onboarding_ppa_illustration_description"
+                    android:focusable="true"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:srcCompat="@drawable/ic_illustration_ppa" />
+
+                <TextView
+                    android:id="@+id/onboarding_body"
+                    style="@style/body1"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginTop="@dimen/spacing_medium"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    android:contentDescription="@string/onboarding_ppa_body"
+                    android:focusable="true"
+                    android:text="@string/onboarding_ppa_body"
+                    app:layout_constraintEnd_toEndOf="@id/body_end"
+                    app:layout_constraintStart_toStartOf="@id/body_start"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_illustration" />
+
+                <include
+                    android:id="@+id/settings_ppa_switch_row"
+                    layout="@layout/include_settings_switch_row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/spacing_small"
+                    gone="@{false}"
+                    app:enabled="@{true}"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/onboarding_body"
+                    app:showDivider="@{true}"
+                    app:status="@{false}"
+                    app:statusText="@{@string/settings_on}"
+                    app:subtitle="@{@string/settings_analytics_switch_subtitle}" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@id/federal_state_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/settings_ppa_switch_row">
+
+                    <TextView
+                        android:id="@id/federal_state_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_state_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/federal_state_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_state_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/federal_state_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/federal_state_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@id/district_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/federal_state_row">
+
+                    <TextView
+                        android:id="@id/district_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_district_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@id/district_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_district_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/district_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/district_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@id/age_group_row"
+                    style="@style/row"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/district_row">
+
+                    <TextView
+                        android:id="@id/age_group_row_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_age_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@id/age_group_row_body"
+                        style="@style/body2Medium"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:accessibilityLiveRegion="assertive"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_age_title"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/age_group_row_subtitle" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/age_group_row" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@id/consent_layout"
+                    style="@style/cardTracing"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="32dp"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
+                    app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
+                    app:layout_constraintTop_toBottomOf="@+id/age_group_row">
+
+                    <TextView
+                        android:id="@id/legal_title"
+                        style="@style/headline6"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/spacing_small"
+                        android:contentDescription="@string/ppa_onboarding_privacy_information_title"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@id/legal_body"
+                        style="@style/body1"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_normal"
+                        android:focusable="true"
+                        android:text="@string/ppa_settings_privacy_information_body"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_title" />
+
+                    <TextView
+                        android:id="@id/legal_point_consent"
+                        style="@style/body1"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="@dimen/spacing_small"
+                        android:layout_marginTop="@dimen/spacing_normal"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_consent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_body" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@id/bullet_point_consent"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:srcCompat="@drawable/bullet_point"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_consent" />
+
+                    <TextView
+                        android:id="@id/legal_point_identity"
+                        style="@style/body1"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="@dimen/spacing_small"
+                        android:layout_marginTop="@dimen/spacing_normal"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_identity"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_point_consent" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@id/bullet_point_identity"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:srcCompat="@drawable/bullet_point"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_identity" />
+
+                    <TextView
+                        android:id="@id/legal_point_sixteen"
+                        style="@style/body1"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="@dimen/spacing_small"
+                        android:layout_marginTop="@dimen/spacing_normal"
+                        android:focusable="true"
+                        android:text="@string/ppa_onboarding_privacy_information_point_sixteen"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="@id/bullet_point_consent"
+                        app:layout_constraintTop_toBottomOf="@+id/legal_point_identity" />
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:id="@id/bullet_point_sixteen"
+                        android:layout_width="@dimen/bullet_point_size"
+                        android:layout_height="@dimen/bullet_point_size"
+                        android:layout_marginTop="@dimen/spacing_tiny"
+                        android:importantForAccessibility="no"
+                        app:srcCompat="@drawable/bullet_point"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="@id/legal_point_sixteen" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@id/more_info_row"
+                    style="@style/row"
+                    android:layout_marginTop="@dimen/spacing_normal"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/consent_layout">
+
+                    <TextView
+                        android:id="@id/more_info_title"
+                        style="@style/body1"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:focusable="true"
+                        android:text="@string/onboarding_ppa_more_info_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <include
+                    layout="@layout/include_divider"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginStart="@dimen/guideline_start"
+                    android:layout_marginEnd="@dimen/guideline_end"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/more_info_row" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@id/body_start"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+                <androidx.constraintlayout.widget.Guideline
+                    android:id="@id/body_end"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+                <include layout="@layout/merge_guidelines_card" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </ScrollView>
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@id/guideline_top"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_begin="@dimen/guideline_top" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@id/guideline_bottom"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            app:layout_constraintGuide_end="@dimen/spacing_small" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@id/guideline_start"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_begin="@dimen/guideline_start" />
+
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@id/guideline_end"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_end="@dimen/guideline_end" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml
index 30ce398cf9a8952bd2c9229beca881b11cf03b5d..430e1f7fa7a4cacd6fd4e419c02a6c5d03ab2196 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <data>
 
@@ -16,22 +17,21 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/settings_tracing_container"
+        invisible="@{loggedPeriod == null || settingsTracingState == null}"
         android:layout_width="match_parent"
-        invisible="@{loggedPeriod == null || settingsTracingState== null}"
         android:layout_height="match_parent"
         android:contentDescription="@string/settings_tracing_title"
         android:focusable="true">
 
-        <include
-            android:id="@+id/settings_tracing_header"
-            layout="@layout/include_header"
-            android:layout_width="0dp"
+        <androidx.appcompat.widget.Toolbar
+            android:id="@+id/toolbar"
+            style="@style/CWAToolbar.Close"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            app:icon="@{@drawable/ic_close}"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
-            app:title="@{@string/settings_tracing_title}" />
+            app:title="@string/settings_tracing_title" />
 
         <ScrollView
             android:layout_width="0dp"
@@ -40,23 +40,42 @@
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/settings_tracing_header">
+            app:layout_constraintTop_toBottomOf="@id/toolbar">
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+                android:layout_height="wrap_content"
+                android:paddingBottom="@dimen/spacing_normal">
 
-                <include
-                    android:id="@+id/settings_tracing_header_details"
-                    layout="@layout/include_information_details"
-                    android:layout_width="0dp"
+                <ImageView
+                    android:id="@+id/illustration"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    app:headline="@{@string/settings_tracing_headline}"
-                    app:illustration="@{settingsTracingState.getTracingStatusImage(context)}"
-                    app:illustrationDescription="@{settingsTracingState.getTracingIllustrationText(context)}"
+                    android:contentDescription="@{settingsTracingState.getTracingIllustrationText(context)}"
+                    android:focusable="true"
+                    android:paddingTop="@dimen/spacing_small"
+                    android:paddingBottom="@dimen/spacing_small"
+                    android:scaleType="centerCrop"
+                    android:src="@{settingsTracingState.getTracingStatusImage(context)}"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
+                    app:layout_constraintTop_toTopOf="parent"
+                    tools:src="@drawable/ic_illustration_tracing_on" />
+
+                <TextView
+                    android:id="@+id/information_details_header_headline"
+                    style="@style/headline6"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/spacing_normal"
+                    android:layout_marginTop="@dimen/spacing_small"
+                    android:layout_marginEnd="@dimen/spacing_normal"
+                    android:accessibilityHeading="true"
+                    android:focusable="true"
+                    android:text="@string/settings_tracing_headline"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/illustration" />
 
                 <include
                     android:id="@+id/settings_tracing_switch_row"
@@ -67,22 +86,50 @@
                     app:enabled="@{settingsTracingState.isTracingSwitchEnabled()}"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/settings_tracing_header_details"
+                    app:layout_constraintTop_toBottomOf="@id/information_details_header_headline"
                     app:showDivider="@{true}"
+                    app:status="@{settingsTracingState.isTracingSwitchChecked()}"
                     app:statusText="@{settingsTracingState.getTracingStatusText(context)}"
                     app:subtitle="@{@string/settings_tracing_title}" />
 
-                <include
+                <androidx.appcompat.widget.LinearLayoutCompat
                     android:id="@+id/settings_interoperability_row"
-                    layout="@layout/include_settings_plain_row"
-                    android:layout_width="0dp"
+                    style="@style/row"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:orientation="vertical"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/settings_tracing_switch_row"
-                    app:showDivider="@{true}"
-                    app:statusText="@{@string/settings_interoperability_subtitle}"
-                    app:subtitle="@{@string/settings_interoperability_title}" />
+                    app:layout_constraintTop_toBottomOf="@id/settings_tracing_switch_row">
+
+                    <TextView
+                        android:id="@+id/settings_plain_row_header_subtitle"
+                        style="@style/subtitle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="@string/settings_interoperability_title" />
+
+                    <TextView
+                        android:id="@+id/settings_plain_row_header_body"
+                        style="@style/body2Medium"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/spacing_mega_tiny"
+                        android:text="@string/settings_interoperability_subtitle"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/settings_plain_row_header_subtitle" />
+
+                </androidx.appcompat.widget.LinearLayoutCompat>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/card_divider"
+                    android:layout_marginHorizontal="@dimen/spacing_normal"
+                    android:background="@color/colorHairline"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/settings_interoperability_row" />
 
                 <androidx.constraintlayout.widget.ConstraintLayout
                     android:id="@+id/settings_tracing_status"
@@ -95,10 +142,10 @@
 
                     <include
                         android:id="@+id/settings_tracing_status_location"
+                        gone="@{!settingsTracingState.isLocationCardVisible()}"
                         layout="@layout/include_tracing_status_card_location"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        gone="@{!settingsTracingState.isLocationCardVisible()}"
                         app:buttonText="@{@string/settings_tracing_status_location_button}"
                         app:headline="@{@string/settings_tracing_status_location_headline}"
                         app:icon="@{@drawable/ic_location}"
@@ -108,10 +155,10 @@
 
                     <include
                         android:id="@+id/settings_tracing_status_bluetooth"
+                        gone="@{!settingsTracingState.isBluetoothCardVisible()}"
                         layout="@layout/include_tracing_status_card"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        gone="@{!settingsTracingState.isBluetoothCardVisible()}"
                         app:body="@{@string/settings_tracing_status_bluetooth_body}"
                         app:buttonText="@{@string/settings_tracing_status_bluetooth_button}"
                         app:headline="@{@string/settings_tracing_status_bluetooth_headline}"
@@ -123,42 +170,42 @@
                     <TextView
                         android:id="@+id/risk_details_period_logged_body_notice"
                         style="@style/subtitleMedium"
+                        gone="@{!settingsTracingState.isTracingStatusTextVisible()}"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_tiny"
                         android:focusable="true"
-                        gone="@{!settingsTracingState.isTracingStatusTextVisible()}"
                         android:text="@string/risk_details_information_body_period_logged"
-                        app:layout_constraintStart_toStartOf="@+id/guideline_start"
                         app:layout_constraintEnd_toStartOf="@+id/guideline_end"
+                        app:layout_constraintStart_toStartOf="@+id/guideline_start"
                         app:layout_constraintTop_toBottomOf="@+id/settings_tracing_status_bluetooth" />
 
                     <TextView
                         android:id="@+id/risk_details_period_logged_subtitle"
                         style="@style/subtitle"
+                        gone="@{!settingsTracingState.isTracingStatusTextVisible()}"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="@dimen/spacing_normal"
                         android:layout_marginStart="@dimen/spacing_small"
+                        android:layout_marginTop="@dimen/spacing_normal"
                         android:focusable="true"
-                        gone="@{!settingsTracingState.isTracingStatusTextVisible()}"
                         android:text="@{loggedPeriod.getRiskActiveTracingDaysInRetentionPeriodLogged(context)}"
-                        app:layout_constraintStart_toEndOf="@+id/risk_details_investigation_period_circle_progress"
                         app:layout_constraintEnd_toStartOf="@+id/guideline_end"
+                        app:layout_constraintStart_toEndOf="@+id/risk_details_investigation_period_circle_progress"
                         app:layout_constraintTop_toBottomOf="@+id/risk_details_period_logged_body_notice" />
 
                     <de.rki.coronawarnapp.ui.view.CircleProgress
                         android:id="@+id/risk_details_investigation_period_circle_progress"
+                        gone="@{!settingsTracingState.isTracingStatusTextVisible()}"
                         android:layout_width="@dimen/spacing_huge"
                         android:layout_height="@dimen/spacing_huge"
-                        gone="@{!settingsTracingState.isTracingStatusTextVisible()}"
                         android:importantForAccessibility="no"
                         app:circleWidth="@dimen/circle_large_width"
-                        app:layout_constraintTop_toTopOf="@+id/risk_details_period_logged_subtitle"
                         app:layout_constraintBottom_toBottomOf="@+id/risk_details_period_logged_subtitle"
                         app:layout_constraintStart_toStartOf="@+id/guideline_start"
+                        app:layout_constraintTop_toTopOf="@+id/risk_details_period_logged_subtitle"
                         app:progress="@{loggedPeriod.activeTracingDaysInRetentionPeriod}"
-                        app:progressColor="@{loggedPeriod.getProgressColor(context)}"/>
+                        app:progressColor="@{loggedPeriod.getProgressColor(context)}" />
 
                     <include layout="@layout/merge_guidelines_card" />
 
@@ -178,7 +225,7 @@
 
                     <TextView
                         android:id="@+id/settings_tracing_body"
-                        style="@style/body1"
+                        style="@style/subtitle"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
                         android:focusable="true"
@@ -209,13 +256,6 @@
 
         </ScrollView>
 
-        <androidx.constraintlayout.widget.Guideline
-            android:id="@+id/guideline_bottom"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            app:layout_constraintGuide_end="@dimen/guideline_bottom" />
-
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 </layout>
diff --git a/Corona-Warn-App/src/main/res/layout/include_header.xml b/Corona-Warn-App/src/main/res/layout/include_header.xml
index e30f7bdf8c2e08f26e97e9ef1ab322fdeddd7749..6629baa3bdfd6c63138c9abea3f0ed76c1f69491 100644
--- a/Corona-Warn-App/src/main/res/layout/include_header.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_header.xml
@@ -43,7 +43,7 @@
             app:layout_constraintEnd_toEndOf="@id/guideline_end"
             app:layout_constraintStart_toStartOf="@id/guideline_start"
             app:layout_constraintTop_toTopOf="parent"
-            tools:text="@string/settings_title" />
+            tools:text="header title" />
 
         <androidx.constraintlayout.widget.Guideline
             android:id="@+id/guideline_start"
@@ -67,4 +67,4 @@
             app:layout_constraintGuide_begin="@dimen/guideline_back" />
 
     </androidx.constraintlayout.widget.ConstraintLayout>
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/include_information_details.xml b/Corona-Warn-App/src/main/res/layout/include_information_details.xml
index e4f814ded6145a1d7359fd442cf0484d96bc0bd2..6479b9095407bfbe5c45cdb4c2e374d56f814fae 100644
--- a/Corona-Warn-App/src/main/res/layout/include_information_details.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_information_details.xml
@@ -68,9 +68,8 @@
             android:focusable="true"
             android:text="@{body}"
             android:textColorLink="@color/colorTextTint"
-            android:visibility="@{FormatterHelper.formatVisibilityText(body)}"
-            tools:text="@tools:sample/lorem/random" />
+            android:visibility="@{FormatterHelper.formatVisibilityText(body)}" />
 
     </LinearLayout>
 
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/include_interoperability.xml b/Corona-Warn-App/src/main/res/layout/include_interoperability.xml
index a7db4f32a22e476e58b1dddef977acd03af9be50..092efae0ac1754aeb5b7901f6372ee8fd26081a8 100644
--- a/Corona-Warn-App/src/main/res/layout/include_interoperability.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_interoperability.xml
@@ -68,7 +68,6 @@
         android:layout_height="match_parent"
         android:contentDescription="@{title}">
 
-
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
@@ -122,12 +121,13 @@
                         app:layout_constraintBottom_toBottomOf="parent"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
-                        app:layout_constraintTop_toTopOf="parent" />
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:visibility="gone" />
                 </androidx.constraintlayout.widget.ConstraintLayout>
 
                 <TextView
                     android:id="@+id/label_interoperability_subtitle"
-                    style="@style/body1"
+                    style="@style/subtitle"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
@@ -139,7 +139,7 @@
 
                 <TextView
                     android:id="@+id/label_interoperability_subtitle2"
-                    style="@style/body1"
+                    style="@style/subtitle"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_normal"
@@ -151,7 +151,7 @@
 
                 <TextView
                     android:id="@+id/label_interoperability_subtitle3"
-                    style="@style/body1"
+                    style="@style/subtitle"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_normal"
@@ -172,7 +172,8 @@
                 android:visibility="@{FormatterHelper.formatVisibility(countryData.empty)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/interoperability_header" />
+                app:layout_constraintTop_toBottomOf="@+id/interoperability_header"
+                tools:visibility="gone" />
 
             <include
                 android:id="@+id/no_countries_riskdetails_infoview"
@@ -183,7 +184,8 @@
                 android:visibility="@{FormatterHelper.formatVisibility(countryData.empty &amp;&amp; isRiskdetection)}"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/interoperability_header" />
+                app:layout_constraintTop_toBottomOf="@+id/interoperability_header"
+                tools:visibility="gone" />
 
             <include
                 android:id="@+id/country_list_overview"
@@ -209,7 +211,7 @@
 
             <TextView
                 android:id="@+id/label_interoperability_subtitle4"
-                style="@style/body1"
+                style="@style/subtitle"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
@@ -247,7 +249,7 @@
 
                 <TextView
                     android:id="@+id/interoperability_footer_description"
-                    style="@style/body1"
+                    style="@style/subtitle"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_normal"
@@ -284,6 +286,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:clickable="true"
+                    android:focusable="true"
                     android:linksClickable="true"
                     android:paddingVertical="@dimen/button_icon_margin"
                     android:text="@string/interoperability_onboarding_delta_terms_link"
@@ -296,7 +299,7 @@
                     style="@style/subtitle"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:paddingVertical="@dimen/button_icon_margin"
+                    android:paddingVertical="@dimen/spacing_tiny"
                     android:text="@string/interoperability_onboarding_delta_expanded_terms_text_part_2"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
@@ -306,4 +309,4 @@
 
         </androidx.constraintlayout.widget.ConstraintLayout>
     </ScrollView>
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/include_onboarding.xml b/Corona-Warn-App/src/main/res/layout/include_onboarding.xml
index 0c0129b94ca25df21dabe1cc3f361a24972aaaa3..3b9d3700399296e8877d2b63a43d7a7453f93a15 100644
--- a/Corona-Warn-App/src/main/res/layout/include_onboarding.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_onboarding.xml
@@ -52,14 +52,6 @@
             name="locationBodyCard"
             type="String" />
 
-        <variable
-            name="easyLanguageText"
-            type="String" />
-
-        <variable
-            name="include"
-            type="android.view.View" />
-
         <variable
             name="countryData"
             type="java.util.List&lt;de.rki.coronawarnapp.ui.Country&gt;" />
@@ -144,23 +136,6 @@
                 app:layout_constraintTop_toBottomOf="@id/onboarding_body"
                 tools:text="@string/onboarding_body_emphasized" />
 
-            <TextView
-                android:id="@+id/onboarding_easy_language"
-                style="@style/subtitle"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/spacing_normal"
-                android:clickable="true"
-                android:focusable="true"
-                android:linksClickable="true"
-                android:text="@string/onboarding_tracing_easy_language_explanation"
-                android:textColorLink="@color/colorTextTint"
-                android:visibility="@{FormatterHelper.formatVisibilityText(easyLanguageText)}"
-                app:layout_constraintEnd_toEndOf="@id/guideline_end"
-                app:layout_constraintStart_toStartOf="@id/guideline_start"
-                app:layout_constraintTop_toBottomOf="@id/onboarding_body_emphasized"
-                tools:text="@string/onboarding_tracing_easy_language_explanation" />
-
             <include
                 android:id="@+id/onboarding_interoperability"
                 layout="@layout/include_interoperability"
@@ -177,7 +152,7 @@
                 app:layout_constraintBottom_toTopOf="@+id/onboarding_location_card"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_start"
-                app:layout_constraintTop_toBottomOf="@+id/onboarding_easy_language"
+                app:layout_constraintTop_toBottomOf="@id/onboarding_body_emphasized"
                 app:secondSection="@{@string/interoperability_onboarding_second_section}"
                 app:thirdSection="@{@string/interoperability_onboarding_randomid_download_free}"
                 app:title="@{@string/interoperability_onboarding_title}" />
@@ -244,4 +219,4 @@
         </androidx.constraintlayout.widget.ConstraintLayout>
 
     </ScrollView>
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml b/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml
index 9e7537eb64247a58d8e470f4e9e12f18bdc09476..ccab31e83d96b4de4c1f9e434da38e717af6b484 100644
--- a/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml
@@ -74,11 +74,11 @@
 
             </androidx.constraintlayout.widget.ConstraintLayout>
 
-            <Switch
+            <com.google.android.material.switchmaterial.SwitchMaterial
                 android:id="@+id/settings_switch_row_switch"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                app:checked="@{status}"
+                android:checked="@{status}"
                 android:importantForAccessibility="no"
                 android:enabled="@{enabled}"
                 android:contentDescription="@{subtitle + ` ` + status}"
@@ -115,4 +115,4 @@
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
-</layout>
\ No newline at end of file
+</layout>
diff --git a/Corona-Warn-App/src/main/res/layout/new_release_info_screen_fragment.xml b/Corona-Warn-App/src/main/res/layout/new_release_info_screen_fragment.xml
index a28280e788de0f35b133d912b211aefa4a4de60b..37fffb2c75f60994682f29d81acb6cf8536f53a1 100644
--- a/Corona-Warn-App/src/main/res/layout/new_release_info_screen_fragment.xml
+++ b/Corona-Warn-App/src/main/res/layout/new_release_info_screen_fragment.xml
@@ -57,8 +57,7 @@
                     android:focusable="true"
                     android:text="@string/release_info_version_title"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/new_release_info_illustration"
-                    tools:text="@string/release_info_version_title" />
+                    app:layout_constraintTop_toBottomOf="@id/new_release_info_illustration" />
 
                 <TextView
                     style="@style/subtitleMedium"
@@ -72,8 +71,7 @@
                     android:text="@string/release_info_version_body"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@id/headline"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    tools:text="@string/release_info_version_body" />
+                    app:layout_constraintEnd_toEndOf="parent" />
 
                 <androidx.recyclerview.widget.RecyclerView
                     android:id="@+id/recycler_view"
@@ -95,12 +93,11 @@
                     android:layout_height="wrap_content"
                     android:layout_margin="@dimen/spacing_normal"
                     android:focusable="true"
-                    android:text="@string/release_info_version_body"
+                    android:text="@string/new_release_bottom"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/recycler_view"
-                    tools:text="@string/new_release_bottom" />
+                    app:layout_constraintTop_toBottomOf="@id/recycler_view" />
 
             </androidx.constraintlayout.widget.ConstraintLayout>
 
diff --git a/Corona-Warn-App/src/main/res/layout/onboaring_loading_layout.xml b/Corona-Warn-App/src/main/res/layout/onboaring_loading_layout.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ab53df91a84d6d51d7405b5a7643e43ab24d6a6b
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/onboaring_loading_layout.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <ProgressBar
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        android:layout_width="32dp"
+        android:layout_height="32dp" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/survey_consent_blocking_progress_dialog.xml b/Corona-Warn-App/src/main/res/layout/survey_consent_blocking_progress_dialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..11cb538041dc213b86d9e05e1d6264cb2ae7af4a
--- /dev/null
+++ b/Corona-Warn-App/src/main/res/layout/survey_consent_blocking_progress_dialog.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ProgressBar
+        android:id="@+id/progress_indicator"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginBottom="16dp"
+        android:progressTint="@color/colorAccentTintIcon"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/progress_message"
+        style="@style/body1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginEnd="16dp"
+        android:text="@string/datadonation_details_survey_consent_progress_dialog_msg"
+        app:layout_constraintBottom_toBottomOf="@+id/progress_indicator"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintStart_toEndOf="@+id/progress_indicator"
+        app:layout_constraintTop_toTopOf="@+id/progress_indicator" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/layout/survey_consent_detail_fragment.xml b/Corona-Warn-App/src/main/res/layout/survey_consent_detail_fragment.xml
index a6af7a105a9657e389db241a91787b3292e87fc5..491fc60f06712032f84925988ee4dd6b7dc682df 100644
--- a/Corona-Warn-App/src/main/res/layout/survey_consent_detail_fragment.xml
+++ b/Corona-Warn-App/src/main/res/layout/survey_consent_detail_fragment.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools">
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/content_container"
@@ -10,11 +9,13 @@
         android:background="@drawable/contact_diary_onboarding_background"
         android:focusable="true">
 
-        <androidx.appcompat.widget.Toolbar
+        <include
             android:id="@+id/toolbar"
-            style="@style/CWAToolbar.Close"
+            layout="@layout/include_header"
             android:layout_width="0dp"
+            android:focusable="true"
             android:layout_height="wrap_content"
+            app:icon="@{@drawable/ic_close}"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
@@ -36,7 +37,7 @@
                     style="@style/headline4"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/spacing_small"
+                    android:layout_marginTop="@dimen/spacing_tiny"
                     android:accessibilityHeading="true"
                     android:focusable="true"
                     android:text="@string/datadonation_details_survey_consent_details_title"
@@ -83,7 +84,7 @@
 
                 <TextView
                     android:id="@+id/survey_details_bottom_info_title"
-                    style="@style/subtitleMedium"
+                    style="@style/subtitle"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="33dp"
@@ -95,7 +96,7 @@
 
                 <TextView
                     android:id="@+id/survey_details_bottom_info_body"
-                    style="@style/subtitleMedium"
+                    style="@style/subtitle"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
diff --git a/Corona-Warn-App/src/main/res/layout/survey_consent_fragment.xml b/Corona-Warn-App/src/main/res/layout/survey_consent_fragment.xml
index a075706a05c6868cb5602069a0cddc6bdcf1fda2..b8a3c3e09f7b58d87ff0e7b919d1458935a81b71 100644
--- a/Corona-Warn-App/src/main/res/layout/survey_consent_fragment.xml
+++ b/Corona-Warn-App/src/main/res/layout/survey_consent_fragment.xml
@@ -61,7 +61,7 @@
 
                 <TextView
                     android:id="@+id/survey_bottom_info_body"
-                    style="@style/subtitleMedium"
+                    style="@style/subtitle"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_normal"
diff --git a/Corona-Warn-App/src/main/res/layout/tracing_content_low_view.xml b/Corona-Warn-App/src/main/res/layout/tracing_content_low_view.xml
index 335b19a32b8e420c348487dd95ad5e0b08c3136a..dd85e6ef0a3de7dea4073243b0ea92433108c7b0 100644
--- a/Corona-Warn-App/src/main/res/layout/tracing_content_low_view.xml
+++ b/Corona-Warn-App/src/main/res/layout/tracing_content_low_view.xml
@@ -74,7 +74,7 @@
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/row_saved_days"
-            gone="@{state.getRiskContactLast(context) != null}"
+            gone="@{state.isGoneOnContentLowView(context)}"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             app:layout_constraintEnd_toEndOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_increased_view.xml b/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_increased_view.xml
index 8751e27e253b30db8154cd01d9c125f0198d2071..62b3800457ba532756f6d8dc31ea351e0c0bc290 100644
--- a/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_increased_view.xml
+++ b/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_increased_view.xml
@@ -33,6 +33,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:layout_marginTop="@dimen/spacing_normal"
             android:backgroundTint="@color/colorSemanticHighRisk"
             android:foregroundTint="@color/colorStableLight"
@@ -42,6 +43,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:backgroundTint="@color/colorSemanticHighRisk"
             android:foregroundTint="@color/colorStableLight"
             android:icon="@drawable/ic_risk_details_distance"
@@ -50,6 +52,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:backgroundTint="@color/colorSemanticHighRisk"
             android:foregroundTint="@color/colorStableLight"
             android:icon="@drawable/ic_risk_details_contact"
@@ -59,7 +62,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_margin="@dimen/spacing_tiny"
-            android:focusable="true">
+            android:focusable="false">
 
             <ImageView
                 android:id="@+id/risk_details_behavior_bullet_point_1_icon"
@@ -80,7 +83,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/spacing_normal"
                 android:layout_marginTop="@dimen/spacing_small"
-                android:focusable="false"
+                android:focusable="true"
                 android:text="@string/risk_details_behavior_increased_body_1"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@id/risk_details_behavior_bullet_point_1_icon"
@@ -106,7 +109,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/spacing_normal"
                 android:layout_marginTop="@dimen/spacing_small"
-                android:focusable="false"
+                android:focusable="true"
                 android:text="@string/risk_details_behavior_increased_body_2"
                 app:layout_constraintBottom_toBottomOf="@+id/risk_details_behavior_bullet_point_2_icon"
                 app:layout_constraintEnd_toEndOf="parent"
@@ -133,7 +136,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/spacing_normal"
                 android:layout_marginTop="@dimen/spacing_small"
-                android:focusable="false"
+                android:focusable="true"
                 android:text="@string/risk_details_behavior_increased_body_3"
                 app:layout_constraintBottom_toBottomOf="@+id/risk_details_behavior_bullet_point_3_icon"
                 app:layout_constraintEnd_toEndOf="parent"
@@ -145,6 +148,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:layout_marginTop="@dimen/spacing_tiny"
             android:backgroundTint="@color/colorSemanticHighRisk"
             android:foregroundTint="@color/colorStableLight"
diff --git a/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_normal_view.xml b/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_normal_view.xml
index 3309d71ba0076891ee383ce72a947c0555f15d14..42e7316ba5e76cee2609c3377a6a6c110ef66153 100644
--- a/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_normal_view.xml
+++ b/Corona-Warn-App/src/main/res/layout/tracing_details_item_behavior_normal_view.xml
@@ -33,6 +33,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/spacing_normal"
+            android:focusable="true"
             android:backgroundTint="@{state.getBackgroundColor(context)}"
             android:foregroundTint="@{state.getIconColor(context)}"
             android:icon="@drawable/ic_risk_details_wash"
@@ -43,6 +44,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:backgroundTint="@{state.getBackgroundColor(context)}"
             android:foregroundTint="@{state.getIconColor(context)}"
             android:icon="@drawable/ic_risk_details_mask"
@@ -53,6 +55,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:backgroundTint="@{state.getBackgroundColor(context)}"
             android:foregroundTint="@{state.getIconColor(context)}"
             android:icon="@drawable/ic_risk_details_distance"
@@ -63,6 +66,7 @@
         <de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorInfoRow
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:backgroundTint="@{state.getBackgroundColor(context)}"
             android:foregroundTint="@{state.getIconColor(context)}"
             android:icon="@drawable/ic_risk_details_sneeze"
diff --git a/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml
index c151b54b7c2cb5c710e82b6b96f27aecdc617230..c51fa6233504c24597917c39694102d63bf3b5c6 100644
--- a/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml
+++ b/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml
@@ -19,6 +19,7 @@
         <action
             android:id="@+id/action_contactDiaryDayFragment_to_contactDiaryAddLocationFragment"
             app:destination="@id/contactDiaryAddLocationFragment" />
+        <deepLink app:uri="coronawarnapp://contact-journal/day/{selectedDay}" />
     </fragment>
     <fragment
         android:id="@+id/contactDiaryPersonListFragment"
@@ -90,6 +91,10 @@
             android:name="showBottomNav"
             android:defaultValue="true"
             app:argType="boolean" />
+        <deepLink
+            app:popUpTo="@id/contact_diary_nav_graph"
+            app:popUpToInclusive="true"
+            app:uri="coronawarnapp://contact-journal/oboarding/?goToDay={goToDay}" />
     </fragment>
     <fragment
         android:id="@+id/contactDiaryInformationPrivacyFragment"
diff --git a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml
index c6028716411c90a4480f044babc63a6e1a78fee4..b4fe423e381104f4636848740dbe208f909fe8a7 100644
--- a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml
+++ b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml
@@ -49,18 +49,12 @@
         <action
             android:id="@+id/action_mainFragment_to_submissionDispatcher"
             app:destination="@id/submissionDispatcherFragment" />
-        <action
-            android:id="@+id/action_mainFragment_to_onboardingDeltaInteroperabilityFragment"
-            app:destination="@id/onboardingDeltaInteroperabilityFragment" />
         <action
             android:id="@+id/action_mainFragment_to_test_nav_graph"
             app:destination="@id/test_nav_graph" />
         <action
             android:id="@+id/action_mainFragment_to_submissionTestResultAvailableFragment"
             app:destination="@id/submissionTestResultAvailableFragment" />
-        <action
-            android:id="@+id/action_mainFragment_to_newReleaseInfoFragment"
-            app:destination="@id/newReleaseInfoFragment" />
         <action
             android:id="@+id/action_mainFragment_to_statisticsExplanationFragment"
             app:destination="@id/statisticsExplanationFragment" />
@@ -99,6 +93,9 @@
         <action
             android:id="@+id/action_settingsFragment_to_settingsBackgroundPriorityFragment"
             app:destination="@id/settingsBackgroundPriorityFragment" />
+        <action
+            android:id="@+id/action_settingsFragment_to_settingsPrivacyPreservingAnalyticsFragment"
+            app:destination="@id/settingsPrivacyPreservingAnalyticsFragment" />
     </fragment>
 
     <fragment
@@ -515,6 +512,11 @@
             android:name="comesFromInfoScreen"
             android:defaultValue="false"
             app:argType="boolean" />
+        <action
+            android:id="@+id/action_newReleaseInfoFragment_to_onboardingDeltaAnalyticsFragment"
+            app:destination="@id/onboardingDeltaAnalyticsFragment"
+            app:popUpTo="@id/mainFragment"
+            app:popUpToInclusive="false" />
     </fragment>
     <fragment
         android:id="@+id/surveyConsentFragment"
@@ -534,4 +536,43 @@
         android:label="survey_consent_detail_fragment"
         tools:layout="@layout/survey_consent_detail_fragment">
     </fragment>
+    <fragment
+        android:id="@+id/analyticsUserInputFragment"
+        android:name="de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment"
+        android:label="AnalyticsUserInputFragment"
+        tools:layout="@layout/analytics_ppa_userinfo_input_fragment">
+        <argument
+            android:name="type"
+            app:argType="de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment$InputType" />
+    </fragment>
+    <fragment
+        android:id="@+id/onboardingDeltaAnalyticsFragment"
+        android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaAnalyticsFragment"
+        android:label="OnboardingDeltaAnalyticsFragment"
+        tools:layout="@layout/fragment_onboarding_delta_ppa">
+        <action
+            android:id="@+id/action_onboardingDeltaAnalyticsFragment_to_analyticsUserInputFragment"
+            app:destination="@id/analyticsUserInputFragment" />
+        <action
+            android:id="@+id/action_onboardingDeltaAnalyticsFragment_to_ppaMoreInfoFragment"
+            app:destination="@id/ppaMoreInfoFragment" />
+    </fragment>
+    <fragment
+        android:id="@+id/ppaMoreInfoFragment"
+        android:name="de.rki.coronawarnapp.datadonation.analytics.ui.PpaMoreInfoFragment"
+        android:label="PpaMoreInfoFragment"
+        tools:layout="@layout/fragment_ppa_more_info">
+    </fragment>
+    <fragment
+        android:id="@+id/settingsPrivacyPreservingAnalyticsFragment"
+        android:name="de.rki.coronawarnapp.ui.settings.analytics.SettingsPrivacyPreservingAnalyticsFragment"
+        android:label="SettingsPrivacyPreservingAnalyticsFragment"
+        tools:layout="@layout/fragment_settings_privacy_preserving_analytics">
+        <action
+            android:id="@+id/action_settingsPrivacyPreservingAnalyticsFragment_to_analyticsUserInputFragment"
+            app:destination="@id/analyticsUserInputFragment" />
+        <action
+            android:id="@+id/action_settingsPrivacyPreservingAnalyticsFragment_to_ppaMoreInfoFragment"
+            app:destination="@id/ppaMoreInfoFragment" />
+    </fragment>
 </navigation>
diff --git a/Corona-Warn-App/src/main/res/navigation/nav_graph_onboarding.xml b/Corona-Warn-App/src/main/res/navigation/nav_graph_onboarding.xml
index 68b9812d77469fa7400552b5c9b030f8679fc9c2..3c128a61f3a3f9b98e3b3efcd31e7167af410cf7 100644
--- a/Corona-Warn-App/src/main/res/navigation/nav_graph_onboarding.xml
+++ b/Corona-Warn-App/src/main/res/navigation/nav_graph_onboarding.xml
@@ -3,8 +3,23 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/nav_graph_onboarding"
-    app:startDestination="@id/onboardingFragment">
+    app:startDestination="@id/loadingFragment">
 
+    <fragment
+        android:id="@+id/loadingFragment"
+        android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingLoadingFragment"
+        android:label="LoadingFragment"
+        tools:layout="@layout/onboaring_loading_layout">
+        <action
+            android:id="@+id/action_loadingFragment_to_newReleaseInfoFragment"
+            app:destination="@id/newReleaseInfoFragment" />
+        <action
+            android:id="@+id/action_loadingFragment_to_onboardingDeltaInteroperabilityFragment"
+            app:destination="@id/onboardingDeltaInteroperabilityFragment2" />
+        <action
+            android:id="@+id/action_loadingFragment_to_onboardingFragment"
+            app:destination="@id/onboardingFragment" />
+    </fragment>
     <fragment
         android:id="@+id/onboardingFragment"
         android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingFragment"
@@ -18,7 +33,11 @@
         android:id="@+id/onboardingNotificationsFragment"
         android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingNotificationsFragment"
         android:label="OnboardingNotificationsFragment"
-        tools:layout="@layout/fragment_onboarding_notifications" />
+        tools:layout="@layout/fragment_onboarding_notifications">
+        <action
+            android:id="@+id/action_onboardingNotificationsFragment_to_onboardingAnalyticsFragment"
+            app:destination="@id/onboardingAnalyticsFragment" />
+    </fragment>
     <fragment
         android:id="@+id/onboardingPrivacyFragment"
         android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingPrivacyFragment"
@@ -46,4 +65,74 @@
             android:id="@+id/action_onboardingTracingFragment_to_onboardingTestFragment"
             app:destination="@id/onboardingTestFragment" />
     </fragment>
+    <fragment
+        android:id="@+id/onboardingAnalyticsFragment"
+        android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingAnalyticsFragment"
+        android:label="OnboardingAnalyticsFragment"
+        tools:layout="@layout/fragment_onboarding_ppa">
+        <action
+            android:id="@+id/action_onboardingAnalyticsFragment_to_analyticsUserInputFragment"
+            app:destination="@id/analyticsUserInputFragment" />
+        <action
+            android:id="@+id/action_onboardingAnalyticsFragment_to_ppaMoreInfoFragment"
+            app:destination="@id/ppaMoreInfoFragment" />
+    </fragment>
+    <fragment
+        android:id="@+id/analyticsUserInputFragment"
+        android:name="de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment"
+        android:label="AnalyticsUserInputFragment"
+        tools:layout="@layout/analytics_ppa_userinfo_input_fragment">
+        <argument
+            android:name="type"
+            app:argType="de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment$InputType" />
+    </fragment>
+    <fragment
+        android:id="@+id/ppaMoreInfoFragment"
+        android:name="de.rki.coronawarnapp.datadonation.analytics.ui.PpaMoreInfoFragment"
+        android:label="PpaMoreInfoFragment"
+        tools:layout="@layout/fragment_ppa_more_info" />
+
+    <!-- New Release -->
+    <fragment
+        android:id="@+id/newReleaseInfoFragment"
+        android:name="de.rki.coronawarnapp.release.NewReleaseInfoFragment"
+        tools:layout="@layout/new_release_info_screen_fragment"
+        android:label="NewReleaseInfoFragment">
+        <argument
+            android:name="comesFromInfoScreen"
+            android:defaultValue="false"
+            app:argType="boolean" />
+        <action
+            android:id="@+id/action_newReleaseInfoFragment_to_onboardingDeltaAnalyticsFragment"
+            app:destination="@id/onboardingDeltaAnalyticsFragment"
+            app:popUpTo="@id/loadingFragment"
+            app:popUpToInclusive="false" />
+    </fragment>
+    <fragment
+        android:id="@+id/onboardingDeltaAnalyticsFragment"
+        android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaAnalyticsFragment"
+        android:label="OnboardingDeltaAnalyticsFragment"
+        tools:layout="@layout/fragment_onboarding_delta_ppa">
+        <action
+            android:id="@+id/action_onboardingDeltaAnalyticsFragment_to_analyticsUserInputFragment"
+            app:destination="@id/analyticsUserInputFragment" />
+        <action
+            android:id="@+id/action_onboardingDeltaAnalyticsFragment_to_ppaMoreInfoFragment"
+            app:destination="@id/ppaMoreInfoFragment" />
+    </fragment>
+    <fragment
+        android:id="@+id/onboardingDeltaInteroperabilityFragment2"
+        android:name="de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaInteroperabilityFragment"
+        android:label="OnboardingDeltaInteroperabilityFragment"
+        tools:layout="@layout/fragment_onboarding_delta_interoperability">
+        <action
+            android:id="@+id/action_onboardingDeltaInteroperabilityFragment_to_informationTermsFragment"
+            app:destination="@id/informationTermsFragment" />
+    </fragment>
+
+    <fragment
+        android:id="@+id/informationTermsFragment"
+        android:name="de.rki.coronawarnapp.ui.information.InformationTermsFragment"
+        android:label="@layout/fragment_information_terms"
+        tools:layout="@layout/fragment_information_terms" />
 </navigation>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-bg/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-bg/contact_diary_strings.xml
index 522251e963b9b9e893f8462a82769a6786c13c17..7b9a7397daa1aebab0d499105fe5c82e02457ee4 100644
--- a/Corona-Warn-App/src/main/res/values-bg/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-bg/contact_diary_strings.xml
@@ -22,9 +22,9 @@
     <!-- XTXT: Body for the contact diary card displayed in the homescreen  -->
     <string name="contact_diary_homescreen_card_body">"Отбелязвайте къде сте били и с кого сте се срещнали."</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_homescreen_card_button_text">"Управление на дневника"</string>
+    <string name="contact_diary_homescreen_card_button_text">"Отваряне на дневника"</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_onboarding_button_text">"Управление на дневника"</string>
+    <string name="contact_diary_onboarding_button_text">"Отваряне на дневника"</string>
 
     <!-- XTXT: Title for the contact diary onboarding screen -->
     <string name="contact_diary_information_card_title">"Отбелязвайте Вашите контакти."</string>
@@ -59,7 +59,7 @@
     <!-- XTXT: Title for contact diary overview screen -->
     <string name="contact_diary_overview_title">"Дневник на контактите"</string>
     <!-- XTXT: Subtitle for contact diary overview screen -->
-    <string name="contact_diary_overview_subtitle">"Отбележете хората, които сте срещнали, и местата, които сте посетили."</string>
+    <string name="contact_diary_overview_subtitle">"Отбелязвайте хората, които сте срещали, и местата, които сте посетили. Ако за даден ден се появи информация за риск, може да предупредите хората, с които сте контактували в този ден дори ако те самите на използват приложението Corona-Warn-App."</string>
     <!-- XTXT: Header for contact diary overview screen -->
     <string name="contact_diary_overview_header">"Начална страница"</string>
 
@@ -132,4 +132,5 @@
     <string name="accessibility_action_deselect">"Отмяна на избора"</string>
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Редактиране"</string>
+
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-bg/release_info_strings.xml b/Corona-Warn-App/src/main/res/values-bg/release_info_strings.xml
index 3650dfb4b24615fb4156b7f1e4464b7f7fc48a19..22bc2a703de4e25aa7f6b5b9da3e47385ea552b3 100644
--- a/Corona-Warn-App/src/main/res/values-bg/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-bg/release_info_strings.xml
@@ -11,5 +11,47 @@
     <string name="release_info_version_body">"Наред с корекциите на грешки настоящата актуализация съдържа също и нови и разширени функции."</string>
     <!-- XBUT: Continue button for the release info screen -->
     <string name="release_info_continue_button">"Напред"</string>
+    <!-- XTXT: New release info footer -->
+    <string name="new_release_bottom">"Може да видите промените в тази версия, като отворите настройките на приложението и изберете “Нови функции”."</string>
+
+    <!-- XHED: Titles for the release info screen bullet points -->
+    <string-array name="new_release_title">
+        <item>"Връзка към анкетата на института “Роберт Кох”"</item>
+        <item>"Съгласие за споделяне на данни (незадължително)"</item>
+        <item>"Промени в плочките за риск"</item>
+        <item>"Продължаване на регистрирането на излагания на риск след споделянето на Вашите случайно генерирани ИД кодове"</item>
+        <item>"Внедряване на табове"</item>
+        <item>"Допълнителна информация относно процедурата за тестване"</item>
+    </string-array>
+
+    <!-- XTXT: Text bodies for the release info screen bullet points -->
+    <string-array name="new_release_body">
+        <item>"Ако Вашето ниво на риск от заразяване е повишено, можете да отворите и попълните анкетата на института “Роберт Кох” от самото приложение."</item>
+        <item>"Вече имате възможност да споделяте своите данни за използването на приложението. Това ще ни помогне да го подобрим."</item>
+        <item>"Малки промени в текстовете на плочките за риск."</item>
+        <item>"След като споделите Вашите случайно генерирани ИД кодове, можете да решите дали и кога бихте желали да включите пак регистрирането на излаганията на риск."</item>
+        <item>"Вече има отделен таб за Вашия дневник на контактите. Така имате бърз достъп до дневника и можете лесно да преминавате от него към началния екран на приложението."</item>
+        <item>"В приложението вече има по-подробна информация относно процедурата за тестване."</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
 
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-bg/strings.xml b/Corona-Warn-App/src/main/res/values-bg/strings.xml
index 2bad84480a808d63fd6388b35ba5715ad6935bb8..f05ceb616eafe5dea2ba8cb70c7a7557e5b10e56 100644
--- a/Corona-Warn-App/src/main/res/values-bg/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-bg/strings.xml
@@ -150,6 +150,15 @@
     <string name="risk_card_low_risk_no_encounters_body">"Няма излагане на риск"</string>
     <!-- XTXT: risk card - Low risk state - Days with low risk encounters -->
     <plurals name="risk_card_low_risk_encounter_days_body">
+        <item quantity="one">"Брой дни с излагания с нисък риск - %1$d"</item>
+        <item quantity="other">"Брой дни с излагания с нисък риск - %1$d"</item>
+        <item quantity="zero">"Брой дни с излагания с нисък риск - %1$d"</item>
+        <item quantity="two">"Брой дни с излагания с нисък риск - %1$d"</item>
+        <item quantity="few">"Брой дни с излагания с нисък риск - %1$d"</item>
+        <item quantity="many">"Брой дни с излагания с нисък риск - %1$d"</item>
+    </plurals>
+    <!-- XACT: risk card - Low risk state - Days with low risk encounters description -->
+    <plurals name="risk_card_low_risk_encounter_days_body_description">
         <item quantity="one">"Брой дни с излагания на нисък риск: 1"</item>
         <item quantity="other">"Брой дни с излагания с нисък риск - %1$d"</item>
         <item quantity="zero">"Брой дни с излагания с нисък риск - %1$d"</item>
@@ -157,9 +166,22 @@
         <item quantity="few">"Брой дни с излагания с нисък риск - %1$d"</item>
         <item quantity="many">"Брой дни с излагания с нисък риск - %1$d"</item>
     </plurals>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and single day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"На %1$s"</string>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and more than one day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"Най-близка дата - %1$s"</string>
 
     <!-- XTXT: risk card - High risk state - Days with high risk encounters -->
     <plurals name="risk_card_high_risk_encounter_days_body">
+        <item quantity="one">"Брой дни с излагания с повишен риск - %1$d"</item>
+        <item quantity="other">"Брой дни с излагания с повишен риск - %1$d"</item>
+        <item quantity="zero">"Брой дни с излагания с повишен риск - %1$d"</item>
+        <item quantity="two">"Брой дни с излагания с повишен риск - %1$d"</item>
+        <item quantity="few">"Брой дни с излагания с повишен риск - %1$d"</item>
+        <item quantity="many">"Брой дни с излагания с повишен риск - %1$d"</item>
+    </plurals>
+    <!-- XACT: risk card - High risk state - Days with high risk encounters description -->
+    <plurals name="risk_card_high_risk_encounter_days_body_description">
         <item quantity="one">"Брой дни с излагания на повишен риск: 1"</item>
         <item quantity="other">"Брой дни с излагания с повишен риск - %1$d"</item>
         <item quantity="zero">"Брой дни с излагания с повишен риск - %1$d"</item>
@@ -167,6 +189,10 @@
         <item quantity="few">"Брой дни с излагания с повишен риск - %1$d"</item>
         <item quantity="many">"Брой дни с излагания с повишен риск - %1$d"</item>
     </plurals>
+
+    <!-- XTXT: risk card - High risk state - Most recent date with high risk and single day of encounters -->
+    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"На %1$s"</string>
+
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and more than one day of encounters -->
     <string name="risk_card_high_risk_most_recent_body_encounters_on_more_than_one_day">"Най-близка дата - %1$s"</string>
 
@@ -294,6 +320,14 @@
     <string name="risk_details_behavior_body_wear_mask">"Носете маска при контакт с други хора."</string>
     <!-- XMSG: risk details - stay 1,5 away, something like a bullet point -->
     <string name="risk_details_behavior_body_stay_away">"Спазвайте дистанция от поне 1,5 м от околните."</string>
+
+    <!-- XMSG: risk details - link to faq, something like a bullet point -->
+    <string name="risk_details_increased_risk_faq_link_text">"Ако се тествате, ще получите допълнителна информация относно процедурата за тестване в ЧЗВ."</string>
+    <!-- XTXT: Explanation screen increased risk level link label - HAS TO MATCH the link text above -->
+    <string name="risk_details_increased_risk_faq_link_label">"ЧЗВ"</string>
+    <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
+    <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/en/faq/#red_card_how_to_test"</string>
+
     <!-- XMSG: risk details - cough/sneeze, something like a bullet point -->
     <string name="risk_details_behavior_body_cough_sneeze">"Кихайте и кашляйте в кърпичка или в сгъвката на лакътя си."</string>
     <!-- XMSG: risk details - contact your doctor, bullet point -->
@@ -312,6 +346,8 @@
     <string name="risk_details_information_body_period_logged">"Вашият риск от заразяване може да се изчисли само за периодите, в които регистрирането на излагания на риск е било активно. Затова тази функция трябва да бъде активирана постоянно."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged_assessment">"Регистрирането на излагания на риск покрива последните 14 дни. За този период от време функцията е била активна на Вашия смартфон в продължение на %1$s дни. Приложението изтрива автоматично по-старите регистри, тъй като те вече не могат да служат за предотвратяване на заразяването."</string>
+    <!-- XTXT: risk details - infection period days logged/14 -->
+    <string name="risk_details_information_active_tracing_days_circle_progress">"%s/14"</string>
     <!-- XHED: risk details - how your risk level was calculated, below behaviors -->
     <string name="risk_details_subtitle_infection_risk_past">"Ето как е изчислено Вашето ниво на риск."</string>
     <!-- XHED: risk details - how your risk level will be calculated, below behaviors -->
@@ -428,13 +464,13 @@
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_button_next">"Активиране на регистрирането на излагания на риск"</string>
     <!-- XTXT: onboarding(tracing) - dialog about tracing permission declined -->
-    <string name="onboarding_tracing_dialog_headline">"Оторизация"</string>
+    <string name="onboarding_tracing_dialog_headline">"Не желаете да активирате?"</string>
     <!-- YMSI: onboarding(tracing) - dialog about tracing -->
-    <string name="onboarding_tracing_dialog_body">"Това означава, че приложението Corona-Warn-App не може да изпраща или получава известия за вашия статус на риск от заразяване с COVID-19. Тази настройка може да се промени по всяко време."</string>
+    <string name="onboarding_tracing_dialog_body">"Ако не активирате регистрирането на излагания на риск, приложението не може да определи Вашето ниво на риск и няма да Ви изпраща никаква информация относно него. Може да промените тази настройка по всяко време."</string>
     <!-- XBUT: onboarding(tracing) - positive button (right) -->
     <string name="onboarding_tracing_dialog_button_positive">"Да не се активира"</string>
     <!-- XBUT: onboarding(tracing) - negative button (right) -->
-    <string name="onboarding_tracing_dialog_button_negative">"Назад"</string>
+    <string name="onboarding_tracing_dialog_button_negative">"Отказ"</string>
     <!-- XACT: onboarding(tracing) - dialog about background jobs header text -->
     <string name="onboarding_background_fetch_dialog_headline">"Фоновото опресняване за приложението е дезактивирано"</string>
     <!-- YMSI: onboarding(tracing) - dialog about background jobs -->
@@ -460,9 +496,9 @@
     <!-- XACT: onboarding(tracing) - illustraction description, header image -->
     <string name="onboarding_tracing_illustration_description">"Трима души са активирали регистрирането на излагания на риск и контактите им един с друг ще бъдат записани."</string>
     <!-- XHED: onboarding(tracing) - location explanation for bluetooth headline -->
-    <string name="onboarding_tracing_location_headline">"Разрешаване на достъп до данните за местоположение"</string>
+    <string name="onboarding_tracing_location_headline">"Активиране на настройките за местоположение"</string>
     <!-- XTXT: onboarding(tracing) - location explanation for bluetooth body text -->
-    <string name="onboarding_tracing_location_body">"Не може да бъде осъществен достъп до Вашето местоположение. За да използвате Bluetooth, Google и/или Android изискват от Вас да предоставите достъп до местоположението на смартфона си."</string>
+    <string name="onboarding_tracing_location_body">"Приложението не може да определи къде се намирате, но някои версии на Android изискват настройката за местоположение да бъде активирана, за да използват режима на Bluetooth с ниска консумация на енергия."</string>
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_location_button">"Към настройките на устройството"</string>
     <!-- XACT: Onboarding (test) page title -->
@@ -486,6 +522,98 @@
     <!-- XACT: onboarding(notifications) - illustraction description, header image -->
     <string name="onboarding_notifications_illustration_description">"Жена, която получава известие от приложението Corona-Warn-App."</string>
 
+    <!-- XACT: onboarding privacy preserving analytics (ppa) - illustraction description, header image -->
+    <string name="onboarding_ppa_illustration_description">"Човек държи смартфон в ръка"</string>
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
+    <string name="onboarding_ppa_headline">"Споделяне на данни"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Покажете ни как използвате приложението. Това ще ни помогне да оценим неговата ефективност."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
+    <string name="onboarding_ppa_body">"Можете да ни помогнете да подобрим приложението Corona-Warn-App, като споделите с института „Роберт Кох“ данните за Вашето използване на приложението. Това ще помогне на института да оцени ефективността му, както и да подобри функциите и удобството при неговото използване."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
+    <string name="onboarding_ppa_state_title">"В коя федерална провинция се намирате (незадължително)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - district title -->
+    <string name="onboarding_ppa_district_title">"В кой окръг се намирате (незадължително)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - regional evaluation text -->
+    <string name="onboarding_ppa_regional_evaluation_text">"Ако посочите федерална провинция и регион, ще можем да правим и регионални анализи."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
+    <string name="onboarding_ppa_age_title">"Вашата възраст (незадължително)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="onboarding_ppa_more_info_title">"Подробна информация относно обработката на тези данни и рисковете относно защитата на данните в САЩ и други държави."</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
+    <string name="onboarding_ppa_consent_donate_button">"Споделяне на данни"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
+    <string name="onboarding_ppa_consent_not_donate_button">"Без споделяне на данни"</string>
+
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - more info - headline -->
+    <string name="onboarding_ppa_more_info_headline">"Подробна информация относно споделянето на данни"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - consent title -->
+    <string name="onboarding_ppa_more_info_decline_processing_text">"Моля, ако не желаете да предоставите съгласие данните Ви да бъдат прехвърляни в трета държава, не натискайте „Приемам“. Така ще откажете да използвате функцията за споделяне на данни, без това да Ви попречи да използвате приложението."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
+    <string name="onboarding_ppa_more_info_data_processing_title">"Обработка на данните в процеса на споделяне на данни"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
+    <string name="onboarding_ppa_more_info_data_processing_body">"Ако се съгласите да споделяте свои данни, приложението изпраща ежедневно такива до института „Роберт Кох“. Те ще ни помогнат да оценим ефективността на приложението, а извършеният върху тях анализ ще подпомогне следните подобрения:"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Подобряване на регистрирането на излагания - Бихме искали да подобрим точността и надеждността на техническото изчисление на рисковете от заразяване. За тази цел ще направим оценка на информацията относно излаганията на риск и предупрежденията, които виждате. Това ще ни даде възможност да подобрим метода на изчисление."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Подобряване на ориентацията на потребителите в приложението - Бихме искали да направим приложението още по-лесно за използване. За тази цел ще направим оценка на информацията относно отделните стъпки, които потребителите извършват в него. Това ще ни помогне да направим етикетите и информационните текстове по-ясни, а контролните елементи – по-леснодостъпни. Също така ще можем да съобразим оформлението с различните модели смартфони."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 3 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Активиране на информацията и помощта в приложението - Бихме искали да можем да преценим дали възникват проблеми при използване, свързано с определени пунктове и лаборатории за тестване или региони. Можем да установим това, ако например споделените данни показват закъснение при предоставянето на резултати от тестове в определени региони. Бихме могли също да уведомяваме съответните органи по обществено здравеопазване, особено при потенциални технически проблеми."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 4 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Подобряване на статистиката за хода на пандемията - Вашите данни могат да ни помогнат да предоставим аналитични данни относно разпространението на пандемията във времето и пространството, както и да ни дадат възможност да реагираме по-бързо на определени тенденции."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data title -->
+    <string name="onboarding_ppa_more_info_rki_data_title">"За тази цел институтът „Роберт Кох“ събира следните данни:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 1 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"Дата на предаване на данните"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 2 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Промени в хронологията на предупрежденията спрямо предишния ден"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 3 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Показвано ниво на риск в момента на предаване на данните"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 4 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"База за изчисление на нивото на риск в контекста на дадено излагане"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 1 -->
+    <string name="onboarding_ppa_more_info_rki_data_body_1">"Ако сте извлекли резултат от тест чрез приложението:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 5 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Положителен или отрицателен е полученият чрез приложението резултат от тест"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 6 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Изчисленият риск в момента на регистриране на теста"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 7 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Времето между Вашето последно излагане с повишен риск и регистрирането на теста"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 8 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Времето между последното известие за повишен риск и регистрирането на теста"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 9 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Информация относно това дали сте споделили резултата от теста си, за да предупредите останалите потребители"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 2-->
+    <string name="onboarding_ppa_more_info_rki_data_body_2">"Ако сте предупредили останалите потребители за потенциално излагане на риск:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 10 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Информация относно това дали сте отказали стъпките за предупреждаване на останалите потребители"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 11 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Предоставили ли сте подробна информация за проявените от Вас симптоми"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 12 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Има ли предоставено от Вас съгласие за предупреждаване на останалите потребител"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 13 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Вашето последно известие във връзка с предупреждаването на останалите потребители"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 14 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"След колко часа сте получили резултата от теста си"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 15 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Колко дни са изминали от последното известие за повишен риск"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 16 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Колко часа са минали от момента на регистриране на теста Ви"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info body-->
+    <string name="onboarding_ppa_more_info_other_info_body">"Друга информация:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Посочената от Вас възрастова група"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Времето между Вашето последно излагане с повишен риск и регистрирането на теста"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Информация относно това дали сте споделили резултата от теста си, за да предупредите останалите потребители"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
+    <string name="onboarding_ppa_more_info_much_privacy_body">"Тази информация не може да се използва за установяване на самоличността Ви – Вашата анонимност ще бъде запазена.\nДанните ще бъдат анализирани за статистически цели и няма да се използват за създаване на профил."</string>
+
+
+
+
+
     <!-- ####################################
              Onboarding sixteen include
    ###################################### -->
@@ -642,6 +770,14 @@
     <!-- XHED : settings(background priority) - headline on card about the current status and what to do -->
     <string name="settings_background_priority_card_headline">"Промяна на приоритетната работа във фонов режим"</string>
 
+    <!-- XTXT: settings(privacy preserving analytics) - text in row on settings overview -->
+    <string name="settings_privacy_preserving_analytics_body_description">"Разрешете да се изпращат данни за това как използвате приложението"</string>
+    <!-- XHED: settings(background priority) - Privacy preserving analytics page title -->
+    <string name="settings_privacy_preserving_analytics_title">"Споделяне на данни"</string>
+
+    <!-- XTXT: privacy preserving analytics settings switch subtitle  -->
+    <string name="settings_analytics_switch_subtitle">"Споделяне на потребителски данни"</string>
+
     <!-- ####################################
                App Information
     ###################################### -->
@@ -770,7 +906,7 @@
     <!-- XHED: Dialog title for already paired test error: qr -->
     <string name="submission_error_dialog_web_test_paired_title">"Невалиден QR код"</string>
     <!-- XMSG: Dialog body for already paired test error: qr -->
-    <string name="submission_error_dialog_web_test_paired_body">"QR кодът е невалиден или вече е регистриран на друг смартфон. Ще получите резултата си от център за тестване или лаборатория, независимо от валидността на QR кода. Ако Ви бъде поставена диагноза \"коронавирус\", службата за обществено осигуряване ще Ви уведоми за това."</string>
+    <string name="submission_error_dialog_web_test_paired_body">"QR кодът е невалиден или вече е регистриран на друг смартфон. Ще получите резултата си от център за тестване или лаборатория, независимо от валидността на QR кода. Ако Ви бъде поставена диагноза \"коронавирус\", службата за обществено здравеопазване ще Ви уведоми за това."</string>
     <!-- XHED: Dialog title for already paired test error: tan -->
     <string name="submission_error_dialog_web_test_paired_title_tan">"ТАН кодът е невалиден"</string>
     <!-- XMSG: Dialog body for already paired test via tan - error: tan -->
@@ -830,7 +966,7 @@
     <!-- XHED: Dialog headline for invalid QR code  -->
     <string name="submission_qr_code_scan_invalid_dialog_headline">"Невалиден QR код"</string>
     <!-- YTXT: Dialog Body text for invalid QR code -->
-    <string name="submission_qr_code_scan_invalid_dialog_body">"QR кодът е невалиден или вече е регистриран на друг смартфон. Ще получите резултата си от център за тестване или лаборатория, независимо от валидността на QR кода. Ако Ви бъде поставена диагноза \"коронавирус\", службата за обществено осигуряване ще бъде уведомена за това по установения от правните норми канал и ще се свърже с Вас."</string>
+    <string name="submission_qr_code_scan_invalid_dialog_body">"QR кодът е невалиден или вече е регистриран на друг смартфон. Ще получите резултата си от център за тестване или лаборатория, независимо от валидността на QR кода. Ако Ви бъде поставена диагноза \"коронавирус\", службата за обществено здравеопазване ще бъде уведомена за това по установения от правните норми канал и ще се свърже с Вас."</string>
     <!-- XBUT: Dialog(Invalid QR code) - positive button (right) -->
     <string name="submission_qr_code_scan_invalid_dialog_button_positive">"Моля, опитайте отново."</string>
     <!-- XBUT: Dialog(Invalid QR code) - negative button (left) -->
@@ -868,6 +1004,8 @@
     <string name="submission_consent_main_third_point">"Вашата самоличност няма да бъде разкрита. Другите потребители няма да узнаят кой е споделил резултата от теста си."</string>
     <!-- YTXT: Body for consent main section fourth point  -->
     <string name="submission_consent_main_fourth_point">"За да дадете съгласието си, трябва да имате навършени 16 години."</string>
+    <!-- YTXT: Content Description for the illustration  -->
+    <string name="submission_consent_main_illustration_description">"Човек държи смартфон. QR кодът на теста е кодът, който трябва да бъде сканиран."</string>
 
     <!-- Submission Test Result -->
     <!-- XHED: Page headline for test result  -->
@@ -881,7 +1019,7 @@
     <!-- XHED: Page headline for pending test result next steps  -->
     <string name="submission_test_result_pending_steps_waiting_heading">"Все още няма резултат от теста Ви."</string>
     <!-- YTXT: Body text for next steps section of waiting test result page -->
-    <string name="submission_test_result_pending_steps_waiting_body">"Резултатът от Вашия тест ще се покаже в приложението веднага щом бъде готов.\n\nТой ще Ви бъде изпратен също и извън приложението. Службата за обществено осигуряване ще Ви уведоми, ако е положителен.\n\nАко получите такова уведомление, моля изтрийте теста, който в момента е регистриран в приложението. Позвънете на номера, показан под “Заявка за ТАН код”, за да получите ТАН. Използвайте кода, за да регистрирате своя резултат в приложението и да предупредите останалите потребители."</string>
+    <string name="submission_test_result_pending_steps_waiting_body">"Резултатът от Вашия тест ще се покаже в приложението веднага щом бъде готов.\n\nТой ще Ви бъде изпратен също и извън приложението. Службата за обществено здравеопазване ще Ви уведоми, ако е положителен.\n\nАко получите такова уведомление, моля изтрийте теста, който в момента е регистриран в приложението. Позвънете на номера, показан под “Заявка за ТАН код”, за да получите ТАН. Използвайте кода, за да регистрирате своя резултат в приложението и да предупредите останалите потребители."</string>
     <!-- XBUT: test result pending : refresh button -->
     <string name="submission_test_result_pending_refresh_button">"Актуализиране"</string>
     <!-- XBUT: test result pending : remove the test button -->
@@ -917,7 +1055,7 @@
     <!-- XHED: Dialog title for test removal  -->
     <string name="submission_test_result_dialog_remove_test_title">"Тестът може да се сканира само веднъж."</string>
     <!-- YTXT: Dialog text for test removal -->
-    <string name="submission_test_result_dialog_remove_test_message">"Ако изтриете теста, повече няма да можете да извлечете данните за резултата си. Ще получите резултата си от център за тестване или лаборатория, независимо от валидността на QR кода. Ако Ви бъде поставена диагноза \"коронавирус\", службата за обществено осигуряване ще бъде уведомена за това по установения от правните норми канал и ще се свърже с Вас."</string>
+    <string name="submission_test_result_dialog_remove_test_message">"Ако изтриете теста, повече няма да можете да извлечете данните за резултата си. Ще получите резултата си от център за тестване или лаборатория, независимо от валидността на QR кода. Ако Ви бъде поставена диагноза \"коронавирус\", службата за обществено здравеопазване ще бъде уведомена за това по установения от правните норми канал и ще се свърже с Вас."</string>
     <!-- XBUT: Positive button for test removal -->
     <string name="submission_test_result_dialog_remove_test_button_positive">"Изтриване"</string>
     <!-- XBUT: Negative button for test removal -->
@@ -1038,7 +1176,7 @@
     <!-- YTXT: text after submission: contagious -->
     <string name="submission_done_contagious">"От службата за обществено здравеопазване (Gesundheitsamt) ще се свържат с Вас в следващите няколко дни."</string>
     <!-- YTXT: text after submission: isolate -->
-    <string name="submission_done_isolate">"Необходимо е да се самоизолирате."</string>
+    <string name="submission_done_isolate">"Вие сте носител на заразата. Необходимо е да се самоизолирате."</string>
     <!-- XHED: Title for further info -->
     <string name="submission_done_further_info_title">"Още информация:"</string>
     <!-- YTXT: submission done further info bullet points -->
@@ -1198,6 +1336,24 @@
     <!-- YTXT: text for share result card-->
     <string name="submission_status_card_positive_result_share">"Споделете своите случайни ИД кодове, за да предупредите останалите потребители."</string>
 
+    <!-- Reenable risk card -->
+    <!-- XHED: Card title for re-enable risk card -->
+    <string name="reenable_risk_card_title">"Проверката за излагане на риск е спряна"</string>
+    <!-- YTXT: Body text for test registration date -->
+    <string name="reenable_risk_card_test_registration_string">"Дата на регистриране на теста: %s"</string>
+    <!-- YTXT: Description text for re-enable risk card -->
+    <string name="reenable_risk_card_description_text">"Автоматичната проверка за излагане на риск е спряна, защото Ви е била поставена диагноза “коронавирус” и понастоящем сте в изолация. Можете да активирате проверката отново по всяко време, като в този случай регистрираният от Вас тест ще бъде изтрит автоматично."</string>
+    <!-- XBUT: Button for re-enabling risk calculation -->
+    <string name="reenable_risk_card_button_text">"Включване на проверката за излагане на риск "</string>
+    <!-- XHED: Dialog title for reactivate risk calculation  -->
+    <string name="dialog_reactivate_risk_calculation_title">"Активиране на проверката за излагане на риск"</string>
+    <!-- YTXT: Dialog text for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_message">"Текущия Ви тест ще бъде изтрит от приложението. Ако желаете, може да регистрирате нов тест."</string>
+    <!-- XBUT: Positive button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_positive">"Активиране"</string>
+    <!-- XBUT: Negative button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_negative">"Отказ"</string>
+
     <!-- Test Result Card -->
     <string name="test_result_card_headline">"Вашата диагноза:"</string>
     <!-- YTXT: virus name text -->
@@ -1239,15 +1395,15 @@
     <!-- YTXT: Text for consent given -->
     <string name="submission_test_result_available_text_consent_given">"Благодарим Ви, че се съгласихте да споделите резултата от Вашия тест и така да помогнете, като предупредите останалите. \n\n"<b>"В следващата стъпка, моля, споделете резултата от теста си, като натиснете \"Споделяне”."</b></string>
     <!-- XHED: Close screen popup title for consent given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_given">"Желаете ли отмяна?"</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_given">"Потвърждавате ли, че желаете да отмените процеса?"</string>
     <!-- XTXT: Close screen popup text for consent given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_given">"Въведените от Вас данни няма да бъдат запазени."</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_given">"Важно:\nНа път сте да отмените този процес.\nВсе още не сте предупредили останалите. Моля, завършете процеса, за да помогнете на останалите да се предпазят."</string>
     <!-- YTXT: Text for consent NOT given -->
     <string name="submission_test_result_available_text_consent_not_given">"Избрали сте да не споделяте резултата от теста си. Останалите няма да бъдат предупредени. \n\nВ следващата стъпка можете да промените решението си и да споделите резултата от теста си, за да помогнете да се спре разпространението на коронавируса и да предпазите останалите."</string>
     <!-- XHED: Close screen popup title for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Важно:\nНа път сте да отмените този процес.\nВсе още не сте предупредили останалите. Моля, завършете процеса, за да помогнете на останалите да се предпазят."</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Желаете ли да отмените?"</string>
     <!-- XTXT: Close screen popup text for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Потвърждавате ли, че желаете да отмените процеса?"</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Въведените от Вас данни няма да бъдат запазени."</string>
     <!-- XBUT: Close screen popup cancel button -->
     <string name="submission_test_result_available_close_dialog_cancel_button">"Отказ"</string>
     <!-- XBUT: Close screen popup continue button -->
@@ -1291,7 +1447,7 @@
     <!-- XHED: Title for submission statistics card -->
     <string name="statistics_card_submission_title">"Лица, изпратили предупреждения"</string>
     <!-- XTXT: Text displayed in the bottom of submission statistics card-->
-    <string name="statistics_card_submission_bottom_text">"Относно приложението Corona-Warn-App"</string>
+    <string name="statistics_card_submission_bottom_text">"чрез приложението Corona-Warn-App"</string>
 
     <!-- XTXT: Timestamp refers to today's date in submission and infections cards -->
     <string name="statistics_primary_value_today">"Днес"</string>
@@ -1313,7 +1469,7 @@
     <!-- XHED: Explanation screen title -->
     <string name="statistics_explanation_title">"Показатели"</string>
     <!-- XHED: Explanation screen subtitle -->
-    <string name="statistics_explanation_subtitle">"Пояснение на статистиката"</string>
+    <string name="statistics_explanation_subtitle">"Разяснение на националната статистиката"</string>
     <!-- XHED: Explanation screen confirmed new infections title -->
     <string name="statistics_explanation_confirmed_new_infection_title">"Потвърдени нови случаи на заразяване"</string>
     <!-- XTXT: Explanation screen confirmed new infections text -->
@@ -1331,7 +1487,7 @@
     <!-- XTXT: Explanation screen seven day r-value text -->
     <string name="statistics_explanation_seven_day_r_value_text">"Репродуктивното число R указва средно колко души заразява едно заразено лице. Текущата стойност взема предвид данните от последните 5 дни. \n\nПовече информация може да намерите в раздел ЧЗВ.\nЧЗВ относно статистиката."</string>
     <!-- XTXT: Explanation screen seven day r-value link label  - the characters have to match the last part of the text label above -->
-    <string name="statistics_explanation_seven_day_r_link_label">"ЧЗВ относно статистиката."</string>
+    <string name="statistics_explanation_seven_day_r_link_label">"ЧЗВ относно статистиката"</string>
     <!-- XHED: Explanation screen legend title -->
     <string name="statistics_explanation_legend_title">"Легенда"</string>
     <!-- XHED: Explanation screen period title -->
@@ -1613,5 +1769,112 @@
     <string name="statistics_trend_decreasing">"Тенденция: Надолу"</string>
     <!-- XTXT: Statistics trend stable (Accessibilty) -->
     <string name="statistics_trend_stable">"Тенденция: Стабилизиране"</string>
+    <!-- XHED: Title for BottomNav main screen title -->
+    <string name="bottom_nav_home_title">"Начален екран"</string>
+    <!-- XHED: Title for BottomNav diary screen title -->
+    <string name="bottom_nav_diary_title">"Дневник"</string>
+
+    <!-- ####################################
+           Data Donation & Survey
+    ###################################### -->
 
+    <!-- XHED: Title for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_title">"Анкета относно Corona-Warn-App"</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_content">"Помогнете ни да подобрим приложението, като отговорите на няколко лесни въпроса."</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_button_text">"Към анкетата"</string>
+
+    <!-- XHED: Title for the access survey button displayed at the bottom of the screen -->
+    <string name="datadonation_details_survey_consent_button_title">"Приемам"</string>
+    <!-- XHED: Text for the access survey title displayed at the top of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_title">"Анкета за оценяване и подобряване на приложениет Corona-Warn-App."</string>
+    <!-- XHED: Text for the access survey body displayed under the title of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_body"><b>"Помогнете ни да подобрим Corona-Warn-App, като попълните анкетата относно работата Ви с приложението. По този начин екипът от института “Роберт Кох” ще може да оцени ефективността на приложението, да го подобри, както и да разбере какво влияние оказват предупрежденията от приложението върху поведението на хората с повишено ниво на риск от заразяване."</b>"\n\nАнкетата е предназначена единствено за тези, чието приложение е отчело излагане с повишен риск. Можете да я попълните на уебсайта на института “Роберт Кох” – в следващата стъпка ще видите връзка към него. Преди това обаче трябва да потвърдим автентичността на приложението Ви, за което ни е необходимо Вашето съгласие.\n\nКогато опитате да отворите връзката, ще получите допълнителна информация за анкетата. Освен това отново ще поискаме Вашето изрично съгласие, преди да започнете да я попълвате."</string>
+
+    <!-- XHED: Title of the survey consent detail screen -->
+    <string name="datadonation_details_survey_consent_details_title">"Подробна информация относно обработката на данни при участие в анкетата"</string>
+
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"Часът, показван от Вашия смартфон, не съответства на текущия час. Моля, коригирайте това в настройките на устройството. Код на грешката: %1$s."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"Анкетата не може да бъде извлечена. Код на грешката: %1$s."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"Анкетата не може да бъде извлечена в момента. Моля, актуализирайте Google Play Services. Код на грешката: %1$s."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"Анкетата не може да бъде извлечена в момента. Моля, опитайте по-късно. Код на грешката: %1$s."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"Анкетата не може да бъде извлечена поради причини, свързани със сигурността. Може да попълните анкетата отново през следващия календарен месец. Код на грешката: %1$s."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Благодарим Ви, че се опитахте да помогнете! За съжаление, използвате устройство, което по технически причини не поддържа анкетното проучване. Код на грешката: %1$s."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"От съображения за сигурност можете да участвате в анкетата най-рано 24 часа, след като инсталирате или актуализирате приложението. Код на грешката: %1$s"</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"Вече сте попълнили анкетата. Може да правите това само веднъж месечно. Код на грешката: %1$s."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"Грешка"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"OK"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Зареждане на анкетата..."</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below"><b>"Относно анкетата на института “Роберт Кох”"</b></string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"Когато автентичността на Вашето приложение бъде потвърдена, то ще Ви препрати към уебсайта на института “Роберт Кох” чрез генерирана за Вас връзка към анкетата. Връзката съдържа еднократна парола, която се генерира от Вашето приложение Corona-Warn-App. Когато докоснете връзката и отворите уебсайта с анкетата, еднократната парола ще бъде запазена временно в браузъра Ви. Този екран съдържа допълнителна информация относно анкетата и бележки с указания – например за това как да стартирате анкетата. При стартирането на анкетата еднократната парола ще бъде изпратена към сървърите на Corona-Warn-App, където ще бъде обозначена като “използвана”. След това сървърът проверява дали може да попълните анкетата. По този начин се гарантира, че всеки отделен потребител ще попълни анкетата само веднъж."</string>
+
+    <!-- XHED: Analytics voluntary user input, age group toolbar title -->
+    <string name="analytics_userinput_agegroup_title">"Вашата възрастова група"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
+    <string name="analytics_userinput_agegroup_unspecified">"Без отговор"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
+    <string name="analytics_userinput_agegroup_0_to_29">"0-29 години"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
+    <string name="analytics_userinput_agegroup_30_to_59">"30-59 години"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
+    <string name="analytics_userinput_agegroup_from_60">"60+ години"</string>
+
+    <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
+    <string name="analytics_userinput_federalstate_title">"В коя федерална провинция се намирате"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_UNSPECIFIED -->
+    <string name="analytics_userinput_federalstate_unspecified">"Без отговор"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BW -->
+    <string name="analytics_userinput_federalstate_bw">"Баден-Вюртемберг"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BY -->
+    <string name="analytics_userinput_federalstate_by">"Бавария"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BE -->
+    <string name="analytics_userinput_federalstate_be">"Берлин"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BB -->
+    <string name="analytics_userinput_federalstate_bb">"Бранденбург"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HB -->
+    <string name="analytics_userinput_federalstate_hb">"Бремен"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HH -->
+    <string name="analytics_userinput_federalstate_hh">"Хамбург"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HE -->
+    <string name="analytics_userinput_federalstate_he">"Хесен"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_MV -->
+    <string name="analytics_userinput_federalstate_mv">"Мекленбург-Западна Померания"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NI -->
+    <string name="analytics_userinput_federalstate_ni">"Долна Саксония"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NRW -->
+    <string name="analytics_userinput_federalstate_nrw">"Северен Рейн-Вестфалия"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_RP -->
+    <string name="analytics_userinput_federalstate_rp">"Рейнланд-Пфалц"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SL -->
+    <string name="analytics_userinput_federalstate_sl">"Саарланд"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SN -->
+    <string name="analytics_userinput_federalstate_sn">"Саксония"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_ST -->
+    <string name="analytics_userinput_federalstate_st">"Саксония-Анхалт"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SH -->
+    <string name="analytics_userinput_federalstate_sh">"Шлезвиг-Холщайн"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_TH -->
+    <string name="analytics_userinput_federalstate_th">"Тюрингия"</string>
+
+    <!-- XHED: Analytics voluntary user input, district toolbar title -->
+    <string name="analytics_userinput_district_title">"В кой окръг се намирате"</string>
+    <!-- XTXT: Analytics voluntary user input, district: UNSPECIFIED -->
+    <string name="analytics_userinput_district_unspecified">"Без отговор"</string>
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml
index 55e9fd3cf70532716008f4629391f06177a258d9..2bf855a09b9124fc7a354ccbe4f0528bca6edf11 100644
--- a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml
@@ -143,6 +143,11 @@
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Bearbeiten"</string>
 
+    <!-- XACT: Add Person Button (description for screen readers) -->
+    <string name="accessibility_day_add_person">"Person hinzufügen"</string>
+    <!-- XACT: Add Location Button (description for screen readers) -->
+    <string name="accessibility_day_add_location">"Ort hinzufügen"</string>
+
     <!-- XBUT: Option - person encounter - below 15 Min -->
     <string name="contact_diary_person_encounter_duration_below_15_min">unter 15 Min</string>
     <!-- XBUT: Option - person encounter - above 15 Min -->
diff --git a/Corona-Warn-App/src/main/res/values-de/legal_strings.xml b/Corona-Warn-App/src/main/res/values-de/legal_strings.xml
index 91d2f39ff2b5c92a6d114ea9184149a1075cde39..de6248a18b15efc04b890a2fe7e2beca24aee64d 100644
--- a/Corona-Warn-App/src/main/res/values-de/legal_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/legal_strings.xml
@@ -53,7 +53,7 @@
     <!-- XHED: Title for the consent displayed above the button in the survey consent screen -->
     <string name="datadonation_details_survey_consent_info_card_title">"Ihr Einverständnis"</string>
     <!-- XTXT: Text for the consent body displayed above the button in the survey consent screen -->
-    <string name="datadonation_details_survey_consent_info_card_body">"Durch Antippen von „Einverstanden“ willigen Sie ein:\n\nBevor Ihnen der Teilnahmelink angezeigt werden kann, wird die Echtheit Ihrer App hierbei einmalig geprüft. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Google in die USA übermittelt, damit Google die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Weitere Angaben aus der App erhält Google  hierbei nicht. So wird sichergestellt, dass jeder Nutzer nur einmal an der Befragung teilnehmen kann und die Statistiken nicht verfälscht werden."</string>
+    <string name="datadonation_details_survey_consent_info_card_body">"Durch Antippen von „Einverstanden“ willigen Sie ein:\n\nBevor Ihnen der Teilnahmelink angezeigt werden kann, wird die Echtheit Ihrer App hierbei einmalig geprüft. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Google in die USA oder andere Drittländer übermittelt, damit Google die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Google kann damit möglicherweise auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat. Weitere Angaben aus der App erhält Google hierbei nicht. So wird sichergestellt, dass jeder Nutzer nur einmal an der Befragung teilnehmen kann und die Statistiken nicht verfälscht werden."</string>
     <!-- XTXT: First bullet point in the consent body displayed above the button in the survey consent screen -->
     <string name="datadonation_details_survey_consent_bullet_point_one">"Ihr Einverständnis ist freiwillig. Sie können die App vollständig nutzen, auch wenn Sie Ihr Einverständnis für die Zwecke der Befragung nicht erteilen."</string>
     <!-- XTXT: Second bullet point in the consent body displayed above the button in the survey consent screen -->
@@ -61,15 +61,29 @@
     <!-- XTXT: Third bullet point in the consent body displayed above the button in the survey consent screen -->
     <string name="datadonation_details_survey_consent_bullet_point_three">"Sie können Ihr Einverständnis abgeben, wenn Sie mindestens 16 Jahre alt sind."</string>
     <!-- YTXT: Text on the bottom of the survey consent screen that opens a new screen about more information-->
-    <string name="datadonation_details_survey_consent_bottom_link">"Ausführliche Informationen zur Datenverarbeitung und Ihrem Einverständnis"</string>
-
+    <string name="datadonation_details_survey_consent_bottom_link">"Ausführliche Informationen zur Datenverarbeitung und Ihrem Einverständnis."</string>
     <!-- XHED: Title for the information box in the survey consent detail screen -->
     <string name="datadonation_survey_consent_details_title">"Prüfung der Echtheit und Drittlandsübermittlung"</string>
     <!-- XTXT: Text for the information box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_text">"Um die Echtheit Ihrer App zu bestätigen, erzeugt Ihr Smartphone eine eindeutige Kennung, die Informationen über die Version Ihres Smartphones und der App enthält. Das ist erforderlich, um zu verhindern, dass Nutzer mehrfach der Befragung teilnehmen und so die Ergebnisse der Befragung verfälschen. Die Kennung wird hier einmalig an Google übermittelt. Dabei kann es auch zu einer Datenübermittlung in die USA kommen. Dort besteht kein dem europäischen Recht angemessenes Datenschutzniveau und Ihre europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht die Möglichkeit, dass US-Sicherheitsbehörden, auch ohne einen konkreten Verdacht, auf die übermittelten Daten bei Google zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen Informationen verknüpfen. Dies betrifft nur die an Google übermittelte Kennung. Die weiteren Angaben über Ihre Teilnahme an der Befragung erhält Google nicht. Wenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden“ an. Sie können die App weiterhin nutzen, eine Teilnahme an dieser Befragung ist dann jedoch nicht möglich."</string>
-    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_title_below">"<b>Zur Befragung durch das RKI</b>"</string>
-    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_text_below">"Nachdem die Echtheit Ihrer App geprüft wurde, werden Sie auf eine Internetseite des RKI mit einem für Sie generierten Teilnahmelink zur Befragung weitergeleitet. Die Internetseite wird im Browser Ihres Smartphones geöffnet. Der Teilnahmelink enthält ein vorab durch die Corona-Warn-App generiertes Einmal-Passwort. Wenn Sie den Teilnahmelink antippen und die Internetseite mit der Befragung aufrufen, wird das Einmal-Passwort in Ihrem Browser zwischengespeichert. Auf dieser Seite werden weiterführenden Informationen zur Befragung und Handlungshinweise, z.B. wie die Befragung gestartet werden kann, dargestellt. Zum Start der Befragung wird das Einmal-Passwort an Server der Corona-Warn-App übermittelt und dort als verbraucht markiert. Durch den Server wird geprüft, ob Sie an der Befragung teilnehmen können oder nicht. So wird sichergestellt, dass jede Person nur einmal an der Befragung teilnehmen kann."</string>
+    <string name="datadonation_survey_consent_details_text">"Um die Echtheit Ihrer App zu bestätigen, erzeugt Ihr Smartphone eine eindeutige Kennung, die Informationen über die Version Ihres Smartphones und der App enthält. Das ist erforderlich, um zu verhindern, dass Nutzer mehrfach der Befragung teilnehmen und so die Ergebnisse der Befragung verfälschen. Die Kennung wird hier einmalig an Google übermittelt. Dabei kann es auch zu einer Datenübermittlung in die USA oder andere Drittländer kommen. Dort besteht möglicherweise kein dem europäischen Recht entsprechendes Datenschutzniveau und Ihre europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht die Möglichkeit, dass Sicherheitsbehörden im Drittland, auch ohne einen konkreten Verdacht, auf die übermittelten Daten bei Google zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen Informationen verknüpfen. Dies betrifft nur die an Google übermittelte Kennung. Die weiteren Angaben über Ihre Teilnahme an der Befragung erhält Google nicht. Möglicherweise kann Google jedoch anhand der Kennung auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat.\n\nWenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden“ an. Sie können die App weiterhin nutzen, eine Teilnahme an dieser Befragung ist dann jedoch nicht möglich."</string>
+
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="ppa_onboarding_consent_title" translatable="false">"Ihr Einverständnis"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics onboarding -->
+    <string name="ppa_onboarding_privacy_information_body" translatable="false">"Indem Sie „Datenspende“ aktivieren, willigen Sie ein:\n\nDie App übermittelt täglich von ihr erfasste Angaben an das RKI. Die Daten betreffen angezeigte Risiko-Begegnungen und Warnungen, durch Sie abgerufene Testergebnisse, ob Sie andere Nutzer gewarnt haben sowie Angaben über das Betriebssystem Ihres Smartphones. Wenn Sie oben weitere Angaben gemacht haben (Region, Altersgruppe), werden auch diese an das RKI übermittelt.\n\nDas RKI wird diese Daten zu Statistiken zusammenfassen und auswerten, um die Wirksamkeit und Funktionsweise der App zu bewerten und Rückschlüsse auf das Pandemiegeschehen zu ziehen. Die dabei gefundenen Erkenntnisse helfen bei der Verbesserung der Funktionen und Nutzerfreundlichkeit der App sowie bei der Steuerung anderer Maßnahmen der Pandemiebekämpfung.\n\nBevor Ihre Daten ausgewertet werden, muss sichergestellt sein, dass jede an der Datenspende teilnehmende App nur einmal gezählt wird und die Statistiken nicht verfälscht werden. Hierfür muss die Echtheit Ihrer App geprüft werden. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Google in die USA oder andere Drittländer übermittelt, damit Google die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Google kann damit möglicherweise auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat. Weitere Angaben aus der App erhält Google hierbei nicht.\n\nSie können Ihr Einverständnis jederzeit zurücknehmen, indem Sie „Daten spenden" in den Einstellungen der App deaktivieren."</string>
+    <!-- XTXT: Body point consent for Privacy-preserving Analytics -->
+    <string name="ppa_onboarding_privacy_information_point_consent" translatable="false">"Ihr Einverständnis ist freiwillig. Sie können die App auch nutzen, wenn Sie Ihr Einverständnis nicht erteilt haben."</string>
+    <!-- XTXT: Body point identity for Privacy-preserving Analytics -->
+    <string name="ppa_onboarding_privacy_information_point_identity" translatable="false">"Wenn Sie Daten über Ihre App-Nutzung spenden, bleibt Ihre Identität gegenüber dem RKI weiterhin geschützt. Das RKI erfährt also nicht, wer Sie sind oder wen Sie getroffen haben. Es werden auch keine Profile gebildet."</string>
+    <!-- XTXT: Body point sixteen for Privacy-preserving Analytics -->
+    <string name="ppa_onboarding_privacy_information_point_sixteen" translatable="false">"Sie können Ihr Einverständnis abgeben, wenn Sie mindestens 16 Jahre alt sind."</string>
+    <!-- XHED: Title for Privacy-preserving Analytics additional info  -->
+    <string name="ppa_onboarding_more_info_title" translatable="false">"Prüfung der Echtheit und Drittlandsübermittlung"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics additional info -->
+    <string name="ppa_onboarding_more_info_body" translatable="false">"Um die Echtheit Ihrer App zu bestätigen, erzeugt Ihr Smartphone eine eindeutige Kennung, die Informationen über die Version Ihres Smartphones und der App enthält. Das ist erforderlich, um zu verhindern, dass Nutzer mehrfach der Befragung teilnehmen und so die Ergebnisse der Befragung verfälschen. Die Kennung wird hier einmalig an Google übermittelt. Dabei kann es auch zu einer Datenübermittlung in die USA oder andere Drittländer kommen. Dort besteht möglicherweise kein dem europäischen Recht entsprechendes Datenschutzniveau und Ihre europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht die Möglichkeit, dass Sicherheitsbehörden im Drittland, auch ohne einen konkreten Verdacht, auf die übermittelten Daten bei Google zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen Informationen verknüpfen. Dies betrifft nur die an Google übermittelte Kennung. Die weiteren Angaben über Ihre Teilnahme an der Befragung erhält Google nicht. Möglicherweise kann Google jedoch anhand der Kennung auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat.\n\nWenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden“ an. Sie können die App weiterhin nutzen, eine Teilnahme an dieser Befragung ist dann jedoch nicht möglich."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="ppa_onboarding_privacy_information_title" translatable="false">"Ihr Einverständnis"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics settings -->
+    <string name="ppa_settings_privacy_information_body" translatable="false">"Indem Sie oben „Datenspende“ aktivieren, willigen Sie ein:\n\nDie App übermittelt täglich von ihr erfasste Angaben an das RKI. Die Daten betreffen angezeigte Risiko-Begegnungen und Warnungen, durch Sie abgerufene Testergebnisse, ob Sie andere Nutzer gewarnt haben sowie Angaben über das Betriebssystem Ihres Smartphones. Wenn Sie oben weitere Angaben gemacht haben (Region, Altersgruppe), werden auch diese an das RKI übermittelt.\n\nDas RKI wird diese Daten zu Statistiken zusammenfassen und auswerten, um die Wirksamkeit und Funktionsweise der App zu bewerten und Rückschlüsse auf das Pandemiegeschehen zu ziehen. Die dabei gefundenen Erkenntnisse helfen bei der Verbesserung der Funktionen und Nutzerfreundlichkeit der App sowie bei der Steuerung anderer Maßnahmen der Pandemiebekämpfung.\n\nBevor Ihre Daten ausgewertet werden, muss sichergestellt sein, dass jede an der Datenspende teilnehmende App nur einmal gezählt wird und die Statistiken nicht verfälscht werden. Hierfür muss die Echtheit Ihrer App geprüft werden. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Google in die USA oder andere Drittländer übermittelt, damit Google die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Google kann damit möglicherweise auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat.\nWeitere Angaben aus der App erhält Google hierbei nicht.\n\nSie können Ihr Einverständnis jederzeit zurücknehmen, indem Sie oben „Datenspende“ deaktivieren."</string>
 
 </resources>
diff --git a/Corona-Warn-App/src/main/res/values-de/release_info_strings.xml b/Corona-Warn-App/src/main/res/values-de/release_info_strings.xml
index 6737e65e8a9ab3634b993bf2b1a59d10c2a8a38e..459c8d95683fef83103d851959216b60586b5ac9 100644
--- a/Corona-Warn-App/src/main/res/values-de/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/release_info_strings.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" tools:ignore="MissingTranslation">
     <!-- ####################################
-                 Release Info Screen 1.12
+                 Release Info Screen 1.14
      ###################################### -->
 
     <!-- XHED: Title for the release info screen -->
@@ -17,22 +17,34 @@
 
     <!-- XHED: Titles for the release info screen bullet points -->
     <string-array name="new_release_title">
-        <item>Link auf RKI-Umfrage</item>
-        <item>Einwilligung zur Datenspende (optional)</item>
-        <item>Anpassungen der Risiko-Karten</item>
-        <item>Fortführung der Risiko-Ermittlung nach Teilung der Zufalls-IDs</item>
-        <item>Einführung von Registerkarten</item>
-        <item>Mehr Informationen zum Testablauf</item>
+        <item>Zusatzfunktionen im Kontakt-Tagebuch</item>
+        <item>Direkter Zugriff auf Kontakt-Tagebuch</item>
+        <item>Mehr Details zum Risikostatus</item>
+        <item>Screenshots zur Corona-Warn-App</item>
     </string-array>
 
     <!-- XTXT: Text bodies for the release info screen bullet points -->
     <string-array name="new_release_body">
-        <item>Wenn Sie ein erhöhtes Risiko haben, können Sie aus der App heraus eine Umfrage des Robert-Koch-Instituts aufrufen und daran teilnehmen.</item>
-        <item>Sie haben nun die Möglichkeit, Ihre Nutzungsdaten zur Verfügung zu stellen und uns somit bei der Verbesserung der App zu unterstützen.</item>
-        <item>Die Texte auf den Risiko-Karten wurden leicht angepasst.</item>
-        <item>Nachdem Sie Ihre verschlüsselten Zufalls-IDs geteilt haben, können Sie entscheiden, ob und wann Sie die Risiko-Ermittlung wieder einschalten.</item>
-        <item>Es gibt nun eine eigene Registerkarte für das Kontakt-Tagebuch. Somit können Sie schneller auf Ihr Tagebuch zugreifen und vom Kontakt-Tagebuch wieder zurück auf die Startseite der App wechseln.</item>
-        <item>Die App enthält nun detaillierte Informationen zum Testablauf.</item>
+        <item>Sie können zu jedem Eintrag angeben, unter welchen Umständen die Begegnung stattfand. Sie können aus vorgegebenen Optionen auswählen (z.B. Dauer der Begegnung, mit oder ohne Maske) sowie zusätzlich in einer kurzen Notiz weitere Umstände erfassen, die zu einem erhöhten Risiko führen könnten. Sollten Sie sich tatsächlich anstecken, können diese Angaben dem Gesundheitsamt bei der Nachverfolgung möglicher Infektionsketten helfen.</item>
+        <item>Sie können nun direkt einen Eintrag im Kontakt-Tagebuch hinzufügen, ohne erst die App öffnen zu müssen. Tippen Sie dazu etwa 2 Sekunden lang auf das Icon der Corona-Warn-App bis ein Menü erscheint und tippen Sie dann auf "Tagebuch-Eintrag für heute hinzufügen“.</item>
+        <item>Wenn Ihnen in der App ein erhöhtes Risiko angezeigt wird, können Sie nun sehen, ob der Risikostatus aufgrund einer bzw. mehrerer Begegnungen mit erhöhtem Risiko angezeigt wird, oder aufgrund von mehreren Begegnungen mit niedrigem Risiko.</item>
+        <item>Auf https://www.coronawarn.app stehen nun alle Screenshots der App zu Verfügung. So können Sie sich nun auch über geplante Funktionen der App informieren.</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item>https://www.coronawarn.app</item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item>https://www.coronawarn.app/de/screenshots</item>
     </string-array>
 
 </resources>
diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml
index c3fb5b2ea05dffc6c2def3bcb98179a5d65dd38f..8d848ddb9485be9b63290b219540ca5ba3fb5679 100644
--- a/Corona-Warn-App/src/main/res/values-de/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/strings.xml
@@ -324,7 +324,7 @@
 
     <!-- XMSG: risk details - link to faq, something like a bullet point -->
     <string name="risk_details_increased_risk_faq_link_text">"Falls Sie sich testen lassen, finden Sie weitere Informationen in der FAQ zum Testablauf."</string>
-    <!-- XTXT: Explanation screen increased risk level link label -->
+    <!-- XTXT: Explanation screen increased risk level link label - HAS TO MATCH the link text above -->
     <string name="risk_details_increased_risk_faq_link_label">"FAQ zum Testablauf"</string>
     <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
     <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/de/faq/#red_card_how_to_test"</string>
@@ -527,6 +527,8 @@
     <string name="onboarding_ppa_illustration_description">"Darstellung einer Person, die ihr Smartphone in der Hand hält"</string>
     <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
     <string name="onboarding_ppa_headline">"Datenspende"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Teilen Sie Daten über Ihre App-Nutzung mit uns und helfen Sie uns so, die Wirksamkeit der App zu bewerten."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
     <string name="onboarding_ppa_body">"Sie können uns helfen, die Corona-Warn-App zu verbessern. Teilen Sie Daten über Ihre App-Nutzung mit dem RKI. Sie helfen damit dem RKI bei der Bewertung der Wirksamkeit der App. Ihre Daten ermöglichen außerdem, die Funktionen und Nutzerfreundlichkeit der App zu verbessern."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
@@ -538,7 +540,7 @@
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
     <string name="onboarding_ppa_age_title">"Ihr Alter (optional)"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
-    <string name="onboarding_ppa_more_info_title">"Ausführliche Informationen zu dieser Datenverarbeitung und den Datenschutzrisiken in den USA"</string>
+    <string name="onboarding_ppa_more_info_title">"Ausführliche Informationen zu dieser Datenverarbeitung und den Datenschutzrisiken in den USA und anderen Drittländern"</string>
     <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
     <string name="onboarding_ppa_consent_donate_button">"Daten spenden"</string>
     <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
@@ -551,7 +553,7 @@
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
     <string name="onboarding_ppa_more_info_data_processing_title">"Datenverarbeitung im Rahmen der Datenspende"</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
-    <string name="onboarding_ppa_more_info_data_processing_body">"Im Rahmen der Datenspende übermittelt die App verschiedene Daten täglich an das RKI. Die übermittelten Daten werden zu unterschiedlichen Zwecken ausgewertet:"</string>
+    <string name="onboarding_ppa_more_info_data_processing_body">"Im Rahmen der Datenspende übermittelt die App verschiedene Daten täglich an das RKI. Die übermittelten Daten dienen der Bewertung der Wirksamkeit der App und sie werden ausgewertet, um folgende Verbesserungen zu ermöglichen:"</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
     <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Verbesserung der Risiko-Ermittlung – Die Genauigkeit und Zuverlässigkeit der technischen Berechnung der Ansteckungsrisiken sollen verbessert werden. Hierfür werden Angaben über Risiko-Begegnungen und Ihnen angezeigte Warnungen ausgewertet. In der Folge kann die Berechnungsmethode verfeinert werden."</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
@@ -603,11 +605,9 @@
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
     <string name="onboarding_ppa_more_info_other_info_point_1_text">"Angaben dazu, welche Altersgruppe Sie angegeben haben."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Angaben dazu, welche Altersgruppe Sie angegeben haben."</string>
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Angaben zum Zeitraum zwischen der letzten Begegnung mit erhöhtem Risiko und der Testregistrierung."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Angaben zum Zeitraum zwischen der letzten Begegnung mit erhöhtem Risiko und der Testregistrierung."</string>
-    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 4 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_4_text">"Angaben dazu, ob Sie Ihr Testergebnis geteilt und andere gewarnt haben."</string>
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Angaben dazu, ob Sie Ihr Testergebnis geteilt und andere gewarnt haben."</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
     <string name="onboarding_ppa_more_info_much_privacy_body">"Die Angaben können nicht mit Ihrer Person verknüpft werden. Ihre Identität bleibt weiterhin geheim.\nDie Angaben werden statistisch ausgewertet, sie werden nicht zu einem Profil gespeichert."</string>
 
@@ -1755,6 +1755,9 @@
     <!-- XBUT: Abort button for test result positive no consent screen -->
     <string name="submission_test_result_positive_no_consent_button_abort">Abbrechen</string>
 
+    <!-- XHED: Title of contact diary app shortcut -->
+    <string name="app_shortcut_contact_diary_title">"Eintrag hinzufügen"</string>
+
     <!-- XTXT: Statistics information (Accessibilty) -->
     <string name="statistics_info_button">"Weitere Informationen"</string>
     <!-- XHED: Title for statistics reproduction card -->
@@ -1796,20 +1799,46 @@
     <!-- XHED: Title of the survey consent detail screen -->
     <string name="datadonation_details_survey_consent_details_title">"Ausführliche Informationen zur Datenverarbeitung bei der Teilnahme an der Befragung"</string>
 
-    <!-- ####################################
-       Data donation
-    ###################################### -->
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"Die Uhrzeit Ihres Smartphones stimmt nicht mit der aktuellen Zeit überein. Bitte korrigieren Sie die Uhrzeit in den Einstellungen Ihres Smartphones (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"Die Befragung kann nicht aufgerufen werden (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"Die Befragung kann aktuell nicht aufgerufen werden. Bitte aktualisieren Sie die Google Play Services (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"Die Befragung kann aktuell nicht aufgerufen werden. Bitte versuchen Sie es später noch mal (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"Die Befragung konnte aus Sicherheitsgründen nicht aufgerufen werden. Sie können im nächsten Kalendermonat wieder teilnehmen (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Danke, dass Sie mithelfen wollen. Leider verwenden Sie ein Smartphone, mit dem Sie aus technischen Gründen nicht an der Umfrage teilnehmen können. (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"Aus Sicherheitsgründen können Sie erst 24 Stunden, nachdem Sie die App installiert oder aktualisiert haben, an der Befragung teilnehmen (Fehlercode %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"Sie haben bereits an der Befragung teilgenommen. Sie können nur einmal im Monat an der Befragung teilnehmen (Fehlercode %1$s)."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"Fehler"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"ok"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Befragung wird geladen…"</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below">"<b>Zur Befragung durch das RKI</b>"</string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"Nachdem die Echtheit Ihrer App geprüft wurde, werden Sie auf eine Internetseite des RKI mit einem für Sie generierten Teilnahmelink zur Befragung weitergeleitet. Die Internetseite wird im Browser Ihres Smartphones geöffnet. Der Teilnahmelink enthält ein vorab durch die Corona-Warn-App generiertes Einmal-Passwort. Wenn Sie den Teilnahmelink antippen und die Internetseite mit der Befragung aufrufen, wird das Einmal-Passwort in Ihrem Browser zwischengespeichert. Auf dieser Seite werden weiterführenden Informationen zur Befragung und Handlungshinweise, z.B. wie die Befragung gestartet werden kann, dargestellt. Zum Start der Befragung wird das Einmal-Passwort an Server der Corona-Warn-App übermittelt und dort als verbraucht markiert. Durch den Server wird geprüft, ob Sie an der Befragung teilnehmen können oder nicht. So wird sichergestellt, dass jede Person nur einmal an der Befragung teilnehmen kann."</string>
 
     <!-- XHED: Analytics voluntary user input, age group toolbar title -->
-    <string name="analytics_userinput_agegroup_title">Ihr Alter</string>
+    <string name="analytics_userinput_agegroup_title">Ihre Altersgruppe</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
     <string name="analytics_userinput_agegroup_unspecified">keine Angabe</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
-    <string name="analytics_userinput_agegroup_0_to_29">bis 30 Jahre</string>
+    <string name="analytics_userinput_agegroup_0_to_29">0-29 Jahre</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
-    <string name="analytics_userinput_agegroup_30_to_59">30 bis 60</string>
+    <string name="analytics_userinput_agegroup_30_to_59">30-59 Jahre</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
-    <string name="analytics_userinput_agegroup_from_60">60 oder älter</string>
+    <string name="analytics_userinput_agegroup_from_60">60+ Jahre</string>
 
     <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
     <string name="analytics_userinput_federalstate_title">Ihr Bundesland</string>
diff --git a/Corona-Warn-App/src/main/res/values-en/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-en/contact_diary_strings.xml
index 16d481398e822d9ccad3034995eb9352a2ecd801..4590f73acfddedd5dcddbf5dbe74a2b8e330aa8f 100644
--- a/Corona-Warn-App/src/main/res/values-en/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-en/contact_diary_strings.xml
@@ -22,9 +22,9 @@
     <!-- XTXT: Body for the contact diary card displayed in the homescreen  -->
     <string name="contact_diary_homescreen_card_body">"Keep track of where you have been and whom you met."</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_homescreen_card_button_text">"Manage Journal"</string>
+    <string name="contact_diary_homescreen_card_button_text">"Open Journal"</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_onboarding_button_text">"Manage Journal"</string>
+    <string name="contact_diary_onboarding_button_text">"Open Journal"</string>
 
     <!-- XTXT: Title for the contact diary onboarding screen -->
     <string name="contact_diary_information_card_title">"Keep track of your contacts."</string>
@@ -59,7 +59,7 @@
     <!-- XTXT: Title for contact diary overview screen -->
     <string name="contact_diary_overview_title">"Contact Journal"</string>
     <!-- XTXT: Subtitle for contact diary overview screen -->
-    <string name="contact_diary_overview_subtitle">"Write down the people you have met and places you have visited."</string>
+    <string name="contact_diary_overview_subtitle">"Write down the people you have met and places you have visited. If a risk is displayed for a day, you can warn people you have been with on that day if they do not use the Corona-Warn-App themselves."</string>
     <!-- XTXT: Header for contact diary overview screen -->
     <string name="contact_diary_overview_header">"Start Page"</string>
 
@@ -132,4 +132,5 @@
     <string name="accessibility_action_deselect">"Cancel Selection"</string>
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Edit"</string>
+
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-en/release_info_strings.xml b/Corona-Warn-App/src/main/res/values-en/release_info_strings.xml
index c045c2a4da86ace5ca14d9d1b87527e1c299e3d4..16bcc281c37b95b523da1f13f0944c8bd5f65fc9 100644
--- a/Corona-Warn-App/src/main/res/values-en/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-en/release_info_strings.xml
@@ -11,5 +11,47 @@
     <string name="release_info_version_body">"Along with bug fixes, this update also includes new and enhanced features."</string>
     <!-- XBUT: Continue button for the release info screen -->
     <string name="release_info_continue_button">"Next"</string>
+    <!-- XTXT: New release info footer -->
+    <string name="new_release_bottom">"Changes in this release can be found in the app settings, under “New Features”."</string>
+
+    <!-- XHED: Titles for the release info screen bullet points -->
+    <string-array name="new_release_title">
+        <item>"Link to RKI survey"</item>
+        <item>"Consent to Share Data (optional)"</item>
+        <item>"Changes to the Risk Tiles"</item>
+        <item>"Continuation of Exposure Logging after Sharing Your Random IDs"</item>
+        <item>"Implementation of Tabs"</item>
+        <item>"More Information about the Testing Procedure"</item>
+    </string-array>
+
+    <!-- XTXT: Text bodies for the release info screen bullet points -->
+    <string-array name="new_release_body">
+        <item>"If you have an increased risk, you can start and take a survey conducted by the Robert Koch Institute from within the app."</item>
+        <item>"You now have the option of sharing your usage data, which will help us to improve the app."</item>
+        <item>"Minor changes to the texts on the risk tiles."</item>
+        <item>"After you have shared your encrypted random IDs, you can decide whether and when you want to switch exposure logging back on."</item>
+        <item>"There is now a separate tab page for your contact journal. This lets you access your journal and switch from the contact journal back to the home screen of the app more quickly."</item>
+        <item>"The app now contains more detailed information about the testing procedure."</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
 
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-en/strings.xml b/Corona-Warn-App/src/main/res/values-en/strings.xml
index 84889ee4ef575c32210bde85d835116d72f6e8c1..0330f3c7b7f0bab25bccdc3ad621f791477b9178 100644
--- a/Corona-Warn-App/src/main/res/values-en/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-en/strings.xml
@@ -150,6 +150,15 @@
     <string name="risk_card_low_risk_no_encounters_body">"No exposures"</string>
     <!-- XTXT: risk card - Low risk state - Days with low risk encounters -->
     <plurals name="risk_card_low_risk_encounter_days_body">
+        <item quantity="one">"Exposures with low risk on %1$d day"</item>
+        <item quantity="other">"Exposures with low risk on %1$d days"</item>
+        <item quantity="zero">"Exposures with low risk on %1$d days"</item>
+        <item quantity="two">"Exposures with low risk on %1$d days"</item>
+        <item quantity="few">"Exposures with low risk on %1$d days"</item>
+        <item quantity="many">"Exposures with low risk on %1$d days"</item>
+    </plurals>
+    <!-- XACT: risk card - Low risk state - Days with low risk encounters description -->
+    <plurals name="risk_card_low_risk_encounter_days_body_description">
         <item quantity="one">"Exposures with low risk on one day"</item>
         <item quantity="other">"Exposures with low risk on %1$d days"</item>
         <item quantity="zero">"Exposures with low risk on %1$d days"</item>
@@ -157,9 +166,22 @@
         <item quantity="few">"Exposures with low risk on %1$d days"</item>
         <item quantity="many">"Exposures with low risk on %1$d days"</item>
     </plurals>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and single day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"On %1$s"</string>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and more than one day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"Most recently on %1$s"</string>
 
     <!-- XTXT: risk card - High risk state - Days with high risk encounters -->
     <plurals name="risk_card_high_risk_encounter_days_body">
+        <item quantity="one">"Exposures on %1$d day with increased risk"</item>
+        <item quantity="other">"Exposures on %1$d days with increased risk"</item>
+        <item quantity="zero">"Exposures on %1$d days with increased risk"</item>
+        <item quantity="two">"Exposures on %1$d days with increased risk"</item>
+        <item quantity="few">"Exposures on %1$d days with increased risk"</item>
+        <item quantity="many">"Exposures on %1$d days with increased risk"</item>
+    </plurals>
+    <!-- XACT: risk card - High risk state - Days with high risk encounters description -->
+    <plurals name="risk_card_high_risk_encounter_days_body_description">
         <item quantity="one">"Exposures on one day with increased risk"</item>
         <item quantity="other">"Exposures on %1$d days with increased risk"</item>
         <item quantity="zero">"Exposures on %1$d days with increased risk"</item>
@@ -168,6 +190,9 @@
         <item quantity="many">"Exposures on %1$d days with increased risk"</item>
     </plurals>
 
+    <!-- XTXT: risk card - High risk state - Most recent date with high risk and single day of encounters -->
+    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"On %1$s"</string>
+
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and more than one day of encounters -->
     <string name="risk_card_high_risk_most_recent_body_encounters_on_more_than_one_day">"Most recently on %1$s"</string>
 
@@ -295,6 +320,14 @@
     <string name="risk_details_behavior_body_wear_mask">"Wear a face mask when you encounter other people."</string>
     <!-- XMSG: risk details - stay 1,5 away, something like a bullet point -->
     <string name="risk_details_behavior_body_stay_away">"Keep at least 1.5 meters distance from other people."</string>
+
+    <!-- XMSG: risk details - link to faq, something like a bullet point -->
+    <string name="risk_details_increased_risk_faq_link_text">"If you get tested, you will find additional information about the testing procedure in the FAQ."</string>
+    <!-- XTXT: Explanation screen increased risk level link label - HAS TO MATCH the link text above -->
+    <string name="risk_details_increased_risk_faq_link_label">"FAQ"</string>
+    <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
+    <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/en/faq/#red_card_how_to_test"</string>
+
     <!-- XMSG: risk details - cough/sneeze, something like a bullet point -->
     <string name="risk_details_behavior_body_cough_sneeze">"Sneeze or cough into your elbow or a tissue."</string>
     <!-- XMSG: risk details - contact your doctor, bullet point -->
@@ -306,13 +339,15 @@
     <!-- XHED: risk details - infection risk headline, below behaviors -->
     <string name="risk_details_headline_infection_risk">"Risk of Infection"</string>
     <!-- XHED: risk details - infection period logged headling, below behaviors -->
-    <string name="risk_details_headline_period_logged">"Period logged"</string>
+    <string name="risk_details_headline_period_logged">"Period Logged"</string>
     <!-- XHED: risk details - infection period logged headling, below behaviors -->
     <string name="risk_details_subtitle_period_logged">"This period is included in the calculation."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged">"Your risk of infection can be calculated only for periods during which exposure logging was active. The logging feature should therefore remain active permanently."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged_assessment">"Exposure logging covers the past 14 days. During this time, the logging feature on your smartphone was active for %1$s days. The app automatically deletes older logs, as these are no longer relevant for infection prevention."</string>
+    <!-- XTXT: risk details - infection period days logged/14 -->
+    <string name="risk_details_information_active_tracing_days_circle_progress">"%s/14"</string>
     <!-- XHED: risk details - how your risk level was calculated, below behaviors -->
     <string name="risk_details_subtitle_infection_risk_past">"This is how your risk was calculated."</string>
     <!-- XHED: risk details - how your risk level will be calculated, below behaviors -->
@@ -429,13 +464,13 @@
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_button_next">"Activate Exposure Logging"</string>
     <!-- XTXT: onboarding(tracing) - dialog about tracing permission declined -->
-    <string name="onboarding_tracing_dialog_headline">"Authorization"</string>
+    <string name="onboarding_tracing_dialog_headline">"Do not activate?"</string>
     <!-- YMSI: onboarding(tracing) - dialog about tracing -->
-    <string name="onboarding_tracing_dialog_body">"This means the Corona-Warn-App cannot send or receive notifications about your COVID-19 risk status. You can deactivate this feature at any time."</string>
+    <string name="onboarding_tracing_dialog_body">"If you do not activate exposure logging, the app cannot determine your risk status. This means you will not receive any information about your risk in the app. You can reactivate exposure logging at any time."</string>
     <!-- XBUT: onboarding(tracing) - positive button (right) -->
     <string name="onboarding_tracing_dialog_button_positive">"Do Not Activate"</string>
     <!-- XBUT: onboarding(tracing) - negative button (right) -->
-    <string name="onboarding_tracing_dialog_button_negative">"Back"</string>
+    <string name="onboarding_tracing_dialog_button_negative">"Cancel"</string>
     <!-- XACT: onboarding(tracing) - dialog about background jobs header text -->
     <string name="onboarding_background_fetch_dialog_headline">"Background app refresh deactivated"</string>
     <!-- YMSI: onboarding(tracing) - dialog about background jobs -->
@@ -461,9 +496,9 @@
     <!-- XACT: onboarding(tracing) - illustraction description, header image -->
     <string name="onboarding_tracing_illustration_description">"Three persons have activated exposure logging on their smartphones, which will log their encounters with each other."</string>
     <!-- XHED: onboarding(tracing) - location explanation for bluetooth headline -->
-    <string name="onboarding_tracing_location_headline">"Allow location access"</string>
+    <string name="onboarding_tracing_location_headline">"Activate Location Setting"</string>
     <!-- XTXT: onboarding(tracing) - location explanation for bluetooth body text -->
-    <string name="onboarding_tracing_location_body">"Your location cannot be accessed. Google and/or Android requires access to your smartphone’s location to use Bluetooth."</string>
+    <string name="onboarding_tracing_location_body">"Your device location cannot be determined by the app, but the device location setting must be activated to use Bluetooth Low Energy in some Android versions."</string>
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_location_button">"Open Device Settings"</string>
     <!-- XACT: Onboarding (test) page title -->
@@ -487,6 +522,98 @@
     <!-- XACT: onboarding(notifications) - illustraction description, header image -->
     <string name="onboarding_notifications_illustration_description">"A woman receives a notification from her Corona-Warn-App."</string>
 
+    <!-- XACT: onboarding privacy preserving analytics (ppa) - illustraction description, header image -->
+    <string name="onboarding_ppa_illustration_description">"A person is holding a smartphone in their hand"</string>
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
+    <string name="onboarding_ppa_headline">"Share Data"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Let us know how you use the app and help us to assess its effectiveness."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
+    <string name="onboarding_ppa_body">"You can help us to improve the Corona-Warn-App. Share the data about your app usage with the RKI. This will help the RKI assess the app’s effectiveness. Your data will also help to improve the features and usability of the app."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
+    <string name="onboarding_ppa_state_title">"Your federal state (optional)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - district title -->
+    <string name="onboarding_ppa_district_title">"Your district (county) (optional)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - regional evaluation text -->
+    <string name="onboarding_ppa_regional_evaluation_text">"If you also specify your federal state and region, we can conduct regional analyses."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
+    <string name="onboarding_ppa_age_title">"Your age (optional)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="onboarding_ppa_more_info_title">"Detailed Information about This Data Processing and Data Protection Risks in the U.S. and Other Third Countries"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
+    <string name="onboarding_ppa_consent_donate_button">"Share Data"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
+    <string name="onboarding_ppa_consent_not_donate_button">"Do Not Share"</string>
+
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - more info - headline -->
+    <string name="onboarding_ppa_more_info_headline">"Detailed Information about Data Sharing"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - consent title -->
+    <string name="onboarding_ppa_more_info_decline_processing_text">"If you do not consent to this transfer of your data to a third country, please do not tap on “Accept”. You will still be able to use the app, but not the data donation sharing feature."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
+    <string name="onboarding_ppa_more_info_data_processing_title">"Data Processing in the Data Sharing Process"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
+    <string name="onboarding_ppa_more_info_data_processing_body">"If you consent to share your data, the app sends various data to the RKI each day. The transmitted data will help us assess the effectiveness of the app and will be analyzed to support the following improvements:"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Improved exposure logging – We want to improve the accuracy and reliability of the technical calculation of infection risks. To do so, we will evaluate information about risk exposures and the warnings you see. As a result, we will be able to refine the calculation method."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Improved user guidance in the app – We want to make the app easier to use. To do so, we will evaluate information about the individual steps that users perform in the app. This will help us make labels and information texts clearer and arrange the control elements to make them easier to find. We will also be able to customize the layouts for different smartphone models."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 3 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Enable information and assistance in the app – We want to be able to tell if problems occur when using the app in connection with certain testing facilities and laboratories or in certain regions. We can identify this, for example, if the shared data indicates that testing results are provided delayed in certain regions. The relevant public health authorities can also be notified specifically of potential technical problems."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 4 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Improve statistics about the course of the pandemic – Your data can help provide insights into how the pandemic is spreading over time and space and help us respond to certain trends more quickly."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data title -->
+    <string name="onboarding_ppa_more_info_rki_data_title">"To this end, the RKI collects the following data:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 1 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"The date of data transmission."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 2 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Changes in the warning history compared to the previous day."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 3 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Information about which risk was displayed to you at the time of data transmission."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 4 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"Information about the basis for calculating the risk status in the context of an exposure."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 1 -->
+    <string name="onboarding_ppa_more_info_rki_data_body_1">"If you have retrieved a test result through the app:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 5 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Information about whether you received a positive or negative test result through the app."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 6 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Information about the calculated risk at the time the test was registered."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 7 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Information about the time between your last exposure with increased risk and the test registration."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 8 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Information about the time between the last notification of an increased risk and the test registration."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 9 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Information about whether you shared your test result and warned others."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 2-->
+    <string name="onboarding_ppa_more_info_rki_data_body_2">"If you have warned others about a potential exposure:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 10 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Information about whether you canceled the steps for warning others."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 11 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Information about whether you provided details about the onset of your symptoms."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 12 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Information about when you granted your consent to warn others."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 13 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Information about the notification you reached in the context of warning others."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 14 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"Information about how many hours it took for you to receive your test result."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 15 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Information about how many days have passed since the last notification of an increased risk."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 16 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Information about how many hours have passed since the test registration."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info body-->
+    <string name="onboarding_ppa_more_info_other_info_body">"Other information:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Information about the age group you specified."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Information about the time between your last exposure with increased risk and the test registration."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Information about whether you shared your test result and warned others."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
+    <string name="onboarding_ppa_more_info_much_privacy_body">"This information cannot be linked with you personally. Your identity will remain confidential.\nThe information will be analyzed for statistical purposes. It will not be saved for a profile."</string>
+
+
+
+
+
     <!-- ####################################
              Onboarding sixteen include
    ###################################### -->
@@ -643,6 +770,14 @@
     <!-- XHED : settings(background priority) - headline on card about the current status and what to do -->
     <string name="settings_background_priority_card_headline">"Change prioritized background activity"</string>
 
+    <!-- XTXT: settings(privacy preserving analytics) - text in row on settings overview -->
+    <string name="settings_privacy_preserving_analytics_body_description">"Allow the transmission of your usage behavior."</string>
+    <!-- XHED: settings(background priority) - Privacy preserving analytics page title -->
+    <string name="settings_privacy_preserving_analytics_title">"Share Data"</string>
+
+    <!-- XTXT: privacy preserving analytics settings switch subtitle  -->
+    <string name="settings_analytics_switch_subtitle">"Share User Data"</string>
+
     <!-- ####################################
                App Information
     ###################################### -->
@@ -869,6 +1004,8 @@
     <string name="submission_consent_main_third_point">"Your identity will remain secret. Other users will not find out who has shared a test result."</string>
     <!-- YTXT: Body for consent main section fourth point  -->
     <string name="submission_consent_main_fourth_point">"You must be at least 16 years old to grant your consent."</string>
+    <!-- YTXT: Content Description for the illustration  -->
+    <string name="submission_consent_main_illustration_description">"A person is holding a smartphone. A QR code on a test symbolizes the code to be scanned."</string>
 
     <!-- Submission Test Result -->
     <!-- XHED: Page headline for test result  -->
@@ -1039,7 +1176,7 @@
     <!-- YTXT: text after submission: contagious -->
     <string name="submission_done_contagious">"The public health authority will contact you within the next few days."</string>
     <!-- YTXT: text after submission: isolate -->
-    <string name="submission_done_isolate">"Please isolate yourself from other people."</string>
+    <string name="submission_done_isolate">"You are infectious. Isolate yourself from other people."</string>
     <!-- XHED: Title for further info -->
     <string name="submission_done_further_info_title">"Other information:"</string>
     <!-- YTXT: submission done further info bullet points -->
@@ -1199,6 +1336,24 @@
     <!-- YTXT: text for share result card-->
     <string name="submission_status_card_positive_result_share">"Share your random IDs so that others can be warned."</string>
 
+    <!-- Reenable risk card -->
+    <!-- XHED: Card title for re-enable risk card -->
+    <string name="reenable_risk_card_title">"Exposure Check Ended"</string>
+    <!-- YTXT: Body text for test registration date -->
+    <string name="reenable_risk_card_test_registration_string">"Test registered on %s"</string>
+    <!-- YTXT: Description text for re-enable risk card -->
+    <string name="reenable_risk_card_description_text">"The automatic exposure check has ended because you have been diagnosed with coronavirus and are currently in isolation. You can reactivate the exposure test at any time. If you do, your registered test will be deleted automatically."</string>
+    <!-- XBUT: Button for re-enabling risk calculation -->
+    <string name="reenable_risk_card_button_text">"Turn On Exposure Check "</string>
+    <!-- XHED: Dialog title for reactivate risk calculation  -->
+    <string name="dialog_reactivate_risk_calculation_title">"Activate exposure check."</string>
+    <!-- YTXT: Dialog text for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_message">"Your current test will be deleted from the app, so you can register a new test if necessary."</string>
+    <!-- XBUT: Positive button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_positive">"Activate"</string>
+    <!-- XBUT: Negative button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_negative">"Cancel"</string>
+
     <!-- Test Result Card -->
     <string name="test_result_card_headline">"Your diagnosis:"</string>
     <!-- YTXT: virus name text -->
@@ -1240,15 +1395,15 @@
     <!-- YTXT: Text for consent given -->
     <string name="submission_test_result_available_text_consent_given">"Thank you for agreeing to share your test result and helping to warn others as a result. \n\n"<b>"In the next step, please share your test result by tapping “Share”."</b></string>
     <!-- XHED: Close screen popup title for consent given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_given">"Do you want to cancel?"</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_given">"Do you really want to cancel the process?"</string>
     <!-- XTXT: Close screen popup text for consent given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_given">"Your entries will not be saved."</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_given">"Important:\nYou are about to cancel this process.\nYou have not warned others yet. Please complete the process and help to protect others."</string>
     <!-- YTXT: Text for consent NOT given -->
     <string name="submission_test_result_available_text_consent_not_given">"You have chosen not to share your test result. Others will not be warned. \n\nIn the next step, you have the opportunity to change your mind and share your test result after all, to help stop the spread of coronavirus and protect others."</string>
     <!-- XHED: Close screen popup title for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Important:\nYou are about to cancel this process.\nYou have not warned others yet. Please complete the process and help to protect others."</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Do you want to cancel?"</string>
     <!-- XTXT: Close screen popup text for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Do you really want to cancel the process?"</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Your entries will not be saved."</string>
     <!-- XBUT: Close screen popup cancel button -->
     <string name="submission_test_result_available_close_dialog_cancel_button">"Cancel"</string>
     <!-- XBUT: Close screen popup continue button -->
@@ -1292,7 +1447,7 @@
     <!-- XHED: Title for submission statistics card -->
     <string name="statistics_card_submission_title">"Warnings by App Users"</string>
     <!-- XTXT: Text displayed in the bottom of submission statistics card-->
-    <string name="statistics_card_submission_bottom_text">"About Corona-Warn-App"</string>
+    <string name="statistics_card_submission_bottom_text">"through the Corona-Warn-App"</string>
 
     <!-- XTXT: Timestamp refers to today's date in submission and infections cards -->
     <string name="statistics_primary_value_today">"Today"</string>
@@ -1314,7 +1469,7 @@
     <!-- XHED: Explanation screen title -->
     <string name="statistics_explanation_title">"Key Figures"</string>
     <!-- XHED: Explanation screen subtitle -->
-    <string name="statistics_explanation_subtitle">"Explanation of Statistics"</string>
+    <string name="statistics_explanation_subtitle">"Explanation of nationwide statistics"</string>
     <!-- XHED: Explanation screen confirmed new infections title -->
     <string name="statistics_explanation_confirmed_new_infection_title">"Confirmed New Infections"</string>
     <!-- XTXT: Explanation screen confirmed new infections text -->
@@ -1332,7 +1487,7 @@
     <!-- XTXT: Explanation screen seven day r-value text -->
     <string name="statistics_explanation_seven_day_r_value_text">"The reproduction figure, R, indicates how many people an average infected person has infected further. The current value takes data up to the last 5 days into account.\n\nFor more information, refer to the FAQ:\nFAQ for the statistics."</string>
     <!-- XTXT: Explanation screen seven day r-value link label  - the characters have to match the last part of the text label above -->
-    <string name="statistics_explanation_seven_day_r_link_label">"FAQ for the statistics."</string>
+    <string name="statistics_explanation_seven_day_r_link_label">"FAQ for the statistics"</string>
     <!-- XHED: Explanation screen legend title -->
     <string name="statistics_explanation_legend_title">"Legend"</string>
     <!-- XHED: Explanation screen period title -->
@@ -1614,5 +1769,112 @@
     <string name="statistics_trend_decreasing">"Trend: Downwards"</string>
     <!-- XTXT: Statistics trend stable (Accessibilty) -->
     <string name="statistics_trend_stable">"Trend: Steady"</string>
+    <!-- XHED: Title for BottomNav main screen title -->
+    <string name="bottom_nav_home_title">"Start Screen"</string>
+    <!-- XHED: Title for BottomNav diary screen title -->
+    <string name="bottom_nav_diary_title">"Journal"</string>
+
+    <!-- ####################################
+           Data Donation & Survey
+    ###################################### -->
 
+    <!-- XHED: Title for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_title">"Survey on Corona-Warn-App"</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_content">"Help us to improve the app by answering a few simple questions."</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_button_text">"Go To Survey"</string>
+
+    <!-- XHED: Title for the access survey button displayed at the bottom of the screen -->
+    <string name="datadonation_details_survey_consent_button_title">"Accept"</string>
+    <!-- XHED: Text for the access survey title displayed at the top of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_title">"Survey to Assess and Improve the Corona-Warn-App"</string>
+    <!-- XHED: Text for the access survey body displayed under the title of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_body"><b>"Help us to improve the Corona-Warn-App by taking a survey on your experience with the app. This will help the RKI to assess the effectiveness of the app, improve the app, and understand how warnings delivered through the app affect the behavior of people with an increased risk."</b>"\n\nThe survey is intended only for people whose app has indicated an exposure with increased risk. The survey is taken on an RKI website. To forward you to the website, a survey link will be displayed in the next step. Before it is displayed, however, the authenticity of your app must be confirmed. This requires your consent.\n\nWhen you tap on the survey link, you will receive additional information about the survey. You will also be asked explicitly to grant your consent again before you start the survey."</string>
+
+    <!-- XHED: Title of the survey consent detail screen -->
+    <string name="datadonation_details_survey_consent_details_title">"Detailed Information on Data Processing Involved in Taking the Survey"</string>
+
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"The time on your smartphone does not match the current time. Please correct the time in your smartphone settings (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"The survey cannot be retrieved (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"The survey cannot be retrieved right now. Please update the Google Play Services (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"The survey cannot be retrieved right now. Please try again later (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"The survey cannot be retrieved due to security reasons. You can take the survey again in the next calendar month (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Thank you for wanting to help. Unfortunately, you use a smartphone that does not support the survey for technical reasons (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"For security reasons, you cannot take the survey less than 24 hours after you install or update the app (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"You have already taken the survey. You can only take the survey once per month (error code %1$s)."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"Error"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"ok"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Loading Survey…"</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below"><b>"About the RKI Survey"</b></string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"After the authenticity of your app has been verified, the app forwards you to an RKI website, using a custom link to the survey that has been generated for you. This survey link contains a one-time password that is generated by your Corona-Warn-App. When you tap on the survey link and call the website with the survey, the one-time password is stored temporarily in your browser. This screen contains additional information about the survey and handling notes, such as how to start the survey. At the start of the survey, the one-time password is transmitted to the Corona-Warn-App servers, where it is flagged as used. The server then checks whether or not you can take the survey. This ensures that each user can only take the survey once."</string>
+
+    <!-- XHED: Analytics voluntary user input, age group toolbar title -->
+    <string name="analytics_userinput_agegroup_title">"Your Age Group"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
+    <string name="analytics_userinput_agegroup_unspecified">"No answer"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
+    <string name="analytics_userinput_agegroup_0_to_29">"0-29 years old"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
+    <string name="analytics_userinput_agegroup_30_to_59">"30-59 years old"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
+    <string name="analytics_userinput_agegroup_from_60">"60+ years old"</string>
+
+    <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
+    <string name="analytics_userinput_federalstate_title">"Your Federal State"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_UNSPECIFIED -->
+    <string name="analytics_userinput_federalstate_unspecified">"No answer"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BW -->
+    <string name="analytics_userinput_federalstate_bw">"Baden-Württemberg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BY -->
+    <string name="analytics_userinput_federalstate_by">"Bavaria"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BE -->
+    <string name="analytics_userinput_federalstate_be">"Berlin"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BB -->
+    <string name="analytics_userinput_federalstate_bb">"Brandenburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HB -->
+    <string name="analytics_userinput_federalstate_hb">"Bremen"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HH -->
+    <string name="analytics_userinput_federalstate_hh">"Hamburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HE -->
+    <string name="analytics_userinput_federalstate_he">"Hesse"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_MV -->
+    <string name="analytics_userinput_federalstate_mv">"Mecklenburg-Western Pomerania"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NI -->
+    <string name="analytics_userinput_federalstate_ni">"Lower Saxony"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NRW -->
+    <string name="analytics_userinput_federalstate_nrw">"North Rhine-Westphalia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_RP -->
+    <string name="analytics_userinput_federalstate_rp">"Rhineland-Palatinate"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SL -->
+    <string name="analytics_userinput_federalstate_sl">"Saarland"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SN -->
+    <string name="analytics_userinput_federalstate_sn">"Saxony"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_ST -->
+    <string name="analytics_userinput_federalstate_st">"Saxony-Anhalt"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SH -->
+    <string name="analytics_userinput_federalstate_sh">"Schleswig-Holstein"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_TH -->
+    <string name="analytics_userinput_federalstate_th">"Thuringia"</string>
+
+    <!-- XHED: Analytics voluntary user input, district toolbar title -->
+    <string name="analytics_userinput_district_title">"Your District (County)"</string>
+    <!-- XTXT: Analytics voluntary user input, district: UNSPECIFIED -->
+    <string name="analytics_userinput_district_unspecified">"No answer"</string>
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-pl/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-pl/contact_diary_strings.xml
index 543a1ce12d3725fbfbfe73713abcb6fa09f05049..38df500cf588e0f9c76fc2d46671d4d9ac3affb0 100644
--- a/Corona-Warn-App/src/main/res/values-pl/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-pl/contact_diary_strings.xml
@@ -22,9 +22,9 @@
     <!-- XTXT: Body for the contact diary card displayed in the homescreen  -->
     <string name="contact_diary_homescreen_card_body">"Rejestruj odwiedzane miejsca i spotykane osoby."</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_homescreen_card_button_text">"ZarzÄ…dzaj dziennikiem"</string>
+    <string name="contact_diary_homescreen_card_button_text">"Otwórz dziennik"</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_onboarding_button_text">"ZarzÄ…dzaj dziennikiem"</string>
+    <string name="contact_diary_onboarding_button_text">"Otwórz dziennik"</string>
 
     <!-- XTXT: Title for the contact diary onboarding screen -->
     <string name="contact_diary_information_card_title">"Rejestruj swoje kontakty."</string>
@@ -59,7 +59,7 @@
     <!-- XTXT: Title for contact diary overview screen -->
     <string name="contact_diary_overview_title">"Dziennik kontaktów"</string>
     <!-- XTXT: Subtitle for contact diary overview screen -->
-    <string name="contact_diary_overview_subtitle">"Zapisuj dane spotykanych osób i odwiedzanych miejsc."</string>
+    <string name="contact_diary_overview_subtitle">"Zapisuj dane spotykanych osób i odwiedzanych miejsc. W przypadku wystąpienia ryzyka w danym dniu możesz ostrzec osoby, z którymi przebywałeś(-aś) w tym dniu, jeśli nie używają one aplikacji Corona-Warn-App."</string>
     <!-- XTXT: Header for contact diary overview screen -->
     <string name="contact_diary_overview_header">"Strona startowa"</string>
 
@@ -132,4 +132,5 @@
     <string name="accessibility_action_deselect">"Anuluj wybór"</string>
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Edytuj"</string>
+
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-pl/release_info_strings.xml b/Corona-Warn-App/src/main/res/values-pl/release_info_strings.xml
index 38fa6509bae67a794f6d0683f17bda05aa386406..1c663f6e74a37130ee3b1b89307408beeec10b4a 100644
--- a/Corona-Warn-App/src/main/res/values-pl/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-pl/release_info_strings.xml
@@ -11,5 +11,47 @@
     <string name="release_info_version_body">"Oprócz poprawek błędów ta aktualizacja zawiera również nowe i ulepszone funkcje."</string>
     <!-- XBUT: Continue button for the release info screen -->
     <string name="release_info_continue_button">"Dalej"</string>
+    <!-- XTXT: New release info footer -->
+    <string name="new_release_bottom">"Zmiany w tej wersji można znaleźć w ustawieniach aplikacji w sekcji „Nowe funkcje”."</string>
+
+    <!-- XHED: Titles for the release info screen bullet points -->
+    <string-array name="new_release_title">
+        <item>"Link do ankiety RKI"</item>
+        <item>"Zgoda na udostępnianie danych (opcjonalnie)"</item>
+        <item>"Zmiany w kafelkach ryzyka"</item>
+        <item>"Kontynuacja rejestrowania narażenia po udostępnieniu losowych identyfikatorów"</item>
+        <item>"Implementacja kart"</item>
+        <item>"Więcej informacji o procedurze testowania"</item>
+    </string-array>
+
+    <!-- XTXT: Text bodies for the release info screen bullet points -->
+    <string-array name="new_release_body">
+        <item>"Jeśli masz podwyższone ryzyko, możesz rozpocząć i wypełnić ankietę przeprowadzaną przez Instytut Roberta Kocha z poziomu aplikacji."</item>
+        <item>"Masz teraz możliwość udostępnienia swoich danych na temat użytkowania, co pomoże nam ulepszyć aplikację."</item>
+        <item>"Niewielkie zmiany w tekstach na kafelkach ryzyka."</item>
+        <item>"Po udostępnieniu zaszyfrowanych losowych identyfikatorów możesz zdecydować, czy i kiedy chcesz ponownie włączyć rejestrowanie narażenia."</item>
+        <item>"Dostępna jest teraz oddzielna karta dla Twojego dziennika kontaktów. Dzięki niej uzyskasz dostęp do swojego dziennika i szybciej przełączysz się z dziennika kontaktów z powrotem na ekran główny aplikacji."</item>
+        <item>"Aplikacja zawiera teraz bardziej szczegółowe informacje na temat procedury testowania."</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
 
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-pl/strings.xml b/Corona-Warn-App/src/main/res/values-pl/strings.xml
index 8e9bbff42bad7fd1045a442ddc76c726dd489d2d..51bc65f9f9367f7eb5203b610216feb3ef871ec3 100644
--- a/Corona-Warn-App/src/main/res/values-pl/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-pl/strings.xml
@@ -150,6 +150,15 @@
     <string name="risk_card_low_risk_no_encounters_body">"Brak narażeń"</string>
     <!-- XTXT: risk card - Low risk state - Days with low risk encounters -->
     <plurals name="risk_card_low_risk_encounter_days_body">
+        <item quantity="one">"Narażenia z niskim ryzykiem w ciągu %1$d dni"</item>
+        <item quantity="other">"Narażenia z niskim ryzykiem w ciągu %1$d dnia"</item>
+        <item quantity="zero">"Narażenia z niskim ryzykiem w ciągu %1$d dnia"</item>
+        <item quantity="two">"Narażenia z niskim ryzykiem w ciągu %1$d dnia"</item>
+        <item quantity="few">"Narażenia z niskim ryzykiem w ciągu %1$d dni"</item>
+        <item quantity="many">"Narażenia z niskim ryzykiem w ciągu %1$d dni"</item>
+    </plurals>
+    <!-- XACT: risk card - Low risk state - Days with low risk encounters description -->
+    <plurals name="risk_card_low_risk_encounter_days_body_description">
         <item quantity="one">"Narażenia z niskim ryzykiem w ciągu jednego dnia"</item>
         <item quantity="other">"Narażenia z niskim ryzykiem w ciągu %1$d dnia"</item>
         <item quantity="zero">"Narażenia z niskim ryzykiem w ciągu %1$d dnia"</item>
@@ -157,9 +166,22 @@
         <item quantity="few">"Narażenia z niskim ryzykiem w ciągu %1$d dni"</item>
         <item quantity="many">"Narażenia z niskim ryzykiem w ciągu %1$d dni"</item>
     </plurals>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and single day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"Dnia %1$s"</string>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and more than one day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"Ostatnio dnia %1$s"</string>
 
     <!-- XTXT: risk card - High risk state - Days with high risk encounters -->
     <plurals name="risk_card_high_risk_encounter_days_body">
+        <item quantity="one">"Narażenia w ciągu %1$d dnia z podwyższonym ryzykiem"</item>
+        <item quantity="other">"Narażenia w ciągu %1$d dnia z podwyższonym ryzykiem"</item>
+        <item quantity="zero">"Narażenia w ciągu %1$d dnia z podwyższonym ryzykiem"</item>
+        <item quantity="two">"Narażenia w ciągu %1$d dnia z podwyższonym ryzykiem"</item>
+        <item quantity="few">"Narażenia w ciągu %1$d dni z podwyższonym ryzykiem"</item>
+        <item quantity="many">"Narażenia w ciągu %1$d dni z podwyższonym ryzykiem"</item>
+    </plurals>
+    <!-- XACT: risk card - High risk state - Days with high risk encounters description -->
+    <plurals name="risk_card_high_risk_encounter_days_body_description">
         <item quantity="one">"Narażenia w ciągu jednego dnia z podwyższonym ryzykiem"</item>
         <item quantity="other">"Narażenia w ciągu %1$d dnia z podwyższonym ryzykiem"</item>
         <item quantity="zero">"Narażenia w ciągu %1$d dnia z podwyższonym ryzykiem"</item>
@@ -167,6 +189,10 @@
         <item quantity="few">"Narażenia w ciągu %1$d dni z podwyższonym ryzykiem"</item>
         <item quantity="many">"Narażenia w ciągu %1$d dni z podwyższonym ryzykiem"</item>
     </plurals>
+
+    <!-- XTXT: risk card - High risk state - Most recent date with high risk and single day of encounters -->
+    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"Dnia %1$s"</string>
+
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and more than one day of encounters -->
     <string name="risk_card_high_risk_most_recent_body_encounters_on_more_than_one_day">"Ostatnio dnia %1$s"</string>
 
@@ -294,6 +320,14 @@
     <string name="risk_details_behavior_body_wear_mask">"Załóż maseczkę na twarz, mając kontakt z innymi osobami."</string>
     <!-- XMSG: risk details - stay 1,5 away, something like a bullet point -->
     <string name="risk_details_behavior_body_stay_away">"Zachowuj odległość co najmniej 1,5 metra od innych osób."</string>
+
+    <!-- XMSG: risk details - link to faq, something like a bullet point -->
+    <string name="risk_details_increased_risk_faq_link_text">"Jeśli poddasz się testowi, dodatkowe informacje na temat procedury testowania znajdziesz w „Często zadawanych pytaniach”."</string>
+    <!-- XTXT: Explanation screen increased risk level link label - HAS TO MATCH the link text above -->
+    <string name="risk_details_increased_risk_faq_link_label">"Często zadawanych pytaniach"</string>
+    <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
+    <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/en/faq/#red_card_how_to_test"</string>
+
     <!-- XMSG: risk details - cough/sneeze, something like a bullet point -->
     <string name="risk_details_behavior_body_cough_sneeze">"Kichaj i kaszl w łokieć lub chusteczkę."</string>
     <!-- XMSG: risk details - contact your doctor, bullet point -->
@@ -312,6 +346,8 @@
     <string name="risk_details_information_body_period_logged">"Ryzyko zakażenia można obliczyć tylko dla okresów, w których rejestrowanie narażenia było aktywne. Dlatego też funkcja rejestrowania powinna być stale aktywna."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged_assessment">"Rejestrowanie narażenia obejmuje ostatnie 14 dni. W tym czasie funkcja rejestrowania w Twoim smartfonie była aktywna przez %1$s dni. Aplikacja automatycznie usuwa starsze dzienniki, ponieważ nie są one już istotne dla zapobiegania zakażeniom."</string>
+    <!-- XTXT: risk details - infection period days logged/14 -->
+    <string name="risk_details_information_active_tracing_days_circle_progress">"%s/14"</string>
     <!-- XHED: risk details - how your risk level was calculated, below behaviors -->
     <string name="risk_details_subtitle_infection_risk_past">"Sposób, w jaki obliczono Twoje ryzyko."</string>
     <!-- XHED: risk details - how your risk level will be calculated, below behaviors -->
@@ -428,13 +464,13 @@
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_button_next">"Aktywuj rejestrowanie narażenia"</string>
     <!-- XTXT: onboarding(tracing) - dialog about tracing permission declined -->
-    <string name="onboarding_tracing_dialog_headline">"Autoryzacja"</string>
+    <string name="onboarding_tracing_dialog_headline">"Nie aktywujesz?"</string>
     <!-- YMSI: onboarding(tracing) - dialog about tracing -->
-    <string name="onboarding_tracing_dialog_body">"Oznacza to, że Corona-Warn-App nie może wysyłać ani odbierać powiadomień o Twoim statusie ryzyka COVID-19. Możesz dezaktywować tę funkcję w dowolnym momencie."</string>
+    <string name="onboarding_tracing_dialog_body">"Jeśli nie aktywujesz funkcji rejestrowania narażenia, aplikacja nie będzie mogła ustalić Twojego statusu ryzyka. Oznacza to, że nie będziesz otrzymywać w aplikacji informacji o Twoim statusie ryzyka. Możesz aktywować ponownie tę funkcję w dowolnym momencie."</string>
     <!-- XBUT: onboarding(tracing) - positive button (right) -->
     <string name="onboarding_tracing_dialog_button_positive">"Nie aktywuj"</string>
     <!-- XBUT: onboarding(tracing) - negative button (right) -->
-    <string name="onboarding_tracing_dialog_button_negative">"Wstecz"</string>
+    <string name="onboarding_tracing_dialog_button_negative">"Anuluj"</string>
     <!-- XACT: onboarding(tracing) - dialog about background jobs header text -->
     <string name="onboarding_background_fetch_dialog_headline">"Odświeżanie aplikacji w tle dezaktywowane"</string>
     <!-- YMSI: onboarding(tracing) - dialog about background jobs -->
@@ -460,9 +496,9 @@
     <!-- XACT: onboarding(tracing) - illustraction description, header image -->
     <string name="onboarding_tracing_illustration_description">"Trzy osoby aktywowały rejestrowanie narażenia na swoich smartfonach, które będą rejestrować ich wzajemne kontakty."</string>
     <!-- XHED: onboarding(tracing) - location explanation for bluetooth headline -->
-    <string name="onboarding_tracing_location_headline">"Zezwól na dostęp do lokalizacji"</string>
+    <string name="onboarding_tracing_location_headline">"Aktywuj ustawienie lokalizacji"</string>
     <!-- XTXT: onboarding(tracing) - location explanation for bluetooth body text -->
-    <string name="onboarding_tracing_location_body">"Nie można uzyskać dostępu do Twojej lokalizacji. Google i/lub Android wymaga dostępu do lokalizacji Twojego smartfona w celu użycia Bluetooth."</string>
+    <string name="onboarding_tracing_location_body">"Aplikacja nie może ustalić lokalizacji urządzenia, której ustawienie musi być aktywowane w niektórych wersjach Androida, aby możliwe było korzystanie z technologii Bluetooth Low Energy."</string>
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_location_button">"Otwórz ustawienia urządzenia"</string>
     <!-- XACT: Onboarding (test) page title -->
@@ -486,6 +522,98 @@
     <!-- XACT: onboarding(notifications) - illustraction description, header image -->
     <string name="onboarding_notifications_illustration_description">"Kobieta otrzymuje powiadomienie od swojej aplikacji Corona-Warn-App."</string>
 
+    <!-- XACT: onboarding privacy preserving analytics (ppa) - illustraction description, header image -->
+    <string name="onboarding_ppa_illustration_description">"Osoba trzyma w dłoni smartfon"</string>
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
+    <string name="onboarding_ppa_headline">"Udostępnij dane"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Podziel się z nami informacjami na temat korzystania z aplikacji i pomóż nam ocenić jej skuteczność."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
+    <string name="onboarding_ppa_body">"Możesz pomóc nam ulepszyć aplikację Corona-Warn-App. Udostępnij dane o korzystaniu z aplikacji instytutowi RKI, który będzie mógł wówczas ocenić jej skuteczność. Twoje dane pomogą również ulepszyć funkcje i użyteczność tej aplikacji."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
+    <string name="onboarding_ppa_state_title">"Twój kraj związkowy (opcjonalnie)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - district title -->
+    <string name="onboarding_ppa_district_title">"Twój okręg (powiat) (opcjonalnie)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - regional evaluation text -->
+    <string name="onboarding_ppa_regional_evaluation_text">"Jeśli podasz również swój kraj związkowy i region, będziemy mogli przeprowadzić analizy regionalne."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
+    <string name="onboarding_ppa_age_title">"Twój wiek (opcjonalnie)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="onboarding_ppa_more_info_title">"Szczegółowe informacje o ryzyku związanym z przetwarzaniem i ochroną danych w USA i innych krajach trzecich"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
+    <string name="onboarding_ppa_consent_donate_button">"Udostępnij dane"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
+    <string name="onboarding_ppa_consent_not_donate_button">"Nie udostępniaj"</string>
+
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - more info - headline -->
+    <string name="onboarding_ppa_more_info_headline">"Szczegółowe informacje na temat udostępniania danych"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - consent title -->
+    <string name="onboarding_ppa_more_info_decline_processing_text">"Jeśli nie wyrażasz zgody na przekazanie swoich danych do kraju trzeciego, nie klikaj opcji „Akceptuj”. Nadal będziesz mieć możliwość korzystania z aplikacji, ale nie z funkcji udostępniania danych."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
+    <string name="onboarding_ppa_more_info_data_processing_title">"Przetwarzanie danych w procesie udostępniania danych"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
+    <string name="onboarding_ppa_more_info_data_processing_body">"Jeśli wyrazisz zgodę na udostępnienie swoich danych, aplikacja będzie codziennie wysyłać różne dane do RKI. Przesłane dane pomogą nam ocenić skuteczność aplikacji i będą analizowane w celu wprowadzenia następujących ulepszeń:"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Ulepszone rejestrowanie narażenia – Chcemy poprawić dokładność i wiarygodność technicznych obliczeń ryzyka zakażenia. Aby to osiągnąć, będziemy analizować otrzymywane przez Ciebie informacje o narażeniu na ryzyko i ostrzeżenia. Pozwoli to nam udoskonalić metodę obliczeń."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Ulepszone wskazówki dla użytkownika w aplikacji – Chcemy ułatwić korzystanie z aplikacji. W tym celu będziemy analizować informacje o poszczególnych krokach wykonywanych przez użytkowników w aplikacji. Pozwoli to nam na zwiększenie przejrzystości etykiet i tekstów informacyjnych oraz usprawnienie sposobu wyszukiwania elementów sterujących. Będziemy też mogli dostosować układy do różnych modeli smartfonów."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 3 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Zapewnienie informacji i pomocy w aplikacji – Chcemy być w stanie stwierdzić, czy podczas korzystania z aplikacji w niektórych ośrodkach testowych i laboratoriach lub w niektórych regionach mogą wystąpić problemy. Będziemy mogli to ustalić, jeśli na przykład udostępnione dane wskażą, że wyniki testów są dostarczane z opóźnieniem w niektórych regionach. Odpowiednie organy ds. zdrowia publicznego mogą być również powiadamiane o potencjalnych problemach technicznych."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 4 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Ulepszenie statystyk dotyczących przebiegu pandemii – Twoje dane pomogą nam w zebraniu informacji na temat rozprzestrzeniania się pandemii w czasie i przestrzeni oraz umożliwią szybsze reagowanie na pewne trendy."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data title -->
+    <string name="onboarding_ppa_more_info_rki_data_title">"W tym celu RKI gromadzi następujące dane:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 1 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"Data przekazania danych."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 2 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Zmiany w historii ostrzeżeń w porównaniu z poprzednim dniem."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 3 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Informacje o tym, jakie ryzyko wyświetliło Ci się w momencie przekazania danych."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 4 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"Informacje na temat podstawy obliczania statusu ryzyka w związku z narażeniem."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 1 -->
+    <string name="onboarding_ppa_more_info_rki_data_body_1">"Jeśli pobrałeś(-aś) wynik testu za pośrednictwem aplikacji:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 5 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Informacje o tym, czy za pośrednictwem aplikacji otrzymałeś(-aś) pozytywny czy negatywny wynik testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 6 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Informacje o ryzyku wyliczonym w momencie rejestracji testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 7 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Informacja o czasie, który upłynął między Twoim ostatnim narażeniem o podwyższonym ryzyku a rejestracją testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 8 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Informacja o czasie, który upłynął między ostatnim powiadomieniem o podwyższonym ryzyku a rejestracją testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 9 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Informacja o udostępnieniu wyniku testu i ostrzeżeniu innych osób."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 2-->
+    <string name="onboarding_ppa_more_info_rki_data_body_2">"Jeśli ostrzegłeś(-aś) innych o potencjalnym narażeniu:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 10 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Informacja o tym, czy anulowałeś(-aś) działania mające na celu ostrzeżenie innych."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 11 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Informacja o tym, czy podałeś(-aś) szczegółowe dane na temat wystąpienia objawów."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 12 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Informacja o czasie wyrażenia zgody na ostrzeżenie innych."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 13 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Informacja o otrzymanym powiadomieniu w związku ostrzeżeniem innych osób."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 14 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"Informacja o liczbie godzin, w ciągu której otrzymałeś(-aś) wyniku testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 15 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Informacja o liczbie dni, które minęły od ostatniego powiadomienia o podwyższonym ryzyku."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 16 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Informacja o liczbie godzin, które minęły od czasu rejestracji testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info body-->
+    <string name="onboarding_ppa_more_info_other_info_body">"Inne informacje:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Informacja o podanej przez Ciebie grupie wiekowej."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Informacja o czasie, który upłynął między Twoim ostatnim narażeniem o podwyższonym ryzyku a rejestracją testu."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Informacja o udostępnieniu wyniku testu i ostrzeżeniu innych osób."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
+    <string name="onboarding_ppa_more_info_much_privacy_body">"Tych informacji nie można powiązać z Twoją osobą. Twoja tożsamość zostanie zachowana w poufności.\nInformacje zostaną przeanalizowane w celach statystycznych. Nie zostaną zapisane w profilu."</string>
+
+
+
+
+
     <!-- ####################################
              Onboarding sixteen include
    ###################################### -->
@@ -642,6 +770,14 @@
     <!-- XHED : settings(background priority) - headline on card about the current status and what to do -->
     <string name="settings_background_priority_card_headline">"Zmień priorytetowe działanie w tle"</string>
 
+    <!-- XTXT: settings(privacy preserving analytics) - text in row on settings overview -->
+    <string name="settings_privacy_preserving_analytics_body_description">"Zezwalaj na przekazywanie informacji o korzystaniu."</string>
+    <!-- XHED: settings(background priority) - Privacy preserving analytics page title -->
+    <string name="settings_privacy_preserving_analytics_title">"Udostępnij dane"</string>
+
+    <!-- XTXT: privacy preserving analytics settings switch subtitle  -->
+    <string name="settings_analytics_switch_subtitle">"Udostępnij dane użytkownika"</string>
+
     <!-- ####################################
                App Information
     ###################################### -->
@@ -868,6 +1004,8 @@
     <string name="submission_consent_main_third_point">"Twoja tożsamość nie zostanie ujawniona. Inni użytkownicy nie dowiedzą się, kto udostępnił swoje wyniki testów."</string>
     <!-- YTXT: Body for consent main section fourth point  -->
     <string name="submission_consent_main_fourth_point">"Aby wyrazić zgodę, musisz mieć ukończone 16 lat."</string>
+    <!-- YTXT: Content Description for the illustration  -->
+    <string name="submission_consent_main_illustration_description">"Osoba trzyma smartfon. Kod QR w teście symbolizuje kod do zeskanowania."</string>
 
     <!-- Submission Test Result -->
     <!-- XHED: Page headline for test result  -->
@@ -1038,7 +1176,7 @@
     <!-- YTXT: text after submission: contagious -->
     <string name="submission_done_contagious">"Organ ds. zdrowia publicznego skontaktuje się z Tobą w ciągu kilku najbliższych dni."</string>
     <!-- YTXT: text after submission: isolate -->
-    <string name="submission_done_isolate">"Zastosuj izolacjÄ™ / unikaj kontaktu fizycznego z innymi osobami."</string>
+    <string name="submission_done_isolate">"Możesz zarażać. Izoluj się od innych osób."</string>
     <!-- XHED: Title for further info -->
     <string name="submission_done_further_info_title">"Inne informacje:"</string>
     <!-- YTXT: submission done further info bullet points -->
@@ -1198,6 +1336,24 @@
     <!-- YTXT: text for share result card-->
     <string name="submission_status_card_positive_result_share">"Udostępnij swoje losowe identyfikatory, aby umożliwić ostrzeganie innych osób."</string>
 
+    <!-- Reenable risk card -->
+    <!-- XHED: Card title for re-enable risk card -->
+    <string name="reenable_risk_card_title">"Zakończono sprawdzanie narażeń"</string>
+    <!-- YTXT: Body text for test registration date -->
+    <string name="reenable_risk_card_test_registration_string">"Test zarejestrowany dnia %s"</string>
+    <!-- YTXT: Description text for re-enable risk card -->
+    <string name="reenable_risk_card_description_text">"Automatyczne sprawdzanie narażeń zakończyło się, ponieważ zdiagnozowano u Ciebie koronawirusa i przebywasz obecnie na izolacji. W każdej chwili możesz ponownie aktywować test narażenia. Jeśli to zrobisz, zarejestrowany test zostanie automatycznie usunięty."</string>
+    <!-- XBUT: Button for re-enabling risk calculation -->
+    <string name="reenable_risk_card_button_text">"Włącz sprawdzanie narażeń "</string>
+    <!-- XHED: Dialog title for reactivate risk calculation  -->
+    <string name="dialog_reactivate_risk_calculation_title">"Aktywuj sprawdzanie narażeń."</string>
+    <!-- YTXT: Dialog text for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_message">"Twój bieżący test zostanie usunięty z aplikacji, więc w razie potrzeby możesz zarejestrować nowy test."</string>
+    <!-- XBUT: Positive button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_positive">"Aktywuj"</string>
+    <!-- XBUT: Negative button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_negative">"Anuluj"</string>
+
     <!-- Test Result Card -->
     <string name="test_result_card_headline">"Twoja diagnoza:"</string>
     <!-- YTXT: virus name text -->
@@ -1239,15 +1395,15 @@
     <!-- YTXT: Text for consent given -->
     <string name="submission_test_result_available_text_consent_given">"Dziękujemy za wyrażenie zgody na udostępnienie wyniku testu i pomoc w ostrzeganiu innych osób. \n\n"<b>"W następnym kroku udostępnij wynik testu, klikając opcję „Udostępnij”."</b></string>
     <!-- XHED: Close screen popup title for consent given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_given">"Czy chcesz anulować?"</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_given">"Czy na pewno chcesz anulować ten proces?"</string>
     <!-- XTXT: Close screen popup text for consent given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_given">"Twoje wpisy nie zostanÄ… zapisane."</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_given">"Ważne:\nTen proces zostanie anulowany.\nNie ostrzegłeś(-aś) jeszcze innych osób. Ukończ proces i pomóż chronić innych."</string>
     <!-- YTXT: Text for consent NOT given -->
     <string name="submission_test_result_available_text_consent_not_given">"Zdecydowałeś(-aś) się nie udostępniać wyniku testu. Inne osoby nie zostaną ostrzeżone. \n\nW kolejnym kroku możesz zmienić zdanie i udostępnić wynik testu, aby powstrzymać rozprzestrzenianie się koronawirusa i uchronić inne osoby przed zakażeniem."</string>
     <!-- XHED: Close screen popup title for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Ważne:\nTen proces zostanie anulowany.\nNie ostrzegłeś(-aś) jeszcze innych osób. Ukończ proces i pomóż chronić innych."</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Czy chcesz anulować?"</string>
     <!-- XTXT: Close screen popup text for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Czy na pewno chcesz anulować ten proces?"</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Twoje wpisy nie zostanÄ… zapisane."</string>
     <!-- XBUT: Close screen popup cancel button -->
     <string name="submission_test_result_available_close_dialog_cancel_button">"Anuluj"</string>
     <!-- XBUT: Close screen popup continue button -->
@@ -1291,7 +1447,7 @@
     <!-- XHED: Title for submission statistics card -->
     <string name="statistics_card_submission_title">"Ostrzeżenia od użytkowników aplikacji"</string>
     <!-- XTXT: Text displayed in the bottom of submission statistics card-->
-    <string name="statistics_card_submission_bottom_text">"Informacje o aplikacji Corona-Warn-App"</string>
+    <string name="statistics_card_submission_bottom_text">"za pośrednictwem Corona-Warn-App"</string>
 
     <!-- XTXT: Timestamp refers to today's date in submission and infections cards -->
     <string name="statistics_primary_value_today">"Dzisiaj"</string>
@@ -1313,7 +1469,7 @@
     <!-- XHED: Explanation screen title -->
     <string name="statistics_explanation_title">"Wskaźniki"</string>
     <!-- XHED: Explanation screen subtitle -->
-    <string name="statistics_explanation_subtitle">"Objaśnienie statystyk"</string>
+    <string name="statistics_explanation_subtitle">"Objaśnienie ogólnokrajowych statystyk"</string>
     <!-- XHED: Explanation screen confirmed new infections title -->
     <string name="statistics_explanation_confirmed_new_infection_title">"Potwierdzone nowe zakażenia"</string>
     <!-- XTXT: Explanation screen confirmed new infections text -->
@@ -1331,7 +1487,7 @@
     <!-- XTXT: Explanation screen seven day r-value text -->
     <string name="statistics_explanation_seven_day_r_value_text">"Współczynnik reprodukcji R wskazuje liczbę osób, którą zaraża przeciętna osoba zakażona. Bieżąca wartość uwzględnia dane z ostatnich 5 dni.\n\nWięcej informacji znajdziesz w odpowiedziach na często zadawane pytania:\nCzęsto zadawane pytania dotyczące statystyk."</string>
     <!-- XTXT: Explanation screen seven day r-value link label  - the characters have to match the last part of the text label above -->
-    <string name="statistics_explanation_seven_day_r_link_label">"Często zadawane pytania dotyczące statystyk."</string>
+    <string name="statistics_explanation_seven_day_r_link_label">"Często zadawane pytania dotyczące statystyk"</string>
     <!-- XHED: Explanation screen legend title -->
     <string name="statistics_explanation_legend_title">"Legenda"</string>
     <!-- XHED: Explanation screen period title -->
@@ -1613,5 +1769,112 @@
     <string name="statistics_trend_decreasing">"Trend: MalejÄ…cy"</string>
     <!-- XTXT: Statistics trend stable (Accessibilty) -->
     <string name="statistics_trend_stable">"Trend: Stabilny"</string>
+    <!-- XHED: Title for BottomNav main screen title -->
+    <string name="bottom_nav_home_title">"Ekran poczÄ…tkowy"</string>
+    <!-- XHED: Title for BottomNav diary screen title -->
+    <string name="bottom_nav_diary_title">"Dziennik"</string>
+
+    <!-- ####################################
+           Data Donation & Survey
+    ###################################### -->
 
+    <!-- XHED: Title for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_title">"Ankieta dotyczÄ…ca aplikacji Corona-Warn-App"</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_content">"Pomóż nam ulepszyć aplikację, odpowiadając na kilka prostych pytań."</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_button_text">"Przejdź do ankiety"</string>
+
+    <!-- XHED: Title for the access survey button displayed at the bottom of the screen -->
+    <string name="datadonation_details_survey_consent_button_title">"Akceptuj"</string>
+    <!-- XHED: Text for the access survey title displayed at the top of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_title">"Ankieta oceniajÄ…ca i ulepszajÄ…ca aplikacjÄ™ Corona-Warn-App"</string>
+    <!-- XHED: Text for the access survey body displayed under the title of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_body"><b>"Pomóż nam ulepszyć aplikację Corona-Warn-App, wypełniając ankietę na temat swoich doświadczeń z aplikacją. Pomoże to instytutowi RKI ocenić skuteczność aplikacji, ulepszyć aplikację i ustalić wpływ ostrzeżeń wysyłanych przez aplikację na zachowanie osób o podwyższonym ryzyku."</b>"\n\nAnkieta jest przeznaczona wyłącznie dla osób, których aplikacja wskazała na narażenie o podwyższonym ryzyku. Ankieta jest przeprowadzana na stronie internetowej RKI. W następnym kroku zostanie wyświetlony link do ankiety, który przekieruje Cię na tę stronę internetową. Przed jej wyświetleniem musisz potwierdzić autentyczność aplikacji. Będzie to wymagać Twojej zgody.\n\nPo naciśnięciu linku do ankiety otrzymasz dodatkowe informacje o ankiecie. Zostaniesz również poproszony(-a) o ponowne wyrażenie zgody przed rozpoczęciem ankiety."</string>
+
+    <!-- XHED: Title of the survey consent detail screen -->
+    <string name="datadonation_details_survey_consent_details_title">"Szczegółowe informacje na temat przetwarzania danych związanego z ankietą"</string>
+
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"Czas na Twoim smartfonie nie zgadza się z aktualnym czasem. Popraw czas w ustawieniach swojego smartfona (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"Nie można pobrać ankiety (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"W tej chwili nie można pobrać ankiety. Zaktualizuj usługi Google Play (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"W tej chwili nie można pobrać ankiety. Spróbuj ponownie później (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"Ankiety nie można pobrać ze względów bezpieczeństwa. Możesz ponownie wypełnić ankietę w następnym miesiącu kalendarzowym (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Dziękujemy za chęć pomocy. Niestety, korzystasz ze smartfona, który nie obsługuje ankiety z powodów technicznych (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"Ze względów bezpieczeństwa nie możesz wypełnić ankiety wcześniej niż po upływie 24 godzin od zainstalowania lub zaktualizowania aplikacji (kod błędu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"Wypełniłeś(-aś) już ankietę. Ankietę można wypełnić tylko raz w miesiącu (kod błędu %1$s)."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"BÅ‚Ä…d"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"ok"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Ładowanie ankiety..."</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below"><b>"Informacje o ankiecie RKI"</b></string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"Po zweryfikowaniu autentyczności Twojej aplikacji przekieruje Cię ona do witryny internetowej RKI, korzystając z niestandardowego linku do wygenerowanej dla Ciebie ankiety. Ten link do ankiety zawiera jednorazowe hasło, które jest generowane przez aplikację Corona-Warn-App. Po naciśnięciu linku do ankiety i wywołaniu witryny internetowej z ankietą jednorazowe hasło zostanie tymczasowo zachowane w przeglądarce. Ten ekran zawiera dodatkowe informacje o ankiecie i sposobie jej wypełnienia, na przykład o tym, jak rozpocząć ankietę. Na początku ankiety jednorazowe hasło jest przesyłane do serwerów Corona-Warn-App, gdzie jest oznaczane jako użyte. Następnie serwer sprawdza, czy możesz wypełnić ankietę. Zapewnia się w ten sposób jednorazowe wypełnienie ankiety przez każdego użytkownika."</string>
+
+    <!-- XHED: Analytics voluntary user input, age group toolbar title -->
+    <string name="analytics_userinput_agegroup_title">"Twoja grupa wiekowa"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
+    <string name="analytics_userinput_agegroup_unspecified">"Brak odpowiedzi"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
+    <string name="analytics_userinput_agegroup_0_to_29">"0-29 lat"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
+    <string name="analytics_userinput_agegroup_30_to_59">"30-59 lat"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
+    <string name="analytics_userinput_agegroup_from_60">"Powyżej 60 lat"</string>
+
+    <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
+    <string name="analytics_userinput_federalstate_title">"Twój kraj związkowy"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_UNSPECIFIED -->
+    <string name="analytics_userinput_federalstate_unspecified">"Brak odpowiedzi"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BW -->
+    <string name="analytics_userinput_federalstate_bw">"Badenia-Wirtembergia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BY -->
+    <string name="analytics_userinput_federalstate_by">"Bawaria"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BE -->
+    <string name="analytics_userinput_federalstate_be">"Berlin"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BB -->
+    <string name="analytics_userinput_federalstate_bb">"Brandenburgia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HB -->
+    <string name="analytics_userinput_federalstate_hb">"Brema"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HH -->
+    <string name="analytics_userinput_federalstate_hh">"Hamburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HE -->
+    <string name="analytics_userinput_federalstate_he">"Hesja"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_MV -->
+    <string name="analytics_userinput_federalstate_mv">"Meklemburgia-Pomorze Zachodnie"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NI -->
+    <string name="analytics_userinput_federalstate_ni">"Dolna Saksonia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NRW -->
+    <string name="analytics_userinput_federalstate_nrw">"Nadrenia Północna-Westfalia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_RP -->
+    <string name="analytics_userinput_federalstate_rp">"Nadrenia-Palatynat"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SL -->
+    <string name="analytics_userinput_federalstate_sl">"Saara"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SN -->
+    <string name="analytics_userinput_federalstate_sn">"Saksonia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_ST -->
+    <string name="analytics_userinput_federalstate_st">"Saksonia-Anhalt"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SH -->
+    <string name="analytics_userinput_federalstate_sh">"Szlezwik-Holsztyn"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_TH -->
+    <string name="analytics_userinput_federalstate_th">"Turyngia"</string>
+
+    <!-- XHED: Analytics voluntary user input, district toolbar title -->
+    <string name="analytics_userinput_district_title">"Twój okręg (powiat)"</string>
+    <!-- XTXT: Analytics voluntary user input, district: UNSPECIFIED -->
+    <string name="analytics_userinput_district_unspecified">"Brak odpowiedzi"</string>
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-ro/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-ro/contact_diary_strings.xml
index 8c9d269633fb63a8b5202c40e0d4ff8f4a0ca654..90539612e53b315e2e8674688e51d65ae34521da 100644
--- a/Corona-Warn-App/src/main/res/values-ro/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-ro/contact_diary_strings.xml
@@ -22,9 +22,9 @@
     <!-- XTXT: Body for the contact diary card displayed in the homescreen  -->
     <string name="contact_diary_homescreen_card_body">"Păstrați evidența locurilor prin care ați fost și a persoanelor cu care v-ați întâlnit."</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_homescreen_card_button_text">"Gestionare jurnal"</string>
+    <string name="contact_diary_homescreen_card_button_text">"Deschidere jurnal"</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_onboarding_button_text">"Gestionare jurnal"</string>
+    <string name="contact_diary_onboarding_button_text">"Deschidere jurnal"</string>
 
     <!-- XTXT: Title for the contact diary onboarding screen -->
     <string name="contact_diary_information_card_title">"Păstrați evidența contactelor dvs."</string>
@@ -59,7 +59,7 @@
     <!-- XTXT: Title for contact diary overview screen -->
     <string name="contact_diary_overview_title">"Jurnal de contacte"</string>
     <!-- XTXT: Subtitle for contact diary overview screen -->
-    <string name="contact_diary_overview_subtitle">"Notați persoanele pe care le-ați întâlnit și locurile pe care le-ați vizitat."</string>
+    <string name="contact_diary_overview_subtitle">"Notați persoanele pe care le-ați întâlnit și locurile pe care le-ați vizitat. Dacă pentru o zi este afișat un risc, puteți avertiza persoanele cu care v-ați întâlnit în ziua respectivă dacă acestea nu utilizează încă aplicația Corona-Warn."</string>
     <!-- XTXT: Header for contact diary overview screen -->
     <string name="contact_diary_overview_header">"Pagina inițială"</string>
 
@@ -132,4 +132,5 @@
     <string name="accessibility_action_deselect">"Anulare selecție"</string>
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Editare"</string>
+
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-ro/release_info_strings.xml b/Corona-Warn-App/src/main/res/values-ro/release_info_strings.xml
index bfa4639f34a2faa7512426f0c54e2ff23ee581eb..ab72df625c9f8d4eddcd4860a9a8944b1735ee0a 100644
--- a/Corona-Warn-App/src/main/res/values-ro/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-ro/release_info_strings.xml
@@ -11,5 +11,47 @@
     <string name="release_info_version_body">"Pe lângă remedierile de erori, această actualizare include și caracteristici noi și îmbunătățiri."</string>
     <!-- XBUT: Continue button for the release info screen -->
     <string name="release_info_continue_button">"ÃŽnainte"</string>
+    <!-- XTXT: New release info footer -->
+    <string name="new_release_bottom">"Modificările din această versiune pot fi găsite în setările aplicației, la „Caracteristici noi”."</string>
+
+    <!-- XHED: Titles for the release info screen bullet points -->
+    <string-array name="new_release_title">
+        <item>"Legătură la chestionarul RKI"</item>
+        <item>"Consimțământ pentru partajarea datelor (opțional)"</item>
+        <item>"Modificări la mozaicurile riscului"</item>
+        <item>"Continuarea înregistrării în jurnal a expunerilor după partajarea ID-urilor dvs. aleatorii"</item>
+        <item>"Implementarea taburilor"</item>
+        <item>"Mai multe informații despre procedura de testare"</item>
+    </string-array>
+
+    <!-- XTXT: Text bodies for the release info screen bullet points -->
+    <string-array name="new_release_body">
+        <item>"Dacă aveți risc crescut, puteți începe cu participarea la un chestionar desfășurat de Institutul Robert Koch în aplicație."</item>
+        <item>"Acum aveți opțiunea de partajare a datelor de utilizare, ceea ce ne va ajuta să îmbunătățim aplicația."</item>
+        <item>"Modificări minore ale textelor de pe mozaicurile riscului."</item>
+        <item>"După ce ați partajat ID-urile dvs. aleatorii criptate, puteți decide dacă și când doriți să activați din nou înregistrarea în jurnal a expunerilor."</item>
+        <item>"Acum există o pagină de tab separată pentru jurnalul dvs. de contacte. Acesta vă permite să accesați jurnalul dvs. și să comutați de la jurnalul de contacte înapoi la ecranul inițial al aplicației mai rapid."</item>
+        <item>"Aplicația conține acum informații mai detaliate despre procedura de testare."</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
 
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-ro/strings.xml b/Corona-Warn-App/src/main/res/values-ro/strings.xml
index 06c5fdf6f5b11a500f226a98b428e0f5329526ce..e29be8d41f483ea294dcf04f97dcbd3e28617c81 100644
--- a/Corona-Warn-App/src/main/res/values-ro/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-ro/strings.xml
@@ -150,6 +150,15 @@
     <string name="risk_card_low_risk_no_encounters_body">"Nicio expunere"</string>
     <!-- XTXT: risk card - Low risk state - Days with low risk encounters -->
     <plurals name="risk_card_low_risk_encounter_days_body">
+        <item quantity="one">"Expuneri cu risc redus în %1$d zi"</item>
+        <item quantity="other">"Expuneri cu risc redus în %1$d de zile"</item>
+        <item quantity="zero">"Expuneri cu risc redus în %1$d de zile"</item>
+        <item quantity="two">"Expuneri cu risc redus în %1$d de zile"</item>
+        <item quantity="few">"Expuneri cu risc redus în %1$d zile"</item>
+        <item quantity="many">"Expuneri cu risc redus în %1$d de zile"</item>
+    </plurals>
+    <!-- XACT: risk card - Low risk state - Days with low risk encounters description -->
+    <plurals name="risk_card_low_risk_encounter_days_body_description">
         <item quantity="one">"Expuneri cu risc redus într-o zi"</item>
         <item quantity="other">"Expuneri cu risc redus în %1$d de zile"</item>
         <item quantity="zero">"Expuneri cu risc redus în %1$d de zile"</item>
@@ -157,9 +166,22 @@
         <item quantity="few">"Expuneri cu risc redus în %1$d zile"</item>
         <item quantity="many">"Expuneri cu risc redus în %1$d de zile"</item>
     </plurals>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and single day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"Pe %1$s"</string>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and more than one day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"Cel mai recent pe %1$s"</string>
 
     <!-- XTXT: risk card - High risk state - Days with high risk encounters -->
     <plurals name="risk_card_high_risk_encounter_days_body">
+        <item quantity="one">"Expuneri cu risc crescut în %1$d zi"</item>
+        <item quantity="other">"Expuneri cu risc crescut în %1$d de zile"</item>
+        <item quantity="zero">"Expuneri cu risc crescut în %1$d de zile"</item>
+        <item quantity="two">"Expuneri cu risc crescut în %1$d de zile"</item>
+        <item quantity="few">"Expuneri cu risc crescut în %1$d zile"</item>
+        <item quantity="many">"Expuneri cu risc crescut în %1$d de zile"</item>
+    </plurals>
+    <!-- XACT: risk card - High risk state - Days with high risk encounters description -->
+    <plurals name="risk_card_high_risk_encounter_days_body_description">
         <item quantity="one">"Expuneri cu risc crescut într-o zi"</item>
         <item quantity="other">"Expuneri cu risc crescut în %1$d de zile"</item>
         <item quantity="zero">"Expuneri cu risc crescut în %1$d de zile"</item>
@@ -167,6 +189,10 @@
         <item quantity="few">"Expuneri cu risc crescut în %1$d zile"</item>
         <item quantity="many">"Expuneri cu risc crescut în %1$d de zile"</item>
     </plurals>
+
+    <!-- XTXT: risk card - High risk state - Most recent date with high risk and single day of encounters -->
+    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"Pe %1$s"</string>
+
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and more than one day of encounters -->
     <string name="risk_card_high_risk_most_recent_body_encounters_on_more_than_one_day">"Cel mai recent pe %1$s"</string>
 
@@ -294,6 +320,14 @@
     <string name="risk_details_behavior_body_wear_mask">"Purtați o mască facială când întâlniți alte persoane."</string>
     <!-- XMSG: risk details - stay 1,5 away, something like a bullet point -->
     <string name="risk_details_behavior_body_stay_away">"Păstrați o distanță de cel puțin 1,5 metri față de alte persoane."</string>
+
+    <!-- XMSG: risk details - link to faq, something like a bullet point -->
+    <string name="risk_details_increased_risk_faq_link_text">"Dacă vă testați, veți găsi mai multe informații despre procedura de testare în Întrebările frecvente."</string>
+    <!-- XTXT: Explanation screen increased risk level link label - HAS TO MATCH the link text above -->
+    <string name="risk_details_increased_risk_faq_link_label">"Întrebările frecvente"</string>
+    <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
+    <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/en/faq/#red_card_how_to_test"</string>
+
     <!-- XMSG: risk details - cough/sneeze, something like a bullet point -->
     <string name="risk_details_behavior_body_cough_sneeze">"Strănutați sau tușiți în pliul cotului sau într-un șervețel."</string>
     <!-- XMSG: risk details - contact your doctor, bullet point -->
@@ -312,6 +346,8 @@
     <string name="risk_details_information_body_period_logged">"Riscul dvs. de infectare poate fi calculat doar pentru perioadele în care a fost activă înregistrarea în jurnal a expunerilor. Prin urmare, caracteristica de înregistrare în jurnal trebuie să rămână permanent activă."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged_assessment">"Înregistrarea în jurnal a expunerilor acoperă ultimele 14 zile. În această perioadă, caracteristica de înregistrare în jurnal de pe smartphone-ul dvs. a fost activă timp de %1$s zile. Aplicația șterge automat înregistrările mai vechi din jurnal, întrucât acestea nu mai sunt relevante pentru prevenirea infectării."</string>
+    <!-- XTXT: risk details - infection period days logged/14 -->
+    <string name="risk_details_information_active_tracing_days_circle_progress">"%s/14"</string>
     <!-- XHED: risk details - how your risk level was calculated, below behaviors -->
     <string name="risk_details_subtitle_infection_risk_past">"Modul în care a fost calculat riscul dvs."</string>
     <!-- XHED: risk details - how your risk level will be calculated, below behaviors -->
@@ -428,13 +464,13 @@
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_button_next">"Activați înregistrarea în jurnal a expunerilor"</string>
     <!-- XTXT: onboarding(tracing) - dialog about tracing permission declined -->
-    <string name="onboarding_tracing_dialog_headline">"Autorizație"</string>
+    <string name="onboarding_tracing_dialog_headline">"Nu activați?"</string>
     <!-- YMSI: onboarding(tracing) - dialog about tracing -->
-    <string name="onboarding_tracing_dialog_body">"Aceasta înseamnă că aplicația Corona-Warn nu poate trimite sau primi notificări despre starea riscului dvs. de infectare cu COVID-19. Puteți oricând dezactiva această caracteristică."</string>
+    <string name="onboarding_tracing_dialog_body">"Dacă nu activați înregistrarea în jurnal a expunerilor, aplicația nu poate determina starea riscului dvs. Aceasta înseamnă că nu veți primi informații despre riscul dvs. în aplicație. Puteți oricând reactiva înregistrarea în jurnal a expunerilor."</string>
     <!-- XBUT: onboarding(tracing) - positive button (right) -->
     <string name="onboarding_tracing_dialog_button_positive">"Nu activați"</string>
     <!-- XBUT: onboarding(tracing) - negative button (right) -->
-    <string name="onboarding_tracing_dialog_button_negative">"ÃŽnapoi"</string>
+    <string name="onboarding_tracing_dialog_button_negative">"Anulare"</string>
     <!-- XACT: onboarding(tracing) - dialog about background jobs header text -->
     <string name="onboarding_background_fetch_dialog_headline">"Împrospătarea aplicației în fundal dezactivată"</string>
     <!-- YMSI: onboarding(tracing) - dialog about background jobs -->
@@ -460,9 +496,9 @@
     <!-- XACT: onboarding(tracing) - illustraction description, header image -->
     <string name="onboarding_tracing_illustration_description">"Trei persoane și-au activat pe smartphone înregistrarea în jurnal a expunerilor, ceea ce va duce la înregistrarea întâlnirilor lor."</string>
     <!-- XHED: onboarding(tracing) - location explanation for bluetooth headline -->
-    <string name="onboarding_tracing_location_headline">"Permiteți accesul la locație"</string>
+    <string name="onboarding_tracing_location_headline">"Activați setarea locației"</string>
     <!-- XTXT: onboarding(tracing) - location explanation for bluetooth body text -->
-    <string name="onboarding_tracing_location_body">"Locația dvs. nu poate fi accesată. Google și/sau Android necesită acces la locația smartphone-ului dvs. pentru a utiliza Bluetooth-ul."</string>
+    <string name="onboarding_tracing_location_body">"Locația dispozitivului dvs. nu poate fi determinată de aplicație, dar setarea locației dispozitivului trebuie să fie activată pentru a utiliza Bluetooth Low Energy pe unele versiuni Android."</string>
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_location_button">"Deschideți configurările dispozitivului"</string>
     <!-- XACT: Onboarding (test) page title -->
@@ -486,6 +522,98 @@
     <!-- XACT: onboarding(notifications) - illustraction description, header image -->
     <string name="onboarding_notifications_illustration_description">"O femeie primește o notificare de la Corona-Warn-App."</string>
 
+    <!-- XACT: onboarding privacy preserving analytics (ppa) - illustraction description, header image -->
+    <string name="onboarding_ppa_illustration_description">"O persoană ține un smartphone în mână"</string>
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
+    <string name="onboarding_ppa_headline">"Partajare date"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Spuneți-ne cum utilizați aplicația și ajutați-ne să evaluăm eficacitatea acesteia."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
+    <string name="onboarding_ppa_body">"Ne puteți ajuta să îmbunătățim aplicația Corona-Warn. Partajați datele dvs. despre utilizarea aplicației cu institutul RKI. Astfel, ajutați RKI să evalueze eficacitatea aplicației. De asemenea, datele dvs. vor ajuta la îmbunătățirea caracteristicilor și utilizării aplicației."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
+    <string name="onboarding_ppa_state_title">"Statul dvs. federal (opțional)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - district title -->
+    <string name="onboarding_ppa_district_title">"Districtul dvs. (județul) (opțional)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - regional evaluation text -->
+    <string name="onboarding_ppa_regional_evaluation_text">"Dacă specificați, de asemenea, statul federal și regiunea dvs., putem efectua analize regionale."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
+    <string name="onboarding_ppa_age_title">"Vârsta dvs. (opțional)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="onboarding_ppa_more_info_title">"Informații detaliate despre prelucrarea acestor date și riscurile privind prelucrarea datelor din SUA și din alte țări terțe"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
+    <string name="onboarding_ppa_consent_donate_button">"Partajare date"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
+    <string name="onboarding_ppa_consent_not_donate_button">"Fără partajare"</string>
+
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - more info - headline -->
+    <string name="onboarding_ppa_more_info_headline">"Informații detaliate despre partajarea datelor"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - consent title -->
+    <string name="onboarding_ppa_more_info_decline_processing_text">"Dacă nu sunteți de acord cu transferul datelor dvs. către o țară non-UE, nu apăsați pe „Accept”. Veți putea utiliza în continuare aplicația, dar nu și caracteristica de partajare a donării datelor."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
+    <string name="onboarding_ppa_more_info_data_processing_title">"Prelucrarea datelor în procesul de partajare a datelor"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
+    <string name="onboarding_ppa_more_info_data_processing_body">"Dacă sunteți de acord să partajați datele dvs., aplicația trimite diverse date către RKI în fiecare zi. Datele transmise ne vor ajuta să evaluăm eficacitatea aplicației și vor fi analizate pentru a permite următoarele îmbunătățiri:"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Îmbunătățirea înregistrării în jurnal a expunerilor – Dorim să îmbunătățim precizia și încrederea calculului tehnic al riscurilor de infectare. Pentru aceasta, vom evalua informațiile despre expunerile la risc și avertizările pe care le vedeți. Drept rezultat, vom putea rafina metoda de calcul."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Îmbunătățirea ghidării utilizatorului în aplicație – Dorim să facem aplicația ușor de utilizat. Pentru aceasta, vom evalua informațiile despre pașii individuali făcuți de utilizatori în aplicație. Acest lucru ne va ajuta să facem mai clare etichetele și textele de informare și să aranjăm elementele de control pentru a le face mai ușor de găsit. De asemenea, vom putea personaliza aspectul pentru diferitele modele de smartphone-uri."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 3 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Facilitarea informării și asistenței în aplicație – Dorim să putem afla dacă apar probleme la utilizarea aplicației în legătură cu anumite facilități și laboratoare de testare sau în anumite regiuni. Putem identifica acest lucru dacă, de exemplu, datele partajate indică întârzieri de furnizare a rezultatelor testărilor din anumite regiuni. De asemenea, autoritățile relevante de sănătate publică pot fi notificate punctual de posibila existență a unor probleme tehnice."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 4 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Îmbunătățirea statisticii despre cursul pandemiei – Datele dvs. pot contribui la furnizarea unor analize legate de modul de răspândire a pandemiei în timp și spațiu și ne pot ajuta să răspundem mai rapid la anumite tendințe."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data title -->
+    <string name="onboarding_ppa_more_info_rki_data_title">"În acest scop, RKI colectează următoarele date:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 1 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"Data transmiterii datelor."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 2 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Modificări ale istoricului de avertizare în comparație cu ziua precedentă."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 3 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Informații despre riscul care v-a fost afișat la momentul transmiterii datelor."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 4 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"Informații despre baza de calcul a stării riscului în contextul unei expuneri."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 1 -->
+    <string name="onboarding_ppa_more_info_rki_data_body_1">"Dacă ați primit un rezultat al unui test prin intermediul aplicației:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 5 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Informații dacă ați primit un rezultat de test pozitiv sau negativ prin aplicație."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 6 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Informații despre riscul calculat la momentul înregistrării testului."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 7 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Informații despre timpul dintre ultima dvs. expunere cu risc crescut și înregistrarea testului."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 8 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Informații despre timpul dintre ultima notificare de risc crescut și înregistrarea testului."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 9 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Informații dacă ați partajat rezultatul testului și i-ați avertizat pe ceilalți."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 2-->
+    <string name="onboarding_ppa_more_info_rki_data_body_2">"Dacă i-ați avertizat pe ceilalți despre o posibilă expunere:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 10 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Informații dacă ați anulat pașii de avertizare a altor persoane."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 11 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Informații dacă ați furnizat detalii despre debutul simptomelor dvs."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 12 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Informații despre momentul în care ați acordat consimțământul să-i avertizați pe ceilalți."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 13 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Informații despre notificarea pe care ați obținut-o în contextul avertizării altor persoane."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 14 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"Informații despre numărul de ore până la primirea rezultatului testului."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 15 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Informații despre numărul de zile care a trecut de la ultima notificare a unui risc crescut."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 16 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Informații despre numărul de ore care a trecut de la înregistrarea testului."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info body-->
+    <string name="onboarding_ppa_more_info_other_info_body">"Alte informații:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Informații despre grupul de vârstă pe care l-ați specificat."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Informații despre timpul dintre ultima dvs. expunere cu risc crescut și înregistrarea testului."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Informații dacă ați partajat rezultatul testului și i-ați avertizat pe ceilalți."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
+    <string name="onboarding_ppa_more_info_much_privacy_body">"Aceste informații nu pot fi legate de dvs. în mod personal. Identitatea dvs. va rămâne confidențială.\nInformațiile vor fi analizate în scop statistic. Ele nu vor fi salvate pentru un profil."</string>
+
+
+
+
+
     <!-- ####################################
              Onboarding sixteen include
    ###################################### -->
@@ -642,6 +770,14 @@
     <!-- XHED : settings(background priority) - headline on card about the current status and what to do -->
     <string name="settings_background_priority_card_headline">"Modificați activitatea în fundal cu prioritate"</string>
 
+    <!-- XTXT: settings(privacy preserving analytics) - text in row on settings overview -->
+    <string name="settings_privacy_preserving_analytics_body_description">"Permiteți transmiterea comportamentului dvs. de utilizare."</string>
+    <!-- XHED: settings(background priority) - Privacy preserving analytics page title -->
+    <string name="settings_privacy_preserving_analytics_title">"Partajare date"</string>
+
+    <!-- XTXT: privacy preserving analytics settings switch subtitle  -->
+    <string name="settings_analytics_switch_subtitle">"Partajare date de utilizator"</string>
+
     <!-- ####################################
                App Information
     ###################################### -->
@@ -868,6 +1004,8 @@
     <string name="submission_consent_main_third_point">"Identitatea dvs. va rămâne secretă. Alți utilizatori nu vor afla cine a partajat rezultatul testului."</string>
     <!-- YTXT: Body for consent main section fourth point  -->
     <string name="submission_consent_main_fourth_point">"Trebuie să aveți cel puțin 16 ani pentru a vă acorda consimțământul."</string>
+    <!-- YTXT: Content Description for the illustration  -->
+    <string name="submission_consent_main_illustration_description">"O persoană ține în mână un smartphone. Un cod QR de pe un test simbolizează codul care va fi scanat."</string>
 
     <!-- Submission Test Result -->
     <!-- XHED: Page headline for test result  -->
@@ -1038,7 +1176,7 @@
     <!-- YTXT: text after submission: contagious -->
     <string name="submission_done_contagious">"Autoritatea de sănătate publică vă va contacta în următoarele zile."</string>
     <!-- YTXT: text after submission: isolate -->
-    <string name="submission_done_isolate">"Izolați-vă de alte persoane."</string>
+    <string name="submission_done_isolate">"Sunteți infectat. Izolați-vă de alte persoane."</string>
     <!-- XHED: Title for further info -->
     <string name="submission_done_further_info_title">"Alte informații:"</string>
     <!-- YTXT: submission done further info bullet points -->
@@ -1198,6 +1336,24 @@
     <!-- YTXT: text for share result card-->
     <string name="submission_status_card_positive_result_share">"Trimiteți ID-ul dvs. aleatoriu pentru a-i avertiza și pe alții."</string>
 
+    <!-- Reenable risk card -->
+    <!-- XHED: Card title for re-enable risk card -->
+    <string name="reenable_risk_card_title">"Verificarea expunerii s-a încheiat"</string>
+    <!-- YTXT: Body text for test registration date -->
+    <string name="reenable_risk_card_test_registration_string">"Test înregistrat pe %s"</string>
+    <!-- YTXT: Description text for re-enable risk card -->
+    <string name="reenable_risk_card_description_text">"Verificarea automată a expunerii s-a încheiat deoarece ați fost diagnosticat cu coronavirus și în prezent sunteți în izolare. Puteți reactiva oricând testarea expunerii. Dacă faceți acest lucru, testul dvs. înregistrat va fi șters automat."</string>
+    <!-- XBUT: Button for re-enabling risk calculation -->
+    <string name="reenable_risk_card_button_text">"Pornire verificarea expunerii "</string>
+    <!-- XHED: Dialog title for reactivate risk calculation  -->
+    <string name="dialog_reactivate_risk_calculation_title">"Activați verificarea expunerii."</string>
+    <!-- YTXT: Dialog text for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_message">"Testul dvs. curent va fi șters din aplicație pentru a putea înregistra un test nou dacă este necesar."</string>
+    <!-- XBUT: Positive button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_positive">"Activare"</string>
+    <!-- XBUT: Negative button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_negative">"Anulare"</string>
+
     <!-- Test Result Card -->
     <string name="test_result_card_headline">"Diagnosticul dvs.:"</string>
     <!-- YTXT: virus name text -->
@@ -1239,15 +1395,15 @@
     <!-- YTXT: Text for consent given -->
     <string name="submission_test_result_available_text_consent_given">"Vă mulțumim pentru că sunteți de acord să partajați rezultatul testului dvs. și să ajutați astfel la avertizarea celorlalți. \n\n"<b>"La pasul următor, partajați rezultatul testului dvs. apăsând „Partajare”."</b></string>
     <!-- XHED: Close screen popup title for consent given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_given">"Doriți să anulați?"</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_given">"Sigur doriți să anulați acest proces?"</string>
     <!-- XTXT: Close screen popup text for consent given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_given">"Intrările dvs. nu vor fi salvate."</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_given">"Important:\nSunteți pe punctul de a anula acest proces.\nÎncă nu i-ați avertizat pe ceilalți. Vă rugăm să finalizați procesul și să ajutați la protejarea celorlalți."</string>
     <!-- YTXT: Text for consent NOT given -->
     <string name="submission_test_result_available_text_consent_not_given">"Ați ales să nu partajați rezultatul testului dvs. Ceilalți nu vor fi avertizați. \n\nLa pasul următor, aveți ocazia să vă răzgândiți și să partajați totuși rezultatul testului dvs., pentru a ajuta la oprirea răspândirii coronavirusului și a-i proteja pe ceilalți."</string>
     <!-- XHED: Close screen popup title for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Important:\nSunteți pe punctul de a anula acest proces.\nÎncă nu i-ați avertizat pe ceilalți. Vă rugăm să finalizați procesul și să ajutați la protejarea celorlalți."</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Doriți să anulați?"</string>
     <!-- XTXT: Close screen popup text for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Sigur doriți să anulați acest proces?"</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Intrările dvs. nu vor fi salvate."</string>
     <!-- XBUT: Close screen popup cancel button -->
     <string name="submission_test_result_available_close_dialog_cancel_button">"Anulare"</string>
     <!-- XBUT: Close screen popup continue button -->
@@ -1291,7 +1447,7 @@
     <!-- XHED: Title for submission statistics card -->
     <string name="statistics_card_submission_title">"Avertizări de la utilizatorii aplicației"</string>
     <!-- XTXT: Text displayed in the bottom of submission statistics card-->
-    <string name="statistics_card_submission_bottom_text">"Despre aplicația Corona-Warn"</string>
+    <string name="statistics_card_submission_bottom_text">"prin aplicația Corona-Warn"</string>
 
     <!-- XTXT: Timestamp refers to today's date in submission and infections cards -->
     <string name="statistics_primary_value_today">"Astăzi"</string>
@@ -1313,7 +1469,7 @@
     <!-- XHED: Explanation screen title -->
     <string name="statistics_explanation_title">"Indicatori"</string>
     <!-- XHED: Explanation screen subtitle -->
-    <string name="statistics_explanation_subtitle">"Explicarea statisticii"</string>
+    <string name="statistics_explanation_subtitle">"Explicația statisticii la nivel național"</string>
     <!-- XHED: Explanation screen confirmed new infections title -->
     <string name="statistics_explanation_confirmed_new_infection_title">"Infecții noi confirmate"</string>
     <!-- XTXT: Explanation screen confirmed new infections text -->
@@ -1331,7 +1487,7 @@
     <!-- XTXT: Explanation screen seven day r-value text -->
     <string name="statistics_explanation_seven_day_r_value_text">"Numărul de reproducție R indică câte persoane a infectat mai departe, în medie, o persoană infectată. Valoarea curentă ia în considerare cel mult ultimele 5 zile.\n\nPentru alte informații, consultați întrebările frecvente:\nÎntrebări frecvente despre statistică."</string>
     <!-- XTXT: Explanation screen seven day r-value link label  - the characters have to match the last part of the text label above -->
-    <string name="statistics_explanation_seven_day_r_link_label">"Întrebări frecvente despre statistică."</string>
+    <string name="statistics_explanation_seven_day_r_link_label">"Întrebări frecvente despre statistică"</string>
     <!-- XHED: Explanation screen legend title -->
     <string name="statistics_explanation_legend_title">"Legendă"</string>
     <!-- XHED: Explanation screen period title -->
@@ -1613,5 +1769,112 @@
     <string name="statistics_trend_decreasing">"Tendință: descendentă"</string>
     <!-- XTXT: Statistics trend stable (Accessibilty) -->
     <string name="statistics_trend_stable">"Tendință: constantă"</string>
+    <!-- XHED: Title for BottomNav main screen title -->
+    <string name="bottom_nav_home_title">"Ecran inițial"</string>
+    <!-- XHED: Title for BottomNav diary screen title -->
+    <string name="bottom_nav_diary_title">"Jurnal"</string>
+
+    <!-- ####################################
+           Data Donation & Survey
+    ###################################### -->
 
+    <!-- XHED: Title for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_title">"Sondaj despre Corona-Warn-App"</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_content">"Ajutați-ne să îmbunătățim aplicația răspunzând la câteva întrebări simple."</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_button_text">"Accesați sondajul"</string>
+
+    <!-- XHED: Title for the access survey button displayed at the bottom of the screen -->
+    <string name="datadonation_details_survey_consent_button_title">"Accept"</string>
+    <!-- XHED: Text for the access survey title displayed at the top of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_title">"Sondaj pentru evaluarea și îmbunătățirea aplicației Corona-Warn"</string>
+    <!-- XHED: Text for the access survey body displayed under the title of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_body"><b>"Ajutați-ne să îmbunătățim aplicația Corona-Warn participând la un sondaj privind experiența dvs. cu aplicația. Astfel, ajutați RKI să evalueze eficacitatea aplicației, să îmbunătățească aplicația și să înțeleagă modul în care avertizările transmise prin aplicație afectează comportamentul persoanelor cu risc crescut."</b>"\n\nSondajul este destinat persoanelor a căror aplicație a indicat o expunere cu risc crescut. Sondajul se desfășoară pe site-ul web al RKI. Pentru a vă redirecționa la site-ul web, la pasul următor va fi afișată o legătură către sondaj. Înainte de a fi afișată, trebuie confirmată autenticitatea aplicației dvs. Pentru aceasta, este nevoie de consimțământul dvs.\n\nCând apăsați pe legătura către sondaj, veți primi informații suplimentare despre acesta. De asemenea, vi se va solicita explicit să vă dați consimțământul din nou înainte de a începe sondajul."</string>
+
+    <!-- XHED: Title of the survey consent detail screen -->
+    <string name="datadonation_details_survey_consent_details_title">"Informații detaliate despre prelucrarea datelor utilizate în timpul participării la sondaj"</string>
+
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"Ora de pe smartphone-ul dvs. nu corespunde cu ora curentă. Vă rugăm să corectați ora în setările smartphone-ului dvs. (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"Nu se poate obține sondajul (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"Nu se poate obține sondajul chiar acum. Actualizați serviciile Google Play (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"Nu se poate obține sondajul chiar acum. Încercați din nou mai târziu (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"Nu se poate obține sondajul din cauza unor motive de securitate. Puteți participa din nou la sondaj în următoarea lună calendaristică (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Vă mulțumim pentru că doriți să ajutați. Din păcate, utilizați un smartphone care nu acceptă sondajul, din motive tehnice (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"Din motive de securitate, nu puteți participa la sondaj mai devreme de 24 de ore de la instalarea aplicației sau de la actualizarea aplicației (cod de eroare %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"Ați participat deja la sondaj. Puteți participa la sondaj doar o dată pe lună (cod de eroare %1$s)."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"Eroare"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"OK"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Se încarcă sondajul..."</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below"><b>"Despre sondajul RKI"</b></string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"După verificarea autenticității aplicației dvs., aplicația vă redirecționează către un site web al RKI, utilizând o legătură personalizată către sondaj care a fost generată pentru dvs. Această legătură către sondaj conține o parolă de unică folosință care este generată de Corona-Warn-App. Când apăsați pe legătura către sondaj și apelați site-ul web cu sondajul, parola de unică folosință este stocată temporar în browserul dvs. Acest ecran conține informații suplimentare despre sondaj și note despre parcurgerea acestuia, de exemplu cum să începeți sondajul. La începerea sondajului, parola de unică folosință este transmisă la serverele Corona-Warn-App unde este marcată ca utilizată. Apoi serverul verifică dacă puteți efectua sondajul. Aceste acțiuni asigură faptul că fiecare utilizator poate participa la sondaj o singură dată."</string>
+
+    <!-- XHED: Analytics voluntary user input, age group toolbar title -->
+    <string name="analytics_userinput_agegroup_title">"Grupul dvs. de vârstă"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
+    <string name="analytics_userinput_agegroup_unspecified">"Nu răspund"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
+    <string name="analytics_userinput_agegroup_0_to_29">"0-29 de ani"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
+    <string name="analytics_userinput_agegroup_30_to_59">"30-59 de ani"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
+    <string name="analytics_userinput_agegroup_from_60">"Peste 60 de ani"</string>
+
+    <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
+    <string name="analytics_userinput_federalstate_title">"Statul dvs. federal"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_UNSPECIFIED -->
+    <string name="analytics_userinput_federalstate_unspecified">"Nu răspund"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BW -->
+    <string name="analytics_userinput_federalstate_bw">"Baden-Württemberg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BY -->
+    <string name="analytics_userinput_federalstate_by">"Bavaria"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BE -->
+    <string name="analytics_userinput_federalstate_be">"Berlin"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BB -->
+    <string name="analytics_userinput_federalstate_bb">"Brandenburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HB -->
+    <string name="analytics_userinput_federalstate_hb">"Bremen"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HH -->
+    <string name="analytics_userinput_federalstate_hh">"Hamburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HE -->
+    <string name="analytics_userinput_federalstate_he">"Hessa"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_MV -->
+    <string name="analytics_userinput_federalstate_mv">"Mecklenburg-Pomerania de Vest"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NI -->
+    <string name="analytics_userinput_federalstate_ni">"Saxonia Inferioară"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NRW -->
+    <string name="analytics_userinput_federalstate_nrw">"Renania de Nord-Westfalia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_RP -->
+    <string name="analytics_userinput_federalstate_rp">"Renania-Palatinat"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SL -->
+    <string name="analytics_userinput_federalstate_sl">"Saarland"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SN -->
+    <string name="analytics_userinput_federalstate_sn">"Saxonia"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_ST -->
+    <string name="analytics_userinput_federalstate_st">"Saxonia-Anhalt"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SH -->
+    <string name="analytics_userinput_federalstate_sh">"Schleswig-Holstein"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_TH -->
+    <string name="analytics_userinput_federalstate_th">"Turingia"</string>
+
+    <!-- XHED: Analytics voluntary user input, district toolbar title -->
+    <string name="analytics_userinput_district_title">"Districtul (județul) dvs."</string>
+    <!-- XTXT: Analytics voluntary user input, district: UNSPECIFIED -->
+    <string name="analytics_userinput_district_unspecified">"Nu răspund"</string>
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-tr/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-tr/contact_diary_strings.xml
index 5b42e710bf7c5ea948b17c84df583de82d2bd1b0..c8b833111fc2d158b4b355975f9dde90202d6968 100644
--- a/Corona-Warn-App/src/main/res/values-tr/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-tr/contact_diary_strings.xml
@@ -22,9 +22,9 @@
     <!-- XTXT: Body for the contact diary card displayed in the homescreen  -->
     <string name="contact_diary_homescreen_card_body">"Nerede bulunduğunuzun ve kimlerle karşılaştığınızın kaydını tutun."</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_homescreen_card_button_text">"Günce Yönetimi"</string>
+    <string name="contact_diary_homescreen_card_button_text">"Günceyi Aç"</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_onboarding_button_text">"Günce Yönetimi"</string>
+    <string name="contact_diary_onboarding_button_text">"Günceyi Aç"</string>
 
     <!-- XTXT: Title for the contact diary onboarding screen -->
     <string name="contact_diary_information_card_title">"Temas kaydınızı tutun."</string>
@@ -59,7 +59,7 @@
     <!-- XTXT: Title for contact diary overview screen -->
     <string name="contact_diary_overview_title">"Temas Güncesi"</string>
     <!-- XTXT: Subtitle for contact diary overview screen -->
-    <string name="contact_diary_overview_subtitle">"Karşılaştığınız kişileri ve ziyaret ettiğiniz yerleri yazın."</string>
+    <string name="contact_diary_overview_subtitle">"Karşılaştığınız kişileri ve ziyaret ettiğiniz yerleri yazın. Bir gün için risk görüntüleniyorsa Corona-Warn-App’i kendileri kullanmasalar bile o gün karşılaştığınız kişileri uyarabilirsiniz."</string>
     <!-- XTXT: Header for contact diary overview screen -->
     <string name="contact_diary_overview_header">"Başlangıç Sayfası"</string>
 
@@ -132,4 +132,5 @@
     <string name="accessibility_action_deselect">"Seçimi İptal Et"</string>
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Düzenle"</string>
+
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml b/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml
index 681110acddd26373a7186070c743d24abd94c6d9..fa8eaf35084395b3eb504c95483ecbf6b8265be4 100644
--- a/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml
@@ -49,4 +49,41 @@
     <string name="contact_diary_onboarding_privacy_information_second_section_body_one">"Lütfen temas günlüğünüzde kayıtlı olan verileri, kiminle ve nasıl paylaştığınızı tam olarak kontrol edin. Bu bilgiler, hatırlatma amaçlıdır - üçüncü taraflara yönelik değildir. Sağlık kurumu, temaslı takibi ile ilgili olarak sizden yardımınızı rica ederse, kayıtlarınızın aktarımı usule uygundur."</string>
     <!-- XTXT: Body for the contact diary onboarding privacy information second section -->
     <string name="contact_diary_onboarding_privacy_information_second_section_body_two">"Özel kişiler veya şirketler, topladığınız verileri başkalarına aktarmanızı talep edemez. Birisi temas güncesine kaydedilmek istemiyorsa, lütfen onun bu isteğine saygı gösterin."</string>
+
+    <!-- XHED: Title for the consent displayed above the button in the survey consent screen -->
+    <string name="datadonation_details_survey_consent_info_card_title">"Rıza beyanınız"</string>
+    <!-- XTXT: Text for the consent body displayed above the button in the survey consent screen -->
+    <string name="datadonation_details_survey_consent_info_card_body">"“Kabul ediyorum” seçeneğine tıklayarak, şunlara onay vermiş olursunuz:\n\nKatılım linki size gösterilmeden önce, Uygulamanızın orijinal olup olmadığı bir kez kontrol edilir. Bunun için, akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluşturulur ve Google’ın Uygulamanızın orijinal ürün olduğunu RKI’ye doğrulaması için ABD’deki veya diğer bir üçüncü ülkedeki Google’e aktarılır. Bu kimlik kodu, akıllı telefonunuzun sürümü ve Uygulama hakkında veriler içerir. Google, böylece kim olduğunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Google, Uygulamadan daha fazla bilgi almaz. Bu sayede her kullanıcının ankete sadece bir kez katılabilmesi ve istatistiklerin yanlış sonuçlar vermemesi sağlanır."</string>
+    <!-- XTXT: First bullet point in the consent body displayed above the button in the survey consent screen -->
+    <string name="datadonation_details_survey_consent_bullet_point_one">"Verdiğiniz rıza beyanı, isteğe bağlı gerçekleşmektedir. Anketin amaçları doğrultusunda rıza beyanında bulunmasanız bile Uygulamayı eksiksiz olarak kullanabilirsiniz."</string>
+    <!-- XTXT: Second bullet point in the consent body displayed above the button in the survey consent screen -->
+    <string name="datadonation_details_survey_consent_bullet_point_two">"Rıza beyanı verdikten sonra da ankete katılmak zorunda değilsiniz. Anketi, istediğiniz zaman iptal edebilirsiniz."</string>
+    <!-- XTXT: Third bullet point in the consent body displayed above the button in the survey consent screen -->
+    <string name="datadonation_details_survey_consent_bullet_point_three">"En azından 16 yaşında iseniz, rıza beyanında bulunabilirsiniz."</string>
+    <!-- YTXT: Text on the bottom of the survey consent screen that opens a new screen about more information-->
+    <string name="datadonation_details_survey_consent_bottom_link">"Veri işleme hakkında ayrıntılı bilgiler ve rıza beyanınız."</string>
+    <!-- XHED: Title for the information box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title">"Orijinallik doğrulanması ve üçüncü ülkelere aktarım"</string>
+    <!-- XTXT: Text for the information box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text">"Uygulamanızın orijinal olduğunu onaylamak adına akıllı telefonunuz, akıllı telefonunuzun sürümü ve Uygulamaya ilişkin veriler içeren benzersiz bir kimlik kodu oluşturur. Kullanıcıların ankete birden çok kez katılmasını ve böylece anket sonuçlarını tahrif etmesini önlemek için bu kodun oluşturulması gerekmektedir. Bu kimlik kodları, sadece bir kez Google’e aktarılır. Bu süreçte verilerin ABD’ye veya üçüncü bir ülkeye aktarılması da söz konusu olabilir. Orada muhtemelen Avrupa hukuku standartlarına uygun kişisel verilerin koruma seviyesi bulunmayabilir ve Avrupa’daki veri koruma haklarınız uygulanmayabilir. Bu bağlamda özellikle üçüncü ülke güvenlik makamlarının, somut bir şüphe olmasa bile, Google’e aktarılan bu verilere erişme ve örneğin verileri diğer bilgilerle ilişkilendirerek bunları değerlendirmeye alma olasılığı bulunmaktadır. Bu durum sadece Google’e aktarılan kimlik kodları için söz konusudur. Google ankete katılımız ile ilgili daha fazla bilgi almaz. Ancak, Google kimlik kodunuz üzerinden kim olduğunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir."</string>
+
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="ppa_onboarding_consent_title" translatable="false">"Rıza beyanınız"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics onboarding -->
+    <string name="ppa_onboarding_privacy_information_body" translatable="false">"“Kabul ediyorum” seçeneğine tıklayarak, şunlara onay vermiş olursunuz:\n\nUygulama, topladığı bilgileri her gün RKI’ye aktarır. Bunlar, görüntülenen riskli karşılaşmalar ve uyarılar, size gönderilen test sonuçları, diğer kullanıcıları uyarıp uyarmadığınız ve akıllı telefonunuzun işletim sistemine ilişkin verilerdir. Ayrıca başka bilgiler de verdiyseniz (bölge, yaş grubu gibi), bunlar da RKI’ye aktarılır.\n\nRKI, Uygulamanın etki gücünü ve işlevselliğini değerlendirmek ve pandemi hakkında yeni çıkarımlar elde etmek için, bu verileri birleştirecek ve istatistikler olarak değerlendirecektir. Bu süreçte edinilen bulgular, Uygulamanın işlevlerini ve kullanım kolaylığını iyileştirmenin yanı sıra pandemiye karşı mücadele için diğer önlemlerin yönlendirilmesine yardımcı olmaktadır.\n\nVerilerinizin değerlendirilmesinden önce, veri bağışına katılan her Uygulamanın yalnızca bir kez sayıma alındığı ve istatistiklerin tahrif edilmediği kontrol edilir. Bu bağlamda Uygulamanızın orijinal olduğunun incelenmesi gerekmektedir. Bunun için, akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluşturulur ve Google’ın Uygulamanızın orijinal ürün olduğunu RKI’ye doğrulaması için ABD’deki veya diğer bir üçüncü ülkedeki Google’a aktarılır. Bu kimlik kodu, akıllı telefonunuzun sürümü ve Uygulama hakkında veriler içerir. Google böylece kim olduğunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Google, Uygulamadan daha fazla bilgi almaz.\n\nUygulamanın ayarlarından “Verileri bağışla” seçeneğini devre dışı bırakarak istediğiniz zaman vermiş olduğunuz rızayı geri alabilirsiniz."</string>
+    <!-- XTXT: Body point consent for Privacy-preserving Analytics -->
+    <string name="ppa_onboarding_privacy_information_point_consent" translatable="false">"Verdiğiniz rıza beyanı, isteğe bağlı gerçekleşmektedir. Rızanızı vermezseniz de Uygulamayı kullanabilirsiniz."</string>
+    <!-- XTXT: Body point identity for Privacy-preserving Analytics -->
+    <string name="ppa_onboarding_privacy_information_point_identity" translatable="false">"Uygulama kullanımınızla ilgili veri bağışında bulunursanız, RKI nezdinde kimliğinizin korunması sürdürülür. RKI, kim olduğunuzu veya kiminle karşılaştığınızı öğrenmez. Profil oluşturma da yapılmaz."</string>
+    <!-- XTXT: Body point sixteen for Privacy-preserving Analytics -->
+    <string name="ppa_onboarding_privacy_information_point_sixteen" translatable="false">"En azından 16 yaşında iseniz, rıza beyanında bulunabilirsiniz."</string>
+    <!-- XHED: Title for Privacy-preserving Analytics additional info  -->
+    <string name="ppa_onboarding_more_info_title" translatable="false">"Orijinallik doğrulanması ve üçüncü ülkelere aktarım"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics additional info -->
+    <string name="ppa_onboarding_more_info_body" translatable="false">"Uygulamanızın orijinal olduğunu onaylamak adına akıllı telefonunuz, akıllı telefonunuzun sürümü ve Uygulamaya ilişkin veriler içeren benzersiz bir kimlik kodu oluşturur. Verilerin birden fazla veya suistimal amaçlı RKI’ye aktarılmasını ve dolayısıyla analiz sonuçlarının tahrif edilmesini önlemek için bu kodun oluşturulması gerekmektedir. Bu kimlik kodları, Google’e aktarılır. Bu süreçte verilerin ABD’ye aktarılması da söz konusu olabilir. Orada muhtemelen Avrupa hukuku standartlarına uygun kişisel verilerin koruma seviyesi bulunmayabilir ve Avrupa’daki veri koruma haklarınız uygulanmayabilir. Bu bağlamda özellikle üçüncü ülkelerdeki güvenlik makamlarının, somut bir şüphe olmasa bile, Google’e aktarılan bu verilere erişme ve örneğin verileri diğer bilgilerle ilişkilendirerek bunları değerlendirmeye alma olasılığı bulunmaktadır. Bu durum sadece Google’e aktarılan kimlik kodları için söz konusudur. Google Corona-Warn-App kullanımınız ile ilgili daha fazla bilgi almaz.xAncak, Google kimlik kodunuz üzerinden kim olduğunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Üçüncü ülkelere aktarımı kabul etmiyorsanız, lütfen “Kabul ediyorum” seçeneğine tıklamayın. Buna rağmen Uygulamayı kullanmaya devam edebilirsiniz, ancak veri bağışında bulunamazsınız."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="ppa_onboarding_privacy_information_title" translatable="false">"Rıza beyanınız"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics settings -->
+    <string name="ppa_settings_privacy_information_body" translatable="false">"Yukarıdaki “Veri bağışı" seçeneğini etkinleştirerek, şunlara onay vermiş olursunuz:\n\nUygulama, topladığı bilgileri her gün RKI’ye aktarır. Bunlar, görüntülenen riskli karşılaşmalar ve uyarılar, size gönderilen test sonuçları, diğer kullanıcıları uyarıp uyarmadığınız ve akıllı telefonunuzun işletim sistemine ilişkin verilerdir. Ayrıca başka bilgiler de verdiyseniz (bölge, yaş grubu gibi), bunlar da RKI’ye aktarılır.\n\nRKI, Uygulamanın etki gücünü ve işlevselliğini değerlendirmek ve pandemi hakkında yeni çıkarımlar elde etmek için, bu verileri birleştirecek ve istatistikler olarak değerlendirecektir. Bu süreçte edinilen bulgular, Uygulamanın işlevlerini ve kullanım kolaylığını iyileştirmenin yanı sıra pandemiye karşı mücadele için diğer önlemlerin yönlendirilmesine yardımcı olmaktadır.\n\nVerilerinizin değerlendirilmesinden önce, veri bağışına katılan her Uygulamanın yalnızca bir kez sayıma alındığı ve istatistiklerin tahrif edilmediği kontrol edilir. Bu bağlamda Uygulamanızın orijinal olduğunun incelenmesi gerekmektedir. Bunun için, akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluşturulur ve Google’ın Uygulamanızın orijinal ürün olduğunu RKI’ye doğrulaması için ABD’deki veya diğer bir üçüncü ülkeye Google’e aktarılır. Bu kimlik kodu, akıllı telefonunuzun sürümü ve Uygulama hakkında veriler içerir. Google, böylece kim olduğunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Google, Uygulamadan daha fazla bilgi almaz.\n\nYukarıdaki “Veri bağışı” seçeneğini devre dışı bırakarak, verdiğiniz rıza beyanını geri alabilirsiniz."</string>
+
 </resources>
diff --git a/Corona-Warn-App/src/main/res/values-tr/release_info_strings.xml b/Corona-Warn-App/src/main/res/values-tr/release_info_strings.xml
index 860dae78281978aa757cbb869a877d1bb20be730..11084f58b7e4126e7ab7ffb8abef6168d3ffd899 100644
--- a/Corona-Warn-App/src/main/res/values-tr/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-tr/release_info_strings.xml
@@ -11,5 +11,47 @@
     <string name="release_info_version_body">"Hata düzeltmelerinin yanında bu güncelleme ile birlikte yeni ve gelişmiş özellikler sunulmaktadır."</string>
     <!-- XBUT: Continue button for the release info screen -->
     <string name="release_info_continue_button">"Sonraki"</string>
+    <!-- XTXT: New release info footer -->
+    <string name="new_release_bottom">"Bu sürümdeki değişiklikleri uygulama ayarlarında “Yeni Özellikler” bölümünde bulabilirsiniz."</string>
+
+    <!-- XHED: Titles for the release info screen bullet points -->
+    <string-array name="new_release_title">
+        <item>"RKI anketi bağlantısı"</item>
+        <item>"Veri Paylaşma İzni (isteğe bağlı)"</item>
+        <item>"Risk Kutucuklarındaki Değişiklikler"</item>
+        <item>"Rastgele Kimliklerinizi Paylaştıktan Sonra Maruz Kalma Günlüğüne Devam Etme"</item>
+        <item>"Sekmelerin Uygulanması"</item>
+        <item>"Test Prosedürü Hakkında Daha Fazla Bilgi"</item>
+    </string-array>
+
+    <!-- XTXT: Text bodies for the release info screen bullet points -->
+    <string-array name="new_release_body">
+        <item>"Yüksek risk altındaysanız Robert Koch Institute tarafından sunulan bir anketi uygulamadan yanıtlayabilirsiniz."</item>
+        <item>"Kullanım verilerinizi paylaşarak uygulamayı iyileştirmemize yardımcı olma seçeneğine sahipsiniz."</item>
+        <item>"Risk kutucuklarındaki metinler üzerinde ufak değişiklikler."</item>
+        <item>"Şifrelenmiş rastgele kimliklerinizi paylaştıktan sonra maruz kalma günlüğünü yeniden açmak isteyip istemediğinize ve ne zaman yeniden açacağınıza karar verebilirsiniz."</item>
+        <item>"Temas günceniz için ayrı bir sekme sayfası eklenmiştir. Bu sayede, daha hızlı bir şekilde güncenize erişebilir ve temas güncenizden uygulamanızın ana ekranına geri dönebilirsiniz."</item>
+        <item>"Uygulama artık test prosedürü hakkında daha ayrıntılı bilgiler içermektedir."</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+        <item></item>
+    </string-array>
 
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-tr/strings.xml b/Corona-Warn-App/src/main/res/values-tr/strings.xml
index 38f72d512203222bdcdf48920b8d7ee18ab64545..dbb190211959b7022cf7bb1981658c5c2c0bca48 100644
--- a/Corona-Warn-App/src/main/res/values-tr/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-tr/strings.xml
@@ -150,6 +150,15 @@
     <string name="risk_card_low_risk_no_encounters_body">"Hiçbir maruz kalma yok"</string>
     <!-- XTXT: risk card - Low risk state - Days with low risk encounters -->
     <plurals name="risk_card_low_risk_encounter_days_body">
+        <item quantity="one">"%1$d gün için düşük riskli maruz kalmalar"</item>
+        <item quantity="other">"%1$d gün için düşük riskli maruz kalmalar"</item>
+        <item quantity="zero">"%1$d gün için düşük riskli maruz kalmalar"</item>
+        <item quantity="two">"%1$d gün için düşük riskli maruz kalmalar"</item>
+        <item quantity="few">"%1$d gün için düşük riskli maruz kalmalar"</item>
+        <item quantity="many">"%1$d gün için düşük riskli maruz kalmalar"</item>
+    </plurals>
+    <!-- XACT: risk card - Low risk state - Days with low risk encounters description -->
+    <plurals name="risk_card_low_risk_encounter_days_body_description">
         <item quantity="one">"Bir gün için düşük riskli maruz kalmalar"</item>
         <item quantity="other">"%1$d gün için düşük riskli maruz kalmalar"</item>
         <item quantity="zero">"%1$d gün için düşük riskli maruz kalmalar"</item>
@@ -157,9 +166,22 @@
         <item quantity="few">"%1$d gün için düşük riskli maruz kalmalar"</item>
         <item quantity="many">"%1$d gün için düşük riskli maruz kalmalar"</item>
     </plurals>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and single day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"%1$s"</string>
+    <!-- XTXT: risk card - Low risk state - Most recent date with low risk and more than one day of encounters -->
+    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"En son %1$s"</string>
 
     <!-- XTXT: risk card - High risk state - Days with high risk encounters -->
     <plurals name="risk_card_high_risk_encounter_days_body">
+        <item quantity="one">"%1$d gün için artmış riskli maruz kalmalar"</item>
+        <item quantity="other">"%1$d gün için artmış riskli maruz kalmalar"</item>
+        <item quantity="zero">"%1$d gün için artmış riskli maruz kalmalar"</item>
+        <item quantity="two">"%1$d gün için artmış riskli maruz kalmalar"</item>
+        <item quantity="few">"%1$d gün için artmış riskli maruz kalmalar"</item>
+        <item quantity="many">"%1$d gün için artmış riskli maruz kalmalar"</item>
+    </plurals>
+    <!-- XACT: risk card - High risk state - Days with high risk encounters description -->
+    <plurals name="risk_card_high_risk_encounter_days_body_description">
         <item quantity="one">"Bir gün için artmış riskli maruz kalmalar"</item>
         <item quantity="other">"%1$d gün için artmış riskli maruz kalmalar"</item>
         <item quantity="zero">"%1$d gün için artmış riskli maruz kalmalar"</item>
@@ -167,6 +189,10 @@
         <item quantity="few">"%1$d gün için artmış riskli maruz kalmalar"</item>
         <item quantity="many">"%1$d gün için artmış riskli maruz kalmalar"</item>
     </plurals>
+
+    <!-- XTXT: risk card - High risk state - Most recent date with high risk and single day of encounters -->
+    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"%1$s"</string>
+
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and more than one day of encounters -->
     <string name="risk_card_high_risk_most_recent_body_encounters_on_more_than_one_day">"En son %1$s"</string>
 
@@ -294,6 +320,14 @@
     <string name="risk_details_behavior_body_wear_mask">"Diğer insanlarla karşılaştığınızda yüz maskesi takın."</string>
     <!-- XMSG: risk details - stay 1,5 away, something like a bullet point -->
     <string name="risk_details_behavior_body_stay_away">"Diğer insanlarla aranızda en az 1,5 metre mesafeyi koruyun."</string>
+
+    <!-- XMSG: risk details - link to faq, something like a bullet point -->
+    <string name="risk_details_increased_risk_faq_link_text">"Test yaptırırsanız SSS bölümünde test prosedürü hakkında ek bilgi bulabilirsiniz."</string>
+    <!-- XTXT: Explanation screen increased risk level link label -->
+    <string name="risk_details_increased_risk_faq_link_label">"SSS: Test Prosedürü"</string>
+    <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
+    <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/en/faq/#red_card_how_to_test"</string>
+
     <!-- XMSG: risk details - cough/sneeze, something like a bullet point -->
     <string name="risk_details_behavior_body_cough_sneeze">"Öksürürken ya da hapşırırken dirseğinizin iç kısmına dönün veya bir mendil kullanın."</string>
     <!-- XMSG: risk details - contact your doctor, bullet point -->
@@ -305,13 +339,15 @@
     <!-- XHED: risk details - infection risk headline, below behaviors -->
     <string name="risk_details_headline_infection_risk">"Enfeksiyon Riski"</string>
     <!-- XHED: risk details - infection period logged headling, below behaviors -->
-    <string name="risk_details_headline_period_logged">"Dönem günlüğe kaydedildi"</string>
+    <string name="risk_details_headline_period_logged">"Dönem Günlüğe Kaydedildi"</string>
     <!-- XHED: risk details - infection period logged headling, below behaviors -->
     <string name="risk_details_subtitle_period_logged">"Bu dönem hesaplamaya dahil edildi."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged">"Enfeksiyon riskiniz yalnızca maruz kalma günlüğünün etkin olduğu dönemler için hesaplanabilir. Bu nedenle günlüğe kaydetme özelliğinin sürekli etkin kalması gerekir."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
     <string name="risk_details_information_body_period_logged_assessment">"Maruz kalma günlüğü son 14 günü kapsar. Bu süre boyunca akıllı telefonunuzdaki günlüğe kaydetme özelliği %1$s gün etkindi. Uygulama, enfeksiyondan korunma için artık ilgili olmadığından daha eski kayıtları otomatik olarak siler."</string>
+    <!-- XTXT: risk details - infection period days logged/14 -->
+    <string name="risk_details_information_active_tracing_days_circle_progress">"%s/14"</string>
     <!-- XHED: risk details - how your risk level was calculated, below behaviors -->
     <string name="risk_details_subtitle_infection_risk_past">"Riskiniz bu şekilde hesaplandı."</string>
     <!-- XHED: risk details - how your risk level will be calculated, below behaviors -->
@@ -428,13 +464,13 @@
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_button_next">"Maruz Kalma Günlüğünü Etkinleştir"</string>
     <!-- XTXT: onboarding(tracing) - dialog about tracing permission declined -->
-    <string name="onboarding_tracing_dialog_headline">"Yetki"</string>
+    <string name="onboarding_tracing_dialog_headline">"EtkinleÅŸtirilmesin mi?"</string>
     <!-- YMSI: onboarding(tracing) - dialog about tracing -->
-    <string name="onboarding_tracing_dialog_body">"Bu, Corona-Warn-App\'in COVID-19 risk durumunuz ile ilgili bildirim gönderemeyeceği veya alamayacağı anlamına gelir. Bu özelliği dilediğiniz zaman devre dışı bırakabilirsiniz."</string>
+    <string name="onboarding_tracing_dialog_body">"Maruz kalma günlüğünü etkinleştirmezseniz uygulama risk durumunuzu belirleyemez. Buna göre, uygulamada riskiniz hakkında hiçbir bilgi alamazsınız. Maruz kalma günlüğünü dilediğiniz zaman yeniden etkinleştirebilirsiniz."</string>
     <!-- XBUT: onboarding(tracing) - positive button (right) -->
     <string name="onboarding_tracing_dialog_button_positive">"EtkinleÅŸtirme"</string>
     <!-- XBUT: onboarding(tracing) - negative button (right) -->
-    <string name="onboarding_tracing_dialog_button_negative">"Geri"</string>
+    <string name="onboarding_tracing_dialog_button_negative">"Ä°ptal Et"</string>
     <!-- XACT: onboarding(tracing) - dialog about background jobs header text -->
     <string name="onboarding_background_fetch_dialog_headline">"Arka planda uygulamayı yenileme devre dışı bırakıldı"</string>
     <!-- YMSI: onboarding(tracing) - dialog about background jobs -->
@@ -460,9 +496,9 @@
     <!-- XACT: onboarding(tracing) - illustraction description, header image -->
     <string name="onboarding_tracing_illustration_description">"Üç kişi akıllı telefonlarında maruz kalma günlüğünü etkinleştirdi ve birbirleri ile karşılaşmaları günlüğe kaydedilecektir."</string>
     <!-- XHED: onboarding(tracing) - location explanation for bluetooth headline -->
-    <string name="onboarding_tracing_location_headline">"Konum eriÅŸimine izin ver"</string>
+    <string name="onboarding_tracing_location_headline">"Konum Ayarını Etkinleştir"</string>
     <!-- XTXT: onboarding(tracing) - location explanation for bluetooth body text -->
-    <string name="onboarding_tracing_location_body">"Konumunuza erişilemiyor. Bluetooth\'u kullanmak için Google ve/veya Android\'in akıllı telefonunuzun konumuna erişmesi gerekiyor."</string>
+    <string name="onboarding_tracing_location_body">"Uygulama, cihazınızın konumunu belirleyemiyor ancak bazı Android sürümlerinde Bluetooth Düşük Enerji işlevinin kullanılması için cihazın konum ayarının etkinleştirilmesi gereklidir."</string>
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_location_button">"Cihaz Ayarlarını Aç"</string>
     <!-- XACT: Onboarding (test) page title -->
@@ -486,6 +522,98 @@
     <!-- XACT: onboarding(notifications) - illustraction description, header image -->
     <string name="onboarding_notifications_illustration_description">"Bir kadın Corona-Warn-App uygulamasından bildirim alıyor."</string>
 
+    <!-- XACT: onboarding privacy preserving analytics (ppa) - illustraction description, header image -->
+    <string name="onboarding_ppa_illustration_description">"Bir kişi elinde akıllı telefon tutuyor"</string>
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
+    <string name="onboarding_ppa_headline">"Verileri PaylaÅŸ"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Uygulamayı nasıl kullandığınızı belirtin ve uygulamanın etkinliğini değerlendirmemize yardımcı olun."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
+    <string name="onboarding_ppa_body">"Corona-Warn-App’i iyileştirmemize yardımcı olabilirsiniz. Uygulamayı kullanımınız hakkındaki verileri RKI ile paylaşın. Bu, RKI’nin uygulamanın etkinliğini değerlendirmesine yardımcı olacaktır. Verileriniz aynı zamanda uygulamanın özelliklerinin ve kullanılabilirliğinin iyileştirilmesine yardımcı olacaktır."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
+    <string name="onboarding_ppa_state_title">"Federal eyaletiniz (isteğe bağlı)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - district title -->
+    <string name="onboarding_ppa_district_title">"Bölgeniz (ilçe) (isteğe bağlı)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - regional evaluation text -->
+    <string name="onboarding_ppa_regional_evaluation_text">"Federal eyalet ve bölge bilgilerinizi de paylaşırsanız bölgesel analizler yapabiliriz."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
+    <string name="onboarding_ppa_age_title">"Yaşınız (isteğe bağlı)"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="onboarding_ppa_more_info_title">"ABD’de ve Diğer Üçüncü Ülkelerde Veri İşleme ve Veri Koruma Riskleri Hakkında Ayrıntılı Bilgiler"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
+    <string name="onboarding_ppa_consent_donate_button">"Verileri PaylaÅŸ"</string>
+    <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
+    <string name="onboarding_ppa_consent_not_donate_button">"PaylaÅŸma"</string>
+
+    <!-- XHED: onboarding privacy preserving analytics (ppa) - more info - headline -->
+    <string name="onboarding_ppa_more_info_headline">"Veri Paylaşma Hakkında Ayrıntılı Bilgiler"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - consent title -->
+    <string name="onboarding_ppa_more_info_decline_processing_text">"Verilerinizin üçüncü bir ülkeye aktarılmasına izin vermiyorsanız lütfen “Kabul Et” öğesine dokunmayın. Uygulamayı kullanmaya devam edebileceksiniz ancak veri paylaşma özelliğini kullanmayacaksınız."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
+    <string name="onboarding_ppa_more_info_data_processing_title">"Veri Paylaşma Sürecinde Veri İşleme"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
+    <string name="onboarding_ppa_more_info_data_processing_body">"Verilerinizi paylaşma izni vermeniz halinde uygulama RKI’ye her gün çeşitli veriler gönderir. Aktarılan veriler, uygulamanın etkinliğini değerlendirmemize yardımcı olacaktır ve çeşitli amaçlarla analiz edilecektir:"</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"İyileştirilmiş maruz kalma günlüğü – Teknik olarak enfeksiyon risklerini hesaplama doğruluğunu ve güvenilirliğini iyileştirmek istiyoruz. Bunun için, maruz kalma riskleri ve size gösterilen uyarlar hakkındaki bilgileri değerlendireceğiniz. Bunun sonucunda, hesaplama yöntemini geliştirebileceğiz."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Uygulamada iyileştirilmiş kullanıcı kılavuzu – Uygulamayı daha kolay kullanılabilir hale getirmek istiyoruz. Bunun için, kullanıcıların uygulamada gerçekleştirdiği her bir adım hakkındaki bilgileri değerlendireceğiz. Bu, etiketleri ve bilgi metinlerini daha anlaşılır hale getirmemize denetim öğelerini daha kolay bulunabilecek şekilde düzenlememize yardımcı olacaktır. Ayrıca farklı akıllı telefon modelleri için düzenleri özelleştirebileceğiz."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 3 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Uygulamada bilgi ve yardımı etkinleştirme – Uygulama, belirli test merkezlerinde ve laboratuvarlarda ya da belirli bölgelerde kullanıldığında sorun yaşanıp yaşanmadığını belirleyebilmek istiyoruz. Örneğin, paylaşılan veriler test sonuçlarının belirli bölgelerde gecikmeli olarak sunulduğunu gösterirse bunu belirleyebiliriz. İlgili kamu sağlığı yetkilileri de potansiyel teknik problemler hakkında bilgilendirilebilir."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 4 -->
+    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Pandemi süreci hakkında istatistikleri iyileştirme – Verileriniz, zamana ve yere göre pandeminin nasıl yayıldığı hakkında içgörü sağlamaya ve belirli trendlere daha hızlı yanıt vermemize yardımcı olabilir."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data title -->
+    <string name="onboarding_ppa_more_info_rki_data_title">"Bu amaç doğrultusunda RKI şu verileri toplar:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 1 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"Veri aktarımı tarihi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 2 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Önceki güne kıyasla uyarı geçmişindeki değişiklikler."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 3 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Veri aktarımı sırasında görüntülenen risk hakkında bilgiler."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 4 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"Maruz kalma bağlamında risk durumunu hesaplama temeli hakkında bilgiler."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 1 -->
+    <string name="onboarding_ppa_more_info_rki_data_body_1">"Uygulama üzerinden test sonucu aldıysanız:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 5 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Uygulama üzerinden aldığınız test sonucunun pozitif mi yoksa negatif mi olduğu hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 6 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Test kaydedildiği sırada hesaplanan risk hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 7 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Yüksek riskli son maruz kalmanız ile test kaydınız arasındaki süre hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 8 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Son yüksek risk bildirimi ile test kaydı arasındaki süre hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 9 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Test sonucunuzu paylaşıp diğer kullanıcı uyarıp uyarmadığınız hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 2-->
+    <string name="onboarding_ppa_more_info_rki_data_body_2">"Potansiyel maruz kalma hakkında diğer kullanıcıları uyardıysanız:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 10 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Diğer kullanıcıları uyarma adımlarını iptal edip etmediğiniz hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 11 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Belirtilerinizin başlangıcı hakkında bilgi verip vermediğiniz hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 12 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Diğer kullanıcıları uyarma izni verip vermediğiniz hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 13 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Diğer kullanıcı uyarma bağlamında ulaştığınız bildirim hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 14 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"Test sonucunuzu kaç saatte aldığınız hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 15 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Son yüksek risk bildiriminden bu yana kaç gün geçtiği hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 16 text -->
+    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Test kaydından bu yana kaç saat geçtiği hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info body-->
+    <string name="onboarding_ppa_more_info_other_info_body">"DiÄŸer bilgiler:"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Belirttiğiniz yaş grubu hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Yüksek riskli son maruz kalmanız ile test kaydınız arasındaki süre hakkında bilgi."</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Test sonucunuzu paylaşıp diğer kullanıcı uyarıp uyarmadığınız hakkında bilgi."</string>
+    <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
+    <string name="onboarding_ppa_more_info_much_privacy_body">"Bu bilgilerin kişisel olarak sizinle bağlantısı kurulamaz. Kimliğiniz gizli tutulacaktır.\nBilgiler istatistiksel amaçlar doğrultusunda analiz edilecektir. Profil oluşturmak için kaydedilmeyecektir."</string>
+
+
+
+
+
     <!-- ####################################
              Onboarding sixteen include
    ###################################### -->
@@ -642,6 +770,14 @@
     <!-- XHED : settings(background priority) - headline on card about the current status and what to do -->
     <string name="settings_background_priority_card_headline">"Önceliklendirilmiş arka plan aktivitesini değiştir"</string>
 
+    <!-- XTXT: settings(privacy preserving analytics) - text in row on settings overview -->
+    <string name="settings_privacy_preserving_analytics_body_description">"Kullanım davranışınızın aktarılmasına izin verin."</string>
+    <!-- XHED: settings(background priority) - Privacy preserving analytics page title -->
+    <string name="settings_privacy_preserving_analytics_title">"Verileri PaylaÅŸ"</string>
+
+    <!-- XTXT: privacy preserving analytics settings switch subtitle  -->
+    <string name="settings_analytics_switch_subtitle">"Kullanıcı Verilerini Paylaş"</string>
+
     <!-- ####################################
                App Information
     ###################################### -->
@@ -868,6 +1004,8 @@
     <string name="submission_consent_main_third_point">"Kimliğiniz gizli tutulacaktır. Diğer kullanıcılar, kimin test sonucunu paylaştığını öğrenmeyecektir."</string>
     <!-- YTXT: Body for consent main section fourth point  -->
     <string name="submission_consent_main_fourth_point">"Onay vermek için 16 yaşın üzerinde olmanız gerekir."</string>
+    <!-- YTXT: Content Description for the illustration  -->
+    <string name="submission_consent_main_illustration_description">"Bir kişi akıllı telefon tutuyor. Testteki QR kod kodun taranabileceğini sembolize ediyor."</string>
 
     <!-- Submission Test Result -->
     <!-- XHED: Page headline for test result  -->
@@ -1038,7 +1176,7 @@
     <!-- YTXT: text after submission: contagious -->
     <string name="submission_done_contagious">"Kamu sağlığı yetkiliniz önümüzdeki birkaç gün içinde size ulaşacaktır."</string>
     <!-- YTXT: text after submission: isolate -->
-    <string name="submission_done_isolate">"Lütfen kendinizi diğer insanlardan izole edin."</string>
+    <string name="submission_done_isolate">"Bulaşıcı bir hastalık taşıyorsunuz. Kendinizi diğer insanlardan izole edin."</string>
     <!-- XHED: Title for further info -->
     <string name="submission_done_further_info_title">"DiÄŸer bilgiler:"</string>
     <!-- YTXT: submission done further info bullet points -->
@@ -1198,6 +1336,24 @@
     <!-- YTXT: text for share result card-->
     <string name="submission_status_card_positive_result_share">"Diğer kullanıcıların uyarılabilmesi için rastgele kimliklerinizi paylaşın."</string>
 
+    <!-- Reenable risk card -->
+    <!-- XHED: Card title for re-enable risk card -->
+    <string name="reenable_risk_card_title">"Maruz Kalma Denetimi Sona Erdi"</string>
+    <!-- YTXT: Body text for test registration date -->
+    <string name="reenable_risk_card_test_registration_string">"Test %s tarihinde kaydedildi"</string>
+    <!-- YTXT: Description text for re-enable risk card -->
+    <string name="reenable_risk_card_description_text">"Koronavirüs tanısı aldığınız ve şu anda izolasyonda olduğunuz için otomatik maruz kalma denetimi sona erdi. Maruz kalma testini dilediğiniz zaman yeniden etkinleştirebilirsiniz. Etkinleştirirseniz kayıtlı testiniz otomatik olarak silinir."</string>
+    <!-- XBUT: Button for re-enabling risk calculation -->
+    <string name="reenable_risk_card_button_text">"Maruz Kalma Denetimini Aç "</string>
+    <!-- XHED: Dialog title for reactivate risk calculation  -->
+    <string name="dialog_reactivate_risk_calculation_title">"Maruz kalma denetimini etkinleÅŸtirin."</string>
+    <!-- YTXT: Dialog text for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_message">"Gerekli olması halinde yeni bir test kaydedebilmeniz için mevcut testiniz uygulamadan silinecek."</string>
+    <!-- XBUT: Positive button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_positive">"EtkinleÅŸtir"</string>
+    <!-- XBUT: Negative button for reactivate risk calculation -->
+    <string name="dialog_reactivate_risk_calculation_button_negative">"Ä°ptal"</string>
+
     <!-- Test Result Card -->
     <string name="test_result_card_headline">"Tanı sonucunuz:"</string>
     <!-- YTXT: virus name text -->
@@ -1239,15 +1395,15 @@
     <!-- YTXT: Text for consent given -->
     <string name="submission_test_result_available_text_consent_given">"Test sonucunuzu paylaşmayı kabul ederek diğer kullanıcıların uyarılmasına yardımcı olduğunuz için teşekkür ederiz. \n\n"<b>"Sonraki adımda lütfen “Paylaş” seçeneğine dokunarak test sonucunuzu paylaşın."</b></string>
     <!-- XHED: Close screen popup title for consent given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_given">"Ä°ptal etmek istiyor musunuz?"</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_given">"İşlemi gerçekten iptal etmek istiyor musunuz?"</string>
     <!-- XTXT: Close screen popup text for consent given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_given">"GiriÅŸleriniz kaydedilmeyecektir."</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_given">"Önemli:\nBu işlemi iptal etmek üzeresiniz.\nHenüz diğer kullanıcıları uyarmadınız. Lütfen bu işlemi tamamlayın ve diğer kullanıcıların korunmasına yardımcı olun."</string>
     <!-- YTXT: Text for consent NOT given -->
     <string name="submission_test_result_available_text_consent_not_given">"Test sonucunuzu paylaşmamayı seçtiniz. Diğer kullanıcılar uyarılmayacak. \n\nSonraki adımda dilerseniz fikrinizi değiştirip test sonucunuzu paylaşarak koronavirüsün yayılmasını durdurmaya ve diğer kullanıcıların korunmasına yardımcı olabilirsiniz."</string>
     <!-- XHED: Close screen popup title for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Önemli:\nBu işlemi iptal etmek üzeresiniz.\nHenüz diğer kullanıcıları uyarmadınız. Lütfen bu işlemi tamamlayın ve diğer kullanıcıların korunmasına yardımcı olun."</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Ä°ptal etmek istiyor musunuz?"</string>
     <!-- XTXT: Close screen popup text for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"İşlemi gerçekten iptal etmek istiyor musunuz?"</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"GiriÅŸleriniz kaydedilmeyecektir."</string>
     <!-- XBUT: Close screen popup cancel button -->
     <string name="submission_test_result_available_close_dialog_cancel_button">"Ä°ptal"</string>
     <!-- XBUT: Close screen popup continue button -->
@@ -1291,7 +1447,7 @@
     <!-- XHED: Title for submission statistics card -->
     <string name="statistics_card_submission_title">"Uygulama Kullanıcılarının Uyarıları"</string>
     <!-- XTXT: Text displayed in the bottom of submission statistics card-->
-    <string name="statistics_card_submission_bottom_text">"Corona-Warn-App Hakkında"</string>
+    <string name="statistics_card_submission_bottom_text">"Corona-Warn-App üzerinden"</string>
 
     <!-- XTXT: Timestamp refers to today's date in submission and infections cards -->
     <string name="statistics_primary_value_today">"Bugün"</string>
@@ -1313,7 +1469,7 @@
     <!-- XHED: Explanation screen title -->
     <string name="statistics_explanation_title">"Önemli Değerler"</string>
     <!-- XHED: Explanation screen subtitle -->
-    <string name="statistics_explanation_subtitle">"İstatistiklerin Açıklaması"</string>
+    <string name="statistics_explanation_subtitle">"Ülke geneli istatistiklerin açıklaması"</string>
     <!-- XHED: Explanation screen confirmed new infections title -->
     <string name="statistics_explanation_confirmed_new_infection_title">"Onaylanan Yeni Enfeksiyon Sayısı"</string>
     <!-- XTXT: Explanation screen confirmed new infections text -->
@@ -1613,5 +1769,112 @@
     <string name="statistics_trend_decreasing">"Trend: Aşağı"</string>
     <!-- XTXT: Statistics trend stable (Accessibilty) -->
     <string name="statistics_trend_stable">"Trend: Sabit"</string>
+    <!-- XHED: Title for BottomNav main screen title -->
+    <string name="bottom_nav_home_title">"Başlangıç Ekranı"</string>
+    <!-- XHED: Title for BottomNav diary screen title -->
+    <string name="bottom_nav_diary_title">"Günce"</string>
+
+    <!-- ####################################
+           Data Donation & Survey
+    ###################################### -->
 
+    <!-- XHED: Title for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_title">"Corona-Warn-App Anketi"</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_content">"Birkaç basit soru yanıtlayarak uygulamayı iyileştirmemize yardımcı olun."</string>
+    <!-- XHED: Text for the access survey card displayed in the risk details screen -->
+    <string name="datadonation_details_access_survey_card_button_text">"Ankete Git"</string>
+
+    <!-- XHED: Title for the access survey button displayed at the bottom of the screen -->
+    <string name="datadonation_details_survey_consent_button_title">"Kabul Et"</string>
+    <!-- XHED: Text for the access survey title displayed at the top of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_title">"Corona-Warn-App’i Değerlendirme ve İyileştirme Anketi"</string>
+    <!-- XHED: Text for the access survey body displayed under the title of survey consent screen -->
+    <string name="datadonation_details_survey_consent_top_body"><b>"Uygulama deneyiminize ilişkin bir anketi yanıtlayarak Corona-Warn-App’i iyileştirmemize yardımcı olun. Bu, RKI’nin uygulamanın etkinliğini değerlendirmesine, uygulamayı iyileştirmesine ve uygulama üzerinden iletilen uyarıların yüksek risk altındaki kişilerin davranışlarını nasıl etkilediğini anlamasına yardımcı olacaktır.."</b>"\n\nAnket yalnızca uygulamasında yüksek maruz kalma riskine sahip olduğu belirtilen kişiler için tasarlanmıştır. Anket, RKI web sitesinde yanıtlanır. Sizi web sitesine yönlendirmek üzere sonraki adımda bir anket bağlantısı görüntülenecektir. Bu bağlantı görüntülenmeden önce uygulamanızın orijinalliği teyit edilmelidir. Bunun için izin vermeniz gereklidir.\n\nAnket bağlantısına dokunduğunuzda anket hakkında ek bilgi alacaksınız. Ayrıca anketi yanıtlamaya başlamadan önce yeniden açıkça izin vermeniz istenecektir."</string>
+
+    <!-- XHED: Title of the survey consent detail screen -->
+    <string name="datadonation_details_survey_consent_details_title">"Anketi Yanıtlamaya İlişkin Veri İşleme Hakkında Ayrıntılı Bilgiler"</string>
+
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"Akıllı telefonunuzun saati, geçerli saat ile eşleşmiyor. Lütfen akıllı telefonunuzun saatini düzeltin (hata kodu: %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"Anket alınamıyor (hata kodu: %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"Anket şu anda alınamıyor. Lütfen Google Plat Hizmetlerini güncelleyin (hata kodu: %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"Anket şu anda alınamıyor. Lütfen daha sonra tekrar deneyin (hata kodu: %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"Güvenlik nedenleriyle anket alınamıyor. Sonraki takvim ayında anketi yeniden yanıtlayabilirsiniz (hata kodu: %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Yardımcı olmak istediğiniz için teşekkür ederiz. Ne yazık ki teknik nedenlerle anketi desteklemeyen bir akıllı telefon kullanıyorsunuz (hata kodu %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"Güvenlik nedenleriyle uygulamayı yüklemenizin veya güncellemenizin üzerinden en az 24 saat geçmeden anketi yanıtlayamazsınız (hata kodu: %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"Anketi zaten yanıtladınız. Anketi yalnızca ayda bir kez yanıtlayabilirsiniz (hata kodu: %1$s)."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"Hata"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"tamam"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Anket Yükleniyor…"</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below"><b>"RKI Anketi Hakkında"</b></string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"Uygulamanızın orijinalliği doğrulandıktan sonra uygulama, sizin için oluşturulan özel bir anket bağlantısı ile sizi bir RKI web sitesine yönlendirir. Bu anket bağlantısı, Corona-Warn-App’inizde oluşturulan bir tek seferlik parola içerir. Anket bağlantısına dokunup anketi içeren web sitesine bağlandığınızda tek seferlik parola geçici olarak tarayıcınızda depolanır. Bu ekranda, anketi yanıtlamaya başlama gibi anket ve notları kullanma konusunda ek bilgiler yer almaktadır. Anketi yanıtlamaya başlarken tek seferlik parola Corona-Warn-App sunucularına aktarılır ve burada kullanıldı olarak işaretlenir. Ardından sunucu anketi yanıtlamaya başlayıp başlayamayacağınızı kontrol eder. Bu sayede her bir kullanıcının anketi yalnızca bir kez yanıtlayabildiğinden emin olunur."</string>
+
+    <!-- XHED: Analytics voluntary user input, age group toolbar title -->
+    <string name="analytics_userinput_agegroup_title">"YaÅŸ Grubunuz"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
+    <string name="analytics_userinput_agegroup_unspecified">"Bilgi yok"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
+    <string name="analytics_userinput_agegroup_0_to_29">"0-29 yaÅŸ"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
+    <string name="analytics_userinput_agegroup_30_to_59">"30-59 yaÅŸ"</string>
+    <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
+    <string name="analytics_userinput_agegroup_from_60">"60+ yaÅŸ"</string>
+
+    <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
+    <string name="analytics_userinput_federalstate_title">"Federal Eyaletiniz"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_UNSPECIFIED -->
+    <string name="analytics_userinput_federalstate_unspecified">"Bilgi yok"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BW -->
+    <string name="analytics_userinput_federalstate_bw">"Baden-Württemberg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BY -->
+    <string name="analytics_userinput_federalstate_by">"Bavyera"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BE -->
+    <string name="analytics_userinput_federalstate_be">"Berlin"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BB -->
+    <string name="analytics_userinput_federalstate_bb">"Brandenburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HB -->
+    <string name="analytics_userinput_federalstate_hb">"Bremen"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HH -->
+    <string name="analytics_userinput_federalstate_hh">"Hamburg"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HE -->
+    <string name="analytics_userinput_federalstate_he">"Hessen"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_MV -->
+    <string name="analytics_userinput_federalstate_mv">"Mecklenburg-Vorpommern"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NI -->
+    <string name="analytics_userinput_federalstate_ni">"Aşağı Saksonya"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NRW -->
+    <string name="analytics_userinput_federalstate_nrw">"Kuzey Ren-Vestfalya"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_RP -->
+    <string name="analytics_userinput_federalstate_rp">"Renanya-Palatina"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SL -->
+    <string name="analytics_userinput_federalstate_sl">"Saarland"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SN -->
+    <string name="analytics_userinput_federalstate_sn">"Saksonya"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_ST -->
+    <string name="analytics_userinput_federalstate_st">"Saksonya-Anhalt"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SH -->
+    <string name="analytics_userinput_federalstate_sh">"Schleswig-Holstein"</string>
+    <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_TH -->
+    <string name="analytics_userinput_federalstate_th">"Türingiya"</string>
+
+    <!-- XHED: Analytics voluntary user input, district toolbar title -->
+    <string name="analytics_userinput_district_title">"Bölgeniz (İlçe)"</string>
+    <!-- XTXT: Analytics voluntary user input, district: UNSPECIFIED -->
+    <string name="analytics_userinput_district_unspecified">"Bilgi yok"</string>
 </resources>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml
index b87fbdc7e7f0e9354b81b76a410a2d5b49584566..b9c30d5c6f88ffd376e71d628ed4a36df1405e99 100644
--- a/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml
+++ b/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml
@@ -25,9 +25,9 @@
     <!-- XTXT: Body for the contact diary card displayed in the homescreen  -->
     <string name="contact_diary_homescreen_card_body">"Keep track of where you have been and whom you met."</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_homescreen_card_button_text">"Manage Journal"</string>
+    <string name="contact_diary_homescreen_card_button_text">"Open Journal"</string>
     <!-- XBUT: Button text for the contact diary card button in the homescreen   -->
-    <string name="contact_diary_onboarding_button_text">"Manage Journal"</string>
+    <string name="contact_diary_onboarding_button_text">"Open Journal"</string>
 
     <!-- XTXT: Title for the contact diary onboarding screen -->
     <string name="contact_diary_information_card_title">"Keep track of your contacts."</string>
@@ -62,7 +62,7 @@
     <!-- XTXT: Title for contact diary overview screen -->
     <string name="contact_diary_overview_title">"Contact Journal"</string>
     <!-- XTXT: Subtitle for contact diary overview screen -->
-    <string name="contact_diary_overview_subtitle">"Write down the people you have met and places you have visited."</string>
+    <string name="contact_diary_overview_subtitle">"Write down the people you have met and places you have visited. If a risk is displayed for a day, you can warn people you have been with on that day if they do not use the Corona-Warn-App themselves."</string>
     <!-- XTXT: Header for contact diary overview screen -->
     <string name="contact_diary_overview_header">Start Page</string>
 
@@ -150,6 +150,11 @@
     <!-- XTXT: Edit (description for screen readers) -->
     <string name="accessibility_edit">"Edit"</string>
 
+    <!-- XACT: Add Person Button (description for screen readers) -->
+    <string name="accessibility_day_add_person">""</string>
+    <!-- XACT: Add Location Button (description for screen readers) -->
+    <string name="accessibility_day_add_location">""</string>
+
     <!-- XBUT: Option - person encounter - below 15 Min -->
     <string name="contact_diary_person_encounter_duration_below_15_min">unter 15 Min</string>
     <!-- XBUT: Option - person encounter - above 15 Min -->
diff --git a/Corona-Warn-App/src/main/res/values/legal_strings.xml b/Corona-Warn-App/src/main/res/values/legal_strings.xml
index b79c0d50147bf112ec03cb02de2606cceca7adfa..1b7680961b5f22d45112d8a2fe248a307fb69fad 100644
--- a/Corona-Warn-App/src/main/res/values/legal_strings.xml
+++ b/Corona-Warn-App/src/main/res/values/legal_strings.xml
@@ -52,25 +52,39 @@
     <string name="contact_diary_onboarding_privacy_information_second_section_body_two" translatable="false">"Private individuals as well as companies are not allowed to make you disclose the information you have recorded. Please respect the wishes of anyone who does not want to be recorded in your contact diary."</string>
 
     <!-- XHED: Title for the consent displayed above the button in the survey consent screen -->
-    <string name="datadonation_details_survey_consent_info_card_title" translatable="false">"Ihr Einverständnis"</string>
+    <string name="datadonation_details_survey_consent_info_card_title" translatable="false">"Your Consent"</string>
     <!-- XTXT: Text for the consent body displayed above the button in the survey consent screen -->
-    <string name="datadonation_details_survey_consent_info_card_body" translatable="false">"Durch Antippen von „Einverstanden“ willigen Sie ein:\n\nBevor Ihnen der Teilnahmelink angezeigt werden kann, wird die Echtheit Ihrer App hierbei einmalig geprüft. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Google in die USA übermittelt, damit Google die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Weitere Angaben aus der App erhält Google  hierbei nicht. So wird sichergestellt, dass jeder Nutzer nur einmal an der Befragung teilnehmen kann und die Statistiken nicht verfälscht werden."</string>
+    <string name="datadonation_details_survey_consent_info_card_body" translatable="false">"By tapping on “Accept”, you consent to the following:\n\nBefore your participation link can be shown to you, the authenticity of your app is checked once. For this purpose, a unique identifier is generated by your smartphone and transmitted to Google in the U.S. or other third countries, so that Google can confirm the authenticity of your app to the RKI. The identifier contains information about the version of your smartphone and the app. On this basis, Apple [Google] may be able to infer your identity and learn that your smartphone has been authenticated. Google does not receive any other information from the app during this process. This ensures that each user can only participate in the survey once, so as not to distort the statistics."</string>
     <!-- XTXT: First bullet point in the consent body displayed above the button in the survey consent screen -->
-    <string name="datadonation_details_survey_consent_bullet_point_one" translatable="false">"Ihr Einverständnis ist freiwillig. Sie können die App vollständig nutzen, auch wenn Sie Ihr Einverständnis für die Zwecke der Befragung nicht erteilen."</string>
+    <string name="datadonation_details_survey_consent_bullet_point_one" translatable="false">"Your consent is voluntary. If you do not give your consent for the purposes of the survey, you will still be able to use the whole app."</string>
     <!-- XTXT: Second bullet point in the consent body displayed above the button in the survey consent screen -->
-    <string name="datadonation_details_survey_consent_bullet_point_two" translatable="false">"Auch nachdem Sie Ihr Einverständnis erklärt haben, müssen Sie nicht an der Befragung teilzunehmen. Sie können die Befragung jederzeit abbrechen."</string>
+    <string name="datadonation_details_survey_consent_bullet_point_two" translatable="false">"Even after you have given your consent, you do not have to participate in the survey. You can stop the survey at any time."</string>
     <!-- XTXT: Third bullet point in the consent body displayed above the button in the survey consent screen -->
-    <string name="datadonation_details_survey_consent_bullet_point_three" translatable="false">"Sie können Ihr Einverständnis abgeben, wenn Sie mindestens 16 Jahre alt sind."</string>
+    <string name="datadonation_details_survey_consent_bullet_point_three" translatable="false">"You need to be at least 16 years old to give your consent."</string>
     <!-- YTXT: Text on the bottom of the survey consent screen that opens a new screen about more information-->
-    <string name="datadonation_details_survey_consent_bottom_link" translatable="false">"Ausführliche Informationen zur Datenverarbeitung und Ihrem Einverständnis"</string>
-
+    <string name="datadonation_details_survey_consent_bottom_link" translatable="false">"Detailed information about this data processing and your consent."</string>
     <!-- XHED: Title for the information box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_title" translatable="false">"Prüfung der Echtheit und Drittlandsübermittlung"</string>
+    <string name="datadonation_survey_consent_details_title" translatable="false">"Verification of Authenticity and Transfer to a Third Country"</string>
     <!-- XTXT: Text for the information box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_text" translatable="false">"Um die Echtheit Ihrer App zu bestätigen, erzeugt Ihr Smartphone eine eindeutige Kennung, die Informationen über die Version Ihres Smartphones und der App enthält. Das ist erforderlich, um zu verhindern, dass Nutzer mehrfach der Befragung teilnehmen und so die Ergebnisse der Befragung verfälschen. Die Kennung wird hier einmalig an Google übermittelt. Dabei kann es auch zu einer Datenübermittlung in die USA kommen. Dort besteht kein dem europäischen Recht angemessenes Datenschutzniveau und Ihre europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht die Möglichkeit, dass US-Sicherheitsbehörden, auch ohne einen konkreten Verdacht, auf die übermittelten Daten bei Google zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen Informationen verknüpfen. Dies betrifft nur die an Google übermittelte Kennung. Die weiteren Angaben über Ihre Teilnahme an der Befragung erhält Google nicht. Wenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden“ an. Sie können die App weiterhin nutzen, eine Teilnahme an dieser Befragung ist dann jedoch nicht möglich."</string>
-    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_title_below" translatable="false">"<b>Zur Befragung durch das RKI</b>"</string>
-    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
-    <string name="datadonation_survey_consent_details_text_below" translatable="false">"Nachdem die Echtheit Ihrer App geprüft wurde, werden Sie auf eine Internetseite des RKI mit einem für Sie generierten Teilnahmelink zur Befragung weitergeleitet. Die Internetseite wird im Browser Ihres Smartphones geöffnet. Der Teilnahmelink enthält ein vorab durch die Corona-Warn-App generiertes Einmal-Passwort. Wenn Sie den Teilnahmelink antippen und die Internetseite mit der Befragung aufrufen, wird das Einmal-Passwort in Ihrem Browser zwischengespeichert. Auf dieser Seite werden weiterführenden Informationen zur Befragung und Handlungshinweise, z.B. wie die Befragung gestartet werden kann, dargestellt. Zum Start der Befragung wird das Einmal-Passwort an Server der Corona-Warn-App übermittelt und dort als verbraucht markiert. Durch den Server wird geprüft, ob Sie an der Befragung teilnehmen können oder nicht. So wird sichergestellt, dass jede Person nur einmal an der Befragung teilnehmen kann."</string>
+    <string name="datadonation_survey_consent_details_text" translatable="false">"To confirm the authenticity of your app, your smartphone will generate a unique identifier that contains information about the version of your smartphone and the app. This is necessary to prevent users from participating in the survey more than once, as this could distort the results of the survey. Once generated, the identifier will be transmitted once to Google. This may result in data being transferred to the U.S. or other third countries. There, the level of data protection may not be considered equivalent under European law and it may not be possible to enforce your European data protection rights. In particular, there is a possibility that once the transmitted data reaches Google, it may be accessed and analyzed by security authorities in the third country, even if they have no specific grounds for suspicion, for example by linking the data with other information. This only concerns the identifier sent to Google. Google will not receive the other information about your participation in the survey. It may however be possible for Apple [Google] to infer your identity from the identifier and learn that your smartphone has been authenticated. "</string>
+
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+    <string name="ppa_onboarding_consent_title" translatable="false">"Your Consent"</string>
+    <!-- XTXT: Body for Privacy-preserving Analytics onboarding -->
+ <string name="ppa_onboarding_privacy_information_body" translatable="false">"By tapping on “Accept”, you consent to the following:\n\nThe app will transmit information it records to the RKI, on a daily basis. The data concerns possible exposures and warnings that have been displayed to you, test results you have retrieved, and whether you have warned other users, and information about your smartphone’s operating system. If you have provided further details above (region, age group), then the RKI will also receive this information.\n\nThe RKI will compile this data into statistics and analyze it to assess the effectiveness and functioning of the app, and draw conclusions regarding the pandemic. The resulting knowledge will help to improve the app’s features and make it more user-friendly, as well as to inform other pandemic response measures.\n\nBefore your data is analyzed, it is necessary to ensure that each app that shares data is only counted once, so as not to distort the statistics. This is why the authenticity of your app needs to be verified. For this purpose, a unique identifier is generated by your smartphone and transmitted to Google in the U.S. or other third countries, so that Google can confirm the authenticity of your app to the RKI. The identifier contains information about the version of your smartphone and the app. On this basis, Google may be able to infer your identity and learn that your smartphone has been authenticated. Google does not receive any other information from the app during this process.\n\nYou can withdraw your consent at any time by disabling the data sharing feature in the app's settings."</string>
+ <!-- XTXT: Body point consent for Privacy-preserving Analytics -->
+ <string name="ppa_onboarding_privacy_information_point_consent" translatable="false">"Your consent is voluntary. If you do not give your consent, you will still be able to use the app."</string>
+ <!-- XTXT: Body point identity for Privacy-preserving Analytics -->
+ <string name="ppa_onboarding_privacy_information_point_identity" translatable="false">"If you share data about your use of the app, your identity will still be kept secret from the RKI. This means the RKI will not find out who you are or who you have met. No profiles will be created either."</string>
+ <!-- XTXT: Body point sixteen for Privacy-preserving Analytics -->
+ <string name="ppa_onboarding_privacy_information_point_sixteen" translatable="false">"You need to be at least 16 years old to give your consent."</string>
+ <!-- XHED: Title for Privacy-preserving Analytics additional info  -->
+ <string name="ppa_onboarding_more_info_title" translatable="false">"Verification of authenticity and transfer to a third country"</string>
+ <!-- XTXT: Body for Privacy-preserving Analytics additional info -->
+ <string name="ppa_onboarding_more_info_body" translatable="false">"To confirm the authenticity of your app, your smartphone will generate a unique identifier that contains information about the version of your smartphone and the app. This is necessary to prevent data from being transmitted to the RKI more than once or in an unauthorised manner, as this could distort the results of the analysis. The identifier will be transmitted to Google. This may result in data being transferred to the U.S. or other third countries. There, the level of data protection may not be considered equivalent under European law and it may not be possible to enforce your European data protection rights. In particular, there is a possibility that once the transmitted data reaches Google, it may be accessed and analyzed by security authorities in the third country, even if they have no specific grounds for suspicion, for example by linking the data with other information. This only concerns the identifier sent to Google. Google will not receive the other information about how you use the Corona-Warn-App. It may however be possible for Google to infer your identity from the identifier and learn that your smartphone has been authenticated.\n\nIf you do not consent to this transfer of your data to a third country, please do not tap on “Accept”. You will still be able to use the app, but not the data sharing feature."</string>
+ <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
+ <string name="ppa_onboarding_privacy_information_title" translatable="false">"Your Consent"</string>
+ <!-- XTXT: Body for Privacy-preserving Analytics settings -->
+ <string name="ppa_settings_privacy_information_body" translatable="false">"By enabling “Share Data” above, you consent to the following:\n\nThe app will transmit information it records to the RKI, on a daily basis. The data concerns possible exposures and warnings that have been displayed to you, test results you have retrieved, and whether you have warned other users, and information about your smartphone’s operating system. If you have provided further details above (region, age group), then the RKI will also receive this information.\n\nThe RKI will compile this data into statistics and analyze it to assess the effectiveness and functioning of the app, and draw conclusions regarding the pandemic. The resulting knowledge will help to improve the app’s features and make it more user-friendly, as well as to inform other pandemic response measures.\n\nBefore your data is analyzed, it is necessary to ensure that each app that shares data is only counted once, so as not to distort the statistics. This is why the authenticity of your app needs to be verified. For this purpose, a unique identifier is generated by your smartphone and transmitted to Google in the U.S. or other third countries, so that Google can confirm the authenticity of your app to the RKI. The identifier contains information about the version of your smartphone and the app. On this basis, Google may be able to infer your identity and learn that your smartphone has been authenticated. Google does not receive any other information from the app during this process.\n\n You can withdraw your consent at any time by disabling “Share Data” above."</string>
 
 </resources>
diff --git a/Corona-Warn-App/src/main/res/values/release_info_strings.xml b/Corona-Warn-App/src/main/res/values/release_info_strings.xml
index 2230002a32421921656f0dcc6ee7ea0925c03330..16d097b510a3ae8c0cf7f16b6c28ef2fc5cbc221 100644
--- a/Corona-Warn-App/src/main/res/values/release_info_strings.xml
+++ b/Corona-Warn-App/src/main/res/values/release_info_strings.xml
@@ -13,26 +13,38 @@
     <!-- XBUT: Continue button for the release info screen -->
     <string name="release_info_continue_button">"Next"</string>
     <!-- XTXT: New release info footer -->
-    <string name="new_release_bottom">Änderungen zum Release finden Sie in den App-Einstellungen unter dem Menüpunkt „Neue Funktionen”.</string>
+    <string name="new_release_bottom">"Changes in this release can be found in the app settings, under “New Features”."</string>
 
     <!-- XHED: Titles for the release info screen bullet points -->
     <string-array name="new_release_title">
-        <item>Link auf RKI-Umfrage</item>
-        <item>Einwilligung zur Datenspende (optional)</item>
-        <item>Anpassungen der Risiko-Karten</item>
-        <item>Fortführung der Risiko-Ermittlung nach Teilung der Zufalls-IDs</item>
-        <item>Einführung von Registerkarten</item>
-        <item>Mehr Informationen zum Testablauf</item>
+        <item>EN: Zusatzfunktionen im Kontakt-Tagebuch</item>
+        <item>Direkter Zugriff auf Kontakt-Tagebuch</item>
+        <item>Mehr Details zum Risikostatus</item>
+        <item>Screenshots zur Corona-Warn-App</item>
     </string-array>
 
     <!-- XTXT: Text bodies for the release info screen bullet points -->
     <string-array name="new_release_body">
-        <item>Wenn Sie ein erhöhtes Risiko haben, können Sie aus der App heraus eine Umfrage des Robert-Koch-Instituts aufrufen und daran teilnehmen.</item>
-        <item>Sie haben nun die Möglichkeit, Ihre Nutzungsdaten zur Verfügung zu stellen und uns somit bei der Verbesserung der App zu unterstützen.</item>
-        <item>Die Texte auf den Risiko-Karten wurden leicht angepasst.</item>
-        <item>Nachdem Sie Ihre verschlüsselten Zufalls-IDs geteilt haben, können Sie entscheiden, ob und wann Sie die Risiko-Ermittlung wieder einschalten.</item>
-        <item>Es gibt nun eine eigene Registerkarte für das Kontakt-Tagebuch. Somit können Sie schneller auf Ihr Tagebuch zugreifen und vom Kontakt-Tagebuch wieder zurück auf die Startseite der App wechseln.</item>
-        <item>Die App enthält nun detaillierte Informationen zum Testablauf.</item>
+        <item>EN: Sie können zu jedem Eintrag angeben, unter welchen Umständen die Begegnung stattfand. Sie können aus vorgegebenen Optionen auswählen (z.B. Dauer der Begegnung, mit oder ohne Maske) sowie zusätzlich in einer kurzen Notiz weitere Umstände erfassen, die zu einem erhöhten Risiko führen könnten. Sollten Sie sich tatsächlich anstecken, können diese Angaben dem Gesundheitsamt bei der Nachverfolgung möglicher Infektionsketten helfen.</item>
+        <item>Sie können nun direkt einen Eintrag im Kontakt-Tagebuch hinzufügen, ohne erst die App öffnen zu müssen. Tippen Sie dazu etwa 2 Sekunden lang auf das Icon der Corona-Warn-App bis ein Menü erscheint und tippen Sie dann auf "Tagebuch-Eintrag für heute hinzufügen“.</item>
+        <item>Wenn Ihnen in der App ein erhöhtes Risiko angezeigt wird, können Sie nun sehen, ob der Risikostatus aufgrund einer bzw. mehrerer Begegnungen mit erhöhtem Risiko angezeigt wird, oder aufgrund von mehreren Begegnungen mit niedrigem Risiko.</item>
+        <item>Auf https://www.coronawarn.app stehen nun alle Screenshots der App zu Verfügung. So können Sie sich nun auch über geplante Funktionen der App informieren.</item>
+    </string-array>
+
+    <!-- XTXT: Text labels that will be converted to Links -->
+    <string-array name="new_release_linkified_labels">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item>https://www.coronawarn.app</item>
+    </string-array>
+
+    <!-- XTXT: URL destinations for the lables in new_release_linkified_labels -->
+    <string-array name="new_release_target_urls">
+        <item></item>
+        <item></item>
+        <item></item>
+        <item>https://www.coronawarn.app/en/screenshots</item>
     </string-array>
 
 </resources>
diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml
index dbca9e5690e6022568aeb2f42a68f800b0882e40..de77c976edb37749ce346df5532e89ab9d307def 100644
--- a/Corona-Warn-App/src/main/res/values/strings.xml
+++ b/Corona-Warn-App/src/main/res/values/strings.xml
@@ -163,24 +163,24 @@
     <plurals name="risk_card_low_risk_encounter_days_body">
         <item quantity="one">"Exposures with low risk on %1$d day"</item>
         <item quantity="other">"Exposures with low risk on %1$d days"</item>
-        <item quantity="zero">"No exposures"</item>
+        <item quantity="zero">"Exposures with low risk on %1$d days"</item>
         <item quantity="two">"Exposures with low risk on %1$d days"</item>
         <item quantity="few">"Exposures with low risk on %1$d days"</item>
         <item quantity="many">"Exposures with low risk on %1$d days"</item>
     </plurals>
     <!-- XACT: risk card - Low risk state - Days with low risk encounters description -->
     <plurals name="risk_card_low_risk_encounter_days_body_description">
-        <item quantity="one">"Exposures with low risk on %1$d day"</item>
+        <item quantity="one">"Exposures with low risk on one day"</item>
         <item quantity="other">"Exposures with low risk on %1$d days"</item>
-        <item quantity="zero">"No exposures"</item>
+        <item quantity="zero">"Exposures with low risk on %1$d days"</item>
         <item quantity="two">"Exposures with low risk on %1$d days"</item>
         <item quantity="few">"Exposures with low risk on %1$d days"</item>
         <item quantity="many">"Exposures with low risk on %1$d days"</item>
     </plurals>
     <!-- XTXT: risk card - Low risk state - Most recent date with low risk and single day of encounters -->
-    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"Am %1$s"</string>
+    <string name="risk_card_low_risk_most_recent_body_encounter_on_single_day">"On %1$s"</string>
     <!-- XTXT: risk card - Low risk state - Most recent date with low risk and more than one day of encounters -->
-    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"Zuletzt am %1$s"</string>
+    <string name="risk_card_low_risk_most_recent_body_encounters_on_more_than_one_day">"Most recently on %1$s"</string>
 
     <!-- XTXT: risk card - High risk state - Days with high risk encounters -->
     <plurals name="risk_card_high_risk_encounter_days_body">
@@ -193,7 +193,7 @@
     </plurals>
     <!-- XACT: risk card - High risk state - Days with high risk encounters description -->
     <plurals name="risk_card_high_risk_encounter_days_body_description">
-        <item quantity="one">"Exposures on %1$d day with increased risk"</item>
+        <item quantity="one">"Exposures on one day with increased risk"</item>
         <item quantity="other">"Exposures on %1$d days with increased risk"</item>
         <item quantity="zero">"Exposures on %1$d days with increased risk"</item>
         <item quantity="two">"Exposures on %1$d days with increased risk"</item>
@@ -202,7 +202,8 @@
     </plurals>
 
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and single day of encounters -->
-    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"Am %1$s"</string>
+    <string name="risk_card_high_risk_most_recent_body_encounter_on_single_day">"On %1$s"</string>
+
     <!-- XTXT: risk card - High risk state - Most recent date with high risk and more than one day of encounters -->
     <string name="risk_card_high_risk_most_recent_body_encounters_on_more_than_one_day">"Most recently on %1$s"</string>
 
@@ -332,11 +333,11 @@
     <string name="risk_details_behavior_body_stay_away">"Keep at least 1.5 meters distance from other people."</string>
 
     <!-- XMSG: risk details - link to faq, something like a bullet point -->
-    <string name="risk_details_increased_risk_faq_link_text">""</string>
-    <!-- XTXT: Explanation screen increased risk level link label -->
-    <string name="risk_details_increased_risk_faq_link_label">""</string>
+    <string name="risk_details_increased_risk_faq_link_text">"If you get tested, you will find additional information about the testing procedure in the FAQ."</string>
+    <!-- XTXT: Explanation screen increased risk level link label - HAS TO MATCH the link text above -->
+    <string name="risk_details_increased_risk_faq_link_label">"FAQ"</string>
     <!-- XTXT: Explains user about increased risk level: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details -->
-    <string name="risk_details_increased_risk_faq_url">""</string>
+    <string name="risk_details_increased_risk_faq_url">"https://www.coronawarn.app/en/faq/#red_card_how_to_test"</string>
 
     <!-- XMSG: risk details - cough/sneeze, something like a bullet point -->
     <string name="risk_details_behavior_body_cough_sneeze">"Sneeze or cough into your elbow or a tissue."</string>
@@ -349,7 +350,7 @@
     <!-- XHED: risk details - infection risk headline, below behaviors -->
     <string name="risk_details_headline_infection_risk">"Risk of Infection"</string>
     <!-- XHED: risk details - infection period logged headling, below behaviors -->
-    <string name="risk_details_headline_period_logged">"Period logged"</string>
+    <string name="risk_details_headline_period_logged">"Period Logged"</string>
     <!-- XHED: risk details - infection period logged headling, below behaviors -->
     <string name="risk_details_subtitle_period_logged">"This period is included in the calculation."</string>
     <!-- XHED: risk details - infection period logged information body, below behaviors -->
@@ -475,13 +476,13 @@
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_button_next">"Activate Exposure Logging"</string>
     <!-- XTXT: onboarding(tracing) - dialog about tracing permission declined -->
-    <string name="onboarding_tracing_dialog_headline">"Authorization"</string>
+    <string name="onboarding_tracing_dialog_headline">"Do not activate?"</string>
     <!-- YMSI: onboarding(tracing) - dialog about tracing -->
-    <string name="onboarding_tracing_dialog_body">"This means the Corona-Warn-App cannot send or receive notifications about your COVID-19 risk status. You can deactivate this feature at any time."</string>
+    <string name="onboarding_tracing_dialog_body">"If you do not activate exposure logging, the app cannot determine your risk status. This means you will not receive any information about your risk in the app. You can reactivate exposure logging at any time."</string>
     <!-- XBUT: onboarding(tracing) - positive button (right) -->
     <string name="onboarding_tracing_dialog_button_positive">"Do Not Activate"</string>
     <!-- XBUT: onboarding(tracing) - negative button (right) -->
-    <string name="onboarding_tracing_dialog_button_negative">"Back"</string>
+    <string name="onboarding_tracing_dialog_button_negative">"Cancel"</string>
     <!-- XACT: onboarding(tracing) - dialog about background jobs header text -->
     <string name="onboarding_background_fetch_dialog_headline">"Background app refresh deactivated"</string>
     <!-- YMSI: onboarding(tracing) - dialog about background jobs -->
@@ -507,9 +508,9 @@
     <!-- XACT: onboarding(tracing) - illustraction description, header image -->
     <string name="onboarding_tracing_illustration_description">"Three persons have activated exposure logging on their smartphones, which will log their encounters with each other."</string>
     <!-- XHED: onboarding(tracing) - location explanation for bluetooth headline -->
-    <string name="onboarding_tracing_location_headline">"Allow location access"</string>
+    <string name="onboarding_tracing_location_headline">"Activate Location Setting"</string>
     <!-- XTXT: onboarding(tracing) - location explanation for bluetooth body text -->
-    <string name="onboarding_tracing_location_body">"Your location cannot be accessed. Google and/or Android requires access to your smartphone’s location to use Bluetooth."</string>
+    <string name="onboarding_tracing_location_body">"Your device location cannot be determined by the app, but the device location setting must be activated to use Bluetooth Low Energy in some Android versions."</string>
     <!-- XBUT: onboarding(tracing) - button enable tracing -->
     <string name="onboarding_tracing_location_button">"Open Device Settings"</string>
     <!-- XACT: Onboarding (test) page title -->
@@ -534,97 +535,100 @@
     <string name="onboarding_notifications_illustration_description">"A woman receives a notification from her Corona-Warn-App."</string>
 
     <!-- XACT: onboarding privacy preserving analytics (ppa) - illustraction description, header image -->
-    <string name="onboarding_ppa_illustration_description">"Darstellung einer Person, die ihr Smartphone in der Hand hält"</string>
+    <string name="onboarding_ppa_illustration_description">"A person is holding a smartphone in their hand"</string>
     <!-- XHED: onboarding privacy preserving analytics (ppa) - headline -->
-    <string name="onboarding_ppa_headline">"Datenspende"</string>
+    <string name="onboarding_ppa_headline">"Share Data"</string>
+    <!-- XTXT: onboarding privacy preserving analytics (ppa) - body short text -->
+    <string name="onboarding_ppa_body_short">"Let us know how you use the app and help us to assess its effectiveness."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - body text -->
-    <string name="onboarding_ppa_body">"Sie können uns helfen, die Corona-Warn-App zu verbessern. Teilen Sie Daten über Ihre App-Nutzung mit dem RKI. Sie helfen damit dem RKI bei der Bewertung der Wirksamkeit der App. Ihre Daten ermöglichen außerdem, die Funktionen und Nutzerfreundlichkeit der App zu verbessern."</string>
+    <string name="onboarding_ppa_body">"You can help us to improve the Corona-Warn-App. Share the data about your app usage with the RKI. This will help the RKI assess the app’s effectiveness. Your data will also help to improve the features and usability of the app."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - state title -->
-    <string name="onboarding_ppa_state_title">"Ihr Bundesland (optional)"</string>
+    <string name="onboarding_ppa_state_title">"Your federal state (optional)"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - district title -->
-    <string name="onboarding_ppa_district_title">"Ihr Kreis/Bezirk (optional)"</string>
+    <string name="onboarding_ppa_district_title">"Your district (county) (optional)"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - regional evaluation text -->
-    <string name="onboarding_ppa_regional_evaluation_text">"Wenn Sie zusätzlich Ihr Bundesland und Ihre Region angeben, können wir regionale Auswertungen durchführen."</string>
+    <string name="onboarding_ppa_regional_evaluation_text">"If you also specify your federal state and region, we can conduct regional analyses."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - age title -->
-    <string name="onboarding_ppa_age_title">"Ihr Alter (optional)"</string>
+    <string name="onboarding_ppa_age_title">"Your age (optional)"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
-    <string name="onboarding_ppa_more_info_title">"Ausführliche Informationen zu dieser Datenverarbeitung und den Datenschutzrisiken in den USA"</string>
+    <string name="onboarding_ppa_more_info_title">"Detailed Information about This Data Processing and Data Protection Risks in the U.S. and Other Third Countries"</string>
     <!-- XBUT: onboarding privacy preserving analytics (ppa) - donate button -->
-    <string name="onboarding_ppa_consent_donate_button">"Daten spenden"</string>
+    <string name="onboarding_ppa_consent_donate_button">"Share Data"</string>
     <!-- XBUT: onboarding privacy preserving analytics (ppa) - dont donate button -->
-    <string name="onboarding_ppa_consent_not_donate_button">"Nicht spenden"</string>
+    <string name="onboarding_ppa_consent_not_donate_button">"Do Not Share"</string>
 
     <!-- XHED: onboarding privacy preserving analytics (ppa) - more info - headline -->
-    <string name="onboarding_ppa_more_info_headline">"Ausführliche Informationen zur Datenspende"</string>
+    <string name="onboarding_ppa_more_info_headline">"Detailed Information about Data Sharing"</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - consent title -->
-    <string name="onboarding_ppa_more_info_decline_processing_text">"Wenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden" an. Sie können die App weiterhin nutzen, die Datenspende ist dann jedoch nicht möglich."</string>
+    <string name="onboarding_ppa_more_info_decline_processing_text">"If you do not consent to this transfer of your data to a third country, please do not tap on “Accept”. You will still be able to use the app, but not the data donation sharing feature."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - title -->
-    <string name="onboarding_ppa_more_info_data_processing_title">"Datenverarbeitung im Rahmen der Datenspende"</string>
+    <string name="onboarding_ppa_more_info_data_processing_title">"Data Processing in the Data Sharing Process"</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing body -->
-    <string name="onboarding_ppa_more_info_data_processing_body">"Im Rahmen der Datenspende übermittelt die App verschiedene Daten täglich an das RKI. Die übermittelten Daten werden zu unterschiedlichen Zwecken ausgewertet:"</string>
+    <string name="onboarding_ppa_more_info_data_processing_body">"If you consent to share your data, the app sends various data to the RKI each day. The transmitted data will help us assess the effectiveness of the app and will be analyzed to support the following improvements:"</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 1 -->
-    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Verbesserung der Risiko-Ermittlung – Die Genauigkeit und Zuverlässigkeit der technischen Berechnung der Ansteckungsrisiken sollen verbessert werden. Hierfür werden Angaben über Risiko-Begegnungen und Ihnen angezeigte Warnungen ausgewertet. In der Folge kann die Berechnungsmethode verfeinert werden."</string>
+    <string name="onboarding_ppa_more_info_data_processing_point_1_text">"Improved exposure logging – We want to improve the accuracy and reliability of the technical calculation of infection risks. To do so, we will evaluate information about risk exposures and the warnings you see. As a result, we will be able to refine the calculation method."</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 2 -->
-    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Verbesserung der Nutzerführung in der App – Die Bedienung der App soll erleichtert werden. Hierfür werden Angaben über die einzelnen Schritte ausgewertet, die Nutzer in der App vornehmen. So können Beschriftungen und Hinweistexte klarer gestaltet und Bedienelemente so platziert werden, dass sie besser gefunden werden können. Außerdem können Darstellungen für verschiedene Smartphone-Modelle angepasst werden."</string>
+    <string name="onboarding_ppa_more_info_data_processing_point_2_text">"Improved user guidance in the app – We want to make the app easier to use. To do so, we will evaluate information about the individual steps that users perform in the app. This will help us make labels and information texts clearer and arrange the control elements to make them easier to find. We will also be able to customize the layouts for different smartphone models."</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 3 -->
-    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Informationen und Hilfestellungen zur App ermöglichen – Es soll möglich werden, zu erkennen, ob es z.B. bei der Nutzung der App im Zusammenhang mit bestimmten Testeinrichtungen und Laboren oder in bestimmten Regionen zu Problemen kommt. Dies kann festgestellt werden, wenn aufgrund der Datenspende auffällt, dass in bestimmten Regionen Testergebnisse verspätet zur Verfügung stehen. So können die zuständigen Gesundheitsbehörden auch gezielt auf mögliche technische Störungen hingewiesen werden."</string>
+    <string name="onboarding_ppa_more_info_data_processing_point_3_text">"Enable information and assistance in the app – We want to be able to tell if problems occur when using the app in connection with certain testing facilities and laboratories or in certain regions. We can identify this, for example, if the shared data indicates that testing results are provided delayed in certain regions. The relevant public health authorities can also be notified specifically of potential technical problems."</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - data processing point 4 -->
-    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Verbesserung der Statistiken über den Pandemieverlauf – Die Daten können Aufschluss über die zeitliche und räumliche Verteilung bestimmter Ereignisse des Pandemieverlaufs geben und es ermöglichen, auf bestimmte Entwicklungen schneller zu reagieren."</string>
+    <string name="onboarding_ppa_more_info_data_processing_point_4_text">"Improve statistics about the course of the pandemic – Your data can help provide insights into how the pandemic is spreading over time and space and help us respond to certain trends more quickly."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data title -->
-    <string name="onboarding_ppa_more_info_rki_data_title">"Dazu erhebt das RKI folgende Daten:"</string>
+    <string name="onboarding_ppa_more_info_rki_data_title">"To this end, the RKI collects the following data:"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 1 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"Das Datum der Ãœbermittlung."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_1_text">"The date of data transmission."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 2 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Änderungen der Warnungshistorie im Vergleich zum Vortag."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_2_text">"Changes in the warning history compared to the previous day."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 3 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Angaben dazu, welches Risiko Ihnen zum Zeitpunkt der Ãœbermittlung angezeigt wurde."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_3_text">"Information about which risk was displayed to you at the time of data transmission."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 4 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"Angaben dazu, auf welcher Grundlage der Risikostatus in Zusammenhang mit einer Begegnung berechnet wurde."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_4_text">"Information about the basis for calculating the risk status in the context of an exposure."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 1 -->
-    <string name="onboarding_ppa_more_info_rki_data_body_1">"Wenn Sie ein Testergebnis über die App abgerufen haben:"</string>
+    <string name="onboarding_ppa_more_info_rki_data_body_1">"If you have retrieved a test result through the app:"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 5 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Angaben dazu, ob Sie ein positives oder negatives Testergebnis über die App erhalten haben."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_5_text">"Information about whether you received a positive or negative test result through the app."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 6 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Angaben zum berechneten Risiko zum Zeitpunkt der Testregistrierung."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_6_text">"Information about the calculated risk at the time the test was registered."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 7 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Angaben zum Zeitraum zwischen der letzten Begegnung mit erhöhtem Risiko und der Testregistrierung."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_7_text">"Information about the time between your last exposure with increased risk and the test registration."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 8 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Angaben zum Zeitraum zwischen der letzten Mitteilung eines erhöhten Risikos und der Testregistrierung."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_8_text">"Information about the time between the last notification of an increased risk and the test registration."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 9 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Angaben dazu, ob Sie Ihr Testergebnis geteilt und andere gewarnt haben."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_9_text">"Information about whether you shared your test result and warned others."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data body 2-->
-    <string name="onboarding_ppa_more_info_rki_data_body_2">"Wenn Sie andere über eine mögliche Risiko-Begegnung gewarnt haben:"</string>
+    <string name="onboarding_ppa_more_info_rki_data_body_2">"If you have warned others about a potential exposure:"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 10 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Angaben dazu, ob Sie die Schritte zur Warnung anderer abgebrochen haben."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_10_text">"Information about whether you canceled the steps for warning others."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 11 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Angaben dazu, ob Sie Angaben zum Symptombeginn gemacht haben."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_11_text">"Information about whether you provided details about the onset of your symptoms."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 12 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Angaben dazu, wann Sie Ihr Einverständnis in die Warnung anderer erteilt haben."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_12_text">"Information about when you granted your consent to warn others."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 13 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Angaben dazu, bis zu welcher Meldung im Rahmen der Warnung anderer Sie gekommen sind."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_13_text">"Information about the notification you reached in the context of warning others."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 14 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"Angaben dazu, wie viele Stunden es gedauert hat, bis Sie Ihr Testergebnisses erhalten haben."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_14_text">"Information about how many hours it took for you to receive your test result."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 15 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Angaben dazu, wie viele Tage seit der letzten Mitteilung eines hohen Risikos vergangen sind."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_15_text">"Information about how many days have passed since the last notification of an increased risk."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - rki data point 16 text -->
-    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Angaben dazu, wie viele Stunden seit der Testregistrierung vergangen sind."</string>
+    <string name="onboarding_ppa_more_info_rki_data_point_16_text">"Information about how many hours have passed since the test registration."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info body-->
-    <string name="onboarding_ppa_more_info_other_info_body">"Sonstige Informationen:"</string>
+    <string name="onboarding_ppa_more_info_other_info_body">"Other information:"</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 1 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Angaben dazu, welche Altersgruppe Sie angegeben haben."</string>
+    <string name="onboarding_ppa_more_info_other_info_point_1_text">"Information about the age group you specified."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 2 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Angaben dazu, welche Altersgruppe Sie angegeben haben."</string>
+    <string name="onboarding_ppa_more_info_other_info_point_2_text">"Information about the time between your last exposure with increased risk and the test registration."</string>
     <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 3 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Angaben zum Zeitraum zwischen der letzten Begegnung mit erhöhtem Risiko und der Testregistrierung."</string>
-    <!-- XTXT: onboarding privacy preserving analytics (ppa) - more info - other info point 4 text-->
-    <string name="onboarding_ppa_more_info_other_info_point_4_text">"Angaben dazu, ob Sie Ihr Testergebnis geteilt und andere gewarnt haben."</string>
+    <string name="onboarding_ppa_more_info_other_info_point_3_text">"Information about whether you shared your test result and warned others."</string>
     <!-- YTXT: onboarding privacy preserving analytics (ppa) - more info - very secret body-->
-    <string name="onboarding_ppa_more_info_much_privacy_body">"Die Angaben können nicht mit Ihrer Person verknüpft werden. Ihre Identität bleibt weiterhin geheim.\nDie Angaben werden statistisch ausgewertet, sie werden nicht zu einem Profil gespeichert."</string>
+    <string name="onboarding_ppa_more_info_much_privacy_body">"This information cannot be linked with you personally. Your identity will remain confidential.\nThe information will be analyzed for statistical purposes. It will not be saved for a profile."</string>
+
+
+
 
 
     <!-- ####################################
-             Onboarding sixteen include
-   ###################################### -->
+                 Onboarding sixteen include
+       ###################################### -->
 
     <!-- XACT: onboarding(sixteen) title -->
     <string name="sixteen_title_text">"Age 16 Warning"</string>
@@ -779,12 +783,12 @@
     <string name="settings_background_priority_card_headline">"Change prioritized background activity"</string>
 
     <!-- XTXT: settings(privacy preserving analytics) - text in row on settings overview -->
-    <string name="settings_privacy_preserving_analytics_body_description">""</string>
+    <string name="settings_privacy_preserving_analytics_body_description">"Allow the transmission of your usage behavior."</string>
     <!-- XHED: settings(background priority) - Privacy preserving analytics page title -->
-    <string name="settings_privacy_preserving_analytics_title">""</string>
+    <string name="settings_privacy_preserving_analytics_title">"Share Data"</string>
 
     <!-- XTXT: privacy preserving analytics settings switch subtitle  -->
-    <string name="settings_analytics_switch_subtitle">""</string>
+    <string name="settings_analytics_switch_subtitle">"Share User Data"</string>
 
     <!-- ####################################
                App Information
@@ -1016,7 +1020,7 @@
     <!-- YTXT: Body for consent main section fourth point  -->
     <string name="submission_consent_main_fourth_point">"You must be at least 16 years old to grant your consent."</string>
     <!-- YTXT: Content Description for the illustration  -->
-    <string name="submission_consent_main_illustration_description"></string>
+    <string name="submission_consent_main_illustration_description">"A person is holding a smartphone. A QR code on a test symbolizes the code to be scanned."</string>
 
     <!-- Submission Test Result -->
     <!-- XHED: Page headline for test result  -->
@@ -1187,7 +1191,7 @@
     <!-- YTXT: text after submission: contagious -->
     <string name="submission_done_contagious">"The public health authority will contact you within the next few days."</string>
     <!-- YTXT: text after submission: isolate -->
-    <string name="submission_done_isolate">"Please isolate yourself from other people."</string>
+    <string name="submission_done_isolate">"You are infectious. Isolate yourself from other people."</string>
     <!-- XHED: Title for further info -->
     <string name="submission_done_further_info_title">"Other information:"</string>
     <!-- YTXT: submission done further info bullet points -->
@@ -1349,21 +1353,21 @@
 
     <!-- Reenable risk card -->
     <!-- XHED: Card title for re-enable risk card -->
-    <string name="reenable_risk_card_title">"Risiko-Überprüfung beendet"</string>
+    <string name="reenable_risk_card_title">"Exposure Check Ended"</string>
     <!-- YTXT: Body text for test registration date -->
-    <string name="reenable_risk_card_test_registration_string">"Test registriert am %s"</string>
+    <string name="reenable_risk_card_test_registration_string">"Test registered on %s"</string>
     <!-- YTXT: Description text for re-enable risk card -->
-    <string name="reenable_risk_card_description_text">"Die automatische Risiko-Überprüfung wurde beendet, weil Sie sich aufgrund Ihres positiven Tests aktuell in Isolation befinden. Sie können die Risiko-Überprüfung jederzeit wieder einschalten. Ihr registrierter Test wird dann automatisch gelöscht."</string>
+    <string name="reenable_risk_card_description_text">"The automatic exposure check has ended because you have been diagnosed with coronavirus and are currently in isolation. You can reactivate the exposure test at any time. If you do, your registered test will be deleted automatically."</string>
     <!-- XBUT: Button for re-enabling risk calculation -->
-    <string name="reenable_risk_card_button_text">"Risiko-Überprüfung Einschalten "</string>
+    <string name="reenable_risk_card_button_text">"Turn On Exposure Check "</string>
     <!-- XHED: Dialog title for reactivate risk calculation  -->
-    <string name="dialog_reactivate_risk_calculation_title">"Risiko-Ermittlung aktivieren."</string>
+    <string name="dialog_reactivate_risk_calculation_title">"Activate exposure check."</string>
     <!-- YTXT: Dialog text for reactivate risk calculation -->
-    <string name="dialog_reactivate_risk_calculation_message">"Ihr aktueller Test wird aus der App gelöscht, damit Sie bei Bedarf einen neuen Test registrieren können."</string>
+    <string name="dialog_reactivate_risk_calculation_message">"Your current test will be deleted from the app, so you can register a new test if necessary."</string>
     <!-- XBUT: Positive button for reactivate risk calculation -->
-    <string name="dialog_reactivate_risk_calculation_button_positive">"Aktivieren"</string>
+    <string name="dialog_reactivate_risk_calculation_button_positive">"Activate"</string>
     <!-- XBUT: Negative button for reactivate risk calculation -->
-    <string name="dialog_reactivate_risk_calculation_button_negative">"Abbrechen"</string>
+    <string name="dialog_reactivate_risk_calculation_button_negative">"Cancel"</string>
 
     <!-- Test Result Card -->
     <string name="test_result_card_headline">"Your diagnosis:"</string>
@@ -1406,15 +1410,15 @@
     <!-- YTXT: Text for consent given -->
     <string name="submission_test_result_available_text_consent_given">"Thank you for agreeing to share your test result and helping to warn others as a result. \n\n"<b>"In the next step, please share your test result by tapping “Share”."</b></string>
     <!-- XHED: Close screen popup title for consent given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_given">"Do you want to cancel?"</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_given">"Do you really want to cancel the process?"</string>
     <!-- XTXT: Close screen popup text for consent given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_given">"Your entries will not be saved."</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_given">"Important:\nYou are about to cancel this process.\nYou have not warned others yet. Please complete the process and help to protect others."</string>
     <!-- YTXT: Text for consent NOT given -->
     <string name="submission_test_result_available_text_consent_not_given">"You have chosen not to share your test result. Others will not be warned. \n\nIn the next step, you have the opportunity to change your mind and share your test result after all, to help stop the spread of coronavirus and protect others."</string>
     <!-- XHED: Close screen popup title for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Important:\nYou are about to cancel this process.\nYou have not warned others yet. Please complete the process and help to protect others."</string>
+    <string name="submission_test_result_available_close_dialog_title_consent_not_given">"Do you want to cancel?"</string>
     <!-- XTXT: Close screen popup text for consent NOT given -->
-    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Do you really want to cancel the process?"</string>
+    <string name="submission_test_result_available_close_dialog_body_consent_not_given">"Your entries will not be saved."</string>
     <!-- XBUT: Close screen popup cancel button -->
     <string name="submission_test_result_available_close_dialog_cancel_button">"Cancel"</string>
     <!-- XBUT: Close screen popup continue button -->
@@ -1458,7 +1462,7 @@
     <!-- XHED: Title for submission statistics card -->
     <string name="statistics_card_submission_title">"Warnings by App Users"</string>
     <!-- XTXT: Text displayed in the bottom of submission statistics card-->
-    <string name="statistics_card_submission_bottom_text">"About Corona-Warn-App"</string>
+    <string name="statistics_card_submission_bottom_text">"through the Corona-Warn-App"</string>
 
     <!-- XTXT: Timestamp refers to today's date in submission and infections cards -->
     <string name="statistics_primary_value_today">"Today"</string>
@@ -1480,7 +1484,7 @@
     <!-- XHED: Explanation screen title -->
     <string name="statistics_explanation_title">"Key Figures"</string>
     <!-- XHED: Explanation screen subtitle -->
-    <string name="statistics_explanation_subtitle">"Explanation of Statistics"</string>
+    <string name="statistics_explanation_subtitle">"Explanation of nationwide statistics"</string>
     <!-- XHED: Explanation screen confirmed new infections title -->
     <string name="statistics_explanation_confirmed_new_infection_title">"Confirmed New Infections"</string>
     <!-- XTXT: Explanation screen confirmed new infections text -->
@@ -1498,7 +1502,7 @@
     <!-- XTXT: Explanation screen seven day r-value text -->
     <string name="statistics_explanation_seven_day_r_value_text">"The reproduction figure, R, indicates how many people an average infected person has infected further. The current value takes data up to the last 5 days into account.\n\nFor more information, refer to the FAQ:\nFAQ for the statistics."</string>
     <!-- XTXT: Explanation screen seven day r-value link label  - the characters have to match the last part of the text label above -->
-    <string name="statistics_explanation_seven_day_r_link_label">"FAQ for the statistics."</string>
+    <string name="statistics_explanation_seven_day_r_link_label">"FAQ for the statistics"</string>
     <!-- XHED: Explanation screen legend title -->
     <string name="statistics_explanation_legend_title">"Legend"</string>
     <!-- XHED: Explanation screen period title -->
@@ -1622,8 +1626,6 @@
     <!-- NOTR -->
     <string name="test_api_button_check_exposure">"Check Exposure Summary"</string>
     <!-- NOTR -->
-    <string name="test_api_button_submit_keys">"Submit keys to Server"</string>
-    <!-- NOTR -->
     <string name="test_api_exposure_summary_headline">"Exposure Windows"</string>
     <!-- NOTR -->
     <string name="test_api_body_my_keys">"My keys (count: %1$d)"</string>
@@ -1768,9 +1770,8 @@
     <!-- XBUT: Abort button for test result positive no consent screen -->
     <string name="submission_test_result_positive_no_consent_button_abort">"Cancel"</string>
 
-    <!-- XTXT: Empty label for an activity -->
-    <string name="empty_string_to_avoid_toolbar_announcement" translatable="false">""</string>
-
+    <!-- XHED: Title of contact diary app shortcut -->
+    <string name="app_shortcut_contact_diary_title">"Eintrag hinzufügen"</string>
 
     <!-- XTXT: Statistics information (Accessibilty) -->
     <string name="statistics_info_button">"Further information"</string>
@@ -1788,87 +1789,113 @@
     <!-- XTXT: Statistics trend stable (Accessibilty) -->
     <string name="statistics_trend_stable">"Trend: Steady"</string>
     <!-- XHED: Title for BottomNav main screen title -->
-    <string name="bottom_nav_home_title">Home</string>
+    <string name="bottom_nav_home_title">"Start Screen"</string>
     <!-- XHED: Title for BottomNav diary screen title -->
-    <string name="bottom_nav_diary_title">Journal</string>
+    <string name="bottom_nav_diary_title">"Journal"</string>
 
     <!-- ####################################
-               Data Donation & Survey
-        ###################################### -->
+           Data Donation & Survey
+    ###################################### -->
 
     <!-- XHED: Title for the access survey card displayed in the risk details screen -->
-    <string name="datadonation_details_access_survey_card_title">"Befragung zur Corona-Warn-App"</string>
+    <string name="datadonation_details_access_survey_card_title">"Survey on Corona-Warn-App"</string>
     <!-- XHED: Text for the access survey card displayed in the risk details screen -->
-    <string name="datadonation_details_access_survey_card_content">"Helfen Sie uns, die App zu verbessern, indem Sie einige einfache Fragen beantworten."</string>
+    <string name="datadonation_details_access_survey_card_content">"Help us to improve the app by answering a few simple questions."</string>
     <!-- XHED: Text for the access survey card displayed in the risk details screen -->
-    <string name="datadonation_details_access_survey_card_button_text">"Zur Befragung"</string>
+    <string name="datadonation_details_access_survey_card_button_text">"Go To Survey"</string>
 
     <!-- XHED: Title for the access survey button displayed at the bottom of the screen -->
-    <string name="datadonation_details_survey_consent_button_title">"Einverstanden"</string>
+    <string name="datadonation_details_survey_consent_button_title">"Accept"</string>
     <!-- XHED: Text for the access survey title displayed at the top of survey consent screen -->
-    <string name="datadonation_details_survey_consent_top_title">"Befragung zur Verbesserung der Corona-Warn-App"</string>
+    <string name="datadonation_details_survey_consent_top_title">"Survey to Assess and Improve the Corona-Warn-App"</string>
     <!-- XHED: Text for the access survey body displayed under the title of survey consent screen -->
-    <string name="datadonation_details_survey_consent_top_body">"Mit Ihrer Teilnahme helfen Sie uns zu verstehen, wie sich Warnungen über die App auf das Verhalten von Personen mit erhöhtem Risiko auswirken."</string>
+    <string name="datadonation_details_survey_consent_top_body"><b>"Help us to improve the Corona-Warn-App by taking a survey on your experience with the app. This will help the RKI to assess the effectiveness of the app, improve the app, and understand how warnings delivered through the app affect the behavior of people with an increased risk."</b>"\n\nThe survey is intended only for people whose app has indicated an exposure with increased risk. The survey is taken on an RKI website. To forward you to the website, a survey link will be displayed in the next step. Before it is displayed, however, the authenticity of your app must be confirmed. This requires your consent.\n\nWhen you tap on the survey link, you will receive additional information about the survey. You will also be asked explicitly to grant your consent again before you start the survey."</string>
 
     <!-- XHED: Title of the survey consent detail screen -->
-    <string name="datadonation_details_survey_consent_details_title">"Ausführliche Informationen zur Datenverarbeitung bei der Teilnahme an der Befragung"</string>
-
-    <!-- ####################################
-        Data donation
-    ###################################### -->
+    <string name="datadonation_details_survey_consent_details_title">"Detailed Information on Data Processing Involved in Taking the Survey"</string>
+
+    <!-- XHED: Dialog error title for survey request error informations 1 -->
+    <string name="datadonation_details_survey_consent_error_CHANGE_DEVICE_TIME">"The time on your smartphone does not match the current time. Please correct the time in your smartphone settings (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 2-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_SUPPORTED">"The survey cannot be retrieved (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 3-->
+    <string name="datadonation_details_survey_consent_error_UPDATE_PLAY_SERVICES">"The survey cannot be retrieved right now. Please update the Google Play Services (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 4-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_LATER">"The survey cannot be retrieved right now. Please try again later (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 5-->
+    <string name="datadonation_details_survey_consent_error_TRY_AGAIN_NEXT_MONTH">"The survey cannot be retrieved due to security reasons. You can take the survey again in the next calendar month (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 6-->
+    <string name="datadonation_details_survey_consent_error_DEVICE_NOT_TRUSTED">"Thank you for wanting to help. Unfortunately, you use a smartphone that does not support the survey for technical reasons (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 7-->
+    <string name="datadonation_details_survey_consent_error_TIME_SINCE_ONBOARDING_UNVERIFIED">"For security reasons, you cannot take the survey less than 24 hours after you install or update the app (error code %1$s)."</string>
+    <!-- XHED: Dialog error title for survey request error informations 8-->
+    <string name="datadonation_details_survey_consent_error_ALREADY_PARTICIPATED">"You have already taken the survey. You can only take the survey once per month (error code %1$s)."</string>
+
+    <!-- XHED: Dialog error title for survey request error informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_title">"Error"</string>
+    <!-- XHED: Dialog error confirm button for survey request  informations dialog-->
+    <string name="datadonation_details_survey_consent_error_dialog_pos_button">"ok"</string>
+
+    <!-- XHED: Dialog progress message for survey request -->
+    <string name="datadonation_details_survey_consent_progress_dialog_msg">"Loading Survey…"</string>
+
+    <!-- XTXT: Title for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_title_below"><b>"About the RKI Survey"</b></string>
+    <!-- XHED: Text for the information below the box in the survey consent detail screen -->
+    <string name="datadonation_survey_consent_details_text_below">"After the authenticity of your app has been verified, the app forwards you to an RKI website, using a custom link to the survey that has been generated for you. This survey link contains a one-time password that is generated by your Corona-Warn-App. When you tap on the survey link and call the website with the survey, the one-time password is stored temporarily in your browser. This screen contains additional information about the survey and handling notes, such as how to start the survey. At the start of the survey, the one-time password is transmitted to the Corona-Warn-App servers, where it is flagged as used. The server then checks whether or not you can take the survey. This ensures that each user can only take the survey once."</string>
 
     <!-- XHED: Analytics voluntary user input, age group toolbar title -->
-    <string name="analytics_userinput_agegroup_title">Ihr Alter</string>
+    <string name="analytics_userinput_agegroup_title">"Your Age Group"</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_UNSPECIFIED -->
-    <string name="analytics_userinput_agegroup_unspecified">keine Angabe</string>
+    <string name="analytics_userinput_agegroup_unspecified">"No answer"</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_0_TO_29 -->
-    <string name="analytics_userinput_agegroup_0_to_29">bis 30 Jahre</string>
+    <string name="analytics_userinput_agegroup_0_to_29">"0-29 years old"</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_30_TO_59 -->
-    <string name="analytics_userinput_agegroup_30_to_59">30 bis 60</string>
+    <string name="analytics_userinput_agegroup_30_to_59">"30-59 years old"</string>
     <!-- XTXT: Analytics voluntary user input, age group: AGE_GROUP_FROM_60 -->
-    <string name="analytics_userinput_agegroup_from_60">60 oder älter</string>
+    <string name="analytics_userinput_agegroup_from_60">"60+ years old"</string>
 
     <!-- XHED: Analytics voluntary user input, federal state toolbar title -->
-    <string name="analytics_userinput_federalstate_title">Ihr Bundesland</string>
+    <string name="analytics_userinput_federalstate_title">"Your Federal State"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_UNSPECIFIED -->
-    <string name="analytics_userinput_federalstate_unspecified">keine Angabe</string>
+    <string name="analytics_userinput_federalstate_unspecified">"No answer"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BW -->
-    <string name="analytics_userinput_federalstate_bw">Baden-Württemberg</string>
+    <string name="analytics_userinput_federalstate_bw">"Baden-Württemberg"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BY -->
-    <string name="analytics_userinput_federalstate_by">Bayern</string>
+    <string name="analytics_userinput_federalstate_by">"Bavaria"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BE -->
-    <string name="analytics_userinput_federalstate_be">Berlin</string>
+    <string name="analytics_userinput_federalstate_be">"Berlin"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_BB -->
-    <string name="analytics_userinput_federalstate_bb">Brandenburg</string>
+    <string name="analytics_userinput_federalstate_bb">"Brandenburg"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HB -->
-    <string name="analytics_userinput_federalstate_hb">Bremen</string>
+    <string name="analytics_userinput_federalstate_hb">"Bremen"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HH -->
-    <string name="analytics_userinput_federalstate_hh">Hamburg</string>
+    <string name="analytics_userinput_federalstate_hh">"Hamburg"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_HE -->
-    <string name="analytics_userinput_federalstate_he">Hessen</string>
+    <string name="analytics_userinput_federalstate_he">"Hesse"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_MV -->
-    <string name="analytics_userinput_federalstate_mv">Mecklenburg-Vorpommern</string>
+    <string name="analytics_userinput_federalstate_mv">"Mecklenburg-Western Pomerania"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NI -->
-    <string name="analytics_userinput_federalstate_ni">Niedersachsen</string>
+    <string name="analytics_userinput_federalstate_ni">"Lower Saxony"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_NRW -->
-    <string name="analytics_userinput_federalstate_nrw">Nordrhein-Westfalen</string>
+    <string name="analytics_userinput_federalstate_nrw">"North Rhine-Westphalia"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_RP -->
-    <string name="analytics_userinput_federalstate_rp">Rheinland-Pfalz</string>
+    <string name="analytics_userinput_federalstate_rp">"Rhineland-Palatinate"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SL -->
-    <string name="analytics_userinput_federalstate_sl">Saarland</string>
+    <string name="analytics_userinput_federalstate_sl">"Saarland"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SN -->
-    <string name="analytics_userinput_federalstate_sn">Sachsen</string>
+    <string name="analytics_userinput_federalstate_sn">"Saxony"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_ST -->
-    <string name="analytics_userinput_federalstate_st">Sachsen-Anhalt</string>
+    <string name="analytics_userinput_federalstate_st">"Saxony-Anhalt"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_SH -->
-    <string name="analytics_userinput_federalstate_sh">Schleswig-Holstein</string>
+    <string name="analytics_userinput_federalstate_sh">"Schleswig-Holstein"</string>
     <!-- XTXT: Analytics voluntary user input, federal state: FEDERAL_STATE_TH -->
-    <string name="analytics_userinput_federalstate_th">Thüringen</string>
+    <string name="analytics_userinput_federalstate_th">"Thuringia"</string>
 
     <!-- XHED: Analytics voluntary user input, district toolbar title -->
-    <string name="analytics_userinput_district_title">Ihr Kreis/Bezirk</string>
+    <string name="analytics_userinput_district_title">"Your District (County)"</string>
     <!-- XTXT: Analytics voluntary user input, district: UNSPECIFIED -->
-    <string name="analytics_userinput_district_unspecified">keine Angabe</string>
+    <string name="analytics_userinput_district_unspecified">"No answer"</string>
 
     <!-- ####################################
        Duration dialog
diff --git a/Corona-Warn-App/src/main/res/values/styles.xml b/Corona-Warn-App/src/main/res/values/styles.xml
index 7c756e3d3e2e9fb2ab1091b54c28e10260ec29dd..03958da9288e050a5cd1727203a4c2683433120a 100644
--- a/Corona-Warn-App/src/main/res/values/styles.xml
+++ b/Corona-Warn-App/src/main/res/values/styles.xml
@@ -142,6 +142,7 @@
 
     <style name="switchBase" parent="Widget.AppCompat.CompoundButton.Switch">
         <item name="android:colorControlActivated">@color/colorAccentTintIcon</item>
+        <item name="colorControlActivated">@color/colorAccentTintIcon</item>
     </style>
 
     <!-- ####################################
@@ -152,9 +153,8 @@
         <item name="android:paddingTop">@dimen/button_padding_top_bottom</item>
         <item name="android:paddingEnd">@dimen/button_padding_start_end</item>
         <item name="android:paddingBottom">@dimen/button_padding_top_bottom</item>
-        <item name="android:elevation">@dimen/elevation_weak</item>
         <item name="android:textAllCaps">false</item>
-        <item name="android:background">@drawable/row</item>
+        <item name="android:background">?selectableItemBackground</item>
         <item name="android:textColor">@color/colorTextPrimary1</item>
     </style>
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CWAConfigMapperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CWAConfigMapperTest.kt
index e00fac30f6702938cdf8c17bbe19a3cded0ceea8..3e6b7ec3187450d1410836ad1928536ce90887af 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CWAConfigMapperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CWAConfigMapperTest.kt
@@ -73,10 +73,12 @@ class CWAConfigMapperTest : BaseTest() {
         val rawConfig = ApplicationConfigurationAndroid.newBuilder()
             .setAppFeatures(
                 AppFeatures.newBuilder().apply {
-                    addAppFeatures(AppFeature.newBuilder().apply {
-                        label = "disable-device-time-check"
-                        value = 1
-                    }.build())
+                    addAppFeatures(
+                        AppFeature.newBuilder().apply {
+                            label = "disable-device-time-check"
+                            value = 1
+                        }.build()
+                    )
                 }
             )
             .build()
@@ -90,10 +92,12 @@ class CWAConfigMapperTest : BaseTest() {
         val rawConfig = ApplicationConfigurationAndroid.newBuilder()
             .setAppFeatures(
                 AppFeatures.newBuilder().apply {
-                    addAppFeatures(AppFeature.newBuilder().apply {
-                        label = "disable-device-time-check"
-                        value = 0
-                    }.build())
+                    addAppFeatures(
+                        AppFeature.newBuilder().apply {
+                            label = "disable-device-time-check"
+                            value = 0
+                        }.build()
+                    )
                 }
             )
             .build()
@@ -107,10 +111,12 @@ class CWAConfigMapperTest : BaseTest() {
         val rawConfig = ApplicationConfigurationAndroid.newBuilder()
             .setAppFeatures(
                 AppFeatures.newBuilder().apply {
-                    addAppFeatures(AppFeature.newBuilder().apply {
-                        label = "disable-device-time-check"
-                        value = 99
-                    }.build())
+                    addAppFeatures(
+                        AppFeature.newBuilder().apply {
+                            label = "disable-device-time-check"
+                            value = 99
+                        }.build()
+                    )
                 }
             )
             .build()
@@ -152,10 +158,12 @@ class CWAConfigMapperTest : BaseTest() {
         val rawConfig = ApplicationConfigurationAndroid.newBuilder()
             .setAppFeatures(
                 AppFeatures.newBuilder().apply {
-                    addAppFeatures(AppFeature.newBuilder().apply {
-                        label = "disable-device-time-check"
-                        value = 0
-                    }.build())
+                    addAppFeatures(
+                        AppFeature.newBuilder().apply {
+                            label = "disable-device-time-check"
+                            value = 0
+                        }.build()
+                    )
                 }
             )
             .build()
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt
index a98862b7a816ab9647ca909d8579c2bcdd5ad0b3..87713174b430cf062b8cf1ca2540795f3baf31dd 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.appconfig.mapping
 
 import com.google.protobuf.InvalidProtocolBufferException
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
 import de.rki.coronawarnapp.appconfig.CWAConfig
 import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig
 import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig
@@ -28,6 +29,7 @@ class ConfigParserTest : BaseTest() {
     @MockK lateinit var exposureDetectionConfigMapper: ExposureDetectionConfig.Mapper
     @MockK lateinit var exposureWindowRiskCalculationConfigMapper: ExposureWindowRiskCalculationConfig.Mapper
     @MockK lateinit var surveyConfigMapper: SurveyConfig.Mapper
+    @MockK lateinit var analyticsConfigMapper: AnalyticsConfig.Mapper
 
     private val appConfig171 = File("src/test/resources/appconfig_1_7_1.bin")
     private val appConfig180 = File("src/test/resources/appconfig_1_8_0.bin")
@@ -41,6 +43,7 @@ class ConfigParserTest : BaseTest() {
         every { exposureDetectionConfigMapper.map(any()) } returns mockk()
         every { exposureWindowRiskCalculationConfigMapper.map(any()) } returns mockk()
         every { surveyConfigMapper.map(any()) } returns mockk()
+        every { analyticsConfigMapper.map(any()) } returns mockk()
 
         appConfig171.exists() shouldBe true
         appConfig180.exists() shouldBe true
@@ -56,7 +59,8 @@ class ConfigParserTest : BaseTest() {
         keyDownloadConfigMapper = keyDownloadConfigMapper,
         exposureDetectionConfigMapper = exposureDetectionConfigMapper,
         exposureWindowRiskCalculationConfigMapper = exposureWindowRiskCalculationConfigMapper,
-        surveyConfigMapper = surveyConfigMapper
+        surveyConfigMapper = surveyConfigMapper,
+        analyticsConfigMapper = analyticsConfigMapper
     )
 
     @Test
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt
index 9f565b91265f00367c3ea0aeef807765c79f73e7..2a21d798e23c7a76a303650af05b6607037dbdeb 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt
@@ -3,7 +3,7 @@ package de.rki.coronawarnapp.appconfig.sources.fallback
 import android.content.Context
 import android.os.Build
 import androidx.test.core.app.ApplicationProvider
-import de.rki.coronawarnapp.server.protocols.internal.AppConfig
+import com.google.protobuf.UnknownFieldSetLite
 import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid
 import de.rki.coronawarnapp.util.HashExtensions.toSHA256
 import io.kotest.assertions.throwables.shouldNotThrowAny
@@ -24,9 +24,6 @@ import testhelpers.EmptyApplication
 @RunWith(RobolectricTestRunner::class)
 class DefaultAppConfigSanityCheck : BaseTest() {
 
-    private val legacyConfigName = "default_app_config.bin"
-    private val legacyCheckSumName = "default_app_config.sha256"
-
     private val configName = "default_app_config_android.bin"
     private val checkSumName = "default_app_config_android.sha256"
 
@@ -47,7 +44,7 @@ class DefaultAppConfigSanityCheck : BaseTest() {
     fun `current default matches checksum`() {
         val config = context.assets.open(configName).readBytes()
         val sha256 = context.assets.open(checkSumName).readBytes().toString(Charsets.UTF_8)
-        sha256 shouldBe "827fb746a1128e465d65ec77030fdf38c823dec593ae18aed55195069cf8b701"
+        sha256 shouldBe "12d0b93c0c02c6870ef75c173a53a8ffb9cab6828fbf22e751053329c425eef2"
         config.toSHA256() shouldBe sha256
     }
 
@@ -55,23 +52,14 @@ class DefaultAppConfigSanityCheck : BaseTest() {
     fun `current default config can be parsed`() {
         shouldNotThrowAny {
             val config = context.assets.open(configName).readBytes()
-            AppConfigAndroid.ApplicationConfigurationAndroid.parseFrom(config) shouldNotBe null
-        }
-    }
+            val parsedConfig = AppConfigAndroid.ApplicationConfigurationAndroid.parseFrom(config)
+            parsedConfig shouldNotBe null
 
-    @Test
-    fun `legacy config - current default matches checksum`() {
-        val config = context.assets.open(legacyConfigName).readBytes()
-        val sha256 = context.assets.open(legacyCheckSumName).readBytes().toString(Charsets.UTF_8)
-        sha256 shouldBe "a562bf5940b8c149138634d313db69a298a50e8c52c0b42d18ddf608c385b598"
-        config.toSHA256() shouldBe sha256
-    }
-
-    @Test
-    fun `legacy config - current default config can be parsed`() {
-        shouldNotThrowAny {
-            val config = context.assets.open(legacyConfigName).readBytes()
-            AppConfig.ApplicationConfiguration.parseFrom(config) shouldNotBe null
+            val unknownFields = parsedConfig.javaClass.superclass!!.getDeclaredField("unknownFields").let {
+                it.isAccessible = true
+                it.get(parsedConfig) as UnknownFieldSetLite
+            }
+            unknownFields.serializedSize shouldBe 0
         }
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/local/AppConfigStorageTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/local/AppConfigStorageTest.kt
index 8696718e5bf785905a7726ad6367a8becebe99f7..1f0ebdfa6e71d241a6a36a12b7edc35a724b6eb2 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/local/AppConfigStorageTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/local/AppConfigStorageTest.kt
@@ -95,7 +95,7 @@ class AppConfigStorageTest : BaseIOTest() {
                 "localOffset": 3600000,
                 "cacheValidity": 123000
             }
-        """.trimIndent()
+            """.trimIndent()
         )
         val storage = createStorage()
         storage.getStoredConfig() shouldBe testConfigDownload
@@ -198,7 +198,7 @@ class AppConfigStorageTest : BaseIOTest() {
             {
                
             }
-        """.trimIndent()
+            """.trimIndent()
         )
         val storage = createStorage()
         storage.getStoredConfig() shouldBe null
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServerTest.kt
index 0f8ffbf264de186c3e27d9da686b3c13a431fa6b..0aa04e4b6b92038d48dab5aba3af316771f600c8 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServerTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/remote/AppConfigServerTest.kt
@@ -71,9 +71,12 @@ class AppConfigServerTest : BaseIOTest() {
         coEvery { api.getApplicationConfiguration() } returns Response.success(
             APPCONFIG_BUNDLE.toResponseBody(),
             Headers.headersOf(
-                "Date", "Tue, 03 Nov 2020 08:46:03 GMT",
-                "ETag", "I am an ETag :)!",
-                "Cache-Control", "public,max-age=123"
+                "Date",
+                "Tue, 03 Nov 2020 08:46:03 GMT",
+                "ETag",
+                "I am an ETag :)!",
+                "Cache-Control",
+                "public,max-age=123"
             )
         )
 
@@ -126,7 +129,8 @@ class AppConfigServerTest : BaseIOTest() {
         coEvery { api.getApplicationConfiguration() } returns Response.success(
             APPCONFIG_BUNDLE.toResponseBody(),
             Headers.headersOf(
-                "ETag", "I am an ETag :)!"
+                "ETag",
+                "I am an ETag :)!"
             )
         )
 
@@ -160,8 +164,10 @@ class AppConfigServerTest : BaseIOTest() {
         coEvery { api.getApplicationConfiguration() } returns Response.success(
             APPCONFIG_BUNDLE.toResponseBody(),
             Headers.headersOf(
-                "Date", "Tue, 03 Nov 2020 06:35:16 GMT",
-                "ETag", "I am an ETag :)!"
+                "Date",
+                "Tue, 03 Nov 2020 06:35:16 GMT",
+                "ETag",
+                "I am an ETag :)!"
             )
         )
         every { timeStamper.nowUTC } returns Instant.parse("2020-11-03T05:35:16.000Z")
@@ -182,8 +188,10 @@ class AppConfigServerTest : BaseIOTest() {
         coEvery { api.getApplicationConfiguration() } returns Response.success(
             APPCONFIG_BUNDLE.toResponseBody(),
             Headers.headersOf(
-                "Date", "Tue, 03 Nov 2020 06:35:16 GMT",
-                "ETag", "I am an ETag :)!"
+                "Date",
+                "Tue, 03 Nov 2020 06:35:16 GMT",
+                "ETag",
+                "I am an ETag :)!"
             )
         )
         every { timeStamper.nowUTC } returns Instant.parse("2020-11-03T05:35:16.000Z")
@@ -193,7 +201,7 @@ class AppConfigServerTest : BaseIOTest() {
         createInstance().downloadAppConfig() shouldBe InternalConfigData(
             rawData = APPCONFIG_RAW,
             serverTime = Instant.parse("2020-11-03T06:35:16.000Z"),
-            localOffset = Duration.standardMinutes(90),
+            localOffset = Duration.ZERO,
             etag = "I am an ETag :)!",
             cacheValidity = Duration.standardSeconds(300)
         )
@@ -204,8 +212,10 @@ class AppConfigServerTest : BaseIOTest() {
         coEvery { api.getApplicationConfiguration() } returns Response.success(
             APPCONFIG_BUNDLE.toResponseBody(),
             Headers.headersOf(
-                "Date", "Tue, 03 Nov 2020 06:35:16 GMT",
-                "ETag", "I am an ETag :)!"
+                "Date",
+                "Tue, 03 Nov 2020 06:35:16 GMT",
+                "ETag",
+                "I am an ETag :)!"
             )
         )
         every { timeStamper.nowUTC } returns Instant.parse("2020-11-03T05:35:16.000Z")
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/BugReporterTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/BugReporterTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..bab37d8a115cfd9bb161127c31c1b7b294a4315a
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/BugReporterTest.kt
@@ -0,0 +1,19 @@
+package de.rki.coronawarnapp.bugreporting
+
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+
+class BugReporterTest : BaseTest() {
+
+    @Test
+    fun `test emtpy tag`() {
+        // This just tests the timber statement
+        Exception().reportProblem(info = "info")
+    }
+
+    @Test
+    fun `test empty info and tag`() {
+        // This just tests the timber statement
+        Exception().reportProblem()
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryDataRetentionCalculationTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryDataRetentionCalculationTest.kt
index c119d903c05470f741d87d364307b69498c3904e..c11f9e440598251fd58644a132b2981523046ddd 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryDataRetentionCalculationTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/retention/ContactDiaryDataRetentionCalculationTest.kt
@@ -33,7 +33,8 @@ class ContactDiaryDataRetentionCalculationTest : BaseTest() {
     @MockK lateinit var contactDiaryRepository: DefaultContactDiaryRepository
     @MockK lateinit var riskLevelStorage: RiskLevelStorage
 
-    private val testDates = arrayListOf<String>("2020-08-20T14:00:00.000Z",
+    private val testDates = arrayListOf<String>(
+        "2020-08-20T14:00:00.000Z",
         "2020-08-20T13:00:00.000Z",
         "2020-08-19T14:00:00.000Z",
         "2020-08-05T14:00:00.000Z",
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/OneTimePasswordTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/OneTimePasswordTest.kt
index b8b9fda93b84e002cf8e02b10a5d943dc55a072e..6614c0122d97aee7ace11e468434195c22e4a0a0 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/OneTimePasswordTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/OneTimePasswordTest.kt
@@ -1,18 +1,24 @@
 package de.rki.coronawarnapp.datadonation
 
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtp
 import io.kotest.matchers.shouldBe
 import okio.ByteString.Companion.decodeBase64
-import org.junit.Test
+import org.junit.jupiter.api.Test
 import java.util.UUID
 
 class OneTimePasswordTest {
 
     @Test
     fun `payload generation`() {
-        val otpPayload =
-            OneTimePassword(UUID.fromString("15cff19f-af26-41bc-94f2-c1a65075e894"))
-                .payloadForRequest
-        val expected = "MTVjZmYxOWYtYWYyNi00MWJjLTk0ZjItYzFhNjUwNzVlODk0".decodeBase64()!!.toByteArray()
-        otpPayload shouldBe expected
+        val uuid = UUID.fromString("15cff19f-af26-41bc-94f2-c1a65075e894")
+        val otp = OneTimePassword(uuid)
+
+        val protoBuf = EdusOtp.EDUSOneTimePassword.newBuilder().setOtp(uuid.toString()).build()
+        val protoBufRaw = "CiQxNWNmZjE5Zi1hZjI2LTQxYmMtOTRmMi1jMWE2NTA3NWU4OTQ=".decodeBase64()!!.toByteArray()
+        otp.apply {
+            edusOneTimePassword shouldBe protoBuf
+            payloadForRequest shouldBe protoBuf.toByteArray()
+            payloadForRequest shouldBe protoBufRaw
+        }
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8e0a287eea637195612554a584d13361ebb4e88c
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/AnalyticsTest.kt
@@ -0,0 +1,462 @@
+package de.rki.coronawarnapp.datadonation.analytics
+
+import de.rki.coronawarnapp.appconfig.AnalyticsConfig
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import de.rki.coronawarnapp.appconfig.ConfigData
+import de.rki.coronawarnapp.appconfig.SafetyNetRequirements
+import de.rki.coronawarnapp.appconfig.SafetyNetRequirementsContainer
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.datadonation.analytics.modules.exposureriskmetadata.ExposureRiskMetadataDonor
+import de.rki.coronawarnapp.datadonation.analytics.modules.usermetadata.UserMetadataDonor
+import de.rki.coronawarnapp.datadonation.analytics.server.DataDonationAnalyticsServer
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.datadonation.analytics.storage.LastAnalyticsSubmissionLogger
+import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
+import de.rki.coronawarnapp.datadonation.safetynet.SafetyNetException
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaDataRequestAndroid
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpacAndroid
+import de.rki.coronawarnapp.storage.LocalData
+import de.rki.coronawarnapp.util.TimeStamper
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.Runs
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.coVerify
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.just
+import io.mockk.mockk
+import io.mockk.mockkObject
+import io.mockk.slot
+import io.mockk.spyk
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.test.runBlockingTest
+import org.joda.time.Days
+import org.joda.time.Instant
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import testhelpers.coroutines.runBlockingTest2
+import testhelpers.preferences.mockFlowPreference
+
+class AnalyticsTest : BaseTest() {
+    @MockK lateinit var dataDonationAnalyticsServer: DataDonationAnalyticsServer
+    @MockK lateinit var appConfigProvider: AppConfigProvider
+    @MockK lateinit var deviceAttestation: DeviceAttestation
+    @MockK lateinit var settings: AnalyticsSettings
+    @MockK lateinit var configData: ConfigData
+    @MockK lateinit var analyticsConfig: AnalyticsConfig
+    @MockK lateinit var exposureRiskMetadataDonor: ExposureRiskMetadataDonor
+    @MockK lateinit var lastAnalyticsSubmissionLogger: LastAnalyticsSubmissionLogger
+    @MockK lateinit var timeStamper: TimeStamper
+
+    private val baseTime: Instant = Instant.ofEpochMilli(0)
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        mockkObject(LocalData)
+
+        coEvery { appConfigProvider.getAppConfig() } returns configData
+        every { configData.analytics } returns analyticsConfig
+
+        coEvery { lastAnalyticsSubmissionLogger.storeAnalyticsData(any()) } just Runs
+
+        every { timeStamper.nowUTC } returns baseTime
+
+        every { analyticsConfig.analyticsEnabled } returns true
+
+        every { settings.analyticsEnabled } returns mockFlowPreference(true)
+        every { analyticsConfig.probabilityToSubmit } returns 1.0
+
+        val twoDaysAgo = baseTime.minus(Days.TWO.toStandardDuration())
+        every { settings.lastSubmittedTimestamp } returns mockFlowPreference(twoDaysAgo)
+        every { LocalData.onboardingCompletedTimestamp() } returns twoDaysAgo.millis
+
+        every { analyticsConfig.safetyNetRequirements } returns SafetyNetRequirementsContainer()
+
+        coEvery { dataDonationAnalyticsServer.uploadAnalyticsData(any()) } just Runs
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    private fun createInstance(modules: Set<DonorModule> = setOf(exposureRiskMetadataDonor)) = spyk(
+        Analytics(
+            dataDonationAnalyticsServer = dataDonationAnalyticsServer,
+            appConfigProvider = appConfigProvider,
+            deviceAttestation = deviceAttestation,
+            donorModules = modules,
+            settings = settings,
+            logger = lastAnalyticsSubmissionLogger,
+            timeStamper = timeStamper
+        )
+    )
+
+    @Test
+    fun `abort due to no app config`() {
+        every { analyticsConfig.analyticsEnabled } returns false
+
+        val analytics = createInstance()
+
+        runBlockingTest2 {
+            val result = analytics.submitIfWanted()
+            result.apply {
+                successful shouldBe false
+                shouldRetry shouldBe false
+            }
+        }
+
+        coVerify(exactly = 1) {
+            analytics.stopDueToNoAnalyticsConfig(analyticsConfig)
+        }
+
+        coVerify(exactly = 0) {
+            analytics.submitAnalyticsData(configData)
+            analytics.stopDueToNoUserConsent()
+        }
+    }
+
+    @Test
+    fun `abort due to no user consent`() {
+        every { settings.analyticsEnabled } returns mockFlowPreference(false)
+
+        val analytics = createInstance()
+
+        runBlockingTest2 {
+            val result = analytics.submitIfWanted()
+            result.apply {
+                successful shouldBe false
+                shouldRetry shouldBe false
+            }
+        }
+
+        coVerify(exactly = 1) {
+            analytics.stopDueToNoAnalyticsConfig(analyticsConfig)
+            analytics.stopDueToNoUserConsent()
+        }
+
+        coVerify(exactly = 0) {
+            analytics.submitAnalyticsData(configData)
+            analytics.stopDueToProbabilityToSubmit(analyticsConfig)
+        }
+    }
+
+    @Test
+    fun `abort due to submit probability`() {
+        every { analyticsConfig.probabilityToSubmit } returns 0.0
+
+        val analytics = createInstance()
+
+        runBlockingTest2 {
+            val result = analytics.submitIfWanted()
+            result.apply {
+                successful shouldBe false
+                shouldRetry shouldBe false
+            }
+        }
+
+        coVerify(exactly = 1) {
+            analytics.stopDueToNoAnalyticsConfig(analyticsConfig)
+            analytics.stopDueToNoUserConsent()
+            analytics.stopDueToProbabilityToSubmit(analyticsConfig)
+        }
+
+        coVerify(exactly = 0) {
+            analytics.submitAnalyticsData(configData)
+            analytics.stopDueToLastSubmittedTimestamp()
+        }
+    }
+
+    @Test
+    fun `abort due to last submit timestamp`() {
+        every { settings.lastSubmittedTimestamp } returns mockFlowPreference(Instant.now())
+
+        val analytics = createInstance()
+
+        runBlockingTest2 {
+            val result = analytics.submitIfWanted()
+            result.apply {
+                successful shouldBe false
+                shouldRetry shouldBe false
+            }
+        }
+
+        coVerify(exactly = 1) {
+            analytics.stopDueToNoAnalyticsConfig(analyticsConfig)
+            analytics.stopDueToNoUserConsent()
+            analytics.stopDueToProbabilityToSubmit(analyticsConfig)
+            analytics.stopDueToLastSubmittedTimestamp()
+        }
+
+        coVerify(exactly = 0) {
+            analytics.submitAnalyticsData(configData)
+            analytics.stopDueToTimeSinceOnboarding()
+        }
+    }
+
+    @Test
+    fun `abort due to time since onboarding`() {
+        every { LocalData.onboardingCompletedTimestamp() } returns baseTime.millis
+
+        val analytics = createInstance()
+
+        runBlockingTest2 {
+            val result = analytics.submitIfWanted()
+            result.apply {
+                successful shouldBe false
+                shouldRetry shouldBe false
+            }
+        }
+
+        coVerify(exactly = 1) {
+            analytics.stopDueToNoAnalyticsConfig(analyticsConfig)
+            analytics.stopDueToNoUserConsent()
+            analytics.stopDueToProbabilityToSubmit(analyticsConfig)
+            analytics.stopDueToLastSubmittedTimestamp()
+            analytics.stopDueToTimeSinceOnboarding()
+        }
+
+        coVerify(exactly = 0) {
+            analytics.submitAnalyticsData(configData)
+        }
+    }
+
+    @Test
+    fun `submit analytics data`() {
+        val metadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+            .setMostRecentDateAtRiskLevel(baseTime.millis)
+            .setDateChangedComparedToPreviousSubmission(true)
+            .setRiskLevelChangedComparedToPreviousSubmission(true)
+            .build()
+
+        val payload = PpaData.PPADataAndroid.newBuilder()
+            .addExposureRiskMetadataSet(metadata)
+            .build()
+
+        val analyticsRequest = PpaDataRequestAndroid.PPADataRequestAndroid.newBuilder()
+            .setPayload(payload)
+            .setAuthentication(PpacAndroid.PPACAndroid.getDefaultInstance())
+            .build()
+
+        val donationRequestSlot = slot<DonorModule.Request>()
+        coEvery { exposureRiskMetadataDonor.beginDonation(capture(donationRequestSlot)) } returns
+            ExposureRiskMetadataDonor.ExposureRiskMetadataContribution(
+                contributionProto = metadata,
+                onContributionFinished = {}
+            )
+
+        coEvery { deviceAttestation.attest(any()) } returns
+            object : DeviceAttestation.Result {
+                override val accessControlProtoBuf: PpacAndroid.PPACAndroid
+                    get() = PpacAndroid.PPACAndroid.getDefaultInstance()
+
+                override fun requirePass(requirements: SafetyNetRequirements) {}
+            }
+
+        val analytics = createInstance()
+
+        runBlockingTest2 {
+            val result = analytics.submitIfWanted()
+            result.apply {
+                successful shouldBe true
+                shouldRetry shouldBe false
+            }
+        }
+
+        donationRequestSlot.captured.currentConfig shouldBe configData
+
+        coVerify(exactly = 1) {
+            analytics.submitAnalyticsData(configData)
+            dataDonationAnalyticsServer.uploadAnalyticsData(analyticsRequest)
+        }
+    }
+
+    @Test
+    fun `despite error on beginDonation modules can still cleanup`() {
+        val userMetadataDonor = mockk<UserMetadataDonor>().apply {
+            coEvery { beginDonation(any()) } throws Exception("KABOOM!")
+        }
+        val modules = setOf(exposureRiskMetadataDonor, userMetadataDonor)
+
+        val mockExposureRisk = mockk<DonorModule.Contribution>().apply {
+            coEvery { injectData(any()) } just Runs
+            coEvery { finishDonation(any()) } just Runs
+        }
+        coEvery { exposureRiskMetadataDonor.beginDonation(any()) } returns mockExposureRisk
+
+        coEvery { deviceAttestation.attest(any()) } returns object : DeviceAttestation.Result {
+            override val accessControlProtoBuf: PpacAndroid.PPACAndroid
+                get() = PpacAndroid.PPACAndroid.getDefaultInstance()
+
+            override fun requirePass(requirements: SafetyNetRequirements) {}
+        }
+
+        val analytics = createInstance(modules = modules)
+
+        runBlockingTest {
+            analytics.submitIfWanted()
+        }
+
+        coVerify(exactly = 1) {
+            userMetadataDonor.beginDonation(any())
+
+            exposureRiskMetadataDonor.beginDonation(any())
+            mockExposureRisk.injectData(any())
+            mockExposureRisk.finishDonation(true)
+
+            analytics.submitAnalyticsData(any())
+        }
+    }
+
+    @Test
+    fun `despite errors during donation modules can still cleanup`() {
+        val userMetaDataDonation = mockk<DonorModule.Contribution>().apply {
+            coEvery { injectData(any()) } throws Exception("KAPOW!")
+            coEvery { finishDonation(any()) } throws Exception("CRUNCH!")
+        }
+        val userMetadataDonor = mockk<UserMetadataDonor>().apply {
+            coEvery { beginDonation(any()) } returns userMetaDataDonation
+        }
+        val modules = setOf(exposureRiskMetadataDonor, userMetadataDonor)
+
+        val exposureRiskDonation = mockk<ExposureRiskMetadataDonor.ExposureRiskMetadataContribution>().apply {
+            coEvery { injectData(any()) } just Runs
+            coEvery { finishDonation(any()) } just Runs
+        }
+        coEvery { exposureRiskMetadataDonor.beginDonation(any()) } returns exposureRiskDonation
+
+        coEvery { deviceAttestation.attest(any()) } returns object : DeviceAttestation.Result {
+            override val accessControlProtoBuf: PpacAndroid.PPACAndroid
+                get() = PpacAndroid.PPACAndroid.getDefaultInstance()
+
+            override fun requirePass(requirements: SafetyNetRequirements) {}
+        }
+
+        val analytics = createInstance(modules = modules)
+
+        runBlockingTest {
+            analytics.submitIfWanted()
+        }
+
+        coVerify(exactly = 1) {
+            exposureRiskMetadataDonor.beginDonation(any())
+            exposureRiskDonation.injectData(any())
+            exposureRiskDonation.finishDonation(true)
+
+            userMetadataDonor.beginDonation(any())
+            userMetaDataDonation.injectData(any())
+            userMetaDataDonation.finishDonation(true)
+
+            analytics.submitAnalyticsData(any())
+        }
+    }
+
+    @Test
+    fun `we catch safetynet timeout and enable retry`() {
+        val exposureRiskDonation = mockk<ExposureRiskMetadataDonor.ExposureRiskMetadataContribution>().apply {
+            coEvery { injectData(any()) } just Runs
+            coEvery { finishDonation(any()) } just Runs
+        }
+        coEvery { exposureRiskMetadataDonor.beginDonation(any()) } returns exposureRiskDonation
+
+        coEvery { deviceAttestation.attest(any()) } throws SafetyNetException(
+            type = SafetyNetException.Type.ATTESTATION_REQUEST_FAILED,
+            "Timeout???",
+            cause = Exception()
+        )
+
+        val analytics = createInstance()
+
+        runBlockingTest {
+            val result = analytics.submitIfWanted()
+            result.successful shouldBe false
+            result.shouldRetry shouldBe true
+        }
+
+        coVerify(exactly = 1) {
+            exposureRiskMetadataDonor.beginDonation(any())
+            exposureRiskDonation.injectData(any())
+            exposureRiskDonation.finishDonation(false)
+        }
+
+        coVerify(exactly = 0) { dataDonationAnalyticsServer.uploadAnalyticsData(any()) }
+    }
+
+    @Test
+    fun `overall submission can timeout on safetynet and still allow modules to cleanup`() {
+        val exposureRiskDonation = mockk<ExposureRiskMetadataDonor.ExposureRiskMetadataContribution>().apply {
+            coEvery { injectData(any()) } just Runs
+            coEvery { finishDonation(any()) } just Runs
+        }
+        coEvery { exposureRiskMetadataDonor.beginDonation(any()) } returns exposureRiskDonation
+
+        coEvery { deviceAttestation.attest(any()) } coAnswers {
+            // Timeout should be 360s
+            delay(370_000)
+            mockk()
+        }
+
+        val analytics = createInstance()
+
+        runBlockingTest {
+            val result = analytics.submitIfWanted()
+            result.successful shouldBe false
+            result.shouldRetry shouldBe true
+        }
+
+        coVerify(exactly = 1) {
+            exposureRiskMetadataDonor.beginDonation(any())
+            exposureRiskDonation.injectData(any())
+            exposureRiskDonation.finishDonation(false)
+        }
+
+        coVerify(exactly = 0) {
+            dataDonationAnalyticsServer.uploadAnalyticsData(any())
+        }
+    }
+
+    @Test
+    fun `overall submission can timeout on upload and still allow modules to cleanup`() {
+        val exposureRiskDonation = mockk<ExposureRiskMetadataDonor.ExposureRiskMetadataContribution>().apply {
+            coEvery { injectData(any()) } just Runs
+            coEvery { finishDonation(any()) } just Runs
+        }
+        coEvery { exposureRiskMetadataDonor.beginDonation(any()) } returns exposureRiskDonation
+
+        coEvery { deviceAttestation.attest(any()) } returns object : DeviceAttestation.Result {
+            override val accessControlProtoBuf: PpacAndroid.PPACAndroid
+                get() = PpacAndroid.PPACAndroid.getDefaultInstance()
+
+            override fun requirePass(requirements: SafetyNetRequirements) {}
+        }
+
+        coEvery { dataDonationAnalyticsServer.uploadAnalyticsData(any()) } coAnswers {
+            // Timeout should be 360s
+            delay(370_000)
+            mockk()
+        }
+
+        val analytics = createInstance()
+
+        runBlockingTest {
+            val result = analytics.submitIfWanted()
+            result.successful shouldBe false
+            result.shouldRetry shouldBe true
+        }
+
+        coVerify(exactly = 1) {
+            exposureRiskMetadataDonor.beginDonation(any())
+            exposureRiskDonation.injectData(any())
+            exposureRiskDonation.finishDonation(false)
+            dataDonationAnalyticsServer.uploadAnalyticsData(any())
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/common/DistrictsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/common/DistrictsTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..92f921a58194c988fd66b9c74aa920c4493177df
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/common/DistrictsTest.kt
@@ -0,0 +1,72 @@
+package de.rki.coronawarnapp.datadonation.analytics.common
+
+import android.content.Context
+import android.os.Build
+import androidx.test.core.app.ApplicationProvider
+import com.google.gson.Gson
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import kotlinx.coroutines.test.runBlockingTest
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+import testhelpers.BaseTest
+import testhelpers.EmptyApplication
+
+@Config(sdk = [Build.VERSION_CODES.P], application = EmptyApplication::class)
+@RunWith(RobolectricTestRunner::class)
+class DistrictsTest : BaseTest() {
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this)
+    }
+
+    @After
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    val context: Context
+        get() = ApplicationProvider.getApplicationContext()
+
+    fun createInstance() = Districts(
+        context = context,
+        gson = Gson()
+    )
+
+    @Test
+    fun `loading from assets and parsing`() = runBlockingTest {
+        val districts = createInstance().loadDistricts()
+        districts.size shouldBe 412
+        districts.last() shouldBe Districts.District(
+            districtName = "Weimar",
+            districtShortName = "WE",
+            districtId = 11016055,
+            federalStateName = "Thüringen",
+            federalStateShortName = "TH",
+            federalStateId = 13000016
+        )
+    }
+
+    @Test
+    fun `districts have only known short names for federal states`() = runBlockingTest {
+        val districts = createInstance().loadDistricts()
+
+        val stateCodesInDistricts = mutableSetOf<String>()
+        districts.forEach { stateCodesInDistricts.add(it.federalStateShortName) }
+
+        val knownFederalStates = PpaData.PPAFederalState.values().filterNot {
+            it == PpaData.PPAFederalState.UNRECOGNIZED || it == PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+        }
+
+        stateCodesInDistricts.size shouldBe knownFederalStates.size
+
+        stateCodesInDistricts.sorted() shouldBe knownFederalStates.map { it.federalStateShortName }.sorted()
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/common/PpaDataExtensionsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/common/PpaDataExtensionsTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e189bf3933a15a736213cf6371c8dd9ec56c5904
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/common/PpaDataExtensionsTest.kt
@@ -0,0 +1,29 @@
+package de.rki.coronawarnapp.datadonation.analytics.common
+
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import io.kotest.matchers.shouldBe
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+
+class PpaDataExtensionsTest : BaseTest() {
+
+    @Test
+    fun `federal state to short code mapping`() {
+        PpaData.PPAFederalState.FEDERAL_STATE_BW.federalStateShortName shouldBe "BW"
+        PpaData.PPAFederalState.FEDERAL_STATE_BY.federalStateShortName shouldBe "BY"
+        PpaData.PPAFederalState.FEDERAL_STATE_BE.federalStateShortName shouldBe "BE"
+        PpaData.PPAFederalState.FEDERAL_STATE_BB.federalStateShortName shouldBe "BB"
+        PpaData.PPAFederalState.FEDERAL_STATE_HB.federalStateShortName shouldBe "HB"
+        PpaData.PPAFederalState.FEDERAL_STATE_HH.federalStateShortName shouldBe "HH"
+        PpaData.PPAFederalState.FEDERAL_STATE_HE.federalStateShortName shouldBe "HE"
+        PpaData.PPAFederalState.FEDERAL_STATE_MV.federalStateShortName shouldBe "MV"
+        PpaData.PPAFederalState.FEDERAL_STATE_NI.federalStateShortName shouldBe "NI"
+        PpaData.PPAFederalState.FEDERAL_STATE_NRW.federalStateShortName shouldBe "NW"
+        PpaData.PPAFederalState.FEDERAL_STATE_RP.federalStateShortName shouldBe "RP"
+        PpaData.PPAFederalState.FEDERAL_STATE_SL.federalStateShortName shouldBe "SL"
+        PpaData.PPAFederalState.FEDERAL_STATE_SN.federalStateShortName shouldBe "SN"
+        PpaData.PPAFederalState.FEDERAL_STATE_ST.federalStateShortName shouldBe "ST"
+        PpaData.PPAFederalState.FEDERAL_STATE_SH.federalStateShortName shouldBe "SH"
+        PpaData.PPAFederalState.FEDERAL_STATE_TH.federalStateShortName shouldBe "TH"
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e035de7690afb38099a650787a634fd2d71d566b
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt
@@ -0,0 +1,159 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules
+
+import com.google.android.gms.nearby.exposurenotification.ExposureWindow
+import de.rki.coronawarnapp.appconfig.ConfigData
+import de.rki.coronawarnapp.datadonation.analytics.modules.exposureriskmetadata.ExposureRiskMetadataDonor
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.risk.RiskLevelResult
+import de.rki.coronawarnapp.risk.result.AggregatedRiskResult
+import de.rki.coronawarnapp.risk.storage.RiskLevelStorage
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.seconds
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.mockk
+import kotlinx.coroutines.flow.flowOf
+import org.joda.time.Instant
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import testhelpers.coroutines.runBlockingTest2
+import testhelpers.preferences.mockFlowPreference
+
+class ExposureRiskMetadataDonorTest : BaseTest() {
+    @MockK lateinit var riskLevelStorage: RiskLevelStorage
+    @MockK lateinit var analyticsSettings: AnalyticsSettings
+    @MockK lateinit var highAggregatedRiskResult: AggregatedRiskResult
+    @MockK lateinit var lowAggregatedRiskResult: AggregatedRiskResult
+
+    private val baseDate: Instant = Instant.ofEpochMilli(101010)
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        every { highAggregatedRiskResult.isIncreasedRisk() } returns true
+        every { highAggregatedRiskResult.mostRecentDateWithHighRisk } returns baseDate
+        every { lowAggregatedRiskResult.isIncreasedRisk() } returns false
+        every { lowAggregatedRiskResult.mostRecentDateWithHighRisk } returns baseDate
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    private fun createRiskLevelResult(
+        aggregatedRiskResult: AggregatedRiskResult?,
+        failureReason: RiskLevelResult.FailureReason?,
+        calculatedAt: Instant
+    ): RiskLevelResult = object : RiskLevelResult {
+        override val calculatedAt: Instant = calculatedAt
+        override val aggregatedRiskResult: AggregatedRiskResult? = aggregatedRiskResult
+        override val failureReason: RiskLevelResult.FailureReason? = failureReason
+        override val exposureWindows: List<ExposureWindow>? = null
+        override val matchedKeyCount: Int = 0
+        override val daysWithEncounters: Int = 0
+    }
+
+    private fun createInstance() = ExposureRiskMetadataDonor(
+        riskLevelStorage = riskLevelStorage,
+        analyticsSettings = analyticsSettings
+    )
+
+    @Test
+    fun `risk metadata is properly collected`() {
+        val expectedMetadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+            .setMostRecentDateAtRiskLevel(baseDate.seconds)
+            .setRiskLevelChangedComparedToPreviousSubmission(true)
+            .setDateChangedComparedToPreviousSubmission(true)
+            .build()
+
+        every { analyticsSettings.previousExposureRiskMetadata } returns mockFlowPreference(null)
+        every { riskLevelStorage.latestAndLastSuccessful } returns flowOf(
+            listOf(
+                createRiskLevelResult(
+                    aggregatedRiskResult = highAggregatedRiskResult,
+                    failureReason = null,
+                    calculatedAt = baseDate
+                ),
+                createRiskLevelResult(
+                    aggregatedRiskResult = lowAggregatedRiskResult,
+                    failureReason = RiskLevelResult.FailureReason.UNKNOWN,
+                    calculatedAt = baseDate
+                )
+            )
+        )
+
+        val parentBuilder = PpaData.PPADataAndroid.newBuilder()
+
+        runBlockingTest2 {
+            val contribution = createInstance().beginDonation(
+                object : DonorModule.Request {
+                    override val currentConfig: ConfigData = mockk()
+                }
+            )
+            contribution.injectData(parentBuilder)
+            contribution.finishDonation(true)
+        }
+
+        val parentProto = parentBuilder.build()
+
+        parentProto.exposureRiskMetadataSetList[0] shouldBe expectedMetadata
+    }
+
+    @Test
+    fun `risk metadata change is properly collected`() {
+        val initialMetadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+            .setMostRecentDateAtRiskLevel(baseDate.seconds)
+            .setRiskLevelChangedComparedToPreviousSubmission(true)
+            .setDateChangedComparedToPreviousSubmission(true)
+            .build()
+
+        val expectedMetadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+            .setMostRecentDateAtRiskLevel(baseDate.seconds)
+            .setRiskLevelChangedComparedToPreviousSubmission(false)
+            .setDateChangedComparedToPreviousSubmission(false)
+            .build()
+
+        every { analyticsSettings.previousExposureRiskMetadata } returns mockFlowPreference(initialMetadata)
+
+        every { riskLevelStorage.latestAndLastSuccessful } returns flowOf(
+            listOf(
+                createRiskLevelResult(
+                    aggregatedRiskResult = highAggregatedRiskResult,
+                    failureReason = null,
+                    calculatedAt = baseDate
+                ),
+                createRiskLevelResult(
+                    aggregatedRiskResult = lowAggregatedRiskResult,
+                    failureReason = RiskLevelResult.FailureReason.UNKNOWN,
+                    calculatedAt = baseDate
+                )
+            )
+        )
+
+        val parentBuilder = PpaData.PPADataAndroid.newBuilder()
+
+        runBlockingTest2 {
+            val contribution = createInstance().beginDonation(
+                object : DonorModule.Request {
+                    override val currentConfig: ConfigData = mockk()
+                }
+            )
+            contribution.injectData(parentBuilder)
+            contribution.finishDonation(true)
+        }
+
+        val parentProto = parentBuilder.build()
+
+        parentProto.exposureRiskMetadataSetList[0] shouldBe expectedMetadata
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/clientmetadata/ClientMetadataDonorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/clientmetadata/ClientMetadataDonorTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b3b262d2539f79fb470db185316c559f8c44c34a
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/clientmetadata/ClientMetadataDonorTest.kt
@@ -0,0 +1,90 @@
+package de.rki.coronawarnapp.datadonation.analytics.modules.clientmetadata
+
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import de.rki.coronawarnapp.appconfig.ConfigData
+import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
+import de.rki.coronawarnapp.environment.BuildConfigWrap
+import de.rki.coronawarnapp.nearby.ENFClient
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.util.ApiLevel
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.mockk
+import io.mockk.mockkObject
+import kotlinx.coroutines.flow.flowOf
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import testhelpers.coroutines.runBlockingTest2
+
+class ClientMetadataDonorTest : BaseTest() {
+    @MockK lateinit var apiLevel: ApiLevel
+    @MockK lateinit var appConfigProvider: AppConfigProvider
+    @MockK lateinit var configData: ConfigData
+    @MockK lateinit var enfClient: ENFClient
+
+    private val eTag = "testETag"
+    private val enfVersion = 1611L
+    private val androidVersionCode = 42L
+
+    private val versionMajor = 1
+    private val versionMinor = 11
+    private val versionPatch = 1
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        mockkObject(BuildConfigWrap)
+        every { BuildConfigWrap.VERSION_MAJOR } returns versionMajor
+        every { BuildConfigWrap.VERSION_MINOR } returns versionMinor
+        every { BuildConfigWrap.VERSION_PATCH } returns versionPatch
+
+        every { apiLevel.currentLevel } returns androidVersionCode.toInt()
+        every { configData.identifier } returns eTag
+        coEvery { appConfigProvider.currentConfig } returns flowOf(configData)
+        coEvery { enfClient.getENFClientVersion() } returns enfVersion
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    private fun createInstance() = ClientMetadataDonor(
+        apiLevel = apiLevel,
+        appConfigProvider = appConfigProvider,
+        enfClient = enfClient
+    )
+
+    @Test
+    fun `client metadata is properly collected`() {
+        val version = ClientMetadataDonor.ClientVersion().toPPASemanticVersion()
+
+        val expectedMetadata = PpaData.PPAClientMetadataAndroid.newBuilder()
+            .setAppConfigETag(eTag)
+            .setEnfVersion(enfVersion)
+            .setCwaVersion(version)
+            .setAndroidApiLevel(androidVersionCode)
+            .build()
+
+        val parentBuilder = PpaData.PPADataAndroid.newBuilder()
+
+        runBlockingTest2 {
+            val contribution = createInstance().beginDonation(object : DonorModule.Request {
+                override val currentConfig: ConfigData = mockk()
+            })
+            contribution.injectData(parentBuilder)
+            contribution.finishDonation(true)
+        }
+
+        val parentProto = parentBuilder.build()
+
+        parentProto.clientMetadata shouldBe expectedMetadata
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsApiV1Test.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsApiV1Test.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7aa3703f0b698b2ec619fb0e5af5e9105c18387b
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsApiV1Test.kt
@@ -0,0 +1,83 @@
+package de.rki.coronawarnapp.datadonation.analytics.server
+
+import de.rki.coronawarnapp.datadonation.analytics.AnalyticsModule
+import de.rki.coronawarnapp.http.HttpModule
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaDataRequestAndroid
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpacAndroid
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import kotlinx.coroutines.runBlocking
+import okhttp3.mockwebserver.MockResponse
+import okhttp3.mockwebserver.MockWebServer
+import org.joda.time.Instant
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import java.util.concurrent.TimeUnit
+
+class DataDonationAnalyticsApiV1Test : BaseTest() {
+    private lateinit var webServer: MockWebServer
+    private lateinit var serverAddress: String
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        webServer = MockWebServer()
+        webServer.start()
+        serverAddress = "http://${webServer.hostName}:${webServer.port}"
+    }
+
+    @AfterEach
+    fun teardown() {
+        clearAllMocks()
+        webServer.shutdown()
+    }
+
+    private fun createAPI(): DataDonationAnalyticsApiV1 {
+        val httpModule = HttpModule()
+        val defaultHttpClient = httpModule.defaultHttpClient()
+
+        return AnalyticsModule().provideAnalyticsSubmissionApi(
+            client = defaultHttpClient,
+            url = serverAddress,
+            gsonConverterFactory = httpModule.provideGSONConverter(),
+            protoConverterFactory = httpModule.provideProtoConverter()
+        )
+    }
+
+    @Test
+    fun `test submitAndroidAnalytics`(): Unit = runBlocking {
+        val api = createAPI()
+
+        val baseTime = Instant.ofEpochMilli(0)
+
+        val metadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+            .setMostRecentDateAtRiskLevel(baseTime.millis)
+            .setDateChangedComparedToPreviousSubmission(true)
+            .setRiskLevelChangedComparedToPreviousSubmission(true)
+            .build()
+
+        val payload = PpaData.PPADataAndroid.newBuilder()
+            .addExposureRiskMetadataSet(metadata)
+            .build()
+
+        val analyticsRequest = PpaDataRequestAndroid.PPADataRequestAndroid.newBuilder()
+            .setPayload(payload)
+            .setAuthentication(PpacAndroid.PPACAndroid.getDefaultInstance())
+            .build()
+
+        webServer.enqueue(MockResponse().setResponseCode(204))
+
+        api.submitAndroidAnalytics(analyticsRequest)
+
+        webServer.takeRequest(5, TimeUnit.SECONDS)!!.apply {
+            path shouldBe "/version/v1/android/dat"
+            body.readByteArray() shouldBe analyticsRequest.toByteArray()
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsServerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsServerTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6010d15341d75818586056a86a9944e1b36d1890
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/server/DataDonationAnalyticsServerTest.kt
@@ -0,0 +1,88 @@
+package de.rki.coronawarnapp.datadonation.analytics.server
+
+import android.content.Context
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaDataRequestAndroid
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpacAndroid
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.coVerify
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import kotlinx.coroutines.runBlocking
+import okhttp3.mockwebserver.MockWebServer
+import org.joda.time.Instant
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import retrofit2.Response
+import testhelpers.BaseIOTest
+import testhelpers.BaseTest
+import java.io.File
+
+class DataDonationAnalyticsServerTest : BaseTest() {
+    @MockK lateinit var donationApi: DataDonationAnalyticsApiV1
+    @MockK lateinit var context: Context
+
+    private lateinit var webServer: MockWebServer
+    private lateinit var serverAddress: String
+
+    private val testDir = File(BaseIOTest.IO_TEST_BASEDIR, this::class.java.simpleName)
+    private val cacheDir = File(testDir, "cache")
+    private val httpCacheDir = File(cacheDir, "http_submission")
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+        testDir.mkdirs()
+        testDir.exists() shouldBe true
+        every { context.cacheDir } returns cacheDir
+
+        webServer = MockWebServer()
+        webServer.start()
+        serverAddress = "http://${webServer.hostName}:${webServer.port}"
+    }
+
+    @AfterEach
+    fun teardown() {
+        clearAllMocks()
+        webServer.shutdown()
+        testDir.deleteRecursively()
+    }
+
+    private fun createServer(
+        customApi: DataDonationAnalyticsApiV1 = donationApi
+    ) = DataDonationAnalyticsServer(api = { customApi })
+
+    @Test
+    fun `normal submission`(): Unit = runBlocking {
+        val server = createServer()
+
+        val baseTime = Instant.ofEpochMilli(0)
+
+        val metadata = PpaData.ExposureRiskMetadata.newBuilder()
+            .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+            .setMostRecentDateAtRiskLevel(baseTime.millis)
+            .setDateChangedComparedToPreviousSubmission(true)
+            .setRiskLevelChangedComparedToPreviousSubmission(true)
+            .build()
+
+        val payload = PpaData.PPADataAndroid.newBuilder()
+            .addExposureRiskMetadataSet(metadata)
+            .build()
+
+        val analyticsRequest = PpaDataRequestAndroid.PPADataRequestAndroid.newBuilder()
+            .setPayload(payload)
+            .setAuthentication(PpacAndroid.PPACAndroid.getDefaultInstance())
+            .build()
+
+        coEvery { donationApi.submitAndroidAnalytics(analyticsRequest) } returns
+            Response.success(204, DataDonationAnalyticsApiV1.DataDonationAnalyticsResponse(""))
+
+        server.uploadAnalyticsData(analyticsRequest)
+
+        coVerify { donationApi.submitAndroidAnalytics(analyticsRequest) }
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/ui/AnalyticsSettingsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/ui/AnalyticsSettingsTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cecf1aedd7ff9f5033ec681b16848eba392f3ff7
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/ui/AnalyticsSettingsTest.kt
@@ -0,0 +1,127 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui
+
+import android.content.Context
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import testhelpers.preferences.MockSharedPreferences
+import java.time.Instant
+
+class AnalyticsSettingsTest : BaseTest() {
+    @MockK lateinit var context: Context
+    lateinit var preferences: MockSharedPreferences
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+        preferences = MockSharedPreferences()
+        every { context.getSharedPreferences("analytics_localdata", Context.MODE_PRIVATE) } returns preferences
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    fun createInstance() = AnalyticsSettings(
+        context = context
+    )
+
+    @Test
+    fun `userinfo agegroup`() {
+        createInstance().apply {
+            preferences.dataMapPeek.isEmpty() shouldBe true
+
+            userInfoAgeGroup.value shouldBe PpaData.PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+            userInfoAgeGroup.update { PpaData.PPAAgeGroup.AGE_GROUP_FROM_60 }
+            preferences.dataMapPeek["userinfo.agegroup"] shouldBe 3
+            userInfoAgeGroup.value shouldBe PpaData.PPAAgeGroup.AGE_GROUP_FROM_60
+
+            userInfoAgeGroup.update { PpaData.PPAAgeGroup.UNRECOGNIZED }
+            userInfoAgeGroup.value shouldBe PpaData.PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+        }
+    }
+
+    @Test
+    fun `userinfo federal state`() {
+        createInstance().apply {
+            preferences.dataMapPeek.isEmpty() shouldBe true
+
+            userInfoFederalState.value shouldBe PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+            userInfoFederalState.update { PpaData.PPAFederalState.FEDERAL_STATE_NRW }
+            preferences.dataMapPeek["userinfo.federalstate"] shouldBe 10
+            userInfoFederalState.value shouldBe PpaData.PPAFederalState.FEDERAL_STATE_NRW
+
+            userInfoFederalState.update { PpaData.PPAFederalState.UNRECOGNIZED }
+            userInfoFederalState.value shouldBe PpaData.PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+        }
+    }
+
+    @Test
+    fun `userinfo district`() {
+        createInstance().apply {
+            preferences.dataMapPeek.isEmpty() shouldBe true
+
+            userInfoDistrict.value shouldBe 0
+            userInfoDistrict.update { 123 }
+            preferences.dataMapPeek["userinfo.district"] shouldBe 123
+
+            userInfoDistrict.value shouldBe 123
+        }
+    }
+
+    @Test
+    fun `exposure risk metadata serialisation`() {
+        createInstance().apply {
+            preferences.dataMapPeek.isEmpty() shouldBe true
+
+            previousExposureRiskMetadata.value shouldBe null
+
+            val metadata = PpaData.ExposureRiskMetadata.newBuilder()
+                .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+                .setMostRecentDateAtRiskLevel(Instant.ofEpochSecond(101010).toEpochMilli())
+                .setDateChangedComparedToPreviousSubmission(true)
+                .setRiskLevelChangedComparedToPreviousSubmission(true)
+                .build()
+
+            previousExposureRiskMetadata.update {
+                metadata
+            }
+
+            preferences.dataMapPeek["exposurerisk.metadata.previous"] shouldBe "CAMQARjQlJUwIAE="
+
+            previousExposureRiskMetadata.value shouldBe metadata
+        }
+    }
+
+    @Test
+    fun `exposure risk metadata invalid proto handling`() {
+        createInstance().apply {
+            preferences.dataMapPeek.isEmpty() shouldBe true
+
+            previousExposureRiskMetadata.value shouldBe null
+
+            // If ExposureRiskMetadata is changed this test will fail, we need some kind of migration strategy then
+            val validProto = "CAMQARjQlJUwIAE="
+
+            preferences.edit().putString("exposurerisk.metadata.previous", validProto).commit()
+
+            val metadata = PpaData.ExposureRiskMetadata.newBuilder()
+                .setRiskLevel(PpaData.PPARiskLevel.RISK_LEVEL_HIGH)
+                .setMostRecentDateAtRiskLevel(Instant.ofEpochSecond(101010).toEpochMilli())
+                .setDateChangedComparedToPreviousSubmission(true)
+                .setRiskLevelChangedComparedToPreviousSubmission(true)
+                .build()
+
+            previousExposureRiskMetadata.value shouldBe metadata
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputViewModelTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2577804443cbab315430a1e11c32c068acdabecb
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/ui/input/AnalyticsUserInputViewModelTest.kt
@@ -0,0 +1,180 @@
+package de.rki.coronawarnapp.datadonation.analytics.ui.input
+
+import android.content.Context
+import de.rki.coronawarnapp.datadonation.analytics.common.Districts
+import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
+import de.rki.coronawarnapp.datadonation.analytics.ui.input.AnalyticsUserInputFragment.InputType
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData.PPAAgeGroup
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData.PPAFederalState
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.mockk
+import kotlinx.coroutines.CoroutineScope
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+import testhelpers.BaseTest
+import testhelpers.asDispatcherProvider
+import testhelpers.coroutines.runBlockingTest2
+import testhelpers.extensions.InstantExecutorExtension
+import testhelpers.preferences.mockFlowPreference
+
+@ExtendWith(InstantExecutorExtension::class)
+class AnalyticsUserInputViewModelTest : BaseTest() {
+
+    @MockK lateinit var context: Context
+    @MockK lateinit var districtsSource: Districts
+    @MockK lateinit var analyticsSettings: AnalyticsSettings
+
+    private val userInfoAgeGroup = mockFlowPreference(PPAAgeGroup.AGE_GROUP_UNSPECIFIED)
+    private val userInfoFederalState = mockFlowPreference(PPAFederalState.FEDERAL_STATE_UNSPECIFIED)
+    private var userInfoDistrict = mockFlowPreference(0)
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        every { context.getString(any(), *anyVararg()) } returns ""
+
+        every { analyticsSettings.userInfoAgeGroup } returns userInfoAgeGroup
+        every { analyticsSettings.userInfoFederalState } returns userInfoFederalState
+        every { analyticsSettings.userInfoDistrict } returns userInfoDistrict
+
+        coEvery { districtsSource.loadDistricts() } returns emptyList()
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    fun createInstance(
+        inputType: InputType,
+        scope: CoroutineScope
+    ) = AnalyticsUserInputViewModel(
+        type = inputType,
+        dispatcherProvider = scope.asDispatcherProvider(),
+        context = context,
+        districtsSource = districtsSource,
+        settings = analyticsSettings
+    )
+
+    @Test
+    fun `test agegroup emission`() = runBlockingTest2(ignoreActive = true) {
+        userInfoAgeGroup.update { PPAAgeGroup.AGE_GROUP_0_TO_29 }
+        val instance = createInstance(inputType = InputType.AGE_GROUP, scope = this)
+
+        instance.userInfoItems.observeForever { }
+        instance.userInfoItems.value!![0].apply {
+            data shouldBe PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+            isSelected shouldBe false
+        }
+        instance.userInfoItems.value!![1].apply {
+            data shouldBe PPAAgeGroup.AGE_GROUP_0_TO_29
+            isSelected shouldBe true
+        }
+        instance.userInfoItems.value!![3].apply {
+            data shouldBe PPAAgeGroup.AGE_GROUP_FROM_60
+            isSelected shouldBe false
+        }
+    }
+
+    @Test
+    fun `test agegroup selection`() = runBlockingTest2(ignoreActive = true) {
+        val instance = createInstance(inputType = InputType.AGE_GROUP, scope = this)
+        instance.finishEvent.value shouldBe null
+
+        instance.selectUserInfoItem(
+            UserInfoItem(data = PPAAgeGroup.AGE_GROUP_30_TO_59, label = mockk(), isSelected = false)
+        )
+
+        userInfoAgeGroup.value shouldBe PPAAgeGroup.AGE_GROUP_30_TO_59
+        userInfoFederalState.value shouldBe PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+        userInfoDistrict.value shouldBe 0
+
+        instance.finishEvent.value shouldBe Unit
+    }
+
+    @Test
+    fun `test federal state emission`() = runBlockingTest2(ignoreActive = true) {
+        userInfoFederalState.update { PPAFederalState.FEDERAL_STATE_HH }
+        val instance = createInstance(inputType = InputType.FEDERAL_STATE, scope = this)
+
+        instance.userInfoItems.observeForever { }
+        instance.userInfoItems.value!![0].apply {
+            data shouldBe PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+            isSelected shouldBe false
+        }
+        instance.userInfoItems.value!![1].apply {
+            data shouldBe PPAFederalState.FEDERAL_STATE_BW
+            isSelected shouldBe false
+        }
+        instance.userInfoItems.value!![6].apply {
+            data shouldBe PPAFederalState.FEDERAL_STATE_HH
+            isSelected shouldBe true
+        }
+        instance.userInfoItems.value!![16].apply {
+            data shouldBe PPAFederalState.FEDERAL_STATE_TH
+            isSelected shouldBe false
+        }
+    }
+
+    @Test
+    fun `test federal state selection`() = runBlockingTest2(ignoreActive = true) {
+        val instance = createInstance(inputType = InputType.FEDERAL_STATE, scope = this)
+
+        instance.finishEvent.value shouldBe null
+        userInfoDistrict.update { 12345 } // Because federal state selection should reset this
+
+        instance.selectUserInfoItem(
+            UserInfoItem(data = PPAFederalState.FEDERAL_STATE_NRW, label = mockk(), isSelected = false)
+        )
+
+        userInfoAgeGroup.value shouldBe PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+        userInfoFederalState.value shouldBe PPAFederalState.FEDERAL_STATE_NRW
+        userInfoDistrict.value shouldBe 0
+
+        instance.finishEvent.value shouldBe Unit
+    }
+
+    @Test
+    fun `test district emission`() = runBlockingTest2(ignoreActive = true) {
+        userInfoFederalState.update { PPAFederalState.FEDERAL_STATE_NRW }
+
+        val ourDistrict = Districts.District(
+            districtId = 1234,
+            federalStateShortName = "NW"
+        )
+        val notOurDistrict = Districts.District(
+            districtId = 5678,
+            federalStateShortName = "BE"
+        )
+        coEvery { districtsSource.loadDistricts() } returns listOf(ourDistrict, notOurDistrict)
+
+        val instance = createInstance(inputType = InputType.DISTRICT, scope = this)
+
+        instance.userInfoItems.observeForever { }
+        instance.userInfoItems.value!![0].data shouldBe Districts.District()
+        instance.userInfoItems.value!![1].data shouldBe ourDistrict
+    }
+
+    @Test
+    fun `test district selection`() = runBlockingTest2(ignoreActive = true) {
+        val instance = createInstance(inputType = InputType.DISTRICT, scope = this)
+        instance.finishEvent.value shouldBe null
+
+        instance.selectUserInfoItem(
+            UserInfoItem(data = Districts.District(districtId = 9000), label = mockk(), isSelected = false)
+        )
+        userInfoAgeGroup.value shouldBe PPAAgeGroup.AGE_GROUP_UNSPECIFIED
+        userInfoFederalState.value shouldBe PPAFederalState.FEDERAL_STATE_UNSPECIFIED
+        userInfoDistrict.value shouldBe 9000
+
+        instance.finishEvent.value shouldBe Unit
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsPeriodicWorkerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsPeriodicWorkerTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2ea4a82db16288a86dc944bad41944940386f3d6
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsPeriodicWorkerTest.kt
@@ -0,0 +1,70 @@
+package de.rki.coronawarnapp.datadonation.analytics.worker
+
+import android.content.Context
+import androidx.work.ListenableWorker
+import androidx.work.WorkerParameters
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.worker.BackgroundConstants
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.impl.annotations.RelaxedMockK
+import kotlinx.coroutines.test.runBlockingTest
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+
+class DataDonationAnalyticsPeriodicWorkerTest : BaseTest() {
+
+    @MockK lateinit var context: Context
+    @MockK lateinit var analytics: Analytics
+    @RelaxedMockK lateinit var workerParams: WorkerParameters
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+    }
+
+    @AfterEach
+    fun teardown() {
+        clearAllMocks()
+    }
+
+    private fun createWorker() = DataDonationAnalyticsPeriodicWorker(
+        context = context,
+        workerParams = workerParams,
+        analytics = analytics
+    )
+
+    @Test
+    fun `if result says retry, do retry`() = runBlockingTest {
+        coEvery { analytics.submitIfWanted() } returns Analytics.Result(successful = false, shouldRetry = true)
+        createWorker().doWork() shouldBe ListenableWorker.Result.Retry()
+
+        coEvery { analytics.submitIfWanted() } returns Analytics.Result(successful = false, shouldRetry = false)
+        createWorker().doWork() shouldBe ListenableWorker.Result.Failure()
+
+        coEvery { analytics.submitIfWanted() } returns Analytics.Result(successful = true, shouldRetry = false)
+        createWorker().doWork() shouldBe ListenableWorker.Result.Success()
+    }
+
+    @Test
+    fun `maximum of 2 retry attemtps`() = runBlockingTest {
+        val worker = createWorker()
+        worker.runAttemptCount shouldBe 0
+
+        every { worker.runAttemptCount } returns BackgroundConstants.WORKER_RETRY_COUNT_THRESHOLD + 1
+
+        worker.doWork() shouldBe ListenableWorker.Result.Failure()
+    }
+
+    @Test
+    fun `unexpected errors do not cause a retry`() = runBlockingTest {
+        coEvery { analytics.submitIfWanted() } throws Exception("SURPRISE!!!")
+        createWorker().doWork() shouldBe ListenableWorker.Result.Failure()
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainerTest.kt
index 2f6e7d03f44df05437f531a243ffb0049c61aed5..c631543b7dd465d385b66fb91ecbad1280204990 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainerTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainerTest.kt
@@ -37,11 +37,12 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `nothing required`() {
-        val attestation = """
+        val attestation =
+            """
             {
           
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         shouldNotThrowAny {
             attestation.requirePass(SafetyNetRequirementsContainer())
@@ -50,11 +51,12 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `basic integrity required`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "basicIntegrity": false
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -68,11 +70,12 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `basic integrity required bad JSON`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "basicIntegrity": "test"
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -86,12 +89,13 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `cts profile match required`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": false,
                 "basicIntegrity": true
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -106,12 +110,13 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `cts profile match required BAD JSON`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": "123",
                 "basicIntegrity": true
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -126,12 +131,13 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `evaluation type basic required`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": true,
                 "basicIntegrity": true
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -147,13 +153,14 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `evaluation type basic required BAD JSON`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": true,
                 "basicIntegrity": true,
                 "evaluationType": ""
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -169,13 +176,14 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `evaluation type hardwarebacked required`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": true,
                 "basicIntegrity": true,
                 "evaluationType": " BASIC "
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -192,13 +200,14 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `evaluation type hardwarebacked required BAD JSON`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": true,
                 "basicIntegrity": true,
                 "evaluationType": "BASIC, SURPRISE"
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         val exception = shouldThrow<SafetyNetException> {
             attestation.requirePass(
@@ -215,13 +224,14 @@ class AttestationContainerTest : BaseTest() {
 
     @Test
     fun `everything required and pass`() {
-        val attestation = """
+        val attestation =
+            """
             {
                 "ctsProfileMatch": true,
                 "basicIntegrity": true,
                 "evaluationType": "BASIC,HARDWARE_BACKED"
             }
-       """.trimIndent().let { create(it) }
+            """.trimIndent().let { create(it) }
 
         shouldNotThrowAny {
             attestation.requirePass(
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNetTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNetTest.kt
index 847d271b26a80eaa1f855eccda4f147c4e91f391..9b04b9a50707d5d219c25e3f941be2bd0b5bcea7 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNetTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/CWASafetyNetTest.kt
@@ -5,10 +5,16 @@ import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.appconfig.ConfigData
 import de.rki.coronawarnapp.environment.EnvironmentSetup
 import de.rki.coronawarnapp.main.CWASettings
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtp
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
 import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpacAndroid
+import de.rki.coronawarnapp.storage.TestSettings
+import de.rki.coronawarnapp.util.CWADebug
+import de.rki.coronawarnapp.util.HashExtensions.Format.BASE64
 import de.rki.coronawarnapp.util.HashExtensions.toSHA256
 import de.rki.coronawarnapp.util.TimeStamper
 import de.rki.coronawarnapp.util.gplay.GoogleApiVersion
+import io.kotest.assertions.throwables.shouldNotThrowAny
 import io.kotest.assertions.throwables.shouldThrow
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
@@ -18,6 +24,7 @@ import io.mockk.coVerify
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
 import io.mockk.mockk
+import io.mockk.mockkObject
 import kotlinx.coroutines.test.runBlockingTest
 import okio.ByteString.Companion.decodeBase64
 import org.joda.time.Duration
@@ -26,6 +33,7 @@ import org.junit.jupiter.api.AfterEach
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
 import testhelpers.BaseTest
+import testhelpers.preferences.mockFlowPreference
 import java.security.SecureRandom
 import kotlin.random.Random
 
@@ -42,14 +50,18 @@ class CWASafetyNetTest : BaseTest() {
 
     @MockK lateinit var appConfigProvider: AppConfigProvider
     @MockK lateinit var appConfigData: ConfigData
+    @MockK lateinit var testSettings: TestSettings
 
     private val defaultPayload = "Computer says no.".toByteArray()
     private val firstSalt = "LMK0jFCu/lOzl07ZHmtOqQ==".decodeBase64()!!
-    private val defaultNonce = (firstSalt.toByteArray() + defaultPayload).toSHA256()
+    private val defaultNonce = (firstSalt.toByteArray() + defaultPayload).toSHA256(format = BASE64).decodeBase64()!!
 
     @BeforeEach
     fun setup() {
         MockKAnnotations.init(this)
+        mockkObject(CWADebug)
+        every { CWADebug.isDeviceForTestersBuild } returns false
+
         every { environmentSetup.safetyNetApiKey } returns "very safe"
         coEvery { safetyNetClientWrapper.attest(any()) } returns clientReport
         every { secureRandom.nextBytes(any()) } answers {
@@ -73,6 +85,8 @@ class CWASafetyNetTest : BaseTest() {
 
         every { cwaSettings.firstReliableDeviceTime } returns Instant.EPOCH.plus(Duration.standardDays(7))
         every { timeStamper.nowUTC } returns Instant.EPOCH.plus(Duration.standardDays(8))
+
+        every { testSettings.skipSafetyNetTimeCheck } returns mockFlowPreference(false)
     }
 
     @AfterEach
@@ -87,7 +101,8 @@ class CWASafetyNetTest : BaseTest() {
         appConfigProvider = appConfigProvider,
         googleApiVersion = googleApiVersion,
         timeStamper = timeStamper,
-        cwaSettings = cwaSettings
+        cwaSettings = cwaSettings,
+        testSettings = testSettings
     )
 
     @Test
@@ -97,14 +112,63 @@ class CWASafetyNetTest : BaseTest() {
         }
     }
 
+    @Test
+    fun `nonce matches server calculation - serverstyle`() {
+        // Server get's base64 encoded data and has to decode it first.
+        val salt = "test-salt-1234".decodeBase64()!!.toByteArray()
+        val payload = "payload-test-string".toByteArray()
+
+        val nonce = createInstance().calculateNonce(
+            salt,
+            payload
+        )
+        nonce shouldBe "M2EqczgxveKiptESiBNRmKqxYv5raTdzyeSZyzsCvjg=".decodeBase64()
+    }
+
+    @Test
+    fun `nonce matches server calculation - serverstyle - OTP Payload`() {
+        // Server get's base64 encoded data and has to decode it first.
+        val salt = "Ri0AXC9U+b9hE58VqupI8Q==".decodeBase64()!!.toByteArray()
+        val payload = "CgtoZWxsby13b3JsZA==".decodeBase64()!!.toByteArray()
+
+        val otp = EdusOtp.EDUSOneTimePassword.parseFrom(payload)
+        otp.otp shouldBe "hello-world"
+
+        val nonce = createInstance().calculateNonce(salt, payload)
+        nonce shouldBe "ANjVoDcS8v8iQdlNrcxehSggE9WZwIp7VNpjoU7cPsg=".decodeBase64()
+    }
+
+    @Test
+    fun `nonce matches server calculation - clientstyle`() {
+        val payload = "Computer says no.".toByteArray()
+        val salt = "Don't be so salty".toByteArray()
+
+        val nonce = createInstance().calculateNonce(
+            salt,
+            payload
+        )
+        nonce shouldBe "Alzb6UASmHCdnnT0M8pQv5bQ/r/+lfS/jb760+ikhxc=".decodeBase64()
+    }
+
+    @Test
+    fun `nonce matches server calculation - serverstyle - PPA Payload`() {
+        // Server get's base64 encoded data and has to decode it first.
+        val salt = "Ri0AXC9U+b9hE58VqupI8Q==".decodeBase64()!!.toByteArray()
+        val payload = "Eg0IAxABGMGFyOT6LiABOgkIBBDdj6AFGAI=".decodeBase64()!!.toByteArray()
+
+        val ppa = PpaData.PPADataAndroid.parseFrom(payload)
+        ppa.exposureRiskMetadataSetList.first().riskLevel shouldBe PpaData.PPARiskLevel.RISK_LEVEL_HIGH
+
+        val nonce = createInstance().calculateNonce(salt, payload)
+        nonce shouldBe "bd6kMfLKby3pzEqW8go1ZgmHN/bU1p/4KG6+1GeB288=".decodeBase64()
+    }
+
     @Test
     fun `nonce generation`() {
-        createInstance().apply {
-            val payload = "Computer says no.".toByteArray()
-            val salt = "Don't be so salty".toByteArray()
-            val nonce = calculateNonce(salt, payload)
-            nonce shouldBe (salt + payload).toSHA256()
-        }
+        val payload = "Computer says no.".toByteArray()
+        val salt = "Don't be so salty".toByteArray()
+        val nonce = createInstance().calculateNonce(salt, payload)
+        nonce shouldBe (salt + payload).toSHA256(format = BASE64).decodeBase64()
     }
 
     @Test
@@ -134,7 +198,7 @@ class CWASafetyNetTest : BaseTest() {
 
     @Test
     fun `request nonce must match response nonce`() = runBlockingTest {
-        every { clientReport.nonce } returns "missmatch"
+        every { clientReport.nonce } returns "missmatch".decodeBase64()
         val exception = shouldThrow<SafetyNetException> {
             createInstance().attest(TestAttestationRequest("Computer says no.".toByteArray()))
         }
@@ -170,6 +234,27 @@ class CWASafetyNetTest : BaseTest() {
         exception.type shouldBe SafetyNetException.Type.TIME_SINCE_ONBOARDING_UNVERIFIED
     }
 
+    @Test
+    fun `24h since onboarding can be skipped on deviceForTester builds`() = runBlockingTest {
+        every { timeStamper.nowUTC } returns Instant.EPOCH
+
+        shouldThrow<SafetyNetException> {
+            createInstance().attest(TestAttestationRequest("Computer says no.".toByteArray()))
+        }.type shouldBe SafetyNetException.Type.TIME_SINCE_ONBOARDING_UNVERIFIED
+
+        every { testSettings.skipSafetyNetTimeCheck } returns mockFlowPreference(true)
+
+        shouldThrow<SafetyNetException> {
+            createInstance().attest(TestAttestationRequest("Computer says no.".toByteArray()))
+        }.type shouldBe SafetyNetException.Type.TIME_SINCE_ONBOARDING_UNVERIFIED
+
+        every { CWADebug.isDeviceForTestersBuild } returns true
+
+        shouldNotThrowAny {
+            createInstance().attest(TestAttestationRequest("Computer says no.".toByteArray()))
+        }
+    }
+
     @Test
     fun `first reliable devicetime timestamp needs to be set`() = runBlockingTest {
         every { cwaSettings.firstReliableDeviceTime } returns Instant.EPOCH
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapperTest.kt
index 61a98a6b1965c7f4d97adf86d77231573af49af6..707950e24843cceaa4a085088aa593da6e8c4961 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/safetynet/SafetyNetClientWrapperTest.kt
@@ -24,7 +24,6 @@ import org.junit.jupiter.api.AfterEach
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
 import testhelpers.BaseTest
-import testhelpers.coroutines.runBlockingTest2
 import testhelpers.gms.MockGMSTask
 import java.io.IOException
 
@@ -74,7 +73,7 @@ class SafetyNetClientWrapperTest : BaseTest() {
     }
 
     @Test
-    fun `attestation can time out`() = runBlockingTest2(ignoreActive = true) {
+    fun `attestation can time out`() = runBlockingTest {
         every { safetyNetClient.attest(any(), any()) } returns MockGMSTask.timeout()
 
         val resultAsync = async {
@@ -83,10 +82,8 @@ class SafetyNetClientWrapperTest : BaseTest() {
             }
         }
 
-        advanceTimeBy(31 * 1000L)
-
         val error = resultAsync.await()
-        error.type shouldBe SafetyNetException.Type.ATTESTATION_FAILED
+        error.type shouldBe SafetyNetException.Type.ATTESTATION_REQUEST_FAILED
         error.cause shouldBe instanceOf(TimeoutCancellationException::class)
     }
 
@@ -148,7 +145,7 @@ class SafetyNetClientWrapperTest : BaseTest() {
                 body shouldBe JsonParser.parseString(JWS_BODY)
                 signature shouldBe JWS_SIGNATURE_BASE64.decodeBase64()!!.toByteArray()
 
-                nonce shouldBe "AAAAAAAAAAAAAAAAAAAAAA==".decodeBase64()?.utf8()
+                nonce shouldBe "AAAAAAAAAAAAAAAAAAAAAA==".decodeBase64()
                 apkPackageName shouldBe "de.rki.coronawarnapp.test"
                 basicIntegrity shouldBe false
                 ctsProfileMatch shouldBe false
@@ -164,7 +161,7 @@ class SafetyNetClientWrapperTest : BaseTest() {
             createInstance().attest("hodl".toByteArray()).apply {
                 body shouldBe JsonParser.parseString(JWS_BODY_MINIMAL)
 
-                nonce shouldBe "AAAAAAAAAAAAAAAAAAAAAA==".decodeBase64()?.utf8()
+                nonce shouldBe "AAAAAAAAAAAAAAAAAAAAAA==".decodeBase64()
                 apkPackageName shouldBe "de.rki.coronawarnapp.test"
                 basicIntegrity shouldBe false
                 ctsProfileMatch shouldBe false
@@ -183,7 +180,8 @@ class SafetyNetClientWrapperTest : BaseTest() {
             // Signature
             ""
         ).joinToString(".")
-        private val JWS_BODY_MINIMAL = """
+        private val JWS_BODY_MINIMAL =
+            """
             {
                 "nonce": "AAAAAAAAAAAAAAAAAAAAAA==",
                 "timestampMs": 1608558363702,
@@ -197,7 +195,7 @@ class SafetyNetClientWrapperTest : BaseTest() {
                 "nobodyExpects":"TheSpanishInquisition",
                 "error":"Something went wrong"
             }
-        """.trimIndent()
+            """.trimIndent()
 
         private val JWS_BASE64 = listOf(
             // Header
@@ -207,7 +205,8 @@ class SafetyNetClientWrapperTest : BaseTest() {
             // Signature
             "RJOCf-JTA58PitBWfYUAkJArnTE5r9QwQzApZk2tSk4r_CGoHzyI64i9HQFCp_ChhtemiHhtPk-20ifBZ4fIzCLeOdQABnF2ygKuheMrJxHbZFezO5WdQV3QpNkVBxoUqOq_Oq9NEf_3Bl8GHtyI4r-AczfJ9hlOIhJ2yAQpbxaeh-h4UJj6lSZ05-szYQXU3cukkHl1aSJmVK6hOJxtEv22MVK0fpIoi_4IzAuUFjcbrPsN8Lk5wisWCxnzfZ50AkrINXEQ4mMHZFwUQzRQ6zAakwyxH7gsGjU-0zkxyCIWg917Kpbp4MlVqOuUpDXcHJbh_-qduZ7jDTmP3zl7xg"
         ).joinToString(".")
-        private val JWS_BODY = """
+        private val JWS_BODY =
+            """
             {
                 "nonce": "AAAAAAAAAAAAAAAAAAAAAA==",
                 "timestampMs": 1608558363702,
@@ -221,8 +220,9 @@ class SafetyNetClientWrapperTest : BaseTest() {
                 "advice": "RESTORE_TO_FACTORY_ROM,LOCK_BOOTLOADER",
                 "evaluationType": "BASIC"
             }
-        """.trimIndent()
-        private val JWS_HEADER = """
+            """.trimIndent()
+        private val JWS_HEADER =
+            """
             {
                 "alg": "RS256",
                 "x5c": [
@@ -230,7 +230,7 @@ class SafetyNetClientWrapperTest : BaseTest() {
                     "MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEyMTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3QgU2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnvUA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRrmBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++AcxGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmKFsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7XrJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8GA1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0gBDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7HTgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoNFvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrzmqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wWIRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZUSpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg=="
                 ]
             }
-        """.trimIndent()
+            """.trimIndent()
         private const val JWS_SIGNATURE_BASE64 =
             "RJOCf-JTA58PitBWfYUAkJArnTE5r9QwQzApZk2tSk4r_CGoHzyI64i9HQFCp_ChhtemiHhtPk-20ifBZ4fIzCLeOdQABnF2ygKuheMrJxHbZFezO5WdQV3QpNkVBxoUqOq_Oq9NEf_3Bl8GHtyI4r-AczfJ9hlOIhJ2yAQpbxaeh-h4UJj6lSZ05-szYQXU3cukkHl1aSJmVK6hOJxtEv22MVK0fpIoi_4IzAuUFjcbrPsN8Lk5wisWCxnzfZ50AkrINXEQ4mMHZFwUQzRQ6zAakwyxH7gsGjU-0zkxyCIWg917Kpbp4MlVqOuUpDXcHJbh_-qduZ7jDTmP3zl7xg"
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/storage/OTPRepositoryTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/storage/OTPRepositoryTest.kt
index 60881555c0fd63ac559f40a8b0599a73f01f8e0e..63d916e3d870042c220ad1c6cfe0e38ee34f58c1 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/storage/OTPRepositoryTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/storage/OTPRepositoryTest.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.datadonation.storage
 
 import android.content.Context
 import com.google.gson.Gson
+import de.rki.coronawarnapp.datadonation.OTPAuthorizationResult
 import de.rki.coronawarnapp.datadonation.OneTimePassword
 import de.rki.coronawarnapp.datadonation.survey.SurveySettings
 import io.kotest.matchers.shouldBe
@@ -38,7 +39,7 @@ class OTPRepositoryTest : BaseTest() {
         val uuid = UUID.fromString("e103c755-0975-4588-a639-d0cd1ba421a0")
         val time = Instant.ofEpochMilli(1612381131014)
         every { surveySettings.oneTimePassword } returns OneTimePassword(uuid, time)
-        val lastOTP = OTPRepository(surveySettings).lastOTP
+        val lastOTP = OTPRepository(surveySettings).otp
         lastOTP shouldNotBe null
         lastOTP!!.apply {
             uuid shouldBe uuid
@@ -58,6 +59,36 @@ class OTPRepositoryTest : BaseTest() {
     @Test
     fun `no last otp`() {
         every { surveySettings.oneTimePassword } returns null
-        OTPRepository(surveySettings).lastOTP shouldBe null
+        OTPRepository(surveySettings).otp shouldBe null
+    }
+
+    @Test
+    fun `no otp auth result after generating new otp`() {
+        every { context.getSharedPreferences("survey_localdata", Context.MODE_PRIVATE) } returns MockSharedPreferences()
+        val settings = SurveySettings(context, Gson())
+        settings.otpAuthorizationResult = OTPAuthorizationResult(
+            UUID.randomUUID(),
+            true,
+            Instant.now()
+        )
+
+        settings.otpAuthorizationResult shouldNotBe null
+        OTPRepository(settings).generateOTP()
+        settings.otpAuthorizationResult shouldBe null
+    }
+
+    @Test
+    fun `no otp after storing otp auth result`() {
+        every { context.getSharedPreferences("survey_localdata", Context.MODE_PRIVATE) } returns MockSharedPreferences()
+        val settings = SurveySettings(context, Gson())
+        settings.oneTimePassword = OneTimePassword(UUID.randomUUID(), Instant.now())
+
+        settings.oneTimePassword shouldNotBe null
+        OTPRepository(settings).otpAuthorizationResult = OTPAuthorizationResult(
+            UUID.randomUUID(),
+            true,
+            Instant.now()
+        )
+        settings.oneTimePassword shouldBe null
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveySettingsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveySettingsTest.kt
index d7564fe8fefadc5e3a47f44ce8fa3be6d0696d58..6fd1b7161a4109a3cc916257aa5cac7da5627207 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveySettingsTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveySettingsTest.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.datadonation.survey
 
 import android.content.Context
 import com.google.gson.Gson
+import de.rki.coronawarnapp.datadonation.OTPAuthorizationResult
 import de.rki.coronawarnapp.datadonation.OneTimePassword
 import de.rki.coronawarnapp.util.serialization.SerializationModule
 import io.kotest.matchers.shouldBe
@@ -39,7 +40,7 @@ class SurveySettingsTest : BaseTest() {
     }
 
     @Test
-    fun `load and deserialize json`() {
+    fun `load and deserialize otp json`() {
         val instance = SurveySettings(context, baseGson)
         instance.oneTimePassword shouldBe null
 
@@ -60,7 +61,7 @@ class SurveySettingsTest : BaseTest() {
     }
 
     @Test
-    fun `parsing error`() {
+    fun `otp parsing error`() {
         val instance = SurveySettings(context, baseGson)
         instance.oneTimePassword shouldBe null
 
@@ -73,7 +74,7 @@ class SurveySettingsTest : BaseTest() {
     }
 
     @Test
-    fun `save and serialize json`() {
+    fun `save and serialize otp json`() {
         val uuid = UUID.fromString("e103c755-0975-4588-a639-d0cd1ba421a0")
         val time = Instant.ofEpochMilli(1612381567242)
 
@@ -88,4 +89,62 @@ class SurveySettingsTest : BaseTest() {
             }
         """.trimIndent()
     }
+
+    @Test
+    fun `load and deserialize auth result json`() {
+        val instance = SurveySettings(context, baseGson)
+        instance.otpAuthorizationResult shouldBe null
+
+        preferences.edit().putString(
+            "otp_result",
+            """
+                {
+                    "uuid":"e103c755-0975-4588-a639-d0cd1ba421a1",
+                    "authorized": true,
+                    "redeemedAt": 1612381217443,
+                    "invalidated": true
+                }
+            """.trimIndent()
+        ).apply()
+
+        val value = instance.otpAuthorizationResult
+        value shouldNotBe null
+        value!!.uuid.toString() shouldBe "e103c755-0975-4588-a639-d0cd1ba421a1"
+        value.authorized shouldBe true
+        value.redeemedAt.millis shouldBe 1612381217443
+        value.invalidated shouldBe true
+    }
+
+    @Test
+    fun `auth result parsing error`() {
+        val instance = SurveySettings(context, baseGson)
+        instance.otpAuthorizationResult shouldBe null
+
+        preferences
+            .edit()
+            .putString("otp_result", "invalid value")
+            .apply()
+
+        instance.otpAuthorizationResult shouldBe null
+    }
+
+    @Test
+    fun `save and serialize auth result json`() {
+        val uuid = UUID.fromString("e103c755-0975-4588-a639-d0cd1ba421a0")
+        val authorized = false
+        val redeemedAt = Instant.ofEpochMilli(1612381217445)
+
+        val instance = SurveySettings(context, baseGson)
+        instance.otpAuthorizationResult = OTPAuthorizationResult(uuid, authorized, redeemedAt, false)
+
+        val value = preferences.getString("otp_result", null)
+        value shouldBe """
+            {
+              "uuid": "e103c755-0975-4588-a639-d0cd1ba421a0",
+              "authorized": false,
+              "redeemedAt": 1612381217445,
+              "invalidated": false
+            }
+        """.trimIndent()
+    }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveyUrlProviderTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveyUrlProviderTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e1b94f13532190b642d93a7b161ce1775f79cea1
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/SurveyUrlProviderTest.kt
@@ -0,0 +1,53 @@
+package de.rki.coronawarnapp.datadonation.survey
+
+import de.rki.coronawarnapp.appconfig.AppConfigProvider
+import io.kotest.assertions.throwables.shouldThrow
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.impl.annotations.MockK
+import kotlinx.coroutines.test.runBlockingTest
+import okhttp3.HttpUrl.Companion.toHttpUrl
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import java.util.UUID
+
+internal class SurveyUrlProviderTest {
+
+    @MockK lateinit var appConfigProvider: AppConfigProvider
+
+    @BeforeEach
+    fun setUp() {
+        MockKAnnotations.init(this)
+        coEvery { appConfigProvider.getAppConfig().survey.otpQueryParameterName } returns "queryParamNameOtp"
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    private fun createInstance() = SurveyUrlProvider(
+        appConfigProvider
+    )
+
+    @Test
+    fun `provideUrl() should provide correct Url`() = runBlockingTest {
+        val otp = UUID.randomUUID()
+        coEvery { appConfigProvider.getAppConfig().survey.surveyOnHighRiskUrl } returns "http://www.example.com".toHttpUrl()
+
+        createInstance().provideUrl(Surveys.Type.HIGH_RISK_ENCOUNTER, otp) shouldBe "http://www.example.com/?queryParamNameOtp=$otp"
+    }
+
+    @Test
+    fun `provideUrl() should throw IllegalStateException when url from AppConfig is null`() = runBlockingTest {
+        val otp = UUID.randomUUID()
+        coEvery { appConfigProvider.getAppConfig().survey.surveyOnHighRiskUrl } returns null
+
+        shouldThrow<IllegalStateException> { createInstance().provideUrl(Surveys.Type.HIGH_RISK_ENCOUNTER, otp) }.also {
+            it.message shouldBe "AppConfig doesn't contain a link to the high-risk card survey"
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyApiV1Test.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyApiV1Test.kt
new file mode 100644
index 0000000000000000000000000000000000000000..da75574ae2ee38a9616da321020f1a8ccdc85661
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyApiV1Test.kt
@@ -0,0 +1,126 @@
+package de.rki.coronawarnapp.datadonation.survey.server
+
+import com.google.protobuf.ByteString
+import de.rki.coronawarnapp.datadonation.survey.SurveyModule
+import de.rki.coronawarnapp.http.HttpModule
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtp
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtpRequestAndroid
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpacAndroid
+import io.kotest.assertions.throwables.shouldThrowAny
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import kotlinx.coroutines.runBlocking
+import okhttp3.mockwebserver.MockResponse
+import okhttp3.mockwebserver.MockWebServer
+import okio.ByteString.Companion.decodeBase64
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import testhelpers.extensions.toJsonResponse
+import java.util.concurrent.TimeUnit
+
+class SurveyApiV1Test : BaseTest() {
+
+    private lateinit var webServer: MockWebServer
+    private lateinit var serverAddress: String
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        webServer = MockWebServer()
+        webServer.start()
+        serverAddress = "http://${webServer.hostName}:${webServer.port}"
+    }
+
+    @AfterEach
+    fun teardown() {
+        clearAllMocks()
+        webServer.shutdown()
+    }
+
+    private fun createAPI(): SurveyApiV1 {
+        val httpModule = HttpModule()
+
+        return SurveyModule().let {
+            val downloadHttpClient = httpModule.defaultHttpClient()
+            it.provideSurveyApi(
+                client = downloadHttpClient,
+                url = serverAddress,
+                gsonConverterFactory = httpModule.provideGSONConverter(),
+                protoConverterFactory = httpModule.provideProtoConverter()
+            )
+        }
+    }
+
+    @Test
+    fun `test auth`(): Unit = runBlocking {
+        val api = createAPI()
+        """
+            {
+            
+            }
+        """.toJsonResponse().apply { webServer.enqueue(this) }
+
+        val surveyPayload = EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid.newBuilder()
+            .setPayload(
+                EdusOtp.EDUSOneTimePassword.newBuilder()
+                    .setOtp("15cff19f-af26-41bc-94f2-c1a65075e894")
+                    .setOtpBytes(
+                        ByteString.copyFrom(
+                            "MTVjZmYxOWYtYWYyNi00MWJjLTk0ZjItYzFhNjUwNzVlODk0".decodeBase64()!!.toByteArray()
+                        )
+                    )
+            )
+            .setAuthentication(
+                PpacAndroid.PPACAndroid.newBuilder()
+                    .setSafetyNetJws("abc")
+                    .setSalt("def")
+            )
+            .build()
+
+        api.authOTP(
+            requestBody = surveyPayload
+        )
+
+        webServer.takeRequest(5, TimeUnit.SECONDS)!!.apply {
+            path shouldBe "/version/v1/android/otp"
+            body.readByteArray() shouldBe surveyPayload.toByteArray()
+        }
+    }
+
+    @Test
+    fun `server returns 500`(): Unit = runBlocking {
+        val api = createAPI()
+        """
+            {
+            
+            }
+        """.toJsonResponse().apply { webServer.enqueue(MockResponse().setResponseCode(500)) }
+
+        val surveyPayload = EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid.newBuilder()
+            .setPayload(
+                EdusOtp.EDUSOneTimePassword.newBuilder()
+                    .setOtp("15cff19f-af26-41bc-94f2-c1a65075e894")
+                    .setOtpBytes(
+                        ByteString.copyFrom(
+                            "MTVjZmYxOWYtYWYyNi00MWJjLTk0ZjItYzFhNjUwNzVlODk0".decodeBase64()!!.toByteArray()
+                        )
+                    )
+            )
+            .setAuthentication(
+                PpacAndroid.PPACAndroid.newBuilder()
+                    .setSafetyNetJws("abc")
+                    .setSalt("def")
+            )
+            .build()
+
+        shouldThrowAny {
+            api.authOTP(
+                requestBody = surveyPayload
+            )
+        }
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyServerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyServerTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2c771547afe50c5df249d25110b0b95ccdd649a6
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/survey/server/SurveyServerTest.kt
@@ -0,0 +1,110 @@
+package de.rki.coronawarnapp.datadonation.survey.server
+
+import android.content.Context
+import com.google.protobuf.ByteString
+import de.rki.coronawarnapp.datadonation.OneTimePassword
+import de.rki.coronawarnapp.datadonation.safetynet.DeviceAttestation
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtp
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.EdusOtpRequestAndroid
+import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpacAndroid
+import io.kotest.assertions.throwables.shouldThrow
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.coEvery
+import io.mockk.coVerify
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import kotlinx.coroutines.runBlocking
+import okio.ByteString.Companion.decodeBase64
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import testhelpers.TestDispatcherProvider
+import java.io.IOException
+import java.util.UUID
+
+class SurveyServerTest : BaseTest() {
+
+    @MockK lateinit var surveyApi: SurveyApiV1
+    @MockK lateinit var context: Context
+    @MockK lateinit var attestationResult: DeviceAttestation.Result
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+        every { attestationResult.accessControlProtoBuf } returns build
+    }
+
+    @AfterEach
+    fun teardown() {
+        clearAllMocks()
+    }
+
+    @Test
+    fun `valid otp`() = runBlocking {
+        val server = SurveyServer(surveyApi = { surveyApi }, TestDispatcherProvider())
+        coEvery { surveyApi.authOTP(any()) } answers {
+            arg<EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid>(0).toString() shouldBe expectedPayload()
+            SurveyApiV1.DataDonationResponse(null)
+        }
+
+        server.authOTP(
+            OneTimePassword(UUID.fromString(otpData)),
+            attestationResult
+        ).errorCode shouldBe null
+
+        coVerify { surveyApi.authOTP(any()) }
+    }
+
+    @Test
+    fun `invalid otp`() = runBlocking {
+        val server = SurveyServer(surveyApi = { surveyApi }, TestDispatcherProvider())
+        coEvery { surveyApi.authOTP(any()) } answers {
+            arg<EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid>(0).toString() shouldBe expectedPayload()
+            SurveyApiV1.DataDonationResponse("API_TOKEN_ALREADY_ISSUED")
+        }
+
+        server.authOTP(
+            OneTimePassword(UUID.fromString(otpData)),
+            attestationResult
+        ).errorCode shouldBe "API_TOKEN_ALREADY_ISSUED"
+
+        coVerify { surveyApi.authOTP(any()) }
+    }
+
+    @Test
+    fun `API fails`(): Unit = runBlocking {
+        val server = SurveyServer(surveyApi = { surveyApi }, TestDispatcherProvider())
+        coEvery { surveyApi.authOTP(any()) } throws (IOException())
+
+        shouldThrow<IOException> {
+            server.authOTP(
+                OneTimePassword(UUID.fromString(otpData)),
+                attestationResult
+            )
+        }
+    }
+
+    private val otpData = "15cff19f-af26-41bc-94f2-c1a65075e894"
+    private val build = PpacAndroid.PPACAndroid.newBuilder()
+        .setSafetyNetJws("abc")
+        .setSalt("def")
+        .build()
+
+    private fun expectedPayload() = EdusOtpRequestAndroid.EDUSOneTimePasswordRequestAndroid.newBuilder()
+        .setPayload(
+            EdusOtp.EDUSOneTimePassword.newBuilder()
+                .setOtp(otpData)
+                .setOtpBytes(
+                    ByteString.copyFrom(
+                        "MTVjZmYxOWYtYWYyNi00MWJjLTk0ZjItYzFhNjUwNzVlODk0".decodeBase64()!!
+                            .toByteArray()
+                    )
+                )
+        )
+        .setAuthentication(build)
+        .build()
+        .toString()
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/deadman/DeadmanNotificationSchedulerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/deadman/DeadmanNotificationSchedulerTest.kt
index 1ec45a093df3a25d8439c8066cddb0451e2065c4..dbc88ecd17c1b26a8084003cf46884b913f5f856 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/deadman/DeadmanNotificationSchedulerTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/deadman/DeadmanNotificationSchedulerTest.kt
@@ -92,7 +92,9 @@ class DeadmanNotificationSchedulerTest : BaseTest() {
 
         verify(exactly = 0) {
             workManager.enqueueUniquePeriodicWork(
-                any(), any(), any()
+                any(),
+                any(),
+                any()
             )
         }
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CommonSyncToolTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CommonSyncToolTest.kt
index 5cb2f02548a9899777337aceb65b4e4397705575..d0631b5e21fa6dda6dbe9dbdebc233b371df44d3 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CommonSyncToolTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CommonSyncToolTest.kt
@@ -59,10 +59,14 @@ abstract class CommonSyncToolTest : BaseIOTest() {
         }
 
         coEvery { keyServer.getDayIndex(any()) } returns listOf(
-            "2020-01-01".day, "2020-01-02".day, "2020-01-03".day
+            "2020-01-01".day,
+            "2020-01-02".day,
+            "2020-01-03".day
         )
         coEvery { keyServer.getHourIndex(any(), "2020-01-04".day) } returns listOf(
-            "00:00".hour, "01:00".hour, "02:00".hour
+            "00:00".hour,
+            "01:00".hour,
+            "02:00".hour
         )
 
         every { timeStamper.nowUTC } returns Instant.parse("2020-01-04T03:15:00.000Z")
@@ -104,7 +108,10 @@ abstract class CommonSyncToolTest : BaseIOTest() {
         dayIdentifier: LocalDate,
         isComplete: Boolean = true
     ): CachedKey = mockCacheEntry(
-        location, dayIdentifier, null, isComplete
+        location,
+        dayIdentifier,
+        null,
+        isComplete
     )
 
     internal fun mockCachedHour(
@@ -113,7 +120,10 @@ abstract class CommonSyncToolTest : BaseIOTest() {
         hourIdentifier: LocalTime,
         isComplete: Boolean = true
     ): CachedKey = mockCacheEntry(
-        location, dayIdentifier, hourIdentifier, isComplete
+        location,
+        dayIdentifier,
+        hourIdentifier,
+        isComplete
     )
 
     private fun mockCacheEntry(
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CountryDataTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CountryDataTest.kt
index 434e3a7db13f668c3cca4b9b9a7fb74307c31bfa..57fb9d595c0b40907942d6cf5db147d367c765e2 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CountryDataTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/CountryDataTest.kt
@@ -27,7 +27,8 @@ class CountryDataTest : BaseTest() {
     @Test
     fun `missing days default`() {
         val availableDates = listOf(
-            "2222-12-30", "2222-12-31"
+            "2222-12-30",
+            "2222-12-31"
         ).map { LocalDate.parse(it) }
         val cd = LocationDays(locationCode, availableDates)
 
@@ -62,7 +63,8 @@ class CountryDataTest : BaseTest() {
     @Test
     fun `missing days empty cache`() {
         val availableDates = listOf(
-            "2222-11-28", "2222-11-29"
+            "2222-11-28",
+            "2222-11-29"
         ).map { LocalDate.parse(it) }
         val cd = LocationDays(locationCode, availableDates)
 
@@ -77,7 +79,8 @@ class CountryDataTest : BaseTest() {
     @Test
     fun `missing days disjunct`() {
         val availableDates = listOf(
-            "2222-11-28", "2222-11-29"
+            "2222-11-28",
+            "2222-11-29"
         ).map { LocalDate.parse(it) }
         val cd = LocationDays(locationCode, availableDates)
 
@@ -95,7 +98,8 @@ class CountryDataTest : BaseTest() {
     @Test
     fun `missing days none missing`() {
         val availableDates = listOf(
-            "2222-12-30", "2222-12-31"
+            "2222-12-30",
+            "2222-12-31"
         ).map { LocalDate.parse(it) }
         val cd = LocationDays(locationCode, availableDates)
 
@@ -114,10 +118,12 @@ class CountryDataTest : BaseTest() {
     fun `missing hours default`() {
         val availableHours = mapOf(
             LocalDate.parse("2222-12-30") to listOf(
-                LocalTime.parse("19:00"), LocalTime.parse("20:00")
+                LocalTime.parse("19:00"),
+                LocalTime.parse("20:00")
             ),
             LocalDate.parse("2222-12-31") to listOf(
-                LocalTime.parse("22:00"), LocalTime.parse("23:00")
+                LocalTime.parse("22:00"),
+                LocalTime.parse("23:00")
             )
         )
         val cd = LocationHours(locationCode, availableHours)
@@ -176,10 +182,12 @@ class CountryDataTest : BaseTest() {
     fun `missing hours empty cache`() {
         val availableHours = mapOf(
             LocalDate.parse("2222-12-30") to listOf(
-                LocalTime.parse("19:00"), LocalTime.parse("20:00")
+                LocalTime.parse("19:00"),
+                LocalTime.parse("20:00")
             ),
             LocalDate.parse("2222-12-31") to listOf(
-                LocalTime.parse("22:00"), LocalTime.parse("23:00")
+                LocalTime.parse("22:00"),
+                LocalTime.parse("23:00")
             )
         )
         val cd = LocationHours(locationCode, availableHours)
@@ -196,10 +204,12 @@ class CountryDataTest : BaseTest() {
     fun `missing hours disjunct`() {
         val availableHours = mapOf(
             LocalDate.parse("2222-12-30") to listOf(
-                LocalTime.parse("19:00"), LocalTime.parse("20:00")
+                LocalTime.parse("19:00"),
+                LocalTime.parse("20:00")
             ),
             LocalDate.parse("2222-12-31") to listOf(
-                LocalTime.parse("22:00"), LocalTime.parse("23:00")
+                LocalTime.parse("22:00"),
+                LocalTime.parse("23:00")
             )
         )
         val cd = LocationHours(locationCode, availableHours)
@@ -219,10 +229,12 @@ class CountryDataTest : BaseTest() {
     fun `missing hours none missing`() {
         val availableHours = mapOf(
             LocalDate.parse("2222-12-30") to listOf(
-                LocalTime.parse("19:00"), LocalTime.parse("20:00")
+                LocalTime.parse("19:00"),
+                LocalTime.parse("20:00")
             ),
             LocalDate.parse("2222-12-31") to listOf(
-                LocalTime.parse("22:00"), LocalTime.parse("23:00")
+                LocalTime.parse("22:00"),
+                LocalTime.parse("23:00")
             )
         )
         val cd = LocationHours(locationCode, availableHours)
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt
index c22593689bdb3fb649c31a47c0c244abc18a0b52..df2e2ce3dae0471911328808e994e452581ab29a 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt
@@ -8,6 +8,7 @@ import de.rki.coronawarnapp.environment.BuildConfigWrap
 import de.rki.coronawarnapp.environment.EnvironmentSetup
 import de.rki.coronawarnapp.nearby.ENFClient
 import de.rki.coronawarnapp.nearby.modules.detectiontracker.TrackedExposureDetection
+import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.util.TimeStamper
 import io.mockk.MockKAnnotations
 import io.mockk.Runs
@@ -54,6 +55,8 @@ class DownloadDiagnosisKeysTaskTest : BaseTest() {
 
         mockkObject(BuildConfigWrap)
         every { BuildConfigWrap.VERSION_CODE } returns 1080005
+        mockkObject(LocalData)
+        every { LocalData.isAllowedToSubmitDiagnosisKeys() } returns false
 
         availableKey1.apply {
             every { path } returns File("availableKey1")
@@ -230,4 +233,20 @@ class DownloadDiagnosisKeysTaskTest : BaseTest() {
             enfClient.provideDiagnosisKeys(any(), any())
         }
     }
+
+    @Test
+    fun `we do not submit keys if user got positive test results`() = runBlockingTest {
+        every { LocalData.isAllowedToSubmitDiagnosisKeys() } returns true
+
+        createInstance().run(DownloadDiagnosisKeysTask.Arguments())
+
+        coVerifySequence {
+            enfClient.isTracingEnabled
+            enfClient.latestTrackedExposureDetection()
+        }
+
+        coVerify(exactly = 0) {
+            enfClient.provideDiagnosisKeys(any(), any())
+        }
+    }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServerTest.kt
index 9f2fea42a597ba9bdfec45dca8a1e87a72b02de0..fe045e4257bc6e4f954080b052a5bb027dc05642 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServerTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/server/DiagnosisKeyServerTest.kt
@@ -54,7 +54,8 @@ class DiagnosisKeyServerTest : BaseIOTest() {
 
         runBlocking {
             downloadServer.getLocationIndex() shouldBe listOf(
-                LocationCode("DE"), LocationCode("NL")
+                LocationCode("DE"),
+                LocationCode("NL")
             )
         }
 
@@ -65,12 +66,14 @@ class DiagnosisKeyServerTest : BaseIOTest() {
     fun `download day index for country`() {
         val downloadServer = createDownloadServer()
         coEvery { api.getDayIndex("DE") } returns listOf(
-            "2000-01-01", "2000-01-02"
+            "2000-01-01",
+            "2000-01-02"
         )
 
         runBlocking {
             downloadServer.getDayIndex(LocationCode("DE")) shouldBe listOf(
-                "2000-01-01", "2000-01-02"
+                "2000-01-01",
+                "2000-01-02"
             ).map { LocalDate.parse(it) }
         }
 
@@ -81,7 +84,10 @@ class DiagnosisKeyServerTest : BaseIOTest() {
     fun `download hour index for country and day`() {
         val downloadServer = createDownloadServer()
         coEvery { api.getHourIndex("DE", "2000-01-01") } returns listOf(
-            "1", "2", "20", "21"
+            "1",
+            "2",
+            "20",
+            "21"
         )
 
         runBlocking {
@@ -89,7 +95,10 @@ class DiagnosisKeyServerTest : BaseIOTest() {
                 LocationCode("DE"),
                 LocalDate.parse("2000-01-01")
             ) shouldBe listOf(
-                "01:00", "02:00", "20:00", "21:00"
+                "01:00",
+                "02:00",
+                "20:00",
+                "21:00"
             ).map { LocalTime.parse(it) }
         }
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/environment/EnvironmentSetupTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/environment/EnvironmentSetupTest.kt
index b00775a9457596d55715a8fe2facb583e21a6b2e..bbc54b9bc56291063eb689696b475c8f7b4e98b2 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/environment/EnvironmentSetupTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/environment/EnvironmentSetupTest.kt
@@ -140,7 +140,8 @@ class EnvironmentSetupTest : BaseTest() {
             EnvironmentSetup.Type.WRU_XA,
             EnvironmentSetup.Type.LOCAL
         )
-        private const val GOOD_JSON = """
+        private const val GOOD_JSON =
+            """
             {
                 "PROD": {
                     "USE_EUR_KEY_PKGS" : true,
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/HttpErrorParserTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/HttpErrorParserTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6e5c4b649ed8ecb5423233f2fb4eaa710c884641
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/HttpErrorParserTest.kt
@@ -0,0 +1,126 @@
+package de.rki.coronawarnapp.http
+
+import de.rki.coronawarnapp.exception.http.CwaWebException
+import io.kotest.assertions.throwables.shouldThrow
+import io.kotest.matchers.shouldBe
+import io.kotest.matchers.string.shouldContain
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.mockk
+import okhttp3.Interceptor
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.Protocol
+import okhttp3.Request
+import okhttp3.Response
+import okhttp3.ResponseBody.Companion.toResponseBody
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+
+class HttpErrorParserTest : BaseTest() {
+
+    @MockK lateinit var chain: Interceptor.Chain
+
+    @BeforeEach
+    fun setup() {
+        MockKAnnotations.init(this)
+
+        every { chain.request() } returns mockk()
+    }
+
+    @AfterEach
+    fun teardown() {
+        clearAllMocks()
+    }
+
+    private val baseResponse: Response.Builder
+        get() = Response.Builder().apply {
+            protocol(Protocol.HTTP_1_1)
+            Request.Builder().apply {
+                url("http://url.url")
+            }.build().let { request(it) }
+        }
+
+    @Test
+    fun `normal response`() {
+        val response = baseResponse.apply {
+            code(200)
+            message("")
+        }.build()
+        every { chain.proceed(any()) } returns response
+        HttpErrorParser().intercept(chain) shouldBe response
+    }
+
+    @Test
+    fun `error without message`() {
+        val response = baseResponse.apply {
+            code(404)
+            message("")
+        }.build()
+        every { chain.proceed(any()) } returns response
+        val exception = shouldThrow<CwaWebException> { HttpErrorParser().intercept(chain) }
+        exception.statusCode shouldBe 404
+        exception.message shouldContain "code=404 message= body=null"
+    }
+
+    @Test
+    fun `error with message`() {
+        val response = baseResponse.apply {
+            code(403)
+            message("Forbidden")
+        }.build()
+        every { chain.proceed(any()) } returns response
+        val exception = shouldThrow<CwaWebException> { HttpErrorParser().intercept(chain) }
+        exception.statusCode shouldBe 403
+        exception.message shouldContain "message=Forbidden"
+        exception.message shouldContain "body=null"
+    }
+
+    @Test
+    fun `error in body`() {
+        val response = baseResponse.apply {
+            code(500)
+            message("")
+            body("{\"errorCode\":\"APK_CERTIFICATE_MISMATCH\"}".toResponseBody("application/json".toMediaTypeOrNull()))
+        }.build()
+        every { chain.proceed(any()) } returns response
+        val exception = shouldThrow<CwaWebException> { HttpErrorParser().intercept(chain) }
+        exception.statusCode shouldBe 500
+        exception.message shouldContain "message= "
+        exception.message shouldContain "body={\"errorCode\":\"APK_CERTIFICATE_MISMATCH\"}"
+    }
+
+    @Test
+    fun `error in message and body`() {
+        val response = baseResponse.apply {
+            code(501)
+            message("Error")
+            body("{\"errorCode\":\"APK_CERTIFICATE_MISMATCH\"}".toResponseBody("application/json".toMediaTypeOrNull()))
+        }.build()
+        every { chain.proceed(any()) } returns response
+        val exception = shouldThrow<CwaWebException> { HttpErrorParser().intercept(chain) }
+        exception.statusCode shouldBe 501
+        exception.message shouldContain "message=Error"
+        exception.message shouldContain "body={\"errorCode\":\"APK_CERTIFICATE_MISMATCH\"}"
+    }
+
+    @Test
+    fun `oversized errors are handled`() {
+        val response = baseResponse.apply {
+            code(501)
+            message("")
+            body(
+                (1..5000).joinToString { "1" }.toResponseBody()
+            )
+        }.build()
+        every { chain.proceed(any()) } returns response
+        val exception = shouldThrow<CwaWebException> { HttpErrorParser().intercept(chain) }
+        exception.statusCode shouldBe 501
+        val start = exception.message!!.indexOf("body=")
+        val body = exception.message!!.substring(start + "body=".length)
+        body.length shouldBe 2049
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt
index c7c651a717af120aeb9a78af50b72de03f638623..0ffe699cec58e0430ac21977fba37fa706189f81 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt
@@ -24,6 +24,7 @@ import de.rki.coronawarnapp.util.DeviceUIState.PAIRED_POSITIVE
 import de.rki.coronawarnapp.util.DeviceUIState.PAIRED_POSITIVE_TELETAN
 import de.rki.coronawarnapp.util.NetworkRequestWrapper
 import de.rki.coronawarnapp.util.security.EncryptionErrorResetTool
+import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.clearAllMocks
@@ -65,6 +66,7 @@ class HomeFragmentViewModelTest : BaseTest() {
     @MockK lateinit var appConfigProvider: AppConfigProvider
     @MockK lateinit var statisticsProvider: StatisticsProvider
     @MockK lateinit var deadmanNotificationScheduler: DeadmanNotificationScheduler
+    @MockK lateinit var appShortcutsHelper: AppShortcutsHelper
 
     @BeforeEach
     fun setup() {
@@ -100,7 +102,8 @@ class HomeFragmentViewModelTest : BaseTest() {
         cwaSettings = cwaSettings,
         appConfigProvider = appConfigProvider,
         statisticsProvider = statisticsProvider,
-        deadmanNotificationScheduler = deadmanNotificationScheduler
+        deadmanNotificationScheduler = deadmanNotificationScheduler,
+        appShortcutsHelper = appShortcutsHelper
     )
 
     @Test
@@ -196,16 +199,10 @@ class HomeFragmentViewModelTest : BaseTest() {
         every { errorResetTool.isResetNoticeToBeShown } returns false andThen true
 
         with(createInstance()) {
-            showPopUpsOrNavigate()
-            popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowInteropDeltaOnboarding
-
-            showPopUpsOrNavigate()
-            popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowNewReleaseFragment
-
-            showPopUpsOrNavigate()
+            showPopUps()
             popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowTracingExplanation(1)
 
-            showPopUpsOrNavigate()
+            showPopUps()
             popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowErrorResetDialog
         }
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/detectiontracker/ExposureDetectionTrackerStorageTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/detectiontracker/ExposureDetectionTrackerStorageTest.kt
index f6d10c1e31ad6001a9444be1db0ce83e8866c67e..a8557130830adcc771cc40661a9570849627a20d 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/detectiontracker/ExposureDetectionTrackerStorageTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/detectiontracker/ExposureDetectionTrackerStorageTest.kt
@@ -28,7 +28,8 @@ class ExposureDetectionTrackerStorageTest : BaseIOTest() {
 
     private val gson = GsonBuilder().setPrettyPrinting().create()
 
-    private val demoJsonString = """
+    private val demoJsonString =
+        """
             {
               "b2b98400-058d-43e6-b952-529a5255248b": {
                 "identifier": "b2b98400-058d-43e6-b952-529a5255248b",
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt
index e9c8e735adfce7d5be19c7550fdba1a21a5ce337..9d4aa696bf426187d313f2d46a45c2ae9a90c1f6 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt
@@ -1,33 +1,101 @@
 package de.rki.coronawarnapp.nearby.modules.tekhistory
 
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
 import com.google.android.gms.common.api.ApiException
 import com.google.android.gms.common.api.Status
 import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient
+import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient.EXTRA_TEMPORARY_EXPOSURE_KEY_LIST
+import com.google.android.gms.nearby.exposurenotification.ExposureNotificationStatusCodes
+import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
+import de.rki.coronawarnapp.nearby.modules.version.ENFVersion
+import io.kotest.assertions.throwables.shouldThrow
 import io.kotest.assertions.throwables.shouldThrowExactly
 import io.kotest.matchers.shouldBe
+import io.kotest.matchers.types.instanceOf
 import io.mockk.Called
 import io.mockk.MockKAnnotations
+import io.mockk.Runs
 import io.mockk.clearAllMocks
+import io.mockk.coEvery
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
+import io.mockk.just
 import io.mockk.mockk
+import io.mockk.spyk
 import io.mockk.verify
+import io.mockk.verifyOrder
+import kotlinx.coroutines.TimeoutCancellationException
+import kotlinx.coroutines.async
 import kotlinx.coroutines.test.runBlockingTest
 import org.junit.jupiter.api.AfterEach
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
 import testhelpers.BaseTest
 import testhelpers.gms.MockGMSTask
+import timber.log.Timber
+import java.io.PrintWriter
 
 class DefaultTEKHistoryProviderTest : BaseTest() {
 
     @MockK lateinit var client: ExposureNotificationClient
+    @MockK lateinit var enfVersion: ENFVersion
+    @MockK lateinit var context: Context
+
+    private var currentReceiver: BroadcastReceiver? = null
 
     @BeforeEach
     fun setup() {
         MockKAnnotations.init(this)
 
-        every { client.temporaryExposureKeyHistory } answers { MockGMSTask.forValue(listOf(mockk())) }
+        /**
+         * Setup defaults that equal the expected start state on a device
+         * No authorization yet, no keys yet.
+         * New devices are expected to have ENF Version 1.8+
+         */
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+
+        every { client.temporaryExposureKeyHistory } answers {
+            MockGMSTask.forError(
+                spyk(ApiException(Status(ExposureNotificationStatusCodes.RESOLUTION_REQUIRED))).apply {
+                    every { status } returns mockk<Status>().apply {
+                        every { hasResolution() } returns true
+                    }
+                }
+            )
+        }
+
+        every { context.registerReceiver(any(), any()) } answers {
+            currentReceiver = arg<BroadcastReceiver>(0)
+            Timber.d("Received new receiver, calling onReceive with mock: %s", currentReceiver)
+            val intent = mockk<Intent>().apply {
+                every {
+                    getParcelableArrayListExtra<TemporaryExposureKey>(EXTRA_TEMPORARY_EXPOSURE_KEY_LIST)
+                } returns null
+            }
+            currentReceiver!!.onReceive(context, intent)
+            mockk()
+        }
+        every { context.unregisterReceiver(any()) } answers {
+            val receiver = arg<BroadcastReceiver>(0)
+            if (receiver != currentReceiver) {
+                throw IllegalArgumentException("That receiver is not registered.")
+            } else {
+                currentReceiver = null
+            }
+        }
+
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers {
+            MockGMSTask.forError(
+                spyk(ApiException(Status(ExposureNotificationStatusCodes.RESOLUTION_REQUIRED))).apply {
+                    every { status } returns mockk<Status>().apply {
+                        every { hasResolution() } returns true
+                    }
+                }
+            )
+        }
+        every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } answers { MockGMSTask.forValue(null) }
     }
 
     @AfterEach
@@ -36,11 +104,14 @@ class DefaultTEKHistoryProviderTest : BaseTest() {
     }
 
     private fun createInstance() = DefaultTEKHistoryProvider(
-        client = client
+        client = client,
+        enfVersion = enfVersion,
+        context = context
     )
 
     @Test
-    fun `init is sideeffect free and lazy`() = runBlockingTest {
+    fun `ENFV1_7 init is side effect free and lazy`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns false
         createInstance()
 
         advanceUntilIdle()
@@ -49,17 +120,230 @@ class DefaultTEKHistoryProviderTest : BaseTest() {
     }
 
     @Test
-    fun `history is forwarded`() = runBlockingTest {
-        val instance = createInstance()
-        instance.getTEKHistory().size shouldBe 1
+    fun `ENFV1_8 init is side effect free and lazy`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        createInstance()
+
+        advanceUntilIdle()
+
+        verify { client wasNot Called }
     }
 
     @Test
-    fun `errors are forwarded`() = runBlockingTest {
+    fun `ENFV1_7 errors are forwarded`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns false
         val error = ApiException(Status.RESULT_DEAD_CLIENT)
         every { client.temporaryExposureKeyHistory } answers { MockGMSTask.forError(error) }
+
         val instance = createInstance()
 
         shouldThrowExactly<ApiException> { instance.getTEKHistory() } shouldBe error
+
+        verify { client.temporaryExposureKeyHistory }
+        verify(exactly = 0) {
+            client.requestPreAuthorizedTemporaryExposureKeyHistory()
+            client.requestPreAuthorizedTemporaryExposureKeyRelease()
+        }
+    }
+
+    @Test
+    fun `ENFV1_7 getTEKHistory only calls the normal API`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns false
+        val mockTEK = mockk<TemporaryExposureKey>()
+        every { client.temporaryExposureKeyHistory } answers { MockGMSTask.forValue(listOf(mockTEK)) }
+
+        createInstance().getTEKHistory() shouldBe listOf(mockTEK)
+
+        verify { client.temporaryExposureKeyHistory }
+        verify(exactly = 0) {
+            client.requestPreAuthorizedTemporaryExposureKeyHistory()
+            client.requestPreAuthorizedTemporaryExposureKeyRelease()
+        }
+    }
+
+    @Test
+    fun `ENFV1_7 preAuthorizeExposureKeyHistory return false on older Api`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns false
+
+        createInstance().preAuthorizeExposureKeyHistory() shouldBe false
+    }
+
+    @Test
+    fun `ENFV1_8 preAuthorizeExposureKeyHistory return true on newer Api`() = runBlockingTest {
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers { MockGMSTask.forValue(null) }
+
+        createInstance().preAuthorizeExposureKeyHistory() shouldBe true
+    }
+
+    @Test
+    fun `ENFV1_8 getTEKHistory request keys from new Api`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers { MockGMSTask.forValue(null) }
+
+        createInstance().getTEKHistory()
+
+        verify(exactly = 1) { client.requestPreAuthorizedTemporaryExposureKeyRelease() }
+    }
+
+    @Test
+    fun `ENFV1_8 getTEKHistory throws ApiException on new Api`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        val error = mockk<ApiException>().apply {
+            every { status.hasResolution() } returns true
+            every { printStackTrace(any<PrintWriter>()) } just Runs
+        }
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers { MockGMSTask.forError(error) }
+
+        shouldThrow<ApiException> {
+            createInstance().getTEKHistory()
+        }
+    }
+
+    @Test
+    fun `ENFV1_8 getTEKHistory request keys from new Api fallback to old Api on error`() = runBlockingTest {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers { MockGMSTask.forError(Exception()) }
+        val mockTEK = mockk<TemporaryExposureKey>()
+        every { client.temporaryExposureKeyHistory } answers { MockGMSTask.forValue(listOf(mockTEK)) }
+
+        createInstance().getTEKHistory() shouldBe listOf(mockTEK)
+
+        verify(exactly = 1) { client.temporaryExposureKeyHistory }
+    }
+
+    @Test
+    fun `ENFV1_8 pre authorized key release timeout after 5 seconds`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } returns MockGMSTask.timeout()
+        verify(exactly = 0) { context.unregisterReceiver(any()) }
+
+        runBlockingTest {
+            val deferred = async { createInstance().getPreAuthorizedExposureKeys() }
+            advanceTimeBy(6_000)
+            deferred.getCompletionExceptionOrNull() shouldBe instanceOf(TimeoutCancellationException::class)
+        }
+
+        currentReceiver shouldBe null // We unregistered
+        verify { context.unregisterReceiver(any()) }
+    }
+
+    @Test
+    fun `ENFV1_8 pre authorized key release broadcast receiver timeout after 5 seconds`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+
+        // We don't call onReceive
+        every { context.registerReceiver(any(), any()) } answers {
+            currentReceiver = arg(0)
+            mockk()
+        }
+
+        verify(exactly = 0) { context.unregisterReceiver(any()) }
+
+        runBlockingTest {
+            val deferred = async { createInstance().getPreAuthorizedExposureKeys() }
+            advanceTimeBy(6_000)
+            deferred.getCompletionExceptionOrNull() shouldBe instanceOf(TimeoutCancellationException::class)
+        }
+
+        currentReceiver shouldBe null // We unregistered
+        verify { context.unregisterReceiver(any()) }
+    }
+
+    @Test
+    fun `ENFV1_7 getTEKHistoryOrRequestPermission - authorization required`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns false
+
+        val onTEKHistoryAvailable = mockk<(List<TemporaryExposureKey>) -> Unit>(relaxed = true)
+        val onPermissionRequired = mockk<(Status) -> Unit>(relaxed = true)
+
+        runBlockingTest {
+            createInstance().getTEKHistoryOrRequestPermission(
+                onTEKHistoryAvailable = onTEKHistoryAvailable,
+                onPermissionRequired = onPermissionRequired
+            )
+        }
+
+        verify {
+            onPermissionRequired.invoke(any())
+            onTEKHistoryAvailable wasNot Called
+        }
+    }
+
+    @Test
+    fun `ENFV1_8 getTEKHistoryOrRequestPermission - if not preauthorized and no resolution then use the old API`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } returns MockGMSTask.forError(Exception())
+
+        val onTEKHistoryAvailable = mockk<(List<TemporaryExposureKey>) -> Unit>(relaxed = true)
+        val onPermissionRequired = mockk<(Status) -> Unit>(relaxed = true)
+
+        runBlockingTest {
+            createInstance().getTEKHistoryOrRequestPermission(
+                onTEKHistoryAvailable = onTEKHistoryAvailable,
+                onPermissionRequired = onPermissionRequired
+            )
+        }
+
+        verify {
+            onPermissionRequired.invoke(any())
+            onTEKHistoryAvailable wasNot Called
+            client.temporaryExposureKeyHistory
+        }
+    }
+
+    @Test
+    fun `ENFV1_7 getTEKHistoryOrRequestPermission - API error on old api is rethrown`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns false
+        every { client.temporaryExposureKeyHistory } returns MockGMSTask.forError(RuntimeException())
+
+        runBlockingTest {
+            shouldThrow<RuntimeException> {
+                createInstance().getTEKHistoryOrRequestPermission(mockk(), mockk())
+            }
+        }
+    }
+
+    @Test
+    fun `ENFV1_8 getTEKHistoryOrRequestPermission - error despite authorization causes us to try the old API`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+
+        val mockTEK = mockk<TemporaryExposureKey>()
+        every { client.temporaryExposureKeyHistory } returns MockGMSTask.forValue(listOf(mockTEK))
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } returns MockGMSTask.forValue(null)
+        every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } returns MockGMSTask.forError(RuntimeException())
+
+        val onTEKHistoryAvailable = mockk<(List<TemporaryExposureKey>) -> Unit>(relaxed = true)
+        val onPermissionRequired = mockk<(Status) -> Unit>(relaxed = true)
+
+        runBlockingTest {
+            createInstance().getTEKHistoryOrRequestPermission(
+                onTEKHistoryAvailable = onTEKHistoryAvailable,
+                onPermissionRequired = onPermissionRequired
+            )
+        }
+
+        verify {
+            onTEKHistoryAvailable.invoke(listOf(mockTEK))
+            onPermissionRequired wasNot Called
+        }
+        verifyOrder {
+            client.requestPreAuthorizedTemporaryExposureKeyHistory()
+            client.requestPreAuthorizedTemporaryExposureKeyRelease()
+            client.temporaryExposureKeyHistory
+        }
+    }
+
+    @Test
+    fun `ENFV1_8 getTEKHistoryOrRequestPermission - an error on all APIs is rethrown`() {
+        coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true
+        every { client.temporaryExposureKeyHistory } returns MockGMSTask.forError(IllegalStateException())
+        every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } returns MockGMSTask.forValue(null)
+        every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } returns MockGMSTask.forError(RuntimeException())
+
+        runBlockingTest {
+            shouldThrow<IllegalStateException> {
+                createInstance().getTEKHistoryOrRequestPermission(mockk(), mockk())
+            }
+        }
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tracing/DefaultTracingStatusTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tracing/DefaultTracingStatusTest.kt
index ec0ba8d4a53bec4c79e4629f6a3900fffb1cce48..055c7212716093af3b127b12a8dc9546e42a52d3 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tracing/DefaultTracingStatusTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tracing/DefaultTracingStatusTest.kt
@@ -60,13 +60,24 @@ class DefaultTracingStatusTest : BaseTest() {
     @Test
     fun `state is updated and polling stops on cancel`() = runBlockingTest2(ignoreActive = true) {
         every { client.isEnabled } returnsMany listOf(
-            true, false, true, false, true, false, true
+            true,
+            false,
+            true,
+            false,
+            true,
+            false,
+            true
         ).map { MockGMSTask.forValue(it) }
 
         val instance = createInstance(scope = this)
 
         instance.isTracingEnabled.take(6).toList() shouldBe listOf(
-            true, false, true, false, true, false
+            true,
+            false,
+            true,
+            false,
+            true,
+            false
         )
         verify(exactly = 6) { client.isEnabled }
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersionTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersionTest.kt
index 239501653d801580e7d1e48b718594f54d7b370d..4eefa12543998090c7a0c4c510e0fc6f8b22e16d 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersionTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/version/DefaultENFVersionTest.kt
@@ -138,15 +138,6 @@ internal class DefaultENFVersionTest : BaseTest() {
         }
     }
 
-    @Test
-    fun `invalid input for isAtLeast throws IllegalArgumentException`() {
-        runBlockingTest {
-            shouldThrow<IllegalArgumentException> {
-                createInstance().isAtLeast(16)
-            }
-        }
-    }
-
     @Test
     fun `isAtLeast returns false when client not connected`() {
         every { client.version } returns MockGMSTask.forError(ApiException(Status(API_NOT_CONNECTED)))
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoFragmentTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..03ad1e074b0739a12faf6f28f5e6657fe59efed4
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoFragmentTest.kt
@@ -0,0 +1,72 @@
+package de.rki.coronawarnapp.release
+
+import android.content.Context
+import android.os.Build
+import androidx.test.core.app.ApplicationProvider
+import de.rki.coronawarnapp.R
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+import testhelpers.BaseTest
+import testhelpers.EmptyApplication
+
+@Config(sdk = [Build.VERSION_CODES.P], application = EmptyApplication::class)
+@RunWith(RobolectricTestRunner::class)
+class NewReleaseInfoFragmentTest : BaseTest() {
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this)
+    }
+
+    @After
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    val context: Context
+        get() = ApplicationProvider.getApplicationContext()
+
+    @Config(qualifiers = "de")
+    @Test
+    fun `ensure GERMAN new release info arrays are of equal length`() = loadAndCompareStringArrayResources()
+
+    @Config(qualifiers = "en")
+    @Test
+    fun `ensure ENGLISH new release info arrays are of equal length`() = loadAndCompareStringArrayResources()
+
+    @Config(qualifiers = "pl")
+    @Test
+    fun `ensure POLISH new release info arrays are of equal length`() = loadAndCompareStringArrayResources()
+
+    @Config(qualifiers = "ro")
+    @Test
+    fun `ensure ROMANIAN new release info arrays are of equal length`() = loadAndCompareStringArrayResources()
+
+    @Config(qualifiers = "tr")
+    @Test
+    fun `ensure TURKISH new release info arrays are of equal length`() = loadAndCompareStringArrayResources()
+
+    @Config(qualifiers = "fr")
+    @Test
+    fun `ensure DEFAULT aka FRENCH new release info arrays are of equal length`() = loadAndCompareStringArrayResources()
+
+
+    private fun loadAndCompareStringArrayResources() {
+        val titles = context.resources.getStringArray(R.array.new_release_title)
+        val bodies = context.resources.getStringArray(R.array.new_release_body)
+        val labels = context.resources.getStringArray(R.array.new_release_linkified_labels)
+        val urls = context.resources.getStringArray(R.array.new_release_target_urls)
+
+        titles.size shouldBe bodies.size
+        bodies.size shouldBe labels.size
+        labels.size shouldBe urls.size
+    }
+
+}
\ No newline at end of file
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModelTest.kt
index 6bc5deee8229f2e495d10ad67cbb1f73377c5fee..094ae35516f1f4e74ca1d9f2d63c3e54e7369fa3 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/release/NewReleaseInfoViewModelTest.kt
@@ -36,29 +36,58 @@ class NewReleaseInfoViewModelTest {
     }
 
     @Test
-    fun testGetInfoItem() {
-        val item1 = NewReleaseInfoItem("title", "body")
-        val item2 = NewReleaseInfoItem("title2", "body2")
+    fun `title and body shall be mapped to list of items`() {
+        val item1 = NewReleaseInfoItemText("title", "body")
+        val item2 = NewReleaseInfoItemText("title2", "body2")
         val titles = arrayOf(item1.title, item2.title)
         val bodies = arrayOf(item1.body, item2.body)
-        viewModel.getItems(titles, bodies) shouldBe listOf(item1, item2)
+        viewModel.getItems(titles, bodies, arrayOf("",""),  arrayOf("","")) shouldBe listOf(item1, item2)
     }
 
     @Test
-    fun testGetInfoItemTitleMissing() {
-        val item1 = NewReleaseInfoItem("title", "body")
-        val item2 = NewReleaseInfoItem("title2", "body2")
+    fun `missing title results in an empty list`() {
+        val item1 = NewReleaseInfoItemText("title", "body")
+        val item2 = NewReleaseInfoItemText("title2", "body2")
         val titles = arrayOf(item1.title)
         val bodies = arrayOf(item1.body, item2.body)
-        viewModel.getItems(titles, bodies) shouldBe listOf(item1)
+        viewModel.getItems(titles, bodies,  arrayOf("",""),  arrayOf("","")) shouldBe emptyList()
     }
 
     @Test
-    fun testGetInfoItemBodyMissing() {
-        val item1 = NewReleaseInfoItem("title", "body")
-        val item2 = NewReleaseInfoItem("title2", "body2")
+    fun `missing body results in an empty list`() {
+        val item1 = NewReleaseInfoItemText("title", "body")
+        val item2 = NewReleaseInfoItemText("title2", "body2")
         val titles = arrayOf(item1.title, item2.title)
         val bodies = arrayOf(item1.body)
-        viewModel.getItems(titles, bodies) shouldBe listOf(item1)
+        viewModel.getItems(titles, bodies,  arrayOf("",""),  arrayOf("","")) shouldBe emptyList()
+    }
+
+    @Test
+    fun `missing linkified label results in an empty list`() {
+        val item1 = NewReleaseInfoItemText("title", "body")
+        val item2 = NewReleaseInfoItemText("title2", "body2")
+        val titles = arrayOf(item1.title, item2.title)
+        val bodies = arrayOf(item1.body, item2.body)
+        viewModel.getItems(titles, bodies,  arrayOf(""),  arrayOf("","")) shouldBe emptyList()
+    }
+
+    @Test
+    fun `missing target url results in an empty list`() {
+        val item1 = NewReleaseInfoItemText("title", "body")
+        val item2 = NewReleaseInfoItemText("title2", "body2")
+        val titles = arrayOf(item1.title, item2.title)
+        val bodies = arrayOf(item1.body, item2.body)
+        viewModel.getItems(titles, bodies,  arrayOf("",""),  arrayOf("")) shouldBe emptyList()
+    }
+
+    @Test
+    fun `items with and without links are mapped successfully`() {
+        val item1 = NewReleaseInfoItemText("title", "body")
+        val item2 = NewReleaseInfoItemLinked("title2", "body2", "label2", "url2")
+        val titles = arrayOf(item1.title, item2.title)
+        val bodies = arrayOf(item1.body, item2.body)
+        val linkifiedLabels = arrayOf("", item2.linkifiedLabel)
+        val linkTargets = arrayOf("", item2.linkTarget)
+        viewModel.getItems(titles, bodies, linkifiedLabels, linkTargets) shouldBe listOf(item1, item2)
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt
index 27c672aa7341032a9fc1491a6c058c4fa41dc429..e52889264f69a786dafdb546b03fbfbed7cc5f7f 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.risk
 import android.content.Context
 import androidx.core.app.NotificationManagerCompat
 import com.google.android.gms.nearby.exposurenotification.ExposureWindow
+import de.rki.coronawarnapp.datadonation.survey.Surveys
 import de.rki.coronawarnapp.notification.NotificationHelper
 import de.rki.coronawarnapp.risk.RiskState.CALCULATION_FAILED
 import de.rki.coronawarnapp.risk.RiskState.INCREASED_RISK
@@ -17,6 +18,7 @@ import io.mockk.Called
 import io.mockk.MockKAnnotations
 import io.mockk.Runs
 import io.mockk.clearAllMocks
+import io.mockk.coEvery
 import io.mockk.coVerifySequence
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
@@ -40,6 +42,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
     @MockK lateinit var foregroundState: ForegroundState
     @MockK lateinit var riskLevelSettings: RiskLevelSettings
     @MockK lateinit var notificationHelper: NotificationHelper
+    @MockK lateinit var surveys: Surveys
 
     @BeforeEach
     fun setup() {
@@ -53,6 +56,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
         every { notificationManagerCompat.areNotificationsEnabled() } returns true
         every { riskLevelSettings.lastChangeCheckedRiskLevelTimestamp = any() } just Runs
         every { riskLevelSettings.lastChangeCheckedRiskLevelTimestamp } returns null
+        coEvery { surveys.resetSurvey(Surveys.Type.HIGH_RISK_ENCOUNTER) } just Runs
     }
 
     @AfterEach
@@ -80,7 +84,8 @@ class RiskLevelChangeDetectorTest : BaseTest() {
         notificationManagerCompat = notificationManagerCompat,
         foregroundState = foregroundState,
         riskLevelSettings = riskLevelSettings,
-        notificationHelper = notificationHelper
+        notificationHelper = notificationHelper,
+        surveys = surveys
     )
 
     @Test
@@ -96,6 +101,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
             coVerifySequence {
                 LocalData wasNot Called
                 notificationManagerCompat wasNot Called
+                surveys wasNot Called
             }
         }
     }
@@ -118,6 +124,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
             coVerifySequence {
                 LocalData wasNot Called
                 notificationManagerCompat wasNot Called
+                surveys wasNot Called
             }
         }
     }
@@ -141,6 +148,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
                 LocalData.submissionWasSuccessful()
                 foregroundState.isInForeground
                 LocalData.isUserToBeNotifiedOfLoweredRiskLevel = any()
+                surveys.resetSurvey(Surveys.Type.HIGH_RISK_ENCOUNTER)
             }
         }
     }
@@ -163,6 +171,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
             coVerifySequence {
                 LocalData.submissionWasSuccessful()
                 foregroundState.isInForeground
+                surveys wasNot Called
             }
         }
     }
@@ -186,6 +195,7 @@ class RiskLevelChangeDetectorTest : BaseTest() {
             coVerifySequence {
                 LocalData wasNot Called
                 notificationManagerCompat wasNot Called
+                surveys wasNot Called
             }
         }
     }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskConfigTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskConfigTest.kt
index 1e5267810c9e8314c6a8a61a3ae6aac7f2e394ca..3c2f57ac47d75e6b93ee60a79140550b93943a68 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskConfigTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskConfigTest.kt
@@ -32,12 +32,16 @@ class RiskLevelTaskConfigTest : BaseTest() {
 
     @Test
     fun `risk level preconditions are met`() {
-        every { exposureDetectionTracker.calculations } returns MutableStateFlow(mapOf("" to TrackedExposureDetection(
-            identifier = "",
-            startedAt = Instant(),
-            result = TrackedExposureDetection.Result.NO_MATCHES,
-            enfVersion = TrackedExposureDetection.EnfVersion.V2_WINDOW_MODE
-        )))
+        every { exposureDetectionTracker.calculations } returns MutableStateFlow(
+            mapOf(
+                "" to TrackedExposureDetection(
+                    identifier = "",
+                    startedAt = Instant(),
+                    result = TrackedExposureDetection.Result.NO_MATCHES,
+                    enfVersion = TrackedExposureDetection.EnfVersion.V2_WINDOW_MODE
+                )
+            )
+        )
         runBlocking {
             RiskLevelTask.Config(exposureDetectionTracker)
                 .preconditions.fold(true) { result, precondition ->
@@ -49,7 +53,7 @@ class RiskLevelTaskConfigTest : BaseTest() {
     @Test
     fun `risk level preconditions are not met, because there are no detections`() {
         every { exposureDetectionTracker.calculations } returns MutableStateFlow(emptyMap())
-            runBlocking {
+        runBlocking {
             RiskLevelTask.Config(exposureDetectionTracker)
                 .preconditions.fold(true) { result, precondition ->
                     result && precondition()
@@ -59,12 +63,16 @@ class RiskLevelTaskConfigTest : BaseTest() {
 
     @Test
     fun `risk level preconditions are not met, because there are no enf V2 detections`() {
-        every { exposureDetectionTracker.calculations } returns MutableStateFlow(mapOf("" to TrackedExposureDetection(
-            identifier = "",
-            startedAt = Instant(),
-            result = TrackedExposureDetection.Result.NO_MATCHES,
-            enfVersion = TrackedExposureDetection.EnfVersion.V1_LEGACY_MODE
-        )))
+        every { exposureDetectionTracker.calculations } returns MutableStateFlow(
+            mapOf(
+                "" to TrackedExposureDetection(
+                    identifier = "",
+                    startedAt = Instant(),
+                    result = TrackedExposureDetection.Result.NO_MATCHES,
+                    enfVersion = TrackedExposureDetection.EnfVersion.V1_LEGACY_MODE
+                )
+            )
+        )
         runBlocking {
             RiskLevelTask.Config(exposureDetectionTracker)
                 .preconditions.fold(true) { result, precondition ->
@@ -75,11 +83,15 @@ class RiskLevelTaskConfigTest : BaseTest() {
 
     @Test
     fun `risk level preconditions are not met, because detection is not finished yet`() {
-        every { exposureDetectionTracker.calculations } returns MutableStateFlow(mapOf("" to TrackedExposureDetection(
-            identifier = "",
-            startedAt = Instant(),
-            enfVersion = TrackedExposureDetection.EnfVersion.V2_WINDOW_MODE
-        )))
+        every { exposureDetectionTracker.calculations } returns MutableStateFlow(
+            mapOf(
+                "" to TrackedExposureDetection(
+                    identifier = "",
+                    startedAt = Instant(),
+                    enfVersion = TrackedExposureDetection.EnfVersion.V2_WINDOW_MODE
+                )
+            )
+        )
         runBlocking {
             RiskLevelTask.Config(exposureDetectionTracker)
                 .preconditions.fold(true) { result, precondition ->
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/source/StatisticsParserTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/source/StatisticsParserTest.kt
index 86973e79c858b2369a48b34e8add2844a89e027b..1a176c5509e16b675de68181f3210bbfeb34fc3f 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/source/StatisticsParserTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/source/StatisticsParserTest.kt
@@ -159,7 +159,8 @@ class StatisticsParserTest : BaseTest() {
                     decimals = 0
                     trend = KeyFigureCardOuterClass.KeyFigure.Trend.INCREASING
                     trendSemantic = KeyFigureCardOuterClass.KeyFigure.TrendSemantic.NEGATIVE
-                }.build(), KeyFigureCardOuterClass.KeyFigure.newBuilder().apply {
+                }.build(),
+                KeyFigureCardOuterClass.KeyFigure.newBuilder().apply {
                     rank = KeyFigureCardOuterClass.KeyFigure.Rank.TERTIARY
                     value = 429181.0
                     decimals = 0
@@ -187,7 +188,8 @@ class StatisticsParserTest : BaseTest() {
                     decimals = 0
                     trend = KeyFigureCardOuterClass.KeyFigure.Trend.INCREASING
                     trendSemantic = KeyFigureCardOuterClass.KeyFigure.TrendSemantic.NEGATIVE
-                }.build(), KeyFigureCardOuterClass.KeyFigure.newBuilder().apply {
+                }.build(),
+                KeyFigureCardOuterClass.KeyFigure.newBuilder().apply {
                     rank = KeyFigureCardOuterClass.KeyFigure.Rank.TERTIARY
                     value = 429181.0
                     decimals = 0
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdaterTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdaterTest.kt
index d195dd54a3ec3224b44e014534b86a2e8cb85da4..a144db346003a15e2a0dd966931052a1b82a11c7 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdaterTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/data/tekhistory/TEKHistoryUpdaterTest.kt
@@ -63,7 +63,8 @@ class TEKHistoryUpdaterTest : BaseTest() {
     )
 
     @Test
-    fun `request is forwaded to enf client`() = runBlockingTest {
+    fun `request is forwarded to enf client`() = runBlockingTest {
+        every { tekHistoryStorage.tekData } returns flowOf(listOf())
         val callback = mockk<TEKHistoryUpdater.Callback>()
         val instance = createInstance(scope = this, callback = callback)
 
@@ -76,6 +77,38 @@ class TEKHistoryUpdaterTest : BaseTest() {
         }
     }
 
+    @Test
+    fun `request checks if there are cached keys`() = runBlockingTest {
+        every { tekHistoryStorage.tekData } returns flowOf(listOf())
+        val callback = mockk<TEKHistoryUpdater.Callback>()
+        val instance = createInstance(scope = this, callback = callback)
+
+        instance.updateTEKHistoryOrRequestPermission()
+        coVerify(exactly = 1) { tekHistoryStorage.tekData }
+    }
+
+    @Test
+    fun `request checks if there are cached keys and returns callback directly`() = runBlockingTest {
+        val teks = listOf<TemporaryExposureKey>(mockk(), mockk())
+        val mockedBatch = mockk<TEKHistoryStorage.TEKBatch>().apply {
+            every { keys } returns teks
+        }
+        every { tekHistoryStorage.tekData } returns flowOf(listOf(mockedBatch))
+        val callback = mockk<TEKHistoryUpdater.Callback>().apply {
+            every { onTEKAvailable(any()) } just Runs
+        }
+        val instance = createInstance(scope = this, callback = callback)
+
+        instance.updateTEKHistoryOrRequestPermission()
+        verify(exactly = 1) { callback.onTEKAvailable(teks) }
+        coVerify(exactly = 0) {
+            enfClient.getTEKHistoryOrRequestPermission(
+                any(),
+                any()
+            )
+        }
+    }
+
     @Test
     fun `if tracing is disabled then start tracing`() = runBlockingTest {
         coEvery { enfClient.isTracingEnabled } returns flowOf(false)
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/ExposureKeyHistoryCalculationsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/ExposureKeyHistoryCalculationsTest.kt
index d2e87ca0fbd61f8c3987c15b4f4d006faf710422..c11302caf5b8745c0441bb12ea107303e55a6b6d 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/ExposureKeyHistoryCalculationsTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/ExposureKeyHistoryCalculationsTest.kt
@@ -67,7 +67,8 @@ class ExposureKeyHistoryCalculationsTest {
     @Test
     fun test_toSortedHistory() {
         Assert.assertArrayEquals(
-            intArrayOf(8, 4, 3, 2, 1), instance.sortWithRecentKeyFirst(
+            intArrayOf(8, 4, 3, 2, 1),
+            instance.sortWithRecentKeyFirst(
                 listOf(
                     createKey(3),
                     createKey(8),
@@ -156,11 +157,14 @@ class ExposureKeyHistoryCalculationsTest {
             thisMorning.toLocalDate()
         )
         f(
-            result, intArrayOf(
+            result,
+            intArrayOf(
                 tek3.rollingStartIntervalNumber,
                 tek2.rollingStartIntervalNumber,
                 tek1.rollingStartIntervalNumber
-            ), intArrayOf(3998, 3999, 3999), intArrayOf(0, 1, 1)
+            ),
+            intArrayOf(3998, 3999, 3999),
+            intArrayOf(0, 1, 1)
         )
     }
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/TransmissionRiskVectorDeterminatorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/TransmissionRiskVectorDeterminatorTest.kt
index 07dee2671ed06e47b2cc3233d3797769702f8310..5e234903ceb7c200e9655c35d9b2b04ef15c03e3 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/TransmissionRiskVectorDeterminatorTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/TransmissionRiskVectorDeterminatorTest.kt
@@ -36,28 +36,32 @@ class TransmissionRiskVectorDeterminatorTest {
     @Test
     fun `match a positive symptom indication with the exact date of today`() {
         TransmissionRiskVectorDeterminator(timeStamper).determine(
-            Symptoms(timeStamper.nowUTC.startMinusDays(0), POSITIVE), now
+            Symptoms(timeStamper.nowUTC.startMinusDays(0), POSITIVE),
+            now
         ).raw shouldBe intArrayOf(8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1)
     }
 
     @Test
     fun `match a positive symptom indication with the exact date of yesterday`() {
         TransmissionRiskVectorDeterminator(timeStamper).determine(
-            Symptoms(timeStamper.nowUTC.startMinusDays(1), POSITIVE), now
+            Symptoms(timeStamper.nowUTC.startMinusDays(1), POSITIVE),
+            now
         ).raw shouldBe intArrayOf(8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1)
     }
 
     @Test
     fun `match a positive symptom indication with the exact date of 5 days ago`() {
         TransmissionRiskVectorDeterminator(timeStamper).determine(
-            Symptoms(timeStamper.nowUTC.startMinusDays(5), POSITIVE), now
+            Symptoms(timeStamper.nowUTC.startMinusDays(5), POSITIVE),
+            now
         ).raw shouldBe intArrayOf(2, 3, 5, 6, 8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1)
     }
 
     @Test
     fun `match a positive symptom indication with the exact date of 21 days ago`() {
         TransmissionRiskVectorDeterminator(timeStamper).determine(
-            Symptoms(timeStamper.nowUTC.startMinusDays(21), POSITIVE), now
+            Symptoms(timeStamper.nowUTC.startMinusDays(21), POSITIVE),
+            now
         ).raw shouldBe intArrayOf(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
     }
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/states/LowRiskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/states/LowRiskTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..98dc1549e59b148bb2277f6ce0232aa9fdbb5f28
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/states/LowRiskTest.kt
@@ -0,0 +1,71 @@
+package de.rki.coronawarnapp.tracing.states
+
+import android.content.Context
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.risk.RiskState
+import io.kotest.matchers.shouldBe
+import io.mockk.MockKAnnotations
+import io.mockk.clearAllMocks
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import org.joda.time.Instant
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+
+internal class LowRiskTest {
+
+    @MockK private lateinit var context: Context
+
+    @BeforeEach
+    fun setUp() {
+        MockKAnnotations.init(this)
+        every {
+            context.getString(
+                R.string.risk_card_low_risk_most_recent_body_encounter_on_single_day,
+                any()
+            )
+        } returns "String not relevant for this test"
+    }
+
+    @AfterEach
+    fun tearDown() {
+        clearAllMocks()
+    }
+
+    private val defaultRisk = LowRisk(
+        riskState = RiskState.LOW_RISK,
+        isInDetailsMode = false,
+        lastExposureDetectionTime = Instant.now(),
+        allowManualUpdate = false,
+        daysWithEncounters = 0,
+        activeTracingDays = 1,
+        lastEncounterAt = null
+    )
+
+    @Test
+    fun `Active tracing row should be visible in low risk card on the home screen when there are no encounters`() {
+        defaultRisk.isGoneOnContentLowView(context) shouldBe false
+    }
+
+    @Test
+    fun `Active tracing row should be gone in low risk card on the home screen when there are encounters`() {
+        defaultRisk
+            .copy(daysWithEncounters = 1, lastEncounterAt = Instant.now())
+            .isGoneOnContentLowView(context) shouldBe true
+    }
+
+    @Test
+    fun `Active tracing row should be shown in low risk detail screen when there are no encounters`() {
+        defaultRisk
+            .copy(isInDetailsMode = true)
+            .isGoneOnContentLowView(context) shouldBe false
+    }
+
+    @Test
+    fun `Active tracing row should be shown in low risk detail screen when there are encounters`() {
+        defaultRisk
+            .copy(daysWithEncounters = 1, lastEncounterAt = Instant.now(), isInDetailsMode = true)
+            .isGoneOnContentLowView(context) shouldBe false
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/information/InformationLegalPresentationTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/information/InformationLegalPresentationTest.kt
index 6e3b4a6003cbaacff6b60217ed62ae7360b2bf18..7d0f8db2a0470c93541f0f24c40c75855176b34e 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/information/InformationLegalPresentationTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/information/InformationLegalPresentationTest.kt
@@ -10,27 +10,43 @@ class InformationLegalPresentationTest {
     @Test
     fun test_showBackupLinkToContactForm() {
         // NO BACKUP NEEDED IN DE
-        Assert.assertFalse(InformationLegalPresentation(object : SystemInfoProvider {
-            override val locale: Locale
-                get() = Locale.GERMAN
-        }).showBackupLinkToContactForm)
+        Assert.assertFalse(
+            InformationLegalPresentation(
+                object : SystemInfoProvider {
+                    override val locale: Locale
+                        get() = Locale.GERMAN
+                }
+            ).showBackupLinkToContactForm
+        )
 
         // NO BACKUP NEEDED IN EN
-        Assert.assertFalse(InformationLegalPresentation(object : SystemInfoProvider {
-            override val locale: Locale
-                get() = Locale.ENGLISH
-        }).showBackupLinkToContactForm)
+        Assert.assertFalse(
+            InformationLegalPresentation(
+                object : SystemInfoProvider {
+                    override val locale: Locale
+                        get() = Locale.ENGLISH
+                }
+            ).showBackupLinkToContactForm
+        )
 
         // BACKUP NEEDED IN FR
-        Assert.assertTrue(InformationLegalPresentation(object : SystemInfoProvider {
-            override val locale: Locale
-                get() = Locale.FRENCH
-        }).showBackupLinkToContactForm)
+        Assert.assertTrue(
+            InformationLegalPresentation(
+                object : SystemInfoProvider {
+                    override val locale: Locale
+                        get() = Locale.FRENCH
+                }
+            ).showBackupLinkToContactForm
+        )
 
         // BACKUP NEEDED IN CN
-        Assert.assertTrue(InformationLegalPresentation(object : SystemInfoProvider {
-            override val locale: Locale
-                get() = Locale.CHINESE
-        }).showBackupLinkToContactForm)
+        Assert.assertTrue(
+            InformationLegalPresentation(
+                object : SystemInfoProvider {
+                    override val locale: Locale
+                        get() = Locale.CHINESE
+                }
+            ).showBackupLinkToContactForm
+        )
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModelTest.kt
index 63b1203140a7d028f8dce3f052407a3439210f97..930986dbe941afee2117dae7a527aed1fc0afb96 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/launcher/LauncherActivityViewModelTest.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.ui.launcher
 
+import de.rki.coronawarnapp.environment.BuildConfigWrap
+import de.rki.coronawarnapp.main.CWASettings
 import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.update.UpdateChecker
 import io.kotest.matchers.shouldBe
@@ -16,11 +18,13 @@ import org.junit.jupiter.api.Test
 import org.junit.jupiter.api.extension.ExtendWith
 import testhelpers.TestDispatcherProvider
 import testhelpers.extensions.InstantExecutorExtension
+import testhelpers.preferences.mockFlowPreference
 
 @ExtendWith(InstantExecutorExtension::class)
 class LauncherActivityViewModelTest {
 
     @MockK lateinit var updateChecker: UpdateChecker
+    @MockK lateinit var cwaSettings: CWASettings
 
     @BeforeEach
     fun setupFreshViewModel() {
@@ -29,12 +33,16 @@ class LauncherActivityViewModelTest {
         mockkObject(LocalData)
         every { LocalData.isOnboarded() } returns false
 
+        mockkObject(BuildConfigWrap)
+        every { BuildConfigWrap.VERSION_CODE } returns 10L
+
         coEvery { updateChecker.checkForUpdate() } returns UpdateChecker.Result(isUpdateNeeded = false)
     }
 
     private fun createViewModel() = LauncherActivityViewModel(
         updateChecker = updateChecker,
-        dispatcherProvider = TestDispatcherProvider()
+        dispatcherProvider = TestDispatcherProvider(),
+        cwaSettings = cwaSettings
     )
 
     @Test
@@ -59,6 +67,8 @@ class LauncherActivityViewModelTest {
     @Test
     fun `onboarding finished`() {
         every { LocalData.isOnboarded() } returns true
+        every { LocalData.isInteroperabilityShownAtLeastOnce } returns true
+        every { cwaSettings.lastChangelogVersion } returns mockFlowPreference(10L)
 
         val vm = createViewModel()
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/onboarding/EasyLanguageLinkTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/onboarding/EasyLanguageLinkTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..66fef2f3bc9ed2e47fa8ac2720a4c5bca1a5e371
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/onboarding/EasyLanguageLinkTest.kt
@@ -0,0 +1,60 @@
+package de.rki.coronawarnapp.ui.onboarding
+
+import io.kotest.matchers.shouldBe
+import io.mockk.every
+import io.mockk.mockkObject
+import io.mockk.unmockkAll
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
+import java.util.Locale
+
+class EasyLanguageLinkTest : BaseTest() {
+
+    @BeforeEach
+    fun setup() {
+        mockkObject(Locale.getDefault())
+    }
+
+    @AfterEach
+    fun teardown() {
+        unmockkAll()
+    }
+
+    @Test
+    fun showLinkForGerman() {
+        every { Locale.getDefault().language } returns "de"
+        showEasyLanguageLink() shouldBe true
+    }
+
+    @Test
+    fun showNoLinkForEnglish() {
+        every { Locale.getDefault().language } returns "en"
+        showEasyLanguageLink() shouldBe false
+    }
+
+    @Test
+    fun showNoLinkForTurkish() {
+        every { Locale.getDefault().language } returns "tr"
+        showEasyLanguageLink() shouldBe false
+    }
+
+    @Test
+    fun showNoLinkForBulgarian() {
+        every { Locale.getDefault().language } returns "bg"
+        showEasyLanguageLink() shouldBe false
+    }
+
+    @Test
+    fun showNoLinkForPolish() {
+        every { Locale.getDefault().language } returns "pl"
+        showEasyLanguageLink() shouldBe false
+    }
+
+    @Test
+    fun showNoLinkForRomanian() {
+        every { Locale.getDefault().language } returns "ro"
+        showEasyLanguageLink() shouldBe false
+    }
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModelTest.kt
index 7b48a9b4900cbc282bbd0645a02599123d388b5d..b419689200317fe41258f165c185b5c41ea2fb04 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsFragmentViewModelTest.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.ui.settings.start
 
 import android.content.Context
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
 import de.rki.coronawarnapp.tracing.GeneralTracingStatus
 import de.rki.coronawarnapp.ui.settings.notifications.NotificationSettings
 import de.rki.coronawarnapp.util.device.BackgroundModeStatus
@@ -28,6 +29,7 @@ class SettingsFragmentViewModelTest : BaseTest() {
     @MockK lateinit var tracingStatus: GeneralTracingStatus
     @MockK lateinit var notificationSettings: NotificationSettings
     @MockK lateinit var backgroundModeStatus: BackgroundModeStatus
+    @MockK lateinit var analytics: Analytics
 
     @BeforeEach
     fun setup() {
@@ -38,6 +40,8 @@ class SettingsFragmentViewModelTest : BaseTest() {
         every { notificationSettings.isNotificationsTestEnabled } returns flow { emit(true) }
 
         every { backgroundModeStatus.isIgnoringBatteryOptimizations } returns flow { emit(true) }
+
+        every { analytics.isAnalyticsEnabledFlow() } returns flow { emit(true) }
     }
 
     @AfterEach
@@ -49,7 +53,8 @@ class SettingsFragmentViewModelTest : BaseTest() {
         dispatcherProvider = TestDispatcherProvider(),
         tracingStatus = tracingStatus,
         backgroundModeStatus = backgroundModeStatus,
-        notificationSettings = notificationSettings
+        notificationSettings = notificationSettings,
+        analytics = analytics
     )
 
     @Test
@@ -86,4 +91,15 @@ class SettingsFragmentViewModelTest : BaseTest() {
         }
         verify { backgroundModeStatus.isIgnoringBatteryOptimizations }
     }
+
+    @Test
+    fun `analytics status is forwarded`() {
+        createInstance().apply {
+            analyticsState.observeForever { }
+            analyticsState.value shouldBe SettingsPrivacyPreservingAnalyticsState(
+                isEnabled = true
+            )
+        }
+        verify { analytics.isAnalyticsEnabledFlow() }
+    }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt
index 585c1c37fdc896b919972326fc41ed1bab736def..2467d7099a012f4b09496e9165e2e8f9dc39415c 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.ui.submission.qrcode.consent
 
+import com.google.android.gms.common.api.ApiException
+import de.rki.coronawarnapp.nearby.modules.tekhistory.TEKHistoryProvider
 import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
 import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.Country
@@ -7,9 +9,12 @@ import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.Runs
+import io.mockk.coEvery
+import io.mockk.coVerify
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
 import io.mockk.just
+import io.mockk.mockk
 import io.mockk.verify
 import kotlinx.coroutines.flow.MutableStateFlow
 import org.junit.jupiter.api.BeforeEach
@@ -17,12 +22,14 @@ import org.junit.jupiter.api.Test
 import org.junit.jupiter.api.extension.ExtendWith
 import testhelpers.TestDispatcherProvider
 import testhelpers.extensions.InstantExecutorExtension
+import java.io.PrintWriter
 
 @ExtendWith(InstantExecutorExtension::class)
 class SubmissionConsentViewModelTest {
 
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var interoperabilityRepository: InteroperabilityRepository
+    @MockK lateinit var tekHistoryProvider: TEKHistoryProvider
 
     lateinit var viewModel: SubmissionConsentViewModel
 
@@ -36,7 +43,8 @@ class SubmissionConsentViewModelTest {
         viewModel = SubmissionConsentViewModel(
             submissionRepository,
             interoperabilityRepository,
-            dispatcherProvider = TestDispatcherProvider()
+            dispatcherProvider = TestDispatcherProvider(),
+            tekHistoryProvider
         )
     }
 
@@ -63,4 +71,45 @@ class SubmissionConsentViewModelTest {
         viewModel.countries.observeForever { }
         viewModel.countries.value shouldBe countryList
     }
+
+    @Test
+    fun `giveGoogleConsentResult when user Allows routes to QR Code scan`() {
+        viewModel.giveGoogleConsentResult(true)
+        viewModel.routeToScreen.value shouldBe SubmissionNavigationEvents.NavigateToQRCodeScan
+    }
+
+    @Test
+    fun `giveGoogleConsentResult when user Doesn't Allow routes to QR Code scan`() {
+        viewModel.giveGoogleConsentResult(false)
+        viewModel.routeToScreen.value shouldBe SubmissionNavigationEvents.NavigateToQRCodeScan
+    }
+
+    @Test
+    fun `onConsentButtonClick sets normal consent and request new Google consent Api`() {
+        viewModel.onConsentButtonClick()
+        verify(exactly = 1) { submissionRepository.giveConsentToSubmission() }
+        coVerify(exactly = 1) { tekHistoryProvider.preAuthorizeExposureKeyHistory() }
+    }
+
+    @Test
+    fun `onConsentButtonClick triggers new Google consent window`() {
+        val apiException = mockk<ApiException>().apply {
+            every { status.hasResolution() } returns true
+            every { printStackTrace(any<PrintWriter>()) } just Runs
+        }
+        coEvery { tekHistoryProvider.preAuthorizeExposureKeyHistory() } throws apiException
+
+        viewModel.onConsentButtonClick()
+
+        viewModel.routeToScreen.value shouldBe SubmissionNavigationEvents.ResolvePlayServicesException(apiException)
+    }
+
+    @Test
+    fun `onConsentButtonClick routes to QR scan when unrecoverable Error is thrown`() {
+        coEvery { tekHistoryProvider.preAuthorizeExposureKeyHistory() } throws Exception("Unrecoverable Error")
+
+        viewModel.onConsentButtonClick()
+
+        viewModel.routeToScreen.value shouldBe SubmissionNavigationEvents.NavigateToQRCodeScan
+    }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/tan/TanTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/tan/TanTest.kt
index a2a9be3c29f49e74b068374d3c3e9d8612186b02..5e2eb71f0f0e0a3ae0fe828793ff74e99f7136c7 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/tan/TanTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/tan/TanTest.kt
@@ -31,7 +31,11 @@ class TanTest : BaseTest() {
     fun areCharactersValid() {
         // valid input strings (not necessarily valid TANs)
         val validStrings = arrayOf(
-            "ABCD", "2345", "PTPHM35RP4", "AAAAAAAAAA", "BBBBB"
+            "ABCD",
+            "2345",
+            "PTPHM35RP4",
+            "AAAAAAAAAA",
+            "BBBBB"
         )
         for (text in validStrings) {
             Tan.allCharactersValid(text) shouldBe true
@@ -39,7 +43,11 @@ class TanTest : BaseTest() {
 
         // invalid input strings
         val invalidStrings = arrayOf(
-            "ABCDÖ", "01234", "PTPHM15RP4", "AAAAAA AAA", "BB.BBB"
+            "ABCDÖ",
+            "01234",
+            "PTPHM15RP4",
+            "AAAAAA AAA",
+            "BB.BBB"
         )
         for (text in invalidStrings) {
             Tan.allCharactersValid(text) shouldBe false
@@ -49,7 +57,11 @@ class TanTest : BaseTest() {
     @Test
     fun isTanValid() {
         val validTans = arrayOf(
-            "9A3B578UMG", "DEU7TKSV3H", "PTPHM35RP4", "V923D59AT8", "H9NC5CQ34E"
+            "9A3B578UMG",
+            "DEU7TKSV3H",
+            "PTPHM35RP4",
+            "V923D59AT8",
+            "H9NC5CQ34E"
         )
         for (tan in validTans) {
             Tan.allCharactersValid(tan) shouldBe true
@@ -59,7 +71,10 @@ class TanTest : BaseTest() {
 
         // invalid tans due to length and/or invalid characters
         val invalidTans = arrayOf(
-            "ABÖAA1", "-1234", "PTPHM15RP4", "aAASd A"
+            "ABÖAA1",
+            "-1234",
+            "PTPHM15RP4",
+            "aAASd A"
         )
         for (tan in invalidTans) {
             Tan.allCharactersValid(tan) shouldBe false
@@ -70,7 +85,11 @@ class TanTest : BaseTest() {
     fun isChecksumValid() {
         // valid
         val validTans = arrayOf(
-            "9A3B578UMG", "DEU7TKSV3H", "PTPHM35RP4", "V923D59AT8", "H9NC5CQ34E"
+            "9A3B578UMG",
+            "DEU7TKSV3H",
+            "PTPHM35RP4",
+            "V923D59AT8",
+            "H9NC5CQ34E"
         )
         for (tan in validTans) {
             Tan.isChecksumValid(tan) shouldBe true
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt
index a5ca1f82d2a3d9657fdeb7a82fcebddab07e29be..bffa97b6513e12370c53a3d0900235720cdcbd93 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt
@@ -4,6 +4,8 @@ import de.rki.coronawarnapp.CoronaWarnApplication
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.ageInDays
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.calculateDays
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.getCurrentHourUTC
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.seconds
+import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.mockkObject
 import io.mockk.unmockkAll
@@ -13,24 +15,29 @@ import org.joda.time.DateTime
 import org.joda.time.DateTimeZone
 import org.joda.time.Instant
 import org.joda.time.LocalDate
-import org.junit.After
-import org.junit.Assert
-import org.junit.Before
-import org.junit.Test
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import testhelpers.BaseTest
 import java.util.concurrent.TimeUnit
 
 /**
  * TimeAndDateExtensions test.
  */
 
-class TimeAndDateExtensionsTest {
+class TimeAndDateExtensionsTest : BaseTest() {
 
-    @Before
+    @BeforeEach
     fun setUp() {
         MockKAnnotations.init(this)
         mockkObject(CoronaWarnApplication)
     }
 
+    @AfterEach
+    fun cleanUp() {
+        unmockkAll()
+    }
+
     @Test
     fun getCurrentHourUTCTest() {
         val result = getCurrentHourUTC()
@@ -48,28 +55,26 @@ class TimeAndDateExtensionsTest {
 
     @Test
     fun test_daysAgo() {
-        Assert.assertEquals(
-            0,
-                LocalDate(2012, 3, 4).ageInDays(
-                    LocalDate(2012, 3, 4)
-            )
-        )
-        Assert.assertEquals(
-            2,
-            LocalDate(2013, 12, 31).ageInDays(
+        LocalDate(2012, 3, 4).ageInDays(
+            LocalDate(2012, 3, 4)
+        ) shouldBe 0
+
+        LocalDate(2013, 12, 31).ageInDays(
             LocalDate(2014, 1, 2)
-            )
-        )
-        Assert.assertEquals(
-            3,
-            LocalDate(2014, 5, 2).ageInDays(
+        ) shouldBe 2
+
+        LocalDate(2014, 5, 2).ageInDays(
             LocalDate(2014, 5, 5)
-            )
-        )
+        ) shouldBe 3
     }
 
-    @After
-    fun cleanUp() {
-        unmockkAll()
+    @Test
+    fun `instant seconds extension`() {
+        Instant.ofEpochMilli(-1).seconds shouldBe 0
+        Instant.ofEpochMilli(0).seconds shouldBe 0
+        Instant.ofEpochMilli(999).seconds shouldBe 0
+        Instant.ofEpochMilli(1000).seconds shouldBe 1
+        Instant.ofEpochMilli(1999).seconds shouldBe 1
+        Instant.ofEpochMilli(2000).seconds shouldBe 2
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/security/EncryptionResetToolTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/security/EncryptionResetToolTest.kt
index 7ae3bef043399a0438467d5991a37bd63bfa49af..0a08f7fe52ef4ae5ea81d87b74b88479bd2d9fa3 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/security/EncryptionResetToolTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/security/EncryptionResetToolTest.kt
@@ -114,25 +114,25 @@ class EncryptionResetToolTest : BaseIOTest() {
     }
 
     /**
-    Based on https://github.com/corona-warn-app/cwa-app-android/issues/642#issuecomment-650199424
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: java.lang.SecurityException: Could not decrypt value. decryption failed
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at androidx.security.crypto.EncryptedSharedPreferences.getDecryptedObject(EncryptedSharedPreferences.java:33)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at androidx.security.crypto.EncryptedSharedPreferences.getBoolean(EncryptedSharedPreferences.java:1)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at de.rki.coronawarnapp.update.UpdateChecker.checkForUpdate(UpdateChecker.kt:23)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at de.rki.coronawarnapp.update.UpdateChecker$checkForUpdate$1.invokeSuspend(Unknown Source:11)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:2)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:809)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:166)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7377)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: Caused by: java.security.GeneralSecurityException: decryption failed
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at com.google.crypto.tink.aead.AeadWrapper$WrappedAead.decrypt(AeadWrapper.java:15)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at androidx.security.crypto.EncryptedSharedPreferences.getDecryptedObject(EncryptedSharedPreferences.java:5)
-    06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	... 12 more
+     Based on https://github.com/corona-warn-app/cwa-app-android/issues/642#issuecomment-650199424
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: java.lang.SecurityException: Could not decrypt value. decryption failed
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at androidx.security.crypto.EncryptedSharedPreferences.getDecryptedObject(EncryptedSharedPreferences.java:33)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at androidx.security.crypto.EncryptedSharedPreferences.getBoolean(EncryptedSharedPreferences.java:1)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at de.rki.coronawarnapp.update.UpdateChecker.checkForUpdate(UpdateChecker.kt:23)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at de.rki.coronawarnapp.update.UpdateChecker$checkForUpdate$1.invokeSuspend(Unknown Source:11)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:2)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:809)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:166)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7377)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: Caused by: java.security.GeneralSecurityException: decryption failed
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at com.google.crypto.tink.aead.AeadWrapper$WrappedAead.decrypt(AeadWrapper.java:15)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	at androidx.security.crypto.EncryptedSharedPreferences.getDecryptedObject(EncryptedSharedPreferences.java:5)
+     06-23 21:52:51.681 10311 17331 17331 E AndroidRuntime: 	... 12 more
      */
     @Test
     fun `reset is warranted if the first exception after upgrade was a GeneralSecurityException`() {
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/CWAWorkerFactoryTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/CWAWorkerFactoryTest.kt
index f62ca872c48a4d513795d1ee5561e063100a6e83..434d2229793fd9fbb36d78e58a71eb77d1256be3 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/CWAWorkerFactoryTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/CWAWorkerFactoryTest.kt
@@ -48,7 +48,9 @@ class CWAWorkerFactoryTest : BaseTest() {
     fun `instantiate one of our workers`() {
         val instance = createInstance()
         instance.createWorker(
-            context, DiagnosisKeyRetrievalOneTimeWorker::class.qualifiedName!!, workerParameters
+            context,
+            DiagnosisKeyRetrievalOneTimeWorker::class.qualifiedName!!,
+            workerParameters
         ) shouldBe ourWorker
     }
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/WorkerBinderTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/WorkerBinderTest.kt
index 725775cbee07d9d3d010358c3e8ade3c806a0457..20e01e7c87ac23861e838f4f1fcd2a71ec727984 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/WorkerBinderTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/worker/WorkerBinderTest.kt
@@ -6,6 +6,8 @@ import com.google.gson.Gson
 import dagger.Component
 import dagger.Module
 import dagger.Provides
+import de.rki.coronawarnapp.datadonation.analytics.Analytics
+import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsScheduler
 import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler
 import de.rki.coronawarnapp.deadman.DeadmanNotificationSender
 import de.rki.coronawarnapp.nearby.ENFClient
@@ -92,6 +94,14 @@ class MockProvider {
     @Provides
     fun scheduler(): DeadmanNotificationScheduler = mockk()
 
+    // For Analytics periodic worker
+    @Provides
+    fun dataDonationAnalyticsScheduler(): DataDonationAnalyticsScheduler = mockk()
+
+    // For Analytics one time worker
+    @Provides
+    fun analytics(): Analytics = mockk()
+
     @Provides
     fun taskController(): TaskController = mockk()
 
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/verification/server/VerificationServerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/verification/server/VerificationServerTest.kt
index 463cb73d8daf556e681efa5fa61c09f099995727..cc6754b839a79f9d534c75a95b1cdd4d21f03451 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/verification/server/VerificationServerTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/verification/server/VerificationServerTest.kt
@@ -73,7 +73,8 @@ class VerificationServerTest : BaseIOTest() {
         }
 
         server.retrieveRegistrationToken(
-            "testKey", VerificationKeyType.GUID
+            "testKey",
+            VerificationKeyType.GUID
         ) shouldBe "testRegistrationToken"
 
         coVerify { verificationApi.getRegistrationToken(any(), any(), any()) }
@@ -96,7 +97,8 @@ class VerificationServerTest : BaseIOTest() {
         }
 
         server.retrieveRegistrationToken(
-            "testKey", VerificationKeyType.TELETAN
+            "testKey",
+            VerificationKeyType.TELETAN
         ) shouldBe "testRegistrationToken"
 
         coVerify { verificationApi.getRegistrationToken(any(), any(), any()) }
diff --git a/Corona-Warn-App/src/test/java/testhelpers/extensions/InstantExecutorExtension.kt b/Corona-Warn-App/src/test/java/testhelpers/extensions/InstantExecutorExtension.kt
index 60264bc21bce2d77fb691d9096f781a14bc2bbc4..78693b95fdc89549dbb490ba8c44ad04deb2b985 100644
--- a/Corona-Warn-App/src/test/java/testhelpers/extensions/InstantExecutorExtension.kt
+++ b/Corona-Warn-App/src/test/java/testhelpers/extensions/InstantExecutorExtension.kt
@@ -9,13 +9,15 @@ import org.junit.jupiter.api.extension.ExtensionContext
 class InstantExecutorExtension : BeforeEachCallback, AfterEachCallback {
 
     override fun beforeEach(context: ExtensionContext?) {
-        ArchTaskExecutor.getInstance().setDelegate(object : TaskExecutor() {
-            override fun executeOnDiskIO(runnable: Runnable) = runnable.run()
+        ArchTaskExecutor.getInstance().setDelegate(
+            object : TaskExecutor() {
+                override fun executeOnDiskIO(runnable: Runnable) = runnable.run()
 
-            override fun postToMainThread(runnable: Runnable) = runnable.run()
+                override fun postToMainThread(runnable: Runnable) = runnable.run()
 
-            override fun isMainThread(): Boolean = true
-        })
+                override fun isMainThread(): Boolean = true
+            }
+        )
     }
 
     override fun afterEach(context: ExtensionContext?) {
diff --git a/Corona-Warn-App/src/test/java/testhelpers/gms/MockGMSTask.kt b/Corona-Warn-App/src/test/java/testhelpers/gms/MockGMSTask.kt
index fb66d2327ce2a0ad7044fb74adce0dd7f10fc631..a4e318892c8fcb4cdf420030804df9fa7193eb14 100644
--- a/Corona-Warn-App/src/test/java/testhelpers/gms/MockGMSTask.kt
+++ b/Corona-Warn-App/src/test/java/testhelpers/gms/MockGMSTask.kt
@@ -15,6 +15,8 @@ object MockGMSTask {
             this@apply
         }
         every { addOnSuccessListener(any()) } returns this
+        every { isComplete } returns true
+        every { exception } returns error
     }
 
     fun <T> forValue(value: T): Task<T> = mockk<Task<T>>().apply {
@@ -24,6 +26,10 @@ object MockGMSTask {
             this@apply
         }
         every { addOnFailureListener(any()) } returns this
+        every { isComplete } answers { true }
+        every { exception } answers { null }
+        every { isCanceled } answers { false }
+        every { result } answers { value }
     }
 
     fun <T> timeout(): Task<T> = mockk<Task<T>>().apply {
@@ -33,5 +39,7 @@ object MockGMSTask {
             this@apply
         }
         every { addOnFailureListener(any()) } returns this
+        every { isComplete } answers { false }
+        every { addOnCompleteListener(any()) } returns this
     }
 }
diff --git a/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt b/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt
index 2e38ca455a29ba71aeae62febc1759557badd09c..e511f7bdb08327311abd5b460c9aa22a63deb008 100644
--- a/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt
+++ b/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt
@@ -39,6 +39,7 @@ class DebugOptionsFragmentViewModelTest : BaseTest() {
         every { environmentSetup.submissionCdnUrl } returns "submissionUrl"
         every { environmentSetup.downloadCdnUrl } returns "downloadUrl"
         every { environmentSetup.verificationCdnUrl } returns "verificationUrl"
+        every { environmentSetup.dataDonationCdnUrl } returns "dataDonationUrl"
 
         every { environmentSetup.currentEnvironment = any() } answers {
             currentEnvironment = arg(0)
diff --git a/build.gradle b/build.gradle
index 34ff6a9fee950ffd3ce760ab0beda2188a274b01..533ae7cd654a253ff06be9890da5be66db25f37b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,8 +22,8 @@ buildscript {
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         classpath "com.google.protobuf:protobuf-gradle-plugin:$protobufVersion"
         classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion"
-        classpath "org.jlleitschuh.gradle:ktlint-gradle:9.2.1"
-        classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.9.1"
+        classpath "org.jlleitschuh.gradle:ktlint-gradle:9.4.1"
+        classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.16.0-RC1"
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/fastlane/Screengrabfile b/fastlane/Screengrabfile
index d048aff245234ffdc4efc8fb38a6dd7e9dcccf1f..d914a83a9879e904443a5b827e01c809330c07cf 100644
--- a/fastlane/Screengrabfile
+++ b/fastlane/Screengrabfile
@@ -1,4 +1,4 @@
-locales ['de-DE', 'en-US', 'tr-TR', 'bg-BG', 'pl-PL', 'ro-RO']
+locales ['de-DE', 'en-US']
 use_adb_root true
 clear_previous_screenshots true
 app_package_name 'de.rki.coronawarnapp.test'