[
  {
    "path": ".github/actions/gradle_docker/action.yml",
    "content": "name: 'GradleDocker'\ndescription: 'Run gradle inside Docker image'\ninputs:\n  gradle-cmd:  # id of input\n    description: 'gradleCmd to run'\n    required: true\nruns:\n  using: 'docker'\n  image: '../../../Dockerfile'\n  entrypoint: '.github/actions/gradle_docker/main.sh'\n  args:\n    - ${{ inputs.gradle-cmd }}"
  },
  {
    "path": ".github/actions/gradle_docker/main.sh",
    "content": "#!/bin/sh\n\ncd $GITHUB_WORKSPACE\ngradle $1"
  },
  {
    "path": ".github/workflows/appcenter_verifier_abn.yml",
    "content": "name: Build Verifier ABN\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v2\n      with:\n        submodules: true\n    - name: Build with Gradle\n      uses: ./.github/actions/gradle_docker\n      with:\n        gradle-cmd: verifier:assembleAbnRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n    - name: upload artefact to App Center\n      uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n      with:\n        appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_VERIFIER_APP_ABN}}\n        token: ${{secrets.APPCENTER_API_TOKEN}}\n        group: public\n        file: verifier/build/outputs/apk/abn/release/verifier-abn-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_verifier_dev.yml",
    "content": "name: Build Verifier DEV\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: verifier:assembleDevRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n      - name: upload artefact to App Center\n        uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n        with:\n          appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_VERIFIER_APP_DEV}}\n          token: ${{secrets.APPCENTER_API_TOKEN}}\n          group: public\n          file: verifier/build/outputs/apk/dev/release/verifier-dev-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_verifier_prod.yml",
    "content": "name: Build Verifier PROD\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: verifier:assembleProdRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n      - name: upload artefact to App Center\n        uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n        with:\n          appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_VERIFIER_APP}}\n          token: ${{secrets.APPCENTER_API_TOKEN}}\n          group: public\n          file: verifier/build/outputs/apk/prod/release/verifier-prod-release.apk\n      - name: Upload APK\n        uses: actions/upload-artifact@v1.0.0\n        with:\n          name: verifier.apk\n          path: verifier/build/outputs/apk/prod/release/verifier-prod-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_verifier_prodfdroid.yml",
    "content": "name: Build Verifier PRODFDROID\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: verifier:assembleProdRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}} -PminSdkVersion=24\n      - name: upload artefact to App Center\n        uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n        with:\n          appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_VERIFIER_APP}}\n          token: ${{secrets.APPCENTER_API_TOKEN}}\n          group: public\n          file: verifier/build/outputs/apk/prod/release/verifier-prod-release.apk\n      - name: Upload APK\n        uses: actions/upload-artifact@v1.0.0\n        with:\n          name: verifier.apk\n          path: verifier/build/outputs/apk/prod/release/verifier-prod-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_wallet_abn.yml",
    "content": "name: Build Wallet ABN\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v2\n      with:\n        submodules: true\n    - name: Build with Gradle\n      uses: ./.github/actions/gradle_docker\n      with:\n        gradle-cmd: wallet:assembleAbnRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n    - name: upload artefact to App Center\n      uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n      with:\n        appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_WALLET_APP_ABN}}\n        token: ${{secrets.APPCENTER_API_TOKEN}}\n        group: public\n        file: wallet/build/outputs/apk/abn/release/wallet-abn-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_wallet_dev.yml",
    "content": "name: Build Wallet DEV\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: wallet:assembleDevRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n      - name: upload artefact to App Center\n        uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n        with:\n          appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_WALLET_APP_DEV}}\n          token: ${{secrets.APPCENTER_API_TOKEN}}\n          group: public\n          file: wallet/build/outputs/apk/dev/release/wallet-dev-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_wallet_prod.yml",
    "content": "name: Build Wallet PROD\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: wallet:assembleProdRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n      - name: upload artefact to App Center\n        uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n        with:\n          appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_WALLET_APP}}\n          token: ${{secrets.APPCENTER_API_TOKEN}}\n          group: public\n          file: wallet/build/outputs/apk/prod/release/wallet-prod-release.apk\n      - name: Upload APK\n        uses: actions/upload-artifact@v1.0.0\n        with:\n          name: wallet.apk\n          path: wallet/build/outputs/apk/prod/release/wallet-prod-release.apk\n"
  },
  {
    "path": ".github/workflows/appcenter_wallet_prodfdroid.yml",
    "content": "name: Build Wallet PRODFDROID\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: wallet:assembleProdRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}} -PminSdkVersion=24\n      - name: upload artefact to App Center\n        uses: wzieba/AppCenter-Github-Action@8db6b765c4d7ce337bd783ea986f17ce0c9a9e85\n        with:\n          appName: ${{secrets.APPCENTER_ORGANIZATION}}/${{secrets.APPCENTER_WALLET_APP}}\n          token: ${{secrets.APPCENTER_API_TOKEN}}\n          group: public\n          file: wallet/build/outputs/apk/prod/release/wallet-prod-release.apk\n      - name: Upload APK\n        uses: actions/upload-artifact@v1.0.0\n        with:\n          name: wallet.apk\n          path: wallet/build/outputs/apk/prod/release/wallet-prod-release.apk\n"
  },
  {
    "path": ".github/workflows/browserstack_wallet_abn.yml",
    "content": "name: Build Browserstack UI-Test Wallet\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\n    branches:\n      - main\n      - 'release/**'\n\njobs:\n\n  build-app-and-upload:\n\n    runs-on: ubuntu-latest\n\n    outputs:\n      app-url: ${{ steps.upload-app.outputs.app-url }}\n\n    steps:\n    - uses: actions/checkout@v2\n      with:\n        submodules: true\n    - name: Build with Gradle\n      uses: ./.github/actions/gradle_docker\n      with:\n        gradle-cmd: wallet:assembleAbnRelease -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n    - name: upload artefact to Browserstack\n      run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/app\" -F \"file=@wallet/build/outputs/apk/abn/release/wallet-abn-release.apk\" >> appResponse.json\n    - id: upload-app\n      run: echo ::set-output name=app-url::$(jq -r '.app_url'  appResponse.json)\n\n  build-test-suite-and-upload:\n\n    runs-on: ubuntu-latest\n\n    outputs:\n      test-url: ${{ steps.upload-test-suite.outputs.test-url }}\n\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - name: Build with Gradle\n        uses: ./.github/actions/gradle_docker\n        with:\n          gradle-cmd: wallet:assembleAbnDebugAndroidTest -PkeystorePassword=${{secrets.KEYSTORE_PASSWORD}} -PkeyAliasPassword=${{secrets.KEY_ALIAS_PASSWORD}}\n      - name: upload artefact to Browserstack\n        run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/test-suite\" -F \"file=@wallet/build/outputs/apk/androidTest/abn/debug/wallet-abn-debug-androidTest.apk\" >> testSuiteResponse.json\n      - id: upload-test-suite\n        run: echo ::set-output name=test-url::$(jq -r '.test_suite_url'  testSuiteResponse.json)\n\n\n  run-tests:\n    runs-on: ubuntu-latest\n    needs: [build-app-and-upload, build-test-suite-and-upload]\n\n    steps:\n      - name: run normal tests\n        run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/build\" -d '{\"app\":\"${{ needs.build-app-and-upload.outputs.app-url }}\", \"testSuite\":\"${{ needs.build-test-suite-and-upload.outputs.test-url }}\", \"devices\":[\"Samsung Galaxy S10e-9.0\"] , \"language\":\"de\", \"annotation\":[\"ch.admin.bag.covidcertificate.common.browserstack.Normal\"]  }' -H \"Content-Type:application/json\"\n      - name: run airplane tests\n        run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/build\" -d '{\"app\":\"${{ needs.build-app-and-upload.outputs.app-url }}\", \"testSuite\":\"${{ needs.build-test-suite-and-upload.outputs.test-url }}\", \"devices\":[\"Samsung Galaxy S10e-9.0\"] , \"networkProfile\":\"airplane-mode\", \"annotation\":[\"ch.admin.bag.covidcertificate.common.browserstack.AirplaneMode\"] }' -H \"Content-Type:application/json\"\n      - name: run bad network tests\n        run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/build\" -d '{\"app\":\"${{ needs.build-app-and-upload.outputs.app-url }}\", \"testSuite\":\"${{ needs.build-test-suite-and-upload.outputs.test-url }}\", \"devices\":[\"Samsung Galaxy S10e-9.0\"] , \"networkProfile\":\"2g-gprs-lossy\",  \"annotation\":[\"ch.admin.bag.covidcertificate.common.browserstack.BadNetwork\"] }' -H \"Content-Type:application/json\"\n      - name: run onboarding test\n        run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/build\" -d '{\"app\":\"${{ needs.build-app-and-upload.outputs.app-url }}\", \"testSuite\":\"${{ needs.build-test-suite-and-upload.outputs.test-url }}\", \"devices\":[\"Samsung Galaxy S10e-9.0\"] , \"language\":\"de\", \"annotation\":[\"ch.admin.bag.covidcertificate.common.browserstack.Onboarding\"]  }' -H \"Content-Type:application/json\"\n      - name: run onboarding test offline\n        run: curl -u ${{ secrets.BROWSERSTACK_USERNAME }}:${{ secrets.BROWSERSTACK_ACCESSKEY }} -X Post \"https://api-cloud.browserstack.com/app-automate/espresso/v2/build\" -d '{\"app\":\"${{ needs.build-app-and-upload.outputs.app-url }}\", \"testSuite\":\"${{ needs.build-test-suite-and-upload.outputs.test-url }}\", \"devices\":[\"Samsung Galaxy S10e-9.0\"] , \"language\":\"de\", \"networkProfile\":\"airplane-mode\", \"annotation\":[\"ch.admin.bag.covidcertificate.common.browserstack.Onboarding\"]  }' -H \"Content-Type:application/json\"\n\n\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build\n\non:\n  push:\n    branches:\n      - main\n      - 'release/**'\n  pull_request:\njobs:\n  build:\n    name: Build\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis\n      - name: Set up JDK 11\n        uses: actions/setup-java@v1\n        with:\n          java-version: 11\n      - name: Cache SonarCloud packages\n        uses: actions/cache@v1\n        with:\n          path: ~/.sonar/cache\n          key: ${{ runner.os }}-sonar\n          restore-keys: ${{ runner.os }}-sonar\n      - name: Cache Gradle packages\n        uses: actions/cache@v1\n        with:\n          path: ~/.gradle/caches\n          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}\n          restore-keys: ${{ runner.os }}-gradle\n      - name: Build and analyze\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any\n          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}\n        run: ./gradlew sonarqube\n"
  },
  {
    "path": ".github/workflows/gradle-wrapper-validation.yml",
    "content": "name: Validate Gradle Wrapper\n\non: [push, pull_request]\n\njobs:\n  validation:\n    name: Validation\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          submodules: true\n      - uses: gradle/wrapper-validation-action@84d7e182ae7c7a37f200c184f64038fb0e62dd7d\n"
  },
  {
    "path": ".gitignore",
    "content": "# Built application files\n*.apk\n*.aar\n*.ap_\n*.aab\n\n# Files for the ART/Dalvik VM\n*.dex\n\n# Java class files\n*.class\n\n# Generated files\nbin/\ngen/\nout/\n#  Uncomment the following line in case you need and you don't have the release build type files in your app\n# release/\n\n# Gradle files\n.gradle/\nbuild/\n\n# Local configuration file (sdk path, etc)\nlocal.properties\n\n# Proguard folder generated by Eclipse\nproguard/\n\n# Log Files\n*.log\n\n# Android Studio Navigation editor temp files\n.navigation/\n\n# Android Studio captures folder\ncaptures/\n\n# IntelliJ\n*.iml\n.idea/workspace.xml\n.idea/tasks.xml\n.idea/gradle.xml\n.idea/assetWizardSettings.xml\n.idea/dictionaries\n.idea/libraries\n# Android Studio 3 in .gitignore file.\n.idea/caches\n.idea/modules.xml\n# Comment next line if keeping position of elements in Navigation Editor is relevant for you\n.idea/navEditor.xml\n\n# Keystore files\n# Uncomment the following lines if you do not want to check your keystore files in.\n#*.jks\n#*.keystore\n\n# External native build folder generated in Android Studio 2.2 and later\n.externalNativeBuild\n.cxx/\n\n# Google Services (e.g. APIs or Firebase)\n# google-services.json\n\n# Freeline\nfreeline.py\nfreeline/\nfreeline_project_description.json\n\n# fastlane\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots\nfastlane/test_output\nfastlane/readme.md\n\n# Version control\nvcs.xml\n\n# lint\nlint/intermediates/\nlint/generated/\nlint/outputs/\nlint/tmp/\n# lint/reports/\n\n.idea/misc.xml\n\n.idea/\n\n.DS_Store\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM gradle:7.2-jdk11\n\nENV ANDROID_SDK_URL https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip\nENV ANDROID_BUILD_TOOLS_VERSION 30.0.1\nENV ANDROID_HOME /usr/local/android-sdk-linux\nENV ANDROID_VERSION 30\nENV PATH ${PATH}:${ANDROID_HOME}/cmdline-tools/bin:${ANDROID_HOME}/platform-tools\n\nRUN mkdir \"$ANDROID_HOME\" .android && \\\n    cd \"$ANDROID_HOME\" && \\\n    curl -o sdk.zip $ANDROID_SDK_URL && \\\n    unzip sdk.zip && \\\n    rm sdk.zip\n\nRUN yes | ${ANDROID_HOME}/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --licenses\nRUN $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME --update\nRUN $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME \"build-tools;${ANDROID_BUILD_TOOLS_VERSION}\" \\\n    \"platforms;android-${ANDROID_VERSION}\" \\\n    \"platform-tools\" \n\nRUN apt-get update\nRUN apt-get install -y imagemagick\nRUN convert -version\n"
  },
  {
    "path": "LICENSE",
    "content": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in\n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "README.md",
    "content": "# COVID Certificate Apps - Android\n\n[![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](https://github.com/admin-ch/CovidCertificate-App-Android/blob/main/LICENSE)\n![Android Build Wallet](https://github.com/admin-ch/CovidCertificate-App-Android/actions/workflows/appcenter_wallet_dev.yml/badge.svg)\n![Android Build Verifier](https://github.com/admin-ch/CovidCertificate-App-Android/actions/workflows/appcenter_verifier_dev.yml/badge.svg)\n\nThis project is released by the the [Federal Office of Information Technology, Systems and Telecommunication FOITT](https://www.bit.admin.ch/)\non behalf of the [Federal Office of Public Health FOPH](https://www.bag.admin.ch/).\nThe app design, UX and implementation was done by [Ubique](https://www.ubique.ch?app=github).\n\n## COVID Certificate App\n\nCOVID Certificate is the official app for storing and presenting COVID certificates issued in Switzerland.\nThe certificates are kept and checked locally on the user's phone.\n\n<p align=\"verticalcenter\">\n<a href='https://play.google.com/store/apps/details?id=ch.admin.bag.covidcertificate.wallet'>\n<img alt='Get it on Google Play' src='badges/googleplay.png' width=\"30%\"/>\n</a>\n<a href='https://f-droid.org/packages/ch.admin.bag.covidcertificate.wallet'>\n<img alt='Get it on F-Droid' src='badges/fdroid.png' width=\"30%\"/>\n</a>\n<a href='https://appgallery.huawei.com/#/app/C104434571'>\n<img alt='Explore it on AppGallery' src='badges/appgallery.png' width=\"30%\"/>\n</a>\n</p>\n\n<p align=\"center\">\n<img src=\"wallet/src/main/play/listings/en-US/graphics/phone-screenshots/EN_01.png\" width=\"15%\">\n<img src=\"wallet/src/main/play/listings/en-US/graphics/phone-screenshots/EN_02.png\" width=\"15%\">\n<img src=\"wallet/src/main/play/listings/en-US/graphics/phone-screenshots/EN_03.png\" width=\"15%\">\n<img src=\"wallet/src/main/play/listings/en-US/graphics/phone-screenshots/EN_04.png\" width=\"15%\">\n<img src=\"wallet/src/main/play/listings/en-US/graphics/phone-screenshots/EN_05.png\" width=\"15%\">\n</p>\n\n## COVID Certificate Check App\n\nCOVID Certificate Check is the official app for checking COVID certificates in Switzerland.\nThe validation is executed locally on the phone and no information of the scanned certificates is saved.\n\n<p align=\"verticalcenter\">\n<a href='https://play.google.com/store/apps/details?id=ch.admin.bag.covidcertificate.verifier'>\n<img alt='Get it on Google Play' src='badges/googleplay.png' width=\"30%\"/>\n</a>\n<a href='https://f-droid.org/packages/ch.admin.bag.covidcertificate.verifier'>\n<img alt='Get it on F-Droid' src='badges/fdroid.png' width=\"30%\"/>\n</a>\n<a href='https://appgallery.huawei.com/#/app/C104435637'>\n<img alt='Explore it on AppGallery' src='badges/appgallery.png' width=\"30%\"/>\n</a>\n</p>\n\n<p align=\"center\">\n<img src=\"verifier/src/main/play/listings/en-US/graphics/phone-screenshots/EN_01.png\" width=\"20%\">\n<img src=\"verifier/src/main/play/listings/en-US/graphics/phone-screenshots/EN_02.png\" width=\"20%\">\n<img src=\"verifier/src/main/play/listings/en-US/graphics/phone-screenshots/EN_03.png\" width=\"20%\">\n</p>\n\n## Contribution Guide\n\nThis project is truly open-source and we welcome any feedback on the code regarding both the implementation and security aspects.\n\nBugs or potential problems should be reported using Github issues.\nWe welcome all pull requests that improve the quality of the source code.\nPlease note that the app will be available with approved translations in English, German, French, Italian, Rumantsch.\n\n## Repositories\n\n* Android App: [CovidCertificate-App-Android](https://github.com/admin-ch/CovidCertificate-App-Android)\n* Android SDK: [CovidCertificate-SDK-Android](https://github.com/admin-ch/CovidCertificate-SDK-Android)\n* iOS App: [CovidCertificate-App-iOS](https://github.com/admin-ch/CovidCertificate-App-iOS)\n* For all others, see the [Github organisation](https://github.com/admin-ch/)\n\n## Installation and Building\n\nThe apps require at least Android 6 (Marshmallow).\n\nTo build the project you need at least Java 11 and Android Studio 2020.3.1.\n\nYou can also build the apps directly:\n```sh\n$ ./gradlew verifier:assembleProdRelease\n$ ./gradlew wallet:assembleProdRelease\n```\nNote that in order for that to work, you must have set up your own keystore.\n\nThe APK is generated under `app/build/outputs/apk/prod/release/app-prod-release.apk` where `app` is one of: `verifier`, `wallet`.\n\n## Reproducible builds\n\nTo verify that the app distributed on the Play Store was built by the source code published here, please see the instructions\nin [REPRODUCIBLE_BUILDS.md](REPRODUCIBLE_BUILDS.md).\n\n## License\n\nThis project is licensed under the terms of the MPL 2 license. See the [LICENSE](LICENSE) file for details.\n"
  },
  {
    "path": "REPRODUCIBLE_BUILDS.md",
    "content": "# Reproducible Builds\n\nThis document outlines how you can reproduce the Android app.\n\nThe instructions below are for the wallet app.\nTo reproduce the verifier app, change **all** occurences of `wallet` to `verifier`.\n\n## Prerequisites\n\n1. Make sure you have both [Docker](https://www.docker.com/) and `git` installed.\n2. Clone the repository\n3. Checkout the tag (or branch or commit) that corresponds to the version of your app (e.g., 1.0.0)\n\n```shell\ngit clone https://github.com/admin-ch/CovidCertificate-App-Android.git ~/CovidCertificate-App-Android\ncd ~/CovidCertificate-App-Android\ngit tag       # List all available tags\ngit checkout v2.7.0-2700-wallet\n```\n\n## Verifying the app\n\n### Step 1: Check your app version and build timestamp\n\n1. Open the app\n2. Click on the `i` button in the top-right corner\n3. Check the app version in the top right corner\n4. Check the build timestamp in the bottom right corner, which is the number before the slash (e.g., 1622186583268), and record its value to be used later\n\n### Step 2: Extract the APK from your device\n\n1. Make sure you have `adb` installed\n2. Connect your phone to your computer\n3. Extract the APK from the phone:\n\n```shell\nadb pull `adb shell pm path ch.admin.bag.covidcertificate.wallet | cut -d':' -f2` wallet-store.apk\n```\n\nIf you want to check the version of the APK you are pulling from your device:\n\n```shell\nadb shell dumpsys package ch.admin.bag.covidcertificate.wallet | grep versionName=| cut -d '=' -f 2\n```\n\n### Step 3: Reproduce it\n\nTLDR: Run the script and follow its instructions:\n\n```shell\n./buildAndCompare.sh wallet-store.apk\n```\n\nThe script will do the following:\n\n1. Build a Docker image with the required Android tools\n2. (Optionally) Generate a dummy key store for signing\n3. Build the app from source in the Docker container\n4. Compare the APK pulled from your phone with the APK built from source\n\nTo manually compare to files you can run:\n\n```shell\npython3 apkdiff.py wallet-built.apk wallet-store.apk\n```\n\n"
  },
  {
    "path": "apkdiff.py",
    "content": "\n# Taken from https://github.com/DrKLO/Telegram/blob/master/apkdiff.py on June 4th, 2020\n\nimport sys\nfrom zipfile import ZipFile\n\ndef compareFiles(first, second):\n\twhile True:\n\t\tfirstBytes = first.read(4096);\n\t\tsecondBytes = second.read(4096);\n\t\tif firstBytes != secondBytes:\n\t\t\treturn False\n\n\t\tif firstBytes == b\"\":\n\t\t\tbreak\n\n\treturn True\n\ndef compare(first, second):\n\tFILES_TO_IGNORE = [\"META-INF/MANIFEST.MF\", \"META-INF/CERT.RSA\", \"META-INF/CERT.SF\"]\n\n\tfirstZip = ZipFile(first, 'r')\n\tsecondZip = ZipFile(second, 'r')\n\n\tfirstList = list(filter(lambda firstInfo: firstInfo.filename not in FILES_TO_IGNORE, firstZip.infolist()))\n\tsecondList = list(filter(lambda secondInfo: secondInfo.filename not in FILES_TO_IGNORE, secondZip.infolist()))\n\n\tapksAreTheSame = True\n\n\tif len(firstList) != len(secondList):\n\t    print(\"APKs has different amount of files (%d != %d)\" % (len(firstList), len(secondList)))\n\t    apksAreTheSame = False\n\n\tfor firstInfo in firstList:\n\t\tfound = False\n\t\tfor secondInfo in secondList:\n\t\t\tif firstInfo.filename == secondInfo.filename:\n\t\t\t\tfound = True\n\t\t\t\tfirstFile = firstZip.open(firstInfo, 'r')\n\t\t\t\tsecondFile = secondZip.open(secondInfo, 'r')\n\n\t\t\t\tif compareFiles(firstFile, secondFile) != True:\n\t\t\t\t\tprint(\"APK file %s does not match\" % firstInfo.filename)\n\t\t\t\t\tapksAreTheSame = False\n\n\t\t\t\tsecondList.remove(secondInfo)\n\t\t\t\tbreak\n\n\t\tif found == False:\n\t\t\tprint(\"file %s not found in second APK\" % firstInfo.filename)\n\t\t\tapksAreTheSame = False\n\n\tif len(secondList) != 0:\n\t\tfor secondInfo in secondList:\n\t\t\tprint(\"file %s not found in first APK\" % secondInfo.filename)\n\t\tapksAreTheSame = False\n\n\treturn apksAreTheSame\n\nif __name__ == '__main__':\n\tif len(sys.argv) != 3:\n\t\tprint(\"Usage: apkdiff <pathToFirstApk> <pathToSecondApk>\")\n\t\tsys.exit(1)\n\n\tif sys.argv[1] == sys.argv[2] or compare(sys.argv[1], sys.argv[2]) == True:\n\t\tprint(\"APKs are the same!\")\n\telse:\n\t\tprint(\"APKs are different!\")\n"
  },
  {
    "path": "build.gradle",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\n// Top-level build file where you can add configuration options common to all sub-projects/modules.\nbuildscript {\n\text.kotlin_version = \"1.6.10\"\n\trepositories {\n\t\tgoogle()\n\t\tmavenCentral()\n\t\tmaven {\n\t\t\turl \"https://plugins.gradle.org/m2/\"\n\t\t}\n\t}\n\tdependencies {\n\t\tclasspath 'com.android.tools:r8:3.0.73'\n\t\tclasspath 'com.android.tools.build:gradle:7.0.4'\n\t\tclasspath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"\n\t\tclasspath \"org.jetbrains.kotlin:kotlin-serialization:$kotlin_version\"\n\t\tclasspath 'ch.ubique.gradle:ubdiag-android:7.0.2'\n\t}\n}\n\nallprojects {\n\trepositories {\n\t\tgoogle()\n\t\tmavenCentral()\n\t}\n}\n\ntask clean(type: Delete) {\n\tdelete rootProject.buildDir\n}"
  },
  {
    "path": "buildAndCompare.sh",
    "content": "#!/bin/bash\n\n# Script to automate the building and comparing of the CovidCertificate apps\n#\n# The first and only argument should be the path to the APK to be compared.\n\nset -eu\n\nif [[ $# -ne 1 ]]; then\n  echo \"Pass the path/to/store.apk as an argument!\"\n  exit 1\nfi\nreferenceApk=$1\n\necho \"Which app would you like to build ('wallet' or 'verifier')?\"\nread appName\n\necho \"Do you want to provide a keystore [Yn]?\"\nread willProvideKeystore\n\ncase \"$willProvideKeystore\" in\n  # Case 1: Autogenerate a dummy keystore\n  [nN][oO]|[nN])\n  echo \"[WARNING] Auto-generating a dummy keystore with default credentials. Do NOT use the resulting APK!\"\n  rm -f \"$appName\"/insecure.keystore\n  # Generate a keystore with default credentials that is only valid 1 day\n  keytool -genkeypair -storepass password -keypass password -alias keyAlias -keyalg RSA -keystore \"$appName\"/insecure.keystore -dname 'CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown' -validity 1\n  keystoreFile=\"$appName\"/insecure.keystore\n  keystorePassword=password\n  keyAlias=keyAlias\n  keyAliasPassword=password\n  ;;\n\n  # Case 2: Let the user choose a keystore\n  *)\n  echo \"Please enter the keystore filename (e.g. wallet/build.keystore):\"\n  read keystoreFile\n\n  echo \"Please enter the keystore password:\"\n  read -s keystorePassword\n\n  echo \"Please enter the keyAlias:\"\n  read keyAlias\n\n  echo \"Please enter the keyAlias password:\"\n  read -s keyAliasPassword\n  ;;\nesac\n\necho \"Please enter the build timestamp (e.g. 1622186583268):\"\nread buildTimestamp\n\n# This is necessary because Ubique's gradle plugin will automatically set the branch.\n# Here we want to override it in order to reproduce the build.\necho \"Please enter the branch off which the release was build (e.g. release/version-1.0.0):\"\nread buildBranch\n\necho \"Please enter the git tag (e.g. v2.7.0-2700-wallet) or branch (e.g. release/version-1.0.0) to be reproduced.\"\necho \"This is what will be checked out and reproduced.\"\nread tree\n\necho \"Do you want to build the F-Droid version [yN]?\"\nread fdroid\n\n# Set gradle task to be run\ncase \"$fdroid\" in\n  [yY][eE][sS]|[yY])\n  overrideMinSdk=\"-PminSdkVersion=24\"\n  ;;\n\n  *)\n  overrideMinSdk=\"\"\n  ;;\nesac\n\necho \"Building apk from source...\"\n\n# Clean up any existing images\ndocker images -a | grep \"covidcertificate-builder\" | awk '{print $3}' | xargs -r docker rmi\n\n# Build a fresh container image\ndocker build -t covidcertificate-builder .\n\n# Prepare the build command (for readability)\ncurrentPath=`pwd`\nbuildCommand=$(cat <<EOF\ngit clone https://github.com/admin-ch/CovidCertificate-App-Android.git;\ncd CovidCertificate-App-Android;\ngit checkout $tree;\ngradle $appName:assembleProdRelease -PkeystorePassword='$keystorePassword' -PkeyAlias=$keyAlias -PkeyAliasPassword='$keyAliasPassword' -PkeystoreFile=/home/covidcertificate/external/$keystoreFile -PbuildTimestamp=$buildTimestamp -Pbranch=$buildBranch $overrideMinSdk;\ncp $appName/build/outputs/apk/prod/release/$appName-prod-release.apk /home/covidcertificate/external/$appName-built.apk\nEOF\n)\nbuildCommand=$(echo -n \"$buildCommand\" | tr '\\n' ' ' ) # replace newlines by spaces\n\n# Build the app in the container\ndocker run --rm -v \"$currentPath\":/home/covidcertificate/external -w /home/covidcertificate covidcertificate-builder /bin/bash -c -eux \"$buildCommand\"\n\n# Remove dummy keystore again\nrm -f \"$appName\"/insecure.keystore\n\necho \"Comparing the APK built from source with the reference APK...\"\npython3 apkdiff.py $appName-built.apk $referenceApk\n\n"
  },
  {
    "path": "common/.gitignore",
    "content": "/build"
  },
  {
    "path": "common/build.gradle",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nplugins {\n\tid 'com.android.library'\n\tid 'kotlin-android'\n\tid 'com.google.devtools.ksp' version '1.6.10-1.0.4'\n}\n\next.readPropertyWithDefault = { paramName, defaultValue ->\n\tif (project.hasProperty(paramName)) {\n\t\treturn project.getProperties().get(paramName)\n\t} else {\n\t\tProperties properties = new Properties()\n\t\tif (project.rootProject.file('local.properties').exists()) {\n\t\t\tproperties.load(project.rootProject.file('local.properties').newDataInputStream())\n\t\t}\n\t\tif (properties.getProperty(paramName) != null) {\n\t\t\treturn properties.getProperty(paramName)\n\t\t} else {\n\t\t\treturn defaultValue\n\t\t}\n\t}\n}\n\nandroid {\n\tcompileSdkVersion 31\n\n\tdefaultConfig {\n\t\tminSdkVersion readPropertyWithDefault('minSdkVersion', '23').toInteger()\n\t\ttargetSdkVersion 31\n\n\t\t// Stops the Gradle plugin’s automatic rasterization of vectors\n\t\tgeneratedDensities = []\n\n\t\ttestInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"\n\t\tconsumerProguardFiles \"consumer-rules.pro\"\n\t}\n\n\tproductFlavors {\n\t\tdev {}\n\t\tabn {}\n\t\tprod {}\n\t}\n\n\tflavorDimensions \"version\"\n\n\tbuildTypes {\n\t\trelease {\n\t\t\tminifyEnabled false\n\t\t\tproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n\t\t}\n\t}\n\n\tcompileOptions {\n\t\tcoreLibraryDesugaringEnabled true\n\n\t\tsourceCompatibility JavaVersion.VERSION_1_8\n\t\ttargetCompatibility JavaVersion.VERSION_1_8\n\t}\n\n\tkotlinOptions {\n\t\tjvmTarget = '1.8'\n\t}\n\n\tbuildFeatures {\n\t\tviewBinding true\n\t}\n}\n\ndependencies {\n\tcoreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'\n\n\tapi 'ch.admin.bag.covidcertificate:sdk-android:2.3.3'\n\n\timplementation \"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version\"\n\timplementation 'androidx.core:core-ktx:1.7.0'\n\timplementation 'androidx.appcompat:appcompat:1.4.1'\n\tapi 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'\n\timplementation 'androidx.fragment:fragment-ktx:1.4.1'\n\timplementation 'com.google.android.material:material:1.5.0'\n\timplementation 'androidx.security:security-crypto:1.0.0'\n\tksp 'com.squareup.moshi:moshi-kotlin-codegen:1.13.0'\n\n\t// ZXing base QR code scanner\n\tapi 'ch.ubique.android:qrscanner-zxing:1.0.0-dev-6'\n\n\tapi 'com.augustcellars.cose:cose-java:1.1.0'\n\tapi 'org.bouncycastle:bcprov-jdk15on:1.69'\n\n\tandroidTestImplementation 'androidx.test.ext:junit:1.1.3'\n\tandroidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'\n}\n"
  },
  {
    "path": "common/consumer-rules.pro",
    "content": ""
  },
  {
    "path": "common/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile"
  },
  {
    "path": "common/src/abn/java/ch/admin/bag/covidcertificate/common/debug/DebugFragment.kt",
    "content": "package ch.admin.bag.covidcertificate.common.debug\n/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport android.content.Context\nimport androidx.fragment.app.Fragment\n\nopen class DebugFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): DebugFragment = DebugFragment()\n\n\t\tconst val EXISTS = false\n\n\t\tfun initDebug(context: Context) {}\n\t}\n\n}"
  },
  {
    "path": "common/src/dev/java/ch/admin/bag/covidcertificate/common/debug/DebugFragment.kt",
    "content": "package ch.admin.bag.covidcertificate.common.debug\n/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport android.content.Context\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.databinding.FragmentDebugBinding\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\n\nopen class DebugFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): DebugFragment = DebugFragment()\n\n\t\tconst val EXISTS = true\n\n\t\tfun initDebug(context: Context) {\n\t\t\tCertificatePinning.enabled = DebugSecureStorage.getInstance(context).isCertPinningEnabled\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentDebugBinding? = null\n\tprotected val binding get() = _binding!!\n\n\tprivate lateinit var debugSecureStorage: DebugSecureStorage\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tdebugSecureStorage = DebugSecureStorage.getInstance(requireContext())\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentDebugBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.toolbar.setNavigationOnClickListener {\n\t\t\tparentFragmentManager.popBackStack()\n\t\t}\n\n\t\tbinding.buttonToggleCertificatePinning.apply {\n\t\t\tisChecked = debugSecureStorage.isCertPinningEnabled\n\n\t\t\tsetOnCheckedChangeListener { _, isChecked ->\n\t\t\t\tdebugSecureStorage.isCertPinningEnabled = isChecked\n\t\t\t\tCertificatePinning.enabled = isChecked\n\t\t\t}\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n}"
  },
  {
    "path": "common/src/dev/java/ch/admin/bag/covidcertificate/common/debug/DebugSecureStorage.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.debug\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\n\nclass DebugSecureStorage private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<DebugSecureStorage, Context>(::DebugSecureStorage) {\n\t\tprivate const val PREFERENCES = \"DebugSecureStorage\"\n\t\tprivate const val KEY_CERT_PINNING_ENABLED = \"KEY_CERT_PINNING_ENABLED\"\n\t}\n\n\tprivate val prefs = EncryptedSharedPreferencesUtil.initializeSharedPreferences(context, PREFERENCES)\n\n\tvar isCertPinningEnabled: Boolean\n\t\tget() = prefs.getBoolean(KEY_CERT_PINNING_ENABLED, CertificatePinning.enabled)\n\t\tset(value) = prefs.edit().putBoolean(KEY_CERT_PINNING_ENABLED, value).apply()\n\n}"
  },
  {
    "path": "common/src/dev/res/xml/network_security_config.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2020 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<network-security-config>\n\t<base-config cleartextTrafficPermitted=\"true\">\n\t\t<trust-anchors>\n\t\t\t<certificates src=\"system\" />\n\t\t\t<!-- Trust user added CAs in dev app only -->\n\t\t\t<certificates src=\"user\" />\n\t\t</trust-anchors>\n\t</base-config>\n</network-security-config>"
  },
  {
    "path": "common/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tpackage=\"ch.admin.bag.covidcertificate.common\">\n\n</manifest>"
  },
  {
    "path": "common/src/main/assets/impressum/de/impressum.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"de\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<header>\n    <div class=\"title\">{APP_NAME}</div>\n    <div class=\"version\">Version {VERSION}</div>\n</header>\n<div class=\"container impressum\">\n\n    <h1>Herausgeber</h1>\n\n    <picture>\n        <img src=\"../img/bundeslogo-bag.svg\" class=\"bag-logo\" alt=\"Bundesamt für Gesundheit BAG\">\n    </picture>\n  \n    <h2>Weitere Informationen</h2>\n    <a class=\"link\" href=\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.bag.admin.ch\n    </a>\n\n    <h2>Infoline Coronavirus</h2>\n    <a class=\"link\" href=\"tel:&#43;41584630000\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 463 00 00\n    </a>\n\n    <h2>Rechtliches</h2>\n    <a class=\"link\" href=\"{LAW_LINK}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        Datenschutzerklärung &amp; Nutzungsbedingungen\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Umsetzung &amp; Betrieb</h1>\n    \n    <picture>\n        <img src=\"../img/bundeslogo-bit.svg\" class=\"bag-logo\" alt=\"Bundesamt für Informatik und Telekommunikation BIT\">\n    </picture>\n\n    <h2>Technische Hilfe</h2>\n    <a class=\"link\" href=\"tel:&#43;41584660799\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 466 07 99\n    </a>\n   \n    <div class=\"divider\"></div>\n\n    <h1>In Zusammenarbeit mit</h1>\n    <picture>\n        <img src=\"../img/logo-ubique.svg\" class=\"logo logo-ubique\" alt=\"\">\n    </picture>\n    <a class=\"link\" href=\"https://www.ubique.ch/?app={PARAM_APP_IDENTIFIER}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.ubique.ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Quellcode</h1>\n    <p class=\"text\">Der Quellcode des Covid Certificate Systems (inkl. dieser App) ist Open-Source und kann auf GitHub eingesehen werden.</p>\n    <a class=\"link\" href=\"https://www.github.com/admin-ch\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.github.com/admin-ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <a href=\"ccert://licence.html\" class=\"licence-link\">\n        <h1>Lizenzen</h1>\n        <picture>\n            <img src=\"../img/ic-arrow.svg\" alt=\"\">\n        </picture>\n    </a>\n</div>\n<footer>\n    <div class=\"build\">{BUILD}</div>\n</footer>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/de/licence.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"de\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<div class=\"container licence\">\n    <h1>Lizenzen</h1>\n    <div class=\"list1\">\n    <ul>\n<li>This app uses <strong>COVID Certificate Android SDK</strong> licensed under the <strong>MPL 2</strong> license</li>\n<li>This app uses <strong>androidx</strong>, <strong>kotlinx</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Material Components For Android</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>ZXing</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Retrofit</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Moshi</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Jackson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Gson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>hcert-kotlin</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>dgc-java</strong> licensed under the <strong>MIT license</strong> license</li>\n<li>This app uses <strong>COSE-JAVA</strong> licensed under the <strong>BSD-3-Clause</strong> license</li>\n<li>This app uses <strong>Java JWT</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Bouncy Castle</strong> licensed under the <strong>MIT</strong> license</li>\n<li>This app uses <strong>Fira Code Font</strong> licensed under the <strong>OFL-1.1</strong> license</li>\n</ul>\n    </div>\n    <div class=\"licence-list\">\n    <ul>\n<li><a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 license</a></li>\n<li><a href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD-3-Clause license</a></li>\n<li><a href=\"https://opensource.org/licenses/MIT\">MIT license</a></li>\n<li><a href=\"https://opensource.org/licenses/MPL-2.0\">MPL 2 license</a></li>\n<li><a href=\"https://opensource.org/licenses/OFL-1.1\">SIL OPEN FONT LICENSE</a></li>\n</ul>\n    </div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/en/impressum.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"en\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<header>\n    <div class=\"title\">{APP_NAME}</div>\n    <div class=\"version\">Version {VERSION}</div>\n</header>\n<div class=\"container impressum\">\n\n    <h1>Published by</h1>\n\n    <picture>\n        <img src=\"../img/bundeslogo-bag.svg\" class=\"bag-logo\" alt=\"Federal Office of Public Health FOPH\">\n    </picture>\n  \n    <h2>Further information</h2>\n    <a class=\"link\" href=\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.bag.admin.ch\n    </a>\n\n    <h2>Infoline Coronavirus</h2>\n    <a class=\"link\" href=\"tel:&#43;41584630000\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 463 00 00\n    </a>\n\n    <h2>Legal</h2>\n    <a class=\"link\" href=\"{LAW_LINK}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        Data Protection Statement &amp; Conditions of Use\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Development &amp; operation</h1>\n    \n    <picture>\n        <img src=\"../img/bundeslogo-bit.svg\" class=\"bag-logo\" alt=\"Federal Office of Information Technology, Systems and Telecommunication FOITT\">\n    </picture>\n\n    <h2>Technical support</h2>\n    <a class=\"link\" href=\"tel:&#43;41584660799\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 466 07 99\n    </a>\n   \n    <div class=\"divider\"></div>\n\n    <h1>In collaboration with</h1>\n    <picture>\n        <img src=\"../img/logo-ubique.svg\" class=\"logo logo-ubique\" alt=\"\">\n    </picture>\n    <a class=\"link\" href=\"https://www.ubique.ch/?app={PARAM_APP_IDENTIFIER}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.ubique.ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Source code</h1>\n    <p class=\"text\">The source code of the COVID Certificate System (including this app) is open source and can be viewed on GitHub.</p>\n    <a class=\"link\" href=\"https://www.github.com/admin-ch\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.github.com/admin-ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <a href=\"ccert://licence.html\" class=\"licence-link\">\n        <h1>Licences</h1>\n        <picture>\n            <img src=\"../img/ic-arrow.svg\" alt=\"\">\n        </picture>\n    </a>\n</div>\n<footer>\n    <div class=\"build\">{BUILD}</div>\n</footer>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/en/licence.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"en\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<div class=\"container licence\">\n    <h1>Licences</h1>\n    <div class=\"list1\">\n    <ul>\n<li>This app uses <strong>COVID Certificate Android SDK</strong> licensed under the <strong>MPL 2</strong> license</li>\n<li>This app uses <strong>androidx</strong>, <strong>kotlinx</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Material Components For Android</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>ZXing</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Retrofit</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Moshi</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Jackson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Gson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>hcert-kotlin</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>dgc-java</strong> licensed under the <strong>MIT license</strong> license</li>\n<li>This app uses <strong>COSE-JAVA</strong> licensed under the <strong>BSD-3-Clause</strong> license</li>\n<li>This app uses <strong>Java JWT</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Bouncy Castle</strong> licensed under the <strong>MIT</strong> license</li>\n<li>This app uses <strong>Fira Code Font</strong> licensed under the <strong>OFL-1.1</strong> license</li>\n</ul>\n    </div>\n    <div class=\"licence-list\">\n    <ul>\n<li><a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 license</a></li>\n<li><a href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD-3-Clause license</a></li>\n<li><a href=\"https://opensource.org/licenses/MIT\">MIT license</a></li>\n<li><a href=\"https://opensource.org/licenses/MPL-2.0\">MPL 2 license</a></li>\n<li><a href=\"https://opensource.org/licenses/OFL-1.1\">SIL OPEN FONT LICENSE</a></li>\n</ul>\n    </div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/fr/impressum.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"fr\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<header>\n    <div class=\"title\">{APP_NAME}</div>\n    <div class=\"version\">Version {VERSION}</div>\n</header>\n<div class=\"container impressum\">\n\n    <h1>Éditeur</h1>\n\n    <picture>\n        <img src=\"../img/bundeslogo-bag.svg\" class=\"bag-logo\" alt=\"Office fédéral de la santé publique OFSP\">\n    </picture>\n  \n    <h2>Informations complémentaires</h2>\n    <a class=\"link\" href=\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.bag.admin.ch\n    </a>\n\n    <h2>Infoline Coronavirus</h2>\n    <a class=\"link\" href=\"tel:&#43;41584630000\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 463 00 00\n    </a>\n\n    <h2>Indications légales</h2>\n    <a class=\"link\" href=\"{LAW_LINK}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        Déclaration de confidentialité &amp; condition d&#39;utilisation\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Mise en application &amp; opération</h1>\n    \n    <picture>\n        <img src=\"../img/bundeslogo-bit.svg\" class=\"bag-logo\" alt=\"Office fédéral de l&#39;informatique et de la télécommunication OFIT\">\n    </picture>\n\n    <h2>Assistance technique</h2>\n    <a class=\"link\" href=\"tel:&#43;41584660799\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 466 07 99\n    </a>\n   \n    <div class=\"divider\"></div>\n\n    <h1>En collaboration avec</h1>\n    <picture>\n        <img src=\"../img/logo-ubique.svg\" class=\"logo logo-ubique\" alt=\"\">\n    </picture>\n    <a class=\"link\" href=\"https://www.ubique.ch/?app={PARAM_APP_IDENTIFIER}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.ubique.ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Code source</h1>\n    <p class=\"text\">Le code source du système de Certificat COVID (y compris cette application) est open source et peut être trouvé sur GitHub.</p>\n    <a class=\"link\" href=\"https://www.github.com/admin-ch\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.github.com/admin-ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <a href=\"ccert://licence.html\" class=\"licence-link\">\n        <h1>Licences</h1>\n        <picture>\n            <img src=\"../img/ic-arrow.svg\" alt=\"\">\n        </picture>\n    </a>\n</div>\n<footer>\n    <div class=\"build\">{BUILD}</div>\n</footer>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/fr/licence.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"fr\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<div class=\"container licence\">\n    <h1>Licences</h1>\n    <div class=\"list1\">\n    <ul>\n<li>This app uses <strong>COVID Certificate Android SDK</strong> licensed under the <strong>MPL 2</strong> license</li>\n<li>This app uses <strong>androidx</strong>, <strong>kotlinx</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Material Components For Android</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>ZXing</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Retrofit</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Moshi</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Jackson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Gson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>hcert-kotlin</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>dgc-java</strong> licensed under the <strong>MIT license</strong> license</li>\n<li>This app uses <strong>COSE-JAVA</strong> licensed under the <strong>BSD-3-Clause</strong> license</li>\n<li>This app uses <strong>Java JWT</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Bouncy Castle</strong> licensed under the <strong>MIT</strong> license</li>\n<li>This app uses <strong>Fira Code Font</strong> licensed under the <strong>OFL-1.1</strong> license</li>\n</ul>\n    </div>\n    <div class=\"licence-list\">\n    <ul>\n<li><a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 license</a></li>\n<li><a href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD-3-Clause license</a></li>\n<li><a href=\"https://opensource.org/licenses/MIT\">MIT license</a></li>\n<li><a href=\"https://opensource.org/licenses/MPL-2.0\">MPL 2 license</a></li>\n<li><a href=\"https://opensource.org/licenses/OFL-1.1\">SIL OPEN FONT LICENSE</a></li>\n</ul>\n    </div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/it/impressum.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"it\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<header>\n    <div class=\"title\">{APP_NAME}</div>\n    <div class=\"version\">Version {VERSION}</div>\n</header>\n<div class=\"container impressum\">\n\n    <h1>Editore</h1>\n\n    <picture>\n        <img src=\"../img/bundeslogo-bag.svg\" class=\"bag-logo\" alt=\"Ufficio federale della sanità pubblica UFSP\">\n    </picture>\n  \n    <h2>Ulteriori informazioni</h2>\n    <a class=\"link\" href=\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.bag.admin.ch\n    </a>\n\n    <h2>Infoline Coronavirus</h2>\n    <a class=\"link\" href=\"tel:&#43;41584630000\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 463 00 00\n    </a>\n\n    <h2>Note legali</h2>\n    <a class=\"link\" href=\"{LAW_LINK}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        Informativa sulla protezione dei dati &amp; condizioni d&#39;uso\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Realizzazione &amp; operazione</h1>\n    \n    <picture>\n        <img src=\"../img/bundeslogo-bit.svg\" class=\"bag-logo\" alt=\"Ufficio federale dell&#39;informatica e della telecomunicazione UFIT\">\n    </picture>\n\n    <h2>Supporto tecnico</h2>\n    <a class=\"link\" href=\"tel:&#43;41584660799\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 466 07 99\n    </a>\n   \n    <div class=\"divider\"></div>\n\n    <h1>In collaborazione con</h1>\n    <picture>\n        <img src=\"../img/logo-ubique.svg\" class=\"logo logo-ubique\" alt=\"\">\n    </picture>\n    <a class=\"link\" href=\"https://www.ubique.ch/?app={PARAM_APP_IDENTIFIER}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.ubique.ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Codice sorgente</h1>\n    <p class=\"text\">Il codice sorgente del Covid Certificate System (compresa questa applicazione) è open source e può essere trovato su GitHub.</p>\n    <a class=\"link\" href=\"https://www.github.com/admin-ch\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.github.com/admin-ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <a href=\"ccert://licence.html\" class=\"licence-link\">\n        <h1>Licenze</h1>\n        <picture>\n            <img src=\"../img/ic-arrow.svg\" alt=\"\">\n        </picture>\n    </a>\n</div>\n<footer>\n    <div class=\"build\">{BUILD}</div>\n</footer>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/it/licence.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"it\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<div class=\"container licence\">\n    <h1>Licenze</h1>\n    <div class=\"list1\">\n    <ul>\n<li>This app uses <strong>COVID Certificate Android SDK</strong> licensed under the <strong>MPL 2</strong> license</li>\n<li>This app uses <strong>androidx</strong>, <strong>kotlinx</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Material Components For Android</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>ZXing</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Retrofit</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Moshi</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Jackson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Gson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>hcert-kotlin</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>dgc-java</strong> licensed under the <strong>MIT license</strong> license</li>\n<li>This app uses <strong>COSE-JAVA</strong> licensed under the <strong>BSD-3-Clause</strong> license</li>\n<li>This app uses <strong>Java JWT</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Bouncy Castle</strong> licensed under the <strong>MIT</strong> license</li>\n<li>This app uses <strong>Fira Code Font</strong> licensed under the <strong>OFL-1.1</strong> license</li>\n</ul>\n    </div>\n    <div class=\"licence-list\">\n    <ul>\n<li><a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 license</a></li>\n<li><a href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD-3-Clause license</a></li>\n<li><a href=\"https://opensource.org/licenses/MIT\">MIT license</a></li>\n<li><a href=\"https://opensource.org/licenses/MPL-2.0\">MPL 2 license</a></li>\n<li><a href=\"https://opensource.org/licenses/OFL-1.1\">SIL OPEN FONT LICENSE</a></li>\n</ul>\n    </div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/rm/impressum.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"rm\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<header>\n    <div class=\"title\">{APP_NAME}</div>\n    <div class=\"version\">Version {VERSION}</div>\n</header>\n<div class=\"container impressum\">\n\n    <h1>Editur</h1>\n\n    <picture>\n        <img src=\"../img/bundeslogo-bag.svg\" class=\"bag-logo\" alt=\"Uffizi federal da sanadad publica UFSP\">\n    </picture>\n  \n    <h2>Ulteriuras infurmaziuns</h2>\n    <a class=\"link\" href=\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.bag.admin.ch\n    </a>\n\n    <h2>Infoline Coronavirus</h2>\n    <a class=\"link\" href=\"tel:&#43;41584630000\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 463 00 00\n    </a>\n\n    <h2>Indicaziuns giuridicas</h2>\n    <a class=\"link\" href=\"{LAW_LINK}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        Basas legalas\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Realisaziun &amp; gestiun</h1>\n    \n    <picture>\n        <img src=\"../img/bundeslogo-bit.svg\" class=\"bag-logo\" alt=\"Uffizi federal d&#39;informatica e da telecommunicaziun UFIT\">\n    </picture>\n\n    <h2>Agid tecnic</h2>\n    <a class=\"link\" href=\"tel:&#43;41584660799\">\n        <img src=\"../img/ic-call.svg\" alt=\"\">\n        &#43;41 58 466 07 99\n    </a>\n   \n    <div class=\"divider\"></div>\n\n    <h1>En collavuraziun cun</h1>\n    <picture>\n        <img src=\"../img/logo-ubique.svg\" class=\"logo logo-ubique\" alt=\"\">\n    </picture>\n    <a class=\"link\" href=\"https://www.ubique.ch/?app={PARAM_APP_IDENTIFIER}\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.ubique.ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <h1>Code da funtauna</h1>\n    <p class=\"text\">Il code da funtauna dal COVID Certificate System (incl. questa app) è open source e po vegnir consultà/chattà sin GitHub.</p>\n    <a class=\"link\" href=\"https://www.github.com/admin-ch\">\n        <img src=\"../img/ic-link-external.svg\" alt=\"\">\n        www.github.com/admin-ch\n    </a>\n\n    <div class=\"divider\"></div>\n\n    <a href=\"ccert://licence.html\" class=\"licence-link\">\n        <h1>Licenzas</h1>\n        <picture>\n            <img src=\"../img/ic-arrow.svg\" alt=\"\">\n        </picture>\n    </a>\n</div>\n<footer>\n    <div class=\"build\">{BUILD}</div>\n</footer>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/assets/impressum/rm/licence.html",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<!DOCTYPE html>\n<html lang=\"rm\"><head>\n    <title>  </title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    \n    \n    <link rel=\"stylesheet\" href=\"../scss/main.min.css\">\n</head><body>\n<div class=\"container licence\">\n    <h1>Licenzas</h1>\n    <div class=\"list1\">\n    <ul>\n<li>This app uses <strong>COVID Certificate Android SDK</strong> licensed under the <strong>MPL 2</strong> license</li>\n<li>This app uses <strong>androidx</strong>, <strong>kotlinx</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Material Components For Android</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>ZXing</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Retrofit</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Moshi</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Jackson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Gson</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>hcert-kotlin</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>dgc-java</strong> licensed under the <strong>MIT license</strong> license</li>\n<li>This app uses <strong>COSE-JAVA</strong> licensed under the <strong>BSD-3-Clause</strong> license</li>\n<li>This app uses <strong>Java JWT</strong> licensed under the <strong>Apache 2.0</strong> license</li>\n<li>This app uses <strong>Bouncy Castle</strong> licensed under the <strong>MIT</strong> license</li>\n<li>This app uses <strong>Fira Code Font</strong> licensed under the <strong>OFL-1.1</strong> license</li>\n</ul>\n    </div>\n    <div class=\"licence-list\">\n    <ul>\n<li><a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 license</a></li>\n<li><a href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD-3-Clause license</a></li>\n<li><a href=\"https://opensource.org/licenses/MIT\">MIT license</a></li>\n<li><a href=\"https://opensource.org/licenses/MPL-2.0\">MPL 2 license</a></li>\n<li><a href=\"https://opensource.org/licenses/OFL-1.1\">SIL OPEN FONT LICENSE</a></li>\n</ul>\n    </div>\n</div>\n</body>\n</html>"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/BaseActivity.kt",
    "content": "package ch.admin.bag.covidcertificate.common\n\nimport android.content.Context\nimport androidx.appcompat.app.AppCompatActivity\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.util.LocaleUtil\n\nopen class BaseActivity : AppCompatActivity() {\n\n\toverride fun attachBaseContext(newBase: Context) {\n\t\tval language = ConfigSecureStorage.getInstance(newBase).getUserLanguage()\n\t\tsuper.attachBaseContext(LocaleUtil.updateLanguage(newBase, language))\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/browserstack/AirplaneMode.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.browserstack\n\nannotation class AirplaneMode\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/browserstack/BadNetwork.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.browserstack\n\nannotation class BadNetwork\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/browserstack/Normal.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.browserstack\n\nannotation class Normal\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/browserstack/Onboarding.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.browserstack\n\nannotation class Onboarding\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/CertificateRenewalInfoDetailModel.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class CertificateRenewalInfoDetailModel(\n\tval iconAndroid: String,\n\tval text: String\n)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/CertificateRenewalInfoModel.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class CertificateRenewalInfoModel(\n\tval heading: String,\n\tval infos: List<CertificateRenewalInfoDetailModel>,\n\tval faqLinkText: String,\n\tval faqLinkUrl: String,\n)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/CertificateRenewalType.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = false)\nenum class CertificateRenewalType {\n\tINFO, EXPIRED, RENEWED\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/CheckModesInfosModel.kt",
    "content": "package ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n//for verifier\n@JsonClass(generateAdapter = true)\ndata class CheckModesInfosModel(\n\tval infos: Map<String, CheckModeInfoModel>?,\n\tval unselected: VerifierInfos?\n)\n\n@JsonClass(generateAdapter = true)\ndata class VerifierInfos(\n\tval infos: List<VerifierInfoDetails>?\n)\n\n@JsonClass(generateAdapter = true)\ndata class VerifierInfoDetails(\n\tval iconAndroid: String,\n\tval iconIos: String,\n\tval text: String\n)\n\n//for wallet\n@JsonClass(generateAdapter = true)\ndata class CheckModesInfoModel(\n\tval title: String?,\n\tval modes: Map<String, WalletModeModel>?,\n)\n\n\n@JsonClass(generateAdapter = true)\ndata class WalletModeModel(\n\tval ok: WalletModeDetails,\n\tval notOk: WalletModeDetails\n)\n\n@JsonClass(generateAdapter = true)\ndata class WalletModeDetails(\n\tval iconAndroid: String,\n\tval iconIos: String,\n\tval text: String\n)\n\n@JsonClass(generateAdapter = true)\ndata class CheckModeInfoModel(\n\tval title: String,\n\tval hexColor: String,\n\tval infos: List<CheckModeInfoEntry>\n)\n\ndata class CheckModeInfoModelWithId(\n\tval id: String,\n\tval title: String,\n\tval hexColor: String,\n\tval infos: List<CheckModeInfoEntry>\n)\n\n@JsonClass(generateAdapter = true)\ndata class CheckModeInfoEntry(\n\tval iconAndroid: String,\n\tval text: String\n)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/ConfigModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport ch.admin.bag.covidcertificate.common.faq.model.Faq\nimport ch.admin.bag.covidcertificate.common.faq.model.Header\nimport ch.admin.bag.covidcertificate.common.faq.model.Question\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class ConfigModel(\n\tval forceUpdate: Boolean,\n\tval infoBox: Map<String, InfoBoxModel>?,\n\tval questions: Map<String, FaqModel>?,\n\tval works: Map<String, FaqModel>?,\n\tval transferQuestions: Map<String, FaqModel>?,\n\tval transferWorks: Map<String, FaqModel>?,\n\tval androidTransferCheckIntervalMs: Long?,\n\tval androidTransferCheckBackoffMs: Long?,\n\tval lightCertificateActive: Boolean?,\n\tval pdfGenerationActive: Boolean?,\n\tval vaccinationHints: Map<String, List<VaccinationHintModel>>?,\n\tval vaccinationBookingInfo: Map<String, VaccinationBookingInfoModel>?,\n\tval showVaccinationHintHomescreen: Boolean?,\n\tval showVaccinationHintDetail: Boolean?,\n\tval showVaccinationHintTransfer: Boolean?,\n\tval timeshiftDetectionEnabled: Boolean?,\n\tval checkModesInfos: Map<String, CheckModesInfosModel>?,\n\tval checkModesInfo: Map<String, CheckModesInfoModel>?,\n\tval checkModeReselectAfterHours: Int?,\n\tval lightCertDurationInHours: Int?,\n\tval refreshButtonDisabled: Boolean?,\n\tval refreshButtonInfo: Map<String, RefreshButtonInfoModel>?,\n\tval eolBannerInfo: Map<String, Map<String, EolBannerInfoModel>>?,\n\tval foreignRulesCheckEnabled: Boolean?,\n\tval foreignRulesLinkText: Map<String, String>?,\n\tval foreignRulesLinkUrl: Map<String, String>?,\n\tval foreignRulesHints: Map<String, List<ForeignRulesHintModel>>?,\n\tval showRatConversionForm: Boolean?,\n\tval ratConversionFormUrl: String?,\n\tval certRenewalInfo: Map<String, Map<CertificateRenewalType, CertificateRenewalInfoModel>>?,\n\tval showValidityState: Boolean?,\n\tval covidCertificateNewsText: Map<String, String>?,\n\tval infoCovidCertificateNews: Map<String, InfoCovidCertificateNews>?,\n) {\n\tfun getInfoBox(languageKey: String?): InfoBoxModel? = infoBox?.get(languageKey)\n\tfun getQuestionsFaqs(languageKey: String): FaqModel? = questions?.get(languageKey)\n\tfun getWorksFaqs(languageKey: String): FaqModel? = works?.get(languageKey)\n\tfun getTransferQuestionsFaqs(languageKey: String): FaqModel? = transferQuestions?.get(languageKey)\n\tfun getTransferWorksFaqs(languageKey: String): FaqModel? = transferWorks?.get(languageKey)\n\tfun getVaccinationHints(languageKey: String): List<VaccinationHintModel>? = vaccinationHints?.get(languageKey)\n\tfun getCheckModesInfos(languageKey: String): Map<String, CheckModeInfoModel>? = checkModesInfos?.get(languageKey)?.infos\n\tfun getUnselectedModesInfos(languageKey: String): VerifierInfos? = checkModesInfos?.get(languageKey)?.unselected\n\tfun getRefreshButtonInfo(languageKey: String): RefreshButtonInfoModel? = refreshButtonInfo?.get(languageKey)\n\tfun getEolBannerInfo(languageKey: String): Map<String, EolBannerInfoModel>? = eolBannerInfo?.get(languageKey)\n\tfun getForeignRulesLinkText(languageKey: String): String? = foreignRulesLinkText?.get(languageKey)\n\tfun getForeignRulesLinkUrl(languageKey: String): String? = foreignRulesLinkUrl?.get(languageKey)\n\tfun getForeignRulesHints(languageKey: String): List<ForeignRulesHintModel>? = foreignRulesHints?.get(languageKey)\n\tfun getCertRenewalInfo(languageKey: String): Map<CertificateRenewalType, CertificateRenewalInfoModel>? =\n\t\tcertRenewalInfo?.get(languageKey)\n\n\tfun getCheckModes(languageKey: String): Map<String, WalletModeModel>? = checkModesInfo?.get(languageKey)?.modes\n\tfun getInfoModeTitle(languageKey: String): String? = checkModesInfo?.get(languageKey)?.title\n\n\tfun getVaccinationBookingInfo(languageKey: String): VaccinationBookingInfoModel? = vaccinationBookingInfo?.get(languageKey)\n\n\tfun getCovidCertificateNewsText(languageKey: String): String? = covidCertificateNewsText?.get(languageKey)\n\n\tfun getInfoCovidCertificateNews(languageKey: String): InfoCovidCertificateNews? = infoCovidCertificateNews?.get(languageKey)\n\n\tfun generateFaqItems(languageKey: String): List<Faq> {\n\t\tval itemsList = mutableListOf<Faq>()\n\t\tgetQuestionsFaqs(languageKey)?.let { questionModel ->\n\t\t\tval questionItems = questionModel.faqEntries\n\t\t\titemsList.add(Header(questionModel.faqIconAndroid, questionModel.faqTitle, questionModel.faqSubTitle))\n\t\t\tquestionItems?.let {\n\t\t\t\titemsList.addAll(it.map { faqEntry ->\n\t\t\t\t\tQuestion(\n\t\t\t\t\t\tfaqEntry.title,\n\t\t\t\t\t\tfaqEntry.text,\n\t\t\t\t\t\tlinkTitle = faqEntry.linkTitle,\n\t\t\t\t\t\tlinkUrl = faqEntry.linkUrl\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tgetWorksFaqs(languageKey)?.let { worksModel ->\n\t\t\tval questionItems = worksModel.faqEntries\n\t\t\titemsList.add(Header(worksModel.faqIconAndroid, worksModel.faqTitle, worksModel.faqSubTitle))\n\t\t\tquestionItems?.let {\n\t\t\t\titemsList.addAll(it.map { faqEntry ->\n\t\t\t\t\tQuestion(\n\t\t\t\t\t\tfaqEntry.title,\n\t\t\t\t\t\tfaqEntry.text,\n\t\t\t\t\t\tlinkTitle = faqEntry.linkTitle,\n\t\t\t\t\t\tlinkUrl = faqEntry.linkUrl\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn itemsList\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/ConfigViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport android.app.Application\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.net.ConfigSpec\nimport kotlinx.coroutines.launch\n\nabstract class ConfigViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val configMutableLiveData = MutableLiveData<ConfigModel>(ConfigRepository.getCurrentConfig(application))\n\tval configLiveData: LiveData<ConfigModel> = configMutableLiveData\n\n\tfun loadConfig(baseUrl: String, versionName: String, buildTime: String) {\n\t\tval configSpec = ConfigSpec(getApplication(), baseUrl, versionName, buildTime)\n\t\tval configRepository = ConfigRepository.getInstance(configSpec)\n\n\t\tviewModelScope.launch {\n\t\t\tconfigRepository.loadConfig(getApplication())?.let { config ->\n\t\t\t\tconfigMutableLiveData.postValue(config) }\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/CovidCertificateNewsItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\nimport java.io.Serializable\n\n@JsonClass(generateAdapter = true)\ndata class CovidCertificateNewsItem(\n\tval iconAndroid: String?,\n\tval text: String?,\n) : Serializable\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/EolBannerInfoModel.kt",
    "content": "package ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\nimport java.io.Serializable\n\n@JsonClass(generateAdapter = true)\ndata class EolBannerInfoModel(\n\tval homescreenHexColor: String,\n\tval homescreenTitle: String,\n\tval detailHexColor: String,\n\tval detailTitle: String,\n\tval detailText: String?,\n\tval detailMoreInfo: String,\n\tval popupTitle: String,\n\tval popupText1: String?,\n\tval popupBoldText: String?,\n\tval popupText2: String?,\n\tval popupLinkText: String,\n\tval popupLinkUrl: String,\n) : Serializable\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/FaqEntryModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class FaqEntryModel(\n\tval title: String,\n\tval text: String,\n\tval iconAndroid: String?,\n\tval linkTitle: String?,\n\tval linkUrl: String?\n)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/FaqIntroSection.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class FaqIntroSection(\n\tval iconAndroid: String,\n\tval text: String\n)\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/FaqModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class FaqModel(\n\tval faqTitle: String,\n\tval faqSubTitle: String?,\n\tval faqIntroSections: List<FaqIntroSection>?,\n\tval faqIconAndroid: String?,\n\tval faqEntries: List<FaqEntryModel>?\n)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/ForeignRulesHintModel.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class ForeignRulesHintModel(\n\tval iconAndroid: String,\n\tval text: String,\n)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/InfoBoxModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport android.os.Parcel\nimport android.os.Parcelable\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class InfoBoxModel(\n\tval title: String,\n\tval msg: String,\n\tval url: String?,\n\tval urlTitle: String?,\n\tval isDismissible: Boolean,\n\tval infoId: Long\n) : Parcelable {\n\n\tconstructor(parcel: Parcel) : this(\n\t\tparcel.readString() ?: throw IllegalArgumentException(\"No title specified for InfoDialog\"),\n\t\tparcel.readString() ?: throw IllegalArgumentException(\"No message specified for InfoDialog\"),\n\t\tparcel.readString(),\n\t\tparcel.readString(),\n\t\tparcel.readByte() != 0.toByte(),\n\t\tparcel.readLong()\n\t) {\n\t}\n\n\toverride fun writeToParcel(parcel: Parcel, flags: Int) {\n\t\tparcel.writeString(title)\n\t\tparcel.writeString(msg)\n\t\tparcel.writeString(url)\n\t\tparcel.writeString(urlTitle)\n\t\tparcel.writeByte(if (isDismissible) 1 else 0)\n\t\tparcel.writeLong(infoId)\n\t}\n\n\toverride fun describeContents(): Int {\n\t\treturn 0\n\t}\n\n\tcompanion object CREATOR : Parcelable.Creator<InfoBoxModel> {\n\t\toverride fun createFromParcel(parcel: Parcel): InfoBoxModel {\n\t\t\treturn InfoBoxModel(parcel)\n\t\t}\n\n\t\toverride fun newArray(size: Int): Array<InfoBoxModel?> {\n\t\t\treturn arrayOfNulls(size)\n\t\t}\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/InfoCovidCertificateNews.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\nimport java.io.Serializable\n\n@JsonClass(generateAdapter = true)\ndata class InfoCovidCertificateNews(\n\tval title: String?,\n\tval newsItems: List<CovidCertificateNewsItem>,\n) : Serializable"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/RefreshButtonInfoModel.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\nimport java.io.Serializable\n\n@JsonClass(generateAdapter = true)\ndata class RefreshButtonInfoModel(\n\tval title: String,\n\tval text1: String,\n\tval text2: String,\n\tval fatTitle: String,\n\tval text3: String,\n\tval linkText: String,\n\tval linkUrl: String,\n) : Serializable"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/VaccinationBookingInfoModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class VaccinationBookingInfoModel(\n\tval title: String,\n\tval text: String,\n\tval info: String,\n\tval impfcheckTitle: String?,\n\tval impfcheckText: String?,\n\tval impfcheckButton: String?,\n\tval impfcheckUrl: String?\n)\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/config/VaccinationHintModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.config\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class VaccinationHintModel(\n\tval title: String,\n\tval text: String,\n)\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/data/ConfigSecureStorage.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.data\n\nimport android.content.Context\nimport androidx.core.content.edit\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport com.squareup.moshi.Moshi\n\nclass ConfigSecureStorage private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<ConfigSecureStorage, Context>(::ConfigSecureStorage) {\n\t\tprivate const val PREFERENCES = \"ConfigSecureStorage\"\n\n\t\tprivate const val KEY_CONFIG = \"ConfigKey\"\n\t\tprivate const val KEY_CONFIG_LAST_SUCCESS = \"LastSuccessTimestampKey\"\n\t\tprivate const val KEY_CONFIG_LAST_SUCCESS_APP_AND_OS_VERSION = \"LastSuccessVersionKey\"\n\t\tprivate const val KEY_CONFIG_SHOWN_INFO_BOX_ID = \"LastShownInfoBoxId\"\n\n\t\tprivate const val KEY_USER_LANGUAGE = \"UserLanguage\"\n\n\t\tprivate const val KEY_ZOOM_ACTIVE = \"KEY_ZOOM_ACTIVE\"\n\n\t\tprivate const val KEY_REFRESH_BUTTON_DISABLED_TIMESTAMP = \"KEY_REFRESH_BUTTON_DISABLED_TIMESTAMP\"\n\n\t\tprivate val moshi = Moshi.Builder().build()\n\t\tprivate val configModelAdapter = moshi.adapter(ConfigModel::class.java)\n\t}\n\n\tprivate val prefs = EncryptedSharedPreferencesUtil.initializeSharedPreferences(context, PREFERENCES)\n\n\tfun updateConfigData(config: ConfigModel, timestamp: Long, appVersion: String) {\n\t\tval editor = prefs.edit()\n\t\teditor.putLong(KEY_CONFIG_LAST_SUCCESS, timestamp)\n\t\teditor.putString(KEY_CONFIG_LAST_SUCCESS_APP_AND_OS_VERSION, appVersion)\n\t\teditor.putString(KEY_CONFIG, configModelAdapter.toJson(config))\n\t\teditor.apply()\n\t}\n\n\tfun getConfig(): ConfigModel? =\n\t\tprefs.getString(KEY_CONFIG, null)\n\t\t\t?.let { configModelAdapter.fromJson(it) }\n\n\tfun getConfigLastSuccessTimestamp(): Long =\n\t\tprefs.getLong(KEY_CONFIG_LAST_SUCCESS, 0)\n\n\tfun getConfigLastSuccessAppAndOSVersion(): String? =\n\t\tprefs.getString(KEY_CONFIG_LAST_SUCCESS_APP_AND_OS_VERSION, null)\n\n\tfun setLastShownInfoBoxId(infoBoxId: Long) = prefs.edit().putLong(KEY_CONFIG_SHOWN_INFO_BOX_ID, infoBoxId).apply()\n\n\tfun getLastShownInfoBoxId(): Long = prefs.getLong(KEY_CONFIG_SHOWN_INFO_BOX_ID, 0L)\n\n\tfun setUserLanguage(language: String?) = prefs.edit { putString(KEY_USER_LANGUAGE, language) }\n\n\tfun getUserLanguage(): String? = prefs.getString(KEY_USER_LANGUAGE, null)\n\n\tfun getZoomOn(): Boolean = prefs.getBoolean(KEY_ZOOM_ACTIVE, false)\n\tfun setZoomOn(isZoomActive: Boolean) = prefs.edit().putBoolean(KEY_ZOOM_ACTIVE, isZoomActive).apply()\n\n\tfun getRefreshButtonDisabledTimestamp(): Long = prefs.getLong(KEY_REFRESH_BUTTON_DISABLED_TIMESTAMP, -1L)\n\tfun setRefreshButtonDisabledTimestamp(timestamp: Long) = prefs.edit { putLong(KEY_REFRESH_BUTTON_DISABLED_TIMESTAMP, timestamp) }\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/dialog/InfoDialogFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.dialog\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.DialogFragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.config.InfoBoxModel\nimport ch.admin.bag.covidcertificate.common.databinding.DialogFragmentInfoBoxBinding\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\n\nclass InfoDialogFragment : DialogFragment() {\n\n\tcompanion object {\n\t\tprivate const val ARG_INFO_BOX_MODEL = \"ARG_INFO_BOX_MODEL\"\n\n\t\tfun newInstance(infoBoxModel: InfoBoxModel): InfoDialogFragment = InfoDialogFragment().apply {\n\t\t\targuments = bundleOf(ARG_INFO_BOX_MODEL to infoBoxModel)\n\t\t}\n\t}\n\n\tprivate lateinit var infoBoxModel: InfoBoxModel\n\n\tprivate var _binding: DialogFragmentInfoBoxBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_InfoDialog)\n\t\tinfoBoxModel = requireArguments().getParcelable(ARG_INFO_BOX_MODEL)\n\t\t\t?: throw IllegalStateException(\"No infoBox information supplied to DialogFragment!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = DialogFragmentInfoBoxBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsetupInfo()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupInfo() {\n\t\tbinding.infoDialogTitle.text = infoBoxModel.title\n\t\tbinding.infoDialogText.text = infoBoxModel.msg\n\t\tval hasCustomButton = !infoBoxModel.urlTitle.isNullOrEmpty()\n\t\tbinding.infoDialogUrlButton.apply {\n\t\t\ttext = infoBoxModel.urlTitle\n\t\t\tisVisible = hasCustomButton\n\t\t\tinfoBoxModel.url?.let { url ->\n\t\t\t\tsetOnClickListener { UrlUtil.openUrl(context, url) }\n\t\t\t}\n\t\t}\n\t\tbinding.infoDialogCloseButton.apply {\n\t\t\ttext = getString(if (hasCustomButton) R.string.accessibility_close_button else R.string.ok_button)\n\t\t\tsetOnClickListener { if (this@InfoDialogFragment.isVisible) dismiss() }\n\t\t}\n\t}\n\n\tfun getInfoId(): Long = infoBoxModel.infoId\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/exception/HttpIOException.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.exception\n\nimport retrofit2.Response\nimport java.io.IOException\n\n/**\n * A replacement for the retrofit2.HttpException that inherits from IOException instead of RuntimeException.\n * Since other request related exceptions (e.g. UnknownHost or SocketTimeout) extend IOException, this makes it easier to catch all\n * networking related exceptions in a single catch-clause.\n */\nclass HttpIOException(val response: Response<*>) : IOException(response.message()) {\n\tval code = response.code()\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/exception/TimeDeviationException.kt",
    "content": "package ch.admin.bag.covidcertificate.common.exception\n\nclass TimeDeviationException : IllegalStateException()"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/extensions/ContextExtensions.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.extensions\n\nimport android.content.Context\nimport android.content.res.Configuration\nimport java.util.*\n\nfun Context.getDrawableIdentifier(drawableName: String) = resources.getIdentifier(drawableName, \"drawable\", packageName)\n\nfun Context.updateLocale(languageKey: String? = null): Context {\n\tval config = Configuration()\n\n\tval locale = languageKey?.let {\n\t\tLocale(languageKey, \"CH\")\n\t} ?: Locale.getDefault()\n\n\tconfig.setLocale(locale)\n\treturn createConfigurationContext(config)\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/extensions/DccCertExtensions.kt",
    "content": "package ch.admin.bag.covidcertificate.common.extensions\n\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.firstPositiveResult\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.vaccineDate\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.validFromDate\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.DccCert\nimport java.time.LocalDateTime\n\nfun DccCert.getDate(): LocalDateTime? {\n\tvar date = this.vaccinations?.firstOrNull()?.vaccineDate()\n\n\tif (date == null) {\n\t\tdate = this.pastInfections?.firstOrNull()?.firstPositiveResult()\n\t}\n\tif (date == null) {\n\t\tdate = this.tests?.firstOrNull()?.validFromDate()\n\t}\n\treturn date\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/extensions/LifecycleOwnerExtensions.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.extensions\n\nimport androidx.lifecycle.LifecycleOwner\nimport androidx.lifecycle.flowWithLifecycle\nimport androidx.lifecycle.lifecycleScope\nimport kotlinx.coroutines.flow.Flow\nimport kotlinx.coroutines.flow.collect\nimport kotlinx.coroutines.launch\n\n/**\n * Collect a flow, starting and cancelling the collection automatically when the lifecycle changes from or to STARTED\n */\nfun <T> LifecycleOwner.collectWhenStarted(flow: Flow<T>, block: suspend (T) -> Unit) {\n\tlifecycleScope.launch {\n\t\tflow.flowWithLifecycle(lifecycle).collect {\n\t\t\tblock(it)\n\t\t}\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/extensions/OkHttpExtensions.kt",
    "content": "package ch.admin.bag.covidcertificate.common.extensions\n\nimport okhttp3.OkHttpClient\nimport java.util.concurrent.TimeUnit\n\nfun OkHttpClient.Builder.setTimeouts(seconds: Long = 10): OkHttpClient.Builder {\n\tconnectTimeout(seconds, TimeUnit.SECONDS)\n\twriteTimeout(seconds, TimeUnit.SECONDS)\n\treadTimeout(seconds, TimeUnit.SECONDS)\n\treturn this\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/extensions/WindowExtensions.kt",
    "content": "package ch.admin.bag.covidcertificate.common.extensions\n\nimport android.view.Window\nimport android.view.WindowManager\n\nfun Window.overrideScreenBrightness(override: Boolean) {\n\tif (override) {\n\t\taddFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)\n\t} else {\n\t\tclearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)\n\t}\n\tval layoutParams: WindowManager.LayoutParams = attributes\n\tlayoutParams.screenBrightness = if (override) 1f else -1f\n\tattributes = layoutParams\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/faq/FaqAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.faq\n\nimport android.view.LayoutInflater\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.common.faq.model.Faq\nimport ch.admin.bag.covidcertificate.common.faq.model.Header\nimport ch.admin.bag.covidcertificate.common.faq.model.IntroSection\nimport ch.admin.bag.covidcertificate.common.faq.model.Question\n\nclass FaqAdapter(val onLinkClickListener: ((String) -> Unit)? = null) : RecyclerView.Adapter<FaqViewHolder>() {\n\n\tprivate val items = mutableListOf<FaqItem>()\n\n\toverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FaqViewHolder {\n\t\tval inflater = LayoutInflater.from(parent.context)\n\t\treturn when (viewType) {\n\t\t\t0 -> FaqViewHolder(inflater.inflate(HeaderItem.layoutResource, parent, false))\n\t\t\t1 -> FaqViewHolder(inflater.inflate(QuestionItem.layoutResource, parent, false))\n\t\t\t2 -> FaqViewHolder(inflater.inflate(IntroSectionItem.layoutResource, parent, false))\n\t\t\telse -> throw IllegalStateException(\"Unknown viewType $viewType in FaqAdapter\")\n\t\t}\n\t}\n\n\toverride fun onBindViewHolder(holder: FaqViewHolder, position: Int) {\n\t\tholder.bindItem(items[position]) { notifyItemChanged(position) }\n\t}\n\n\toverride fun getItemCount(): Int = items.size\n\n\toverride fun getItemViewType(position: Int): Int {\n\t\treturn when (items[position]) {\n\t\t\tis HeaderItem -> 0\n\t\t\tis QuestionItem -> 1\n\t\t\tis IntroSectionItem -> 2\n\t\t}\n\t}\n\n\tfun setItems(items: List<Faq>) {\n\t\tthis.items.clear()\n\t\tval newItems = items.mapNotNull {\n\t\t\twhen (it) {\n\t\t\t\tis Header -> HeaderItem(it)\n\t\t\t\tis Question -> QuestionItem(it, onLinkClickListener)\n\t\t\t\tis IntroSection -> IntroSectionItem(it)\n\t\t\t\telse -> null\n\t\t\t}\n\t\t}\n\t\tthis.items.addAll(newItems)\n\t\tnotifyDataSetChanged()\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/faq/FaqFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.faq\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.appcompat.widget.Toolbar\nimport androidx.fragment.app.Fragment\nimport androidx.recyclerview.widget.LinearLayoutManager\nimport androidx.recyclerview.widget.SimpleItemAnimator\nimport ch.admin.bag.covidcertificate.common.databinding.FragmentFaqBinding\nimport ch.admin.bag.covidcertificate.common.faq.model.Faq\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.views.hideAnimated\n\n\nabstract class FaqFragment : Fragment() {\n\n\tprivate var _binding: FragmentFaqBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tlateinit var toolbar: Toolbar\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentFaqBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\ttoolbar = binding.certificatesOverviewToolbar\n\t\ttoolbar.setNavigationOnClickListener {\n\t\t\tparentFragmentManager.popBackStack()\n\t\t}\n\n\t\tsetupFaqProvider()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprotected abstract fun setupFaqProvider()\n\n\tprotected fun setupFaqList(items: List<Faq>) {\n\t\tbinding.faqLoadingView.hideAnimated()\n\n\t\tval recyclerView = binding.faqRecyclerView\n\t\t(recyclerView.itemAnimator as SimpleItemAnimator?)?.supportsChangeAnimations = false\n\t\tval layoutManager = LinearLayoutManager(recyclerView.context, LinearLayoutManager.VERTICAL, false)\n\t\trecyclerView.layoutManager = layoutManager\n\t\tval adapter = FaqAdapter { url: String ->\n\t\t\tcontext?.let { UrlUtil.openUrl(it, url) }\n\t\t}\n\t\trecyclerView.adapter = adapter\n\t\tadapter.setItems(items)\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/faq/FaqItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.faq\n\nimport android.view.View\nimport androidx.core.view.doOnPreDraw\nimport androidx.core.view.isVisible\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.databinding.ItemFaqHeaderBinding\nimport ch.admin.bag.covidcertificate.common.databinding.ItemFaqIntroSectionBinding\nimport ch.admin.bag.covidcertificate.common.databinding.ItemFaqQuestionBinding\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.common.faq.model.Header\nimport ch.admin.bag.covidcertificate.common.faq.model.IntroSection\nimport ch.admin.bag.covidcertificate.common.faq.model.Question\n\nsealed class FaqItem {\n\tabstract fun bindView(view: View, onItemClickListener: (() -> Unit)? = null)\n}\n\ndata class HeaderItem(val header: Header) : FaqItem() {\n\tcompanion object {\n\t\tval layoutResource = R.layout.item_faq_header\n\t}\n\n\toverride fun bindView(view: View, onItemClickListener: (() -> Unit)?) {\n\t\tval binding = ItemFaqHeaderBinding.bind(view)\n\t\tbinding.itemFaqHeaderTitle.text = header.title\n\t\tbinding.itemFaqHeaderText.apply {\n\t\t\ttext = header.subtitle\n\t\t\tisVisible = header.subtitle != null\n\t\t}\n\n\t\tval drawableId = header.iconName?.let { iconName ->\n\t\t\tview.context.getDrawableIdentifier(iconName)\n\t\t} ?: 0\n\n\t\tbinding.itemFaqHeaderIllu.apply {\n\t\t\tsetImageResource(drawableId)\n\t\t\tisVisible = drawableId != 0\n\t\t}\n\t}\n}\n\ndata class QuestionItem(\n\tval question: Question,\n\tval onLinkClickListener: ((String) -> Unit)? = null,\n) : FaqItem() {\n\tcompanion object {\n\t\tval layoutResource = R.layout.item_faq_question\n\t}\n\n\toverride fun bindView(view: View, onItemClickListener: (() -> Unit)?) {\n\t\tval binding = ItemFaqQuestionBinding.bind(view)\n\n\t\tbinding.root.setOnClickListener {\n\t\t\tquestion.isSelected = !question.isSelected\n\t\t\tview.doOnPreDraw { onItemClickListener?.invoke() }\n\t\t}\n\t\tbinding.itemFaqQuestionTitle.text = question.question\n\t\tbinding.itemFaqQuestionAnswer.apply {\n\t\t\ttext = question.answer\n\t\t\tisVisible = question.isSelected\n\t\t}\n\t\tval hasLink = !question.linkTitle.isNullOrEmpty() && !question.linkUrl.isNullOrEmpty()\n\t\t(hasLink && question.isSelected).let { visible ->\n\t\t\tbinding.itemFaqQuestionLinkLabel.isVisible = visible\n\t\t\tbinding.itemFaqQuestionLink.isVisible = visible\n\t\t}\n\n\t\tif (hasLink) {\n\t\t\tbinding.itemFaqQuestionLinkLabel.text = question.linkTitle\n\t\t\tbinding.itemFaqQuestionLink.setOnClickListener { onLinkClickListener?.invoke(question.linkUrl!!) }\n\t\t} else {\n\t\t\tbinding.itemFaqQuestionLink.setOnClickListener(null)\n\t\t}\n\n\t\tbinding.itemFaqQuestionChevron.setImageResource(if (question.isSelected) R.drawable.ic_arrow_contract else R.drawable.ic_arrow_expand)\n\t}\n}\n\ndata class IntroSectionItem(val introSection: IntroSection) : FaqItem() {\n\tcompanion object {\n\t\tval layoutResource = R.layout.item_faq_intro_section\n\t}\n\n\toverride fun bindView(view: View, onItemClickListener: (() -> Unit)?) {\n\t\tval binding = ItemFaqIntroSectionBinding.bind(view)\n\t\tval drawableId = view.context.getDrawableIdentifier(introSection.iconName)\n\t\tbinding.faqIntroSectionIcon.setImageResource(drawableId)\n\t\tbinding.faqIntroSectionText.text = introSection.text\n\t}\n}\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/faq/FaqViewHolder.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.faq\n\nimport android.view.View\nimport androidx.recyclerview.widget.RecyclerView\n\nclass FaqViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {\n\tfun bindItem(item: FaqItem, onItemClickListener: (() -> Unit)? = null) = item.bindView(itemView, onItemClickListener)\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/faq/model/Header.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.faq.model\n\nimport java.io.Serializable\n\ninterface Faq\n\ndata class Header(val iconName: String?, val title: String, val subtitle: String?) : Faq, Serializable\n\ndata class Question(\n\tval question: String,\n\tval answer: String,\n\tvar isSelected: Boolean = false,\n\tval linkTitle: String? = null,\n\tval linkUrl: String? = null,\n) : Faq, Serializable\n\ndata class IntroSection(val iconName: String, val text: String) : Faq, Serializable"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/html/BuildInfo.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.html\n\nimport java.io.Serializable\n\ndata class BuildInfo(\n\tval appName: String,\n\tval versionName: String,\n\tval buildTime: Long,\n\tval flavor: String,\n\tval agbUrl: String,\n\tval appIdentifier: String,\n) : Serializable\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/html/ImprintFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.html\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport android.webkit.WebView\nimport android.webkit.WebViewClient\nimport androidx.annotation.StringRes\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.commit\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.databinding.FragmentHtmlBinding\nimport ch.admin.bag.covidcertificate.common.settings.SettingsFragment\nimport ch.admin.bag.covidcertificate.common.util.AssetUtil\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.views.hideAnimated\nimport java.util.*\n\nclass ImprintFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate const val COVID_CERT_IMPRESSUM_PREFIX = \"ccert://\"\n\n\t\tprivate const val ARG_BASE_URL = \"ARG_BASE_URL\"\n\t\tprivate const val ARG_BUILD_INFO = \"ARG_BUILD_INFO\"\n\t\tprivate const val ARG_DATA = \"ARG_DATA\"\n\t\tprivate const val ARG_TITLE = \"ARG_TITLE\"\n\t\tprivate const val ARG_SETTINGS = \"ARG_SETTINGS\"\n\n\t\tfun newInstance(\n\t\t\ttitleRes: Int,\n\t\t\tbuildInfo: BuildInfo,\n\t\t\tbaseUrl: String? = null,\n\t\t\tdata: String? = null,\n\t\t\tshowSettings: Boolean = true\n\t\t): ImprintFragment {\n\t\t\tval fragment = ImprintFragment()\n\t\t\tfragment.arguments = Bundle().apply {\n\t\t\t\tputString(ARG_BASE_URL, baseUrl)\n\t\t\t\tputSerializable(ARG_BUILD_INFO, buildInfo)\n\t\t\t\tputString(ARG_DATA, data)\n\t\t\t\tputInt(ARG_TITLE, titleRes)\n\t\t\t\tputBoolean(ARG_SETTINGS, showSettings)\n\t\t\t}\n\t\t\treturn fragment\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentHtmlBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var baseUrl: String\n\tprivate var data: String? = null\n\tprivate var buildInfo: BuildInfo? = null\n\n\t@StringRes\n\tprivate var titleRes = 0\n\n\tprivate var showSettings = false\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\trequireArguments().apply {\n\t\t\tbaseUrl = getString(ARG_BASE_URL) ?: AssetUtil.getImpressumBaseUrl(requireContext())\n\t\t\tbuildInfo = getSerializable(ARG_BUILD_INFO) as? BuildInfo?\n\t\t\tdata = getString(ARG_DATA) ?: buildInfo?.let { AssetUtil.getImpressumHtml(requireContext(), it) }\n\t\t\ttitleRes = getInt(ARG_TITLE)\n\t\t\tshowSettings = getBoolean(ARG_SETTINGS)\n\t\t}\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentHtmlBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tval toolbar = binding.htmlToolbar\n\t\ttoolbar.setTitle(titleRes)\n\t\ttoolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tif (showSettings) {\n\t\t\ttoolbar.inflateMenu(R.menu.imprint)\n\t\t\ttoolbar.setOnMenuItemClickListener { item ->\n\t\t\t\twhen (item.itemId) {\n\t\t\t\t\tR.id.menu_settings -> parentFragmentManager.commit {\n\t\t\t\t\t\tsetCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t\t\treplace(id, SettingsFragment.newInstance())\n\t\t\t\t\t\taddToBackStack(SettingsFragment::class.java.canonicalName)\n\t\t\t\t\t}\n\t\t\t\t\telse -> throw UnsupportedOperationException()\n\t\t\t\t}\n\t\t\t\ttrue\n\t\t\t}\n\t\t}\n\n\t\tval web = binding.htmlWebview\n\t\tval loadingSpinner = binding.loadingSpinner\n\n\t\tweb.webViewClient = object : WebViewClient() {\n\t\t\toverride fun onPageFinished(view: WebView, url: String) {\n\t\t\t\tloadingSpinner.hideAnimated()\n\t\t\t\tsuper.onPageFinished(view, url)\n\t\t\t}\n\n\t\t\toverride fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {\n\t\t\t\tif (baseUrl == url) return true\n\t\t\t\tif (url.toLowerCase(Locale.ENGLISH).startsWith(COVID_CERT_IMPRESSUM_PREFIX)) {\n\t\t\t\t\tval buildInfo = buildInfo ?: throw IllegalStateException(\"No BuildInfo supplied for imprint\")\n\t\t\t\t\tval strippedUrl = url.substring(COVID_CERT_IMPRESSUM_PREFIX.length)\n\t\t\t\t\tval htmlFragment = newInstance(\n\t\t\t\t\t\tR.string.impressum_title,\n\t\t\t\t\t\tbuildInfo,\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tAssetUtil.loadImpressumHtmlFile(view.context, strippedUrl, buildInfo),\n\t\t\t\t\t\tfalse\n\t\t\t\t\t)\n\t\t\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t\t\t.setCustomAnimations(\n\t\t\t\t\t\t\tR.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter,\n\t\t\t\t\t\t\tR.anim.slide_pop_exit\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.replace(id, htmlFragment)\n\t\t\t\t\t\t.addToBackStack(ImprintFragment::class.java.canonicalName)\n\t\t\t\t\t\t.commit()\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tUrlUtil.openUrl(context, url)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\tif (data != null) {\n\t\t\tdata?.let { web.loadDataWithBaseURL(baseUrl, it, \"text/html\", \"UTF-8\", null) }\n\t\t} else {\n\t\t\tweb.loadUrl(baseUrl)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/net/ConfigRepository.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.net\n\nimport android.content.Context\nimport android.os.Build\nimport ch.admin.bag.covidcertificate.common.BuildConfig\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.extensions.setTimeouts\nimport ch.admin.bag.covidcertificate.common.util.AssetUtil\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.JwsInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport okhttp3.Cache\nimport okhttp3.OkHttpClient\nimport okhttp3.logging.HttpLoggingInterceptor\nimport retrofit2.HttpException\nimport retrofit2.Retrofit\nimport retrofit2.converter.moshi.MoshiConverterFactory\n\nclass ConfigRepository private constructor(private val configSpec: ConfigSpec) {\n\n\tcompanion object : SingletonHolder<ConfigRepository, ConfigSpec>(::ConfigRepository) {\n\t\tprivate const val APP_VERSION_PREFIX_ANDROID = \"android-\"\n\t\tprivate const val OS_VERSION_PREFIX_ANDROID = \"android\"\n\n\t\tprivate const val MIN_LOAD_WAIT_TIME = 60 * 60 * 1000L // 1h\n\t\tprivate const val MAX_AGE_STATUS_VALID_CACHED_CONFIG = 48 * 60 * 60 * 1000L // 48h\n\n\t\tfun getCurrentConfig(context: Context) =\n\t\t\tConfigSecureStorage.getInstance(context).getConfig() ?: AssetUtil.loadDefaultConfig(context)\n\t}\n\n\tprivate val configService: ConfigService\n\tprivate val storage = ConfigSecureStorage.getInstance(configSpec.context)\n\n\tinit {\n\t\tval rootCa = CovidCertificateSdk.getRootCa(configSpec.context)\n\t\tval expectedCommonName = CovidCertificateSdk.getExpectedCommonName()\n\t\tval okHttpBuilder = OkHttpClient.Builder()\n\t\t\t.certificatePinner(CertificatePinning.pinner)\n\t\t\t.addInterceptor(JwsInterceptor(rootCa, expectedCommonName))\n\t\t\t.addInterceptor(UserAgentInterceptor(Config.userAgent))\n\t\t\t.setTimeouts()\n\n\t\tval cacheSize = 5 * 1024 * 1024 // 5 MB\n\t\tval cache = Cache(configSpec.context.cacheDir, cacheSize.toLong())\n\t\tokHttpBuilder.cache(cache)\n\n\t\tif (BuildConfig.DEBUG) {\n\t\t\tval httpInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)\n\t\t\tokHttpBuilder.addInterceptor(httpInterceptor)\n\t\t}\n\n\t\tconfigService = Retrofit.Builder()\n\t\t\t.baseUrl(configSpec.baseUrl)\n\t\t\t.client(okHttpBuilder.build())\n\t\t\t.addConverterFactory(MoshiConverterFactory.create())\n\t\t\t.build()\n\t\t\t.create(ConfigService::class.java)\n\t}\n\n\tsuspend fun loadConfig(context: Context): ConfigModel? {\n\t\tval requestTimeStamp = System.currentTimeMillis()\n\t\tval appVersion = APP_VERSION_PREFIX_ANDROID + configSpec.versionName\n\t\tval osVersion = OS_VERSION_PREFIX_ANDROID + Build.VERSION.SDK_INT\n\t\tval buildNumber = configSpec.buildTime\n\t\tval versionString = \"appversion=$appVersion&osversion=$osVersion&buildnr=$buildNumber\"\n\t\tvar config =\n\t\t\tif (storage.getConfigLastSuccessTimestamp() + MIN_LOAD_WAIT_TIME <= System.currentTimeMillis() || versionString != storage.getConfigLastSuccessAppAndOSVersion()) {\n\t\t\t\ttry {\n\t\t\t\t\tval response = withContext(Dispatchers.IO) { configService.getConfig(appVersion, osVersion, buildNumber) }\n\t\t\t\t\tif (!response.isSuccessful) throw HttpException(response)\n\t\t\t\t\tresponse.body()?.let { storage.updateConfigData(it, requestTimeStamp, versionString) }\n\t\t\t\t\tresponse.body()\n\t\t\t\t} catch (e: Exception) {\n\t\t\t\t\te.printStackTrace()\n\t\t\t\t\tnull\n\t\t\t\t}\n\t\t\t} else null\n\n\t\tif (config == null) config = storage.getConfig()\n\t\tif (config == null) config = AssetUtil.loadDefaultConfig(context)\n\n\t\t// If the config has disabled the refresh button check if it's the first time and if so, store the timestamp\n\t\tif (config?.refreshButtonDisabled == true) {\n\t\t\tif (storage.getRefreshButtonDisabledTimestamp() < 0L) {\n\t\t\t\tstorage.setRefreshButtonDisabledTimestamp(System.currentTimeMillis())\n\t\t\t}\n\t\t} else {\n\t\t\tstorage.setRefreshButtonDisabledTimestamp(-1L)\n\t\t}\n\n\t\treturn config\n\t}\n\n}\n\nclass ConfigSpec(val context: Context, val baseUrl: String, val versionName: String, val buildTime: String)"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/net/ConfigService.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.net\n\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport retrofit2.Response\nimport retrofit2.http.GET\nimport retrofit2.http.Headers\nimport retrofit2.http.Query\n\ninterface ConfigService {\n\n\t@Headers(\"Accept: application/json+jws\")\n\t@GET(\"config\")\n\tsuspend fun getConfig(\n\t\t@Query(\"appversion\") appVersion: String,\n\t\t@Query(\"osversion\") osVersion: String,\n\t\t@Query(\"buildnr\") buildNumber: String\n\t): Response<ConfigModel>\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/onboarding/BaseOnboardingActivity.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.onboarding\n\nimport android.os.Bundle\nimport androidx.viewpager2.adapter.FragmentStateAdapter\nimport ch.admin.bag.covidcertificate.common.BaseActivity\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.databinding.ActivityOnboardingBinding\n\nabstract class BaseOnboardingActivity : BaseActivity() {\n\n\tcompanion object {\n\t\tconst val EXTRA_ONBOARDING_TYPE = \"EXTRA_ONBOARDING_TYPE\"\n\t}\n\n\tprivate lateinit var binding: ActivityOnboardingBinding\n\tprivate lateinit var pagerAdapter: FragmentStateAdapter\n\n\tprotected abstract fun getPagerAdapter(): FragmentStateAdapter?\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\n\t\tval pagerAdapter = getPagerAdapter()\n\t\tif (pagerAdapter == null) {\n\t\t\tfinish()\n\t\t\treturn\n\t\t}\n\n\t\tbinding = ActivityOnboardingBinding.inflate(layoutInflater)\n\t\tsetContentView(binding.root)\n\n\t\tbinding.viewPager.isUserInputEnabled = false\n\n\t\tthis.pagerAdapter = pagerAdapter\n\t\tbinding.viewPager.adapter = pagerAdapter\n\t}\n\n\tfun continueToNextPage() {\n\t\tval currentItem: Int = binding.viewPager.currentItem\n\t\tif (currentItem < pagerAdapter.itemCount - 1) {\n\t\t\tbinding.viewPager.setCurrentItem(currentItem + 1, true)\n\t\t} else {\n\t\t\tsetResult(RESULT_OK)\n\t\t\tfinish()\n\t\t\toverridePendingTransition(R.anim.fragment_open_enter, R.anim.fragment_open_exit)\n\t\t}\n\t}\n\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/onboarding/SimpleOnboardingPagerAdapter.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.onboarding\n\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.FragmentActivity\nimport androidx.viewpager2.adapter.FragmentStateAdapter\n\nclass SimpleOnboardingPagerAdapter(\n\tfragmentActivity: FragmentActivity,\n\tprivate vararg val fragmentProviders: FragmentProvider\n) : FragmentStateAdapter(fragmentActivity) {\n\n\toverride fun createFragment(position: Int) = fragmentProviders[position].provide()\n\n\toverride fun getItemCount() = fragmentProviders.size\n\n\tfun interface FragmentProvider {\n\t\tfun provide(): Fragment\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/qr/CameraPermissionExplanationDialog.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.qr\n\nimport android.content.Context\nimport android.graphics.Paint\nimport android.os.Bundle\nimport android.view.View\nimport android.view.ViewGroup\nimport android.widget.TextView\nimport androidx.appcompat.app.AlertDialog\nimport ch.admin.bag.covidcertificate.common.R\n\nclass CameraPermissionExplanationDialog(context: Context) : AlertDialog(context) {\n\n\tprivate var grantCameraAccessClickListener: View.OnClickListener? = null\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetContentView(R.layout.dialog_camera_permission_explanation)\n\t\twindow?.apply {\n\t\t\tsetLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)\n\t\t\tsetBackgroundDrawableResource(R.drawable.bg_dialog)\n\t\t}\n\t\tfindViewById<TextView>(R.id.camera_permission_dialog_ok_button)?.apply {\n\t\t\tpaintFlags = paintFlags or Paint.UNDERLINE_TEXT_FLAG\n\t\t\tsetOnClickListener { v: View? ->\n\t\t\t\tdismiss()\n\t\t\t\tgrantCameraAccessClickListener?.onClick(v)\n\t\t\t}\n\t\t}\n\t\tfindViewById<View>(R.id.camera_permission_dialog_close_button)?.setOnClickListener { _ -> cancel() }\n\t}\n\n\tfun setGrantCameraAccessClickListener(listener: View.OnClickListener?) {\n\t\tgrantCameraAccessClickListener = listener\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/qr/KittlerBinarizer.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.common.qr\n\nimport com.google.zxing.LuminanceSource\nimport com.google.zxing.common.BitMatrix\nimport com.google.zxing.common.GlobalHistogramBinarizer\nimport okhttp3.internal.and\nimport kotlin.math.abs\n\n/*\n *Use a Kittler Binarizer described here //http://www.iztok-jr-fister.eu/static/publications/39.pdf\n *\n *  */\n\nclass KittlerBinarizer(luminanceSource: LuminanceSource) : GlobalHistogramBinarizer(luminanceSource) {\n\n\toverride fun getBlackMatrix(): BitMatrix {\n\t\tval source = luminanceSource\n\t\tval width = source.width\n\t\tval height = source.height\n\t\tvar count = 0\n\t\tvar totalcount = 0\n\t\tval matrix = BitMatrix(width, height)\n\t\tval localLuminanceSource = source.matrix\n\t\tval threshold = estimateThreshold(localLuminanceSource, width, height)\n\t\t(0 until height).forEach { y ->\n\t\t\tval offset = y * width\n\t\t\t(0 until width).forEach { x ->\n\t\t\t\ttotalcount++\n\t\t\t\tval pixel = localLuminanceSource[offset + x] and 0xFF\n\n\t\t\t\tif (pixel < threshold) {\n\t\t\t\t\tcount++\n\t\t\t\t\tmatrix.set(x, y)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn matrix\n\t}\n\n\tprivate fun estimateThreshold(localLuminanceSource: ByteArray, width: Int, height: Int): Int {\n\t\tvar E = 0L\n\t\tvar EF = 0L\n\t\t(1 until height - 1).forEach { y ->\n\t\t\tval offset = y * width\n\t\t\t(1 until width - 1).forEach { x ->\n\t\t\t\tval grey = localLuminanceSource[offset + x] and 0xFF\n\t\t\t\tval grey1 = localLuminanceSource[offset + x - 1] and 0xFF\n\t\t\t\tval grey2 = localLuminanceSource[offset + x + 1] and 0xFF\n\t\t\t\tval grey3 = localLuminanceSource[offset + x - width] and 0xFF\n\t\t\t\tval grey4 = localLuminanceSource[offset + x + width] and 0xFF\n\n\t\t\t\tval Ex = abs(grey1 - grey2)\n\t\t\t\tval Ey = abs(grey3 - grey4)\n\t\t\t\tval exy = Math.max(Ex, Ey)\n\t\t\t\tE += exy\n\t\t\t\tEF += exy * grey\n\t\t\t}\n\t\t}\n\t\tif (E == 0L) {\n\t\t\treturn 128\n\t\t}\n\t\treturn ((EF / E) - 1L).toInt()\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/qr/QRCodeReaderHelper.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.qr\n\nimport android.app.ActivityManager\nimport android.content.Context\nimport android.graphics.Bitmap\nimport android.graphics.Color\nimport android.graphics.pdf.PdfRenderer\nimport android.os.ParcelFileDescriptor\nimport com.google.zxing.*\nimport com.google.zxing.common.GlobalHistogramBinarizer\nimport com.google.zxing.common.HybridBinarizer\nimport java.io.File\nimport java.lang.Integer.min\nimport kotlin.math.roundToInt\n\n\nobject QRCodeReaderHelper {\n\tprivate val hints = mapOf(\n\t\tDecodeHintType.POSSIBLE_FORMATS to arrayListOf(BarcodeFormat.QR_CODE),\n\t\tDecodeHintType.TRY_HARDER to true,\n\t)\n\n\tprivate const val PDF_PAGE_LIMIT = 5\n\tprivate val reader = MultiFormatReader().apply { setHints(hints) }\n\n\tfun decodeQrCode(bitmap: Bitmap): String? {\n\t\tval intArray = IntArray(bitmap.width * bitmap.height)\n\t\tbitmap.getPixels(intArray, 0, bitmap.width, 0, 0, bitmap.width, bitmap.height)\n\t\tval source: LuminanceSource = RGBLuminanceSource(bitmap.width, bitmap.height, intArray)\n\n\t\t// First try with hybrid binarizer, then with global histogram binarizer. Same as in the camera scanner\n\t\treturn decodeQrCodeWithBinarizer(HybridBinarizer(source))\n\t\t\t?: decodeQrCodeWithBinarizer(GlobalHistogramBinarizer(source))\n\t}\n\n\tfun pdfToBitmaps(context: Context, pdfFile: File): Sequence<Bitmap> = sequence {\n\t\ttry {\n\t\t\tPdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY)).use { renderer ->\n\t\t\t\tval pageCount = renderer.pageCount\n\n\t\t\t\tval activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager\n\t\t\t\tval memoryInfo = ActivityManager.MemoryInfo().also { activityManager.getMemoryInfo(it) }\n\n\t\t\t\tfor (scale in listOf(1f, context.resources.displayMetrics.densityDpi / 72f, 3f, 5f, 7f, 9f)) {\n\t\t\t\t\tfor (i in 0 until min(pageCount, PDF_PAGE_LIMIT)) {\n\t\t\t\t\t\trenderer.openPage(i).use { page ->\n\n\t\t\t\t\t\t\t// PDF width/height are given in \"points pt\" such that 1 pt = 1/72 inch\n\t\t\t\t\t\t\t// => 72 \"dots-per-inch dpi\" <==> scale = 1\n\t\t\t\t\t\t\tval pixelWidth = (scale * page.width).roundToInt()\n\t\t\t\t\t\t\tval pixelHeight = (scale * page.height).roundToInt()\n\n\n\t\t\t\t\t\t\tif (scale == 1f || !memoryInfo.lowMemory) {\n\t\t\t\t\t\t\t\t// Only yield the scaled bitmap if the system is not considered to be in low memory mode\n\t\t\t\t\t\t\t\t// On some devices, this bitmap can get up to 50MB due to the large scale factor\n\t\t\t\t\t\t\t\tpage.renderToBitmap(pixelWidth, pixelHeight).use {\n\t\t\t\t\t\t\t\t\tyield(it)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t} catch (ex: Exception) {\n\t\t\tex.printStackTrace()\n\t\t}\n\t}\n\n\tprivate fun decodeQrCodeWithBinarizer(binarizer: Binarizer): String? {\n\t\tval binaryBitmap = BinaryBitmap(binarizer)\n\n\t\ttry {\n\t\t\tval result: Result = reader.decodeWithState(binaryBitmap)\n\t\t\treturn result.text\n\t\t} catch (e: NotFoundException) {\n\t\t\te.printStackTrace()\n\t\t} catch (e: ChecksumException) {\n\t\t\te.printStackTrace()\n\t\t} catch (e: FormatException) {\n\t\t\te.printStackTrace()\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate fun PdfRenderer.Page.renderToBitmap(pixelWidth: Int, pixelHeight: Int): Bitmap {\n\t\tval bitmap = Bitmap.createBitmap(pixelWidth, pixelHeight, Bitmap.Config.ARGB_8888)\n\n\t\t// Make sure the bitmap's background is not transparent (which can cause issues for QR code detection)\n\t\tbitmap.eraseColor(Color.WHITE)\n\n\t\t// Draw the page onto the bitmap. Internally, this will scale the page to fit the bitmap (unless transform != null).\n\t\tthis.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT)\n\n\t\t// reduce pixel size to avoid memory issues down the line\n\t\tval bitmapR = bitmap.copy(Bitmap.Config.RGB_565, false)\n\t\tbitmap.recycle()\n\n\t\treturn bitmapR\n\t}\n\n\tprivate inline fun Bitmap.use(block: (Bitmap) -> Unit) {\n\t\ttry {\n\t\t\tblock(this)\n\t\t} finally {\n\t\t\tthis.recycle()\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/qr/QrScanFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.qr\n\nimport android.Manifest\nimport android.annotation.SuppressLint\nimport android.content.pm.PackageManager\nimport android.graphics.drawable.GradientDrawable\nimport android.graphics.drawable.LayerDrawable\nimport android.os.Bundle\nimport android.view.View\nimport android.widget.ImageButton\nimport android.widget.TextView\nimport androidx.annotation.ColorRes\nimport androidx.appcompat.widget.Toolbar\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.lifecycle.liveData\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.util.ErrorHelper\nimport ch.admin.bag.covidcertificate.common.util.ErrorState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.ubique.qrscanner.scanner.ErrorCodes\nimport ch.ubique.qrscanner.scanner.ScanningMode\nimport ch.ubique.qrscanner.state.DecodingState\nimport ch.ubique.qrscanner.util.CameraUtil\nimport ch.ubique.qrscanner.view.QrScannerView\nimport ch.ubique.qrscanner.zxing.decoder.GlobalHistogramImageDecoder\nimport ch.ubique.qrscanner.zxing.decoder.HybridImageDecoder\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.currentCoroutineContext\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\n\nabstract class QrScanFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate const val STATE_IS_TORCH_ON = \"STATE_IS_TORCH_ON\"\n\t\tprivate const val PERMISSION_REQUEST_CAMERA = 13\n\t\tprivate const val MIN_ERROR_VISIBILITY = 1000L\n\n\t\tprivate const val QR_CODE_ERROR_WRONG_FORMAT = \"Q|YWF\"\n\t\tprivate const val QR_CODE_ERROR_READ_FAILED = \"Q|IRF\"\n\t}\n\n\t// These need to be set by implementing classes during onCreateView. That's why they are not private.\n\tprotected lateinit var toolbar: Toolbar\n\tprotected lateinit var flashButton: ImageButton\n\tprotected lateinit var errorView: View\n\tprotected lateinit var errorCodeView: TextView\n\tprotected lateinit var zoomButton: ImageButton\n\n\tprotected lateinit var invalidCodeText: TextView\n\tprotected lateinit var viewFinderTopLeftIndicator: View\n\tprotected lateinit var viewFinderTopRightIndicator: View\n\tprotected lateinit var viewFinderBottomLeftIndicator: View\n\tprotected lateinit var viewFinderBottomRightIndicator: View\n\tprotected lateinit var qrCodeScanner: QrScannerView\n\tprotected lateinit var cutOut: View\n\tabstract val viewFinderColor: Int\n\n\tabstract val viewFinderErrorColor: Int\n\tabstract val torchOnDrawable: Int\n\tabstract val torchOffDrawable: Int\n\tabstract val zoomOnDrawable: Int\n\tabstract val zoomOffDrawable: Int\n\tprivate var lastUIErrorUpdate = 0L\n\n\tprivate var cameraPermissionState = CameraPermissionState.REQUESTING\n\tprivate val secureStorage by lazy { ConfigSecureStorage.getInstance(requireContext()) }\n\tprivate var cameraPermissionExplanationDialog: CameraPermissionExplanationDialog? = null\n\tprivate var isTorchOn: Boolean = false\n\n\tprivate val autoFocusClockLiveData = liveData(Dispatchers.IO) {\n\t\twhile (currentCoroutineContext().isActive) {\n\t\t\temit(Unit)\n\t\t\tdelay(3 * 1000L)\n\t\t}\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tisTorchOn = savedInstanceState?.getBoolean(STATE_IS_TORCH_ON, isTorchOn) ?: isTorchOn\n\t\ttoolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\t// Wait for the views to be properly laid out\n\t\tqrCodeScanner.post {\n\t\t\tinitializeCamera()\n\t\t}\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\n\t\t// Check permission in onResume to automatically handle the user returning from the system settings.\n\t\t// Be careful to avoid popup loops, since our fragment is resumed whenever the user returns from the dialog!\n\t\tcheckCameraPermission()\n\n\t\tsetFlashAndButtonStyle()\n\t}\n\n\toverride fun onSaveInstanceState(outState: Bundle) {\n\t\tsuper.onSaveInstanceState(outState)\n\t\toutState.putBoolean(STATE_IS_TORCH_ON, isTorchOn)\n\t}\n\n\tabstract fun decodeQrCodeData(qrCodeData: String, onDecodeSuccess: () -> Unit, onDecodeError: (StateError) -> Unit)\n\n\toverride fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String?>, grantResults: IntArray) {\n\t\tif (requestCode == PERMISSION_REQUEST_CAMERA) {\n\t\t\tval isGranted = grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED\n\n\t\t\tcameraPermissionState = if (isGranted) CameraPermissionState.GRANTED else CameraPermissionState.DENIED\n\t\t\trefreshView()\n\t\t}\n\t}\n\n\tprotected fun activateCamera() {\n\t\tif (!isAdded || !qrCodeScanner.isAttachedToWindow) return\n\n\t\tautoFocusClockLiveData.observe(viewLifecycleOwner) {\n\t\t\tautoFocus()\n\t\t}\n\n\t\tqrCodeScanner.activateCamera()\n\t}\n\n\tprotected fun deactivateCamera() {\n\t\tif (!isAdded || !qrCodeScanner.isAttachedToWindow) return\n\n\t\tautoFocusClockLiveData.removeObservers(viewLifecycleOwner)\n\n\t\tqrCodeScanner.deactivateCamera()\n\t}\n\n\t@SuppressLint(\"ClickableViewAccessibility\")\n\tprivate fun initializeCamera() {\n\t\tif (!isAdded || !qrCodeScanner.isAttachedToWindow) return\n\n\t\tsetScannerCallback()\n\t\tqrCodeScanner.setImageDecoders(GlobalHistogramImageDecoder(), HybridImageDecoder())\n\t\tqrCodeScanner.setScanningMode(ScanningMode.PARALLEL)\n\t\tqrCodeScanner.setFocusOnTap(true)\n\t\tqrCodeScanner.setCameraStateCallback { isActive ->\n\t\t\tif (isActive) {\n\t\t\t\tqrCodeScanner.isVisible = true\n\t\t\t\tsetupZoomButton()\n\t\t\t\tsetupFlashButton()\n\t\t\t} else {\n\t\t\t\tqrCodeScanner.isVisible = false\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected fun setScannerCallback() {\n\t\tqrCodeScanner.setScannerCallback { state ->\n\t\t\twhen (state) {\n\t\t\t\tis DecodingState.NotFound -> view?.post { updateQrCodeScannerState(QrScannerState.NO_CODE_FOUND) }\n\t\t\t\tis DecodingState.Decoded -> {\n\t\t\t\t\tval qrCodeData = state.content\n\t\t\t\t\tdecodeQrCodeData(\n\t\t\t\t\t\tqrCodeData,\n\t\t\t\t\t\tonDecodeSuccess = {\n\t\t\t\t\t\t\t// Once successfully decoded, clear the analyzer from stopping more frames being\n\t\t\t\t\t\t\t// analyzed and possibly decoded successfully\n\t\t\t\t\t\t\tqrCodeScanner.setScannerCallback(null)\n\n\t\t\t\t\t\t\tview?.post { updateQrCodeScannerState(QrScannerState.VALID) }\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDecodeError = { error ->\n\t\t\t\t\t\t\tview?.post { handleInvalidQRCodeExceptions(error) }\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tis DecodingState.Error -> {\n\t\t\t\t\tval stateError = if (state.errorCode == ErrorCodes.INPUT_WRONG_FORMAT) {\n\t\t\t\t\t\tStateError(QR_CODE_ERROR_WRONG_FORMAT)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tStateError(QR_CODE_ERROR_READ_FAILED)\n\t\t\t\t\t}\n\t\t\t\t\thandleInvalidQRCodeExceptions(stateError)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setZoom() {\n\t\tif (secureStorage.getZoomOn()) {\n\t\t\tqrCodeScanner.setLinearZoom(1f)\n\t\t} else {\n\t\t\tqrCodeScanner.setLinearZoom(0f)\n\t\t}\n\t}\n\n\tprivate fun autoFocus() {\n\t\tval centerX = cutOut.left + cutOut.width / 2.0f\n\t\tval centerY = cutOut.top + cutOut.height / 2.0f\n\t\tqrCodeScanner.startAutofocus(centerX, centerY)\n\t}\n\n\tprivate fun checkCameraPermission() {\n\t\tval isGranted = CameraUtil.hasCameraPermission(requireContext())\n\n\t\tif (isGranted) {\n\t\t\tcameraPermissionState = CameraPermissionState.GRANTED\n\t\t}\n\t\t// Do not request the permission again if the last time we tried the user denied it.\n\t\t// I.e. don't show the popup but the error view\n\t\telse if (cameraPermissionState != CameraPermissionState.DENIED) {\n\t\t\tcameraPermissionState = CameraPermissionState.REQUESTING\n\t\t}\n\t\trefreshView()\n\t}\n\n\tprivate fun refreshView() {\n\t\twhen (cameraPermissionState) {\n\t\t\tCameraPermissionState.GRANTED -> {\n\t\t\t\terrorView.isVisible = false\n\t\t\t}\n\t\t\tCameraPermissionState.REQUESTING -> {\n\t\t\t\terrorView.isVisible = false\n\t\t\t\tshowCameraPermissionExplanationDialog()\n\t\t\t}\n\t\t\tCameraPermissionState.CANCELLED, CameraPermissionState.DENIED -> {\n\t\t\t\terrorView.isVisible = true\n\t\t\t\tErrorHelper.updateErrorView(errorView, ErrorState.CAMERA_ACCESS_DENIED, null, context)\n\t\t\t}\n\t\t}\n\t\tupdateQrCodeScannerState(QrScannerState.NO_CODE_FOUND)\n\t}\n\n\tprivate fun showCameraPermissionExplanationDialog() {\n\t\tif (cameraPermissionExplanationDialog?.isShowing == true) {\n\t\t\treturn\n\t\t}\n\n\t\tcameraPermissionExplanationDialog = CameraPermissionExplanationDialog(requireContext()).apply {\n\t\t\tsetOnCancelListener {\n\t\t\t\tcameraPermissionState = CameraPermissionState.CANCELLED\n\t\t\t\trefreshView()\n\t\t\t}\n\t\t\tsetGrantCameraAccessClickListener {\n\t\t\t\trequestPermissions(arrayOf(Manifest.permission.CAMERA), PERMISSION_REQUEST_CAMERA)\n\t\t\t}\n\t\t\tsetOnDismissListener {\n\t\t\t\tcameraPermissionExplanationDialog = null\n\t\t\t}\n\t\t\tshow()\n\t\t}\n\t}\n\n\tprivate fun setupFlashButton() {\n\t\tval cameraInfo = qrCodeScanner.getCameraInfo() ?: return\n\n\t\tif (cameraInfo.hasFlashUnit()) {\n\t\t\tflashButton.isVisible = true\n\t\t\tsetFlashAndButtonStyle()\n\t\t} else {\n\t\t\tflashButton.isVisible = false\n\t\t}\n\n\t\tflashButton.setOnClickListener {\n\t\t\tisTorchOn = !flashButton.isSelected\n\t\t\tsetFlashAndButtonStyle()\n\t\t}\n\t\tzoomButton.setOnClickListener {\n\t\t\tsecureStorage.setZoomOn(!secureStorage.getZoomOn())\n\t\t\tsetupZoomButton()\n\t\t}\n\t}\n\n\tprivate fun setFlashAndButtonStyle() {\n\t\tqrCodeScanner.setFlash(isTorchOn)\n\t\tval drawableId = if (isTorchOn) torchOnDrawable else torchOffDrawable\n\t\tflashButton.isSelected = isTorchOn\n\t\tflashButton.setImageResource(drawableId)\n\t}\n\n\tprivate fun setupZoomButton() {\n\t\tif (requireContext().packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)) {\n\t\t\tzoomButton.isVisible = false\n\t\t} else {\n\t\t\tval isZoomOn = secureStorage.getZoomOn()\n\t\t\tzoomButton.isVisible = true\n\t\t\tval drawableId = if (isZoomOn) zoomOnDrawable else zoomOffDrawable\n\t\t\tzoomButton.isSelected = isZoomOn\n\t\t\tzoomButton.setImageResource(drawableId)\n\t\t\tsetZoom()\n\t\t}\n\t}\n\n\tprivate fun handleInvalidQRCodeExceptions(error: StateError?) {\n\t\tupdateQrCodeScannerState(QrScannerState.INVALID_FORMAT, error?.code)\n\t}\n\n\tprivate fun updateQrCodeScannerState(qrScannerState: QrScannerState, errorCode: String? = null) {\n\t\tif (!isAdded) return\n\n\t\tval currentTime = System.currentTimeMillis()\n\t\tif (lastUIErrorUpdate > currentTime - MIN_ERROR_VISIBILITY && qrScannerState == QrScannerState.NO_CODE_FOUND) {\n\t\t\treturn\n\t\t}\n\n\t\tlastUIErrorUpdate = currentTime\n\t\tvar color: Int = viewFinderColor\n\t\twhen (qrScannerState) {\n\t\t\tQrScannerState.VALID, QrScannerState.NO_CODE_FOUND -> {\n\t\t\t\tinvalidCodeText.isVisible = false\n\t\t\t\terrorCodeView.isVisible = false\n\t\t\t}\n\t\t\tQrScannerState.INVALID_FORMAT -> {\n\t\t\t\tinvalidCodeText.isVisible = true\n\t\t\t\terrorCodeView.isVisible = errorCode != null\n\t\t\t\terrorCodeView.text = errorCode\n\t\t\t\tcolor = viewFinderErrorColor\n\t\t\t}\n\t\t}\n\n\t\tsetIndicatorColor(viewFinderTopLeftIndicator, color)\n\t\tsetIndicatorColor(viewFinderTopRightIndicator, color)\n\t\tsetIndicatorColor(viewFinderBottomLeftIndicator, color)\n\t\tsetIndicatorColor(viewFinderBottomRightIndicator, color)\n\t}\n\n\tprivate fun setIndicatorColor(indicator: View, @ColorRes color: Int) {\n\t\tval drawable = indicator.background as LayerDrawable\n\t\tval stroke = drawable.findDrawableByLayerId(R.id.indicator) as GradientDrawable\n\t\tstroke.setStroke(\n\t\t\tresources.getDimensionPixelSize(R.dimen.qr_scanner_indicator_stroke_width),\n\t\t\tresources.getColor(color, null)\n\t\t)\n\t}\n\n\tenum class CameraPermissionState {\n\t\tGRANTED,\n\t\tREQUESTING,\n\t\tCANCELLED,\n\t\tDENIED,\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/qr/QrScannerState.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.qr\n\nenum class QrScannerState {\n\tNO_CODE_FOUND,\n\tVALID,\n\tINVALID_FORMAT,\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/settings/SettingsFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.settings\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.databinding.FragmentSettingsBinding\nimport ch.admin.bag.covidcertificate.common.databinding.ItemLanguageOptionBinding\nimport ch.admin.bag.covidcertificate.common.util.LocaleUtil.DEFAULT_COUNTRY\nimport java.util.*\n\nclass SettingsFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): SettingsFragment {\n\t\t\treturn SettingsFragment()\n\t\t}\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\treturn FragmentSettingsBinding.inflate(inflater, container, false).apply {\n\t\t\tsettingsToolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\t\tval currentLanguage = getString(R.string.language_key)\n\n\t\t\tlistOf(\"de\", \"fr\", \"it\", \"rm\", \"en\").forEach { language ->\n\t\t\t\tItemLanguageOptionBinding.inflate(inflater, languageList, true).apply {\n\t\t\t\t\tval locale = Locale(language, DEFAULT_COUNTRY)\n\t\t\t\t\tradiobutton.text = locale.getDisplayLanguage(locale).capitalize(locale)\n\t\t\t\t\tradiobutton.isChecked = locale.language == currentLanguage\n\n\t\t\t\t\tradiobutton.setOnCheckedChangeListener { _, isChecked ->\n\t\t\t\t\t\tif (isChecked) {\n\t\t\t\t\t\t\tupdateLanguage(language)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.root\n\t}\n\n\tprivate fun updateLanguage(language: String) {\n\t\tConfigSecureStorage.getInstance(requireContext()).setUserLanguage(language)\n\t\trequireActivity().recreate()\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/AssetUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.html.BuildInfo\nimport com.squareup.moshi.Moshi\nimport java.io.BufferedReader\nimport java.io.IOException\nimport java.io.InputStreamReader\nimport java.text.SimpleDateFormat\nimport java.util.*\n\nobject AssetUtil {\n\n\tprivate const val PREFIX_ASSET_FILE = \"file:///android_asset/\"\n\tprivate const val FOLDER_NAME_IMPRESSUM = \"impressum/\"\n\tprivate const val FILE_NAME_IMPRESSUM = \"impressum.html\"\n\tprivate const val FOLDER_NAME_DISCLAIMER = \"disclaimer/\"\n\tprivate const val DISCLAIMER_FALLBACK_LANGUAGE = \"de\"\n\tprivate const val FILE_NAME_DATA_PROTECTION_STATEMENT = \"data_protection_statement.html\"\n\tprivate const val FILE_NAME_TERMS_OF_USE = \"terms_of_use.html\"\n\n\tprivate const val REPLACE_STRING_APP_NAME = \"{APP_NAME}\"\n\tprivate const val REPLACE_STRING_VERSION = \"{VERSION}\"\n\tprivate const val REPLACE_STRING_APPVERSION = \"{APPVERSION}\"\n\tprivate const val REPLACE_STRING_RELEASEDATE = \"{RELEASEDATE}\"\n\tprivate const val REPLACE_STRING_BUILDNR = \"{BUILD}\"\n\tprivate const val REPLACE_STRING_LAW_LINK = \"{LAW_LINK}\"\n\tprivate const val REPLACE_STRING_APP_IDENTIFIER = \"{PARAM_APP_IDENTIFIER}\"\n\n\tprivate val RELEASE_DATE_FORMAT = SimpleDateFormat(\"dd.MM.yyyy\").apply { timeZone = TimeZone.getTimeZone(\"Europe/Zurich\") }\n\n\tprivate const val ASSET_FILENAME_DEFAULT_CONFIG = \"faq/config.json\"\n\n\tprivate fun loadAssetJson(context: Context, filename: String): String? {\n\t\treturn try {\n\t\t\tval inputStream = context.assets.open(filename)\n\t\t\tval json = inputStream.bufferedReader().use { it.readText() }\n\t\t\tinputStream.close()\n\t\t\tjson\n\t\t} catch (ex: IOException) {\n\t\t\tex.printStackTrace()\n\t\t\tnull\n\t\t}\n\t}\n\n\tfun loadDefaultConfig(context: Context): ConfigModel? = loadAssetJson(context, ASSET_FILENAME_DEFAULT_CONFIG)?.let {\n\t\tMoshi.Builder().build().adapter(ConfigModel::class.java).fromJson(it)\n\t}\n\n\tfun getImpressumBaseUrl(context: Context): String {\n\t\treturn PREFIX_ASSET_FILE + getFolderNameImpressum(context)\n\t}\n\n\tprivate fun getFolderNameImpressum(context: Context): String {\n\t\treturn FOLDER_NAME_IMPRESSUM + context.getString(R.string.language_key) + \"/\"\n\t}\n\n\tfun getImpressumHtml(context: Context, buildInfo: BuildInfo): String? {\n\t\treturn loadImpressumHtmlFile(context, FILE_NAME_IMPRESSUM, buildInfo)\n\t}\n\n\tfun loadImpressumHtmlFile(\n\t\tcontext: Context,\n\t\tfilename: String,\n\t\tbuildInfo: BuildInfo,\n\t): String? {\n\t\treturn try {\n\t\t\tval html = StringBuilder()\n\t\t\tBufferedReader(InputStreamReader(context.assets.open(getFolderNameImpressum(context) + filename))).use { reader ->\n\t\t\t\tvar line: String?\n\t\t\t\twhile (reader.readLine().also { line = it } != null) {\n\t\t\t\t\thtml.append(line)\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar impressum = html.toString()\n\t\t\tval buildString = \"${buildInfo.buildTime} / ${buildInfo.flavor}\"\n\t\t\timpressum = impressum.replace(REPLACE_STRING_VERSION, buildInfo.versionName)\n\t\t\timpressum = impressum.replace(REPLACE_STRING_APPVERSION, buildInfo.versionName)\n\t\t\timpressum = impressum.replace(REPLACE_STRING_RELEASEDATE, RELEASE_DATE_FORMAT.format(buildInfo.buildTime))\n\t\t\timpressum = impressum.replace(REPLACE_STRING_BUILDNR, buildString)\n\t\t\timpressum = impressum.replace(REPLACE_STRING_APP_NAME, buildInfo.appName)\n\t\t\timpressum = impressum.replace(REPLACE_STRING_LAW_LINK, buildInfo.agbUrl)\n\t\t\timpressum = impressum.replace(REPLACE_STRING_APP_IDENTIFIER, buildInfo.appIdentifier)\n\t\t\timpressum\n\t\t} catch (e: IOException) {\n\t\t\te.printStackTrace()\n\t\t\t\"\"\n\t\t}\n\t}\n\n\tprivate fun getFolderNameDisclaimer(context: Context): String {\n\t\treturn FOLDER_NAME_DISCLAIMER + context.getString(R.string.language_key) + \"/\"\n\t}\n\n\tprivate fun getDefaultLanguageFolderNameDisclaimer(): String {\n\t\treturn \"$FOLDER_NAME_DISCLAIMER$DISCLAIMER_FALLBACK_LANGUAGE/\"\n\t}\n\n\tfun getTermsOfUse(context: Context): String {\n\t\tvar htmlString = loadHtml(\n\t\t\tcontext,\n\t\t\tgetFolderNameDisclaimer(context) + FILE_NAME_TERMS_OF_USE\n\t\t)\n\t\tif (htmlString == null) htmlString = loadHtml(\n\t\t\tcontext,\n\t\t\tgetDefaultLanguageFolderNameDisclaimer() + FILE_NAME_TERMS_OF_USE\n\t\t)\n\t\tif (htmlString == null) htmlString = \"\"\n\t\treturn replaceUlTags(htmlString)\n\t}\n\n\tfun getDataProtection(context: Context): String {\n\t\tvar htmlString = loadHtml(\n\t\t\tcontext,\n\t\t\tgetFolderNameDisclaimer(context) + FILE_NAME_DATA_PROTECTION_STATEMENT\n\t\t)\n\t\tif (htmlString == null) htmlString = loadHtml(\n\t\t\tcontext,\n\t\t\tgetDefaultLanguageFolderNameDisclaimer() + FILE_NAME_DATA_PROTECTION_STATEMENT\n\t\t)\n\t\tif (htmlString == null) htmlString = \"\"\n\t\treturn replaceUlTags(htmlString)\n\t}\n\n\tprivate fun replaceUlTags(htmlString: String): String {\n\t\treturn htmlString.replace(\"<ul>\", \"<myul>\").replace(\"</ul>\", \"</myul>\").replace(\"<li>\", \"<myli>\")\n\t\t\t.replace(\"</li>\", \"</myli>\")\n\t}\n\n\tprivate fun loadHtml(context: Context, path: String): String? {\n\t\treturn try {\n\t\t\tval html = StringBuilder()\n\t\t\tBufferedReader(InputStreamReader(context.assets.open(path))).use { reader ->\n\t\t\t\tvar line: String?\n\t\t\t\twhile (reader.readLine().also { line = it } != null) {\n\t\t\t\t\thtml.append(line)\n\t\t\t\t}\n\t\t\t}\n\t\t\thtml.toString()\n\t\t} catch (e: IOException) {\n\t\t\te.printStackTrace()\n\t\t\tnull\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/CutOutEdgeTreatment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport com.google.android.material.shape.EdgeTreatment\nimport com.google.android.material.shape.ShapePath\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass CutOutEdgeTreatment(\n\tprivate val radius: Float,\n\tprivate val positionPercentage: Float\n) : EdgeTreatment() {\n\n\toverride fun getEdgePath(length: Float, center: Float, interpolation: Float, shapePath: ShapePath) {\n\t\tval cutOutCenter = length * positionPercentage\n\n\t\t// Calculate the vertical offset of the cut out. When interpolating the edge, the offset is the perpendicular distance\n\t\t// from the cut out center to the edge. When fully interpolated (1.0), the offset will be zero, while at zero interpolation\n\t\t// the offset will be equal to the radius\n\t\tval verticalOffset = (1.0f - interpolation) * radius\n\t\tval verticalOffsetRatio = verticalOffset / radius\n\t\tif (verticalOffsetRatio >= 1.0f) {\n\t\t\t// The vertical offset is so high that there would be no cut out drawn in the edge, so just draw a straight line along the edge\n\t\t\tshapePath.lineTo(length, 0.0f)\n\t\t\treturn\n\t\t}\n\n\t\t// Calculate the X distance between the center and edge of the cut out, taking the interpolation value into consideration\n\t\t// When fully interpolated (1.0) the radiusX is the same as the radius\n\t\tval squaredRadius = radius * radius\n\t\tval verticalOffsetSquared = verticalOffset * verticalOffset\n\t\tval radiusX = sqrt((squaredRadius - verticalOffsetSquared).toDouble()).toFloat()\n\n\t\t// Draw a line from the start of the edge to the start of the cut out\n\t\tval cutOutStartX = cutOutCenter - radiusX\n\t\tshapePath.lineTo(cutOutStartX, 0.0f)\n\n\t\t// Calculate the arc of the cut out\n\t\tval cornerRadiusArcLength = Math.toDegrees(atan((radiusX / verticalOffset).toDouble())).toFloat()\n\t\tval cutoutArcOffset = 90.0f - cornerRadiusArcLength\n\n\t\t// Draw the cut out arc\n\t\tshapePath.addArc(\n\t\t\tcutOutCenter - radius,\n\t\t\t-radius - verticalOffset,\n\t\t\tcutOutCenter + radius,\n\t\t\tradius - verticalOffset,\n\t\t\t180.0f - cutoutArcOffset,\n\t\t\tcutoutArcOffset * 2.0f - 180.0f\n\t\t)\n\n\t\t// Draw a line from the end of the cut out to the end of the edge\n\t\tshapePath.lineTo(length, 0.0f)\n\t}\n\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/EnvironmentUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport ch.admin.bag.covidcertificate.common.BuildConfig\nimport ch.admin.bag.covidcertificate.sdk.android.SdkEnvironment\n\nobject EnvironmentUtil {\n\n\tfun getSdkEnvironment(flavor: String = BuildConfig.FLAVOR) = when (flavor) {\n\t\t\"dev\" -> SdkEnvironment.DEV\n\t\t\"abn\" -> SdkEnvironment.ABN\n\t\t\"prod\" -> SdkEnvironment.PROD\n\t\telse -> throw IllegalArgumentException(\"Unknown environment $flavor\")\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/ErrorCodeUtil.kt",
    "content": "package ch.admin.bag.covidcertificate.common.util\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckNationalRulesState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckRevocationState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckSignatureState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\n\nfun VerificationState.getInvalidErrorCode(errorDelimiter: String = \", \", showNationalErrors: Boolean = false): String {\n\tval errorCodes = mutableListOf<String>()\n\tif (this !is VerificationState.INVALID) return \"\"\n\n\tval signatureState = signatureState\n\tif (signatureState is CheckSignatureState.INVALID) {\n\t\terrorCodes.add(signatureState.signatureErrorCode)\n\t}\n\n\tval revocationState = revocationState\n\tif (revocationState is CheckRevocationState.INVALID) {\n\t\terrorCodes.add(revocationState.revocationErrorCode)\n\t}\n\n\tval nationalRulesState = nationalRulesState\n\tif (showNationalErrors && nationalRulesState is CheckNationalRulesState.INVALID) {\n\t\tnationalRulesState.nationalRulesError?.errorCode?.let { errorCodes.add(it) }\n\t}\n\treturn errorCodes.joinToString(errorDelimiter)\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/ErrorHelper.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport android.content.ActivityNotFoundException\nimport android.content.Context\nimport android.content.Intent\nimport android.graphics.Paint\nimport android.net.Uri\nimport android.provider.Settings\nimport android.view.View\nimport android.widget.ImageView\nimport android.widget.TextView\nimport android.widget.Toast\nimport androidx.core.content.ContextCompat\nimport ch.admin.bag.covidcertificate.common.R\n\nobject ErrorHelper {\n\t@JvmOverloads\n\tfun updateErrorView(\n\t\terrorView: View,\n\t\terrorState: ErrorState,\n\t\tcustomButtonClickAction: Runnable?,\n\t\tcontext: Context?,\n\t\tshowButton: Boolean = true\n\t) {\n\t\terrorView.findViewById<TextView>(R.id.error_status_title).setText(errorState.titleResId)\n\t\terrorView.findViewById<TextView>(R.id.error_status_text).setText(errorState.textResId)\n\t\terrorView.findViewById<ImageView>(R.id.error_status_image)\n\t\t\t.setImageDrawable(ContextCompat.getDrawable(errorView.context, errorState.imageResId))\n\n\t\tval buttonView = errorView.findViewById<TextView>(R.id.error_status_button)\n\t\tif (showButton) {\n\t\t\tbuttonView.visibility = View.VISIBLE\n\t\t\tbuttonView.setText(errorState.actionResId)\n\t\t\tbuttonView.paintFlags = buttonView.paintFlags or Paint.UNDERLINE_TEXT_FLAG\n\t\t\tbuttonView.setOnClickListener { executeErrorAction(errorState, customButtonClickAction, context) }\n\t\t} else {\n\t\t\tbuttonView.visibility = View.GONE\n\t\t}\n\t}\n\n\tprivate fun executeErrorAction(errorState: ErrorState, customButtonClickAction: Runnable?, context: Context?) {\n\t\tcustomButtonClickAction?.run()\n\t\twhen (errorState) {\n\t\t\tErrorState.CAMERA_ACCESS_DENIED -> openApplicationSettings(context)\n\t\t\telse -> {}\n\t\t}\n\t}\n\n\tprivate fun openApplicationSettings(context: Context?) {\n\t\tval context = context ?: return\n\t\tval intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)\n\t\tval uri = Uri.fromParts(\"package\", context.packageName, null)\n\t\tintent.data = uri\n\t\ttry {\n\t\t\tcontext.startActivity(intent)\n\t\t} catch (e: ActivityNotFoundException) {\n\t\t\tToast.makeText(context, \"Could not open settings\", Toast.LENGTH_LONG).show()\n\t\t}\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/ErrorState.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport androidx.annotation.DrawableRes\nimport androidx.annotation.StringRes\nimport ch.admin.bag.covidcertificate.common.R\n\nenum class ErrorState(\n\t@field:StringRes @param:StringRes val titleResId: Int,\n\t@field:StringRes @param:StringRes val textResId: Int,\n\t@field:StringRes @param:StringRes val actionResId: Int,\n\t@field:DrawableRes @param:DrawableRes val imageResId: Int\n) {\n\tNETWORK(\n\t\tR.string.error_network_title,\n\t\tR.string.error_network_text,\n\t\tR.string.error_action_retry,\n\t\tR.drawable.ic_error_triangle\n\t),\n\tCAMERA_ACCESS_DENIED(\n\t\tR.string.error_camera_permission_title,\n\t\tR.string.error_camera_permission_text,\n\t\tR.string.error_action_change_settings,\n\t\tR.drawable.ic_cam_off\n\t),\n\tNO_VALID_QR_CODE(\n\t\tR.string.error_title,\n\t\tR.string.qr_scanner_error,\n\t\tR.string.ok_button,\n\t\tR.drawable.ic_error_triangle\n\t);\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/HorizontalMarginItemDecoration.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport android.content.Context\nimport android.graphics.Rect\nimport android.view.View\nimport androidx.recyclerview.widget.RecyclerView\n\nclass HorizontalMarginItemDecoration(context: Context, val horizontalMarginInPx: Int) :\n\t\tRecyclerView.ItemDecoration() {\n\n\t\toverride fun getItemOffsets(\n\t\t\toutRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State\n\t\t) {\n\t\t\toutRect.right = horizontalMarginInPx\n\t\t\toutRect.left = horizontalMarginInPx\n\t\t}\n\n\t}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/LocaleUtil.kt",
    "content": "package ch.admin.bag.covidcertificate.common.util\n\nimport android.content.Context\nimport android.content.res.Configuration\nimport ch.admin.bag.covidcertificate.common.R\nimport java.util.*\n\nobject LocaleUtil {\n\n\tconst val DEFAULT_COUNTRY = \"CH\"\n\n\tfun isSystemLangNotEnglish(context: Context): Boolean {\n\t\treturn context.getString(R.string.language_key) != \"en\"\n\t}\n\n\tfun updateLanguage(context: Context, language: String?): Context {\n\t\tif (!language.isNullOrEmpty()) {\n\t\t\tval config = Configuration()\n\t\t\tconfig.setLocale(Locale(language, DEFAULT_COUNTRY))\n\t\t\treturn context.createConfigurationContext(config)\n\t\t}\n\t\treturn context\n\t}\n\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/SingleLiveEvent.java",
    "content": "/*\n *  Copyright 2017 Google Inc.\n *\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */\n\npackage ch.admin.bag.covidcertificate.common.util;\n\nimport android.util.Log;\nimport androidx.annotation.MainThread;\nimport androidx.annotation.Nullable;\nimport androidx.lifecycle.LifecycleOwner;\nimport androidx.lifecycle.MutableLiveData;\nimport androidx.lifecycle.Observer;\n\nimport java.util.concurrent.atomic.AtomicBoolean;\n\n/**\n * A lifecycle-aware observable that sends only new updates after subscription, used for events like\n * navigation and Snackbar messages.\n * <p>\n * This avoids a common problem with events: on configuration change (like rotation) an update\n * can be emitted if the observer is active. This LiveData only calls the observable if there's an\n * explicit call to setValue() or call().\n * <p>\n * Note that only one observer is going to be notified of changes.\n */\npublic class SingleLiveEvent<T> extends MutableLiveData<T> {\n\n\tprivate static final String TAG = \"SingleLiveEvent\";\n\n\tprivate final AtomicBoolean mPending = new AtomicBoolean(false);\n\n\t@MainThread\n\tpublic void observe(LifecycleOwner owner, final Observer<? super T> observer) {\n\n\t\tif (hasActiveObservers()) {\n\t\t\tLog.w(TAG, \"Multiple observers registered but only one will be notified of changes.\");\n\t\t}\n\n\t\t// Observe the internal MutableLiveData\n\t\tsuper.observe(owner, new Observer<T>() {\n\t\t\t@Override\n\t\t\tpublic void onChanged(@Nullable T t) {\n\t\t\t\tif (mPending.compareAndSet(true, false)) {\n\t\t\t\t\tobserver.onChanged(t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t@MainThread\n\tpublic void setValue(@Nullable T t) {\n\t\tmPending.set(true);\n\t\tsuper.setValue(t);\n\t}\n\n\t/**\n\t * Used for cases where T is Void, to make calls cleaner.\n\t */\n\t@MainThread\n\tpublic void call() {\n\t\tsetValue(null);\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/StringUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport android.graphics.Typeface\nimport android.text.SpannableString\nimport android.text.style.StyleSpan\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport java.time.LocalDateTime\n\nfun String.makeBold(): SpannableString = SpannableString(this).apply {\n\tsetSpan(StyleSpan(Typeface.BOLD), 0, this@makeBold.length, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE)\n}\n\nfun String.makeSubStringBold(\n\tsubString: String,\n\tstartIndex: Int = 0,\n\tignoreCase: Boolean = true\n): SpannableString =\n\tSpannableString(this).apply {\n\t\tval indexSubString = this@makeSubStringBold.indexOf(subString, startIndex, ignoreCase)\n\t\tif (indexSubString >= 0) {\n\t\t\tsetSpan(\n\t\t\t\tStyleSpan(Typeface.BOLD),\n\t\t\t\tindexSubString,\n\t\t\t\tindexSubString + subString.length,\n\t\t\t\tSpannableString.SPAN_INCLUSIVE_EXCLUSIVE\n\t\t\t)\n\t\t}\n\t}\n\nfun String.makeSubStringsBold(\n\tsubStrings: List<String>,\n\tstartIndex: Int = 0,\n\tignoreCase: Boolean = true\n): SpannableString = SpannableString(this).apply {\n\tsubStrings.forEach {\n\t\tval indexSubString = this@makeSubStringsBold.indexOf(it, startIndex, ignoreCase)\n\t\tif (indexSubString >= 0) {\n\t\t\tsetSpan(\n\t\t\t\tStyleSpan(Typeface.BOLD),\n\t\t\t\tindexSubString,\n\t\t\t\tindexSubString + it.length,\n\t\t\t\tSpannableString.SPAN_INCLUSIVE_EXCLUSIVE\n\t\t\t)\n\t\t}\n\t}\n}\n\nfun String.addBoldDate(dateReplacementString: String, date: LocalDateTime): SpannableString {\n\tval dateString = date.format(DEFAULT_DISPLAY_DATE_FORMATTER)\n\treturn SpannableString(this.replace(dateReplacementString, dateString)).apply {\n\t\tval indexSubString = this.indexOf(dateString)\n\t\tif (indexSubString >= 0) {\n\t\t\tsetSpan(\n\t\t\t\tStyleSpan(Typeface.BOLD),\n\t\t\t\tindexSubString,\n\t\t\t\tindexSubString + dateString.length,\n\t\t\t\tSpannableString.SPAN_INCLUSIVE_EXCLUSIVE\n\t\t\t)\n\t\t}\n\t}\n}\n\nfun String.addBoldDateTime(dateTimeReplacementString: String, dateTime: LocalDateTime): SpannableString {\n\tval dateTimeString = dateTime.format(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)\n\treturn SpannableString(this.replace(dateTimeReplacementString, dateTimeString)).apply {\n\t\tval indexSubString = this.indexOf(dateTimeString)\n\t\tif (indexSubString >= 0) {\n\t\t\tsetSpan(\n\t\t\t\tStyleSpan(Typeface.BOLD),\n\t\t\t\tindexSubString,\n\t\t\t\tindexSubString + dateTimeString.length,\n\t\t\t\tSpannableString.SPAN_INCLUSIVE_EXCLUSIVE\n\t\t\t)\n\t\t}\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/UiUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util\n\nimport android.view.Window\nimport android.view.WindowManager\n\nprivate val allowlistedFlavours = listOf(\"abn\", \"dev\")\n\nfun Window.setSecureFlagToBlockScreenshots(flavor: String) {\n\tif (!allowlistedFlavours.contains(flavor)) {\n\t\tsetFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/UlTagHandler.java",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util;\n\nimport android.text.Editable;\nimport android.text.Html;\nimport android.text.Spanned;\nimport android.text.style.BulletSpan;\n\nimport org.xml.sax.XMLReader;\n\npublic class UlTagHandler implements Html.TagHandler {\n\tprivate static final int indent = 30;\n\tpublic static String LI = \"myli\";\n\n\n\t@Override\n\tpublic void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {\n\tif (tag.equals(LI)) {\n\t\t\tif (opening) {\n\t\t\t\tif (output.length() > 0 && output.charAt(output.length() - 1) != '\\n') {\n\t\t\t\t\toutput.append(\"\\n\");\n\t\t\t\t}\n\t\t\t\tstart(output, new Ul());\n\t\t\t} else {\n\t\t\t\tif (output.charAt(output.length() - 1) != '\\n') {\n\t\t\t\t\toutput.append(\"\\n\");\n\t\t\t\t}\n\t\t\t\tBulletSpan newBullet = new BulletSpan(indent);\n\t\t\t\tend(output, Ul.class, newBullet);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void start(Editable text, Object mark) {\n\t\tint len = text.length();\n\t\ttext.setSpan(mark, len, len, Spanned.SPAN_MARK_MARK);\n\t}\n\n\tprivate static void end(Editable text, Class<?> kind, Object... replaces) {\n\t\tint len = text.length();\n\t\tObject obj = getLast(text, kind);\n\t\tint where = text.getSpanStart(obj);\n\t\ttext.removeSpan(obj);\n\t\tif (where != len) {\n\t\t\tfor (Object replace : replaces) {\n\t\t\t\ttext.setSpan(replace, where, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static Object getLast(Spanned text, Class<?> kind) {\n\t\tObject[] objs = text.getSpans(0, text.length(), kind);\n\t\tif (objs.length == 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn objs[objs.length - 1];\n\t}\n\n\tprivate static class Ul { }\n\n}\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/util/UrlUtil.java",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.util;\n\nimport android.content.ActivityNotFoundException;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.net.Uri;\nimport android.widget.Toast;\n\npublic class UrlUtil {\n\n\tpublic static void openUrl(Context context, String url) {\n\t\tIntent intent = new Intent(Intent.ACTION_VIEW);\n\t\tintent.setData(Uri.parse(url));\n\t\ttry {\n\t\t\tcontext.startActivity(intent);\n\t\t} catch (ActivityNotFoundException e) {\n\t\t\tToast.makeText(context, \"No browser installed\", Toast.LENGTH_LONG).show();\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/views/MarginItemDecoration.kt",
    "content": "package ch.admin.bag.covidcertificate.common.views\n\nimport android.content.Context\nimport android.graphics.Rect\nimport android.view.View\nimport androidx.annotation.DimenRes\nimport androidx.recyclerview.widget.RecyclerView\n\nclass VerticalMarginItemDecoration(context: Context, @DimenRes marginRes: Int) : RecyclerView.ItemDecoration() {\n\n\tprivate val marginPx = context.resources.getDimensionPixelSize(marginRes)\n\n\toverride fun getItemOffsets(\n\t\toutRect: Rect, view: View,\n\t\tparent: RecyclerView,\n\t\tstate: RecyclerView.State\n\t) {\n\t\twith(outRect) {\n\t\t\tif (parent.getChildAdapterPosition(view) != 0) {\n\t\t\t\ttop = marginPx\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/views/ViewExtensions.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.views\n\nimport android.animation.Animator\nimport android.animation.AnimatorListenerAdapter\nimport android.animation.ValueAnimator\nimport android.content.res.ColorStateList\nimport android.view.View\nimport android.view.animation.AccelerateDecelerateInterpolator\nimport android.view.animation.AccelerateInterpolator\nimport android.view.animation.DecelerateInterpolator\nimport androidx.annotation.ColorInt\nimport androidx.core.content.ContextCompat\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.util.CutOutEdgeTreatment\nimport com.google.android.material.shape.MaterialShapeDrawable\nimport com.google.android.material.shape.ShapeAppearanceModel\n\nfun View.showAnimated(\n\tduration: Long = resources.getInteger(android.R.integer.config_shortAnimTime).toLong(),\n\tfade: Boolean = true\n) {\n\tanimation?.cancel()\n\tif (visibility == View.VISIBLE) return\n\n\tvisibility = View.VISIBLE\n\talpha = if (fade) 0f else 1f\n\n\tanimate()\n\t\t.setDuration(duration)\n\t\t.alpha(1f)\n\t\t.setInterpolator(DecelerateInterpolator())\n\t\t.setListener(null)\n}\n\nfun View.hideAnimated(\n\tduration: Long = resources.getInteger(android.R.integer.config_shortAnimTime).toLong(),\n\tfade: Boolean = true\n) {\n\tanimation?.cancel()\n\tanimate()\n\t\t.setDuration((duration * alpha).toLong())\n\t\t.alpha(if (fade) 0f else 1f)\n\t\t.setInterpolator(AccelerateInterpolator())\n\t\t.setListener(object : AnimatorListenerAdapter() {\n\t\t\toverride fun onAnimationEnd(animation: Animator?) {\n\t\t\t\tvisibility = View.GONE\n\t\t\t}\n\t\t})\n}\n\nfun View.rotate(\n\ttoDegrees: Float,\n\tduration: Long = resources.getInteger(android.R.integer.config_shortAnimTime).toLong(),\n\tresetToDegrees: Float? = null\n) {\n\tanimation?.cancel()\n\n\tanimate()\n\t\t.setDuration(duration)\n\t\t.rotation(toDegrees)\n\t\t.setInterpolator(AccelerateDecelerateInterpolator())\n\t\t.setListener(object : AnimatorListenerAdapter() {\n\t\t\toverride fun onAnimationEnd(animation: Animator?) {\n\t\t\t\tresetToDegrees?.let { rotation = it }\n\t\t\t}\n\t\t})\n}\n\nfun List<View>.animateBackgroundTintColor(\n\t@ColorInt targetColor: Int,\n\tduration: Long = get(0).resources.getInteger(android.R.integer.config_shortAnimTime).toLong()\n) {\n\tval startColor = get(0).backgroundTintList?.defaultColor ?: 0\n\tval colorAnim = ValueAnimator.ofArgb(startColor, targetColor).apply {\n\t\tthis.duration = duration\n\t\taddUpdateListener { animator ->\n\t\t\tval backgroundTintList = ColorStateList.valueOf(animator.animatedValue as Int)\n\t\t\tthis@animateBackgroundTintColor.forEach { it.backgroundTintList = backgroundTintList }\n\t\t}\n\t}\n\tcolorAnim.start()\n}\n\nfun View.animateBackgroundTintColor(\n\t@ColorInt targetColor: Int,\n\tduration: Long = resources.getInteger(android.R.integer.config_shortAnimTime).toLong()\n) {\n\tval startColor = backgroundTintList?.defaultColor ?: 0\n\tval colorAnim = ValueAnimator.ofArgb(startColor, targetColor).apply {\n\t\tthis.duration = duration\n\t\taddUpdateListener { animator ->\n\t\t\tbackgroundTintList = ColorStateList.valueOf(animator.animatedValue as Int)\n\t\t}\n\t}\n\tcolorAnim.start()\n}\n\nfun View.setCutOutCardBackground() {\n\tval cutOutPositionPercentage = 0.6f\n\n\tval cutOutRadius = context.resources.getDimension(R.dimen.card_cutout_radius)\n\n\t// The left edge measures from the top to the bottom while the right edge measures from the bottom to the top\n\tval backgroundShape = ShapeAppearanceModel.builder()\n\t\t.setAllCornerSizes(context.resources.getDimension(R.dimen.corner_radius_sheet))\n\t\t.setLeftEdge(CutOutEdgeTreatment(cutOutRadius, 1 - cutOutPositionPercentage))\n\t\t.setRightEdge(CutOutEdgeTreatment(cutOutRadius, cutOutPositionPercentage))\n\t\t.build()\n\n\tval backgroundDrawable = MaterialShapeDrawable(backgroundShape).apply {\n\t\tfillColor = ContextCompat.getColorStateList(context, R.color.white)\n\t\televation = context.resources.getDimension(R.dimen.certificates_elevation)\n\t\tshadowCompatibilityMode = MaterialShapeDrawable.SHADOW_COMPAT_MODE_ALWAYS\n\t}\n\n\tbackground = backgroundDrawable\n}"
  },
  {
    "path": "common/src/main/java/ch/admin/bag/covidcertificate/common/views/WindowInsetsLayout.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.common.views\n\nimport android.content.Context\nimport android.graphics.Rect\nimport android.util.AttributeSet\nimport android.view.WindowInsets\nimport android.widget.FrameLayout\nimport androidx.core.view.children\nimport ch.admin.bag.covidcertificate.common.R\n\n/**\n * A FrameLayout that selectively applies the system window insets to itself.\n *\n * `applyWindowInsets` defines on which edges the insets are applied to this layout.\n * Can be one or more of `left`, `top`, `right` or `bottom`,\n * or `all` to include all four edges; default is `none`.\n *\n * Insets that have not been consumed are passed down to all child views\n * (independent of each other, not just the first one that consumes it,\n * compared to the standard behaviour of `fitsSystemWindows`).\n */\nclass WindowInsetsLayout @JvmOverloads constructor(\n\tcontext: Context,\n\tattrs: AttributeSet? = null,\n\tdefStyleAttr: Int = 0\n) : FrameLayout(context, attrs, defStyleAttr) {\n\n\tprivate var applyInsetEdges: Int\n\n\tinit {\n\t\tval typedArray = context.theme.obtainStyledAttributes(attrs, R.styleable.WindowInsetsLayout, 0, 0)\n\t\tapplyInsetEdges = typedArray.getInteger(R.styleable.WindowInsetsLayout_applyWindowInsets, INSETS_NOWHERE)\n\t\ttypedArray.recycle()\n\t}\n\n\toverride fun onAttachedToWindow() {\n\t\tsuper.onAttachedToWindow()\n\t\trequestApplyInsets()\n\t}\n\n\toverride fun onApplyWindowInsets(insets: WindowInsets): WindowInsets {\n\t\tval appliedInset = Rect(\n\t\t\tif (applyInsetEdges and INSETS_LEFT != 0) insets.systemWindowInsetLeft else 0,\n\t\t\tif (applyInsetEdges and INSETS_TOP != 0) insets.systemWindowInsetTop else 0,\n\t\t\tif (applyInsetEdges and INSETS_RIGHT != 0) insets.systemWindowInsetRight else 0,\n\t\t\tif (applyInsetEdges and INSETS_BOTTOM != 0) insets.systemWindowInsetBottom else 0\n\t\t)\n\t\tsetPadding(appliedInset.left, appliedInset.top, appliedInset.right, appliedInset.bottom)\n\t\tif (applyInsetEdges == INSETS_EVERYWHERE) {\n\t\t\treturn insets\n\t\t}\n\t\tval remainingInsets = insets.replaceSystemWindowInsets(\n\t\t\tRect(\n\t\t\t\tinsets.systemWindowInsetLeft - appliedInset.left,\n\t\t\t\tinsets.systemWindowInsetTop - appliedInset.top,\n\t\t\t\tinsets.systemWindowInsetRight - appliedInset.right,\n\t\t\t\tinsets.systemWindowInsetBottom - appliedInset.bottom\n\t\t\t)\n\t\t)\n\t\tchildren.forEach {\n\t\t\tit.dispatchApplyWindowInsets(remainingInsets)\n\t\t}\n\t\treturn insets\n\t}\n\n\tfun setInsets(insetEdges: Int) {\n\t\tapplyInsetEdges = insetEdges\n\t\trequestApplyInsets()\n\t}\n\n\tcompanion object {\n\t\tconst val INSETS_NOWHERE = 0x0\n\t\tconst val INSETS_EVERYWHERE = 0xF\n\t\tconst val INSETS_LEFT = 0x1\n\t\tconst val INSETS_TOP = 0x2\n\t\tconst val INSETS_RIGHT = 0x4\n\t\tconst val INSETS_BOTTOM = 0x8\n\t}\n}"
  },
  {
    "path": "common/src/main/res/anim/fragment_open_enter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:shareInterpolator=\"false\">\n\t<alpha\n\t\tandroid:fromAlpha=\"0\"\n\t\tandroid:toAlpha=\"1.0\"\n\t\tandroid:fillEnabled=\"true\"\n\t\tandroid:fillBefore=\"true\"\n\t\tandroid:fillAfter=\"true\"\n\t\tandroid:interpolator=\"@android:anim/linear_interpolator\"\n\t\tandroid:startOffset=\"35\"\n\t\tandroid:duration=\"50\"/>\n\t<scale\n\t\tandroid:fromXScale=\"0.85\"\n\t\tandroid:toXScale=\"1\"\n\t\tandroid:fromYScale=\"0.85\"\n\t\tandroid:toYScale=\"1\"\n\t\tandroid:pivotX=\"50%\"\n\t\tandroid:pivotY=\"50%\"\n\t\tandroid:fillEnabled=\"true\"\n\t\tandroid:fillBefore=\"true\"\n\t\tandroid:fillAfter=\"true\"\n\t\tandroid:interpolator=\"@anim/fragment_fast_out_extra_slow_in\"\n\t\tandroid:duration=\"300\"\n\t\ttools:targetApi=\"lollipop\" />\n</set>"
  },
  {
    "path": "common/src/main/res/anim/fragment_open_exit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shareInterpolator=\"false\">\n\t<!-- Fade out, over a black surface, which simulates a black scrim -->\n\t<alpha\n\t\tandroid:fromAlpha=\"1\"\n\t\tandroid:toAlpha=\"0.0\"\n\t\tandroid:fillEnabled=\"true\"\n\t\tandroid:fillBefore=\"true\"\n\t\tandroid:fillAfter=\"true\"\n\t\tandroid:interpolator=\"@android:anim/linear_interpolator\"\n\t\tandroid:startOffset=\"35\"\n\t\tandroid:duration=\"50\"/>\n\t<scale\n\t\tandroid:fromXScale=\"1\"\n\t\tandroid:toXScale=\"1.15\"\n\t\tandroid:fromYScale=\"1\"\n\t\tandroid:toYScale=\"1.15\"\n\t\tandroid:pivotX=\"50%\"\n\t\tandroid:pivotY=\"50%\"\n\t\tandroid:fillEnabled=\"true\"\n\t\tandroid:fillBefore=\"true\"\n\t\tandroid:fillAfter=\"true\"\n\t\tandroid:interpolator=\"@anim/fragment_fast_out_extra_slow_in\"\n\t\tandroid:duration=\"300\"/>\n</set>"
  },
  {
    "path": "common/src/main/res/anim/slide_enter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<translate\n\t\tandroid:fromYDelta=\"40%\"\n\t\tandroid:toYDelta=\"0\"\n\t\tandroid:interpolator=\"@android:anim/decelerate_interpolator\"\n\t\tandroid:duration=\"@android:integer/config_shortAnimTime\"/>\n\t<alpha\n\t\tandroid:fromAlpha=\"0\"\n\t\tandroid:toAlpha=\"1.0\"\n\t\tandroid:interpolator=\"@android:anim/decelerate_interpolator\"\n\t\tandroid:duration=\"@android:integer/config_shortAnimTime\"/>\n</set>"
  },
  {
    "path": "common/src/main/res/anim/slide_exit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<set>\n\t<translate xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\t\tandroid:duration=\"@android:integer/config_shortAnimTime\"\n\t\tandroid:fromYDelta=\"0\"\n\t\tandroid:interpolator=\"@android:anim/accelerate_interpolator\"\n\t\tandroid:toYDelta=\"0\" />\n</set>"
  },
  {
    "path": "common/src/main/res/anim/slide_pop_enter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<set>\n\t<translate xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\t\tandroid:fromYDelta=\"0\"\n\t\tandroid:toYDelta=\"0\"\n\t\tandroid:interpolator=\"@android:anim/accelerate_interpolator\"\n\t\tandroid:duration=\"@android:integer/config_shortAnimTime\"/>\n</set>"
  },
  {
    "path": "common/src/main/res/anim/slide_pop_exit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<translate\n\t\tandroid:duration=\"@android:integer/config_shortAnimTime\"\n\t\tandroid:fromYDelta=\"0\"\n\t\tandroid:interpolator=\"@android:anim/decelerate_interpolator\"\n\t\tandroid:toYDelta=\"40%\" />\n\t<alpha\n\t\tandroid:duration=\"@android:integer/config_shortAnimTime\"\n\t\tandroid:fromAlpha=\"1.0\"\n\t\tandroid:interpolator=\"@android:anim/decelerate_interpolator\"\n\t\tandroid:toAlpha=\"0\" />\n</set>"
  },
  {
    "path": "common/src/main/res/color/selector_black_or_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/white\" android:state_selected=\"true\" />\n\t<item android:color=\"@color/black\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/selector_blue_or_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/white\" android:state_selected=\"true\" />\n\t<item android:color=\"@color/blue\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/selector_grey_or_blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/blue\" android:state_enabled=\"true\" />\n\t<item android:color=\"@color/grey\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/selector_grey_or_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/white\" android:state_enabled=\"true\" />\n\t<item android:color=\"@color/grey\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/selector_transparent_or_blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/blue\" android:state_enabled=\"true\" />\n\t<item android:color=\"@android:color/transparent\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/selector_white_or_black.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/black\" android:state_selected=\"true\" />\n\t<item android:color=\"@color/white\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/selector_white_or_blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/blue\" android:state_selected=\"true\" />\n\t<item android:color=\"@color/white\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/color/text_radio_checkable.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\" android:exitFadeDuration=\"@android:integer/config_shortAnimTime\">\n\t<item android:state_checked=\"true\" android:color=\"@color/blue\" />\n\t<item android:color=\"@color/black\" />\n</selector>\n"
  },
  {
    "path": "common/src/main/res/drawable/bg_button_default.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"@color/black_10\">\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/blue\" />\n\t\t\t<corners android:radius=\"@dimen/button_radius\" />\n\t\t</shape>\n\t</item>\n\n\t<item android:id=\"@android:id/background\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/blue\" />\n\t\t\t<corners android:radius=\"@dimen/button_radius\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/bg_button_red.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"@color/white\">\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/button_radius\" />\n\t\t</shape>\n\t</item>\n\n\t<item android:id=\"@android:id/background\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/bundesrot\" />\n\t\t\t<corners android:radius=\"@dimen/button_radius\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/bg_button_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?android:colorControlHighlight\">\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/button_radius\" />\n\t\t</shape>\n\t</item>\n\n\t<item android:id=\"@android:id/background\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/button_radius\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/bg_corners_top_left.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<corners\n\t\tandroid:topLeftRadius=\"@dimen/corner_radius_sheet\"\n\t\tandroid:topRightRadius=\"@dimen/corner_radius_sheet\" />\n\t<solid android:color=\"@color/white\" />\n</shape>"
  },
  {
    "path": "common/src/main/res/drawable/bg_dialog.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<solid android:color=\"@android:color/transparent\" />\n\t<corners android:radius=\"@dimen/button_radius\" />\n\t<padding\n\t\tandroid:left=\"@dimen/spacing_large\"\n\t\tandroid:right=\"@dimen/spacing_large\" />\n</shape>\n"
  },
  {
    "path": "common/src/main/res/drawable/bg_pill.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<solid android:color=\"@color/greyish\" />\n\t<corners android:radius=\"14dp\" />\n</shape>"
  },
  {
    "path": "common/src/main/res/drawable/bg_rect_rounded_sheet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"rectangle\">\n\t<solid android:color=\"@color/white\"/>\n\t<corners android:radius=\"@dimen/corner_radius_sheet\"/>\n</shape>"
  },
  {
    "path": "common/src/main/res/drawable/bg_rect_rounded_small.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"rectangle\">\n\t<solid android:color=\"@color/greyish\"/>\n\t<corners android:radius=\"@dimen/corner_radius_small\"/>\n</shape>"
  },
  {
    "path": "common/src/main/res/drawable/bg_rect_rounded_small_blue_ripple.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<corners android:radius=\"@dimen/corner_radius_small\"/>\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n\n\t<item>\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/blueish\"/>\n\t\t\t<corners android:radius=\"@dimen/corner_radius_small\"/>\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/bg_rect_rounded_small_checkable.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\" android:exitFadeDuration=\"@android:integer/config_shortAnimTime\">\n\t<item android:state_checked=\"true\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/blueish\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_small\" />\n\t\t</shape>\n\t</item>\n\t<item android:state_pressed=\"true\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/blueish\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_small\" />\n\t\t</shape>\n\t</item>\n\t<item>\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_small\" />\n\t\t</shape>\n\t</item>\n</selector>\n"
  },
  {
    "path": "common/src/main/res/drawable/bg_rect_rounded_small_red.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"rectangle\">\n\t<solid android:color=\"@color/bundesrot\"/>\n\t<corners android:radius=\"@dimen/corner_radius_small\"/>\n</shape>"
  },
  {
    "path": "common/src/main/res/drawable/btn_radio_checkable.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\" android:exitFadeDuration=\"@android:integer/config_shortAnimTime\">\n\t<item android:drawable=\"@drawable/ic_check_filled\" android:state_checked=\"true\" />\n\t<item>\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<size android:width=\"24dp\" android:height=\"24dp\" />\n\t\t</shape>\n\t</item>\n</selector>\n"
  },
  {
    "path": "common/src/main/res/drawable/dot_black.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item>\n\t\t<shape\n\t\t\tandroid:innerRadius=\"0dp\"\n\t\t\tandroid:shape=\"ring\"\n\t\t\tandroid:thickness=\"4dp\"\n\t\t\tandroid:useLevel=\"false\">\n\t\t\t<solid android:color=\"@color/black\" />\n\t\t</shape>\n\t</item>\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/dot_grey.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item>\n\t\t<shape\n\t\t\tandroid:innerRadius=\"0dp\"\n\t\t\tandroid:shape=\"ring\"\n\t\t\tandroid:thickness=\"4dp\"\n\t\t\tandroid:useLevel=\"false\">\n\t\t\t<solid android:color=\"@color/grey\" />\n\t\t</shape>\n\t</item>\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/dot_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item>\n\t\t<shape\n\t\t\tandroid:innerRadius=\"0dp\"\n\t\t\tandroid:shape=\"ring\"\n\t\t\tandroid:thickness=\"4dp\"\n\t\t\tandroid:useLevel=\"false\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t</shape>\n\t</item>\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/header_bottom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item>\n\t\t<shape android:shape=\"rectangle\" />\n\t</item>\n\t<item\n\t\tandroid:bottom=\"0dp\"\n\t\tandroid:left=\"-180dp\"\n\t\tandroid:right=\"-180dp\"\n\t\tandroid:top=\"-80dp\">\n\t\t<shape android:shape=\"oval\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t</shape>\n\t</item>\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/header_collapsed_shadow.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\n\t<gradient\n\t\tandroid:angle=\"90\"\n\t\tandroid:endColor=\"#3000\"\n\t\tandroid:startColor=\"@android:color/transparent\"\n\t\tandroid:type=\"linear\" />\n\n</shape>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_1g.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M24.459,6.44c1.05,0 2.025,0.148 2.929,0.445A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.346,0.802 -0.52,1.775 -0.52,2.917 0,1.153 0.168,2.135 0.504,2.947 0.336,0.812 0.822,1.432 1.459,1.86 0.636,0.427 1.406,0.641 2.309,0.641 0.806,0 1.488,-0.13 2.045,-0.392 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L24.7,17.98v-3.162h7.8v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-1.2,0.613 -2.576,0.919 -4.127,0.919 -1.73,0 -3.25,-0.372 -4.557,-1.115 -1.308,-0.743 -2.328,-1.802 -3.06,-3.176 -0.73,-1.374 -1.096,-3.007 -1.096,-4.9 0,-1.472 0.221,-2.779 0.664,-3.922 0.442,-1.144 1.06,-2.112 1.852,-2.905a7.959,7.959 0,0 1,2.758 -1.806c1.046,-0.41 2.174,-0.615 3.382,-0.615zM11.113,6.267L11.113,24.69L6.665,24.69L6.665,10.419h-0.108l-4.124,2.526v-3.85l4.549,-2.828h4.13z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_2g.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M24.459,6.44c1.05,0 2.025,0.148 2.929,0.445A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.346,0.802 -0.52,1.775 -0.52,2.917 0,1.153 0.168,2.135 0.504,2.947 0.336,0.812 0.822,1.432 1.459,1.86 0.636,0.427 1.406,0.641 2.309,0.641 0.806,0 1.488,-0.13 2.045,-0.392 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L24.7,17.98v-3.162h7.8v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-1.2,0.613 -2.576,0.919 -4.127,0.919 -1.73,0 -3.25,-0.372 -4.557,-1.115 -1.308,-0.743 -2.328,-1.802 -3.06,-3.176 -0.73,-1.374 -1.096,-3.007 -1.096,-4.9 0,-1.472 0.221,-2.779 0.664,-3.922 0.442,-1.144 1.06,-2.112 1.852,-2.905a7.959,7.959 0,0 1,2.758 -1.806c1.046,-0.41 2.174,-0.615 3.382,-0.615zM7.176,6.44c1.372,0 2.566,0.227 3.58,0.683 1.015,0.455 1.801,1.09 2.359,1.905 0.557,0.814 0.836,1.76 0.836,2.838 0,0.683 -0.14,1.36 -0.418,2.03 -0.279,0.67 -0.776,1.412 -1.492,2.224 -0.716,0.813 -1.73,1.786 -3.04,2.918L6.83,21.022v0.112h7.34v3.499L0.77,24.633v-3.12l6.598,-5.728c0.499,-0.447 0.922,-0.856 1.27,-1.228a4.65,4.65 0,0 0,0.796 -1.122c0.183,-0.376 0.275,-0.787 0.275,-1.233 0,-0.495 -0.11,-0.92 -0.328,-1.274a2.2,2.2 0,0 0,-0.903 -0.82,2.887 2.887,0 0,0 -1.315,-0.29c-0.502,0 -0.943,0.101 -1.322,0.303a2.104,2.104 0,0 0,-0.878 0.875c-0.207,0.382 -0.31,0.843 -0.31,1.381L0.5,12.377c0,-1.22 0.278,-2.274 0.833,-3.162 0.555,-0.888 1.334,-1.572 2.338,-2.054 1.004,-0.481 2.172,-0.722 3.505,-0.722z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_2g_green.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M17.97,4.83c0.786,0 1.518,0.11 2.196,0.334a5.897,5.897 0,0 1,1.802 0.948c0.524,0.409 0.95,0.893 1.276,1.452 0.327,0.56 0.531,1.175 0.613,1.845h-3.32a2.39,2.39 0,0 0,-0.333 -0.73,2.166 2.166,0 0,0 -0.537,-0.544 2.35,2.35 0,0 0,-0.73 -0.34,3.34 3.34,0 0,0 -0.904,-0.116c-0.656,0 -1.224,0.159 -1.704,0.476 -0.48,0.317 -0.85,0.777 -1.11,1.38 -0.26,0.601 -0.39,1.33 -0.39,2.188 0,0.864 0.126,1.6 0.378,2.21 0.252,0.609 0.617,1.074 1.094,1.394 0.478,0.321 1.055,0.482 1.732,0.482 0.605,0 1.116,-0.098 1.534,-0.294a2.12,2.12 0,0 0,0.949 -0.834c0.184,-0.308 0.29,-0.663 0.316,-1.065l0.004,-0.132L18.15,13.484v-2.371L24,11.113v1.782c0,1.204 -0.257,2.235 -0.771,3.095a5.15,5.15 0,0 1,-2.122 1.979c-0.9,0.46 -1.932,0.69 -3.095,0.69 -1.298,0 -2.437,-0.28 -3.418,-0.837 -0.98,-0.557 -1.746,-1.351 -2.294,-2.382 -0.549,-1.03 -0.823,-2.255 -0.823,-3.675 0,-1.103 0.166,-2.084 0.498,-2.941 0.332,-0.858 0.795,-1.584 1.389,-2.18a5.97,5.97 0,0 1,2.069 -1.353,6.89 6.89,0 0,1 2.536,-0.462zM5.007,4.83c1.03,0 1.924,0.17 2.685,0.512 0.761,0.342 1.351,0.818 1.77,1.429 0.417,0.61 0.626,1.32 0.626,2.128 0,0.513 -0.104,1.02 -0.313,1.523 -0.21,0.503 -0.582,1.059 -1.12,1.668 -0.536,0.61 -1.296,1.34 -2.28,2.188l-1.628,1.488v0.085h5.506v2.623L0.202,18.474v-2.34L5.15,11.84c0.374,-0.335 0.692,-0.642 0.952,-0.921 0.261,-0.28 0.46,-0.56 0.598,-0.842a2.08,2.08 0,0 0,0.206 -0.924c0,-0.372 -0.082,-0.69 -0.246,-0.956a1.65,1.65 0,0 0,-0.677 -0.615,2.165 2.165,0 0,0 -0.986,-0.217 2.08,2.08 0,0 0,-0.992 0.227c-0.284,0.15 -0.504,0.37 -0.659,0.656 -0.155,0.287 -0.233,0.632 -0.233,1.036L0,9.284c0,-0.915 0.208,-1.705 0.625,-2.371 0.416,-0.666 1,-1.18 1.753,-1.541 0.753,-0.361 1.63,-0.542 2.63,-0.542z\"\n      android:fillColor=\"@color/green\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_2g_grey.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M24.459,6.44c1.05,0 2.025,0.148 2.929,0.445A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.346,0.802 -0.52,1.775 -0.52,2.917 0,1.153 0.168,2.135 0.504,2.947 0.336,0.812 0.822,1.432 1.459,1.86 0.636,0.427 1.406,0.641 2.309,0.641 0.806,0 1.488,-0.13 2.045,-0.392 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L24.7,17.98v-3.162h7.8v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-1.2,0.613 -2.576,0.919 -4.127,0.919 -1.73,0 -3.25,-0.372 -4.557,-1.115 -1.308,-0.743 -2.328,-1.802 -3.06,-3.176 -0.73,-1.374 -1.096,-3.007 -1.096,-4.9 0,-1.472 0.221,-2.779 0.664,-3.922 0.442,-1.144 1.06,-2.112 1.852,-2.905a7.959,7.959 0,0 1,2.758 -1.806c1.046,-0.41 2.174,-0.615 3.382,-0.615zM7.176,6.44c1.372,0 2.566,0.227 3.58,0.683 1.015,0.455 1.801,1.09 2.359,1.905 0.557,0.814 0.836,1.76 0.836,2.838 0,0.683 -0.14,1.36 -0.418,2.03 -0.279,0.67 -0.776,1.412 -1.492,2.224 -0.716,0.813 -1.73,1.786 -3.04,2.918L6.83,21.022v0.112h7.34v3.499L0.77,24.633v-3.12l6.598,-5.728c0.499,-0.447 0.922,-0.856 1.27,-1.228a4.65,4.65 0,0 0,0.796 -1.122c0.183,-0.376 0.275,-0.787 0.275,-1.233 0,-0.495 -0.11,-0.92 -0.328,-1.274a2.2,2.2 0,0 0,-0.903 -0.82,2.887 2.887,0 0,0 -1.315,-0.29c-0.502,0 -0.943,0.101 -1.322,0.303a2.104,2.104 0,0 0,-0.878 0.875c-0.207,0.382 -0.31,0.843 -0.31,1.381L0.5,12.377c0,-1.22 0.278,-2.274 0.833,-3.162 0.555,-0.888 1.334,-1.572 2.338,-2.054 1.004,-0.481 2.172,-0.722 3.505,-0.722z\"\n      android:fillColor=\"@color/grey\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_2g_plus.xml",
    "content": "<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"46dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"46\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M23.959,6.44c1.05,0 2.025,0.148 2.929,0.445A7.862,7.862 0,0 1,29.29 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.346,0.802 -0.52,1.775 -0.52,2.917 0,1.153 0.168,2.135 0.504,2.947 0.336,0.812 0.822,1.432 1.459,1.86 0.636,0.427 1.406,0.641 2.309,0.641 0.806,0 1.488,-0.13 2.045,-0.392 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L24.2,17.98v-3.162L32,14.818v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-1.2,0.613 -2.576,0.919 -4.127,0.919 -1.73,0 -3.25,-0.372 -4.557,-1.115 -1.308,-0.743 -2.328,-1.802 -3.06,-3.176 -0.73,-1.374 -1.096,-3.007 -1.096,-4.9 0,-1.472 0.221,-2.779 0.664,-3.922 0.442,-1.144 1.06,-2.112 1.852,-2.905a7.959,7.959 0,0 1,2.758 -1.806c1.046,-0.41 2.174,-0.615 3.382,-0.615zM6.676,6.44c1.372,0 2.566,0.227 3.58,0.683 1.015,0.455 1.801,1.09 2.359,1.905 0.557,0.814 0.836,1.76 0.836,2.838 0,0.683 -0.14,1.36 -0.418,2.03 -0.279,0.67 -0.776,1.412 -1.492,2.224 -0.716,0.813 -1.73,1.786 -3.04,2.918L6.33,21.022v0.112h7.34v3.499L0.27,24.633v-3.12l6.598,-5.728c0.499,-0.447 0.922,-0.856 1.27,-1.228a4.65,4.65 0,0 0,0.796 -1.122c0.183,-0.376 0.275,-0.787 0.275,-1.233 0,-0.495 -0.11,-0.92 -0.328,-1.274a2.2,2.2 0,0 0,-0.903 -0.82,2.887 2.887,0 0,0 -1.315,-0.29c-0.502,0 -0.943,0.101 -1.322,0.303a2.104,2.104 0,0 0,-0.878 0.875c-0.207,0.382 -0.31,0.843 -0.31,1.381L0,12.377c0,-1.22 0.278,-2.274 0.833,-3.162 0.555,-0.888 1.334,-1.572 2.338,-2.054 1.004,-0.481 2.172,-0.722 3.505,-0.722zM42,11v4h4v3h-4v4h-3v-4h-4v-3h4v-4h3z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_3g.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M7.592,6.482c1.282,0 2.41,0.225 3.384,0.674 0.974,0.449 1.734,1.06 2.28,1.835 0.545,0.774 0.815,1.65 0.81,2.628 0.01,1.005 -0.317,1.836 -0.981,2.493 -0.664,0.656 -1.514,1.058 -2.55,1.207v0.14c1.385,0.163 2.433,0.613 3.145,1.35 0.71,0.736 1.062,1.657 1.052,2.763 0.005,1.036 -0.299,1.956 -0.912,2.76 -0.612,0.804 -1.46,1.435 -2.54,1.893 -1.082,0.458 -2.325,0.687 -3.73,0.687 -1.362,0 -2.571,-0.235 -3.628,-0.704 -1.056,-0.47 -1.887,-1.119 -2.493,-1.948 -0.605,-0.828 -0.915,-1.783 -0.929,-2.863h4.366c0.014,0.391 0.139,0.737 0.375,1.038 0.235,0.3 0.555,0.535 0.958,0.702 0.403,0.167 0.86,0.25 1.372,0.25 0.514,0 0.968,-0.09 1.363,-0.273 0.394,-0.182 0.703,-0.436 0.925,-0.76 0.222,-0.325 0.33,-0.698 0.326,-1.118a1.777,1.777 0,0 0,-0.361 -1.12c-0.246,-0.326 -0.593,-0.58 -1.041,-0.763 -0.449,-0.184 -0.974,-0.276 -1.577,-0.276L5.461,17.077v-3.076h1.745c0.53,0 0.998,-0.089 1.403,-0.266 0.404,-0.178 0.72,-0.425 0.947,-0.743 0.228,-0.318 0.339,-0.684 0.334,-1.1a1.89,1.89 0,0 0,-0.284 -1.06,1.973 1.973,0 0,0 -0.812,-0.715c-0.347,-0.172 -0.75,-0.257 -1.21,-0.257a3.18,3.18 0,0 0,-1.298 0.256,2.245 2.245,0 0,0 -0.923,0.72 1.849,1.849 0,0 0,-0.357 1.077L0.857,11.913c0.012,-1.066 0.31,-2.007 0.896,-2.821 0.585,-0.815 1.382,-1.454 2.39,-1.916 1.009,-0.463 2.158,-0.694 3.449,-0.694zM24.459,6.439c1.05,0 2.025,0.149 2.929,0.446A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.346,0.802 -0.52,1.775 -0.52,2.917 0,1.153 0.168,2.135 0.504,2.947 0.336,0.812 0.822,1.432 1.459,1.86 0.636,0.427 1.406,0.641 2.309,0.641 0.806,0 1.488,-0.13 2.045,-0.392 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L24.7,17.98v-3.162h7.8v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-1.2,0.613 -2.576,0.919 -4.127,0.919 -1.73,0 -3.25,-0.372 -4.557,-1.115 -1.308,-0.743 -2.328,-1.802 -3.06,-3.176 -0.73,-1.374 -1.096,-3.007 -1.096,-4.9 0,-1.472 0.221,-2.779 0.664,-3.922 0.442,-1.144 1.06,-2.112 1.852,-2.905a7.959,7.959 0,0 1,2.758 -1.806c1.046,-0.41 2.174,-0.615 3.382,-0.615z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_arrow_contract.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M4.5,15.75L12,8.25 19.5,15.75\"\n      android:strokeWidth=\"3\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_arrow_expand.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M4.5,8.25L12,15.75 19.5,8.25\"\n      android:strokeWidth=\"3\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_arrow_forward.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M18.384,12l-9.785,9.785c-0.287,0.287 -0.751,0.287 -1.038,0l-0.346,-0.346c-0.287,-0.287 -0.287,-0.751 0,-1.038L15.616,12 7.215,3.599c-0.287,-0.287 -0.287,-0.751 0,-1.038l0.346,-0.346c0.287,-0.287 0.751,-0.287 1.038,0L18.384,12z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_bund_small.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M22.962,1.769S18.863,0 12.002,0h-0.003C5.138,0 1.038,1.769 1.038,1.769s-0.367,7.83 1.19,12.258C4.974,21.812 11.997,24 11.997,24h0.004s7.022,-2.188 9.772,-9.973c1.557,-4.428 1.188,-12.258 1.188,-12.258\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M19.285,12.834L14.176,12.834 14.176,17.867 9.797,17.867 9.797,12.834 4.688,12.834 4.688,8.519 9.797,8.519 9.797,3.487 14.176,3.487 14.176,8.519 19.285,8.519z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_bundwappen_big.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"36dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"36\">\n  <path\n      android:pathData=\"M32.035,2.612S26.07,0 16.085,0h-0.003C6.096,0 0.131,2.612 0.131,2.612s-0.534,11.562 1.73,18.1c4,11.495 14.22,14.726 14.22,14.726h0.005s10.219,-3.23 14.22,-14.726c2.265,-6.538 1.729,-18.1 1.729,-18.1\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M26.684,18.951L19.249,18.951 19.249,26.383 12.877,26.383 12.877,18.951 5.442,18.951 5.442,12.58 12.877,12.58 12.877,5.148 19.249,5.148 19.249,12.58 26.684,12.58z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_call.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M20.01,15.38c-1.23,0 -2.42,-0.2 -3.53,-0.56a0.977,0.977 0,0 0,-1.01 0.24l-1.57,1.97c-2.83,-1.35 -5.48,-3.9 -6.89,-6.83l1.95,-1.66c0.27,-0.28 0.35,-0.67 0.24,-1.02 -0.37,-1.11 -0.56,-2.3 -0.56,-3.53 0,-0.54 -0.45,-0.99 -0.99,-0.99H4.19C3.65,3 3,3.24 3,3.99 3,13.28 10.73,21 20.01,21c0.71,0 0.99,-0.63 0.99,-1.18v-3.45c0,-0.54 -0.45,-0.99 -0.99,-0.99z\"\n      android:fillColor=\"#D81F5B\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_cam_off.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"26dp\"\n    android:height=\"26dp\"\n    android:viewportWidth=\"26\"\n    android:viewportHeight=\"26\">\n  <path\n      android:pathData=\"M22.293,7.008l-4.123,4.124L18.17,7.524c0,-0.567 -0.464,-1.03 -1.031,-1.03L10.768,6.494l11.524,11.523L22.292,7.008zM4.017,2.37L2.708,3.68l2.814,2.813h-0.752c-0.567,0 -1.031,0.464 -1.031,1.03v10.309c0,0.566 0.464,1.03 1.03,1.03h12.37c0.216,0 0.402,-0.082 0.556,-0.185l3.289,3.278 1.309,-1.31L4.017,2.37z\"\n      android:fillColor=\"#E20008\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_camera_switch.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:fillColor=\"@color/white\"\n      android:pathData=\"M20,5h-3.17L15,3H9L7.17,5H4C2.9,5 2,5.9 2,7v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V7C22,5.9 21.1,5 20,5zM12,18c-2.76,0 -5,-2.24 -5,-5H5l2.5,-2.5L10,13H8c0,2.21 1.79,4 4,4c0.58,0 1.13,-0.13 1.62,-0.35l0.74,0.74C13.65,17.76 12.86,18 12,18zM16.5,15.5L14,13h2c0,-2.21 -1.79,-4 -4,-4c-0.58,0 -1.13,0.13 -1.62,0.35L9.64,8.62C10.35,8.24 11.14,8 12,8c2.76,0 5,2.24 5,5h2L16.5,15.5z\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_check_filled.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM17.2,7.384c-0.377,-0.262 -0.887,-0.232 -1.23,0.071l-0.09,0.09 -5.924,6.714 -2.118,-2.118 -0.087,-0.077c-0.393,-0.311 -0.965,-0.285 -1.327,0.077 -0.36,0.36 -0.389,0.928 -0.084,1.32l0.084,0.095 2.87,2.871 0.086,0.076c0.379,0.302 0.924,0.287 1.286,-0.035l0.086,-0.087 6.628,-7.513 0.072,-0.092c0.262,-0.377 0.232,-0.887 -0.07,-1.23l-0.09,-0.09 -0.092,-0.072z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_check_green.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M5.293,11.778c0.363,-0.362 0.934,-0.388 1.327,-0.078l0.087,0.078 2.776,2.776 7.176,-8.28c0.336,-0.387 0.904,-0.454 1.318,-0.172l0.093,0.072c0.387,0.336 0.454,0.904 0.172,1.318l-0.072,0.092 -7.879,9.092c-0.355,0.41 -0.964,0.457 -1.377,0.128l-0.086,-0.076 -3.535,-3.536c-0.39,-0.39 -0.39,-1.023 0,-1.414z\"\n      android:fillColor=\"@color/green\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_check_grey.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M5.293,11.778c0.363,-0.362 0.934,-0.388 1.327,-0.078l0.087,0.078 2.776,2.776 7.176,-8.28c0.336,-0.387 0.904,-0.454 1.318,-0.172l0.093,0.072c0.387,0.336 0.454,0.904 0.172,1.318l-0.072,0.092 -7.879,9.092c-0.355,0.41 -0.964,0.457 -1.377,0.128l-0.086,-0.076 -3.535,-3.536c-0.39,-0.39 -0.39,-1.023 0,-1.414z\"\n      android:fillColor=\"@color/grey\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_check_large.xml",
    "content": "<!--\r\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\r\n  ~\r\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\r\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\r\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\r\n  ~\r\n  ~ SPDX-License-Identifier: MPL-2.0\r\n  -->\r\n\r\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:width=\"72dp\"\r\n    android:height=\"72dp\"\r\n    android:viewportWidth=\"72\"\r\n    android:viewportHeight=\"72\">\r\n  <path\r\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28S51.464,64 36,64 8,51.464 8,36 20.536,8 36,8zM48.704,25.084c-0.785,-0.588 -1.883,-0.518 -2.586,0.161l-0.12,0.126L30.64,42.99l-5.685,-5.685 -0.11,-0.102c-0.785,-0.677 -1.973,-0.644 -2.718,0.102 -0.74,0.74 -0.779,1.915 -0.117,2.701l0.117,0.127 7.2,7.2 0.11,0.102c0.78,0.674 1.952,0.64 2.692,-0.076l0.12,-0.126L49.012,28l0.094,-0.116c0.588,-0.785 0.518,-1.883 -0.161,-2.586l-0.126,-0.12 -0.116,-0.094z\"\r\n      android:fillColor=\"#FFF\"\r\n      android:fillType=\"evenOdd\"/>\r\n</vector>\r\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_checkbox_empty.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.5C6.201,1.5 1.5,6.201 1.5,12S6.201,22.5 12,22.5 22.5,17.799 22.5,12 17.799,1.5 12,1.5z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_checkbox_filled.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM17.2,7.384 L17.292,7.456a1,1 0,0 1,0.16 1.32l-0.072,0.092 -6.628,7.513a1,1 0,0 1,-1.372 0.122l-0.085,-0.076 -2.871,-2.871a1,1 0,0 1,1.327 -1.492l0.087,0.077 2.118,2.118 5.924,-6.714a1,1 0,0 1,1.32 -0.16z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_close.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector android:height=\"24dp\"\n    android:viewportHeight=\"24\" android:viewportWidth=\"24\"\n    android:width=\"24dp\" xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <path android:fillColor=\"@android:color/white\" android:pathData=\"M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_close_red.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M19.785,4.561c0.287,0.287 0.287,0.751 0,1.038L13.384,12l6.401,6.401c0.287,0.287 0.287,0.751 0,1.038l-0.346,0.346c-0.287,0.287 -0.751,0.287 -1.038,0L12,13.384l-6.401,6.401c-0.287,0.287 -0.751,0.287 -1.038,0l-0.346,-0.346c-0.287,-0.287 -0.287,-0.751 0,-1.038L10.616,12 4.215,5.599c-0.287,-0.287 -0.287,-0.751 0,-1.038l0.346,-0.346c0.287,-0.287 0.751,-0.287 1.038,0L12,10.616l6.401,-6.401c0.287,-0.287 0.751,-0.287 1.038,0l0.346,0.346z\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_dot.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,12m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_double_check.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"m17.743,0 l0.176,0.005A3,3 0,0 1,20.743 3v1h2a2,2 0,0 1,2 2v16a2,2 0,0 1,-2 2h-16a2,2 0,0 1,-2 -2v-2h-1l-0.176,-0.005A3,3 0,0 1,0.743 17L0.743,3l0.005,-0.176A3,3 0,0 1,3.743 0h14zM22.743,6h-16v16h16L22.743,6zM19.943,9.384 L20.035,9.456a1,1 0,0 1,0.16 1.32l-0.072,0.092 -6.628,7.513a1,1 0,0 1,-1.372 0.122l-0.085,-0.076 -2.872,-2.871a1,1 0,0 1,1.327 -1.492l0.088,0.077 2.118,2.118 5.924,-6.714a1,1 0,0 1,1.32 -0.16zM17.743,2h-14l-0.117,0.007A1,1 0,0 0,2.743 3v14l0.007,0.117a1,1 0,0 0,0.993 0.883h1L4.743,6a2,2 0,0 1,2 -2h12L18.743,3l-0.007,-0.117A1,1 0,0 0,17.743 2z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_error.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,16c-0.69,0 -1.25,0.56 -1.25,1.25s0.56,1.25 1.25,1.25 1.25,-0.56 1.25,-1.25S12.69,16 12,16zM12.25,6h-0.5c-0.38,0 -0.693,0.282 -0.743,0.648L11,6.75v6.5c0,0.38 0.282,0.693 0.648,0.743l0.102,0.007h0.5c0.38,0 0.693,-0.282 0.743,-0.648L13,13.25v-6.5c0,-0.414 -0.336,-0.75 -0.75,-0.75z\"\n      android:fillColor=\"#D81F5B\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_error_blue.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,16a1.25,1.25 0,1 0,0 2.5,1.25 1.25,0 0,0 0,-2.5zM12.25,6h-0.5a0.75,0.75 0,0 0,-0.743 0.648L11,6.75v6.5c0,0.38 0.282,0.693 0.648,0.743l0.102,0.007h0.5a0.75,0.75 0,0 0,0.743 -0.648L13,13.25v-6.5a0.75,0.75 0,0 0,-0.75 -0.75z\"\n      android:fillColor=\"@color/blue\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_error_grey.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,16c-0.69,0 -1.25,0.56 -1.25,1.25s0.56,1.25 1.25,1.25 1.25,-0.56 1.25,-1.25S12.69,16 12,16zM12.25,6h-0.5c-0.38,0 -0.693,0.282 -0.743,0.648L11,6.75v6.5c0,0.38 0.282,0.693 0.648,0.743l0.102,0.007h0.5c0.38,0 0.693,-0.282 0.743,-0.648L13,13.25v-6.5c0,-0.414 -0.336,-0.75 -0.75,-0.75z\"\n      android:fillColor=\"@color/grey\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_error_large.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28S51.464,64 36,64 8,51.464 8,36 20.536,8 36,8zM36,45c-1.38,0 -2.5,1.12 -2.5,2.5S34.62,50 36,50s2.5,-1.12 2.5,-2.5S37.38,45 36,45zM36.244,22h-0.488c-0.922,0 -1.677,0.71 -1.75,1.612l-0.006,0.144v14.488c0,0.922 0.71,1.677 1.612,1.75l0.144,0.006h0.488c0.922,0 1.677,-0.71 1.75,-1.612l0.006,-0.144L38,23.756c0,-0.922 -0.71,-1.677 -1.612,-1.75L36.244,22z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_error_orange.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,16c-0.69,0 -1.25,0.56 -1.25,1.25s0.56,1.25 1.25,1.25 1.25,-0.56 1.25,-1.25S12.69,16 12,16zM12.25,6h-0.5c-0.38,0 -0.693,0.282 -0.743,0.648L11,6.75v6.5c0,0.38 0.282,0.693 0.648,0.743l0.102,0.007h0.5c0.38,0 0.693,-0.282 0.743,-0.648L13,13.25v-6.5c0,-0.414 -0.336,-0.75 -0.75,-0.75z\"\n      android:fillColor=\"@color/orange\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_error_triangle.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12.857,2.43l10.234,17.056c0.284,0.473 0.13,1.087 -0.343,1.371 -0.155,0.094 -0.333,0.143 -0.514,0.143H1.766c-0.552,0 -1,-0.448 -1,-1 0,-0.181 0.05,-0.36 0.143,-0.514L11.143,2.429c0.284,-0.473 0.898,-0.627 1.371,-0.343 0.141,0.085 0.259,0.202 0.343,0.343z\"\n      android:fillColor=\"#E20008\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M12,17.25m-1.25,0a1.25,1.25 0,1 1,2.5 0a1.25,1.25 0,1 1,-2.5 0\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M11.25,8H12.75V14H11.25z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_expire_i.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12.857,0c6.628,0 12,5.373 12,12s-5.372,12 -12,12c-6.627,0 -12,-5.373 -12,-12s5.373,-12 12,-12zM12.857,1.8c-5.633,0 -10.2,4.567 -10.2,10.2 0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM13.107,10.5a0.75,0.75 0,0 1,0.75 0.75v5.5a0.75,0.75 0,0 1,-0.75 0.75h-0.5a0.75,0.75 0,0 1,-0.75 -0.75v-5.5a0.75,0.75 0,0 1,0.75 -0.75h0.5zM13.107,6.5a1,1 0,0 1,1 1L14.107,8a1,1 0,0 1,-1 1h-0.5a1,1 0,0 1,-1 -1v-0.5a1,1 0,0 1,1 -1h0.5z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_faq.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"40dp\"\n    android:height=\"40dp\"\n    android:viewportWidth=\"40\"\n    android:viewportHeight=\"40\">\n  <path\n      android:pathData=\"M20,25.5c1.105,0 2,0.895 2,2s-0.895,2 -2,2c-1.104,0 -2,-0.895 -2,-2s0.896,-2 2,-2zM19.954,9.5C23.007,9.5 25.5,11.916 25.5,14.92c0,1.899 -1.34,3.647 -3.864,5.393l-0.183,0.124v1.521c0,0.78 -0.594,1.42 -1.355,1.494l-0.144,0.006c-0.78,0 -1.42,-0.594 -1.493,-1.355l-0.007,-0.145v-2.333c0,-0.516 0.265,-0.996 0.703,-1.27C21.457,16.91 22.5,15.697 22.5,14.92 22.5,13.594 21.37,12.5 19.954,12.5c-0.656,0 -1.267,0.235 -1.735,0.65 -0.251,0.221 -0.452,0.489 -0.591,0.784 -0.048,0.102 -0.089,0.207 -0.121,0.314l-0.043,0.163c-0.182,0.808 -0.985,1.315 -1.793,1.134C14.863,15.363 14.355,14.56 14.537,13.752c0.085,-0.379 0.212,-0.746 0.376,-1.096 0.314,-0.666 0.763,-1.262 1.316,-1.752C17.243,10.006 18.561,9.5 19.954,9.5z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_header_slim.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"375.164dp\"\n    android:height=\"18dp\"\n    android:viewportWidth=\"375.164\"\n    android:viewportHeight=\"18\">\n  <path\n      android:pathData=\"M0.083,0.708C60.85,12.063 123.523,18 187.582,18 251.642,18 314.314,12.063 375.079,0.708L375.079,0L0.083,0ZM0,0h375.164v0z\"\n      android:fillColor=\"#ffffff\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_how_it_works_image.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M157.5,100.5m-90.5,0a90.5,90.5 0,1 1,181 0a90.5,90.5 0,1 1,-181 0\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M129,34.118h54.597c3.313,0 6,2.686 6,6v121.193c0,3.314 -2.687,6 -6,6L129,167.311c-3.314,0 -6,-2.686 -6,-6L123,40.118c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.776,34.118h33.551v4.829c0,1.656 -1.343,3 -3,3L142.776,41.947c-1.657,0 -3,-1.344 -3,-3L139.776,34.118z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M130.31,58.176L182.288,58.176 182.288,97.972 182.288,116.194 179.851,118.275 182.288,120.357 182.288,138.579 130.31,138.579 130.31,120.357 132.746,118.275 130.31,116.194 130.31,97.972z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M154.81,85.654v16.378L138.432,102.032L138.432,85.654L154.81,85.654zM162.255,96.076v2.976l11.911,0.001v2.978h-14.89v-5.955h2.979zM151.83,88.631L141.409,88.631v10.422h10.422L151.831,88.631zM162.254,85.654v4.466h2.977v-4.466h8.934L174.165,96.076h-2.978l-0.001,-7.446h-2.978l0.002,4.468h-8.934v-7.445h2.978zM148.854,91.61L148.854,96.076h-4.468v-4.467h4.467zM154.81,66.298L154.81,82.676L138.432,82.676L138.432,66.298L154.81,66.298zM174.166,66.298L174.166,82.676L157.788,82.676L157.788,66.298h16.378zM151.831,69.275L141.409,69.275v10.422h10.422L151.831,69.275zM171.187,69.275L160.765,69.275v10.422h10.422L171.187,69.275zM148.854,72.253v4.467h-4.467v-4.467h4.467zM168.211,72.253v4.467h-4.467v-4.467L168.21,72.253z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.244,124.773L173.355,124.773A0.812,0.812 0,0 1,174.167 125.585L174.167,125.585A0.812,0.812 0,0 1,173.355 126.397L139.244,126.397A0.812,0.812 0,0 1,138.432 125.585L138.432,125.585A0.812,0.812 0,0 1,139.244 124.773z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.244,128.833L164.421,128.833A0.812,0.812 0,0 1,165.233 129.645L165.233,129.645A0.812,0.812 0,0 1,164.421 130.457L139.244,130.457A0.812,0.812 0,0 1,138.432 129.645L138.432,129.645A0.812,0.812 0,0 1,139.244 128.833z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114,164m-27,0a27,27 0,1 1,54 0a27,27 0,1 1,-54 0\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114,164m-24,0a24,24 0,1 1,48 0a24,24 0,1 1,-48 0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114,155.5m-2.5,0a2.5,2.5 0,1 1,5 0a2.5,2.5 0,1 1,-5 0\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M112.5,159L115.5,159A0.5,0.5 0,0 1,116 159.5L116,173.5A0.5,0.5 0,0 1,115.5 174L112.5,174A0.5,0.5 0,0 1,112 173.5L112,159.5A0.5,0.5 0,0 1,112.5 159z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M110,159L115,159L115,162L110,162zM110,171L118,171L118,174L110,174z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_info.xml",
    "content": "<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"m12.9553,9.2727c0.7531,0 1.3636,0.6105 1.3636,1.3636v10C14.3189,21.3895 13.7084,22 12.9553,22h-0.9091c-0.7531,0 -1.3636,-0.6105 -1.3636,-1.3636v-10c0,-0.7531 0.6105,-1.3636 1.3636,-1.3636zM12.9553,2c1.0042,0 1.8182,0.814 1.8182,1.8182v0.9091c0,1.0042 -0.814,1.8182 -1.8182,1.8182H12.0462C11.042,6.5455 10.228,5.7314 10.228,4.7273V3.8182C10.228,2.814 11.042,2 12.0462,2Z\"\n      android:strokeWidth=\"1.81818187\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_info_alert.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12.743,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11 -11,-4.925 -11,-11 4.925,-11 11,-11zM12.743,16a1.25,1.25 0,1 0,0 2.5,1.25 1.25,0 0,0 0,-2.5zM12.993,6h-0.5a0.75,0.75 0,0 0,-0.743 0.648l-0.007,0.102v6.5c0,0.38 0.282,0.693 0.648,0.743l0.102,0.007h0.5a0.75,0.75 0,0 0,0.743 -0.648l0.007,-0.102v-6.5a0.75,0.75 0,0 0,-0.75 -0.75z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_info_blue.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12.25,11h-0.5c-0.38,0 -0.693,0.282 -0.743,0.648L11,11.75v5.5c0,0.38 0.282,0.693 0.648,0.743l0.102,0.007h0.5c0.38,0 0.693,-0.282 0.743,-0.648L13,17.25v-5.5c0,-0.414 -0.336,-0.75 -0.75,-0.75zM12.25,6h-0.5c-0.552,0 -1,0.448 -1,1v0.5c0,0.552 0.448,1 1,1h0.5c0.552,0 1,-0.448 1,-1L13.25,7c0,-0.552 -0.448,-1 -1,-1z\"\n      android:fillColor=\"@color/blue\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_info_outline.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,2c5.523,0 10,4.477 10,10s-4.477,10 -10,10S2,17.523 2,12 6.477,2 12,2zM12,4c-4.418,0 -8,3.582 -8,8s3.582,8 8,8 8,-3.582 8,-8 -3.582,-8 -8,-8zM12.25,10.5c0.414,0 0.75,0.336 0.75,0.75v5.5c0,0.414 -0.336,0.75 -0.75,0.75h-0.5c-0.414,0 -0.75,-0.336 -0.75,-0.75v-5.5c0,-0.414 0.336,-0.75 0.75,-0.75h0.5zM12.25,6.5c0.552,0 1,0.448 1,1L13.25,8c0,0.552 -0.448,1 -1,1h-0.5c-0.552,0 -1,-0.448 -1,-1v-0.5c0,-0.552 0.448,-1 1,-1h0.5z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_invalid_grey.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1C5.928,1 1,5.928 1,12s4.928,11 11,11 11,-4.928 11,-11S18.072,1 12,1zM12,20.8c-4.862,0 -8.8,-3.938 -8.8,-8.8 0,-2.035 0.693,-3.905 1.859,-5.39L17.39,18.941C15.905,20.107 14.035,20.8 12,20.8zM18.941,17.39L6.61,5.059C8.095,3.893 9.965,3.2 12,3.2c4.862,0 8.8,3.938 8.8,8.8 0,2.035 -0.693,3.905 -1.859,5.39z\"\n      android:fillColor=\"@color/grey\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_invalid_red.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1C5.928,1 1,5.928 1,12s4.928,11 11,11 11,-4.928 11,-11S18.072,1 12,1zM12,20.8c-4.862,0 -8.8,-3.938 -8.8,-8.8 0,-2.035 0.693,-3.905 1.859,-5.39L17.39,18.941C15.905,20.107 14.035,20.8 12,20.8zM18.941,17.39L6.61,5.059C8.095,3.893 9.965,3.2 12,3.2c4.862,0 8.8,3.938 8.8,8.8 0,2.035 -0.693,3.905 -1.859,5.39z\"\n      android:fillColor=\"@color/red\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_light_off.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M15,20v1c0,0.51 -0.388,0.935 -0.884,0.993L14,22h-4c-0.51,0 -0.935,-0.388 -0.993,-0.884L9,21v-1h6zM18.638,6.777C18.873,7.476 19,8.223 19,9c0,2.285 -1.097,4.302 -2.786,5.584L16,14.74L16,17c0,0.51 -0.388,0.935 -0.884,0.993L15,18L9,18c-0.426,0 -0.793,-0.27 -0.936,-0.648L10,15.415L10,16h4v-2.3l0.85,-0.6C16.2,12.16 17,10.63 17,9c0,-0.187 -0.01,-0.372 -0.03,-0.553l1.668,-1.67zM12,2c1.825,0 3.488,0.702 4.735,1.85l1.558,-1.557c0.39,-0.39 1.024,-0.39 1.414,0 0.36,0.36 0.388,0.928 0.083,1.32l-0.083,0.094 -14,14c-0.39,0.39 -1.024,0.39 -1.414,0 -0.36,-0.36 -0.388,-0.928 -0.083,-1.32l0.083,-0.094 2.558,-2.559c-1.088,-1.181 -1.777,-2.733 -1.845,-4.45L5,9c0,-3.86 3.14,-7 7,-7zM12,4C9.24,4 7,6.24 7,9c0,1.234 0.459,2.41 1.267,3.317l7.054,-7.054C14.438,4.477 13.274,4 12,4z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_light_off_blue.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M15,20v1c0,0.51 -0.388,0.935 -0.884,0.993L14,22h-4c-0.51,0 -0.935,-0.388 -0.993,-0.884L9,21v-1h6zM18.638,6.777C18.873,7.476 19,8.223 19,9c0,2.285 -1.097,4.302 -2.786,5.584L16,14.74L16,17c0,0.51 -0.388,0.935 -0.884,0.993L15,18L9,18c-0.426,0 -0.793,-0.27 -0.936,-0.648L10,15.415L10,16h4v-2.3l0.85,-0.6C16.2,12.16 17,10.63 17,9c0,-0.187 -0.01,-0.372 -0.03,-0.553l1.668,-1.67zM12,2c1.825,0 3.488,0.702 4.735,1.85l1.558,-1.557c0.39,-0.39 1.024,-0.39 1.414,0 0.36,0.36 0.388,0.928 0.083,1.32l-0.083,0.094 -14,14c-0.39,0.39 -1.024,0.39 -1.414,0 -0.36,-0.36 -0.388,-0.928 -0.083,-1.32l0.083,-0.094 2.558,-2.559c-1.088,-1.181 -1.777,-2.733 -1.845,-4.45L5,9c0,-3.86 3.14,-7 7,-7zM12,4C9.24,4 7,6.24 7,9c0,1.234 0.459,2.41 1.267,3.317l7.054,-7.054C14.438,4.477 13.274,4 12,4z\"\n      android:fillColor=\"@color/blue\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_light_on.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M15,20v1c0,0.55 -0.45,1 -1,1h-4c-0.55,0 -1,-0.45 -1,-1v-1h6zM12,2c3.86,0 7,3.14 7,7 0,2.38 -1.19,4.47 -3,5.74L16,17c0,0.55 -0.45,1 -1,1L9,18c-0.55,0 -1,-0.45 -1,-1v-2.26C6.19,13.47 5,11.38 5,9c0,-3.86 3.14,-7 7,-7zM18.817,14.767l0.077,0.067 1.415,1.414c0.292,0.293 0.292,0.768 0,1.06 -0.269,0.269 -0.69,0.291 -0.984,0.068l-0.077,-0.067 -1.414,-1.415c-0.293,-0.293 -0.293,-0.767 0,-1.06 0.268,-0.269 0.69,-0.291 0.983,-0.067zM6.167,14.834c0.268,0.268 0.29,0.69 0.066,0.983l-0.067,0.077 -1.414,1.415c-0.293,0.292 -0.768,0.292 -1.06,0 -0.269,-0.269 -0.291,-0.69 -0.068,-0.984l0.067,-0.077 1.415,-1.414c0.293,-0.293 0.767,-0.293 1.06,0zM12,4C9.24,4 7,6.24 7,9c0,1.63 0.8,3.16 2.15,4.1l0.85,0.6L10,16h4v-2.3l0.85,-0.6C16.2,12.16 17,10.63 17,9c0,-2.76 -2.24,-5 -5,-5zM3,8.25c0.414,0 0.75,0.336 0.75,0.75 0,0.38 -0.282,0.693 -0.648,0.743L3,9.75L1,9.75C0.586,9.75 0.25,9.414 0.25,9c0,-0.38 0.282,-0.693 0.648,-0.743L1,8.25h2zM23,8.25c0.414,0 0.75,0.336 0.75,0.75 0,0.38 -0.282,0.693 -0.648,0.743L23,9.75h-2c-0.414,0 -0.75,-0.336 -0.75,-0.75 0,-0.38 0.282,-0.693 0.648,-0.743L21,8.25h2zM4.675,0.624l0.077,0.067 1.414,1.415c0.293,0.293 0.293,0.767 0,1.06 -0.268,0.269 -0.69,0.291 -0.983,0.067l-0.077,-0.067L3.69,1.752C3.4,1.46 3.4,0.984 3.691,0.692c0.269,-0.269 0.69,-0.291 0.984,-0.068zM20.31,0.691c0.268,0.269 0.29,0.69 0.067,0.984l-0.067,0.077 -1.415,1.414c-0.293,0.293 -0.767,0.293 -1.06,0 -0.269,-0.268 -0.291,-0.69 -0.067,-0.983l0.067,-0.077L19.248,0.69c0.293,-0.292 0.768,-0.292 1.06,0z\"\n      android:fillColor=\"@color/white\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_light_on_black.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M15,20v1c0,0.55 -0.45,1 -1,1h-4c-0.55,0 -1,-0.45 -1,-1v-1h6zM12,2c3.86,0 7,3.14 7,7 0,2.38 -1.19,4.47 -3,5.74L16,17c0,0.55 -0.45,1 -1,1L9,18c-0.55,0 -1,-0.45 -1,-1v-2.26C6.19,13.47 5,11.38 5,9c0,-3.86 3.14,-7 7,-7zM18.817,14.767l0.077,0.067 1.415,1.414c0.292,0.293 0.292,0.768 0,1.06 -0.269,0.269 -0.69,0.291 -0.984,0.068l-0.077,-0.067 -1.414,-1.415c-0.293,-0.293 -0.293,-0.767 0,-1.06 0.268,-0.269 0.69,-0.291 0.983,-0.067zM6.167,14.834c0.268,0.268 0.29,0.69 0.066,0.983l-0.067,0.077 -1.414,1.415c-0.293,0.292 -0.768,0.292 -1.06,0 -0.269,-0.269 -0.291,-0.69 -0.068,-0.984l0.067,-0.077 1.415,-1.414c0.293,-0.293 0.767,-0.293 1.06,0zM12,4C9.24,4 7,6.24 7,9c0,1.63 0.8,3.16 2.15,4.1l0.85,0.6L10,16h4v-2.3l0.85,-0.6C16.2,12.16 17,10.63 17,9c0,-2.76 -2.24,-5 -5,-5zM3,8.25c0.414,0 0.75,0.336 0.75,0.75 0,0.38 -0.282,0.693 -0.648,0.743L3,9.75L1,9.75C0.586,9.75 0.25,9.414 0.25,9c0,-0.38 0.282,-0.693 0.648,-0.743L1,8.25h2zM23,8.25c0.414,0 0.75,0.336 0.75,0.75 0,0.38 -0.282,0.693 -0.648,0.743L23,9.75h-2c-0.414,0 -0.75,-0.336 -0.75,-0.75 0,-0.38 0.282,-0.693 0.648,-0.743L21,8.25h2zM4.675,0.624l0.077,0.067 1.414,1.415c0.293,0.293 0.293,0.767 0,1.06 -0.268,0.269 -0.69,0.291 -0.983,0.067l-0.077,-0.067L3.69,1.752C3.4,1.46 3.4,0.984 3.691,0.692c0.269,-0.269 0.69,-0.291 0.984,-0.068zM20.31,0.691c0.268,0.269 0.29,0.69 0.067,0.984l-0.067,0.077 -1.415,1.414c-0.293,0.293 -0.767,0.293 -1.06,0 -0.269,-0.268 -0.291,-0.69 -0.067,-0.983l0.067,-0.077L19.248,0.69c0.293,-0.292 0.768,-0.292 1.06,0z\"\n      android:fillColor=\"@color/black\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_link_external.xml",
    "content": "<!--\r\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\r\n  ~\r\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\r\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\r\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\r\n  ~\r\n  ~ SPDX-License-Identifier: MPL-2.0\r\n  -->\r\n\r\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:width=\"24dp\"\r\n    android:height=\"24dp\"\r\n    android:viewportWidth=\"24\"\r\n    android:viewportHeight=\"24\">\r\n  <path\r\n      android:pathData=\"M12.5,4c0.276,0 0.5,0.224 0.5,0.5v1c0,0.276 -0.224,0.5 -0.5,0.5H7c-0.513,0 -0.936,0.386 -0.993,0.883L6,7v10c0,0.513 0.386,0.936 0.883,0.993L7,18h10c0.513,0 0.936,-0.386 0.993,-0.883L18,17v-5.5c0,-0.276 0.224,-0.5 0.5,-0.5h1c0.276,0 0.5,0.224 0.5,0.5V17c0,1.598 -1.249,2.904 -2.824,2.995L17,20H7c-1.598,0 -2.904,-1.249 -2.995,-2.824L4,17V7c0,-1.598 1.249,-2.904 2.824,-2.995L7,4h5.5zM21,2c0.513,0 0.936,0.386 0.993,0.883L22,3v5.25c0,0.414 -0.336,0.75 -0.75,0.75h-0.5c-0.414,0 -0.75,-0.336 -0.75,-0.75V5.414l-6.763,6.763c-0.292,0.293 -0.767,0.293 -1.06,0l-0.354,-0.354c-0.293,-0.293 -0.293,-0.768 0,-1.06L18.584,4H15.75c-0.414,0 -0.75,-0.336 -0.75,-0.75v-0.5c0,-0.414 0.336,-0.75 0.75,-0.75H21z\"\r\n      android:fillColor=\"#243784\"\r\n      android:fillType=\"nonZero\"/>\r\n</vector>\r\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_load.xml",
    "content": "<!--\r\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\r\n  ~\r\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\r\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\r\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\r\n  ~\r\n  ~ SPDX-License-Identifier: MPL-2.0\r\n  -->\r\n\r\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:width=\"25dp\"\r\n    android:height=\"24dp\"\r\n    android:viewportWidth=\"25\"\r\n    android:viewportHeight=\"24\">\r\n  <path\r\n      android:pathData=\"M12.5,4c4.262,0 7.746,3.333 7.987,7.534l1.163,-1.163c0.36,-0.36 0.927,-0.388 1.32,-0.083l0.094,0.083c0.36,0.36 0.388,0.928 0.083,1.32l-0.083,0.095 -2.828,2.828c-0.361,0.36 -0.928,0.388 -1.32,0.083l-0.095,-0.083 -2.828,-2.828c-0.39,-0.391 -0.39,-1.024 0,-1.415 0.36,-0.36 0.928,-0.388 1.32,-0.083l0.094,0.083 1.067,1.066C18.19,8.387 15.624,6 12.5,6c-3.314,0 -6,2.686 -6,6s2.686,6 6,6c1.628,0 3.188,-0.65 4.296,-1.757 0.39,-0.39 1.023,-0.39 1.414,0 0.39,0.39 0.39,1.023 0,1.414C16.728,19.139 14.66,20 12.5,20c-4.418,0 -8,-3.582 -8,-8s3.582,-8 8,-8z\"\r\n      android:fillColor=\"@color/white\"/>\r\n</vector>\r\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_no1g.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M4.302,2.36a1.76,1.76 0,0 1,2.44 0.3l19.479,24.584 0.072,0.1a1.687,1.687 0,0 1,-0.377 2.296,1.76 1.76,0 0,1 -2.441,-0.3L11.112,13.738v10.954H6.666V10.419h-0.108l-4.124,2.526v-3.85l3.35,-2.084 -1.786,-2.255 -0.073,-0.1a1.687,1.687 0,0 1,0.378 -2.296zM32.5,14.817v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-0.372,0.19 -0.76,0.35 -1.166,0.481l-2.669,-3.368h0.032c0.679,-0.029 1.261,-0.157 1.749,-0.386 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142H24.7v-3.162h7.8zM24.459,6.44c1.05,0 2.025,0.149 2.929,0.446A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.318,0.736 -0.49,1.616 -0.516,2.639l-3.464,-4.373c0.4,-0.808 0.903,-1.515 1.507,-2.12a7.959,7.959 0,0 1,2.758 -1.805c1.046,-0.41 2.174,-0.615 3.382,-0.615z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_no2g.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M4.302,2.36a1.76,1.76 0,0 1,2.44 0.3l19.479,24.584 0.072,0.1a1.687,1.687 0,0 1,-0.377 2.296,1.76 1.76,0 0,1 -2.441,-0.3l-10.94,-13.812c-0.152,0.193 -0.316,0.39 -0.494,0.592 -0.716,0.813 -1.73,1.786 -3.04,2.918L6.83,21.022v0.112h7.34v3.499H0.77v-3.12l6.598,-5.728c0.499,-0.447 0.922,-0.856 1.27,-1.228a4.65,4.65 0,0 0,0.796 -1.122c0.183,-0.376 0.275,-0.787 0.275,-1.233 0,-0.086 -0.003,-0.17 -0.01,-0.253L8.124,9.962a3.08,3.08 0,0 0,-0.962 -0.144c-0.502,0 -0.943,0.101 -1.322,0.303a2.104,2.104 0,0 0,-0.878 0.875c-0.207,0.382 -0.31,0.843 -0.31,1.381H0.5c0,-1.22 0.278,-2.274 0.833,-3.162 0.555,-0.888 1.334,-1.572 2.338,-2.054a7.1,7.1 0,0 1,1.78 -0.57L3.996,4.755l-0.073,-0.1a1.687,1.687 0,0 1,0.378 -2.296zM32.5,14.817v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-0.372,0.19 -0.761,0.35 -1.167,0.481l-2.668,-3.368h0.032c0.679,-0.029 1.261,-0.157 1.749,-0.386 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142H24.7v-3.162h7.8zM24.459,6.44c1.05,0 2.025,0.149 2.929,0.446A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.318,0.736 -0.49,1.616 -0.516,2.64l-3.464,-4.373a7.959,7.959 0,0 1,4.265 -3.925c1.046,-0.41 2.174,-0.616 3.382,-0.616z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_no3g.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"33dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"33\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M4.302,2.36a1.76,1.76 0,0 1,2.44 0.3l19.479,24.584 0.072,0.1a1.687,1.687 0,0 1,-0.377 2.296,1.76 1.76,0 0,1 -2.441,-0.3l-9.058,-11.434c0.215,0.499 0.32,1.054 0.315,1.666 0.005,1.036 -0.299,1.956 -0.912,2.76 -0.612,0.804 -1.46,1.435 -2.54,1.893 -1.082,0.458 -2.325,0.687 -3.73,0.687 -1.362,0 -2.571,-0.235 -3.628,-0.704 -1.056,-0.47 -1.887,-1.119 -2.493,-1.948 -0.605,-0.828 -0.915,-1.783 -0.929,-2.863h4.366c0.014,0.391 0.139,0.737 0.375,1.038 0.235,0.3 0.555,0.535 0.958,0.702 0.403,0.167 0.86,0.25 1.372,0.25 0.514,0 0.968,-0.09 1.363,-0.273 0.394,-0.182 0.703,-0.436 0.925,-0.76 0.222,-0.325 0.33,-0.698 0.326,-1.118a1.777,1.777 0,0 0,-0.361 -1.12c-0.246,-0.326 -0.593,-0.58 -1.041,-0.763 -0.449,-0.184 -0.974,-0.276 -1.577,-0.276L5.461,17.077v-3.076h1.745c0.53,0 0.998,-0.089 1.403,-0.266 0.404,-0.178 0.72,-0.425 0.947,-0.743a1.76,1.76 0,0 0,0.319 -0.819L8.07,9.895a3.237,3.237 0,0 0,-0.485 -0.035,3.18 3.18,0 0,0 -1.3,0.256 2.245,2.245 0,0 0,-0.922 0.72,1.849 1.849,0 0,0 -0.357,1.077L0.857,11.913c0.012,-1.066 0.31,-2.007 0.896,-2.821 0.585,-0.815 1.382,-1.454 2.39,-1.916a7.259,7.259 0,0 1,1.396 -0.473L3.997,4.756l-0.073,-0.1a1.687,1.687 0,0 1,0.378 -2.296zM32.5,14.817v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-0.372,0.19 -0.761,0.35 -1.167,0.481l-2.668,-3.368h0.032c0.679,-0.029 1.261,-0.157 1.749,-0.386 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L24.7,17.979v-3.162h7.8zM10.535,15.319v0.14c1.126,0.133 2.03,0.455 2.71,0.966l-1.231,-1.55a4.876,4.876 0,0 1,-1.48 0.444zM24.459,6.439c1.05,0 2.025,0.149 2.929,0.446A7.862,7.862 0,0 1,29.79 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.318,0.736 -0.49,1.616 -0.516,2.64l-3.464,-4.373a7.959,7.959 0,0 1,4.265 -3.925c1.046,-0.41 2.174,-0.616 3.382,-0.616z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_no_2_g_plus_height.xml",
    "content": "<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"65dp\"\n    android:height=\"32dp\"\n    android:viewportWidth=\"65\"\n    android:viewportHeight=\"32\">\n  <path\n      android:pathData=\"M7.05,5c-0.452,0.574 -0.872,1.274 -1.262,2.1A18.64,18.64 0,0 0,4.77 9.818a23.708,23.708 0,0 0,-0.676 3.057A20.526,20.526 0,0 0,3.852 16c0,1.372 0.14,2.758 0.42,4.159 0.281,1.4 0.663,2.7 1.146,3.897 0.484,1.198 1.028,2.18 1.632,2.944L3.511,27a16.44,16.44 0,0 1,-2.644 -5.041C0.289,20.145 0,18.159 0,16s0.289,-4.145 0.867,-5.959A16.44,16.44 0,0 1,3.51 5h3.54zM61.54,5a16.44,16.44 0,0 1,2.644 5.041c0.578,1.814 0.866,3.8 0.866,5.96 0,2.158 -0.288,4.144 -0.866,5.958A16.44,16.44 0,0 1,61.539 27L58,27c0.605,-0.765 1.149,-1.746 1.632,-2.944a21.883,21.883 0,0 0,1.146 -3.897c0.28,-1.4 0.42,-2.787 0.42,-4.159 0,-1.03 -0.08,-2.072 -0.243,-3.126a23.708,23.708 0,0 0,-0.675 -3.057A18.64,18.64 0,0 0,59.263 7.1C58.873,6.274 58.452,5.574 58,5zM33.958,6.44c1.05,0 2.025,0.148 2.929,0.445A7.862,7.862 0,0 1,39.29 8.15a6.783,6.783 0,0 1,1.702 1.937,6.33 6.33,0 0,1 0.817,2.46h-4.427c-0.1,-0.366 -0.248,-0.69 -0.443,-0.974a2.888,2.888 0,0 0,-0.716 -0.725,3.134 3.134,0 0,0 -0.973,-0.454 4.454,4.454 0,0 0,-1.206 -0.154c-0.875,0 -1.632,0.211 -2.272,0.634 -0.64,0.423 -1.133,1.036 -1.48,1.84 -0.346,0.802 -0.52,1.775 -0.52,2.917 0,1.153 0.168,2.135 0.504,2.947 0.336,0.812 0.822,1.432 1.459,1.86 0.636,0.427 1.406,0.641 2.309,0.641 0.806,0 1.488,-0.13 2.045,-0.392 0.557,-0.26 0.979,-0.631 1.266,-1.111 0.25,-0.42 0.392,-0.904 0.423,-1.454l0.004,-0.142L34.2,17.98v-3.162L42,14.818v2.377c0,1.604 -0.343,2.98 -1.028,4.126a6.867,6.867 0,0 1,-2.829 2.639c-1.2,0.613 -2.576,0.919 -4.127,0.919 -1.73,0 -3.25,-0.372 -4.557,-1.115 -1.308,-0.743 -2.328,-1.802 -3.06,-3.176 -0.73,-1.374 -1.096,-3.007 -1.096,-4.9 0,-1.472 0.221,-2.779 0.664,-3.922 0.442,-1.144 1.06,-2.112 1.852,-2.905a7.959,7.959 0,0 1,2.758 -1.806c1.046,-0.41 2.174,-0.615 3.382,-0.615zM16.675,6.44c1.372,0 2.566,0.227 3.58,0.683 1.015,0.455 1.801,1.09 2.359,1.905 0.557,0.814 0.836,1.76 0.836,2.838 0,0.683 -0.14,1.36 -0.418,2.03 -0.279,0.67 -0.776,1.412 -1.492,2.224 -0.716,0.813 -1.73,1.786 -3.04,2.918l-2.171,1.984v0.112h7.34v3.499L10.27,24.633v-3.12l6.598,-5.728c0.499,-0.447 0.922,-0.856 1.27,-1.228a4.65,4.65 0,0 0,0.796 -1.122c0.183,-0.376 0.275,-0.787 0.275,-1.233 0,-0.495 -0.11,-0.92 -0.328,-1.274a2.2,2.2 0,0 0,-0.903 -0.82,2.887 2.887,0 0,0 -1.315,-0.29c-0.502,0 -0.943,0.101 -1.322,0.303a2.104,2.104 0,0 0,-0.878 0.875c-0.207,0.382 -0.31,0.843 -0.31,1.381L10,12.377c0,-1.22 0.278,-2.274 0.833,-3.162 0.555,-0.888 1.334,-1.572 2.338,-2.054 1.004,-0.481 2.172,-0.722 3.505,-0.722zM52,11v4h4v3h-4v4h-3v-4h-4v-3h4v-4h3z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_no_connection.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM11.9,15.895c-0.407,0 -0.769,0.185 -1.016,0.472 -0.203,0.235 -0.33,0.538 -0.33,0.873 0,0.743 0.603,1.345 1.347,1.345s1.347,-0.602 1.347,-1.345c0,-0.335 -0.127,-0.638 -0.33,-0.873 -0.248,-0.287 -0.609,-0.472 -1.017,-0.472zM12.703,5.379L11.1,5.379l-0.087,0.008c-0.253,0.051 -0.44,0.32 -0.423,0.634l0.444,8.105 0.014,0.103c0.054,0.266 0.257,0.461 0.496,0.461h0.715l0.088,-0.009c0.229,-0.047 0.407,-0.273 0.422,-0.555l0.445,-8.105 -0.001,-0.103c-0.027,-0.3 -0.243,-0.54 -0.509,-0.54zM14.463,11.205l-0.09,1.655 0.251,0.15c0.412,0.263 0.784,0.581 1.099,0.946l0.166,0.194 1.163,-1 -0.167,-0.193 -0.227,-0.25c-0.622,-0.647 -1.372,-1.152 -2.194,-1.502zM9.338,11.205c-0.925,0.393 -1.758,0.984 -2.421,1.752l-0.167,0.193 1.163,1 0.166,-0.194 0.196,-0.213c0.338,-0.346 0.728,-0.643 1.154,-0.883zM9.131,7.435c-1.928,0.543 -3.638,1.623 -4.964,3.158L4,10.787l1.164,1 0.167,-0.193 0.228,-0.254c1.007,-1.077 2.258,-1.87 3.659,-2.326zM14.671,7.435l-0.087,1.579 0.32,0.11c1.377,0.508 2.599,1.349 3.567,2.47l0.167,0.193 1.164,-1 -0.167,-0.193 -0.253,-0.283c-1.287,-1.386 -2.904,-2.367 -4.711,-2.876z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_no_connection_large.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28S51.464,64 36,64 8,51.464 8,36 20.536,8 36,8zM36,44.52c-0.891,0 -1.68,0.402 -2.22,1.025 -0.444,0.513 -0.722,1.173 -0.722,1.902 0,1.617 1.318,2.928 2.942,2.928s2.942,-1.311 2.942,-2.928c0,-0.73 -0.278,-1.389 -0.722,-1.902 -0.54,-0.623 -1.329,-1.026 -2.22,-1.026zM37.752,21.625h-3.503l-0.12,0.007c-0.587,0.074 -1.033,0.681 -0.993,1.39l0.97,17.645 0.014,0.136c0.09,0.624 0.55,1.092 1.1,1.092h1.56l0.117,-0.007c0.535,-0.065 0.961,-0.576 0.997,-1.22l0.971,-17.645 0.002,-0.14c-0.025,-0.695 -0.512,-1.258 -1.115,-1.258zM41.596,34.309l-0.199,3.602 0.368,0.215c0.97,0.592 1.846,1.324 2.58,2.172l0.363,0.421 2.54,-2.176 -0.366,-0.421 -0.294,-0.33c-1.396,-1.51 -3.108,-2.684 -4.992,-3.483zM30.404,34.309c-2.018,0.856 -3.839,2.142 -5.286,3.813l-0.364,0.42 2.539,2.177 0.363,-0.421 0.282,-0.312c0.77,-0.818 1.673,-1.518 2.665,-2.074zM29.953,26.103c-4.21,1.18 -7.944,3.532 -10.838,6.874l-0.365,0.421 2.541,2.179 0.364,-0.421 0.3,-0.34c2.232,-2.454 5.037,-4.256 8.186,-5.278zM42.047,26.103l-0.188,3.435 0.427,0.144c3.117,1.092 5.881,2.96 8.059,5.474l0.364,0.42 2.541,-2.178 -0.364,-0.42 -0.325,-0.368c-2.846,-3.148 -6.46,-5.371 -10.514,-6.508z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_notification.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"50dp\"\n    android:height=\"50dp\"\n    android:viewportWidth=\"50\"\n    android:viewportHeight=\"50\">\n  <path\n      android:pathData=\"M25,25m-25,0a25,25 0,1 1,50 0a25,25 0,1 1,-50 0\"\n      android:fillColor=\"#000\"\n      android:fillAlpha=\"0.5\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M25,35c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.9,2 2,2zM31,29v-5c0,-3.07 -1.63,-5.64 -4.5,-6.32L26.5,17c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C20.64,18.36 19,20.92 19,24v5l-2,2v1h16v-1l-2,-2zM29,30L21,30v-6c0,-2.48 1.51,-4.5 4,-4.5s4,2.02 4,4.5v6z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_notification_filled.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,22.5c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16.5v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4.5c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.86 6,8.42 6,11.5v5l-2,2v1h16v-1l-2,-2z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_offline.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM6.847,6.667L6,7.513 7.833,9.34C5.707,9.433 4,11.18 4,13.333c0,2.207 1.793,4 4,4h7.82l1.333,1.334 0.847,-0.847L6.847,6.667zM12,6.667c-0.987,0 -1.9,0.286 -2.673,0.78l0.973,0.973C10.807,8.153 11.387,8 12,8c2.027,0 3.667,1.64 3.667,3.667L15.667,12h1c1.106,0 2,0.893 2,2 0,0.753 -0.427,1.407 -1.04,1.747l0.966,0.966C19.44,16.107 20,15.12 20,14c0,-1.76 -1.367,-3.187 -3.1,-3.307 -0.453,-2.3 -2.473,-4.026 -4.9,-4.026zM9.153,10.667L14.487,16L8,16c-1.473,0 -2.667,-1.193 -2.667,-2.667 0,-1.473 1.194,-2.666 2.667,-2.666h1.153z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_offline_large.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"72dp\"\n\tandroid:height=\"72dp\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM6.847,6.667L6,7.513 7.833,9.34C5.707,9.433 4,11.18 4,13.333c0,2.207 1.793,4 4,4h7.82l1.333,1.334 0.847,-0.847L6.847,6.667zM12,6.667c-0.987,0 -1.9,0.286 -2.673,0.78l0.973,0.973C10.807,8.153 11.387,8 12,8c2.027,0 3.667,1.64 3.667,3.667L15.667,12h1c1.106,0 2,0.893 2,2 0,0.753 -0.427,1.407 -1.04,1.747l0.966,0.966C19.44,16.107 20,15.12 20,14c0,-1.76 -1.367,-3.187 -3.1,-3.307 -0.453,-2.3 -2.473,-4.026 -4.9,-4.026zM9.153,10.667L14.487,16L8,16c-1.473,0 -2.667,-1.193 -2.667,-2.667 0,-1.473 1.194,-2.666 2.667,-2.666h1.153z\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_offline_orange.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM6.847,6.667L6,7.513 7.833,9.34C5.707,9.433 4,11.18 4,13.333c0,2.207 1.793,4 4,4h7.82l1.333,1.334 0.847,-0.847L6.847,6.667zM12,6.667c-0.987,0 -1.9,0.286 -2.673,0.78l0.973,0.973C10.807,8.153 11.387,8 12,8c2.027,0 3.667,1.64 3.667,3.667L15.667,12h1c1.106,0 2,0.893 2,2 0,0.753 -0.427,1.407 -1.04,1.747l0.966,0.966C19.44,16.107 20,15.12 20,14c0,-1.76 -1.367,-3.187 -3.1,-3.307 -0.453,-2.3 -2.473,-4.026 -4.9,-4.026zM9.153,10.667L14.487,16L8,16c-1.473,0 -2.667,-1.193 -2.667,-2.667 0,-1.473 1.194,-2.666 2.667,-2.666h1.153z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_one.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,2C6.477,2 2,6.477 2,12s4.477,10 10,10 10,-4.477 10,-10S17.523,2 12,2zM12.685,5.869c0.677,0 1.054,0.528 1.055,1.212v9.72c0,0.853 -0.613,1.33 -1.29,1.33 -0.678,0 -1.29,-0.476 -1.29,-1.33L11.16,8.444h-0.71c-0.757,0 -1.07,-0.707 -1.07,-1.288 0,-0.599 0.393,-1.288 1.07,-1.288z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_phone.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <group>\n    <clip-path\n        android:pathData=\"M332,-400v812L-43,412L-43,-400h375z\"/>\n    <path\n        android:pathData=\"M5.743,2h14v20h-14v-20z\"\n        android:strokeLineJoin=\"round\"\n        android:strokeWidth=\"2\"\n        android:fillColor=\"#00000000\"\n        android:strokeColor=\"#1E3788\"/>\n    <group>\n      <clip-path\n          android:pathData=\"M12.743,16a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3z\"/>\n      <path\n          android:pathData=\"M11.243,16h3v3L11.243,19L11.243,16z\"\n          android:fillColor=\"#1E3788\"/>\n    </group>\n  </group>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_plus.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,5.964c0.77,0 1.393,0.624 1.393,1.393v3.25h3.25a1.393,1.393 0,1 1,0 2.786h-3.25v3.25a1.393,1.393 0,1 1,-2.786 0v-3.25h-3.25a1.393,1.393 0,1 1,0 -2.786h3.25v-3.25c0,-0.77 0.624,-1.393 1.393,-1.393z\"\n      android:fillColor=\"@color/grey\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_plus_green.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,5.964c0.77,0 1.393,0.624 1.393,1.393v3.25h3.25a1.393,1.393 0,1 1,0 2.786h-3.25v3.25a1.393,1.393 0,1 1,-2.786 0v-3.25h-3.25a1.393,1.393 0,1 1,0 -2.786h3.25v-3.25c0,-0.77 0.624,-1.393 1.393,-1.393z\"\n      android:fillColor=\"@color/green\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_privacy.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M13.75,0c2.278,0 4.138,1.793 4.245,4.044L18,4.25v3.058l1.65,0.368c1.314,0.292 2.264,1.418 2.345,2.746l0.005,0.182v9.792c0,1.345 -0.894,2.517 -2.172,2.883l-0.177,0.045 -2.72,0.605c-0.142,0.031 -0.287,0.052 -0.432,0.063L16.28,24L7.72,24c-0.146,0 -0.292,-0.01 -0.436,-0.032l-0.215,-0.04 -2.72,-0.604c-1.313,-0.292 -2.263,-1.418 -2.344,-2.746L2,20.396v-9.792c0,-1.345 0.894,-2.517 2.172,-2.883l0.177,-0.045L6,7.308L6,4.25C6,1.972 7.793,0.112 10.044,0.005L10.25,0h3.5zM16.28,9L7.72,9l-0.11,0.006 -0.107,0.018 -2.72,0.604c-0.42,0.093 -0.728,0.442 -0.776,0.86L4,10.605v9.792c0,0.43 0.274,0.806 0.672,0.944l0.111,0.032 2.72,0.604 0.107,0.018 0.11,0.006h8.56l0.11,-0.006 0.107,-0.018 2.72,-0.604c0.42,-0.093 0.728,-0.442 0.776,-0.86l0.007,-0.116v-9.792c0,-0.43 -0.274,-0.806 -0.672,-0.944l-0.111,-0.032 -2.72,-0.604 -0.107,-0.018L16.28,9zM12,12c1.105,0 2,0.895 2,2 0,0.74 -0.402,1.386 -0.999,1.732L13,18h-2v-2.268c-0.598,-0.345 -1,-0.992 -1,-1.732 0,-1.105 0.895,-2 2,-2zM13.75,2h-3.5c-1.19,0 -2.166,0.925 -2.245,2.096L8,4.25L8,7h8L16,4.25c0,-1.137 -0.843,-2.077 -1.938,-2.229l-0.158,-0.016L13.75,2z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_privacy_grey.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M13.75,0c2.278,0 4.138,1.793 4.245,4.044L18,4.25v3.058l1.65,0.368c1.314,0.292 2.264,1.418 2.345,2.746l0.005,0.182v9.792c0,1.345 -0.894,2.517 -2.172,2.883l-0.177,0.045 -2.72,0.605c-0.142,0.031 -0.287,0.052 -0.432,0.063L16.28,24L7.72,24c-0.146,0 -0.292,-0.01 -0.436,-0.032l-0.215,-0.04 -2.72,-0.604c-1.313,-0.292 -2.263,-1.418 -2.344,-2.746L2,20.396v-9.792c0,-1.345 0.894,-2.517 2.172,-2.883l0.177,-0.045L6,7.308L6,4.25C6,1.972 7.793,0.112 10.044,0.005L10.25,0h3.5zM16.28,9L7.72,9l-0.11,0.006 -0.107,0.018 -2.72,0.604c-0.42,0.093 -0.728,0.442 -0.776,0.86L4,10.605v9.792c0,0.43 0.274,0.806 0.672,0.944l0.111,0.032 2.72,0.604 0.107,0.018 0.11,0.006h8.56l0.11,-0.006 0.107,-0.018 2.72,-0.604c0.42,-0.093 0.728,-0.442 0.776,-0.86l0.007,-0.116v-9.792c0,-0.43 -0.274,-0.806 -0.672,-0.944l-0.111,-0.032 -2.72,-0.604 -0.107,-0.018L16.28,9zM12,12c1.105,0 2,0.895 2,2 0,0.74 -0.402,1.386 -0.999,1.732L13,18h-2v-2.268c-0.598,-0.345 -1,-0.992 -1,-1.732 0,-1.105 0.895,-2 2,-2zM13.75,2h-3.5c-1.19,0 -2.166,0.925 -2.245,2.096L8,4.25L8,7h8L16,4.25c0,-1.137 -0.843,-2.077 -1.938,-2.229l-0.158,-0.016L13.75,2z\"\n      android:fillColor=\"@color/grey\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_process_error.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,16c-0.552,0 -1,0.448 -1,1s0.448,1 1,1 1,-0.448 1,-1 -0.448,-1 -1,-1zM11.971,6c-0.89,0 -1.732,0.33 -2.377,0.914 -0.351,0.318 -0.635,0.704 -0.833,1.134 -0.104,0.225 -0.184,0.461 -0.238,0.705 -0.118,0.54 0.223,1.073 0.762,1.192 0.54,0.119 1.073,-0.222 1.192,-0.762 0.022,-0.103 0.056,-0.203 0.1,-0.299 0.085,-0.184 0.207,-0.35 0.359,-0.487 0.28,-0.254 0.645,-0.397 1.035,-0.397 0.847,0 1.529,0.676 1.529,1.504 0,0.485 -0.643,1.249 -2.069,2.164 -0.25,0.16 -0.415,0.423 -0.452,0.715l-0.008,0.126L10.971,14l0.007,0.117c0.053,0.459 0.417,0.823 0.876,0.876l0.117,0.007 0.117,-0.007c0.459,-0.053 0.823,-0.417 0.876,-0.876l0.007,-0.117 -0.001,-0.957 0.267,-0.188c1.478,-1.083 2.263,-2.172 2.263,-3.35C15.5,7.566 13.918,6 11.971,6z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_process_error_grey.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,16c-0.552,0 -1,0.448 -1,1s0.448,1 1,1 1,-0.448 1,-1 -0.448,-1 -1,-1zM11.971,6c-0.89,0 -1.732,0.33 -2.377,0.914 -0.351,0.318 -0.635,0.704 -0.833,1.134 -0.104,0.225 -0.184,0.461 -0.238,0.705 -0.118,0.54 0.223,1.073 0.762,1.192 0.54,0.119 1.073,-0.222 1.192,-0.762 0.022,-0.103 0.056,-0.203 0.1,-0.299 0.085,-0.184 0.207,-0.35 0.359,-0.487 0.28,-0.254 0.645,-0.397 1.035,-0.397 0.847,0 1.529,0.676 1.529,1.504 0,0.485 -0.643,1.249 -2.069,2.164 -0.25,0.16 -0.415,0.423 -0.452,0.715l-0.008,0.126L10.971,14l0.007,0.117c0.053,0.459 0.417,0.823 0.876,0.876l0.117,0.007 0.117,-0.007c0.459,-0.053 0.823,-0.417 0.876,-0.876l0.007,-0.117 -0.001,-0.957 0.267,-0.188c1.478,-1.083 2.263,-2.172 2.263,-3.35C15.5,7.566 13.918,6 11.971,6z\"\n      android:fillColor=\"@color/grey\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_process_error_large.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28S51.464,64 36,64 8,51.464 8,36 20.536,8 36,8zM36,46c-1.38,0 -2.5,1.12 -2.5,2.5S34.62,51 36,51s2.5,-1.12 2.5,-2.5S37.38,46 36,46zM35.93,21c-2.043,0 -3.97,0.767 -5.447,2.124 -0.801,0.735 -1.448,1.626 -1.899,2.62 -0.236,0.519 -0.417,1.063 -0.538,1.625 -0.235,1.079 0.45,2.144 1.53,2.378 1.03,0.224 2.047,-0.39 2.341,-1.385l0.109,-0.425c0.054,-0.185 0.12,-0.365 0.2,-0.54 0.228,-0.502 0.557,-0.954 0.963,-1.328C33.935,25.384 34.9,25 35.93,25c2.246,0 4.07,1.833 4.07,4.098 0,1.38 -1.628,3.343 -5.16,5.642 -0.52,0.338 -0.851,0.896 -0.903,1.508l-0.007,0.168v3.63l0.006,0.15c0.072,0.983 0.856,1.768 1.838,1.844l0.156,0.006 0.15,-0.005c0.983,-0.073 1.768,-0.856 1.844,-1.838l0.006,-0.157v-2.565l0.48,-0.338C42.07,34.5 44,31.877 44,29.098 44,24.628 40.39,21 35.93,21z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_qr_certificate_light.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M6.857,13a5,5 0,1 1,0 10,5 5,0 0,1 0,-10zM22.357,20a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM15.357,20a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM6.857,15a3,3 0,1 0,0 6,3 3,0 0,0 0,-6zM6.857,16.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM22.357,16.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM18.857,16.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM18.857,13a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM15.357,13a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM6.857,1a5,5 0,1 1,0 10,5 5,0 0,1 0,-10zM18.857,1a5,5 0,1 1,0 10,5 5,0 0,1 0,-10zM6.857,3a3,3 0,1 0,0 6,3 3,0 0,0 0,-6zM18.857,3a3,3 0,1 0,0 6,3 3,0 0,0 0,-6zM6.857,4.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM18.857,4.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_qr_certificate_light_no.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"m3.69,0.836 l0.114,0.103 20,20a1.5,1.5 0,0 1,-2.008 2.225l-0.114,-0.103L9.056,10.434a5,5 0,0 1,-6.747 -6.747l-0.627,-0.626A1.5,1.5 0,0 1,3.69 0.836zM6.743,13a5,5 0,1 1,0 10,5 5,0 0,1 0,-10zM15.243,20a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM6.743,15a3,3 0,1 0,0 6,3 3,0 0,0 0,-6zM6.743,16.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM18.743,1a5,5 0,1 1,-2.623 9.257l-1.634,-1.633A5,5 0,0 1,18.743 1zM3.743,6A3,3 0,0 0,7.52 8.898L3.844,5.223A3.004,3.004 0,0 0,3.743 6zM18.743,3a3,3 0,1 0,0 6,3 3,0 0,0 0,-6zM18.743,4.5a1.5,1.5 0,1 1,0 3,1.5 1.5,0 0,1 0,-3zM6.865,1.002 L6.743,1a5,5 0,0 1,4.998 4.877L6.865,1.002z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_question_outline.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,3a9,9 0,1 0,0 18,9 9,0 0,0 0,-18zM12,16a1,1 0,1 1,0 2,1 1,0 0,1 0,-2zM11.971,6C13.918,6 15.5,7.567 15.5,9.504c0,1.18 -0.785,2.268 -2.263,3.35l-0.267,0.189 0.001,0.957a1,1 0,0 1,-0.883 0.993L11.97,15a1,1 0,0 1,-0.993 -0.883L10.97,14v-1.49a1,1 0,0 1,0.46 -0.842c1.426,-0.915 2.069,-1.679 2.069,-2.164C13.5,8.676 12.818,8 11.971,8a1.534,1.534 0,0 0,-1.394 0.884,1.469 1.469,0 0,0 -0.1,0.3 1,1 0,0 1,-1.954 -0.43,3.512 3.512,0 0,1 1.07,-1.839A3.533,3.533 0,0 1,11.972 6z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_retry.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,5V1L7,6l5,5V7c3.31,0 6,2.69 6,6s-2.69,6 -6,6 -6,-2.69 -6,-6H4c0,4.42 3.58,8 8,8s8,-3.58 8,-8 -3.58,-8 -8,-8z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_scanner_alert.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"25dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"25\">\n  <path\n      android:pathData=\"M12,1.5C18.0751,1.5 23,6.4249 23,12.5C23,18.5751 18.0751,23.5 12,23.5C5.9249,23.5 1,18.5751 1,12.5C1,6.4249 5.9249,1.5 12,1.5ZM12.1165,14.4304C11.7259,14.4304 11.3805,14.5742 11.0804,14.8619C10.7804,15.1495 10.6286,15.4957 10.625,15.9006C10.6286,16.1776 10.7005,16.4288 10.8407,16.6543C10.981,16.8798 11.163,17.0591 11.3867,17.1923C11.6104,17.3255 11.8537,17.392 12.1165,17.392C12.5284,17.392 12.8809,17.2473 13.1738,16.9579C13.4668,16.6685 13.6115,16.3161 13.608,15.9006C13.6115,15.4957 13.4668,15.1495 13.1738,14.8619C12.8809,14.5742 12.5284,14.4304 12.1165,14.4304ZM13.608,6.3125L10.625,6.3125L10.902,13.8125L13.331,13.8125L13.608,6.3125Z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#D81F5B\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_scanner_alert_white.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12.116,13.93c-0.39,0 -0.735,0.144 -1.036,0.432 -0.3,0.288 -0.451,0.634 -0.455,1.039 0.004,0.277 0.075,0.528 0.216,0.753 0.14,0.226 0.322,0.405 0.546,0.538 0.223,0.133 0.467,0.2 0.73,0.2 0.411,0 0.764,-0.145 1.057,-0.434 0.293,-0.29 0.438,-0.642 0.434,-1.057 0.004,-0.405 -0.141,-0.751 -0.434,-1.04 -0.293,-0.287 -0.646,-0.43 -1.058,-0.43zM13.608,5.813h-2.983l0.277,7.5h2.429l0.277,-7.5z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_settings.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,14.52c-1.369,0 -2.483,-1.13 -2.483,-2.52 0,-1.39 1.114,-2.52 2.483,-2.52s2.483,1.13 2.483,2.52c0,1.39 -1.114,2.52 -2.483,2.52zM12,7.76c-2.302,0 -4.175,1.902 -4.175,4.24S9.698,16.24 12,16.24c2.302,0 4.175,-1.902 4.175,-4.24S14.302,7.76 12,7.76zM19.026,18.206l-1.093,-0.416c-1.748,-0.665 -3.655,0.457 -3.961,2.322l-0.192,1.17h-3.56l-0.192,-1.17c-0.306,-1.87 -2.216,-2.986 -3.96,-2.322l-1.094,0.416 -1.78,-3.13 0.902,-0.754c1.44,-1.204 1.437,-3.442 0,-4.644l-0.902,-0.754 1.78,-3.13 1.093,0.416c1.748,0.665 3.655,-0.457 3.961,-2.322l0.192,-1.17h3.56l0.192,1.17c0.306,1.87 2.217,2.986 3.96,2.322l1.094,-0.416 1.78,3.13 -0.902,0.754c-1.44,1.204 -1.438,3.442 0,4.644l0.902,0.754 -1.78,3.13zM21.882,13.749l-0.902,-0.754c-0.617,-0.516 -0.616,-1.475 0,-1.99l0.902,-0.754c0.641,-0.536 0.805,-1.455 0.39,-2.186l-1.78,-3.13c-0.416,-0.73 -1.282,-1.046 -2.06,-0.75L17.34,4.6c-0.749,0.284 -1.566,-0.196 -1.698,-0.996l-0.192,-1.169C15.313,1.604 14.611,1 13.78,1L10.22,1c-0.83,0 -1.533,0.604 -1.67,1.436l-0.191,1.17c-0.132,0.8 -0.95,1.279 -1.698,0.995l-1.093,-0.416c-0.778,-0.296 -1.644,0.02 -2.06,0.75l-1.78,3.13c-0.415,0.73 -0.251,1.65 0.39,2.186l0.902,0.754c0.617,0.516 0.616,1.475 0,1.99l-0.902,0.754c-0.641,0.536 -0.805,1.455 -0.39,2.186l1.78,3.13c0.416,0.73 1.282,1.046 2.06,0.75L6.66,19.4c0.749,-0.285 1.566,0.196 1.698,0.995l0.192,1.17c0.136,0.832 0.838,1.436 1.67,1.436h3.559c0.83,0 1.533,-0.604 1.67,-1.436l0.191,-1.17c0.132,-0.8 0.95,-1.28 1.698,-0.995l1.093,0.416c0.778,0.296 1.644,-0.02 2.06,-0.75l1.78,-3.13c0.415,-0.73 0.251,-1.65 -0.39,-2.186z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_t.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"25dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"25\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M6.743,8.05v-2.8h12v2.8h-4.309V19.5h-3.383V8.05z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_three.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,2C6.477,2 2,6.477 2,12s4.477,10 10,10 10,-4.477 10,-10S17.523,2 12,2zM12.325,5.887c2.298,0 3.4,1.747 3.4,3.043 0,1.047 -0.43,1.961 -1.308,2.542 1.148,0.55 1.946,1.663 1.946,2.975 0,1.995 -1.756,3.674 -4.022,3.674 -2.361,0 -3.83,-1.811 -3.83,-3.125 0,-0.648 0.654,-1.114 1.229,-1.114 1.085,0 0.83,1.945 2.633,1.945 0.83,0 1.5,-0.665 1.5,-1.546 0,-2.326 -2.713,-0.615 -2.713,-2.576 0,-1.745 2.266,-0.565 2.266,-2.41 0,-0.631 -0.43,-1.113 -1.149,-1.113 -1.515,0 -1.308,1.628 -2.393,1.628 -0.654,0 -1.038,-0.614 -1.038,-1.23 0,-1.295 1.708,-2.693 3.48,-2.693z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_timeerror.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11a1,1 0,0 1,0 -2,9 9,0 1,0 -9,-9 1,1 0,0 1,-2 0C1,5.925 5.925,1 12,1zM2.293,15.293a1,1 0,0 1,1.414 0L5.5,17.085l1.793,-1.792a1,1 0,0 1,1.497 1.32l-0.083,0.094L6.915,18.5l1.792,1.793 0.083,0.094a1,1 0,0 1,-1.497 1.32L5.5,19.915l-1.793,1.792a1,1 0,0 1,-1.497 -1.32l0.083,-0.094L4.085,18.5l-1.792,-1.793 -0.083,-0.094a1,1 0,0 1,0.083 -1.32zM12,5.12a1,1 0,0 1,0.993 0.883l0.007,0.117v5.964l2.396,2.397a1,1 0,0 1,0.083 1.32l-0.083,0.094a1,1 0,0 1,-1.32 0.083l-0.094,-0.083L11,12.914V6.121a1,1 0,0 1,1 -1z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_timeerror_large.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"73dp\"\n    android:height=\"73dp\"\n    android:viewportWidth=\"73\"\n    android:viewportHeight=\"73\">\n  <path\n      android:pathData=\"M36.93,8.766c15.463,0 28,12.536 28,28s-12.537,28 -28,28c-15.465,0 -28,-12.536 -28,-28s12.535,-28 28,-28z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M36.93,53.766c9.388,0 17,-7.611 17,-17s-7.612,-17 -17,-17c-9.39,0 -17,7.611 -17,17M21.93,43.266l8.25,8.25M30.18,43.266l-8.25,8.25\"\n      android:strokeWidth=\"3\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M36.93,28.266v8.5l4.306,4.307\"\n      android:strokeWidth=\"3\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_timeerror_orange.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11a1,1 0,0 1,0 -2,9 9,0 1,0 -9,-9 1,1 0,0 1,-2 0C1,5.925 5.925,1 12,1zM2.293,15.293a1,1 0,0 1,1.414 0L5.5,17.085l1.793,-1.792a1,1 0,0 1,1.497 1.32l-0.083,0.094L6.915,18.5l1.792,1.793 0.083,0.094a1,1 0,0 1,-1.497 1.32L5.5,19.915l-1.793,1.792a1,1 0,0 1,-1.497 -1.32l0.083,-0.094L4.085,18.5l-1.792,-1.793 -0.083,-0.094a1,1 0,0 1,0.083 -1.32zM12,5.12a1,1 0,0 1,0.993 0.883l0.007,0.117v5.964l2.396,2.397a1,1 0,0 1,0.083 1.32l-0.083,0.094a1,1 0,0 1,-1.32 0.083l-0.094,-0.083L11,12.914V6.121a1,1 0,0 1,1 -1z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_timelapse.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9 9,-4.03 9,-9 -4.03,-9 -9,-9zM12,5c0.513,0 0.936,0.386 0.993,0.883L13,6v5h5c0.513,0 0.936,0.386 0.993,0.883L19,12c0,0.513 -0.386,0.936 -0.883,0.993L18,13h-7L11,6c0,-0.552 0.448,-1 1,-1z\"\n      android:fillColor=\"#ED6100\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_timelapse_blue.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9 9,-4.03 9,-9 -4.03,-9 -9,-9zM12,5c0.513,0 0.936,0.386 0.993,0.883L13,6v5h5c0.513,0 0.936,0.386 0.993,0.883L19,12c0,0.513 -0.386,0.936 -0.883,0.993L18,13h-7L11,6c0,-0.552 0.448,-1 1,-1z\"\n      android:fillColor=\"#1E3788\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_timelapse_red.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,1c6.075,0 11,4.925 11,11s-4.925,11 -11,11S1,18.075 1,12 5.925,1 12,1zM12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9 9,-4.03 9,-9 -4.03,-9 -9,-9zM12,5c0.513,0 0.936,0.386 0.993,0.883L13,6v5h5c0.513,0 0.936,0.386 0.993,0.883L19,12c0,0.513 -0.386,0.936 -0.883,0.993L18,13h-7L11,6c0,-0.552 0.448,-1 1,-1z\"\n      android:fillColor=\"@color/red\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_travel.xml",
    "content": "<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95a15.65,15.65 0,0 0,-1.38 -3.56A8.03,8.03 0,0 1,18.92 8zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56A7.987,7.987 0,0 1,5.08 16zM8.03,8L5.08,8a7.987,7.987 0,0 1,4.33 -3.56A15.65,15.65 0,0 0,8.03 8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95a8.03,8.03 0,0 1,-4.33 3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_two.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,2C6.477,2 2,6.477 2,12s4.477,10 10,10 10,-4.477 10,-10S17.523,2 12,2zM11.98,5.888c2.218,0 3.84,1.368 3.84,3.512 0,2.348 -2.466,4.432 -4,6.24h3.137c0.792,0 1.404,0.473 1.404,1.25 0,0.776 -0.613,1.223 -1.299,1.223L9.04,18.113c-0.793,0 -1.406,-0.337 -1.406,-1.114 0,-0.354 0.235,-0.659 0.415,-0.861 1.497,-1.672 3.12,-3.192 4.49,-5.049 0.325,-0.44 0.632,-0.963 0.632,-1.57 0,-0.693 -0.56,-1.3 -1.299,-1.3 -2.074,0 -1.135,2.789 -2.867,2.789 -0.866,0 -1.316,-0.573 -1.316,-1.232 0,-2.128 2.074,-3.888 4.292,-3.888z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_zoom_off.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:tint=\"@color/blue\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"@color/blue\"\n\t\tandroid:pathData=\"M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z\" />\n\t<path\n\t\tandroid:fillColor=\"@color/blue\"\n\t\tandroid:pathData=\"M12,10h-2v2H9v-2H7V9h2V7h1v2h2v1z\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_zoom_off_white.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:tint=\"@android:color/white\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"@android:color/white\"\n\t\tandroid:pathData=\"M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z\" />\n\t<path\n\t\tandroid:fillColor=\"@android:color/white\"\n\t\tandroid:pathData=\"M12,10h-2v2H9v-2H7V9h2V7h1v2h2v1z\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_zoom_on.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:tint=\"#FFFFFF\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"@android:color/white\"\n\t\tandroid:pathData=\"M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14zM7,9h5v1L7,10z\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/ic_zoom_on_black.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:tint=\"@color/black\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"@android:color/black\"\n\t\tandroid:pathData=\"M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14zM7,9h5v1L7,10z\" />\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/illu_onboarding_data_protection.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M157.5,100.5m-80.5,0a80.5,80.5 0,1 1,161 0a80.5,80.5 0,1 1,-161 0\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M203.272,56.308L167.886,51 132.5,56.308v45.796c0,15.641 11.35,30.822 33.598,45.7L167.886,149l1.788,-1.196c22.247,-14.878 33.598,-30.059 33.598,-45.7L203.272,56.308z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M135.5,58.779L167.5,54l32,4.779v42.61C199.5,115.593 188.833,129.796 167.5,144 146.167,129.796 135.5,115.593 135.5,101.39L135.5,58.778z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M140.5,62.99L167.5,59l27,3.99v37.505C194.5,112.997 185.5,125.498 167.5,138 149.5,125.498 140.5,112.997 140.5,100.495L140.5,62.99z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M177.5,106c0,-6.627 -3.373,-12 -10,-12s-10,5.373 -10,12l10,2 10,-2z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M167.5,85m-6,0a6,6 0,1 1,12 0a6,6 0,1 1,-12 0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M135.5,99.5C121.969,99.5 111,110.469 111,124S121.969,148.5 135.5,148.5 160,137.531 160,124 149.031,99.5 135.5,99.5z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M135.5,144c11.046,0 20,-8.954 20,-20s-8.954,-20 -20,-20 -20,8.954 -20,20c0,2.712 0.54,5.297 1.517,7.655 0.505,1.218 1.127,2.375 1.851,3.457 0.73,1.09 -2.435,6.105 -1.51,7.03 0.925,0.925 5.94,-2.24 7.03,-1.51 1.082,0.724 2.24,1.346 3.457,1.85 2.358,0.978 4.943,1.518 7.655,1.518z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M135.5,117m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M134.5,120L136.5,120A0.5,0.5 0,0 1,137 120.5L137,131.5A0.5,0.5 0,0 1,136.5 132L134.5,132A0.5,0.5 0,0 1,134 131.5L134,120.5A0.5,0.5 0,0 1,134.5 120z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M132.5,120L136.5,120L136.5,122L132.5,122zM132.5,130L138.5,130L138.5,132L132.5,132z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "common/src/main/res/drawable/line_dashed_grey.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"line\">\n\t<stroke\n\t\tandroid:color=\"@color/grey_light\"\n\t\tandroid:dashWidth=\"4dp\"\n\t\tandroid:dashGap=\"8dp\"\n\t\tandroid:width=\"2dp\"/>\n</shape>"
  },
  {
    "path": "common/src/main/res/drawable/qr_scanner_bottom_left.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\t<item\n\t\tandroid:id=\"@+id/indicator\"\n\t\tandroid:end=\"@dimen/qr_scanner_indicator_stroke_width_inverse\"\n\t\tandroid:top=\"@dimen/qr_scanner_indicator_stroke_width_inverse\">\n\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@android:color/transparent\" />\n\t\t\t<stroke\n\t\t\t\tandroid:width=\"@dimen/qr_scanner_indicator_stroke_width\"\n\t\t\t\tandroid:color=\"@color/white\" />\n\t\t</shape>\n\n\t</item>\n\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/qr_scanner_bottom_right.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\t<item\n\t\tandroid:id=\"@+id/indicator\"\n\t\tandroid:top=\"@dimen/qr_scanner_indicator_stroke_width_inverse\"\n\t\tandroid:start=\"@dimen/qr_scanner_indicator_stroke_width_inverse\">\n\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@android:color/transparent\" />\n\t\t\t<stroke\n\t\t\t\tandroid:width=\"@dimen/qr_scanner_indicator_stroke_width\"\n\t\t\t\tandroid:color=\"@color/white\" />\n\t\t</shape>\n\n\t</item>\n\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/qr_scanner_top_left.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\t<item\n\t\tandroid:id=\"@+id/indicator\"\n\t\tandroid:bottom=\"@dimen/qr_scanner_indicator_stroke_width_inverse\"\n\t\tandroid:end=\"@dimen/qr_scanner_indicator_stroke_width_inverse\">\n\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@android:color/transparent\" />\n\t\t\t<stroke\n\t\t\t\tandroid:width=\"@dimen/qr_scanner_indicator_stroke_width\"\n\t\t\t\tandroid:color=\"@color/white\" />\n\t\t</shape>\n\n\t</item>\n\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/qr_scanner_top_right.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n\t<item\n\t\tandroid:id=\"@+id/indicator\"\n\t\tandroid:bottom=\"@dimen/qr_scanner_indicator_stroke_width_inverse\"\n\t\tandroid:start=\"@dimen/qr_scanner_indicator_stroke_width_inverse\">\n\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@android:color/transparent\" />\n\t\t\t<stroke\n\t\t\t\tandroid:width=\"@dimen/qr_scanner_indicator_stroke_width\"\n\t\t\t\tandroid:color=\"@color/white\" />\n\t\t</shape>\n\n\t</item>\n\n</layer-list>"
  },
  {
    "path": "common/src/main/res/drawable/ripple_rect.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n\n\t<item>\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\"/>\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/ripple_rounded.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"oval\">\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/ripple_rounded_button.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<corners android:radius=\"@dimen/button_radius\"/>\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/ripple_rounded_rect.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet\"/>\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/ripple_rounded_rect_banner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<corners android:radius=\"10dp\"/>\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/ripple_rounded_rect_small.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet_inner\"/>\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "common/src/main/res/drawable/tab_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:drawable=\"@drawable/dot_black\" android:state_selected=\"true\" />\n\t<item android:drawable=\"@drawable/dot_grey\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/drawable/tab_selector_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:drawable=\"@drawable/dot_white\" android:state_selected=\"true\" />\n\t<item android:drawable=\"@drawable/dot_black\" />\n</selector>"
  },
  {
    "path": "common/src/main/res/font/inter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<font-family xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\t<font\n\t\tapp:font=\"@font/inter_light\"\n\t\tapp:fontStyle=\"normal\"\n\t\tapp:fontWeight=\"400\" />\n\t<font\n\t\tapp:font=\"@font/inter_bold\"\n\t\tapp:fontStyle=\"normal\"\n\t\tapp:fontWeight=\"700\" />\n</font-family>"
  },
  {
    "path": "common/src/main/res/layout/activity_onboarding.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\">\n\n\t<androidx.viewpager2.widget.ViewPager2\n\t\tandroid:id=\"@+id/view_pager\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\" />\n\n</FrameLayout>"
  },
  {
    "path": "common/src/main/res/layout/dialog_camera_permission_explanation.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<androidx.cardview.widget.CardView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tstyle=\"@style/CovidCertificate.Card\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_margin=\"@dimen/spacing_medium\"\n\tandroid:clickable=\"false\"\n\tandroid:focusable=\"false\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ImageButton\n\t\t\tandroid:id=\"@+id/camera_permission_dialog_close_button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"end\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_small\"\n\t\t\tandroid:background=\"@drawable/ripple_rounded\"\n\t\t\tandroid:clickable=\"true\"\n\t\t\tandroid:focusable=\"true\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\tapp:srcCompat=\"@drawable/ic_close\"\n\t\t\tapp:tint=\"@color/black\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/camera_permission_dialog_text\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_large\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:text=\"@string/camera_permission_dialog_text\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/camera_permission_dialog_ok_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless.Black.NoCaps\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"center\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tandroid:background=\"?selectableItemBackground\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:padding=\"@dimen/spacing_small\"\n\t\t\tandroid:text=\"@string/camera_permission_dialog_action\" />\n\n\t</LinearLayout>\n\n</androidx.cardview.widget.CardView>"
  },
  {
    "path": "common/src/main/res/layout/dialog_fragment_info_box.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ScrollView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:overScrollMode=\"never\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"center_horizontal\"\n\t\tandroid:orientation=\"vertical\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_large\"\n\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/info_dialog_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\ttools:text=\"Neue Version verfügbar\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/info_dialog_text\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:hyphenationFrequency=\"normal\"\n\t\t\ttools:text=\"Aktualisieren Sie jetzt die App, um von den neusten Funktionen zu profitieren.\" />\n\n\t\t<Button\n\t\t\tandroid:id=\"@+id/info_dialog_url_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium_large\"\n\t\t\ttools:text=\"Aktualisieren\" />\n\n\t\t<Button\n\t\t\tandroid:id=\"@+id/info_dialog_close_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\ttools:text=\"Schliessen\" />\n\n\t</LinearLayout>\n</ScrollView>"
  },
  {
    "path": "common/src/main/res/layout/fragment_debug.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/background_light\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"Debug\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<CheckBox\n\t\t\tandroid:id=\"@+id/button_toggle_certificate_pinning\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_margin=\"@dimen/spacing_small\"\n\t\t\tandroid:text=\"Certificate Pinning enabled (needs a restart)\" />\n\n\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\tandroid:id=\"@+id/certificates_recycler_view\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:layoutManager=\"androidx.recyclerview.widget.LinearLayoutManager\"\n\t\t\ttools:listitem=\"@layout/item_debug_certificate_list\" />\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "common/src/main/res/layout/fragment_faq.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<ProgressBar\n\t\tandroid:id=\"@+id/faq_loading_view\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"center\"/>\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/certificates_overview_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:title=\"@string/verifier_support_header\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\tandroid:id=\"@+id/faq_recycler_view\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\ttools:listitem=\"@layout/item_faq_question\"/>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "common/src/main/res/layout/fragment_html.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/html_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\"\n\t\t\ttools:title=\"@string/impressum_title\" />\n\n\t\t<WebView\n\t\t\tandroid:id=\"@+id/html_webview\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/html_toolbar\" />\n\n\t\t<ProgressBar\n\t\t\tandroid:id=\"@+id/loading_spinner\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintLeft_toLeftOf=\"parent\"\n\t\t\tapp:layout_constraintRight_toRightOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/html_toolbar\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "common/src/main/res/layout/fragment_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/settings_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\"\n\t\t\tapp:title=\"@string/settings_title\" />\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/language_title\" />\n\n\t\t\t\t<RadioGroup\n\t\t\t\t\tandroid:id=\"@+id/language_list\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\tandroid:saveEnabled=\"false\">\n\n\t\t\t\t\t<!-- inflated from @layout/item_language_option -->\n\n\t\t\t\t</RadioGroup>\n\n\t\t\t</LinearLayout>\n\n\t\t</ScrollView>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "common/src/main/res/layout/item_error_status.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<androidx.cardview.widget.CardView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tstyle=\"@style/CovidCertificate.Card.Flat\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"center_horizontal\"\n\t\tandroid:orientation=\"vertical\"\n\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/error_status_image\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:srcCompat=\"@drawable/ic_error_triangle\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/error_status_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Error\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:paddingTop=\"@dimen/spacing_small\"\n\t\t\tandroid:paddingBottom=\"@dimen/spacing_small\"\n\t\t\ttools:text=\"Netzwerk Fehler\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/error_status_text\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_small\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\ttools:text=\"Überprüfen Sie Ihre Internet Verbindung\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/error_status_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless.Black.NoCaps\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"?selectableItemBackground\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:padding=\"@dimen/spacing_small\"\n\t\t\tandroid:visibility=\"visible\"\n\t\t\ttools:text=\"Einstellungen ändern\" />\n\n\t</LinearLayout>\n\n</androidx.cardview.widget.CardView>"
  },
  {
    "path": "common/src/main/res/layout/item_faq_header.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:paddingTop=\"@dimen/spacing_medium_large\"\n\tandroid:paddingBottom=\"@dimen/spacing_very_large\"\n\tandroid:paddingHorizontal=\"@dimen/spacing_very_large\"\n\tandroid:background=\"@color/white\"\n\tandroid:orientation=\"vertical\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/item_faq_header_illu\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tandroid:scaleType=\"fitCenter\"\n\t\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\t\ttools:src=\"@drawable/ic_faq_image\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_faq_header_title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:text=\"@string/wallet_faq_title1\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_faq_header_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\ttools:text=\"@string/wallet_faq_text1\" />\n\n</LinearLayout>"
  },
  {
    "path": "common/src/main/res/layout/item_faq_intro_section.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\tandroid:layout_marginVertical=\"@dimen/spacing_medium_large\"\n\tandroid:orientation=\"horizontal\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/faq_intro_section_icon\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:src=\"@drawable/ic_one\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/faq_intro_section_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\ttools:text=\"@tools:sample/lorem/random\" />\n\n</LinearLayout>"
  },
  {
    "path": "common/src/main/res/layout/item_faq_question.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_medium_large\"\n\tandroid:background=\"@drawable/bg_rect_rounded_small_blue_ripple\"\n\tapp:backgroundTint=\"@color/blueish\"\n\tandroid:orientation=\"vertical\"\n\tandroid:paddingVertical=\"@dimen/spacing_medium_small\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/item_faq_question_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized.Blue\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_weight=\"1\"\n\t\t\ttools:text=\"@string/wallet_faq_questions_question_1\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/item_faq_question_chevron\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:srcCompat=\"@drawable/ic_arrow_expand\"\n\t\t\ttools:src=\"@drawable/ic_arrow_contract\" />\n\n\t</LinearLayout>\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_faq_question_answer\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\ttools:text=\"@string/wallet_faq_questions_answer_1\" />\n\n\t<LinearLayout\n\t\tandroid:id=\"@+id/item_faq_question_link\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\tandroid:orientation=\"horizontal\"\n\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\tandroid:paddingStart=\"@dimen/spacing_very_small\"\n\t\tandroid:paddingEnd=\"@dimen/spacing_medium_small\">\n\n\t\t<ImageView\n\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/item_faq_question_link_label\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"center_vertical\"\n\t\t\tandroid:layout_marginStart=\"@dimen/spacing_very_small\"\n\t\t\tandroid:text=\"@string/wallet_scanner_howitworks_external_link_title\" />\n\n\t</LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "common/src/main/res/layout/item_header.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:orientation=\"vertical\">\n\n\t<FrameLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"bottom\"\n\t\tandroid:paddingTop=\"@dimen/spacing_large\"\n\t\tandroid:paddingBottom=\"@dimen/spacing_very_small\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_small\"\n\t\tandroid:background=\"@color/white\">\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/schwiizerchruez\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"center\"\n\t\t\tapp:srcCompat=\"@drawable/ic_bundwappen_big\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/header_impressum\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"end|center_vertical\"\n\t\t\tandroid:background=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\tapp:srcCompat=\"@drawable/ic_info_outline\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/header_notification\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"start|center_vertical\"\n\t\t\tandroid:background=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_tiny_small\"\n\t\t\tapp:srcCompat=\"@drawable/ic_notification\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\ttools:visibility=\"visible\" />\n\t</FrameLayout>\n\n\t<ImageView\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:scaleType=\"fitXY\"\n\t\tapp:srcCompat=\"@drawable/ic_header_slim\" />\n\n</LinearLayout>"
  },
  {
    "path": "common/src/main/res/layout/item_language_option.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<RadioButton xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:id=\"@+id/radiobutton\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\tandroid:layout_marginVertical=\"2dp\"\n\tandroid:background=\"@drawable/bg_rect_rounded_small_checkable\"\n\tandroid:button=\"@null\"\n\tandroid:drawableEnd=\"@drawable/btn_radio_checkable\"\n\tandroid:drawablePadding=\"40dp\"\n\tandroid:padding=\"@dimen/spacing_medium_large\"\n\tandroid:saveEnabled=\"false\"\n\tandroid:textAppearance=\"@style/CovidCertificate.Text\"\n\tandroid:textColor=\"@color/text_radio_checkable\"\n\ttools:checked=\"true\"\n\ttools:text=\"English\" />\n"
  },
  {
    "path": "common/src/main/res/menu/imprint.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n\t<item\n\t\tandroid:id=\"@+id/menu_settings\"\n\t\tandroid:icon=\"@drawable/ic_settings\"\n\t\tandroid:iconTint=\"@color/grey\"\n\t\tandroid:title=\"@string/settings_title\"\n\t\tapp:showAsAction=\"always\" />\n\n</menu>"
  },
  {
    "path": "common/src/main/res/values/attrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<resources>\n\t<declare-styleable name=\"WindowInsetsLayout\">\n\t\t<!-- On which edges to apply the system window insets -->\n\t\t<attr name=\"applyWindowInsets\">\n\t\t\t<flag name=\"none\" value=\"0x0\" />\n\t\t\t<flag name=\"all\" value=\"0xF\" />\n\t\t\t<flag name=\"left\" value=\"0x1\" />\n\t\t\t<flag name=\"top\" value=\"0x2\" />\n\t\t\t<flag name=\"right\" value=\"0x4\" />\n\t\t\t<flag name=\"bottom\" value=\"0x8\" />\n\t\t</attr>\n\t</declare-styleable>\n</resources>"
  },
  {
    "path": "common/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<resources>\n\t<color name=\"bundesrot\">#ff0000</color>\n\n\t<color name=\"black\">#000000</color>\n\t<color name=\"black_60\">#99000000</color>\n\t<color name=\"black_50\">#80000000</color>\n\t<color name=\"black_10\">#1A000000</color>\n\t<color name=\"grey\">#757575</color>\n\t<color name=\"grey_light\">#DBDBDB</color>\n\t<color name=\"white\">#FFFFFFFF</color>\n\t<color name=\"white_50\">#80FFFFFF</color>\n\n\t<color name=\"red_error\">#e20008</color>\n\t<color name=\"red_error_qr_verifier\">#ff448d</color>\n\t<color name=\"red_error_qr_wallet\">#ff0000</color>\n\n\t<color name=\"blue\">#243784</color>\n\t<color name=\"blue_dark\">#273277</color>\n\t<color name=\"green\">#009e89</color>\n\t<color name=\"orange\">#ed6100</color>\n\t<color name=\"red\">#d81f5b</color>\n\t<color name=\"yellow\">#ffde27</color>\n\n\t<color name=\"greyish\">#ececec</color>\n\t<color name=\"blueish\">#eff5f9</color>\n\t<color name=\"greenish\">#def3f0</color>\n\t<color name=\"orangeish\">#fdebde</color>\n\t<color name=\"redish\">#fae2ea</color>\n\n\t<color name=\"background_light\">#f4f5f9</color>\n</resources>"
  },
  {
    "path": "common/src/main/res/values/dimens.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<resources>\n\t<dimen name=\"spacing_tiny_small\">2dp</dimen>\n\t<dimen name=\"spacing_very_small\">5dp</dimen>\n\t<dimen name=\"spacing_small\">8dp</dimen>\n\t<dimen name=\"spacing_medium_small\">10dp</dimen>\n\t<dimen name=\"spacing_medium\">12dp</dimen>\n\t<dimen name=\"spacing_medium_large\">15dp</dimen>\n\t<dimen name=\"spacing_large\">20dp</dimen>\n\t<dimen name=\"spacing_larger\">25dp</dimen>\n\t<dimen name=\"spacing_very_large\">30dp</dimen>\n\t<dimen name=\"spacing_very_very_large\">35dp</dimen>\n\t<dimen name=\"spacing_huge\">40dp</dimen>\n\t<dimen name=\"spacing_huger\">50dp</dimen>\n\t<dimen name=\"spacing_enormous\">100dp</dimen>\n\n\t<dimen name=\"text_size_small\">12sp</dimen>\n\t<dimen name=\"text_size_type_bubble\">13sp</dimen>\n\t<dimen name=\"text_size_normal\">16sp</dimen>\n\t<dimen name=\"text_size_emphasize\">19sp</dimen>\n\t<dimen name=\"text_size_large\">26sp</dimen>\n\t<dimen name=\"text_size_very_large\">32sp</dimen>\n\n\t<dimen name=\"text_line_height_bubble\">18sp</dimen>\n\t<dimen name=\"text_line_height_normal\">22sp</dimen>\n\t<dimen name=\"text_line_height_large\">28sp</dimen>\n\n\t<dimen name=\"toolbar_elevation\">3dp</dimen>\n\t<dimen name=\"default_elevation\">10dp</dimen>\n\t<dimen name=\"floating_button_height\">50dp</dimen>\n\t<dimen name=\"floating_button_small_height\">40dp</dimen>\n\t<dimen name=\"floating_button_elevation\">10dp</dimen>\n\t<dimen name=\"button_height\">56dp</dimen>\n\t<dimen name=\"button_radius\">28dp</dimen>\n\n\t<dimen name=\"corner_radius_very_small\">4dp</dimen>\n\t<dimen name=\"corner_radius_small\">9dp</dimen>\n\t<dimen name=\"corner_radius_sheet\">20dp</dimen>\n\t<dimen name=\"corner_radius_sheet_inner\">11dp</dimen>\n\n\t<dimen name=\"card_cutout_radius\">10dp</dimen>\n\n\t<dimen name=\"pager_bullet_size\">10dp</dimen>\n\n\t<dimen name=\"icon_size_small\">24dp</dimen>\n\t<dimen name=\"icon_size_large\">72dp</dimen>\n\n\t<dimen name=\"qr_scanner_indicator_size\">50dp</dimen>\n\t<dimen name=\"qr_scanner_indicator_stroke_width\">5dp</dimen>\n\t<dimen name=\"qr_scanner_indicator_stroke_width_inverse\">-6dp</dimen>\n\n\t<dimen name=\"header_height_default\">54dp</dimen>\n\t<dimen name=\"header_height_max\">130dp</dimen>\n\t<dimen name=\"header_shadow_height\">5dp</dimen>\n\n\t<dimen name=\"certificates_elevation\">8dp</dimen>\n\t<dimen name=\"certificates_padding\">30dp</dimen>\n\n\t<dimen name=\"onboarding_illustration_height\">250dp</dimen>\n\n\t<dimen name=\"info_buble_icon_padding\">3dp</dimen>\n</resources>"
  },
  {
    "path": "common/src/main/res/values/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n    ~\n    ~ This Source Code Form is subject to the terms of the Mozilla Public\n    ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n    ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n    ~\n    ~ SPDX-License-Identifier: MPL-2.0\n    -->\n<resources>\n\n\t<!-- Android App Name -->\n\t<string name=\"verifier_app_name\">\"Covid Check\"</string>\n\n\t<!-- Title for the qr scanning screen -->\n\t<string name=\"verifier_title_qr_scan\">\"Verify\"</string>\n\n\t<!-- Titel über dem Haupttitel -->\n\t<string name=\"verifier_homescreen_header_title\">\"COVID certificate\"</string>\n\n\t<!-- Homescreen App Name -->\n\t<string name=\"verifier_homescreen_title\">\"Check\"</string>\n\n\t<!-- Beschreibung für Pager Bild 1 -->\n\t<string name=\"verifier_homescreen_pager_description_1\">\"Scan presented certificate\"</string>\n\n\t<!-- Beschreibung für Pager Bild 2 -->\n\t<string name=\"verifier_homescreen_pager_description_2\">\"Certificates are verified automatically\"</string>\n\n\t<!-- Homescreen Button für Scanning -->\n\t<string name=\"verifier_homescreen_scan_button\">\"Verify\"</string>\n\n\t<!-- Homescreen Button für Support -->\n\t<string name=\"verifier_homescreen_support_button\">\"How it works\"</string>\n\t<string name=\"error_network_title\">\"Network error\"</string>\n\t<string name=\"error_network_text\">\"Check your internet connection.\"</string>\n\t<string name=\"error_action_retry\">\"Try again\"</string>\n\t<string name=\"error_camera_permission_title\">\"No access to camera\"</string>\n\t<string name=\"error_camera_permission_text\">\"The app requires access to the camera to be able to scan the QR code.\"</string>\n\t<string name=\"error_action_change_settings\">\"Change settings\"</string>\n\t<string name=\"error_title\">\"Error\"</string>\n\t<string name=\"qr_scanner_error\">\"Invalid code\"</string>\n\t<string name=\"ok_button\">\"OK\"</string>\n\t<string name=\"camera_permission_dialog_text\">\"The app requires access to the camera to be able to scan the QR code.\"</string>\n\t<string name=\"camera_permission_dialog_action\">\"Allow access to camera\"</string>\n\t<string name=\"verifier_qr_scanner_scan_qr_text\">\"Scan QR code\nto verify\"</string>\n\n\t<!-- Titel auf dem Verifikations-Screen -->\n\t<string name=\"covid_certificate_title\">\"COVID certificate\"</string>\n\n\t<!-- Name des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n\t<string name=\"verifier_covid_certificate_name\">\"Last name\"</string>\n\n\t<!-- Geburtsdatum des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n\t<string name=\"verifier_covid_certificate_birthdate\">\"Date of birth\"</string>\n\n\t<!-- Wallet: Zertifikat hinzufügen -->\n\t<string name=\"wallet_add_certificate\">\"Add\"</string>\n\n\t<!-- Wallet: Homescreen Covid-Zertifikat -->\n\t<string name=\"wallet_certificate\">\"COVID certificate\"</string>\n\n\t<!-- Wallet: Homescreen Erklärung -->\n\t<string name=\"wallet_homescreen_explanation\">\"Scan the QR code on the COVID certificate to add it to the app.\"</string>\n\n\t<!-- Wallet: Scanner Titel -->\n\t<string name=\"wallet_scanner_title\">\"Add\"</string>\n\n\t<!-- Titel bei erfolgreicher Prüfung -->\n\t<string name=\"verifier_verify_success_title\">\"Verification successful\"</string>\n\n\t<!-- Info Text bei erfolgreicher Prüfung -->\n\t<string name=\"verifier_verify_success_info\">\"Only valid in combination with\nan identity document\"</string>\n\n\t<!-- Prüfung loading text -->\n\t<string name=\"verifier_verify_loading_text\">\"Certificate is being verified\"</string>\n\n\t<!-- Fehler Title bei Prüfung -->\n\t<string name=\"verifier_verify_error_title\">\"COVID Certificate invalid\"</string>\n\n\t<!-- Fehler Infotext bei Prüfung (Nationale Regeln) -->\n\t<string name=\"verifier_verify_error_info_for_national_rules\">\"Does not meet the validity criteria for Switzerland or for the selected verification mode ({MODUS})\"</string>\n\n\t<!-- Fehler Infotext bei Prüfung (Zertifikat Fehler) -->\n\t<string name=\"verifier_verify_error_info_for_certificate_invalid\">\"The COVID certificate does not have a valid signature\"</string>\n\n\t<!-- Fehler Infotext bei Prüfung (Blacklist) -->\n\t<string name=\"verifier_verify_error_info_for_blacklist\">\"The COVID certificate was revoked\"</string>\n\n\t<!-- Fehler bei der geladen Liste -->\n\t<string name=\"verifier_verify_error_list_title\">\"Verification failed\"</string>\n\n\t<!-- Fehler Info bei laden der Liste -->\n\t<string name=\"verifier_verify_error_list_info_text\">\"An unexpected error has occurred\"</string>\n\n\t<!-- Wallet: Scanner Text unten -->\n\t<string name=\"wallet_scanner_explanation\">\"Scan the QR code on the COVID certificate.\"</string>\n\n\t<!-- Wallet: Scanner Info Button unten -->\n\t<string name=\"wallet_scanner_info_button\">\"How it works\"</string>\n\n\t<!-- Wallet: Erneut scannen Button -->\n\t<string name=\"wallet_scan_again\">\"Scan again\"</string>\n\n\t<!-- Wallet: Hinzufügen von Zertifikat Button -->\n\t<string name=\"wallet_add_certificate_button\">\"Add\"</string>\n\n\t<!-- Wallet: Titel der Liste Zertifikate -->\n\t<string name=\"wallet_certificate_list_title\">\"Certificates\"</string>\n\n\t<!-- Wallet: Löschen Button Titel -->\n\t<string name=\"delete_button\">\"Delete\"</string>\n\n\t<!-- Android App Name für die Wallet -->\n\t<string name=\"wallet_app_name\">\"Covid Cert\"</string>\n\n\t<!-- Header im Onboarding-Screen \"Die App\" -->\n\t<string name=\"wallet_onboarding_app_header\">\"The app\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Die App\" -->\n\t<string name=\"wallet_onboarding_app_title\">\"COVID Certificate\"</string>\n\n\t<!-- Text im Onboardingscreen \"Die App\" -->\n\t<string name=\"wallet_onboarding_app_text\">\"The app lets you store COVID certificates securely on your smartphone and present them easily.\"</string>\n\n\t<!-- Weiter-Button Titel -->\n\t<string name=\"continue_button\">\"Next\"</string>\n\n\t<!-- Header im Onboarding-Screen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_header\">\"Data protection\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_title\">\"Your data remains\nin the app\"</string>\n\n\t<!-- Text im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_text\">\"The certificates are only saved locally on your smartphone. The data is not stored centrally.\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_title\">\"Present certificates simply\"</string>\n\n\t<!-- Text 1 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_text1\">\"The data in the COVID certificate is also contained in the QR code.\"</string>\n\n\t<!-- Text 2 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_text2\">\"On presentation, the QR code is scanned using a verifier app. The authenticity and validity of the data are automatically checked.\"</string>\n\n\t<!-- Titel des Datenschutzerklärungs-Elements im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_privacypolicy_title\">\"Privacy policy\"</string>\n\n\t<!-- Titel des Nutzungsbedingungen-Elements im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_conditionsofuse_title\">\"Terms of use\"</string>\n\n\t<!-- Button zum Abschliessen des Onboardings -->\n\t<string name=\"wallet_onboarding_accept_button\">\"Accept\"</string>\n\t<string name=\"language_key\">\"en\"</string>\n\n\t<!-- Header im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_header\">\"How it works\"</string>\n\n\t<!-- Titel im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_title\">\"Add COVID certificates\"</string>\n\n\t<!-- Textblock 1 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text1\">\"To be able to add a COVID certificate to the app, you need the original certificate on paper or as a PDF.\"</string>\n\n\t<!-- Textblock 2 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text2\">\"Tap 'Add' in the app to add a new certificate.\"</string>\n\n\t<!-- Textblock 3 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text3\">\"Hold your smartphone camera over the QR code on the original certificate to scan it.\"</string>\n\n\t<!-- Textblock 4 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text4\">\"A preview of the COVID certificate will appear. Tap 'Add' to securely add the certificate to the app.\"</string>\n\n\t<!-- Frage 1 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_question1\">\"When and where can I get a COVID certificate?\"</string>\n\n\t<!-- Header im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_header\">\"FAQs\"</string>\n\n\t<!-- Titel 1 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_title\">\"What are COVID certificates?\"</string>\n\n\t<!-- Text 1im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_subtitle\">\"The COVID certificate makes it possible to document a COVID-19 vaccination, recovery from the virus or a negative test result in a forgery-proof manner.\"</string>\n\n\t<!-- Frage 1 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_1\">\"When and where can I get a COVID certificate?\"</string>\n\n\t<!-- Frage 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_2\">\"How can I present a COVID certificate?\"</string>\n\n\t<!-- Frage 3 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_3\">\"Where is my data stored?\"</string>\n\n\t<!-- Frage 4 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_4\">\"How are misuse and forgery prevented?\"</string>\n\n\t<!-- Frage 5 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_5\">\"What happens if I lose my COVID certificate?\"</string>\n\n\t<!-- Frage 6 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_1\">\"How can I add a COVID certificate to the app?\"</string>\n\n\t<!-- Frage 7 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_2\">\"Can several COVID certificates be added?\"</string>\n\n\t<!-- Frage 8 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_3\">\"Where can I see if my COVID certificate is valid?\"</string>\n\n\t<!-- Frage 9 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_4\">\"How is my data protected?\"</string>\n\n\t<!-- Frage 10 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_5\">\"What data is contained in the QR code?\"</string>\n\n\t<!-- Frage 11 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_6\">\"What do I need to do if I delete the COVID certificate or the app?\"</string>\n\n\t<!-- Antwort 1 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_1\">\"You can get a COVID certificate after a COVID-19 vaccination, after you have recovered from the virus, or after you have tested negative. The certificate is generally issued upon request by health care professionals on site.\"</string>\n\n\t<!-- Antwort 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_2\">\"You can present your COVID certificate in paper form, or you can use the COVID Certificate app to save certificates in the dedicated app and present them directly from the app.\n\nPlease note that you will also need to show an identification document (passport or ID card) in either case. A number of countries require a printed version of the certificate and will not accept the electronic certificate. You should therefore always take the printed version with you when travelling.\"</string>\n\n\t<!-- Antwort 3 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_3\">\"Your certificate data is not stored in a central government system, but only locally on your mobile device or on the paper COVID certificate.\"</string>\n\n\t<!-- Antwort 4 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_4\">\"The COVID certificate QR code contains an electronic signature. This is an important security feature and makes the COVID certificate forgery-proof. Moreover, the COVID certificate is valid only in combination with an identification document (passport or ID card).\"</string>\n\n\t<!-- Antwort 5 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_5\">\"Your COVID certificate is not stored in any central government system. Therefore, keep your paper and/or PDF COVID certificate in a safe place. If you lose your certificate and need to replace it, a fee may be charged for its reissue by a health care facility (e.g. the test or vaccination centre).\"</string>\n\n\t<!-- Antwort 6 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_1\">\"To add a COVID certificate to the app, you need the original certificate issued to you on paper or as a PDF document. You can use the COVID certificate app to scan the QR code on the original and add it to the app. The COVID certificate will then appear directly in the app.\"</string>\n\n\t<!-- Antwort 7 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_2\">\"Yes, that is possible. For example, you can save the COVID certificates of all family members in your app. Also in this case, each COVID certificate is valid only in combination with an identification document (passport or ID card) of the certificate holder.\"</string>\n\n\t<!-- Antwort 8 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_3\">\"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. The “Validity in Switzerland” section is thus no longer displayed in the app. Instead, the time of the vaccination or test is shown.\n\nThe number of days that have elapsed since a vaccination or test is also shown. This makes it easier for you to determine whether your certificate complies with the validity rules of your destination country (if the country in question still requires a COVID certificate). When abroad, it is always the rules of the country in question that apply.\"</string>\n\n\t<!-- Antwort 9 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_4\">\"Your personal data is not stored in a central system; instead, it can be found solely locally on the mobile device or in the QR code in the case of the paper COVID certificate.\"</string>\n\n\t<!-- Antwort 10 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_5\">\"The QR code contains all the information that is found in plain text on your paper COVID certificate. The QR code also contains an electronic signature that can be used to check the authenticity of the COVID certificate. This makes the COVID certificate forgery-proof.\"</string>\n\n\t<!-- Antwort 11 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_6\">\"You can easily restore your COVID certificate on your mobile device. To do so, download the app again and then scan the QR code on your paper or PDF COVID certificate.\"</string>\n\n\t<!-- Titel 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_title\">\"How the app works\"</string>\n\n\t<!-- Text 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_subtitle\">\"With the COVID Certificate app, you can easily and securely store and present COVID certificates on your mobile device.\"</string>\n\n\t<!-- Antwort 1 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_answer1\">\"You can get a COVID certificate after a complete COVID-19 vaccination, after you have recovered from the virus or after you have tested negative. The certificate is generally issued upon request by health care professionals on site.\"</string>\n\n\t<!-- Verifier: Detail Check Vorname -->\n\t<string name=\"verifier_covid_certificate_prename\">\"First name\"</string>\n\n\t<!-- Config: Titel wenn App muss geupdatet werden -->\n\t<string name=\"force_update_title\">\"Update required\"</string>\n\n\t<!-- Config: Text der angezeigt wird falls App muss geupdatet werden -->\n\t<string name=\"force_update_text\">\"Download the latest version of the app.\"</string>\n\n\t<!-- Config: Update Button Aktualisieren -->\n\t<string name=\"force_update_button\">\"Update\"</string>\n\n\t<!-- Wallet: Zertifikat gültig ab: {DATE} -->\n\t<string name=\"wallet_certificate_valid_from\">\"Valid in Switzerland from:\n{DATE}\"</string>\n\n\t<!-- Wallet: Zertifikat Detail Geimpft -->\n\t<string name=\"certificate_reason_vaccinated\">\"Vaccination\"</string>\n\n\t<!-- Wallet: Zertifikat Detail Genesen -->\n\t<string name=\"certificate_reason_recovered\">\"Recovered\"</string>\n\n\t<!-- Wallet: Zertifikat Detail Getestet -->\n\t<string name=\"certificate_reason_tested\">\"Test\"</string>\n\n\t<!-- Header im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_header\">\"Advantages\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_title\">\"Store COVID certificates digitally\"</string>\n\n\t<!-- Text1 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_text1\">\"COVID certificates can be simply added to the app and stored digitally. \"</string>\n\n\t<!-- Text2 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_text2\">\"The app checks the validity of certificates in Switzerland. This way, you can be sure that your certificates are valid.\"</string>\n\n\t<!-- Header im Onboarding-Screen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_header\">\"Advantages\"</string>\n\n\t<!-- Accessibility: Information -->\n\t<string name=\"accessibility_info_button\">\"Publication details\"</string>\n\n\t<!-- Accessibility: FAQ Button Titel -->\n\t<string name=\"accessibility_faq_button\">\"FAQs\"</string>\n\n\t<!-- Accessibility: Button zur Liste der Zertifikate -->\n\t<string name=\"accessibility_list_button\">\"List of certificates\"</string>\n\n\t<!-- Accessibility: Zertifikate hinzufügen -->\n\t<string name=\"accessibility_add_button\">\"Add a certificate\"</string>\n\n\t<!-- Accessibility: Schliessen Button -->\n\t<string name=\"accessibility_close_button\">\"Close\"</string>\n\n\t<!-- Accessibility: Taschenlampe anschalten Button -->\n\t<string name=\"accessibility_lamp_on_button\">\"Turn on torch\"</string>\n\n\t<!-- Accessibility: Lampe abschalten -->\n\t<string name=\"accessibility_lamp_off_button\">\"Turn off torch\"</string>\n\n\t<!-- Titel des Impressum-Screens -->\n\t<string name=\"impressum_title\">\"Publication details\"</string>\n\n\t<!-- Unbekannter Fehler -->\n\t<string name=\"unknown_error\">\"An unknown error has occurred\"</string>\n\n\t<!-- Verifier: Die Gültigkeit des Zertifikat ist abgelaufen -->\n\t<string name=\"verifier_verifiy_error_expired\">\"Does not meet Switzerland's validity criteria.\n\nThe certificate is no longer valid.\"</string>\n\n\t<!-- Verifier: Zertifikat ist erst gültig ab {DATE} -->\n\t<string name=\"verifier_verifiy_error_notyetvalid\">\"Does not meet Switzerland's validity criteria.\n\nThe certificate is not yet valid\"</string>\n\n\t<!-- Verifier: Ein Netzwerkfehler ist aufgetreten. -->\n\t<string name=\"verifier_retry_network_error\">\"A network error has occurred\"</string>\n\n\t<!-- Verifier: Das Gerät befindet sich im Flugmodus. -->\n\t<string name=\"verifier_retry_flightmode_error\">\"Your device is in flight mode\"</string>\n\n\t<!-- Wallet: Zertifikat gültig ab: {DATE} -->\n\t<string name=\"wallet_error_valid_from\">\"Valid in Switzerland from:\n{DATE}\"</string>\n\n\t<!-- Wallet: Fehler wenn Zertifikat nicht den CH-Gültigkeitskriterien entspricht -->\n\t<string name=\"wallet_error_national_rules\">\"Contains data that do not comply with international standards.\"</string>\n\n\t<!-- Wallet: Gültigkeit des Zertifikats abgelaufen -->\n\t<string name=\"wallet_error_expired\">\"Period of validity for Switzerland exceeded\"</string>\n\n\t<!-- Wallet: Zertifikat wurde widerrufen -->\n\t<string name=\"wallet_error_revocation\">\"Certificate has been\nrevoked\"</string>\n\n\t<!-- Wallet: Zertifikat mit ungültiger Signatur -->\n\t<string name=\"wallet_error_invalid_signature\">\"Certificate with\ninvalid signature\"</string>\n\n\t<!-- Wallet: ungültiger Signatur (gleiche Worte wie wallet_error_invalid_signature) -->\n\t<string name=\"wallet_error_invalid_signature_bold\">\"invalid signature\"</string>\n\n\t<!-- Wallet: widerrufen (gleiches Wort wie bei wallet_error_revocation) -->\n\t<string name=\"wallet_error_revocation_bold\">\"revoked\"</string>\n\n\t<!-- Meldung wenn erneute ein Zertifikat gescannt wurde, welches bereits in der App ist -->\n\t<string name=\"wallet_certificate_already_exists\">\"This certificate is already saved in the app\"</string>\n\n\t<!-- Titel Gültigkeit im Zertifikatsdetail -->\n\t<string name=\"wallet_certificate_validity\">\"Validity in\nSwitzerland\"</string>\n\n\t<!-- \"Bis\" Label im Zertifikats-Detail -->\n\t<string name=\"wallet_certificate_valid_until\">\"until\"</string>\n\n\t<!-- Message im Zertifikatsdetail während Überprüfung -->\n\t<string name=\"wallet_certificate_verifying\">\"The certificate is being verified\"</string>\n\n\t<!-- Message nach erfolgreicher Prüfung im Zertifikatdetail -->\n\t<string name=\"wallet_certificate_verify_success\">\"Verification successful\"</string>\n\n\t<!-- Accessibility: Info Box Butto -->\n\t<string name=\"accessibility_info_box\">\"Information\"</string>\n\n\t<!-- Button Schliessen -->\n\t<string name=\"close_button\">\"Close\"</string>\n\t<string name=\"wallet_certificate_impfdosis_title\">\"Dose\"</string>\n\t<string name=\"target_disease_name\">\"COVID-19\"</string>\n\t<string name=\"wallet_certificate_target_disease_title\">\"Disease or agent targeted\"</string>\n\t<string name=\"wallet_certificate_impfstoff_product_name_title\">\"Product\"</string>\n\t<string name=\"wallet_certificate_impfstoff_holder\">\"Manufacturer\"</string>\n\t<string name=\"wallet_certificate_vaccination_date_title\">\"Date of vaccination\"</string>\n\t<string name=\"wallet_certificate_vaccination_country_title\">\"Country of vaccination\"</string>\n\t<string name=\"wallet_certificate_vaccination_issuer_title\">\"Issuer\"</string>\n\t<string name=\"covid_certificate_recovery_title\">\"Recovery\"</string>\n\t<string name=\"wallet_certificate_recovery_first_positiv_result\">\"Date of first positive test result\"</string>\n\t<string name=\"wallet_certificate_recovery_from\">\"Valid from\"</string>\n\t<string name=\"wallet_certificate_recovery_until\">\"Valid until\"</string>\n\t<string name=\"wallet_certificate_test_land\">\"Country of test\"</string>\n\t<string name=\"covid_certificate_test_title\">\"Test\"</string>\n\t<string name=\"wallet_certificate_test_result_title\">\"Result\"</string>\n\t<string name=\"wallet_certificate_test_result_negativ\">\"Not detected (Negative)\"</string>\n\t<string name=\"wallet_certificate_test_result_positiv\">\"Detected (Positive)\"</string>\n\t<string name=\"wallet_certificate_test_type\">\"Type\"</string>\n\t<string name=\"wallet_certificate_test_name\">\"Name\"</string>\n\t<string name=\"wallet_certificate_test_holder\">\"Manufacturer\"</string>\n\t<string name=\"wallet_certificate_test_sample_date_title\">\"Date of sample collection\"</string>\n\t<string name=\"wallet_certificate_test_result_date_title\">\"Result date\"</string>\n\n\t<!-- Header im \"So funktionierts\" Screen der Verifier-App -->\n\t<string name=\"verifier_support_header\">\"How it works\"</string>\n\n\t<!-- Text im Bestätigungs-Dialog beim Zertifikat löschen -->\n\t<string name=\"wallet_certificate_delete_confirm_text\">\"Are you sure you want to delete the certificate?\"</string>\n\n\t<!-- Titel eines Abbrechen-Buttons -->\n\t<string name=\"cancel_button\">\"Cancel\"</string>\n\n\t<!-- Wallet: Titel bei Impfungen -->\n\t<string name=\"covid_certificate_vaccination_title\">\"Vaccination\"</string>\n\n\t<!-- Wallet: Apple App Store URL -->\n\t<string name=\"wallet_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917320\"</string>\n\n\t<!-- Verifier: Apple App Store URL -->\n\t<string name=\"verifier_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917510\"</string>\n\n\t<!-- Wallet: Abkürzung \"UVCI\" (Unique Vaccination Certificate Identifier) -->\n\t<string name=\"wallet_certificate_identifier\">\"UVCI\"</string>\n\n\t<!-- Wallet: Zertifikat erstellt am {DATE} -->\n\t<string name=\"wallet_certificate_date\">\"Certificate generated on\n{DATE}\"</string>\n\n\t<!-- Wallet: Detail Art des Impfstoffs -->\n\t<string name=\"wallet_certificate_vaccine_prophylaxis\">\"Vaccine type\"</string>\n\n\t<!-- Wallet: Test Detail Test durchgeführt durch -->\n\t<string name=\"wallet_certificate_test_done_by\">\"Test centre\"</string>\n\n\t<!-- iOS: Erklärung bei Kamera  -->\n\t<string name=\"NSCameraUsageDescription\">\"The app needs access to your camera to be able to scan the QR code.\"</string>\n\n\t<!-- Titel 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_title\">\"How COVID certificates are checked\"</string>\n\n\t<!-- Text 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_subtitle\">\"The COVID Certificate Check app can be used to scan the QR codes on COVID certificates and check the certificates for authenticity and validity.\"</string>\n\n\t<!-- Frage 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_1\">\"How can COVID certificates be checked?\"</string>\n\n\t<!-- Antwort 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_1\">\"To check a COVID certificate, use the dedicated COVID Certificate Check app to scan the QR code on the paper certificate or in the COVID Certificate app presented.\"</string>\n\n\t<!-- Frage 2 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_2\">\"What exactly is checked?\"</string>\n\n\t<!-- Antwort 2 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_2\">\"Three aspects are checked when scanning:\n– Does the certificate contain a valid electronic signature?\n– Is the certificate unrevoked?\n– Does the certificate meet Switzerland's validity criteria?\n\nIf the answer to all three questions is affirmative, the COVID certificate is shown as valid.\"</string>\n\n\t<!-- Frage 3 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_3\">\"Which identification documents are valid? Why do personal details have to be checked?\"</string>\n\n\t<!-- Antwort 3 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_3\">\"Aside from passports or ID cards, other photo identification documents that prove the identity of the person in question (e.g. driving licence) are also accepted. Although the COVID certificate is forgery-proof, the only way to ensure that the certificate shown was issued to the person presenting it is to check the personal details.\"</string>\n\n\t<!-- Frage 4 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_4\">\"Can foreign certificates also be checked?\"</string>\n\n\t<!-- Antwort 4 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_4\">\"Yes, COVID certificates that are compatible with the EU digital COVID certificate can be checked according to Switzerland's validity criteria using the COVID Certificate check app.\"</string>\n\n\t<!-- Frage 5 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_5\">\"What data do I see during the verification process?\"</string>\n\n\t<!-- Antwort 5 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_5\">\"During the verification process, you see only the certificate holder's name and date of birth, and whether the COVID certificate is valid.\"</string>\n\n\t<!-- Frage 6 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_6\">\"Is any data stored in the COVID Certificate Check app or in a central system during the verification process?\"</string>\n\n\t<!-- Antwort 6 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_6\">\"No, no data is stored during the verification process, be it in the COVID Certificate Check app or in a central system. Therefore, it is not possible to trace which COVID certificate was checked by whom, when and where.\"</string>\n\n\t<!-- iOS Button zum Einstellungen öffnen -->\n\t<string name=\"ios_settings_open\">\"Settings\"</string>\n\n\t<!-- Wallet: Onboarding externer Link zu Datenschutz -->\n\t<string name=\"wallet_onboarding_external_privacy_button\">\"Privacy policy &amp; Terms of use\"</string>\n\n\t<!-- Wallet: Hinweis im Zertifikat Detail -->\n\t<string name=\"wallet_certificate_detail_note\">\"This certificate is not a travel document.\n&lt;br /&gt;&lt;br /&gt;\nThe scientific evidence on COVID-19 vaccination, testing, and recovery continues to evolve, including with regard to new virus variants of concern. \n&lt;br /&gt;&lt;br /&gt;\nPlease check the restrictions and rules on validity that apply at your destination before you travel. When you’re abroad, the validity of your certificate is calculated based on the rules in the destination country.\"</string>\n\t<string name=\"wallet_terms_privacy_link\">\"https://www.bit.admin.ch/bit/en/home/documentation/covid-certificate-app.html\"</string>\n\t<string name=\"verifier_terms_privacy_link\">\"https://www.bit.admin.ch/bit/en/home/documentation/covid-certificate-check-app.html\"</string>\n\n\t<!-- Verifier: Titel in der App (z.B. Impressum) -->\n\t<string name=\"verifier_app_title\">\"COVID Certificate Check\"</string>\n\t<string name=\"wallet_faq_questions_question_1_1\">\"How do I get a COVID certificate after I have recovered from COVID-19?\"</string>\n\t<string name=\"wallet_faq_questions_answer_1_1\">\"Depending on the canton, the COVID certificate will, in some cases, be sent to you directly by the test centre or by the laboratory that determined your positive test result. If this is not the case, you can subsequently apply online for a COVID certificate via the “National COVID certificate application platform”. The application will be processed there by the competent cantonal authority. You will find the “National COVID certificate application platform” here:\"</string>\n\n\t<!-- Wallet: Homescreen Was wollen sie machen? -->\n\t<string name=\"wallet_homescreen_what_to_do\">\"Select next step\"</string>\n\n\t<!-- Wallet: Homescreen Titel Zertifikat hinzufügen -->\n\t<string name=\"wallet_homescreen_add_title\">\"Add certificate\"</string>\n\n\t<!-- Wallet: Homescreen Zertifikat Description Text -->\n\t<string name=\"wallet_homescreen_add_certificate_description\">\"You have a COVID certificate in paper form or as a PDF and would like to add it to the app.\"</string>\n\n\t<!-- Wallet: Homescreen Transfer-Code erstellen -->\n\t<string name=\"wallet_homescreen_add_transfer_code\">\"Generate transfer code\"</string>\n\n\t<!-- Wallet: Transfer Codes Titel -->\n\t<string name=\"wallet_transfer_code_onboarding_title\">\"Transfer codes\"</string>\n\n\t<!-- Wallet: Transfer Code Text -->\n\t<string name=\"wallet_transfer_code_onboarding_text\">\"You can use transfer codes whenever you have a COVID test or a COVID-19 vaccination. Your COVID certificate will then be delivered straight to the app.\"</string>\n\n\t<!-- Wallet: Transfer Code Onboarding Button -->\n\t<string name=\"wallet_transfer_code_onboarding_button\">\"Generate code\"</string>\n\n\t<!-- Wallet: Transfer Code Onboarding So funktioniert's -->\n\t<string name=\"wallet_transfer_code_onboarding_howto\">\"This is how it works\"</string>\n\n\t<!-- prüfen -->\n\t<!-- Wallet: Transfer Code: FAQ Titel -->\n\t<string name=\"wallet_transfer_code_faq_questions_title\">\"Receive COVID certificates directly in the app\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Text -->\n\t<string name=\"wallet_transfer_code_faq_questions_subtitle\">\"Transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you’ll receive your certificate directly in the app after a COVID test or a COVID-19 vaccination.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 1 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_1\">\"Who offers the transmission of the COVID certificate by transfer code?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 2 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_2\">\"Can the transfer codes also be used for the transmission of vaccination certificates?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 3 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_3\">\"How does the transmission of the certificate by transfer code work?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 4 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_4\">\"Can I use the same transfer code more than once?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 1 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_1\">\"If you undergo a COVID test (PCR test or rapid antigen test) or receive a COVID-19 vaccination, a transfer code can be used to quickly transmit the corresponding COVID certificate.\n\nAsk your test or vaccination centre, pharmacy or doctor if they offer this transfer code option.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 2 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_2\">\"Currently, the transmission of the certificate by transfer code is reserved for COVID tests. To find out how to obtain a COVID certificate after vaccination, click here:\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 3 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_3\">\"If your test or vaccination centre offers to transmit your COVID certificate to you by transfer code, you can give them your transfer code when you register, when taking the test or before receiving your vaccination.\n\nYou can generate a transfer code in the COVID Certificate app at any time. Just click on \\\"Add\\\" on the home screen or the \\\"More\\\" symbol at the bottom right, and then click on \\\"Create a transfer code\\\". The app will then show you the nine-character code.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 4 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_4\">\"No, a transfer code can only be used once. If you wish to obtain several certificates (e.g. for your relatives), please create a new code for each certificate.\"</string>\n\t<string name=\"wallet_transfer_code_faq_works_title\">\"How does the transfer work?\"</string>\n\n\t<!-- Wallet: Tranfser Code FAQ 2 Frage 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_question_1\">\"How is my data secured during the transfer?\"</string>\n\n\t<!-- Wallet: Tranfser Code FAQ 2 Frage 2 -->\n\t<string name=\"wallet_transfer_code_faq_works_question_2\">\"What if my certificate does not arrive in the application?\"</string>\n\n\t<!-- Wallet: Tranfser Code FAQ 2 Frage 3 -->\n\t<string name=\"wallet_transfer_code_faq_works_question_3\">\"What happens if I test positive?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ 2 Antwort 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_answer_1\">\"For the transfer, your COVID certificate is delivered in encrypted form. The transfer code ensures that only your application can receive the certificate. The data is deleted from the server immediately after the transfer.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ 2 Antwort 2 -->\n\t<string name=\"wallet_transfer_code_faq_works_answer_2\">\"Once the certificate has been generated by the laboratory or test centre, it is available for transfer. Make sure that your smartphone is connected to the Internet to receive certificates.\n\nIf you still do not receive your certificate, contact the place where you performed the test (centre, pharmacy, doctor's practice).\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ 2 Antwort 3 -->\n\t<string name=\"wallet_transfer_code_faq_works_answer_3\">\"In case of a positive rapid antigen test, you will not receive a COVID certificate from the laboratory.\n\nIn case of a positive PCR test, you will receive a COVID certificate for cured persons, valid from the 11th day after the test.\"</string>\n\n\t<!-- Wallet: Transfer Code erstellt Titel -->\n\t<string name=\"wallet_transfer_code_code_created_title\">\"Your transfer code has been generated\"</string>\n\n\t<!-- Wallet: Transfer-Code -->\n\t<string name=\"wallet_transfer_code_title\">\"Transfer code\"</string>\n\n\t<!-- Wallet: Transfer Code Erstelltm am {DATE} -->\n\t<string name=\"wallet_transfer_code_createdat\">\"Generated on {DATE}\"</string>\n\n\t<!-- Wallet: Transfer Code Nächste Schritte -->\n\t<string name=\"wallet_transfer_code_next_steps\">\"Next steps\"</string>\n\n\t<!-- Wallet: Transfer Code Nächste Schritte 1 -->\n\t<string name=\"wallet_transfer_code_next_steps1\">\"Provide the pharmacy, test centre, or doctor with your code when you get tested.\"</string>\n\n\t<!-- Wallet: Transfer Code Nächste Schritte 2 -->\n\t<string name=\"wallet_transfer_code_next_steps2\">\"If you have multiple certificates, e.g. for other family members, generate a new code for each certificate.\"</string>\n\n\t<!-- Wallet: Transfer Code Fertig Button -->\n\t<string name=\"wallet_transfer_code_done_button\">\"Done\"</string>\n\n\t<!-- Wallet: Transfer Code Card Titel -->\n\t<string name=\"wallet_transfer_code_card_title\">\"Transfer\"</string>\n\n\t<!-- Wallet: Transfer Code Staus Warten auf Transfer -->\n\t<string name=\"wallet_transfer_code_state_waiting\">\"Wait for transfer\"</string>\n\n\t<!-- Wallet: Transfer Code Ablauf in 1 Tag -->\n\t<string name=\"wallet_transfer_code_expire_singular\">\"Only valid for 1 more day\"</string>\n\n\t<!-- Wallet: Transfer Code: Läuft ab in {DAYS} Tagen -->\n\t<string name=\"wallet_transfer_code_expire_plural\">\"Valid for a further {DAYS} days\"</string>\n\n\t<!-- Wallet: Transfer Code Status Abgelaufen -->\n\t<string name=\"wallet_transfer_code_state_expired\">\"Transfer failed\"</string>\n\n\t<!-- Wallet: Transfer Code Alter Code Titel -->\n\t<string name=\"wallet_transfer_code_old_code\">\"Code expired\"</string>\n\n\t<!-- Wallet: Transfer Code State Zuletzt aktualisiert {DATE} -->\n\t<string name=\"wallet_transfer_code_state_updated\">\"Last updated\n{DATE}\"</string>\n\n\t<!-- Wallet: Transfer Code Kein Zertifikat mehr -->\n\t<string name=\"wallet_transfer_code_state_no_certificate\">\"It is no longer possible to receive a certificate using this transfer.\"</string>\n\n\t<!-- Wallet: Fehler Format des Zertifikat ungültig -->\n\t<string name=\"wallet_error_invalid_format\">\"Certificate format\ninvalid\"</string>\n\n\t<!-- Wallet: Fehler Format des Zertifikat ungültig Fett -->\n\t<string name=\"wallet_error_invalid_format_bold\">\"invalid\"</string>\n\n\t<!-- Verifier: Error Ungültiges Format -->\n\t<string name=\"verifier_error_invalid_format\">\"COVID certificate format invalid.\"</string>\n\n\t<!-- Homescreen Zertifikat: Offline Modus Text -->\n\t<string name=\"wallet_homescreen_offline\">\"Offline mode\"</string>\n\n\t<!-- Wallet: Detail Offline Text -->\n\t<string name=\"wallet_offline_description\">\"In order to show the certificate's validity, the app must be online regularly.\"</string>\n\n\t<!-- Wallet: Retry Titel Offline -->\n\t<string name=\"wallet_detail_offline_retry_title\">\"Verification not possible offline\"</string>\n\n\t<!-- Wallet: Detail Netzwerkfehler Titel -->\n\t<string name=\"wallet_detail_network_error_title\">\"Verification not possible at this time\"</string>\n\n\t<!-- Wallet: Detail Netzwerkfehler Text -->\n\t<string name=\"wallet_detail_network_error_text\">\"Please try again later\"</string>\n\n\t<!-- Verifier: Titel Fehler wenn kein Internet -->\n\t<string name=\"verifier_offline_error_title\">\"Offline verification not possible\"</string>\n\n\t<!-- Verifier: Fehlertext wenn Offline bei Verifikation -->\n\t<string name=\"verifier_offline_error_text\">\"An internet connection is required to update the checklists\"</string>\n\n\t<!-- Verifier: Fehler Titel bei Netzwerkfehler -->\n\t<string name=\"verifier_network_error_title\">\"Verification failed\"</string>\n\n\t<!-- Verifier: Fehler Text bei Netzwerkfehler -->\n\t<string name=\"verifier_network_error_text\">\"An unexpected error has occurred\"</string>\n\n\t<!-- Wallet: Text auf Zertifikat auf Homescreen bei Netzwerkfehler -->\n\t<string name=\"wallet_homescreen_network_error\">\"Validity could not be determined\"</string>\n\n\t<!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_intro_1\">\"The application regularly checks whether a COVID certificate is available for your transfer code.\"</string>\n\n\t<!-- Wallet: Transfer Code So Funktionierts Text 2 -->\n\t<string name=\"wallet_transfer_code_faq_works_intro_2\">\"As soon as the COVID certificate is available, it appears in the application. If you have activated notifications, you will receive a message from the application.\"</string>\n\n\t<!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_intro_3\">\"The transfer code expires after {TRANSFER_CODE_VALIDITY} days. After this period, the application waits for any further transfers for 72 hours. After that, the transfer code is no longer valid.\"</string>\n\n\t<!-- Wallet: Titel im Custom-Popup Notification Permission -->\n\t<string name=\"wallet_notification_permission_title\">\"Allow notifications\"</string>\n\n\t<!-- Wallet: Text im Custom-Popup Notification Permission -->\n\t<string name=\"wallet_notification_permission_text\">\"The app can notify you when your certificate is ready. Allow the app to send you notifications.\"</string>\n\n\t<!-- Wallet: Button im Custom-Popup Notification Permission -->\n\t<string name=\"wallet_notification_permission_button\">\"Continue\"</string>\n\n\t<!-- Externe URL im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_external_link\">\"https://foph-coronavirus.ch/certificate/how-do-i-get-a-covid-certificate-and-how-do-i-use-it/\"</string>\n\n\t<!-- Label der externen URL im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_external_link_title\">\"Further information\"</string>\n\n\t<!-- Buttontitel im Screen, wo ein Code erstellt werden kann -->\n\t<string name=\"wallet_transfer_code_create_code_button\">\"Generate code\"</string>\n\n\t<!-- Wallet: Transfer Code Ablauf in 1 Tag (fetter Teil) -->\n\t<string name=\"wallet_transfer_code_expire_singular_bold\">\"1 more day\"</string>\n\n\t<!-- Wallet: Transfer Code: Läuft in {DAYS} Tagen ab (fetter Teil) -->\n\t<string name=\"wallet_transfer_code_expire_plural_bold\">\"{DAYS} days\"</string>\n\n\t<!-- Infotext bei erfolgreicher Prüfung (Blacklist) -->\n\t<string name=\"verifier_verify_success_info_for_blacklist\">\"Not revoked\"</string>\n\n\t<!-- Infotext bei erfolgreicher Prüfung (Zertifikat) -->\n\t<string name=\"verifier_verify_success_info_for_certificate_valid\">\"Signature valid\"</string>\n\n\t<!-- Teil der Fehlermeldung bei noch nicht/nicht mehr gültigem Zertifikat, der Bold sein sollte (ref. verifier_verifiy_error_expired und _notyetvalid) -->\n\t<string name=\"verifier_verify_error_validity_range_bold\">\"Does not meet Switzerland's validity criteria.\"</string>\n\n\t<!-- Wallet: Transfer Code Fehler Titel -->\n\t<string name=\"wallet_transfer_code_error_title\">\"Unable to generate transfer code\"</string>\n\n\t<!-- Wallet: Erstellen Fehler Titel -->\n\t<string name=\"wallet_transfer_code_no_internet_title\">\"No Internet connection\"</string>\n\n\t<!-- Wallet: Erstellen anderer Fehler Titel -->\n\t<string name=\"wallet_transfer_code_generate_error_title\">\"An unexpected error has occurred.\"</string>\n\n\t<!-- Wallet: Aktualisierung Transfer Code Fehler Titel -->\n\t<string name=\"wallet_transfer_code_update_error_title\">\"Update not possible at this time\"</string>\n\n\t<!-- Wallet: Transfer Code Update Fehler Text -->\n\t<string name=\"wallet_transfer_code_update_no_internet_error_text\">\"The app must be online to receive the transfer.\"</string>\n\n\t<!-- Wallet Transfer Code Update Fehler Text -->\n\t<string name=\"wallet_transfer_code_update_general_error_text\">\"An unexpected error has occurred. Please try again later.\"</string>\n\n\t<!-- Wallet: Transfer Code Fehlertext bei Generieren -->\n\t<string name=\"wallet_transfer_code_generate_error_text\">\"Please try again later.\"</string>\n\n\t<!-- Wallet: Transfer Code Fehlertext bei Generieren ohne Internet -->\n\t<string name=\"wallet_transfer_code_generate_no_internet_error_text\">\"The app must be online to generate a transfer code.\"</string>\n\n\t<!-- Wallet: Accessibility Name für Refresh Button -->\n\t<string name=\"accessibility_refresh_button\">\"Update\"</string>\n\t<string name=\"wallet_transfer_delete_confirm_text\">\"Are you sure you want to delete the transfer?\"</string>\n\t<string name=\"wallet_notification_transfer_title\">\"Transfer successful\"</string>\n\t<string name=\"wallet_notification_transfer_text\">\"The COVID certificate has been delivered\"</string>\n\t<string name=\"wallet_faq_questions_question_2_1\">\"How long is the COVID certificate valid?\"</string>\n\t<string name=\"wallet_faq_questions_answer_2_1\">\"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. Abroad, the validity rules of the country in question apply. Shortly before departing you should check the authorities’ website for your transit or destination country to see whether certificate-based measures are still in force and, if so, which validity periods apply for your destination country. Helpful website for travel abroad:\"</string>\n\t<string name=\"wallet_faq_questions_linktext_2_1\">\"Re-open EU (europa.eu)\"</string>\n\t<string name=\"wallet_faq_questions_linkurl_2_1\">\"https://reopen.europa.eu/en/\"</string>\n\t<string name=\"wallet_faq_works_question_3_1\">\"Can I use the app offline?\"</string>\n\t<string name=\"wallet_faq_works_answer_3_1\">\"You can use the app without an internet connection, so you can still call up your certificates and present them for scanning and verification.\"</string>\n\t<string name=\"verifier_faq_works_question_2_1\">\"What are the current validity criteria in Switzerland?\"</string>\n\t<string name=\"verifier_faq_works_answer_2_1\">\"The current validity period of COVID certificates can be found here:\"</string>\n\t<string name=\"verifier_faq_works_linktext_2_1\">\"Further information\"</string>\n\t<string name=\"verifier_faq_works_linkurl_2_1\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"</string>\n\t<string name=\"verifier_faq_works_question_7\">\"Is it possible to verify the certificates offline?\"</string>\n\t<string name=\"verifier_faq_works_answer_7\">\"In principle, COVID certificates can also be verified without an Internet connection. For this purpose, regularly updated checklists are downloaded from a central server. These locally stored checklists must not be older than 48 hours.\n\nIn order to update the checklists, the app must be open and connected to the Internet. Updating occurs immediately and automatically.\"</string>\n\n\t<!-- Button zum QR Code Scannen öffnen -->\n\t<string name=\"wallet_homescreen_qr_code_scannen\">\"Scan QR code\"</string>\n\n\t<!-- Button zum PDF importieren -->\n\t<string name=\"wallet_homescreen_pdf_import\">\"Import PDF\"</string>\n\n\t<!-- Wallet: Titel im Transfer Code screen bei deaktiveren Notifications -->\n\t<string name=\"wallet_notification_disabled_titel\">\"Tip: Activate notifications\"</string>\n\n\t<!-- Wallet: Button im Transfer Code screen bei deaktiveren Notifications der die Einstellungen öffnet -->\n\t<string name=\"wallet_notification_disabled_button\">\"Activate\"</string>\n\n\t<!-- Titel für einen \"Nachweis\" (e.g. unvollständige Impfung) -->\n\t<string name=\"wallet_certificate_evidence_title\">\"Evidence\"</string>\n\n\t<!-- Typenbezeichnung für eine unvollständige Impfung -->\n\t<string name=\"wallet_certificate_type_incomplete_vaccine\">\"Vaccination incomplete\"</string>\n\n\t<!-- Label für das Erstellungsdatum eines Nachweises (mit Platzhalter für Datum und Uhrzeit) -->\n\t<string name=\"wallet_certificate_evidence_creation_date\">\"Evidence created on\n{DATE}\"</string>\n\t<string name=\"wallet_transfer_code_faq_questions_linktext_2\">\"Further information\"</string>\n\t<string name=\"wallet_transfer_code_faq_questions_linkurl_2\">\"https://foph-coronavirus.ch/certificate/how-do-i-get-a-covid-certificate-and-how-do-i-use-it/\"</string>\n\n\t<!-- Wallet: Zertifikat Light Button im Zertifikat Detail -->\n\t<string name=\"wallet_certificate_detail_certificate_light_button\">\"Certificate light\"</string>\n\n\t<!-- Wallet: Export Button im Zertifikat Detail -->\n\t<string name=\"wallet_certificate_detail_export_button\">\"Export\"</string>\n\n\t<!-- Wallet: Zertifikat Light Title -->\n\t<string name=\"wallet_certificate_light_detail_title\">\"What is the 'certificate light'?\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Titel -->\n\t<string name=\"wallet_certificate_light_detail_summary_title\">\"Certificate light\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 1 -->\n\t<string name=\"wallet_certificate_light_detail_summary_1\">\"Can only be used within Switzerland\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 2 -->\n\t<string name=\"wallet_certificate_light_detail_summary_2\">\"Only contains last name, first name, date of birth and electronic signature\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 3 -->\n\t<string name=\"wallet_certificate_light_detail_summary_3\">\"Only valid for a max of {LIGHT_CERT_VALIDITY_IN_H} hours\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 4 -->\n\t<string name=\"wallet_certificate_light_detail_summary_4\">\"Your COVID certificate is converted to the 'light' version online.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 5 -->\n\t<string name=\"wallet_certificate_light_detail_summary_5\">\"You can deactivate the 'light' version of the certificate and revert to the normal COVID certificate at any time.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivieren Button -->\n\t<string name=\"wallet_certificate_light_detail_deactivate_button\">\"Deactivate\"</string>\n\n\t<!-- Wallet: Zertifikat Light Deaktivieren Button -->\n\t<string name=\"wallet_certificate_light_detail_activate_button\">\"Activate\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation Error -->\n\t<string name=\"wallet_certificate_light_detail_activation_error\">\"'Certificate light' could not be activated\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Titel -->\n\t<string name=\"wallet_certificate_light_detail_activation_network_error_text\">\"The app must be online to activate the 'certificate light'.\"</string>\n\n\t<!-- Info Text bei erfolgreicher Prüfung einers Zertifikate Light -->\n\t<string name=\"verifier_verify_success_certificate_light_info\">\"Only valid within Switzerland\nand in combination with an identity document\"</string>\n\n\t<!-- Wallet: Zertifikat Export Title -->\n\t<string name=\"wallet_certificate_export_title\">\"Export COVID certificate\"</string>\n\n\t<!-- Wallet: Zertifikat Export Erklärung Punkt 1 -->\n\t<string name=\"wallet_certificate_export_summary_1\">\"A PDF is generated using the data from your COVID certificate that you can print or share.\"</string>\n\n\t<!-- Wallet: Zertifikat Export Erklärung Punkt 2 -->\n\t<string name=\"wallet_certificate_export_summary_2\">\"The PDF document is generated online.\"</string>\n\n\t<!-- Wallet: Zertifikat Export Button -->\n\t<string name=\"wallet_certificate_export_button\">\"Export\"</string>\n\n\t<!-- Wallet: Zertifikat Export Error Title -->\n\t<string name=\"wallet_certificate_export_detail_error_title\">\"PDF could not be generated\"</string>\n\n\t<!-- Wallet: Zertifikat Export Netzwerk Error -->\n\t<string name=\"wallet_certificate_export_detail_network_error_text\">\"The app must be online to generate a PDF.\"</string>\n\t<string name=\"accessibility_qr_code\">\"QR code\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Title -->\n\t<string name=\"wallet_certificate_light_detail_activation_network_error_title\">\"No Internet connection\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation General Fehler Text -->\n\t<string name=\"wallet_certificate_light_detail_activation_general_error_text\">\"Please try again later.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation General Fehler Titel -->\n\t<string name=\"wallet_certificate_light_detail_activation_general_error_title\">\"An unexpected error has occurred.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Titel -->\n\t<string name=\"wallet_certificate_light_title\">\"Certificate light\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Detail Title -->\n\t<string name=\"wallet_certificate_export_detail_title\">\"Export\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Summary 1 -->\n\t<string name=\"wallet_certificate_export_detail_summary_1\">\"A PDF is generated using the data from your COVID certificate that you can print or share.\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Summary 2 -->\n\t<string name=\"wallet_certificate_export_detail_summary_2\">\"The PDF document is generated online.\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail Export Button -->\n\t<string name=\"wallet_certificate_export_detail_export_button\">\"Export\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail Netzwerk Fehler -->\n\t<string name=\"wallet_certificate_export_detail_network_error_title\">\"No Internet connection\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail General Fehler -->\n\t<string name=\"wallet_certificate_export_detail_general_error_title\">\"An unexpected error has occurred\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail General Fehler Text -->\n\t<string name=\"wallet_certificate_export_detail_general_error_text\">\"An unexpected error has occurred. Please try again later.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Erklärungstext 1 -->\n\t<string name=\"wallet_certificate_light_detail_text_1\">\"When you activate the 'light' version of the certificate, a new QR code is generated using data from your COVID certificate that does not contain any health-related information.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Erklärungstext 2 -->\n\t<string name=\"wallet_certificate_light_detail_text_2\">\"While the regular COVID certificate can be used without restriction both in Switzerland and in the EU/EFTA during its period of validity, the 'light' version can only be used in Switzerland. For data protection reasons, the 'light' version has to be reactivated after {LIGHT_CERT_VALIDITY_IN_H} hours. It does not afford any additional rights to the normal COVID certificate.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Erklärungstext Bold -->\n\t<string name=\"wallet_certificate_light_detail_text_2_bold\">\"only has to does not\"</string>\n\n\t<!-- VoiceOver reads this when the expandable box is reduced -->\n\t<string name=\"accessibility_expandable_box_reduced_state\">\"reduced\"</string>\n\n\t<!-- VoiceOver reads this when the expandable box is expanded -->\n\t<string name=\"accessibility_expandable_box_expanded_state\">\"expanded\"</string>\n\n\t<!-- Header im Update Boarding-Screen -->\n\t<string name=\"wallet_update_boarding_header\">\"Update\"</string>\n\n\t<!-- Titel im Zertifikat Light-Screen -->\n\t<string name=\"wallet_update_boarding_certificate_light_title\">\"Certificate light\"</string>\n\n\t<!-- Text im Zertifikat Light-Screen -->\n\t<string name=\"wallet_update_boarding_certificate_light_text\">\"This update allows you to generate a copy of the certificate without health-related data for use in Switzerland. The privacy policy and terms of use have been updated accordingly. These are deemed to have been accepted if you continue to use the app.\"</string>\n\n\t<!-- Header im Update Boarding-Screen -->\n\t<string name=\"verifier_update_boarding_header\">\"Update\"</string>\n\n\t<!-- Titel im Zertifikat Light-Screen -->\n\t<string name=\"verifier_update_boarding_certificate_light_title\">\"Certificate light\"</string>\n\n\t<!-- Text im Zertifikat Light-Screen -->\n\t<string name=\"verifier_update_boarding_certificate_light_text\">\"This update allows you to check certificate copies without health-related data in the app. The privacy policy and terms of use have been updated accordingly. These are deemed to have been accepted if you continue to use the app.\"</string>\n\n\t<!-- Verifier: Die Gültigkeit eines Certificate Light ist abgelaufen -->\n\t<string name=\"verifier_certificate_light_error_expired\">\"Certificate validity\nexpired\"</string>\n\n\t<!-- Wallet: Badge für Light-Zertifikate in Liste Zertifikate -->\n\t<string name=\"wallet_certificate_list_light_certificate_badge\">\"Light\"</string>\n\t<string name=\"wallet_faq_questions_question_6\">\"What is the 'certificate light'\"</string>\n\n\t<!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n\t<string name=\"wallet_faq_questions_answer_6\">\"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. The 'certificate light' confirms that the holder has a valid COVID certificate but does not itself contain any health-related data.\n\nThis alternative to the COVID certificate which contains minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as COVID certificates contain certain health-related data such as the vaccine administered or the date of vaccination, which can also be seen. The 'certificate light' prevents this.\n\nThe 'certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons, the 'certificate light' is only valid for {LIGHT_CERT_VALIDITY_IN_H} hours and must then be reactivated. If you need to use the normal certificate before the end of the {LIGHT_CERT_VALIDITY_IN_H}-hour period, you can simply deactivate the 'certificate light'.\"</string>\n\t<string name=\"verifier_faq_works_question_8\">\"What is the 'certificate light'\"</string>\n\n\t<!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n\t<string name=\"verifier_faq_works_answer_8\">\"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. This 'certificate light' merely shows that the holder has a valid COVID certificate but does not contain any health-related data. \n\nThe alternative to the COVID certificate containing minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as third parties using apps they have developed themselves could be able to see health-related data such as the vaccine administered or date of vaccination when checking the certificate. The 'certificate light' prevents this.\n\nThe 'Certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons the 'certificate light' is only valid for {LIGHT_CERT_VALIDITY_IN_H} hours and must then be reactivated. If you need to use the normal certificate before the end of the {LIGHT_CERT_VALIDITY_IN_H}-hour period, you can simply deactivate the 'certificate light'.\"</string>\n\t<string name=\"verifier_faq_works_question_9\">\"How can a 'certificate light' be converted back into an EU/EFTA-compliant COVID certificate?\"</string>\n\t<string name=\"verifier_faq_works_answer_9\">\"The holder can deactivate a 'certificate light' any time in their COVID Certificate app. After that their normal COVID certificate is available again.\"</string>\n\n\t<!-- Wallet: Light Zertifikat Accessibility Gültigkeits Label {TIMESPAN} wird ersetzt durch zB. 5 Stunden 3 Minuten -->\n\t<string name=\"wallet_accessibility_light_certificate_expiration_timer\">\"Valid for {TIMESPAN}\"</string>\n\n\t<!-- Toast Text wenn ein Transfer Code durch Klicken kopiert wurde -->\n\t<string name=\"wallet_transfer_code_copied\">\"Transfer code copied\"</string>\n\t<string name=\"wallet_faq_works_question_2_1\">\"What is a transfer code?\"</string>\n\t<string name=\"wallet_faq_works_answer_2_1\">\"Transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you’ll receive your certificate directly in the app after a COVID test or a COVID-19 vaccination.\"</string>\n\t<string name=\"wallet_faq_works_question_5_1\">\"I only have my COVID certificate electronically in the app. How can I get the certificate as a PDF or on paper?\"</string>\n\t<string name=\"wallet_faq_works_answer_5_1\">\"In the detailed view of the electronic COVID certificate in the COVID Certificate app you’ll find the Export function. You can use this to generate, save and print a PDF\"</string>\n\n\t<!-- wallet android app google play store deep link -->\n\t<string name=\"wallet_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.wallet\"</string>\n\n\t<!-- verifer android app google play store deep link -->\n\t<string name=\"verifier_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.verifier\"</string>\n\n\t<!-- Wallet: Titel Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n\t<string name=\"wallet_certificate_light_rate_limit_title\">\"24h-limit reached\"</string>\n\n\t<!-- Wallet: Text Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n\t<string name=\"wallet_certificate_light_rate_limit_text\">\"The 'certificate light' has been activated too often within the last 24 hours.\"</string>\n\t<string name=\"error_file_import_title\">\"Import unsuccessful\"</string>\n\t<string name=\"error_file_import_text\">\"The file contains either an invalid QR code or the QR code was not able to be recognised.\"</string>\n\n\t<!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten titel -->\n\t<string name=\"wallet_transfer_code_unexpected_error_title\">\"Unexpected error\"</string>\n\n\t<!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten text -->\n\t<string name=\"wallet_transfer_code_unexpected_error_text\">\"Please contact support\"</string>\n\n\t<!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten telefon nummer -->\n\t<string name=\"wallet_transfer_code_unexpected_error_phone_number\">\"+41 58 466 07 99\"</string>\n\t<string name=\"error_corrupt_sharedprefs_title\">\"Decryption error\"</string>\n\t<string name=\"error_corrupt_sharedprefs_text\">\"One of the app's data storage areas could not be decrypted. To continue using the app, the storage area will have to be deleted and recreated. Data will be lost in the process.\"</string>\n\n\t<!-- Einstellungen: Titel -->\n\t<string name=\"settings_title\">\"Settings\"</string>\n\n\t<!-- Einstellungen: Titel Sprachauswahl -->\n\t<string name=\"language_title\">\"Language\"</string>\n\n\t<!-- Information about the date format (always english) -->\n\t<string name=\"wallet_certificate_detail_date_format_info\">\"Date format used: dd.mm.yyyy\"</string>\n\t<string name=\"wallet_certificate_test_holder_and_name\">\"Manufacturer and Name\"</string>\n\n\t<!-- Wallet: Fehler-Titel falls Uhrzeit falsch eingestellt bei Transfer-Code -->\n\t<string name=\"wallet_transfer_code_time_inconsistency_title\">\"Time error\"</string>\n\n\t<!-- Wallet: Transfer-Code Fehler-Text, falls Zeit falsch eingestellt -->\n\t<string name=\"wallet_transfer_code_time_inconsistency_text\">\"The time must be set correctly for transfer codes to work. Adjust the time and try again.\"</string>\n\n\t<!-- Toast Text wenn ein UVCI durch Klicken kopiert wurde -->\n\t<string name=\"wallet_uvci_copied\">\"UVCI copied\"</string>\n\n\t<!-- canton name ag -->\n\t<string name=\"vaccination_booking_ag_name\">\"Aargau\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ag -->\n\t<string name=\"vaccination_booking_ag_url\">\"https://www.ag.ch/coronavirus-impfung\"</string>\n\n\t<!-- canton name ar -->\n\t<string name=\"vaccination_booking_ar_name\">\"Appenzell Ausserrhoden\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ar -->\n\t<string name=\"vaccination_booking_ar_url\">\"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"</string>\n\n\t<!-- canton name ai -->\n\t<string name=\"vaccination_booking_ai_name\">\"Appenzell Innerrhoden\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ai -->\n\t<string name=\"vaccination_booking_ai_url\">\"https://www.ai.ch/coronavirus-impfung\"</string>\n\n\t<!-- canton name bl -->\n\t<string name=\"vaccination_booking_bl_name\">\"Basel-Country\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton bl -->\n\t<string name=\"vaccination_booking_bl_url\">\"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/englisch-english\"</string>\n\n\t<!-- canton name bs -->\n\t<string name=\"vaccination_booking_bs_name\">\"Basel-City\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton bs -->\n\t<string name=\"vaccination_booking_bs_url\">\"http://www.coronaimpfzentrumbasel.ch\"</string>\n\n\t<!-- canton name be -->\n\t<string name=\"vaccination_booking_be_name\">\"Berne\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton be -->\n\t<string name=\"vaccination_booking_be_url\">\"http://www.be.ch/corona-impfung\"</string>\n\n\t<!-- canton name fr -->\n\t<string name=\"vaccination_booking_fr_name\">\"Fribourg\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton fr -->\n\t<string name=\"vaccination_booking_fr_url\">\"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"</string>\n\n\t<!-- canton name ge -->\n\t<string name=\"vaccination_booking_ge_name\">\"Geneva\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ge -->\n\t<string name=\"vaccination_booking_ge_url\">\"https://www.ge.ch/en/getting-vaccinated-against-covid-19\"</string>\n\n\t<!-- canton name gl -->\n\t<string name=\"vaccination_booking_gl_name\">\"Glarus\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton gl -->\n\t<string name=\"vaccination_booking_gl_url\">\"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"</string>\n\n\t<!-- canton name gr -->\n\t<string name=\"vaccination_booking_gr_name\">\"Graubünden\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton gr -->\n\t<string name=\"vaccination_booking_gr_url\">\"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"</string>\n\n\t<!-- canton name ju -->\n\t<string name=\"vaccination_booking_ju_name\">\"Jura\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ju -->\n\t<string name=\"vaccination_booking_ju_url\">\"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"</string>\n\n\t<!-- canton name lu -->\n\t<string name=\"vaccination_booking_lu_name\">\"Lucerne\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton lu -->\n\t<string name=\"vaccination_booking_lu_url\">\"http://www.lu.ch/covid_impfung\"</string>\n\n\t<!-- canton name ne -->\n\t<string name=\"vaccination_booking_ne_name\">\"Neuchâtel\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ne -->\n\t<string name=\"vaccination_booking_ne_url\">\"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"</string>\n\n\t<!-- canton name nw -->\n\t<string name=\"vaccination_booking_nw_name\">\"Nidwalden\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton nw -->\n\t<string name=\"vaccination_booking_nw_url\">\"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"</string>\n\n\t<!-- canton name ow -->\n\t<string name=\"vaccination_booking_ow_name\">\"Obwalden\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ow -->\n\t<string name=\"vaccination_booking_ow_url\">\"https://www.ow.ch/dienstleistungen/7129\"</string>\n\n\t<!-- canton name sg -->\n\t<string name=\"vaccination_booking_sg_name\">\"St. Gallen\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton sg -->\n\t<string name=\"vaccination_booking_sg_url\">\"https://www.sg.ch/coronavirus/impfen\"</string>\n\n\t<!-- canton name sh -->\n\t<string name=\"vaccination_booking_sh_name\">\"Schaffhausen\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton sh -->\n\t<string name=\"vaccination_booking_sh_url\">\"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"</string>\n\n\t<!-- canton name sz -->\n\t<string name=\"vaccination_booking_sz_name\">\"Schwyz\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton sz -->\n\t<string name=\"vaccination_booking_sz_url\">\"https://www.sz.ch/corona-impfen\"</string>\n\n\t<!-- canton name so -->\n\t<string name=\"vaccination_booking_so_name\">\"Solothurn\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton so -->\n\t<string name=\"vaccination_booking_so_url\">\"https://so.ch/coronaimpfung\"</string>\n\n\t<!-- canton name tg -->\n\t<string name=\"vaccination_booking_tg_name\">\"Thurgovia\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton tg -->\n\t<string name=\"vaccination_booking_tg_url\">\"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"</string>\n\n\t<!-- canton name ti -->\n\t<string name=\"vaccination_booking_ti_name\">\"Ticino\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ti -->\n\t<string name=\"vaccination_booking_ti_url\">\"http://www.ti.ch/vaccinazione\"</string>\n\n\t<!-- canton name ur -->\n\t<string name=\"vaccination_booking_ur_name\">\"Uri\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ur -->\n\t<string name=\"vaccination_booking_ur_url\">\"https://www.ur.ch/themen/3673\"</string>\n\n\t<!-- canton name vs -->\n\t<string name=\"vaccination_booking_vs_name\">\"Valais\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton vs -->\n\t<string name=\"vaccination_booking_vs_url\">\"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"</string>\n\n\t<!-- canton name vd -->\n\t<string name=\"vaccination_booking_vd_name\">\"Vaud\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton vd -->\n\t<string name=\"vaccination_booking_vd_url\">\"https://vd.ch/coronavirus-vaccins\"</string>\n\n\t<!-- canton name zg -->\n\t<string name=\"vaccination_booking_zg_name\">\"Zug\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton zg -->\n\t<string name=\"vaccination_booking_zg_url\">\"https://www.corona-impfung-zug.ch/en/\"</string>\n\n\t<!-- canton name zh -->\n\t<string name=\"vaccination_booking_zh_name\">\"Zürich\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton zh -->\n\t<string name=\"vaccination_booking_zh_url\">\"http://www.zh.ch/coronaimpfung\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_2\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_2\">\"Being vaccinated against COVID-19 means hassle-free travel to most countries. \"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_3\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_3\">\"Being vaccinated against COVID-19 means protection from infection and severe disease. \"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_4\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_4\">\"Being vaccinated against COVID-19 means immunity the safe way.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_5\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_5\">\"Being vaccinated against COVID-19 means helping to reduce the disease burden. \"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_6\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_6\">\"Being vaccinated against COVID-19 means helping to control the impact of the pandemic. \"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_7\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_7\">\"Being vaccinated against COVID-19 means preventing long COVID.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_8\">\"Get vaccinated today!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_8\">\"Being vaccinated against COVID-19 means helping to relieve the pressure on the health system.\"</string>\n\n\t<!-- vaccination booking info screen title -->\n\t<string name=\"vaccination_booking_info_title\">\"Book a vaccination appointment near you\"</string>\n\n\t<!-- vaccination booking info screen text -->\n\t<string name=\"vaccination_booking_info_text\">\"Vaccination may be performed at the following locations near you:\n\n- at specific vaccination centres\n- in hospitals\n- at your general practitioner's surgery\n- at a vaccination pharmacy\n\nMany places also offer walk-in vaccinations without an appointment.\"</string>\n\n\t<!-- vaccination booking info screen info box at bottom -->\n\t<string name=\"vaccination_booking_info_info\">\"The COVID-19 vaccination is recommended for those over 5. \"</string>\n\n\t<!-- Header on vaccination appointment screen -->\n\t<string name=\"vaccination_appointment_header\">\"Vaccination appointment\"</string>\n\n\t<!-- Book vaccination appointment button title on homescreen -->\n\t<string name=\"vaccination_homescreen_button_title\">\"Book a vaccination appointment\"</string>\n\n\t<!-- Choose your canton title in vaccination appointment screen -->\n\t<string name=\"vaccination_choose_your_canton\">\"Select your canton\"</string>\n\n\t<!-- Link title for more information about the vaccine -->\n\t<string name=\"vaccination_more_information_title\">\"More information about the COVID-19 vaccination\"</string>\n\n\t<!-- Button text for information about the vaccine at the bottom of the certificate -->\n\t<string name=\"vaccination_information_button_in_certificate\">\"Information on vaccination \"</string>\n\n\t<!-- Vaccination Booking Info URL Link -->\n\t<string name=\"vaccination_booking_info_url\">\"https://foph-coronavirus.ch/vaccination/\"</string>\n\n\t<!-- Show information if special hardware detected  -->\n\t<string name=\"verifier_qr_scanner_external_hardware_detected\">\"External hardware scanner detected\"</string>\n\n\t<!-- Error popup reset button text -->\n\t<string name=\"error_decryption_reset_button\">\"Reset\"</string>\n\n\t<!-- Text Certificate Could not be loaded {ERROR_CODE} gets replaces with the error code -->\n\t<string name=\"error_decryption_text\">\"Certificates could not be loaded\n\nCode: {ERROR_CODE}\"</string>\n\t<string name=\"covid_certificate_sero_positiv_test_title\">\"Recovery (Antibody)\"</string>\n\t<string name=\"wallet_time_inconsistency_error_title\">\"Checking not possible\"</string>\n\t<string name=\"wallet_time_inconsistency_error_text\">\"Date, time or time zone on the device are set incorrectly.\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_title\">\"Do you want to check certificates?\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_text\">\"For quicker checking that is data privacy compliant, use the COVID Certificate Check app\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_button_check_app\">\"To the Check-App\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_close\">\"Understood\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_text_bold\">\"«COVID Certificate Check»-App.\"</string>\n\t<string name=\"wallet_only_valid_in_switzerland\">\"Not valid outside Switzerland\"</string>\n\t<string name=\"covid_certificate_sero_positiv_test_befund_label\">\"Finding\"</string>\n\t<string name=\"covid_certificate_sero_positiv_test_befund_value\">\"Sufficient\"</string>\n\n\t<!-- Ausnahme Test Zertifikat Detail: Titel für Startdatum des Attests -->\n\t<string name=\"wallet_certificate_ausnahme_test_attest_start_date\">\"Start of validity\"</string>\n\n\t<!-- Ausnahme Test Zertifikat Detail: Titel für verantwortliche Stelle für Ausstellung -->\n\t<string name=\"wallet_certificate_ausnahme_responsible_issuer\">\"Issuing office\"</string>\n\n\t<!-- Testname für Schweizer Ausnahme Zertifikat für Nicht-Testbare und Nicht-Impfbare Personen -->\n\t<string name=\"covid_certificate_ch_ausnahme_test_title\">\"Exemption certificate\"</string>\n\t<string name=\"infobox_update_title\">\"New version available\"</string>\n\t<string name=\"infobox_update_text\">\"Download the latest version of the app.\"</string>\n\t<string name=\"infobox_update_button\">\"Update\"</string>\n\n\t<!-- vaccination booking  screen info about Impf-Check (impf-check.ch) -->\n\t<string name=\"vaccination_impf_check_info_text\">\"The COVID-19 Vaccination Check provides information on initial and booster vaccinations and guides you to the relevant point of contact in your canton.\"</string>\n\n\t<!-- button title for link to impf-check.ch -->\n\t<string name=\"vaccination_impf_check_action\">\"To the Vaccination Check\"</string>\n\n\t<!-- URL to ImpfCheck -->\n\t<string name=\"vaccination_impf_check_url\">\"https://covid19.impf-check.ch/\"</string>\n\t<string name=\"vaccination_impf_check_title\">\"Book an appointment now\"</string>\n\t<string name=\"verifier_faq_works_linktext_1\">\"Explanatory video\"</string>\n\t<string name=\"verifier_faq_works_linkurl_1\">\"https://youtu.be/spfVPMqukjM\"</string>\n\n\t<!-- Title of button to choose verification mode -->\n\t<string name=\"verifier_choose_mode_button_title\">\"Select\"</string>\n\n\t<!-- 👍 -->\n\t<!-- Verifier app scan button with indication of mode -->\n\t<string name=\"verifier_homescreen_scan_button_with_mode\">\"Verify ({MODE})\"</string>\n\n\t<!-- error if scan was performed with a no longer existing mode -->\n\t<string name=\"verifier_error_mode_no_longer_exists\">\"Your selected verification mode no longer exists.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- title for info pop-up in wallet app describing the validation states for the different check modes -->\n\t<string name=\"wallet_check_mode_info_title\">\"Info\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 2G OK state -->\n\t<string name=\"wallet_check_mode_info_2g_ok_text\">\"Access to organisations and events permitted for people who have been vaccinated or who have recovered.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 2G NOT OK state -->\n\t<string name=\"wallet_check_mode_info_2g_not_ok_text\">\"Access not permitted.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> display name of check mode 3G -->\n\t<string name=\"verifier_check_mode_info_3g_title\">\"3G\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> display name of check mode 2G -->\n\t<string name=\"verifier_check_mode_info_2g_title\">\"2G\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n\t<string name=\"verifier_check_mode_info_3g_text_1\">\"For organisations and events applying the 3G rule.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n\t<string name=\"verifier_check_mode_info_3g_text_2\">\"In this mode, COVID certificates are accepted for people who have been vaccinated, or who have recovered or tested negative.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n\t<string name=\"verifier_check_mode_info_3g_text_3\">\"It is possible to verify a \\\"light\\\" certificate in this mode.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n\t<string name=\"verifier_check_mode_info_2g_text_1\">\"For organisations and events applying the 2G rule.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n\t<string name=\"verifier_check_mode_info_2g_text_2\">\"In this mode, COVID certificates are accepted for people who have been vaccinated or who have recovered.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n\t<string name=\"verifier_check_mode_info_2g_text_3\">\"It is not possible to verify a \\\"light\\\" certificate in this mode.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- Verifier: Modus auswählen Titel -->\n\t<string name=\"verifier_mode_title\">\"Verification mode\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 3G OK state -->\n\t<string name=\"wallet_check_mode_info_3g_ok_text\">\"Access to organisations and events permitted for people who have been vaccinated, or who have recovered or tested negative.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 3G NOT OK state -->\n\t<string name=\"wallet_check_mode_info_3g_not_ok_text\">\"Access not permitted.\"</string>\n\n\t<!-- Titel für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n\t<string name=\"verifier_verify_light_not_supported_by_mode_title\">\"The COVID certificate being verified is a \\\"light\\\" certificate. This cannot be verified in {MODUS} verification mode.\"</string>\n\n\t<!-- Text für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n\t<string name=\"verifier_verify_light_not_supported_by_mode_text\">\"In this case, the certificate can be verified only if the conversion to a \\\"light\\\" certificate is reversed.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n\t<string name=\"verifier_check_mode_info_unselected_text_1\">\"Select the verification mode that you want to use for verifying COVID certificates.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n\t<string name=\"verifier_check_mode_info_unselected_text_2\">\"The verification mode can be changed at any time.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> display name of check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_title\">\"2G+\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_1\">\"For organisations and events applying the 2G+ rule.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_2\">\"In addition to a COVID certificate for people who have been vaccinated or who have recovered, a valid test certificate is required. This must be verified separately.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_3\">\"Exceptions: People who have been fully vaccinated, received a booster vaccination or recovered (based on a PCR test) no longer than 120 days ago\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_4\">\"It is not possible to verify \\\"light\\\" certificates in this mode.\"</string>\n\n\t<!-- 2G+: Anzeige, dass Zertifikat 2G erfüllt -->\n\t<string name=\"verifier_2g_plus_success2g\">\"Valid COVID certificate under the 2G rule\"</string>\n\n\t<!-- 2G+: Info, dass Zertifikat + erfüllt -->\n\t<string name=\"verifier_2g_plus_successplus\">\"Valid COVID certificate for people who have been tested.\"</string>\n\n\t<!-- Verifier: 2G+ Info, dass noch + nötig -->\n\t<string name=\"verifier_2g_plus_infoplus\">\"Permitted for 2G+ only when combined with a valid test certificate.\"</string>\n\n\t<!-- Verifier: 2G+ Info dass noch 2G nötig -->\n\t<string name=\"verifier_2g_plus_info2g\">\"Permitted for 2G+ only when combined with verification of a COVID certificate for people who have been vaccinated or have recovered.\"</string>\n\n\t<!-- Prüfung fehlgeschlagen App update nötig -->\n\t<string name=\"verifier_error_app_store_text\">\"To verify this type of COVID certificate, you must have the latest version of the app. Please update your app and repeat the verification process.\"</string>\n\n\t<!-- Button Text für Prüfung fehlgeschlagen App update nötig  -->\n\t<string name=\"verifier_error_app_store_button\">\"To the App Store\"</string>\n\n\t<!-- check app -> check mode select pop-up -> display name of check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_title\">\"Test certificate\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_text_1\">\"For areas in which a valid test certificate is required.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_text_2\">\"In this mode, COVID certificates are accepted for people who have tested negative based on a PCR or rapid antigen test.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_text_3\">\"It is not possible to verify \\\"light\\\" certificates in this mode.\"</string>\n\n\t<!-- wallet refresh button removal info box text -->\n\t<string name=\"wallet_refresh_button_info_text_1\">\"The \\\"Refresh button\\\" has been removed.\"</string>\n\n\t<!-- wallet refresh button removal info box text -->\n\t<string name=\"wallet_refresh_button_info_text_2\">\"If your COVID certificate has expired or is technically invalid, this is indicated directly on the certificate.\"</string>\n\n\t<!-- wallet refresh button removal info box text -->\n\t<string name=\"wallet_refresh_button_info_text_3\">\"COVID certificates are to be verified with the \\\"COVID Certificate Check\\\" app.\"</string>\n\n\t<!-- wallet refresh button removal info box fat title above text 3 -->\n\t<string name=\"wallet_refresh_button_info_fat_title_3\">\"For verifiers\"</string>\n\n\t<!-- wallet refresh button removal info box link text -->\n\t<string name=\"wallet_refresh_button_info_link_text\">\"To find out more\"</string>\n\n\t<!-- wallet refresh button removal info box link url -->\n\t<string name=\"wallet_refresh_button_info_link_url\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1851413288\"</string>\n\n\t<!-- text for info pop-up in wallet app describing 2G+ OK state -->\n\t<string name=\"wallet_check_mode_info_2g_plus_ok_text\">\"Access to organisations and events permitted for people who have been fully vaccinated, have received a booster jab or have recovered (based on PCR test results) in the preceding 120 days; an additional test certificate is not required.\"</string>\n\n\t<!-- text for info pop-up in wallet app describing 2G+ NOT OK state -->\n\t<string name=\"wallet_check_mode_info_2g_plus_not_ok_text\">\"To gain access to organisations and events, a negative test result is required in addition to the COVID certificate for people who have been vaccinated or have recovered.\"</string>\n\n\t<!-- wallet refresh button removal info box title -->\n\t<string name=\"wallet_refresh_button_info_title\">\"Info\"</string>\n\n\t<!-- Ausnahme-Zertifikat: Medizinisches Attest ausgestellt in -->\n\t<string name=\"wallet_certificate_ausnahme_issued_country\">\"Medical certificate issued in\"</string>\n\n\t<!-- Wallet: Hinweis im Zertifikat Detail für Ausnahme Zertifikat -->\n\t<string name=\"wallet_certificate_detail_note_ausnahme\">\"This certificate is not a travel document.\n&lt;br /&gt;&lt;br /&gt;\nThis certificate is only valid for a limited period of time. You can check the current duration of validity in Switzerland at any time using the COVID Certificate app.\"</string>\n\n\t<!-- Wallet: Ausnahme Label für Liste -->\n\t<string name=\"covid_certificate_ch_ausnahme_list_label\">\"Exception\"</string>\n\n\t<!-- Wallet: Titel von einem positivem Antigen-Test -->\n\t<string name=\"covid_certificate_antigen_positive_test\">\"Recovery (Antigen Rapid Test)\"</string>\n\n\t<!-- Wallet: Antigen Positive Titel von Testdatum -->\n\t<string name=\"wallet_certificate_antigen_positive_date\">\"Date of first positive test result\"</string>\n\n\t<!-- Wallet: Blaue Box für positiven Antigen-Test -->\n\t<string name=\"wallet_certificate_detail_note_positive_antigen\">\"This certificate is not a travel document.\n&lt;br /&gt;&lt;br /&gt;\nThis certificate is only valid for a limited period of time. You can check the current duration of validity in Switzerland at any time using the COVID Certificate app.\"</string>\n\n\t<!-- banner title on homescreen. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_homescreen_title\">\"Imminent expiry\"</string>\n\n\t<!-- banner title in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_title\">\"Info\"</string>\n\n\t<!-- banner text in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_text\">\"This certificate will soon expire.\"</string>\n\n\t<!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_more_info\">\"More information?\"</string>\n\n\t<!-- title for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_title\">\"Info\"</string>\n\n\t<!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text1\"></string>\n\n\t<!-- bold text box for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_bold_text\">\"This COVID certificate is valid for only a few more days. Please note the expiry date shown on the certificate.\"</string>\n\n\t<!-- link text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_text\">\"And now?\"</string>\n\n\t<!-- link url for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_url\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/what-should-i-do-if-my-covid-certificate-about-expire-under-swiss-rules-validity\"</string>\n\n\t<!-- banner title on homescreen. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_homescreen_title\">\"Shortened period of validity\"</string>\n\n\t<!-- banner title in certificate detail view. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_detail_title\">\"Shortened period of validity\"</string>\n\n\t<!-- banner text in certificate detail view. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_detail_text\">\"This certificate will soon expire.\"</string>\n\n\t<!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_detail_more_info\">\"More information\"</string>\n\n\t<!-- title for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_title\">\"Info\"</string>\n\n\t<!-- text for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_text1\">\"As of 31 Jan 2022 a shortened period of validity of 270 instead of 365 days applies to COVID vaccination or recovery certificates in Switzerland. This certificate is directly affected by the shortened period of validity:\"</string>\n\n\t<!-- bold text box for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_bold_text\">\"This COVID certificate can no longer be used after 31 Jan 2022 as the period of validity will already have expired.\"</string>\n\n\t<!-- link text for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_text\">\"More information\"</string>\n\n\t<!-- link url for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_url\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-period-validity-certificates-vaccination-or-recovery-being-shortened-365-270\"</string>\n\n\t<!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text2\"></string>\n\t<string name=\"infobox_generic_title\">\"Back up your certificate!\"</string>\n\t<string name=\"infobox_generic_text\">\"If you uninstall the app or change or lose your smartphone, you will also lose your COVID certificates.\nThis means you should also keep a copy of your certificates outside the app by exporting them as PDFs.\"</string>\n\t<string name=\"infobox_generic_button\">\"Find out more\"</string>\n\t<string name=\"infobox_generic_url_android\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/i-only-have-my-covid-certificate-electronically-covid-certificate-app-how-can-i\"</string>\n\t<string name=\"infobox_generic_url_ios\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/i-only-have-my-covid-certificate-electronically-covid-certificate-app-how-can-i\"</string>\n\n\t<!-- accessibilityLabel for the \"1\"-icon -->\n\t<string name=\"wallet_scanner_how_it_works_accessibility_icon1\">\"First\"</string>\n\n\t<!-- accessibilityLabel for the \"2\"-icon -->\n\t<string name=\"wallet_scanner_how_it_works_accessibility_icon2\">\"Second\"</string>\n\n\t<!-- accessibilityLabel for the \"3\"-icon -->\n\t<string name=\"wallet_scanner_how_it_works_accessibility_icon3\">\"Third\"</string>\n\n\t<!-- Reise-Check: Label des Buttons um Gültigkeit im Ausland zu prüfen -->\n\t<string name=\"wallet_foreign_rules_check_button\">\"Validity abroad\"</string>\n\n\t<!-- Reise-Check: Titel des Reise-Check Screens -->\n\t<string name=\"wallet_foreign_rules_check_title\">\"Validity for travel abroad\"</string>\n\n\t<!-- Reise-Check: Untertitel des Reise-Check Screens -->\n\t<string name=\"wallet_foreign_rules_check_subtitle\">\"Before you travel abroad, find out whether your COVID certificate will be valid at the moment you enter your destination country.\"</string>\n\n\t<!-- Reise-Check: Titel der Länder- und Datumsauswahl -->\n\t<string name=\"wallet_foreign_rules_check_form_title\">\"Check for:\"</string>\n\n\t<!-- Reise-Check: Label des Länder Eingabefeldes -->\n\t<string name=\"wallet_foreign_rules_check_country_label\">\"Country:\"</string>\n\n\t<!-- Reise-Check: Wert wenn kein Land ausgewählt -->\n\t<string name=\"wallet_foreign_rules_check_country_empty_label\">\"Select\"</string>\n\n\t<!-- Reise-Check: Label des Datum Eingabefeldes -->\n\t<string name=\"wallet_foreign_rules_check_date_label\">\"Entering on:\"</string>\n\n\t<!-- Reise-Check: Fehlermeldung wenn Datum in der Vergangenheit liegt -->\n\t<string name=\"wallet_foreign_rules_check_date_in_past_error\">\"Time entered is in the past\"</string>\n\n\t<!-- Reise-Check: Titel des Hinweise Abschnittes -->\n\t<string name=\"wallet_foreign_rules_check_hints_title\">\"Please note\"</string>\n\n\t<!-- Reise-Check: Label für den Mehr Informationen Button -->\n\t<string name=\"wallet_foreign_rules_check_hints_more_info_label\">\"You’ll find further information at\"</string>\n\n\t<!-- Reise-Check: Prüfstatus wenn noch kein Land ausgewählt wurde -->\n\t<string name=\"wallet_foreign_rules_check_state_empty\">\"Please select a country and date of entry.\"</string>\n\n\t<!-- Reise-Check: Titel des Auswahldialoges für das Land -->\n\t<string name=\"wallet_foreign_rules_check_country_picker_title\">\"Select country\"</string>\n\n\t<!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat gültig ist -->\n\t<string name=\"wallet_foreign_rules_check_state_valid\">\"Valid for entry to:\"</string>\n\n\t<!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat ungültig ist -->\n\t<string name=\"wallet_foreign_rules_check_state_invalid\">\"Not valid for entry to:\"</string>\n\n\t<!-- Reise-Check: Zweite Zeile des Prüfstatus wenn Zertifikat (un-)gültig ist. {COUNTRY} und {DATE} nicht übersetzen -->\n\t<string name=\"wallet_foreign_rules_check_state_country_and_date\">\"{COUNTRY}, {DATE}\"</string>\n\n\t<!-- Error-Titel falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n\t<string name=\"wallet_foreign_rules_check_error_title\">\"Error while loading available countries\"</string>\n\n\t<!-- Error-Text falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n\t<string name=\"wallet_foreign_rules_check_network_error_text\">\"To check certificate validity your smartphone must be connected to the internet.\"</string>\n\n\t<!-- Reisefeature: Hinweis 1 -->\n\t<string name=\"wallet_foreign_rules_check_hint_2\">\"Entry rules can change. So check the validity shortly before you depart, and go online to make sure of the latest entry rules for your destination country.\"</string>\n\n\t<!-- Reisefeature: Hinweis 2 -->\n\t<string name=\"wallet_foreign_rules_check_hint_3\">\"The above information relates only to the rules for entering your destination country. Different rules may apply to settings where a certificate is required within the country.\"</string>\n\n\t<!-- Reisefeature: Hinweis 3 -->\n\t<string name=\"wallet_foreign_rules_check_hint_1\">\"The federal government assumes no liability for the up-to-dateness or completeness of the information provided.\"</string>\n\n\t<!-- Reisefeature: Hinweis 4 -->\n\t<string name=\"wallet_foreign_rules_check_hint_4\">\"Couldn’t find the country you were looking for? Not all countries accept COVID certificates; it might also be that no entry rules have been made available.\"</string>\n\n\t<!-- Reisefeature: Text des Mehr Infos Buttons -->\n\t<string name=\"wallet_foreign_rules_check_hints_more_info_link_text\">\"reopen.europa.eu\"</string>\n\n\t<!-- Reisefeature: URL die geöffnet wird wenn auf den Mehr Info Button geklickt wird -->\n\t<string name=\"wallet_foreign_rules_check_hints_more_info_link_url\">\"https://reopen.europa.eu/\"</string>\n\n\t<!-- RAT-Umwandlung:  Titel bei Zertifikat -->\n\t<string name=\"rat_conversion_overview_title\">\"New: EU-compatible version\"</string>\n\n\t<!-- RAT-Umwandlung: Text bei Zertifikat -->\n\t<string name=\"rat_conversion_overview_text\">\"You can request an EU-compatible version of this COVID certificate.\"</string>\n\n\t<!-- RAT-Umwandlung: Button-Text zu Umwandlung Detail -->\n\t<string name=\"rat_conversion_overview_button\">\"Find out more\"</string>\n\n\t<!-- RAT-Umwandlung: Titel Detail -->\n\t<string name=\"rat_conversion_title\">\"Apply for a COVID certificate (EU-compatible)\"</string>\n\n\t<!-- RAT-Umwandlung: Text auf Detail -->\n\t<string name=\"rat_conversion_text\">\"COVID recovery certificates issued on the basis of rapid antigen tests are now also accepted in the EU.\n\nYou have the option of requesting an EU-compatible version of this certificate via the National Application Office.\"</string>\n\n\t<!-- RAT-Umwandlung: Title bei Formular-Verlinkung -->\n\t<string name=\"rat_conversion_form_title\">\"To the National Application Office's online form\"</string>\n\n\t<!-- Rat-Umwandlung: Text zum Formular -->\n\t<string name=\"rat_conversion_form_text\">\"I give my consent for the data in this COVID certificate to be transferred to the form of the National Application Office (a website of the Swiss federal government).\"</string>\n\n\t<!-- RAT-Umwandlung: Absprung Button -->\n\t<string name=\"rat_conversion_form_button\">\"To the form\"</string>\n\n\t<!-- RAT-Umwandlung: Linktext zur Webseite nationale Antragsstelle -->\n\t<string name=\"rat_conversion_link_antragsstelle\">\"National Application Office website (no data transferred)\"</string>\n\n\t<!-- RAT-Umwandlung: Info Text 1 -->\n\t<string name=\"rat_conversion_info1_text\">\"If your application is successful, the new EU-compatible COVID certificate will be sent to you by post and can then be transferred by you to the app. It is not possible for the certificate to be sent direct to the app.\"</string>\n\n\t<!-- RAT-Umwandlung: Info 2 Text -->\n\t<string name=\"rat_conversion_info2_text\">\"Transferring the certificate data to the National Application Office’s online form makes it easier to validate your application.\"</string>\n\n\t<!-- Die URL für das Formular, mit dem für ein RAT Genesungszert ein reguläres Genesungszert beantragt werden kann -->\n\t<string name=\"wallet_rat_recovery_conversion_url\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\n\t<!-- RAT-Umwandlung: Titel vor Infos -->\n\t<string name=\"rat_conversion_info_title\">\"Further information\"</string>\n\n\t<!-- cert renewal general info heading -->\n\t<string name=\"cert_renewal_info_info_heading\">\"What does this mean?\"</string>\n\n\t<!-- cert renewal general info text 1 -->\n\t<string name=\"cert_renewal_info_info_text_1\">\"The QR codes used for COVID certificates have limited technical validity\"</string>\n\n\t<!-- cert renewal general info text 2 -->\n\t<string name=\"cert_renewal_info_info_text_2\">\"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"</string>\n\n\t<!-- cert renewal general info text 3 -->\n\t<string name=\"cert_renewal_info_info_text_3\">\"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"</string>\n\n\t<!-- cert renewal general info text 4 -->\n\t<string name=\"cert_renewal_info_info_text_4\">\"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"</string>\n\n\t<!-- cert renewal info heading for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_heading\">\"What does this mean?\"</string>\n\n\t<!-- cert renewal text 1 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_1\">\"The QR codes used for COVID certificates have limited technical validity.\"</string>\n\n\t<!-- cert renewal text 2 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_2\">\"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"</string>\n\n\t<!-- cert renewal text 3 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_3\">\"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"</string>\n\n\t<!-- cert renewal text 4 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_4\">\"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"</string>\n\n\t<!-- cert renewal info heading for renewed certificates -->\n\t<string name=\"cert_renewal_info_renewed_heading\">\"Important!\"</string>\n\n\t<!-- cert renewal text 1 for renewed certificates -->\n\t<string name=\"cert_renewal_info_renewed_text_1\">\"Also replace certificates you have previously printed out or stored with this renewed version.\"</string>\n\n\t<!-- cert renewal text 2 for renewed certificates -->\n\t<string name=\"cert_renewal_info_renewed_text_2\">\"The length of time for which a vaccination is recognised in a particular country is not specified in the certificate. Instead, it is calculated in accordance with the specific rules of the country each time the certificate is checked. Renewing the QR code merely ensures that the QR code can be used from a technical point of view.\"</string>\n\n\t<!-- Wallet: Zertifikat QR Code läuft ab am {DATE} -->\n\t<string name=\"wallet_certificate_qr_code_expiration_date\">\"QR code expiration date (technical)\n{DATE}\"</string>\n\n\t<!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n\t<string name=\"wallet_certificate_renewal_required_bubble_title\">\"Renew QR code!\"</string>\n\n\t<!-- Wallet: Text der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n\t<string name=\"wallet_certificate_renewal_required_bubble_text\">\"To continue using this certificate you must renew the QR code.\"</string>\n\n\t<!-- Wallet: Buttontext der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n\t<string name=\"wallet_certificate_renewal_required_bubble_button\">\"Find out more\"</string>\n\n\t<!-- Wallet: Buttontext um den QR Code eines Zertifikats zu erneuern -->\n\t<string name=\"wallet_certificate_renew_now_button\">\"Renew QR code\"</string>\n\t<string name=\"wallet_certificate_renewal_qr_code_expiration\">\"QR code expiration date\"</string>\n\t<string name=\"wallet_certificate_renewal_required_info\">\"The technical expiration date for this QR code has elapsed (or will elapse soon).\"</string>\n\t<string name=\"wallet_certificate_renewal_in_progress_info\">\"The QR code is being updated\"</string>\n\t<string name=\"wallet_certificate_renewal_successful_info\">\"The QR code has been successfully renewed\"</string>\n\t<string name=\"wallet_certificate_renewal_offline_error_title\">\"No Internet connection\"</string>\n\t<string name=\"wallet_certificate_renewal_offline_error_text\">\"The app must be online for the QR code to be renewed.\"</string>\n\t<string name=\"wallet_certificate_renewal_general_error_title\">\"An unexpected error has occurred\"</string>\n\t<string name=\"wallet_certificate_renewal_general_error_text\">\"Please try again later\"</string>\n\n\t<!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n\t<string name=\"wallet_certificate_renewal_successful_bubble_title\">\"Successfully renewed\"</string>\n\n\t<!-- Wallet: Text der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n\t<string name=\"wallet_certificate_renewal_successful_bubble_text\">\"Also replace certificates that have been printed out or stored with this renewed version.\"</string>\n\n\t<!-- Wallet: Button der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n\t<string name=\"wallet_certificate_renewal_successful_bubble_button\">\"More information\"</string>\n\n\t<!-- Wallet: QR Code des Zertifikats abgelaufen -->\n\t<string name=\"wallet_error_qr_code_expired\">\"The technical expiration date for this QR code has elapsed.\"</string>\n\t<string name=\"wallet_certificate_renewal_rate_limit_error_title\">\"24h-limit reached\"</string>\n\t<string name=\"wallet_certificate_renewal_rate_limit_error_text\">\"QR code updated too often. Update temporarily blocked.\"</string>\n\t<string name=\"wallet_certificate_renewal_faq_link_text\">\"To the FAQ\"</string>\n\t<string name=\"wallet_certificate_renewal_faq_link_url\">\"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"</string>\n\t<string name=\"terms_and_conditions_update_boarding_title\">\"Update\"</string>\n\t<string name=\"terms_and_conditions_update_boarding_text\">\"Certain points of the terms of use and privacy statement for the app have been updated and adapted in line with the relevant legal bases.\"</string>\n\t<string name=\"wallet_validity_since_vaccination_date\">\"Vaccinated on\"</string>\n\t<string name=\"wallet_validity_since_test_date\">\"Tested negative on\"</string>\n\n\t<!-- vor 2 Tagen - must be before \"2 Tagen\"! -->\n\t<string name=\"wallet_validity_since_prefix\">\" \"</string>\n\n\t<!-- vor 1 Stunde -->\n\t<string name=\"wallet_validity_since_hours_singular\">\"1 hour ago\"</string>\n\n\t<!-- vor 2 Stunden -->\n\t<string name=\"wallet_validity_since_hours_plural\">\"{HOURS} hours ago\"</string>\n\n\t<!-- vor 1 Tag -->\n\t<string name=\"wallet_validity_since_days_singular\">\"1 Day ago\"</string>\n\n\t<!-- vor 2 Tagen -->\n\t<string name=\"wallet_validity_since_days_plural\">\"{DAYS} Days ago\"</string>\n\t<string name=\"wallet_update_boarding_page_1_title\">\"What’s new?\"</string>\n\t<string name=\"wallet_update_boarding_page_1_text\">\"The COVID certificate now no longer displays the Validity in Switzerland field. Instead, the app shows the time of your vaccination or test. Why?\"</string>\n\t<string name=\"wallet_update_boarding_page_2_title\">\"COVID certificates in Switzerland\"</string>\n\t<string name=\"wallet_update_boarding_page_2_bullet_1\">\"The certificate requirement in Switzerland was lifted in February 2022.\"</string>\n\t<string name=\"wallet_update_boarding_page_2_bullet_2\">\"Since then, the Swiss validity periods have only existed formally and no longer have any practical significance in this country.\"</string>\n\t<string name=\"wallet_update_boarding_page_2_bullet_3\">\"The Swiss validity period also has no meaning abroad.\"</string>\n\t<string name=\"wallet_update_boarding_page_3_title\">\"COVID certificates abroad\"</string>\n\t<string name=\"wallet_update_boarding_page_3_bullet_1\">\"Abroad the rules of the country in question apply.\"</string>\n\t<string name=\"wallet_update_boarding_page_3_bullet_2\">\"The app now shows how many days ago you had the vaccination or a test.\"</string>\n\t<string name=\"wallet_update_boarding_page_3_bullet_3\">\"This makes it easier to work out whether your certificate complies with the rules of your destination country (if the country still requires a Covid certificate).\"</string>\n\t<string name=\"wallet_update_boarding_page_4_title\">\"Current situation in Switzerland and worldwide\"</string>\n\t<string name=\"wallet_update_boarding_page_4_bullet_1\">\"Most countries in Europe have now lifted the certificate requirement for entry.\"</string>\n\t<string name=\"wallet_update_boarding_page_4_bullet_2\">\"The Validity abroad function has therefore also been removed from the app.\"</string>\n\t<string name=\"wallet_update_boarding_page_4_bullet_3\">\"You can find out whether a certificate requirement still applies in a country on these websites:\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_1_text\">\"reopen.europa.eu\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_1_url\">\"https://reopen.europa.eu\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_2_text\">\"iatatravelcentre.com\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_2_url\">\"https://www.iatatravelcentre.com\"</string>\n\t<string name=\"wallet_validity_since_more_hours_prefix\">\"exceeding\"</string>\n\t<string name=\"wallet_validity_since_recovery_date\">\"Tested positive on\"</string>\n\t<string name=\"covid_certificate_news_text\">\"Certificate requirement lifted\"</string>\n\t<string name=\"covid_certificate_news_title\">\"Certificate requirement lifted\"</string>\n\t<string name=\"covid_certificate_news_item1\">\"The certificate requirement in Switzerland was lifted in February 2022.\"</string>\n\t<string name=\"covid_certificate_news_item2\">\"Since then, the Swiss validity periods have only existed formally and no longer have any practical significance in this country.\"</string>\n\t<string name=\"covid_certificate_news_item3\">\"This Swiss certificate check app verifies COVID certificates based on Swiss validity rules. The result of the check is not relevant for use of the certificate abroad.\"</string>\n\t<string name=\"covid_certificate_news_item4\">\"If a country still requires a COVID certificate, the rules of the country in question apply.\"</string>\n\t<string name=\"wallet_faq_questions_linktext_1_1\">\"National COVID certificate application platform\"</string>\n\t<string name=\"wallet_faq_questions_linkurl_1_1\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\t<string name=\"wallet_faq_questions_question_2_2\">\"I am travelling abroad and need a COVID certificate to enter the country. What must I bear in mind?\"</string>\n\t<string name=\"wallet_faq_questions_answer_2_2\">\"When abroad, it is the validity rules of the country in question that apply, both for entering the country and within the country itself. The rules applicable to the use of the certificate within the destination country may differ from those that apply upon entry. These rules can change at short notice. Shortly before departing you should therefore check the authorities’ website for your transit or destination country to see whether rules relating to COVID-19 are still in force and, if so, which ones.  \"</string>\n\t<string name=\"wallet_error_not_fully_protected_national_rules\">\"Vaccination series incomplete by international standards.\"</string>\n</resources>"
  },
  {
    "path": "common/src/main/res/values/styles.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<resources>\n\t<!-- Base application theme. -->\n\t<style name=\"Theme.CovidCertificate\" parent=\"Theme.MaterialComponents.Light.NoActionBar\">\n\t\t<item name=\"colorPrimary\">@color/blue</item>\n\t\t<item name=\"colorPrimaryDark\">@color/black</item>\n\t\t<item name=\"colorAccent\">@color/blue</item>\n\t\t<item name=\"android:fontFamily\">@font/inter_light</item>\n\t\t<item name=\"android:windowTranslucentStatus\">true</item>\n\t\t<item name=\"android:windowTranslucentNavigation\">false</item>\n\t</style>\n\n\t<style name=\"Theme.CovidCertificateWallet\" parent=\"Theme.MaterialComponents.Light.NoActionBar\">\n\t\t<item name=\"colorPrimary\">@color/blue</item>\n\t\t<item name=\"colorPrimaryDark\">@color/black</item>\n\t\t<item name=\"colorAccent\">@color/blue</item>\n\t\t<item name=\"android:fontFamily\">@font/inter_light</item>\n\t\t<item name=\"android:statusBarColor\">@color/white</item>\n\t\t<item name=\"android:windowLightStatusBar\">true</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text\" parent=\"TextAppearance.AppCompat\">\n\t\t<item name=\"android:textSize\">@dimen/text_size_normal</item>\n\t\t<item name=\"android:textColor\">@color/black</item>\n\t\t<item name=\"android:fontFamily\">@font/inter</item>\n\t\t<item name=\"fontFamily\">@font/inter</item>\n\t\t<item name=\"lineHeight\">@dimen/text_line_height_normal</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Emphasized\">\n\t\t<item name=\"android:textSize\">@dimen/text_size_emphasize</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.White\">\n\t\t<item name=\"android:textColor\">@color/white</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Grey\">\n\t\t<item name=\"android:textColor\">@color/grey</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Blue\">\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold\">\n\t\t<item name=\"android:textStyle\">bold</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Emphasized\">\n\t\t<item name=\"android:textSize\">@dimen/text_size_emphasize</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Emphasized.Blue\">\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Title\">\n\t\t<item name=\"android:textSize\">@dimen/text_size_large</item>\n\t\t<item name=\"lineHeight\">@dimen/text_line_height_large</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Title.White\">\n\t\t<item name=\"android:textColor\">@color/white</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Grey\">\n\t\t<item name=\"android:textColor\">@color/grey</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.White\">\n\t\t<item name=\"android:textColor\">@color/white</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Blue\">\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Error\">\n\t\t<item name=\"android:textColor\">@color/red_error</item>\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Orange\">\n\t\t<item name=\"android:textColor\">@color/orange</item>\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Error.Bundesrot\">\n\t\t<item name=\"android:textColor\">@color/bundesrot</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Lead\">\n\t\t<item name=\"android:gravity\">center_horizontal</item>\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t\t<item name=\"android:letterSpacing\">0.125</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Lead.Grey\">\n\t\t<item name=\"android:textColor\">@color/grey</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Lead.White\">\n\t\t<item name=\"android:textColor\">@color/white</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Bold.Blue.LinkExternal\">\n\t\t<item name=\"android:breakStrategy\">high_quality</item>\n\t\t<item name=\"android:hyphenationFrequency\">normal</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Code\">\n\t\t<item name=\"android:fontFamily\">@font/mono_regular</item>\n\t\t<item name=\"fontFamily\">@font/mono_regular</item>\n\t\t<item name=\"android:textColor\">@color/grey</item>\n\t\t<item name=\"android:letterSpacing\">0.0937</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Transfer\">\n\t\t<item name=\"android:fontFamily\">@font/fira_code_bold</item>\n\t\t<item name=\"fontFamily\">@font/fira_code_bold</item>\n\t\t<item name=\"android:textSize\">@dimen/text_size_large</item>\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t\t<item name=\"lineHeight\">@dimen/text_line_height_large</item>\n\t\t<item name=\"android:letterSpacing\">0.076</item>\n\t\t<item name=\"android:fontFeatureSettings\">\"tnum</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Text.Transfer.Bubble\">\n\t\t<item name=\"android:textSize\">@dimen/text_size_type_bubble</item>\n\t\t<item name=\"lineHeight\">@dimen/text_line_height_bubble</item>\n\t\t<item name=\"android:letterSpacing\">0.153</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.ToolbarTitle\" parent=\"TextAppearance.Widget.AppCompat.Toolbar.Title\">\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t\t<item name=\"android:fontFamily\">@font/inter</item>\n\t\t<item name=\"fontFamily\">@font/inter</item>\n\t\t<item name=\"android:textStyle\">bold</item>\n\t\t<item name=\"android:textSize\">@dimen/text_size_normal</item>\n\t\t<item name=\"android:letterSpacing\">0.125</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button\" parent=\"Widget.MaterialComponents.Button\">\n\t\t<item name=\"backgroundTint\">@null</item>\n\t\t<item name=\"android:textColor\">@color/white</item>\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t\t<item name=\"android:textSize\">@dimen/text_size_normal</item>\n\t\t<item name=\"android:fontFamily\">@font/inter</item>\n\t\t<item name=\"fontFamily\">@font/inter</item>\n\t\t<item name=\"android:textStyle\">bold</item>\n\t\t<item name=\"android:background\">@drawable/bg_button_default</item>\n\t\t<item name=\"android:stateListAnimator\">@null</item>\n\t\t<item name=\"android:layout_height\">@dimen/button_height</item>\n\t\t<item name=\"android:paddingStart\">@dimen/spacing_very_large</item>\n\t\t<item name=\"android:paddingEnd\">@dimen/spacing_very_large</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.White\">\n\t\t<item name=\"android:background\">@drawable/bg_button_white</item>\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.Red\">\n\t\t<item name=\"android:background\">@drawable/bg_button_red</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.Outlined\" parent=\"Widget.MaterialComponents.Button.OutlinedButton\">\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t\t<item name=\"android:textSize\">@dimen/text_size_normal</item>\n\t\t<item name=\"android:fontFamily\">@font/inter</item>\n\t\t<item name=\"fontFamily\">@font/inter</item>\n\t\t<item name=\"android:textStyle\">bold</item>\n\t\t<item name=\"android:layout_height\">@dimen/button_height</item>\n\t\t<item name=\"android:paddingStart\">@dimen/spacing_very_large</item>\n\t\t<item name=\"android:paddingEnd\">@dimen/spacing_very_large</item>\n\t\t<item name=\"android:insetTop\">0dp</item>\n\t\t<item name=\"android:insetBottom\">0dp</item>\n\t\t<item name=\"cornerRadius\">28dp</item>\n\t\t<item name=\"strokeWidth\">2dp</item>\n\t\t<item name=\"drawableTint\">@color/selector_grey_or_blue</item>\n\t\t<item name=\"strokeColor\">@color/selector_grey_or_blue</item>\n\t\t<item name=\"android:textColor\">@color/selector_grey_or_blue</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.Borderless\" parent=\"Widget.MaterialComponents.Button.TextButton\">\n\t\t<item name=\"android:textAllCaps\">true</item>\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t\t<item name=\"android:letterSpacing\">0.09</item>\n\t\t<item name=\"android:textSize\">@dimen/text_size_normal</item>\n\t\t<item name=\"android:fontFamily\">@font/inter</item>\n\t\t<item name=\"fontFamily\">@font/inter</item>\n\t\t<item name=\"android:textStyle\">bold</item>\n\t\t<item name=\"rippleColor\">@android:color/transparent</item>\n\t\t<item name=\"android:paddingBottom\">@dimen/spacing_medium_small</item>\n\t\t<item name=\"android:paddingTop\">@dimen/spacing_medium_small</item>\n\t\t<item name=\"android:paddingStart\">@dimen/spacing_medium_large</item>\n\t\t<item name=\"android:paddingEnd\">@dimen/spacing_medium_large</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.Borderless.Orange\">\n\t\t<item name=\"android:textColor\">@color/orange</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.Borderless.Black\">\n\t\t<item name=\"android:textColor\">@color/black</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.Borderless.Black.NoCaps\">\n\t\t<item name=\"android:textAllCaps\">false</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.FloatingActionButton\" parent=\"Widget.MaterialComponents.FloatingActionButton\">\n\t\t<item name=\"android:backgroundTint\">@color/selector_blue_or_white</item>\n\t\t<item name=\"tint\">@color/selector_white_or_blue</item>\n\t\t<item name=\"borderWidth\">0dp</item>\n\t\t<item name=\"fabCustomSize\">@dimen/floating_button_height</item>\n\t\t<item name=\"elevation\">@dimen/floating_button_elevation</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.FloatingActionButton.WhiteBlue\">\n\t\t<item name=\"android:backgroundTint\">@color/selector_white_or_blue</item>\n\t\t<item name=\"tint\">@color/selector_blue_or_white</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.FloatingActionButton.BlackWhite\">\n\t\t<item name=\"android:backgroundTint\">@color/selector_black_or_white</item>\n\t\t<item name=\"tint\">@color/selector_white_or_black</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Card\" parent=\"Widget.MaterialComponents.CardView\">\n\t\t<item name=\"android:focusable\">true</item>\n\t\t<item name=\"android:clickable\">true</item>\n\t\t<item name=\"android:foreground\">?android:attr/selectableItemBackground</item>\n\t\t<item name=\"android:minHeight\">@dimen/button_height</item>\n\t\t<item name=\"cardElevation\">@dimen/default_elevation</item>\n\t\t<item name=\"cardCornerRadius\">@dimen/button_radius</item>\n\t\t<item name=\"cardBackgroundColor\">@color/white</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Card.Flat\">\n\t\t<item name=\"android:minHeight\">0dp</item>\n\t\t<item name=\"android:focusable\">false</item>\n\t\t<item name=\"android:clickable\">false</item>\n\t\t<item name=\"cardElevation\">0dp</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.AlertDialogStyle\" parent=\"Theme.MaterialComponents.Light.Dialog.Alert\">\n\t\t<item name=\"android:colorAccent\">@color/blue</item>\n\t\t<item name=\"android:textColor\">@color/black</item>\n\t\t<item name=\"android:textColorPrimary\">@color/black</item>\n\t\t<item name=\"buttonBarPositiveButtonStyle\">@style/CovidCertificate.Button.AlertDialog</item>\n\t\t<item name=\"buttonBarNegativeButtonStyle\">@style/CovidCertificate.Button.AlertDialog</item>\n\t\t<item name=\"android:fontFamily\">@font/inter_light</item>\n\t\t<item name=\"fontFamily\">@font/inter_light</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.Button.AlertDialog\" parent=\"Widget.MaterialComponents.Button.TextButton.Dialog\">\n\t\t<item name=\"android:textSize\">@dimen/text_size_normal</item>\n\t\t<item name=\"android:textColor\">@color/blue</item>\n\t\t<item name=\"android:fontFamily\">@font/inter</item>\n\t\t<item name=\"fontFamily\">@font/inter</item>\n\t\t<item name=\"android:textStyle\">bold</item>\n\t\t<item name=\"android:textAllCaps\">false</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.InfoDialog\" parent=\"Theme.MaterialComponents.Light.Dialog\">\n\t\t<item name=\"android:windowFrame\">@null</item>\n\t\t<item name=\"android:windowBackground\">@drawable/bg_rect_rounded_sheet</item>\n\t\t<item name=\"android:windowIsFloating\">true</item>\n\t\t<item name=\"android:gravity\">center</item>\n\t</style>\n\n\t<style name=\"CovidCertificate.ChooseModeDialog\" parent=\"Theme.MaterialComponents.Light.Dialog\">\n\t\t<item name=\"android:windowFrame\">@null</item>\n\t\t<item name=\"android:windowBackground\">@drawable/bg_rect_rounded_sheet</item>\n\t\t<item name=\"android:windowIsFloating\">true</item>\n\n\t\t<!-- Make the dialog at least 80% width in portrait mode -->\n\t\t<item name=\"android:windowMinWidthMinor\">80%</item>\n\t</style>\n</resources>"
  },
  {
    "path": "common/src/main/res/values-de/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n    ~\n    ~ This Source Code Form is subject to the terms of the Mozilla Public\n    ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n    ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n    ~\n    ~ SPDX-License-Identifier: MPL-2.0\n    -->\n<resources>\n\n    <!-- Android App Name -->\n    <string name=\"verifier_app_name\">\"Covid Check\"</string>\n\n    <!-- Title for the qr scanning screen -->\n    <string name=\"verifier_title_qr_scan\">\"Prüfen\"</string>\n\n    <!-- Titel über dem Haupttitel -->\n    <string name=\"verifier_homescreen_header_title\">\"Covid Certificate\"</string>\n\n    <!-- Homescreen App Name -->\n    <string name=\"verifier_homescreen_title\">\"Check\"</string>\n\n    <!-- Beschreibung für Pager Bild 1 -->\n    <string name=\"verifier_homescreen_pager_description_1\">\"Vorgewiesenes Zertifikat scannen\"</string>\n\n    <!-- Beschreibung für Pager Bild 2 -->\n    <string name=\"verifier_homescreen_pager_description_2\">\"Zertifikate werden automatisch geprüft\"</string>\n\n    <!-- Homescreen Button für Scanning -->\n    <string name=\"verifier_homescreen_scan_button\">\"Prüfen\"</string>\n\n    <!-- Homescreen Button für Support -->\n    <string name=\"verifier_homescreen_support_button\">\"So funktioniert's\"</string>\n    <string name=\"error_network_title\">\"Netzwerkfehler\"</string>\n    <string name=\"error_network_text\">\"Überprüfen Sie Ihre Internet Verbindung.\"</string>\n    <string name=\"error_action_retry\">\"Erneut versuchen\"</string>\n    <string name=\"error_camera_permission_title\">\"Kein Zugriff auf Kamera\"</string>\n    <string name=\"error_camera_permission_text\">\"Die App benötigt Zugriff auf die Kamera, um den QR-Code scannen zu können.\"</string>\n    <string name=\"error_action_change_settings\">\"Einstellungen ändern\"</string>\n    <string name=\"error_title\">\"Fehler\"</string>\n    <string name=\"qr_scanner_error\">\"Kein gültiger Code\"</string>\n    <string name=\"ok_button\">\"OK\"</string>\n    <string name=\"camera_permission_dialog_text\">\"Die App benötigt Zugriff auf die Kamera, um den QR-Code scannen zu können.\"</string>\n    <string name=\"camera_permission_dialog_action\">\"Zugriff auf Kamera erlauben\"</string>\n    <string name=\"verifier_qr_scanner_scan_qr_text\">\"QR-Code scannen\nzum Prüfen\"</string>\n\n    <!-- Titel auf dem Verifikations-Screen -->\n    <string name=\"covid_certificate_title\">\"Covid-Zertifikat\"</string>\n\n    <!-- Name des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n    <string name=\"verifier_covid_certificate_name\">\"Nachname\"</string>\n\n    <!-- Geburtsdatum des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n    <string name=\"verifier_covid_certificate_birthdate\">\"Geburtsdatum\"</string>\n\n    <!-- Wallet: Zertifikat hinzufügen -->\n    <string name=\"wallet_add_certificate\">\"Hinzufügen\"</string>\n\n    <!-- Wallet: Homescreen Covid-Zertifikat -->\n    <string name=\"wallet_certificate\">\"Covid-Zertifikat\"</string>\n\n    <!-- Wallet: Homescreen Erklärung -->\n    <string name=\"wallet_homescreen_explanation\">\"Scannen Sie den QR-Code auf dem Covid-Zertifikat, um es zur App hinzuzufügen.\"</string>\n\n    <!-- Wallet: Scanner Titel -->\n    <string name=\"wallet_scanner_title\">\"Hinzufügen\"</string>\n\n    <!-- Titel bei erfolgreicher Prüfung -->\n    <string name=\"verifier_verify_success_title\">\"Prüfung erfolgreich\"</string>\n\n    <!-- Info Text bei erfolgreicher Prüfung -->\n    <string name=\"verifier_verify_success_info\">\"Nur mit einem \nAusweisdokument gültig\"</string>\n\n    <!-- Prüfung loading text -->\n    <string name=\"verifier_verify_loading_text\">\"Zertifikat wird geprüft\"</string>\n\n    <!-- Fehler Title bei Prüfung -->\n    <string name=\"verifier_verify_error_title\">\"Covid-Zertifikat ungültig\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Nationale Regeln) -->\n    <string name=\"verifier_verify_error_info_for_national_rules\">\"Entspricht nicht den Gültigkeitskriterien der Schweiz oder des Prüfmodus ({MODUS})\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Zertifikat Fehler) -->\n    <string name=\"verifier_verify_error_info_for_certificate_invalid\">\"Das Covid-Zertifikat hat keine gültige Signatur\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Blacklist) -->\n    <string name=\"verifier_verify_error_info_for_blacklist\">\"Das Covid-Zertifikat wurde widerrufen\"</string>\n\n    <!-- Fehler bei der geladen Liste -->\n    <string name=\"verifier_verify_error_list_title\">\"Prüfung fehlgeschlagen\"</string>\n\n    <!-- Fehler Info bei laden der Liste -->\n    <string name=\"verifier_verify_error_list_info_text\">\"Ein unerwarteter Fehler ist aufgetreten.\"</string>\n\n    <!-- Wallet: Scanner Text unten -->\n    <string name=\"wallet_scanner_explanation\">\"Scannen Sie den QR-Code auf dem Covid-Zertifikat.\"</string>\n\n    <!-- Wallet: Scanner Info Button unten -->\n    <string name=\"wallet_scanner_info_button\">\"So funktioniert's\"</string>\n\n    <!-- Wallet: Erneut scannen Button -->\n    <string name=\"wallet_scan_again\">\"Erneut scannen\"</string>\n\n    <!-- Wallet: Hinzufügen von Zertifikat Button -->\n    <string name=\"wallet_add_certificate_button\">\"Hinzufügen\"</string>\n\n    <!-- Wallet: Titel der Liste Zertifikate -->\n    <string name=\"wallet_certificate_list_title\">\"Zertifikate\"</string>\n\n    <!-- Wallet: Löschen Button Titel -->\n    <string name=\"delete_button\">\"Löschen\"</string>\n\n    <!-- Android App Name für die Wallet -->\n    <string name=\"wallet_app_name\">\"Covid Cert\"</string>\n\n    <!-- Header im Onboarding-Screen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_header\">\"Die App\"</string>\n\n    <!-- Titel im Onboardingscreen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_title\">\"COVID Certificate\"</string>\n\n    <!-- Text im Onboardingscreen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_text\">\"Mit der App können Sie Covid-Zertifikate sicher auf dem Smartphone aufbewahren und einfach vorweisen.\"</string>\n\n    <!-- Weiter-Button Titel -->\n    <string name=\"continue_button\">\"Weiter\"</string>\n\n    <!-- Header im Onboarding-Screen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_header\">\"Datenschutz\"</string>\n\n    <!-- Titel im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_title\">\"Ihre Daten bleiben \nin der App\"</string>\n\n    <!-- Text im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_text\">\"Die Zertifikate sind nur lokal auf Ihrem Smartphone hinterlegt. Die Daten werden nicht in einem zentralen System gespeichert.\"</string>\n\n    <!-- Titel im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_title\">\"Zertifikate einfach vorweisen\"</string>\n\n    <!-- Text 1 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_text1\">\"Die auf dem Covid-Zertifikat dargestellten Daten sind auch im QR-Code enthalten.\"</string>\n\n    <!-- Text 2 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_text2\">\"Beim Vorweisen wird der QR-Code mit einer Prüf-App gescannt. Die enthaltenen Daten werden dabei automatisch auf Echtheit und Gültigkeit überprüft.\"</string>\n\n    <!-- Titel des Datenschutzerklärungs-Elements im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_privacypolicy_title\">\"Datenschutzerklärung\"</string>\n\n    <!-- Titel des Nutzungsbedingungen-Elements im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_conditionsofuse_title\">\"Nutzungsbedingungen\"</string>\n\n    <!-- Button zum Abschliessen des Onboardings -->\n    <string name=\"wallet_onboarding_accept_button\">\"Akzeptieren\"</string>\n    <string name=\"language_key\">\"de\"</string>\n\n    <!-- Header im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_header\">\"So funktioniert's\"</string>\n\n    <!-- Titel im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_title\">\"Covid-Zertifikate\nhinzufügen\"</string>\n\n    <!-- Textblock 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text1\">\"Um ein Covid-Zertifikat zur App hinzufügen zu können, benötigen Sie das Originalzertifikat auf Papier oder als PDF.\"</string>\n\n    <!-- Textblock 2 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text2\">\"Tippen Sie in der App auf «Hinzufügen», um ein neues Zertifikat zur App hinzuzufügen.\"</string>\n\n    <!-- Textblock 3 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text3\">\"Halten Sie nun die Kamera des Smartphones über den QR-Code auf dem Originalzertifikat, um den Code einzuscannen.\"</string>\n\n    <!-- Textblock 4 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text4\">\"Es erscheint eine Vorschau des Covid-Zertifikats. Tippen Sie auf «Hinzufügen» um das Zertifikat sicher in der App zu speichern.\"</string>\n\n    <!-- Frage 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_question1\">\"Wann und wo kann ich ein Covid-Zertifikat erhalten?\"</string>\n\n    <!-- Header im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_header\">\"Häufige Fragen\"</string>\n\n    <!-- Titel 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_title\">\"Was sind Covid-Zertifikate?\"</string>\n\n    <!-- Text 1im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_subtitle\">\"Das Covid-Zertifikat bietet die Möglichkeit, eine Covid-19-Impfung, eine durchgemachte Erkrankung oder ein negatives Testergebnis fälschungssicher zu dokumentieren.\"</string>\n\n    <!-- Frage 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_1\">\"Wann und wo kann ich ein Covid-Zertifikat erhalten?\"</string>\n\n    <!-- Frage 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_2\">\"Wie kann ich ein Covid-Zertifikat vorweisen?\"</string>\n\n    <!-- Frage 3 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_3\">\"Wo sind meine Daten gespeichert?\"</string>\n\n    <!-- Frage 4 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_4\">\"Wie werden Missbrauch und Fälschung verhindert?\"</string>\n\n    <!-- Frage 5 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_5\">\"Was passiert, wenn ich mein Covid-Zertifikat verliere?\"</string>\n\n    <!-- Frage 6 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_1\">\"Wie kann ich ein Covid-Zertifikat zur App hinzufügen?\"</string>\n\n    <!-- Frage 7 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_2\">\"Können auch mehrere Covid-Zertifikate hinzugefügt werden?\"</string>\n\n    <!-- Frage 8 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_3\">\"Wo sehe ich, ob mein Covid-Zertifikat gültig ist?\"</string>\n\n    <!-- Frage 9 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_4\">\"Wie sind meine Daten geschützt?\"</string>\n\n    <!-- Frage 10 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_5\">\"Welche Daten sind im QR-Code enthalten?\"</string>\n\n    <!-- Frage 11 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_6\">\"Was muss ich tun, wenn ich das Covid-Zertifikat oder die App lösche?\"</string>\n\n    <!-- Antwort 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_1\">\"Ein Covid-Zertifikat können Sie nach einer Covid-19-Impfung, nach einer durchgemachten Erkrankung oder nach einem negativen Testergebnis erhalten. Das Zertifikat stellt Ihnen in der Regel das Gesundheitsfachpersonal vor Ort auf Anfrage aus.\"</string>\n\n    <!-- Antwort 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_2\">\"Sie können Ihr Covid-Zertifikat in Papierform vorweisen oder Sie benutzen die «COVID Certificate»-App, um Zertifikate in der App zu speichern und direkt aus der App vorzuweisen. \n\nBeachten Sie, dass Sie in jedem Fall auch noch ein Ausweisdokument vorweisen müssen.\nIn einigen Ländern wird eine ausgedruckte Version des Zertifikats verlangt und das elektronische Zertifikat nicht akzeptiert. Führen Sie auf Reisen daher stets auch die ausgedruckte Version mit.\"</string>\n\n    <!-- Antwort 3 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_3\">\"Ihre Zertifikatsdaten werden nicht in einem zentralen System des Bundes gespeichert, sondern befinden sich nur lokal auf Ihrem Mobilgerät, respektive auf dem Covid-Zertifikat in Papierform.\"</string>\n\n    <!-- Antwort 4 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_4\">\"Der QR-Code auf dem Covid-Zertifikat enthält eine elektronische Signatur. Die Signatur ist ein wichtiges Sicherheitsmerkmal und macht das Covid-Zertifikat fälschungssicher. Das Covid-Zertifikat ist zudem nur in Kombination mit einem Ausweisdokument gültig.\"</string>\n\n    <!-- Antwort 5 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_5\">\"Ihr Covid-Zertifikat wird in keinem zentralen System des Bundes gespeichert. Bewahren Sie das Covid-Zertifikat auf Papier und/oder als PDF deshalb sorgfältig auf. Bei Verlust und Bedarf nach einem Einsatz kann für die Neuausstellung durch die Gesundheitseinrichtungen (z. B. der Test- oder Impfstelle) eine Gebühr erhoben werden.\"</string>\n\n    <!-- Antwort 6 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_1\">\"Um ein Covid-Zertifikat zur App hinzuzufügen, benötigen Sie das Ihnen ausgestellte Originalzertifikat auf Papier oder als PDF-Dokument. Den darauf abgebildeten QR-Code können Sie mit der COVID Certificate App scannen und hinzufügen. Anschliessend erscheint das Covid-Zertifikat direkt in der App.\"</string>\n\n    <!-- Antwort 7 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_2\">\"Ja das ist möglich. So können Sie z. B. alle Covid-Zertifikate von Familienangehörigen in Ihrer App speichern. Auch in diesem Fall gilt: Das Covid-Zertifikat ist nur in Kombination mit einem Ausweisdokument des Zertifikatsinhabers / der Zertifikatsinhaberin gültig.\"</string>\n\n    <!-- Antwort 8 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_3\">\"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Deshalb wird in der App das Feld «Gültigkeit in der Schweiz» nicht mehr dargestellt. Stattdessen zeigt sie den Zeitpunkt der Impfung bzw. des Tests an. \n\nEs wird auch angezeigt, wie viele Tage eine Impfung bzw. ein Test her ist. So können Sie einfacher feststellen, ob Ihr Zertifikat den Gültigkeitsregeln Ihres Ziellandes entspricht (falls das Land noch ein Covid-Zertifikat voraussetzt). Im Ausland gelten immer die Regeln des entsprechenden Landes.\"</string>\n\n    <!-- Antwort 9 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_4\">\"Ihre persönlichen Daten werden in keinem zentralen System gespeichert, sondern befinden sich ausschliesslich bei Ihnen lokal auf dem Mobilgerät, respektive im QR-Code auf dem Covid-Zertifikat in Papierform.\"</string>\n\n    <!-- Antwort 10 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_5\">\"Der QR-Code enthält alle Informationen, die Sie auf Ihrem Covid-Zertifikat in Papierform im Klartext finden. Weiter befindet sich im QR-Code eine elektronische Signatur, mit der sich die Echtheit des Covid-Zertifikats überprüfen lässt. Dadurch wird das Covid-Zertifikat fälschungssicher.\"</string>\n\n    <!-- Antwort 11 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_6\">\"Sie können Ihr Covid-Zertifikat einfach wieder auf Ihrem Mobilgerät speichern. Laden Sie dazu die App erneut herunter und scannen Sie anschliessend den QR-Code auf Ihrem Covid-Zertifikat auf Papier oder als PDF.\"</string>\n\n    <!-- Titel 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_title\">\"Wie funktioniert \ndie App?\"</string>\n\n    <!-- Text 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_subtitle\">\"Mit der COVID Certificate App können Sie Covid-Zertifikate einfach und sicher auf Ihrem Mobilgerät abspeichern und vorweisen.\"</string>\n\n    <!-- Antwort 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_answer1\">\"Ein Covid-Zertifikat können Sie nach einer vollständigen Covid-19-Impfung, nach einer durchgemachten Erkrankung oder nach einem negativen Testergebnis erhalten. Das Zertifikat stellt Ihnen in der Regel das Gesundheitsfachpersonal vor Ort auf Anfrage aus.\"</string>\n\n    <!-- Verifier: Detail Check Vorname -->\n    <string name=\"verifier_covid_certificate_prename\">\"Vorname\"</string>\n\n    <!-- Config: Titel wenn App muss geupdatet werden -->\n    <string name=\"force_update_title\">\"Update benötigt\"</string>\n\n    <!-- Config: Text der angezeigt wird falls App muss geupdatet werden -->\n    <string name=\"force_update_text\">\"Laden Sie die neue Version der App.\"</string>\n\n    <!-- Config: Update Button Aktualisieren -->\n    <string name=\"force_update_button\">\"Aktualisieren\"</string>\n\n    <!-- Wallet: Zertifikat gültig ab: {DATE} -->\n    <string name=\"wallet_certificate_valid_from\">\"In der Schweiz gültig ab:\n{DATE}\"</string>\n\n    <!-- Wallet: Zertifikat Detail Geimpft -->\n    <string name=\"certificate_reason_vaccinated\">\"Impfung\"</string>\n\n    <!-- Wallet: Zertifikat Detail Genesen -->\n    <string name=\"certificate_reason_recovered\">\"Genesen\"</string>\n\n    <!-- Wallet: Zertifikat Detail Getestet -->\n    <string name=\"certificate_reason_tested\">\"Test\"</string>\n\n    <!-- Header im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_header\">\"Vorteile\"</string>\n\n    <!-- Titel im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_title\">\"Covid-Zertifikate digital aufbewahren\"</string>\n\n    <!-- Text1 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_text1\">\"Covid-Zertifikate können einfach zur App hinzugefügt und digital aufbewahrt werden.\"</string>\n\n    <!-- Text2 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_text2\">\"Die App prüft die Zertifikate auf ihre Gültigkeit in der Schweiz. So können Sie sich versichern, dass Ihre Zertifikate gültig sind.\"</string>\n\n    <!-- Header im Onboarding-Screen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_header\">\"Vorteile\"</string>\n\n    <!-- Accessibility: Information -->\n    <string name=\"accessibility_info_button\">\"Impressum\"</string>\n\n    <!-- Accessibility: FAQ Button Titel -->\n    <string name=\"accessibility_faq_button\">\"Häufige Fragen\"</string>\n\n    <!-- Accessibility: Button zur Liste der Zertifikate -->\n    <string name=\"accessibility_list_button\">\"Zertifikate Liste\"</string>\n\n    <!-- Accessibility: Zertifikate hinzufügen -->\n    <string name=\"accessibility_add_button\">\"Zertifikat hinzufügen\"</string>\n\n    <!-- Accessibility: Schliessen Button -->\n    <string name=\"accessibility_close_button\">\"Schliessen\"</string>\n\n    <!-- Accessibility: Taschenlampe anschalten Button -->\n    <string name=\"accessibility_lamp_on_button\">\"Taschenlampe einschalten\"</string>\n\n    <!-- Accessibility: Lampe abschalten -->\n    <string name=\"accessibility_lamp_off_button\">\"Taschenlampe ausschalten\"</string>\n\n    <!-- Titel des Impressum-Screens -->\n    <string name=\"impressum_title\">\"Impressum\"</string>\n\n    <!-- Unbekannter Fehler -->\n    <string name=\"unknown_error\">\"Ein unbekannter Fehler ist aufgetreten.\"</string>\n\n    <!-- Verifier: Die Gültigkeit des Zertifikat ist abgelaufen -->\n    <string name=\"verifier_verifiy_error_expired\">\"Entspricht nicht den Gültigkeitskriterien der Schweiz.\n\nDie Gültigkeit des Zertifikat ist abgelaufen.\"</string>\n\n    <!-- Verifier: Zertifikat ist erst gültig ab {DATE} -->\n    <string name=\"verifier_verifiy_error_notyetvalid\">\"Entspricht nicht den Gültigkeitskriterien der Schweiz.\n\nDas Zertifikat ist noch nicht gültig.\"</string>\n\n    <!-- Verifier: Ein Netzwerkfehler ist aufgetreten. -->\n    <string name=\"verifier_retry_network_error\">\"Ein Netzwerkfehler ist aufgetreten.\"</string>\n\n    <!-- Verifier: Das Gerät befindet sich im Flugmodus. -->\n    <string name=\"verifier_retry_flightmode_error\">\"Das Gerät befindet sich im Flugmodus.\"</string>\n\n    <!-- Wallet: Zertifikat gültig ab: {DATE} -->\n    <string name=\"wallet_error_valid_from\">\"In der Schweiz gültig ab:\n{DATE}\"</string>\n\n    <!-- Wallet: Fehler wenn Zertifikat nicht den CH-Gültigkeitskriterien entspricht -->\n    <string name=\"wallet_error_national_rules\">\"Enthält Daten, die nicht den internationalen Standards entsprechen.\"</string>\n\n    <!-- Wallet: Gültigkeit des Zertifikats abgelaufen -->\n    <string name=\"wallet_error_expired\">\"Gültigkeitsdauer für die Schweiz überschritten\"</string>\n\n    <!-- Wallet: Zertifikat wurde widerrufen -->\n    <string name=\"wallet_error_revocation\">\"Zertifikat wurde\nwiderrufen\"</string>\n\n    <!-- Wallet: Zertifikat mit ungültiger Signatur -->\n    <string name=\"wallet_error_invalid_signature\">\"Zertifikat mit\nungültiger Signatur\"</string>\n\n    <!-- Wallet: ungültiger Signatur (gleiche Worte wie wallet_error_invalid_signature) -->\n    <string name=\"wallet_error_invalid_signature_bold\">\"ungültiger Signatur\"</string>\n\n    <!-- Wallet: widerrufen (gleiches Wort wie bei wallet_error_revocation) -->\n    <string name=\"wallet_error_revocation_bold\">\"widerrufen\"</string>\n\n    <!-- Meldung wenn erneute ein Zertifikat gescannt wurde, welches bereits in der App ist -->\n    <string name=\"wallet_certificate_already_exists\">\"Dieses Zertifikat ist bereits in der App gespeichert\"</string>\n\n    <!-- Titel Gültigkeit im Zertifikatsdetail -->\n    <string name=\"wallet_certificate_validity\">\"Gültigkeit in der\nSchweiz\"</string>\n\n    <!-- \"Bis\" Label im Zertifikats-Detail -->\n    <string name=\"wallet_certificate_valid_until\">\"bis\"</string>\n\n    <!-- Message im Zertifikatsdetail während Überprüfung -->\n    <string name=\"wallet_certificate_verifying\">\"Das Zertifikat wird geprüft\"</string>\n\n    <!-- Message nach erfolgreicher Prüfung im Zertifikatdetail -->\n    <string name=\"wallet_certificate_verify_success\">\"Prüfung erfolgreich\"</string>\n\n    <!-- Accessibility: Info Box Butto -->\n    <string name=\"accessibility_info_box\">\"Information\"</string>\n\n    <!-- Button Schliessen -->\n    <string name=\"close_button\">\"Schliessen\"</string>\n    <string name=\"wallet_certificate_impfdosis_title\">\"Impfdosis\"</string>\n    <string name=\"target_disease_name\">\"Covid-19\"</string>\n    <string name=\"wallet_certificate_target_disease_title\">\"Krankheit oder Erreger\"</string>\n    <string name=\"wallet_certificate_impfstoff_product_name_title\">\"Produkt\"</string>\n    <string name=\"wallet_certificate_impfstoff_holder\">\"Hersteller\"</string>\n    <string name=\"wallet_certificate_vaccination_date_title\">\"Impfdatum\"</string>\n    <string name=\"wallet_certificate_vaccination_country_title\">\"Land der Impfung\"</string>\n    <string name=\"wallet_certificate_vaccination_issuer_title\">\"Herausgeber\"</string>\n    <string name=\"covid_certificate_recovery_title\">\"Genesung\"</string>\n    <string name=\"wallet_certificate_recovery_first_positiv_result\">\"Datum des ersten positiven Resultats\"</string>\n    <string name=\"wallet_certificate_recovery_from\">\"Gültig ab\"</string>\n    <string name=\"wallet_certificate_recovery_until\">\"Gültig bis\"</string>\n    <string name=\"wallet_certificate_test_land\">\"Land des Tests\"</string>\n    <string name=\"covid_certificate_test_title\">\"Test\"</string>\n    <string name=\"wallet_certificate_test_result_title\">\"Ergebnis\"</string>\n    <string name=\"wallet_certificate_test_result_negativ\">\"Nicht erkannt (Negativ)\"</string>\n    <string name=\"wallet_certificate_test_result_positiv\">\"Erkannt (Positiv)\"</string>\n    <string name=\"wallet_certificate_test_type\">\"Typ\"</string>\n    <string name=\"wallet_certificate_test_name\">\"Name\"</string>\n    <string name=\"wallet_certificate_test_holder\">\"Hersteller\"</string>\n    <string name=\"wallet_certificate_test_sample_date_title\">\"Datum der Probenentnahme\"</string>\n    <string name=\"wallet_certificate_test_result_date_title\">\"Datum Resultat\"</string>\n\n    <!-- Header im \"So funktionierts\" Screen der Verifier-App -->\n    <string name=\"verifier_support_header\">\"So funktioniert's\"</string>\n\n    <!-- Text im Bestätigungs-Dialog beim Zertifikat löschen -->\n    <string name=\"wallet_certificate_delete_confirm_text\">\"Wollen Sie das Zertifikat wirklich löschen?\"</string>\n\n    <!-- Titel eines Abbrechen-Buttons -->\n    <string name=\"cancel_button\">\"Abbrechen\"</string>\n\n    <!-- Wallet: Titel bei Impfungen -->\n    <string name=\"covid_certificate_vaccination_title\">\"Impfung\"</string>\n\n    <!-- Wallet: Apple App Store URL -->\n    <string name=\"wallet_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917320\"</string>\n\n    <!-- Verifier: Apple App Store URL -->\n    <string name=\"verifier_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917510\"</string>\n\n    <!-- Wallet: Abkürzung \"UVCI\" (Unique Vaccination Certificate Identifier) -->\n    <string name=\"wallet_certificate_identifier\">\"UVCI\"</string>\n\n    <!-- Wallet: Zertifikat erstellt am {DATE} -->\n    <string name=\"wallet_certificate_date\">\"Zertifikat erstellt am\n{DATE}\"</string>\n\n    <!-- Wallet: Detail Art des Impfstoffs -->\n    <string name=\"wallet_certificate_vaccine_prophylaxis\">\"Art des Impfstoffs\"</string>\n\n    <!-- Wallet: Test Detail Test durchgeführt durch -->\n    <string name=\"wallet_certificate_test_done_by\">\"Testcenter\"</string>\n\n    <!-- iOS: Erklärung bei Kamera  -->\n    <string name=\"NSCameraUsageDescription\">\"Die App benötigt Zugriff auf die Kamera, um den QR-Code scannen zu können.\"</string>\n\n    <!-- Titel 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_title\">\"So werden Covid-Zertifikate geprüft\"</string>\n\n    <!-- Text 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_subtitle\">\"Mit der COVID Certificate Check App können QR-Codes auf Covid-Zertifikaten gescannt und die Zertifikate auf Echtheit und Gültigkeit überprüft werden.\"</string>\n\n    <!-- Frage 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_1\">\"Wie können Covid-Zertifikate geprüft werden?\"</string>\n\n    <!-- Antwort 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_1\">\"Um ein Covid-Zertifikat zu prüfen, scannen Sie den QR-Code auf dem Papierzertifikat oder in der vorgewiesenen COVID Certificate App mit der dafür vorgesehenen COVID Certificate Check App.\"</string>\n\n    <!-- Frage 2 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_2\">\"Was wird genau geprüft?\"</string>\n\n    <!-- Antwort 2 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_2\">\"Beim Scannen werden drei Aspekte geprüft:\n– Enthält das Zertifikat eine gültige elektronische Signatur?\n– Ist das Zertifikat nicht widerrufen worden?\n– Entspricht das Zertifikat den Gültigkeitskriterien der Schweiz?\n\nWenn alle drei Aspekte positiv bewertet werden, wird das Covid-Zertifikat als gültig ausgewiesen.\"</string>\n\n    <!-- Frage 3 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_3\">\"Welche Ausweisdokumente sind gültig? Weshalb müssen die Personalien überprüft werden?\"</string>\n\n    <!-- Antwort 3 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_3\">\"Neben Pass oder ID werden auch andere Ausweisdokumente akzeptiert, die die Identität der betreffenden Person mit einem Foto belegen (z.B. Führerausweis). Das Covid-Zertifikat ist zwar fälschungssicher, mit der Überprüfung der Personalien wird aber erst sichergestellt, dass das vorgezeigte Zertifikat auch auf den Vorweisenden ausgestellt wurde.\"</string>\n\n    <!-- Frage 4 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_4\">\"Können auch ausländische Zertifikate geprüft werden?\"</string>\n\n    <!-- Antwort 4 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_4\">\"Ja, Covid-Zertifikate, die mit dem digitalen COVID-Zertifikat der EU kompatibel sind, können mit der COVID Certificate Check App gegen die Gültigkeitskriterien der Schweiz geprüft werden.\"</string>\n\n    <!-- Frage 5 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_5\">\"Welche Daten sehe ich beim Prüfvorgang?\"</string>\n\n    <!-- Antwort 5 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_5\">\"Beim Prüfvorgang sehen Sie nur den Namen und das Geburtsdatum der Zertifikatsinhaberin oder des Zertifikatsinhabers und ob das Covid-Zertifikat gültig ist.\"</string>\n\n    <!-- Frage 6 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_6\">\"Werden beim Prüfvorgang in der COVID Certificate Check App oder in einem zentralen System Daten gespeichert?\"</string>\n\n    <!-- Antwort 6 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_6\">\"Nein, beim Prüfvorgang werden keine Daten gespeichert - weder in der COVID Certificate Check App noch in einem zentralen System. Es ist somit nicht möglich nachzuvollziehen, welches Covid-Zertifikat von wem, wann und wo überprüft wurde.\"</string>\n\n    <!-- iOS Button zum Einstellungen öffnen -->\n    <string name=\"ios_settings_open\">\"Einstellungen\"</string>\n\n    <!-- Wallet: Onboarding externer Link zu Datenschutz -->\n    <string name=\"wallet_onboarding_external_privacy_button\">\"Datenschutzerklärung &amp;\nNutzungsbedingungen\"</string>\n\n    <!-- Wallet: Hinweis im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_note\">\"Dieses Zertifikat ist kein Reisedokument. \n&lt;br /&gt;&lt;br /&gt;\nDie wissenschaftlichen Erkenntnisse über Covid-19-Impfungen und -Tests sowie über die Genesung von einer Covid-19-Infektion entwickeln sich ständig weiter, auch im Hinblick auf neue besorgniserregende Virusvarianten. \n&lt;br /&gt;&lt;br /&gt;\nBitte informieren Sie sich vor einer Reise über die am Zielort geltenden Beschränkungen und Gültigkeitsregeln. Die Gültigkeit Ihres Zertifikats wird im Ausland anhand der Regeln des Ziellandes berechnet.\"</string>\n    <string name=\"wallet_terms_privacy_link\">\"https://www.bit.admin.ch/bit/de/home/dokumentation/covid-certificate-app.html\"</string>\n    <string name=\"verifier_terms_privacy_link\">\"https://www.bit.admin.ch/bit/de/home/dokumentation/covid-certificate-check-app.html\"</string>\n\n    <!-- Verifier: Titel in der App (z.B. Impressum) -->\n    <string name=\"verifier_app_title\">\"COVID Certificate Check\"</string>\n    <string name=\"wallet_faq_questions_question_1_1\">\"Wie erhalte ich nach einer durchgemachten Covid-19-Erkrankung ein Covid-Zertifikat?\"</string>\n    <string name=\"wallet_faq_questions_answer_1_1\">\"Je nach Kanton wird Ihnen das Covid-Zertifikat teilweise direkt von der Teststelle oder dem Labor ausgestellt, in dem Ihr positives Testresultat festgestellt wurde. Falls dies nicht der Fall ist, können Sie nachträglich online über die Webseite der «Nationale Antragsstelle Covid-Zertifikat» ein Covid-Zertifikat beantragen. Der Antrag wird dort von der zuständigen kantonalen Behörde bearbeitet. Die Webseite der «Nationale Antragsstelle Covid-Zertifikat» finden Sie hier:\"</string>\n\n    <!-- Wallet: Homescreen Was wollen sie machen? -->\n    <string name=\"wallet_homescreen_what_to_do\">\"Nächsten Schritt wählen\"</string>\n\n    <!-- Wallet: Homescreen Titel Zertifikat hinzufügen -->\n    <string name=\"wallet_homescreen_add_title\">\"Zertifikat hinzufügen\"</string>\n\n    <!-- Wallet: Homescreen Zertifikat Description Text -->\n    <string name=\"wallet_homescreen_add_certificate_description\">\"Sie haben ein Covid-Zertifikat auf Papier oder als PDF und möchten es zur App hinzufügen.\"</string>\n\n    <!-- Wallet: Homescreen Transfer-Code erstellen -->\n    <string name=\"wallet_homescreen_add_transfer_code\">\"Transfer-Code erstellen\"</string>\n\n    <!-- Wallet: Transfer Codes Titel -->\n    <string name=\"wallet_transfer_code_onboarding_title\">\"Transfer-Code\"</string>\n\n    <!-- Wallet: Transfer Code Text -->\n    <string name=\"wallet_transfer_code_onboarding_text\">\"Sie können Transfer-Codes bei Covid-Tests oder Covid-19-Impfungen angeben. Sie erhalten darauf das Covid-Zertifikat direkt in die App geliefert.\"</string>\n\n    <!-- Wallet: Transfer Code Onboarding Button -->\n    <string name=\"wallet_transfer_code_onboarding_button\">\"Code erstellen\"</string>\n\n    <!-- Wallet: Transfer Code Onboarding So funktioniert's -->\n    <string name=\"wallet_transfer_code_onboarding_howto\">\"So funktioniert's\"</string>\n\n    <!-- prüfen -->\n    <!-- Wallet: Transfer Code: FAQ Titel -->\n    <string name=\"wallet_transfer_code_faq_questions_title\">\"Covid-Zertifikate direkt in die App geliefert\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Text -->\n    <string name=\"wallet_transfer_code_faq_questions_subtitle\">\"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat nach einem Covid-Test oder einer Covid-19-Impfung direkt in die App geliefert.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 1 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_1\">\"Wer bietet die Übermittlung per Transfer-Code an?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 2 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_2\">\"Können Transfer-Codes auch zur Übermittlung von Impfzertifikaten verwendet werden?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 3 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_3\">\"Wie funktioniert die Übermittlung per Transfer-Code?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 4 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_4\">\"Kann ich den Transfer-Code mehrmals benutzen?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 1 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_1\">\"Wenn Sie einen Covid-Test (PCR-Test oder Antigen-Schnelltest) machen oder eine Covid-19-Impfung bekommen, kann der Transfer-Code zur schnellen Übermittlung von Covid-Zertifikaten zum Einsatz kommen.\n\nInformieren Sie sich bei Ihrem Testcenter, bei der Impfstelle, in der Apotheke oder bei Ihrem Arzt, ob die Übermittlung per Transfer-Code angeboten wird.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 2 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_2\">\"Aktuell ist die Übermittlung per Transfer-Code auf Covid-Tests ausgelegt. Wie Sie ein Covid-Zertifikat nach einer Impfung erhalten erfahren Sie hier:\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 3 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_3\">\"Falls die Stelle, die den Covid-Test durchführt oder die Covid-19-Impfung verabreicht, die Übermittlung per Transfer-Code anbietet, können Sie bereits bei der Anmeldung, der Testentnahme oder vor Erhalt der Impfung Ihren Transfer-Code angeben.\n\nEinen Transfer-Code erstellen Sie jederzeit in der «COVID Certificate»-App. Tippen Sie dazu auf dem Startbildschirm auf «Hinzufügen» resp. auf das «Plus»-Symbol unten rechts. Danach tippen Sie auf «Transfer-Code erstellen». Die App zeigt Ihnen dann den 9-stelligen Code an.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 4 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_4\">\"Nein, ein Transfer-Code kann nur einmal verwendet werden. Falls Sie mehrere Zertifikate z. B. von Familienangehörigen empfangen möchten, erstellen Sie bitte für jedes Zertifikat einen neuen Code.\"</string>\n    <string name=\"wallet_transfer_code_faq_works_title\">\"So funktioniert der Transfer\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 1 -->\n    <string name=\"wallet_transfer_code_faq_works_question_1\">\"Wie sind meine Daten beim Transfer geschützt?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 2 -->\n    <string name=\"wallet_transfer_code_faq_works_question_2\">\"Was kann ich tun, wenn das Zertifikat nicht ankommt?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 3 -->\n    <string name=\"wallet_transfer_code_faq_works_question_3\">\"Was passiert bei einem positiven Testresultat?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 1 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_1\">\"Für den Transfer wird Ihr Covid-Zertifikat verschlüsselt bereitgestellt. Der Transfer-Code stellt sicher, dass nur Ihre App das Covid-Zertifikat empfangen kann. Unmittelbar nach dem Transfer werden die Daten wieder vom Server gelöscht.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 2 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_2\">\"Sobald das Zertifikat vom Labor oder Testcenter generiert wurde, steht es zum Transfer zur Verfügung. Stellen Sie sicher, dass Ihr Smartphone mit dem Internet verbunden ist, um Zertifikate empfangen zu können.\n\nSollte ihr Covid-Zertifikat dennoch nicht eintreffen, fragen Sie bei der Stelle nach, die den Test durchgeführt hat (Testcenter, Apotheke, Ärztin / Arzt).\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 3 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_3\">\"Bei einem positiven Antigen-Schnelltest erhalten Sie vom Labor kein Covid-Zertifikat. \n\nBei einem positiven PCR-Test erhalten Sie ein Covid-Zertifikat für Genesene. Es ist ab dem 11. Tag nach der Testentnahme gültig.\"</string>\n\n    <!-- Wallet: Transfer Code erstellt Titel -->\n    <string name=\"wallet_transfer_code_code_created_title\">\"Ihr Transfer-Code wurde erstellt\"</string>\n\n    <!-- Wallet: Transfer-Code -->\n    <string name=\"wallet_transfer_code_title\">\"Transfer-Code\"</string>\n\n    <!-- Wallet: Transfer Code Erstelltm am {DATE} -->\n    <string name=\"wallet_transfer_code_createdat\">\"Erstellt am {DATE}\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte -->\n    <string name=\"wallet_transfer_code_next_steps\">\"Nächste Schritte\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte 1 -->\n    <string name=\"wallet_transfer_code_next_steps1\">\"Übergeben Sie den Code bei der Testentnahme der Apotheke, dem Testcenter oder der Ärztin / dem Arzt.\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte 2 -->\n    <string name=\"wallet_transfer_code_next_steps2\">\"Falls Sie mehrere Zertifikate z. B. von Familienangehörigen empfangen möchten, erstellen Sie für jedes Zertifikat einen neuen Code.\"</string>\n\n    <!-- Wallet: Transfer Code Fertig Button -->\n    <string name=\"wallet_transfer_code_done_button\">\"Fertig\"</string>\n\n    <!-- Wallet: Transfer Code Card Titel -->\n    <string name=\"wallet_transfer_code_card_title\">\"Transfer\"</string>\n\n    <!-- Wallet: Transfer Code Staus Warten auf Transfer -->\n    <string name=\"wallet_transfer_code_state_waiting\">\"Warten auf Transfer\"</string>\n\n    <!-- Wallet: Transfer Code Ablauf in 1 Tag -->\n    <string name=\"wallet_transfer_code_expire_singular\">\"Noch 1 Tag gültig\"</string>\n\n    <!-- Wallet: Transfer Code: Läuft ab in {DAYS} Tagen -->\n    <string name=\"wallet_transfer_code_expire_plural\">\"Noch {DAYS} Tage gültig\"</string>\n\n    <!-- Wallet: Transfer Code Status Abgelaufen -->\n    <string name=\"wallet_transfer_code_state_expired\">\"Transfer fehlgeschlagen\"</string>\n\n    <!-- Wallet: Transfer Code Alter Code Titel -->\n    <string name=\"wallet_transfer_code_old_code\">\"Code abgelaufen\"</string>\n\n    <!-- Wallet: Transfer Code State Zuletzt aktualisiert {DATE} -->\n    <string name=\"wallet_transfer_code_state_updated\">\"Zuletzt aktualisiert\n{DATE}\"</string>\n\n    <!-- Wallet: Transfer Code Kein Zertifikat mehr -->\n    <string name=\"wallet_transfer_code_state_no_certificate\">\"Mit diesem Transfer kann kein Zertifikat mehr empfangen werden.\"</string>\n\n    <!-- Wallet: Fehler Format des Zertifikat ungültig -->\n    <string name=\"wallet_error_invalid_format\">\"Format des Zertifikat\nungültig\"</string>\n\n    <!-- Wallet: Fehler Format des Zertifikat ungültig Fett -->\n    <string name=\"wallet_error_invalid_format_bold\">\"ungültig\"</string>\n\n    <!-- Verifier: Error Ungültiges Format -->\n    <string name=\"verifier_error_invalid_format\">\"Das Format des Covid-Zertifikats ist ungültig.\"</string>\n\n    <!-- Homescreen Zertifikat: Offline Modus Text -->\n    <string name=\"wallet_homescreen_offline\">\"Offline Modus\"</string>\n\n    <!-- Wallet: Detail Offline Text -->\n    <string name=\"wallet_offline_description\">\"Um die aktuelle Gültigkeit anzeigen zu können, muss die App regelmässig online sein.\"</string>\n\n    <!-- Wallet: Retry Titel Offline -->\n    <string name=\"wallet_detail_offline_retry_title\">\"Prüfung offline nicht möglich\"</string>\n\n    <!-- Wallet: Detail Netzwerkfehler Titel -->\n    <string name=\"wallet_detail_network_error_title\">\"Prüfung zur Zeit nicht möglich\"</string>\n\n    <!-- Wallet: Detail Netzwerkfehler Text -->\n    <string name=\"wallet_detail_network_error_text\">\"Versuchen Sie es später erneut.\"</string>\n\n    <!-- Verifier: Titel Fehler wenn kein Internet -->\n    <string name=\"verifier_offline_error_title\">\"Offline-Prüfung nicht möglich\"</string>\n\n    <!-- Verifier: Fehlertext wenn Offline bei Verifikation -->\n    <string name=\"verifier_offline_error_text\">\"Eine Internetverbindung wird benötigt, um die Prüflisten zu aktualisieren\"</string>\n\n    <!-- Verifier: Fehler Titel bei Netzwerkfehler -->\n    <string name=\"verifier_network_error_title\">\"Prüfung fehlgeschlagen\"</string>\n\n    <!-- Verifier: Fehler Text bei Netzwerkfehler -->\n    <string name=\"verifier_network_error_text\">\"Ein unerwarteter Fehler ist aufgetreten.\"</string>\n\n    <!-- Wallet: Text auf Zertifikat auf Homescreen bei Netzwerkfehler -->\n    <string name=\"wallet_homescreen_network_error\">\"Gültigkeit konnte nicht ermittelt werden\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_1\">\"Die App prüft regelmässig, ob ein Covid-Zertifikat für Ihren Transfer-Code verfügbar ist.\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 2 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_2\">\"Sobald das Covid-Zertifikat verfügbar ist, erscheint es in der App. Wenn Sie Mitteilungen aktiviert haben, werden Sie von der App benachrichtigt.\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_3\">\"Nach {TRANSFER_CODE_VALIDITY} Tagen läuft der Transfer-Code ab. Danach wartet die App noch für weitere 72h auf einen möglichen Transfer, bevor der Transfer-Code ungültig wird.\"</string>\n\n    <!-- Wallet: Titel im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_title\">\"Mitteilungen erlauben\"</string>\n\n    <!-- Wallet: Text im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_text\">\"Die App kann Sie informieren, sobald das Zertifikat eingetroffen ist.  Erlauben Sie dazu der App, Ihnen Mitteilungen zu senden.\"</string>\n\n    <!-- Wallet: Button im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_button\">\"Weiter\"</string>\n\n    <!-- Externe URL im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_external_link\">\"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"</string>\n\n    <!-- Label der externen URL im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_external_link_title\">\"Weitere Informationen\"</string>\n\n    <!-- Buttontitel im Screen, wo ein Code erstellt werden kann -->\n    <string name=\"wallet_transfer_code_create_code_button\">\"Code erstellen\"</string>\n\n    <!-- Wallet: Transfer Code Ablauf in 1 Tag (fetter Teil) -->\n    <string name=\"wallet_transfer_code_expire_singular_bold\">\"1 Tag\"</string>\n\n    <!-- Wallet: Transfer Code: Läuft in {DAYS} Tagen ab (fetter Teil) -->\n    <string name=\"wallet_transfer_code_expire_plural_bold\">\"{DAYS} Tage\"</string>\n\n    <!-- Infotext bei erfolgreicher Prüfung (Blacklist) -->\n    <string name=\"verifier_verify_success_info_for_blacklist\">\"Nicht widerrufen\"</string>\n\n    <!-- Infotext bei erfolgreicher Prüfung (Zertifikat) -->\n    <string name=\"verifier_verify_success_info_for_certificate_valid\">\"Signatur gültig\"</string>\n\n    <!-- Teil der Fehlermeldung bei noch nicht/nicht mehr gültigem Zertifikat, der Bold sein sollte (ref. verifier_verifiy_error_expired und _notyetvalid) -->\n    <string name=\"verifier_verify_error_validity_range_bold\">\"Entspricht nicht den Gültigkeitskriterien der Schweiz.\"</string>\n\n    <!-- Wallet: Transfer Code Fehler Titel -->\n    <string name=\"wallet_transfer_code_error_title\">\"Transfer-Code konnte nicht erstellt werden\"</string>\n\n    <!-- Wallet: Erstellen Fehler Titel -->\n    <string name=\"wallet_transfer_code_no_internet_title\">\"Keine Verbindung zum Internet\"</string>\n\n    <!-- Wallet: Erstellen anderer Fehler Titel -->\n    <string name=\"wallet_transfer_code_generate_error_title\">\"Ein unerwarteter Fehler ist aufgetreten.\"</string>\n\n    <!-- Wallet: Aktualisierung Transfer Code Fehler Titel -->\n    <string name=\"wallet_transfer_code_update_error_title\">\"Aktualisierung zur Zeit nicht möglich\"</string>\n\n    <!-- Wallet: Transfer Code Update Fehler Text -->\n    <string name=\"wallet_transfer_code_update_no_internet_error_text\">\"Um den Transfer empfangen zu können, muss die App online sein.\"</string>\n\n    <!-- Wallet Transfer Code Update Fehler Text -->\n    <string name=\"wallet_transfer_code_update_general_error_text\">\"Es ist ein unerwarteter Fehler aufgetreten. Versuchen Sie es später erneut.\"</string>\n\n    <!-- Wallet: Transfer Code Fehlertext bei Generieren -->\n    <string name=\"wallet_transfer_code_generate_error_text\">\"Versuchen Sie es später erneut.\"</string>\n\n    <!-- Wallet: Transfer Code Fehlertext bei Generieren ohne Internet -->\n    <string name=\"wallet_transfer_code_generate_no_internet_error_text\">\"Um einen Transfer-Code erstellen zu können, muss die App online sein.\"</string>\n\n    <!-- Wallet: Accessibility Name für Refresh Button -->\n    <string name=\"accessibility_refresh_button\">\"Aktualisieren\"</string>\n    <string name=\"wallet_transfer_delete_confirm_text\">\"Wollen Sie den Transfer-Code wirklich löschen?\"</string>\n    <string name=\"wallet_notification_transfer_title\">\"Transfer erfolgreich\"</string>\n    <string name=\"wallet_notification_transfer_text\">\"Das Covid-Zertifikat ist eingetroffen\"</string>\n    <string name=\"wallet_faq_questions_question_2_1\">\"Wie lange ist das Covid-Zertifikat gültig?\"</string>\n    <string name=\"wallet_faq_questions_answer_2_1\">\"In der Schweiz wurde die Zertifikatspflicht im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Im Ausland gelten jeweils die Gültigkeitsregeln des entsprechenden Landes. Informieren Sie sich kurz vor Ihrer Abreise auf der Webseite der Behörden Ihres Transit- oder Ziellandes, ob das Land noch zertifikatsbasierte Massnahmen hat und welche falls ja, welche Gültigkeitsdauern für Ihr Zielland festgelegt sind. Hilfreiche Webseite bei Auslandsreisen:\"</string>\n    <string name=\"wallet_faq_questions_linktext_2_1\">\"Re-open EU (europa.eu)\"</string>\n    <string name=\"wallet_faq_questions_linkurl_2_1\">\"https://reopen.europa.eu/de\"</string>\n    <string name=\"wallet_faq_works_question_3_1\">\"Kann ich die App auch offline verwenden?\"</string>\n    <string name=\"wallet_faq_works_answer_3_1\">\"Sie können die App ohne eine Internetverbindung verwenden. Auch im Offline-Modus können Zertifikate vorgewiesen und von den Prüfern gescannt und verifiziert werden.\"</string>\n    <string name=\"verifier_faq_works_question_2_1\">\"Was sind die aktuellen Gültigkeitskriterien der Schweiz?\"</string>\n    <string name=\"verifier_faq_works_answer_2_1\">\"Die aktuell geltende Gültigkeitsdauer von Covid-Zertifikaten finden Sie hier:\"</string>\n    <string name=\"verifier_faq_works_linktext_2_1\">\"Weitere Informationen\"</string>\n    <string name=\"verifier_faq_works_linkurl_2_1\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"</string>\n    <string name=\"verifier_faq_works_question_7\">\"Können Zertifikate auch offline geprüft werden?\"</string>\n    <string name=\"verifier_faq_works_answer_7\">\"Grundsätzlich können Covid-Zertifikate auch ohne eine Internetverbindung geprüft werden. Dazu werden regelmässig aktualisierte Prüflisten von einem zentralen Server heruntergeladen. Diese lokal gespeicherten Prüflisten dürfen nicht älter als 48h sein. \n\nUm die Prüflisten zu aktualisieren muss die App mit dem Internet verbunden sein und geöffnet werden. Die Aktualisierung erfolgt unmittelbar und automatisch.\"</string>\n\n    <!-- Button zum QR Code Scannen öffnen -->\n    <string name=\"wallet_homescreen_qr_code_scannen\">\"QR-Code scannen\"</string>\n\n    <!-- Button zum PDF importieren -->\n    <string name=\"wallet_homescreen_pdf_import\">\"PDF importieren\"</string>\n\n    <!-- Wallet: Titel im Transfer Code screen bei deaktiveren Notifications -->\n    <string name=\"wallet_notification_disabled_titel\">\"Tipp: Mitteilungen aktivieren\"</string>\n\n    <!-- Wallet: Button im Transfer Code screen bei deaktiveren Notifications der die Einstellungen öffnet -->\n    <string name=\"wallet_notification_disabled_button\">\"Aktivieren\"</string>\n\n    <!-- Titel für einen \"Nachweis\" (e.g. unvollständige Impfung) -->\n    <string name=\"wallet_certificate_evidence_title\">\"Nachweis\"</string>\n\n    <!-- Typenbezeichnung für eine unvollständige Impfung -->\n    <string name=\"wallet_certificate_type_incomplete_vaccine\">\"Unvollständige Impfung\"</string>\n\n    <!-- Label für das Erstellungsdatum eines Nachweises (mit Platzhalter für Datum und Uhrzeit) -->\n    <string name=\"wallet_certificate_evidence_creation_date\">\"Nachweis erstellt am\n{DATE}\"</string>\n    <string name=\"wallet_transfer_code_faq_questions_linktext_2\">\"Weitere Informationen\"</string>\n    <string name=\"wallet_transfer_code_faq_questions_linkurl_2\">\"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"</string>\n\n    <!-- Wallet: Zertifikat Light Button im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_certificate_light_button\">\"Zertifikat Light\"</string>\n\n    <!-- Wallet: Export Button im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_export_button\">\"Exportieren\"</string>\n\n    <!-- Wallet: Zertifikat Light Title -->\n    <string name=\"wallet_certificate_light_detail_title\">\"Was ist ein \nZertifikat Light?\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Titel -->\n    <string name=\"wallet_certificate_light_detail_summary_title\">\"Zertifikat Light\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 1 -->\n    <string name=\"wallet_certificate_light_detail_summary_1\">\"Kann nur innerhalb der Schweiz verwendet werden\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 2 -->\n    <string name=\"wallet_certificate_light_detail_summary_2\">\"Enthält nur Namen, Vornamen, Geburtsdatum und eine elektronische Signatur\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 3 -->\n    <string name=\"wallet_certificate_light_detail_summary_3\">\"Gültig für max. {LIGHT_CERT_VALIDITY_IN_H} Stunden\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 4 -->\n    <string name=\"wallet_certificate_light_detail_summary_4\">\"Die Konvertierung des Covid-Zertifikats in ein Zertifikat Light erfolgt online.\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 5 -->\n    <string name=\"wallet_certificate_light_detail_summary_5\">\"Sie können das Zertifikat Light jederzeit deaktivieren, um wieder zum normalen Covid-Zertifikat zu wechseln.\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivieren Button -->\n    <string name=\"wallet_certificate_light_detail_deactivate_button\">\"Deaktivieren\"</string>\n\n    <!-- Wallet: Zertifikat Light Deaktivieren Button -->\n    <string name=\"wallet_certificate_light_detail_activate_button\">\"Aktivieren\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Error -->\n    <string name=\"wallet_certificate_light_detail_activation_error\">\"Zertifikat Light\nkonnte nicht aktiviert werden\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Titel -->\n    <string name=\"wallet_certificate_light_detail_activation_network_error_text\">\"Um das Zertifikat Light aktivieren zu können, muss die App online sein.\"</string>\n\n    <!-- Info Text bei erfolgreicher Prüfung einers Zertifikate Light -->\n    <string name=\"verifier_verify_success_certificate_light_info\">\"Nur mit einem Ausweisdokument \n&amp; innerhalb der Schweiz gültig\"</string>\n\n    <!-- Wallet: Zertifikat Export Title -->\n    <string name=\"wallet_certificate_export_title\">\"Covid-Zertifikat exportieren\"</string>\n\n    <!-- Wallet: Zertifikat Export Erklärung Punkt 1 -->\n    <string name=\"wallet_certificate_export_summary_1\">\"Aus den Daten Ihres Covid-Zertifikats wird ein PDF erstellt, das Sie drucken oder teilen können.\"</string>\n\n    <!-- Wallet: Zertifikat Export Erklärung Punkt 2 -->\n    <string name=\"wallet_certificate_export_summary_2\">\"Die Erstellung des PDF-Dokuments erfolgt online.\"</string>\n\n    <!-- Wallet: Zertifikat Export Button -->\n    <string name=\"wallet_certificate_export_button\">\"Exportieren\"</string>\n\n    <!-- Wallet: Zertifikat Export Error Title -->\n    <string name=\"wallet_certificate_export_detail_error_title\">\"PDF konnte nicht\nerstellt werden\"</string>\n\n    <!-- Wallet: Zertifikat Export Netzwerk Error -->\n    <string name=\"wallet_certificate_export_detail_network_error_text\">\"Um das PDF erstellen zu können, muss die App online sein.\"</string>\n    <string name=\"accessibility_qr_code\">\"QR-Code\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Title -->\n    <string name=\"wallet_certificate_light_detail_activation_network_error_title\">\"Keine Verbindung zum Internet\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation General Fehler Text -->\n    <string name=\"wallet_certificate_light_detail_activation_general_error_text\">\"Versuchen Sie es später erneut.\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation General Fehler Titel -->\n    <string name=\"wallet_certificate_light_detail_activation_general_error_title\">\"Ein unerwarteter Fehler ist aufgetreten.\"</string>\n\n    <!-- Wallet: Zertifikat Light Titel -->\n    <string name=\"wallet_certificate_light_title\">\"Zertifikat Light\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Detail Title -->\n    <string name=\"wallet_certificate_export_detail_title\">\"Exportieren\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Summary 1 -->\n    <string name=\"wallet_certificate_export_detail_summary_1\">\"Aus den Daten Ihres Covid-Zertifikats wird ein PDF erstellt, das Sie drucken oder teilen können.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Summary 2 -->\n    <string name=\"wallet_certificate_export_detail_summary_2\">\"Die Erstellung des PDF-Dokuments erfolgt online.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail Export Button -->\n    <string name=\"wallet_certificate_export_detail_export_button\">\"Exportieren\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail Netzwerk Fehler -->\n    <string name=\"wallet_certificate_export_detail_network_error_title\">\"Keine Verbindung zum Internet\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail General Fehler -->\n    <string name=\"wallet_certificate_export_detail_general_error_title\">\"Ein unerwarteter Fehler ist aufgetreten.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail General Fehler Text -->\n    <string name=\"wallet_certificate_export_detail_general_error_text\">\"Es ist ein unerwarteter Fehler aufgetreten. Versuchen Sie es später erneut.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext 1 -->\n    <string name=\"wallet_certificate_light_detail_text_1\">\"Wenn Sie das Zertifikat Light aktivieren, wird aus den Daten Ihres Covid-Zertifikats ein neuer QR-Code erstellt, der keine Gesundheitsdaten enthält.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext 2 -->\n    <string name=\"wallet_certificate_light_detail_text_2\">\"Während das normale Covid-Zertifikat im Rahmen seiner Gültigkeit ohne Einschränkungen sowohl in der Schweiz als auch in der EU/EFTA verwendet werden kann, ist der Einsatz des Zertifikats Light nur in der Schweiz möglich. Aus Datenschutzgründen muss das Zertifikat Light nach {LIGHT_CERT_VALIDITY_IN_H} Stunden erneut aktiviert werden. Es bringt keine zusätzlichen Rechte gegenüber dem normalen Covid-Zertifikat.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext Bold -->\n    <string name=\"wallet_certificate_light_detail_text_2_bold\">\"nur muss keine\"</string>\n\n    <!-- VoiceOver reads this when the expandable box is reduced -->\n    <string name=\"accessibility_expandable_box_reduced_state\">\"reduziert\"</string>\n\n    <!-- VoiceOver reads this when the expandable box is expanded -->\n    <string name=\"accessibility_expandable_box_expanded_state\">\"erweitert\"</string>\n\n    <!-- Header im Update Boarding-Screen -->\n    <string name=\"wallet_update_boarding_header\">\"Update\"</string>\n\n    <!-- Titel im Zertifikat Light-Screen -->\n    <string name=\"wallet_update_boarding_certificate_light_title\">\"Zertifikat Light\"</string>\n\n    <!-- Text im Zertifikat Light-Screen -->\n    <string name=\"wallet_update_boarding_certificate_light_text\">\"Mit diesem Update können Sie in der App eine Zertifikatskopie ohne Gesundheitsdaten für die Verwendung in der Schweiz generieren lassen. Dazu wurden die Nutzungsbedingungen sowie die Datenschutzerklärung aktualisiert, welche bei Weiternutzung der App als genehmigt gelten.\"</string>\n\n    <!-- Header im Update Boarding-Screen -->\n    <string name=\"verifier_update_boarding_header\">\"Update\"</string>\n\n    <!-- Titel im Zertifikat Light-Screen -->\n    <string name=\"verifier_update_boarding_certificate_light_title\">\"Zertifikat Light\"</string>\n\n    <!-- Text im Zertifikat Light-Screen -->\n    <string name=\"verifier_update_boarding_certificate_light_text\">\"Mit diesem Update können Sie in der App auch die Zertifikatskopie ohne Gesundheitsdaten prüfen. Dazu wurden die Nutzungsbedingungen sowie die Datenschutzerklärung aktualisiert, welche bei Weiternutzung der App als genehmigt gelten.\"</string>\n\n    <!-- Verifier: Die Gültigkeit eines Certificate Light ist abgelaufen -->\n    <string name=\"verifier_certificate_light_error_expired\">\"Gültigkeit des Zertifikats\nabgelaufen\"</string>\n\n    <!-- Wallet: Badge für Light-Zertifikate in Liste Zertifikate -->\n    <string name=\"wallet_certificate_list_light_certificate_badge\">\"Light\"</string>\n    <string name=\"wallet_faq_questions_question_6\">\"Was ist das Zertifikat Light?\"</string>\n\n    <!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n    <string name=\"wallet_faq_questions_answer_6\">\"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zur Nutzung in der Schweiz zu generieren. Das «Zertifikat Light» bestätigt das Vorliegen eines gültigen Covid-Zertifikats, ohne selbst Gesundheitsdaten zu enthalten. \n\nDiese datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Covid-Zertifikate gewisse Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung enthalten, die auch ausgelesen werden können. Mittels dem «Zertifikat Light» wird dies verhindert.\n\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von {LIGHT_CERT_VALIDITY_IN_H} Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der {LIGHT_CERT_VALIDITY_IN_H} Stunden benötigt, kann das «Zertifikat Light» einfach deaktiviert werden.\"</string>\n    <string name=\"verifier_faq_works_question_8\">\"Was ist das Zertifikat Light?\"</string>\n\n    <!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n    <string name=\"verifier_faq_works_answer_8\">\"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zu generieren. Dieses «Zertifikat Light» zeigt lediglich das Vorliegen eines gültigen Covid-Zertifikats an, jedoch ohne Gesundheitsdaten zu enthalten. \n\nDie datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Dritte mit selbstentwickelten Apps bei der Prüfung von Covid-Zertifikaten Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung einsehen könnten. Mittels dem «Zertifikat Light» wird dies verhindert.\n\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von {LIGHT_CERT_VALIDITY_IN_H} Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der {LIGHT_CERT_VALIDITY_IN_H} Stunden benötigt, kann das Zertifikat Light einfach deaktiviert werden.\"</string>\n    <string name=\"verifier_faq_works_question_9\">\"Wie kann ein Zertifikat Light wieder in ein EU/EFTA-konformes Covid-Zertifikat umgewandelt werden?\"</string>\n    <string name=\"verifier_faq_works_answer_9\">\"Das Zertifikat Light kann durch die Halterin / den Halter jederzeit in der «COVID Certificate»-App deaktiviert werden. Danach steht das normale Covid-Zertifikat wieder zur Verfügung.\"</string>\n\n    <!-- Wallet: Light Zertifikat Accessibility Gültigkeits Label {TIMESPAN} wird ersetzt durch zB. 5 Stunden 3 Minuten -->\n    <string name=\"wallet_accessibility_light_certificate_expiration_timer\">\"Noch {TIMESPAN} gültig\"</string>\n\n    <!-- Toast Text wenn ein Transfer Code durch Klicken kopiert wurde -->\n    <string name=\"wallet_transfer_code_copied\">\"Transfer Code kopiert\"</string>\n    <string name=\"wallet_faq_works_question_2_1\">\"Was ist ein Transfer-Code?\"</string>\n    <string name=\"wallet_faq_works_answer_2_1\">\"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat nach einem Covid-Test oder einer Covid-19-Impfung direkt in die App geliefert.\"</string>\n    <string name=\"wallet_faq_works_question_5_1\">\"Ich habe das Covid-Zertifikat ausschliesslich elektronisch in der App. Wie komme ich zum Zertifikat als PDF oder auf Papier?\"</string>\n    <string name=\"wallet_faq_works_answer_5_1\">\"In der «COVID Certificate»-App finden Sie in der Detailansicht des elektronischen Covid-Zertifikats die Funktion «Exportieren». Damit können Sie ein PDF erstellen, dieses speichern und ausdrucken.\"</string>\n\n    <!-- wallet android app google play store deep link -->\n    <string name=\"wallet_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.wallet\"</string>\n\n    <!-- verifer android app google play store deep link -->\n    <string name=\"verifier_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.verifier\"</string>\n\n    <!-- Wallet: Titel Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n    <string name=\"wallet_certificate_light_rate_limit_title\">\"24h-Limite erreicht\"</string>\n\n    <!-- Wallet: Text Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n    <string name=\"wallet_certificate_light_rate_limit_text\">\"Das Zertifikat Light wurde in den letzten 24h bereits zu oft aktiviert.\"</string>\n    <string name=\"error_file_import_title\">\"Import fehlgeschlagen\"</string>\n    <string name=\"error_file_import_text\">\"Die Datei enthält entweder keinen gültigen QR-Code oder der QR-Code konnte nicht erkannt werden.\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten titel -->\n    <string name=\"wallet_transfer_code_unexpected_error_title\">\"Unerwarteter Fehler\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten text -->\n    <string name=\"wallet_transfer_code_unexpected_error_text\">\"Kontaktieren Sie den Support\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten telefon nummer -->\n    <string name=\"wallet_transfer_code_unexpected_error_phone_number\">\"+41 58 466 07 99\"</string>\n    <string name=\"error_corrupt_sharedprefs_title\">\"Entschlüsselungsfehler\"</string>\n    <string name=\"error_corrupt_sharedprefs_text\">\"Ein Speicher der App konnte nicht entschlüsselt werden. Um die App weiter zu benutzen muss der Speicher gelöscht und neu erstellt werden. Dabei gehen Daten verloren.\"</string>\n\n    <!-- Einstellungen: Titel -->\n    <string name=\"settings_title\">\"Einstellungen\"</string>\n\n    <!-- Einstellungen: Titel Sprachauswahl -->\n    <string name=\"language_title\">\"Sprache\"</string>\n\n    <!-- Information about the date format (always english) -->\n    <string name=\"wallet_certificate_detail_date_format_info\">\"Date format used: dd.mm.yyyy\"</string>\n    <string name=\"wallet_certificate_test_holder_and_name\">\"Hersteller und Name\"</string>\n\n    <!-- Wallet: Fehler-Titel falls Uhrzeit falsch eingestellt bei Transfer-Code -->\n    <string name=\"wallet_transfer_code_time_inconsistency_title\">\"Uhrzeit Fehler\"</string>\n\n    <!-- Wallet: Transfer-Code Fehler-Text, falls Zeit falsch eingestellt -->\n    <string name=\"wallet_transfer_code_time_inconsistency_text\">\"Die Uhrzeit muss richtig eingestellt sein, damit Transfer-Codes funktionieren. Passen Sie Ihre Uhrzeit an und versuchen sie es erneut.\"</string>\n\n    <!-- Toast Text wenn ein UVCI durch Klicken kopiert wurde -->\n    <string name=\"wallet_uvci_copied\">\"UVCI kopiert\"</string>\n\n    <!-- canton name ag -->\n    <string name=\"vaccination_booking_ag_name\">\"Aargau\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ag -->\n    <string name=\"vaccination_booking_ag_url\">\"https://www.ag.ch/coronavirus-impfung\"</string>\n\n    <!-- canton name ar -->\n    <string name=\"vaccination_booking_ar_name\">\"Appenzell Ausserrhoden\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ar -->\n    <string name=\"vaccination_booking_ar_url\">\"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"</string>\n\n    <!-- canton name ai -->\n    <string name=\"vaccination_booking_ai_name\">\"Appenzell Innerrhoden\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ai -->\n    <string name=\"vaccination_booking_ai_url\">\"https://www.ai.ch/coronavirus-impfung\"</string>\n\n    <!-- canton name bl -->\n    <string name=\"vaccination_booking_bl_name\">\"Basel-Landschaft\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton bl -->\n    <string name=\"vaccination_booking_bl_url\">\"https://www.bl.ch/impfen\"</string>\n\n    <!-- canton name bs -->\n    <string name=\"vaccination_booking_bs_name\">\"Basel-Stadt\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton bs -->\n    <string name=\"vaccination_booking_bs_url\">\"http://www.coronaimpfzentrumbasel.ch\"</string>\n\n    <!-- canton name be -->\n    <string name=\"vaccination_booking_be_name\">\"Bern\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton be -->\n    <string name=\"vaccination_booking_be_url\">\"http://www.be.ch/corona-impfung\"</string>\n\n    <!-- canton name fr -->\n    <string name=\"vaccination_booking_fr_name\">\"Freiburg\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton fr -->\n    <string name=\"vaccination_booking_fr_url\">\"https://www.fr.ch/de/gesundheit/covid-19/covid-19-impfung-in-ihrer-naehe-durch-impfteams-in-den-impfzentren-in-der-apotheke-oder-bei-ihrem-arzt\"</string>\n\n    <!-- canton name ge -->\n    <string name=\"vaccination_booking_ge_name\">\"Genf\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ge -->\n    <string name=\"vaccination_booking_ge_url\">\"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"</string>\n\n    <!-- canton name gl -->\n    <string name=\"vaccination_booking_gl_name\">\"Glarus\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton gl -->\n    <string name=\"vaccination_booking_gl_url\">\"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"</string>\n\n    <!-- canton name gr -->\n    <string name=\"vaccination_booking_gr_name\">\"Graubünden\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton gr -->\n    <string name=\"vaccination_booking_gr_url\">\"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"</string>\n\n    <!-- canton name ju -->\n    <string name=\"vaccination_booking_ju_name\">\"Jura\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ju -->\n    <string name=\"vaccination_booking_ju_url\">\"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"</string>\n\n    <!-- canton name lu -->\n    <string name=\"vaccination_booking_lu_name\">\"Luzern\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton lu -->\n    <string name=\"vaccination_booking_lu_url\">\"http://www.lu.ch/covid_impfung\"</string>\n\n    <!-- canton name ne -->\n    <string name=\"vaccination_booking_ne_name\">\"Neuenburg\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ne -->\n    <string name=\"vaccination_booking_ne_url\">\"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"</string>\n\n    <!-- canton name nw -->\n    <string name=\"vaccination_booking_nw_name\">\"Nidwalden\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton nw -->\n    <string name=\"vaccination_booking_nw_url\">\"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"</string>\n\n    <!-- canton name ow -->\n    <string name=\"vaccination_booking_ow_name\">\"Obwalden\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ow -->\n    <string name=\"vaccination_booking_ow_url\">\"https://www.ow.ch/dienstleistungen/7129\"</string>\n\n    <!-- canton name sg -->\n    <string name=\"vaccination_booking_sg_name\">\"St. Gallen\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sg -->\n    <string name=\"vaccination_booking_sg_url\">\"https://www.sg.ch/coronavirus/impfen\"</string>\n\n    <!-- canton name sh -->\n    <string name=\"vaccination_booking_sh_name\">\"Schaffhausen\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sh -->\n    <string name=\"vaccination_booking_sh_url\">\"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"</string>\n\n    <!-- canton name sz -->\n    <string name=\"vaccination_booking_sz_name\">\"Schwyz\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sz -->\n    <string name=\"vaccination_booking_sz_url\">\"https://www.sz.ch/corona-impfen\"</string>\n\n    <!-- canton name so -->\n    <string name=\"vaccination_booking_so_name\">\"Solothurn\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton so -->\n    <string name=\"vaccination_booking_so_url\">\"https://so.ch/coronaimpfung\"</string>\n\n    <!-- canton name tg -->\n    <string name=\"vaccination_booking_tg_name\">\"Thurgau\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton tg -->\n    <string name=\"vaccination_booking_tg_url\">\"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"</string>\n\n    <!-- canton name ti -->\n    <string name=\"vaccination_booking_ti_name\">\"Tessin\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ti -->\n    <string name=\"vaccination_booking_ti_url\">\"http://www.ti.ch/vaccinazione\"</string>\n\n    <!-- canton name ur -->\n    <string name=\"vaccination_booking_ur_name\">\"Uri\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ur -->\n    <string name=\"vaccination_booking_ur_url\">\"https://www.ur.ch/themen/3673\"</string>\n\n    <!-- canton name vs -->\n    <string name=\"vaccination_booking_vs_name\">\"Wallis\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton vs -->\n    <string name=\"vaccination_booking_vs_url\">\"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"</string>\n\n    <!-- canton name vd -->\n    <string name=\"vaccination_booking_vd_name\">\"Waadt\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton vd -->\n    <string name=\"vaccination_booking_vd_url\">\"https://vd.ch/coronavirus-vaccins\"</string>\n\n    <!-- canton name zg -->\n    <string name=\"vaccination_booking_zg_name\">\"Zug\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton zg -->\n    <string name=\"vaccination_booking_zg_url\">\"https://www.corona-impfung-zug.ch/\"</string>\n\n    <!-- canton name zh -->\n    <string name=\"vaccination_booking_zh_name\">\"Zürich\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton zh -->\n    <string name=\"vaccination_booking_zh_url\">\"http://www.zh.ch/coronaimpfung\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_2\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_2\">\"Mit der Covid-19-Impfung können Sie unbeschwert in die meisten Länder reisen.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_3\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_3\">\"Mit der Covid-19-Impfung können Sie sich vor Erkrankung und einem allfälligen schweren Verlauf schützen.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_4\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_4\">\"Mit der Covid-19-Impfung können Sie auf sichere Art immun werden.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_5\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_5\">\"Mit der Covid-19-Impfung können Sie mithelfen, die Krankheitslast zu reduzieren.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_6\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_6\">\"Mit der Covid-19-Impfung können Sie helfen, die Auswirkungen der Pandemie zu bekämpfen.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_7\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_7\">\"Mit der Covid-19-Impfung können Sie die Langzeitfolgen einer Covid-19-Erkrankung vermeiden.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_8\">\"Jetzt impfen lassen!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_8\">\"Mit der Covid-19-Impfung können Sie dazu beitragen, das Gesundheitswesen zu entlasten.\"</string>\n\n    <!-- vaccination booking info screen title -->\n    <string name=\"vaccination_booking_info_title\">\"Impftermin in Ihrer Nähe buchen\"</string>\n\n    <!-- vaccination booking info screen text -->\n    <string name=\"vaccination_booking_info_text\">\"Eine Impfung könnte zum Beispiel an diesen Orten in Ihrer Nähe stattfinden:\n\n- in spezifischen Impfzentren\n- in Spitälern\n- bei Ihrem Hausarzt oder Ihrer Hausärztin\n- in Impfapotheken\n\nViele Orte bieten auch Walk-in-Impfungen ohne Termine an.\"</string>\n\n    <!-- vaccination booking info screen info box at bottom -->\n    <string name=\"vaccination_booking_info_info\">\"Die Covid-19-Impfung ist für Personen ab 5 Jahren empfohlen.\"</string>\n\n    <!-- Header on vaccination appointment screen -->\n    <string name=\"vaccination_appointment_header\">\"Impftermin\"</string>\n\n    <!-- Book vaccination appointment button title on homescreen -->\n    <string name=\"vaccination_homescreen_button_title\">\"Impftermin buchen\"</string>\n\n    <!-- Choose your canton title in vaccination appointment screen -->\n    <string name=\"vaccination_choose_your_canton\">\"Wählen Sie Ihren Kanton\"</string>\n\n    <!-- Link title for more information about the vaccine -->\n    <string name=\"vaccination_more_information_title\">\"Weitere Informationen rund um die Covid-19-Impfung\"</string>\n\n    <!-- Button text for information about the vaccine at the bottom of the certificate -->\n    <string name=\"vaccination_information_button_in_certificate\">\"Informationen zur Impfung\"</string>\n\n    <!-- Vaccination Booking Info URL Link -->\n    <string name=\"vaccination_booking_info_url\">\"https://bag-coronavirus.ch/impfung/\"</string>\n\n    <!-- Show information if special hardware detected  -->\n    <string name=\"verifier_qr_scanner_external_hardware_detected\">\"Externer Hardwarescanner erkannt\"</string>\n\n    <!-- Error popup reset button text -->\n    <string name=\"error_decryption_reset_button\">\"Zurücksetzen\"</string>\n\n    <!-- Text Certificate Could not be loaded {ERROR_CODE} gets replaces with the error code -->\n    <string name=\"error_decryption_text\">\"Zertifikate konnten nicht geladen werden\n\nCode: {ERROR_CODE}\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_title\">\"Genesung (Antikörper)\"</string>\n    <string name=\"wallet_time_inconsistency_error_title\">\"Prüfung nicht möglich\"</string>\n    <string name=\"wallet_time_inconsistency_error_text\">\"Datum, Uhrzeit oder Zeitzone auf dem Gerät sind falsch eingestellt.\"</string>\n    <string name=\"wallet_info_box_certificate_scan_title\">\"Wollen Sie Zertifikate überprüfen?\"</string>\n    <string name=\"wallet_info_box_certificate_scan_text\">\"Für eine Datenschutzkonforme und schnellere Prüfung nutzen Sie die \\\"COVID Certificate Check\\\"-App.\"</string>\n    <string name=\"wallet_info_box_certificate_scan_button_check_app\">\"Zur Check-App\"</string>\n    <string name=\"wallet_info_box_certificate_scan_close\">\"Verstanden\"</string>\n    <string name=\"wallet_info_box_certificate_scan_text_bold\">\"«COVID Certificate Check»-App.\"</string>\n    <string name=\"wallet_only_valid_in_switzerland\">\"Ausserhalb der Schweiz nicht gültig\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_befund_label\">\"Befund\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_befund_value\">\"Genügend\"</string>\n\n    <!-- Ausnahme Test Zertifikat Detail: Titel für Startdatum des Attests -->\n    <string name=\"wallet_certificate_ausnahme_test_attest_start_date\">\"Beginn der Gültigkeit\"</string>\n\n    <!-- Ausnahme Test Zertifikat Detail: Titel für verantwortliche Stelle für Ausstellung -->\n    <string name=\"wallet_certificate_ausnahme_responsible_issuer\">\"Für die Ausstellung verantwortliche Stelle\"</string>\n\n    <!-- Testname für Schweizer Ausnahme Zertifikat für Nicht-Testbare und Nicht-Impfbare Personen -->\n    <string name=\"covid_certificate_ch_ausnahme_test_title\">\"Ausnahmezertifikat\"</string>\n    <string name=\"infobox_update_title\">\"Neue Version verfügbar\"</string>\n    <string name=\"infobox_update_text\">\"Laden Sie die neue Version der App.\"</string>\n    <string name=\"infobox_update_button\">\"Aktualisieren\"</string>\n\n    <!-- vaccination booking  screen info about Impf-Check (impf-check.ch) -->\n    <string name=\"vaccination_impf_check_info_text\">\"Der Covid-19 Impf-Check gibt Auskunft über Erst- sowie Auffrischimpfungen und führt Sie zur entsprechenden Anlaufstelle in Ihrem Kanton.\"</string>\n\n    <!-- button title for link to impf-check.ch -->\n    <string name=\"vaccination_impf_check_action\">\"Zum Impf-Check\"</string>\n\n    <!-- URL to ImpfCheck -->\n    <string name=\"vaccination_impf_check_url\">\"https://covid19.impf-check.ch/\"</string>\n    <string name=\"vaccination_impf_check_title\">\"Jetzt Termin buchen\"</string>\n    <string name=\"verifier_faq_works_linktext_1\">\"Erklärvideo\"</string>\n    <string name=\"verifier_faq_works_linkurl_1\">\"https://youtu.be/DClLZIUjr3w\"</string>\n\n    <!-- Title of button to choose verification mode -->\n    <string name=\"verifier_choose_mode_button_title\">\"wählen\"</string>\n\n    <!-- 👍 -->\n    <!-- Verifier app scan button with indication of mode -->\n    <string name=\"verifier_homescreen_scan_button_with_mode\">\"Prüfen ({MODE})\"</string>\n\n    <!-- error if scan was performed with a no longer existing mode -->\n    <string name=\"verifier_error_mode_no_longer_exists\">\"Ihr gewählter Prüfmodus existiert nicht mehr.\"</string>\n\n    <!-- 👍 -->\n    <!-- title for info pop-up in wallet app describing the validation states for the different check modes -->\n    <string name=\"wallet_check_mode_info_title\">\"Info\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 2G OK state -->\n    <string name=\"wallet_check_mode_info_2g_ok_text\">\"Zutritt zu Betrieben und Veranstaltungen für geimpfte oder genesene Personen.\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 2G NOT OK state -->\n    <string name=\"wallet_check_mode_info_2g_not_ok_text\">\"Kein Zutritt.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> display name of check mode 3G -->\n    <string name=\"verifier_check_mode_info_3g_title\">\"3G\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> display name of check mode 2G -->\n    <string name=\"verifier_check_mode_info_2g_title\">\"2G\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_1\">\"Für Betriebe und Veranstaltungen, in welchen mit einer 3G-Regelung geprüft wird.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_2\">\"In diesem Modus werden Covid-Zertifikate für Geimpfte, Genesene oder negativ Getestete akzeptiert.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_3\">\"Die Prüfung von einem Zertifikat Light ist in diesem Modus möglich.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_1\">\"Für Betriebe und Veranstaltungen, in welchen mit einer 2G-Regelung geprüft wird.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_2\">\"In diesem Modus werden Covid-Zertifikate für Geimpfte oder Genesene akzeptiert.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_3\">\"Die Prüfung von einem Zertifikat Light ist in diesem Modus nicht möglich.\"</string>\n\n    <!-- 👍 -->\n    <!-- Verifier: Modus auswählen Titel -->\n    <string name=\"verifier_mode_title\">\"Prüfmodus\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 3G OK state -->\n    <string name=\"wallet_check_mode_info_3g_ok_text\">\"Zutritt zu Betrieben und Veranstaltungen für geimpfte, genesene oder negativ getestete Personen.\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 3G NOT OK state -->\n    <string name=\"wallet_check_mode_info_3g_not_ok_text\">\"Kein Zutritt.\"</string>\n\n    <!-- Titel für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n    <string name=\"verifier_verify_light_not_supported_by_mode_title\">\"Beim zu prüfenden Covid-Zertifikat handelt es sich um ein Zertifikat Light. Dies kann im {MODUS}-Prüfmodus nicht geprüft werden.\"</string>\n\n    <!-- Text für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n    <string name=\"verifier_verify_light_not_supported_by_mode_text\">\"Die Prüfung kann in diesem Fall nur erfolgen, wenn die Umwandlung in ein Zertifikat Light rückgängig gemacht wird.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n    <string name=\"verifier_check_mode_info_unselected_text_1\">\"Wählen Sie den Prüfmodus, in welchem Sie Covid-Zertifikate prüfen möchten.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n    <string name=\"verifier_check_mode_info_unselected_text_2\">\"Der Prüfmodus kann jederzeit geändert werden.\"</string>\n\n    <!-- check app -> check mode select pop-up -> display name of check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_title\">\"2G+\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_1\">\"Für Betriebe und Veranstaltungen, in welchen mit einer Regelung nach 2G+ geprüft wird.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_2\">\"Zusätzlich zu einem Covid-Zertifikat für Geimpfte oder Genesene wird ein gültiges Testzertifikat benötigt, welches separat geprüft werden muss.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_3\">\"Ausnahmen: Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung nicht länger als 120 Tage zurückliegt.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_4\">\"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"</string>\n\n    <!-- 2G+: Anzeige, dass Zertifikat 2G erfüllt -->\n    <string name=\"verifier_2g_plus_success2g\">\"Gültiges Covid-Zertifikat nach 2G-Regelung\"</string>\n\n    <!-- 2G+: Info, dass Zertifikat + erfüllt -->\n    <string name=\"verifier_2g_plus_successplus\">\"Gültiges Covid-Zertifikat für Getestete\"</string>\n\n    <!-- Verifier: 2G+ Info, dass noch + nötig -->\n    <string name=\"verifier_2g_plus_infoplus\">\"Für 2G+ nur in Kombination mit der Prüfung eines gültigen Testzertifikats zugelassen.\"</string>\n\n    <!-- Verifier: 2G+ Info dass noch 2G nötig -->\n    <string name=\"verifier_2g_plus_info2g\">\"Für 2G+ nur in Kombination mit der Prüfung eines Covid-Zertifikats für Geimpfte oder Genesene zugelassen.\"</string>\n\n    <!-- Prüfung fehlgeschlagen App update nötig -->\n    <string name=\"verifier_error_app_store_text\">\"Die Prüfung dieser Art des Covid-Zertifikats bedingt die neuste Version der Check-App. Bitte aktualisieren Sie Ihre App und wiederholen Sie den Prüfvorgang.\"</string>\n\n    <!-- Button Text für Prüfung fehlgeschlagen App update nötig  -->\n    <string name=\"verifier_error_app_store_button\">\"Zum App Store\"</string>\n\n    <!-- check app -> check mode select pop-up -> display name of check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_title\">\"Testzertifikat\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_1\">\"Für Bereiche, bei denen ein gültiges Testzertifikat notwendig ist.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_2\">\"In diesem Modus werden Covid-Zertifikate für negativ Getestete basierend auf einem PCR- oder Antigen-Schnelltest akzeptiert.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_3\">\"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_1\">\"Der «Refresh-Button» wurde entfernt.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_2\">\"Sollte Ihr Covid-Zertifikat abgelaufen oder technisch ungültig sein, wird Ihnen dies direkt auf dem Zertifikat angezeigt.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_3\">\"Die Prüfung von Covid-Zertifikaten ist mit der App «COVID Certificate Check» vorzunehmen.\"</string>\n\n    <!-- wallet refresh button removal info box fat title above text 3 -->\n    <string name=\"wallet_refresh_button_info_fat_title_3\">\"Für Prüfende\"</string>\n\n    <!-- wallet refresh button removal info box link text -->\n    <string name=\"wallet_refresh_button_info_link_text\">\"Mehr erfahren\"</string>\n\n    <!-- wallet refresh button removal info box link url -->\n    <string name=\"wallet_refresh_button_info_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"</string>\n\n    <!-- text for info pop-up in wallet app describing 2G+ OK state -->\n    <string name=\"wallet_check_mode_info_2g_plus_ok_text\">\"Zutritt zu Betrieben und Veranstaltungen für Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung (basierend auf PCR-Test) nicht länger als 120 Tage zurückliegt. Sie benötigen kein zusätzliches Testzertifikat.\"</string>\n\n    <!-- text for info pop-up in wallet app describing 2G+ NOT OK state -->\n    <string name=\"wallet_check_mode_info_2g_plus_not_ok_text\">\"Für den Zutritt zu Betrieben und Veranstaltungen wird zusätzlich zum Covid-Zertifikat für geimpfte oder genesene Personen ein negatives Testresultat benötigt.\"</string>\n\n    <!-- wallet refresh button removal info box title -->\n    <string name=\"wallet_refresh_button_info_title\">\"Info\"</string>\n\n    <!-- Ausnahme-Zertifikat: Medizinisches Attest ausgestellt in -->\n    <string name=\"wallet_certificate_ausnahme_issued_country\">\"Medizinisches Attest ausgestellt in\"</string>\n\n    <!-- Wallet: Hinweis im Zertifikat Detail für Ausnahme Zertifikat -->\n    <string name=\"wallet_certificate_detail_note_ausnahme\">\"Dieses Zertifikat ist kein Reisedokument. \n&lt;br /&gt;&lt;br /&gt;\nDieses Zertifikat ist zeitlich nur begrenzt gültig. Die aktuell in der Schweiz massgebliche Gültigkeitsdauer können Sie jederzeit mit der Covid-Certificate App überprüfen.\"</string>\n\n    <!-- Wallet: Ausnahme Label für Liste -->\n    <string name=\"covid_certificate_ch_ausnahme_list_label\">\"Ausnahme\"</string>\n\n    <!-- Wallet: Titel von einem positivem Antigen-Test -->\n    <string name=\"covid_certificate_antigen_positive_test\">\"Genesung (Antigen-Schnelltest)\"</string>\n\n    <!-- Wallet: Antigen Positive Titel von Testdatum -->\n    <string name=\"wallet_certificate_antigen_positive_date\">\"Datum des ersten positiven Resultats\"</string>\n\n    <!-- Wallet: Blaue Box für positiven Antigen-Test -->\n    <string name=\"wallet_certificate_detail_note_positive_antigen\">\"Dieses Zertifikat ist kein Reisedokument.\n&lt;br /&gt;&lt;br /&gt;\nDieses Zertifikat ist zeitlich nur begrenzt gültig. Die aktuell in der Schweiz massgebliche Gültigkeitsdauer können Sie jederzeit mit der Covid-Certificate App überprüfen.\"</string>\n\n    <!-- banner title on homescreen. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_homescreen_title\">\"Bald abgelaufen\"</string>\n\n    <!-- banner title in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_title\">\"Info\"</string>\n\n    <!-- banner text in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_text\">\"Dieses Zertifikat läuft bald ab.\"</string>\n\n    <!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_more_info\">\"Mehr erfahren?\"</string>\n\n    <!-- title for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_title\">\"Info\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text1\"></string>\n\n    <!-- bold text box for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_bold_text\">\"Dieses Covid-Zertifikat ist nur noch wenige Tage gültig. Bitte beachten Sie das auf dem Zertifikat ausgewiesene Ablaufdatum.\"</string>\n\n    <!-- link text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_text\">\"Und nun?\"</string>\n\n    <!-- link url for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"</string>\n\n    <!-- banner title on homescreen. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_homescreen_title\">\"Verkürzte Gültigkeitsdauer\"</string>\n\n    <!-- banner title in certificate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_title\">\"Verkürzte Gültigkeitsdauer\"</string>\n\n    <!-- banner text in certificate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_text\">\"Dieses Zertifikat wird bald ablaufen.\"</string>\n\n    <!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_more_info\">\"Mehr erfahren\"</string>\n\n    <!-- title for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_title\">\"Info\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_text1\">\"Per 31. Jan. 2022 gelten in der Schweiz reduzierte Gültigkeitsdauern von 270 statt 365 Tagen für Covid-Zertifikate für Geimpfte oder Genesene. Dieses Zertifikat ist von der verkürzten Gültigkeitsdauer unmittelbar betroffen:\"</string>\n\n    <!-- bold text box for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_bold_text\">\"Dieses Covid-Zertifikat kann ab dem 31. Jan. 2022 nicht mehr verwendet werden, da die Gültigkeitsdauer dann bereits abgelaufen sein wird.\"</string>\n\n    <!-- link text for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_text\">\"Mehr erfahren\"</string>\n\n    <!-- link url for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text2\"></string>\n    <string name=\"infobox_generic_title\">\"Zertifikat sichern!\"</string>\n    <string name=\"infobox_generic_text\">\"Wenn Sie die App löschen, Ihr Smartphone wechseln oder verlieren, gehen auch Ihre Covid-Zertifikate verloren.\nBewahren Sie Ihre Zertifikate daher auch ausserhalb der App auf, indem Sie diese als PDF exportieren.\"</string>\n    <string name=\"infobox_generic_button\">\"Mehr erfahren\"</string>\n    <string name=\"infobox_generic_url_android\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/ich-habe-das-covid-zertifikat-ausschliesslich-elektronisch-der-covid-certificate\"</string>\n    <string name=\"infobox_generic_url_ios\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/ich-habe-das-covid-zertifikat-ausschliesslich-elektronisch-der-covid-certificate\"</string>\n\n    <!-- accessibilityLabel for the \"1\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon1\">\"Erstens\"</string>\n\n    <!-- accessibilityLabel for the \"2\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon2\">\"Zweitens\"</string>\n\n    <!-- accessibilityLabel for the \"3\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon3\">\"Drittens\"</string>\n\n    <!-- Reise-Check: Label des Buttons um Gültigkeit im Ausland zu prüfen -->\n    <string name=\"wallet_foreign_rules_check_button\">\"Gültigkeit im Ausland\"</string>\n\n    <!-- Reise-Check: Titel des Reise-Check Screens -->\n    <string name=\"wallet_foreign_rules_check_title\">\"Gültigkeit für Reisen ins Ausland\"</string>\n\n    <!-- Reise-Check: Untertitel des Reise-Check Screens -->\n    <string name=\"wallet_foreign_rules_check_subtitle\">\"Finden Sie vor einer Auslandreise heraus, ob Ihr Covid-Zertifikat zum Zeitpunkt der Einreise ins Zielland gültig ist.\"</string>\n\n    <!-- Reise-Check: Titel der Länder- und Datumsauswahl -->\n    <string name=\"wallet_foreign_rules_check_form_title\">\"Prüfen für:\"</string>\n\n    <!-- Reise-Check: Label des Länder Eingabefeldes -->\n    <string name=\"wallet_foreign_rules_check_country_label\">\"Land:\"</string>\n\n    <!-- Reise-Check: Wert wenn kein Land ausgewählt -->\n    <string name=\"wallet_foreign_rules_check_country_empty_label\">\"Wählen\"</string>\n\n    <!-- Reise-Check: Label des Datum Eingabefeldes -->\n    <string name=\"wallet_foreign_rules_check_date_label\">\"Einreise am:\"</string>\n\n    <!-- Reise-Check: Fehlermeldung wenn Datum in der Vergangenheit liegt -->\n    <string name=\"wallet_foreign_rules_check_date_in_past_error\">\"Die angegebene Uhrzeit liegt in der Vergangenheit\"</string>\n\n    <!-- Reise-Check: Titel des Hinweise Abschnittes -->\n    <string name=\"wallet_foreign_rules_check_hints_title\">\"Hinweise\"</string>\n\n    <!-- Reise-Check: Label für den Mehr Informationen Button -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_label\">\"Mehr Informationen finden Sie unter\"</string>\n\n    <!-- Reise-Check: Prüfstatus wenn noch kein Land ausgewählt wurde -->\n    <string name=\"wallet_foreign_rules_check_state_empty\">\"Bitte wählen Sie ein Land und den Einreisezeitpunkt aus.\"</string>\n\n    <!-- Reise-Check: Titel des Auswahldialoges für das Land -->\n    <string name=\"wallet_foreign_rules_check_country_picker_title\">\"Land auswählen\"</string>\n\n    <!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat gültig ist -->\n    <string name=\"wallet_foreign_rules_check_state_valid\">\"Gültig für die Einreise nach:\"</string>\n\n    <!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat ungültig ist -->\n    <string name=\"wallet_foreign_rules_check_state_invalid\">\"Ungültig für die Einreise nach:\"</string>\n\n    <!-- Reise-Check: Zweite Zeile des Prüfstatus wenn Zertifikat (un-)gültig ist. {COUNTRY} und {DATE} nicht übersetzen -->\n    <string name=\"wallet_foreign_rules_check_state_country_and_date\">\"{COUNTRY}, {DATE}\"</string>\n\n    <!-- Error-Titel falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n    <string name=\"wallet_foreign_rules_check_error_title\">\"Fehler beim Laden der verfügbaren Länder\"</string>\n\n    <!-- Error-Text falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n    <string name=\"wallet_foreign_rules_check_network_error_text\">\"Um die Gültigkeit zu überprüfen, muss Ihr Smartphone mit dem Internet verbunden sein.\"</string>\n\n    <!-- Reisefeature: Hinweis 1 -->\n    <string name=\"wallet_foreign_rules_check_hint_2\">\"Die Einreiseregeln können sich ändern. Prüfen Sie daher die Gültigkeit kurz vor der Abreise und informieren Sie sich zusätzlich online über die aktuellen Einreiseregeln des Ziellandes.\"</string>\n\n    <!-- Reisefeature: Hinweis 2 -->\n    <string name=\"wallet_foreign_rules_check_hint_3\">\"Die oben genannten Angaben beziehen sich nur auf die Einreiseregeln des Ziellandes. Für allfällige zertifikatspflichtige Bereiche innerhalb des Landes können andere Regeln gelten.\"</string>\n\n    <!-- Reisefeature: Hinweis 3 -->\n    <string name=\"wallet_foreign_rules_check_hint_1\">\"Für die Aktualität und Vollständigkeit der gegebenen Informationen übernimmt der Bund keine Haftung.\"</string>\n\n    <!-- Reisefeature: Hinweis 4 -->\n    <string name=\"wallet_foreign_rules_check_hint_4\">\"Land nicht gefunden? Nicht alle Länder akzeptieren Covid-Zertifikate oder es wurden keine Einreiseregeln verfügbar gemacht.\"</string>\n\n    <!-- Reisefeature: Text des Mehr Infos Buttons -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_link_text\">\"reopen.europa.eu\"</string>\n\n    <!-- Reisefeature: URL die geöffnet wird wenn auf den Mehr Info Button geklickt wird -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_link_url\">\"https://reopen.europa.eu/\"</string>\n\n    <!-- RAT-Umwandlung:  Titel bei Zertifikat -->\n    <string name=\"rat_conversion_overview_title\">\"Neu: EU-kompatible Version\"</string>\n\n    <!-- RAT-Umwandlung: Text bei Zertifikat -->\n    <string name=\"rat_conversion_overview_text\">\"Für dieses Covid-Zertifikat kann eine EU-kompatible Version beantragt werden.\"</string>\n\n    <!-- RAT-Umwandlung: Button-Text zu Umwandlung Detail -->\n    <string name=\"rat_conversion_overview_button\">\"Mehr erfahren\"</string>\n\n    <!-- RAT-Umwandlung: Titel Detail -->\n    <string name=\"rat_conversion_title\">\"Covid-Zertifikat beantragen (EU-kompatibel)\"</string>\n\n    <!-- RAT-Umwandlung: Text auf Detail -->\n    <string name=\"rat_conversion_text\">\"Neu werden Covid-Zertifikate für Genesene auf Basis von Antigen-Schnelltests auch in der EU akzeptiert.\n\nSie haben die Möglichkeit, eine EU-kompatible Version dieses Zertifikats bei der Nationalen Antragsstelle zu beantragen.\"</string>\n\n    <!-- RAT-Umwandlung: Title bei Formular-Verlinkung -->\n    <string name=\"rat_conversion_form_title\">\"Zum Online-Formular der Nationalen Antragsstelle\"</string>\n\n    <!-- Rat-Umwandlung: Text zum Formular -->\n    <string name=\"rat_conversion_form_text\">\"Ich bin einverstanden, dass die Daten dieses Covid-Zertifikats in das Formular der Nationalen Antragsstelle (eine Website des Bundes) übertragen werden.\"</string>\n\n    <!-- RAT-Umwandlung: Absprung Button -->\n    <string name=\"rat_conversion_form_button\">\"Zum Formular\"</string>\n\n    <!-- RAT-Umwandlung: Linktext zur Webseite nationale Antragsstelle -->\n    <string name=\"rat_conversion_link_antragsstelle\">\"Website der Nationalen Antragsstelle (ohne Datenübernahme)\"</string>\n\n    <!-- RAT-Umwandlung: Info Text 1 -->\n    <string name=\"rat_conversion_info1_text\">\"Ist die Beantragung erfolgreich, wird Ihnen das neue EU-kompatible Covid-Zertifikat per Post zugestellt und kann von Ihnen in die App übernommen werden. Eine direkte Zustellung in die App ist nicht möglich.\"</string>\n\n    <!-- RAT-Umwandlung: Info 2 Text -->\n    <string name=\"rat_conversion_info2_text\">\"Durch die Übernahme der Daten des Zertifikats in das Online-Formular kann Ihr Antrag einfacher verarbeitet werden.\"</string>\n\n    <!-- Die URL für das Formular, mit dem für ein RAT Genesungszert ein reguläres Genesungszert beantragt werden kann -->\n    <string name=\"wallet_rat_recovery_conversion_url\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\n    <!-- RAT-Umwandlung: Titel vor Infos -->\n    <string name=\"rat_conversion_info_title\">\"Weitere Informationen\"</string>\n\n    <!-- cert renewal general info heading -->\n    <string name=\"cert_renewal_info_info_heading\">\"Was bedeutet das?\"</string>\n\n    <!-- cert renewal general info text 1 -->\n    <string name=\"cert_renewal_info_info_text_1\">\"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"</string>\n\n    <!-- cert renewal general info text 2 -->\n    <string name=\"cert_renewal_info_info_text_2\">\"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"</string>\n\n    <!-- cert renewal general info text 3 -->\n    <string name=\"cert_renewal_info_info_text_3\">\"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"</string>\n\n    <!-- cert renewal general info text 4 -->\n    <string name=\"cert_renewal_info_info_text_4\">\"Wieso Sie den QR-Code auch dann erneuern sollten, wenn Ihr Impf- oder Genesungszertifikat nach den Schweizer Gültigkeitsregeln bald abläuft oder bereits abgelaufen ist, lesen Sie in dieser FAQ.\"</string>\n\n    <!-- cert renewal info heading for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_heading\">\"Was bedeutet das?\"</string>\n\n    <!-- cert renewal text 1 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_1\">\"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"</string>\n\n    <!-- cert renewal text 2 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_2\">\"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"</string>\n\n    <!-- cert renewal text 3 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_3\">\"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"</string>\n\n    <!-- cert renewal text 4 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_4\">\"Erneuern Sie den QR-Code auch dann, wenn die Gültigkeit in der Schweiz bald abläuft oder bereits abgelaufen ist.\"</string>\n\n    <!-- cert renewal info heading for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_heading\">\"Wichtig!\"</string>\n\n    <!-- cert renewal text 1 for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_text_1\">\"Ersetzen Sie auch zuvor ausgedruckte oder gespeicherte Zertifikate durch diese erneuerte Version.\"</string>\n\n    <!-- cert renewal text 2 for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_text_2\">\"Wie lange ein Covid-Zertifikat gültig ist wird in jedem Land gemäss den aktuell geltenden Regeln berechnet. Die Erneuerung des QR-Codes hat darauf keinen Einfluss.\"</string>\n\n    <!-- Wallet: Zertifikat QR Code läuft ab am {DATE} -->\n    <string name=\"wallet_certificate_qr_code_expiration_date\">\"QR code expiration date (technical)\n{DATE}\"</string>\n\n    <!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_title\">\"QR-Code erneuern\"</string>\n\n    <!-- Wallet: Text der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_text\">\"Um dieses Zertifikat weiterhin verwenden zu können, muss der QR-Code erneuert werden.\"</string>\n\n    <!-- Wallet: Buttontext der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_button\">\"Mehr erfahren\"</string>\n\n    <!-- Wallet: Buttontext um den QR Code eines Zertifikats zu erneuern -->\n    <string name=\"wallet_certificate_renew_now_button\">\"QR-Code erneuern\"</string>\n    <string name=\"wallet_certificate_renewal_qr_code_expiration\">\"Ablaufdatum QR Code\"</string>\n    <string name=\"wallet_certificate_renewal_required_info\">\"Das technische Ablaufdatum für diesen QR-Code ist (bald) erreicht. \"</string>\n    <string name=\"wallet_certificate_renewal_in_progress_info\">\"QR-Code wird erneuert\"</string>\n    <string name=\"wallet_certificate_renewal_successful_info\">\"Der QR-Code wurde erfolgreich erneuert\"</string>\n    <string name=\"wallet_certificate_renewal_offline_error_title\">\"Keine Verbindung zum Internet\"</string>\n    <string name=\"wallet_certificate_renewal_offline_error_text\">\"Um den QR-Code erneuern zu können, muss die App online sein.\"</string>\n    <string name=\"wallet_certificate_renewal_general_error_title\">\"Ein unerwarteter Fehler ist aufgetreten.\"</string>\n    <string name=\"wallet_certificate_renewal_general_error_text\">\"Versuchen Sie es später erneut.\"</string>\n\n    <!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_title\">\"Erfolgreich erneuert\"</string>\n\n    <!-- Wallet: Text der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_text\">\"Ersetzen Sie auch ausgedruckte oder gespeicherte Versionen dieses Zertifikats durch diese erneuerte Version.\"</string>\n\n    <!-- Wallet: Button der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_button\">\"Mehr erfahren\"</string>\n\n    <!-- Wallet: QR Code des Zertifikats abgelaufen -->\n    <string name=\"wallet_error_qr_code_expired\">\"Das technische Ablaufdatum für diesen QR-Code ist erreicht.\"</string>\n    <string name=\"wallet_certificate_renewal_rate_limit_error_title\">\"24h-Limite erreicht\"</string>\n    <string name=\"wallet_certificate_renewal_rate_limit_error_text\">\"QR-Code zu oft erneuert. Erneuerung temporär gesperrt.\"</string>\n    <string name=\"wallet_certificate_renewal_faq_link_text\">\"Zur FAQ\"</string>\n    <string name=\"wallet_certificate_renewal_faq_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"</string>\n    <string name=\"terms_and_conditions_update_boarding_title\">\"Aktualisierung\"</string>\n    <string name=\"terms_and_conditions_update_boarding_text\">\"Die Nutzungsbedingungen und die Datenschutzerklärung der App wurden punktuell aktualisiert und an die rechtlichen Grundlagen angepasst.\"</string>\n    <string name=\"wallet_validity_since_vaccination_date\">\"Impfdatum\"</string>\n    <string name=\"wallet_validity_since_test_date\">\"Negativ getestet\"</string>\n\n    <!-- vor 2 Tagen - must be before \"2 Tagen\"! -->\n    <string name=\"wallet_validity_since_prefix\">\"vor\"</string>\n\n    <!-- vor 1 Stunde -->\n    <string name=\"wallet_validity_since_hours_singular\">\"1 Stunde\"</string>\n\n    <!-- vor 2 Stunden -->\n    <string name=\"wallet_validity_since_hours_plural\">\"{HOURS} Stunden\"</string>\n\n    <!-- vor 1 Tag -->\n    <string name=\"wallet_validity_since_days_singular\">\"1 Tag\"</string>\n\n    <!-- vor 2 Tagen -->\n    <string name=\"wallet_validity_since_days_plural\">\"{DAYS} Tagen\"</string>\n    <string name=\"wallet_update_boarding_page_1_title\">\"Was ist neu?\"</string>\n    <string name=\"wallet_update_boarding_page_1_text\">\"Neu wird auf dem Covid-Zertifikat das Feld «Gültigkeit in der Schweiz» nicht mehr dargestellt. Stattdessen zeigt die App den Zeitpunkt der Impfung bzw. des Tests an. Warum?\"</string>\n    <string name=\"wallet_update_boarding_page_2_title\">\"Covid-Zertifikate in der Schweiz\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_1\">\"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben.\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_2\">\"Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben im Inland keine praktische Bedeutung mehr.\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_3\">\"Die Schweizer Gültigkeitsdauer hat auch im Ausland keine Bedeutung.\"</string>\n    <string name=\"wallet_update_boarding_page_3_title\">\"Covid-Zertifikate im Ausland\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_1\">\"Im Ausland gelten die Regeln des entsprechenden Landes.\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_2\">\"Neu zeigt die App an, wie viele Tage eine Impfung bzw. ein Test her ist.\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_3\">\"So können Sie einfacher feststellen, ob Ihr Zertifikat den Regeln Ihres Ziellandes entspricht (falls das Land noch ein Covid-Zertifikat voraussetzt).\"</string>\n    <string name=\"wallet_update_boarding_page_4_title\">\"Aktuelle Situation in Europa und weltweit\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_1\">\"Die meisten Länder in Europa haben die Zertifikatspflicht für die Einreise inzwischen aufgehoben.\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_2\">\"Die Funktion «Gültigkeit im Ausland» wurde daher ebenfalls entfernt.\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_3\">\"Ob in einem Land noch eine Zertifikatspflicht gilt, erfahren Sie auf diesen Webseiten:\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_1_text\">\"reopen.europa.eu\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_1_url\">\"https://reopen.europa.eu\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_2_text\">\"iatatravelcentre.com\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_2_url\">\"https://www.iatatravelcentre.com\"</string>\n    <string name=\"wallet_validity_since_more_hours_prefix\">\"vor mehr als\"</string>\n    <string name=\"wallet_validity_since_recovery_date\">\"Positiv getestet\"</string>\n    <string name=\"covid_certificate_news_text\">\"Zertifikatspflicht aufgehoben\"</string>\n    <string name=\"covid_certificate_news_title\">\"Zertifikatspflicht aufgehoben\"</string>\n    <string name=\"covid_certificate_news_item1\">\"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben.\"</string>\n    <string name=\"covid_certificate_news_item2\">\"Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben im Inland keine praktische Bedeutung mehr.\"</string>\n    <string name=\"covid_certificate_news_item3\">\"Diese Schweizer Prüf-App prüft Covid-Zertifikate nach den Schweizer Gültigkeitsregeln. Das Prüfergebnis ist für einen Einsatz im Ausland nicht massgeblich.\"</string>\n    <string name=\"covid_certificate_news_item4\">\"Falls ein Land noch ein Covid-Zertifikat voraussetzt, gelten jeweils die Regeln des entsprechenden Landes.\"</string>\n    <string name=\"wallet_faq_questions_linktext_1_1\">\"Nationale Antragsstelle Covid-Zertifikat (admin.ch)\"</string>\n    <string name=\"wallet_faq_questions_linkurl_1_1\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n    <string name=\"wallet_faq_questions_question_2_2\">\"Ich verreise ins Ausland und brauche für die Einreise ein Covid-Zertifikat. Was muss ich beachten?\"</string>\n    <string name=\"wallet_faq_questions_answer_2_2\">\"Im Ausland gelten jeweils die Gültigkeitsregeln des entsprechenden Landes, sowohl für die Einreise wie auch innerhalb des Ziellandes. Für die Verwendung des Zertifikats innerhalb des Ziellandes können andere Regeln als bei der Einreise gelten. Diese Regeln können kurzfristig ändern. Informieren Sie sich daher kurz vor Ihrer Abreise auf der Webseite der Behörden Ihres Transit- oder Ziellandes, ob dort noch Regeln im Zusammenhang mit Covid-19 gelten und wenn ja, welche.\"</string>\n    <string name=\"wallet_error_not_fully_protected_national_rules\">\"Unvollständige Impfserie gemäss internationalen Standards.\"</string>\n</resources>"
  },
  {
    "path": "common/src/main/res/values-fr/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n   ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n   ~\n   ~ This Source Code Form is subject to the terms of the Mozilla Public\n   ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n   ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n   ~\n   ~ SPDX-License-Identifier: MPL-2.0\n   -->\n<resources>\n\n    <!-- Android App Name -->\n    <string name=\"verifier_app_name\">\"Covid Check\"</string>\n\n    <!-- Title for the qr scanning screen -->\n    <string name=\"verifier_title_qr_scan\">\"Vérifier\"</string>\n\n    <!-- Titel über dem Haupttitel -->\n    <string name=\"verifier_homescreen_header_title\">\"Covid Certificate\"</string>\n\n    <!-- Homescreen App Name -->\n    <string name=\"verifier_homescreen_title\">\"Check\"</string>\n\n    <!-- Beschreibung für Pager Bild 1 -->\n    <string name=\"verifier_homescreen_pager_description_1\">\"Scanner le certificat présenté\"</string>\n\n    <!-- Beschreibung für Pager Bild 2 -->\n    <string name=\"verifier_homescreen_pager_description_2\">\"Les certificats sont vérifiés automatiquement\"</string>\n\n    <!-- Homescreen Button für Scanning -->\n    <string name=\"verifier_homescreen_scan_button\">\"Vérifier\"</string>\n\n    <!-- Homescreen Button für Support -->\n    <string name=\"verifier_homescreen_support_button\">\"Comment ça fonctionne\"</string>\n    <string name=\"error_network_title\">\"Problème de réseau\"</string>\n    <string name=\"error_network_text\">\"Vérifiez votre connexion Internet.\"</string>\n    <string name=\"error_action_retry\">\"Réessayer\"</string>\n    <string name=\"error_camera_permission_title\">\"Accès à l'appareil photo refusé\"</string>\n    <string name=\"error_camera_permission_text\">\"L'application doit accéder à l'appareil photo pour pouvoir scanner le code QR.\"</string>\n    <string name=\"error_action_change_settings\">\"Modifier les paramètres\"</string>\n    <string name=\"error_title\">\"Erreur\"</string>\n    <string name=\"qr_scanner_error\">\"Code invalide\"</string>\n    <string name=\"ok_button\">\"OK\"</string>\n    <string name=\"camera_permission_dialog_text\">\"L'application doit accéder à l'appareil photo pour pouvoir scanner le code QR.\"</string>\n    <string name=\"camera_permission_dialog_action\">\"Donner accès à l'appareil photo\"</string>\n    <string name=\"verifier_qr_scanner_scan_qr_text\">\"Scanner le code QR \npour vérifier\"</string>\n\n    <!-- Titel auf dem Verifikations-Screen -->\n    <string name=\"covid_certificate_title\">\"Certificat COVID\"</string>\n\n    <!-- Name des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n    <string name=\"verifier_covid_certificate_name\">\"Nom\"</string>\n\n    <!-- Geburtsdatum des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n    <string name=\"verifier_covid_certificate_birthdate\">\"Date de naissance\"</string>\n\n    <!-- Wallet: Zertifikat hinzufügen -->\n    <string name=\"wallet_add_certificate\">\"Ajouter\"</string>\n\n    <!-- Wallet: Homescreen Covid-Zertifikat -->\n    <string name=\"wallet_certificate\">\"Certificat COVID\"</string>\n\n    <!-- Wallet: Homescreen Erklärung -->\n    <string name=\"wallet_homescreen_explanation\">\"Scannez le code QR situé sur le certificat COVID pour l'ajouter à l'application.\"</string>\n\n    <!-- Wallet: Scanner Titel -->\n    <string name=\"wallet_scanner_title\">\"Ajouter\"</string>\n\n    <!-- Titel bei erfolgreicher Prüfung -->\n    <string name=\"verifier_verify_success_title\">\"Vérification réussie\"</string>\n\n    <!-- Info Text bei erfolgreicher Prüfung -->\n    <string name=\"verifier_verify_success_info\">\"Valable uniquement avec \nune pièce d'identité\"</string>\n\n    <!-- Prüfung loading text -->\n    <string name=\"verifier_verify_loading_text\">\"Vérification en cours\"</string>\n\n    <!-- Fehler Title bei Prüfung -->\n    <string name=\"verifier_verify_error_title\">\"Certificat COVID invalide\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Nationale Regeln) -->\n    <string name=\"verifier_verify_error_info_for_national_rules\">\"Ne répond pas aux critères de validité applicables en Suisse ou à ceux du mode de contrôle ({MODUS})\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Zertifikat Fehler) -->\n    <string name=\"verifier_verify_error_info_for_certificate_invalid\">\"Le certificat COVID n'a pas de signature valide\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Blacklist) -->\n    <string name=\"verifier_verify_error_info_for_blacklist\">\"Le certificat COVID a été révoqué\"</string>\n\n    <!-- Fehler bei der geladen Liste -->\n    <string name=\"verifier_verify_error_list_title\">\"La vérification a échoué\"</string>\n\n    <!-- Fehler Info bei laden der Liste -->\n    <string name=\"verifier_verify_error_list_info_text\">\"Une erreur inattendue est survenue\"</string>\n\n    <!-- Wallet: Scanner Text unten -->\n    <string name=\"wallet_scanner_explanation\">\"Scannez le code QR placé sur le certificat COVID.\"</string>\n\n    <!-- Wallet: Scanner Info Button unten -->\n    <string name=\"wallet_scanner_info_button\">\"Comment ça fonctionne\"</string>\n\n    <!-- Wallet: Erneut scannen Button -->\n    <string name=\"wallet_scan_again\">\"Scanner à nouveau\"</string>\n\n    <!-- Wallet: Hinzufügen von Zertifikat Button -->\n    <string name=\"wallet_add_certificate_button\">\"Ajouter\"</string>\n\n    <!-- Wallet: Titel der Liste Zertifikate -->\n    <string name=\"wallet_certificate_list_title\">\"Certificats\"</string>\n\n    <!-- Wallet: Löschen Button Titel -->\n    <string name=\"delete_button\">\"Effacer\"</string>\n\n    <!-- Android App Name für die Wallet -->\n    <string name=\"wallet_app_name\">\"Covid Cert\"</string>\n\n    <!-- Header im Onboarding-Screen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_header\">\"L'application\"</string>\n\n    <!-- Titel im Onboardingscreen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_title\">\"COVID Certificate\"</string>\n\n    <!-- Text im Onboardingscreen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_text\">\"L'application vous permet de conserver en toute sécurité des certificats COVID sur votre téléphone et de les présenter facilement.\"</string>\n\n    <!-- Weiter-Button Titel -->\n    <string name=\"continue_button\">\"Continuer\"</string>\n\n    <!-- Header im Onboarding-Screen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_header\">\"Protection des données\"</string>\n\n    <!-- Titel im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_title\">\"Vos données restent \ndans l'application\"</string>\n\n    <!-- Text im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_text\">\"Les certificats sont uniquement stockés localement sur votre téléphone. Les données ne sont pas enregistrées dans un système central.\"</string>\n\n    <!-- Titel im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_title\">\"Présenter facilement vos certificats\"</string>\n\n    <!-- Text 1 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_text1\">\"Les données contenue dans le certificat COVID sont également dans le code QR.\"</string>\n\n    <!-- Text 2 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_text2\">\"Lorsque vous le présentez, le code QR sera lu avec une application qui vérifiera automatiquement l'exactitude et la validité des données.\"</string>\n\n    <!-- Titel des Datenschutzerklärungs-Elements im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_privacypolicy_title\">\"Déclaration de confidentialité\"</string>\n\n    <!-- Titel des Nutzungsbedingungen-Elements im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_conditionsofuse_title\">\"Conditions d'utilisation\"</string>\n\n    <!-- Button zum Abschliessen des Onboardings -->\n    <string name=\"wallet_onboarding_accept_button\">\"Accepter\"</string>\n    <string name=\"language_key\">\"fr\"</string>\n\n    <!-- Header im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_header\">\"Comment ça fonctionne\"</string>\n\n    <!-- Titel im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_title\">\"Ajouter des \ncertificats COVID\"</string>\n\n    <!-- Textblock 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text1\">\"Pour ajouter un certificat COVID dans l'application, vous avez besoin de l'original en papier ou en PDF.\"</string>\n\n    <!-- Textblock 2 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text2\">\"Cliquez sur \\\"Ajouter\\\" dans l'application pour ajouter un nouveau certificat dans l'application.\"</string>\n\n    <!-- Textblock 3 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text3\">\"Maintenez l'appareil photo du téléphone sur le code QR du certificat original pour le scanner.\"</string>\n\n    <!-- Textblock 4 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text4\">\"Un aperçu du certificat COVID apparaît. Cliquer sur \\\"Ajouter\\\" pour sauvegarder  en toute sécurité le certificat dans l'application.\"</string>\n\n    <!-- Frage 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_question1\">\"Quand et où puis-je obtenir un certificat COVID ?\"</string>\n\n    <!-- Header im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_header\">\"Questions fréquentes\"</string>\n\n    <!-- Titel 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_title\">\"Le certificat COVID en bref\"</string>\n\n    <!-- Text 1im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_subtitle\">\"Le certificat COVID atteste de manière infalsifiable une vaccination contre le COVID-19, une guérison ou un résultat de test négatif.\"</string>\n\n    <!-- Frage 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_1\">\"Quand et où puis-je obtenir un certificat COVID?\"</string>\n\n    <!-- Frage 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_2\">\"Par quel moyen puis-je présenter un certificat COVID?\"</string>\n\n    <!-- Frage 3 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_3\">\"Où mes données sont-elles stockées?\"</string>\n\n    <!-- Frage 4 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_4\">\"Comment prévient-on les abus et les falsifications?\"</string>\n\n    <!-- Frage 5 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_5\">\"Et si je perds mon certificat COVID?\"</string>\n\n    <!-- Frage 6 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_1\">\"Comment ajouter un certificat COVID à l'app?\"</string>\n\n    <!-- Frage 7 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_2\">\"Puis-je ajouter plusieurs certificats COVID?\"</string>\n\n    <!-- Frage 8 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_3\">\"Où voir si mon certificat COVID est valable ?\"</string>\n\n    <!-- Frage 9 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_4\">\"Comment mes données sont-elles protégées?\"</string>\n\n    <!-- Frage 10 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_5\">\"Que contient le code QR?\"</string>\n\n    <!-- Frage 11 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_6\">\"Et si je supprime le certificat COVID ou l'app?\"</string>\n\n    <!-- Antwort 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_1\">\"Vous pouvez obtenir le certificat COVID si vous êtes vaccinés contre le COVID-19, si vous avez guéri de la maladie ou si vous présentez un résultat de test négatif. En général, le certificat est délivré sur demande, par les professionnels de la santé présents sur le site.\"</string>\n\n    <!-- Antwort 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_2\">\"Vous pouvez présenter votre certificat COVID sur papier ou au moyen de l’app de stockage créée à cet effet. Vous êtes libre de choisir l’une ou l’autre solution.\n\nDans tous les cas, vous devez aussi présenter une pièce d’identité sur demande. Dans certains pays, une version imprimée du certificat est exigée, et le certificat électronique n’est pas accepté. Nous vous conseillons donc de vous munir de la version imprimée lorsque vous voyagez.\"</string>\n\n    <!-- Antwort 3 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_3\">\"Les données de votre certificat ne sont pas stockées dans un système central de la Confédération, mais sont sauvegardées localement, sur votre appareil mobile ou sur le certificat papier.\"</string>\n\n    <!-- Antwort 4 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_4\">\"Le code QR figurant sur le certificat COVID contient une signature électronique. Celle-ci est une caractéristique de sécurité importante qui rend le certificat infalsifiable. En outre, le certificat COVID n'est valable que sur présentation d'une pièce d'identité.\"</string>\n\n    <!-- Antwort 5 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_5\">\"Votre certificat COVID n'est pas stocké dans un système central de la Confédération. Par conséquent, nous vous recommandons de le conserver sur papier ou au format PDF dans un endroit sûr. En cas de perte ou de remplacement, le paiement d’un émolument peut être exigé pour l’établissement d’un nouveau document par les institutions sanitaires (lieu de test ou de vaccination).\"</string>\n\n    <!-- Antwort 6 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_1\">\"Pour ajouter un certificat COVID à l'app, vous avez besoin du certificat original qui vous a été délivré sur papier ou par voie électronique, au format PDF. Au moyen de l'app, vous pouvez scanner le code QR figurant sur ce document. Ensuite, le certificat COVID apparaît directement dans l'app.\"</string>\n\n    <!-- Antwort 7 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_2\">\"Oui. Vous pouvez par exemple stocker dans l'app les certificats COVID de tous les membres de votre famille. À noter également dans ce cas qu'un certificat COVID n'est valable que si son détenteur présente une pièce d'identité.\"</string>\n\n    <!-- Antwort 8 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_3\">\"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. C’est pourquoi le champ « Validité en Suisse » n’est plus représenté dans l’application, qui indique par contre le nombre de jours écoulés depuis une vaccination ou un test. \n\nL’application indique aussi le nombre de jours écoulés depuis une vaccination ou un test. Vous pouvez ainsi vérifier plus facilement si votre certificat correspond aux règles de validité de votre pays de destination (au cas où ce pays exige encore un certificat COVID). À l’étranger, les règles en vigueur varient d’un pays à l’autre.\"</string>\n\n    <!-- Antwort 9 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_4\">\"Vos données personnelles ne sont pas stockées dans un système central, mais ne sont sauvegardées que localement, sur votre appareil mobile ou dans le code QR figurant sur le certificat papier.\"</string>\n\n    <!-- Antwort 10 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_5\">\"Le code QR contient toutes les informations qui apparaissent en clair sur le certificat papier. En outre, il renferme une signature électronique qui permet de vérifier l'authenticité du certificat COVID. Par conséquent, le certificat COVID est infalsifiable.\"</string>\n\n    <!-- Antwort 11 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_6\">\"Vous pouvez réenregistrer facilement votre certificat COVID sur votre appareil mobile. Il vous suffit de télécharger de nouveau l'app, puis de scanner le code QR figurant sur le certificat original, établi sur papier ou au format PDF.\"</string>\n\n    <!-- Titel 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_title\">\"Comment l'app \nfonctionne-t-elle?\"</string>\n\n    <!-- Text 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_subtitle\">\"L'app vous permet de stocker des certificats COVID de manière simple et sûre sur votre appareil mobile et de les présenter au moyen de ce dernier.\"</string>\n\n    <!-- Antwort 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_answer1\">\"Vous pouvez obtenir le certificat COVID si vous êtes entièrement vacciné contre le COVID-19, si vous avez guéri de la maladie ou si vous présentez un résultat de test négatif. En général, le certificat est délivré sur demande, par les professionnels de la santé présents sur le site.\"</string>\n\n    <!-- Verifier: Detail Check Vorname -->\n    <string name=\"verifier_covid_certificate_prename\">\"Prénom\"</string>\n\n    <!-- Config: Titel wenn App muss geupdatet werden -->\n    <string name=\"force_update_title\">\"Mise à jour nécessaire\"</string>\n\n    <!-- Config: Text der angezeigt wird falls App muss geupdatet werden -->\n    <string name=\"force_update_text\">\"Téléchargez la nouvelle version de l'application.\"</string>\n\n    <!-- Config: Update Button Aktualisieren -->\n    <string name=\"force_update_button\">\"Mettre à jour\"</string>\n\n    <!-- Wallet: Zertifikat gültig ab: {DATE} -->\n    <string name=\"wallet_certificate_valid_from\">\"Valable en Suisse à partir du : \n{DATE}\"</string>\n\n    <!-- Wallet: Zertifikat Detail Geimpft -->\n    <string name=\"certificate_reason_vaccinated\">\"Vaccination\"</string>\n\n    <!-- Wallet: Zertifikat Detail Genesen -->\n    <string name=\"certificate_reason_recovered\">\"Guérison\"</string>\n\n    <!-- Wallet: Zertifikat Detail Getestet -->\n    <string name=\"certificate_reason_tested\">\"Test\"</string>\n\n    <!-- Header im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_header\">\"Avantages\"</string>\n\n    <!-- Titel im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_title\">\"Conserver numériquement les certificats COVID\"</string>\n\n    <!-- Text1 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_text1\">\"Les certificats COVID peuvent facilement être ajoutés dans l'application et conservés numériquement.\"</string>\n\n    <!-- Text2 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_text2\">\"L'application vérifie la validité des certificats en Suisse. Vous avez donc la certitude qu'ils sont valides.\"</string>\n\n    <!-- Header im Onboarding-Screen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_header\">\"Avantages\"</string>\n\n    <!-- Accessibility: Information -->\n    <string name=\"accessibility_info_button\">\"Impressum\"</string>\n\n    <!-- Accessibility: FAQ Button Titel -->\n    <string name=\"accessibility_faq_button\">\"Questions fréquentes\"</string>\n\n    <!-- Accessibility: Button zur Liste der Zertifikate -->\n    <string name=\"accessibility_list_button\">\"Liste des certificats\"</string>\n\n    <!-- Accessibility: Zertifikate hinzufügen -->\n    <string name=\"accessibility_add_button\">\"Ajouter un certificat\"</string>\n\n    <!-- Accessibility: Schliessen Button -->\n    <string name=\"accessibility_close_button\">\"Fermer\"</string>\n\n    <!-- Accessibility: Taschenlampe anschalten Button -->\n    <string name=\"accessibility_lamp_on_button\">\"Allumer la lampe de poche\"</string>\n\n    <!-- Accessibility: Lampe abschalten -->\n    <string name=\"accessibility_lamp_off_button\">\"Éteindre la lampe de poche\"</string>\n\n    <!-- Titel des Impressum-Screens -->\n    <string name=\"impressum_title\">\"Impressum\"</string>\n\n    <!-- Unbekannter Fehler -->\n    <string name=\"unknown_error\">\"Une erreur inconnue est survenue.\"</string>\n\n    <!-- Verifier: Die Gültigkeit des Zertifikat ist abgelaufen -->\n    <string name=\"verifier_verifiy_error_expired\">\"Ne remplit pas les critères de validité de la Suisse.\n\nLa durée de validité du certificat a expiré.\"</string>\n\n    <!-- Verifier: Zertifikat ist erst gültig ab {DATE} -->\n    <string name=\"verifier_verifiy_error_notyetvalid\">\"Ne remplit pas les critères de validité de la Suisse.\n\nLe certificat n'est pas encore valable.\"</string>\n\n    <!-- Verifier: Ein Netzwerkfehler ist aufgetreten. -->\n    <string name=\"verifier_retry_network_error\">\"Une erreur de réseau est survenue.\"</string>\n\n    <!-- Verifier: Das Gerät befindet sich im Flugmodus. -->\n    <string name=\"verifier_retry_flightmode_error\">\"L'appareil est en mode avion.\"</string>\n\n    <!-- Wallet: Zertifikat gültig ab: {DATE} -->\n    <string name=\"wallet_error_valid_from\">\"Valable en Suisse à partir du : \n{DATE}\"</string>\n\n    <!-- Wallet: Fehler wenn Zertifikat nicht den CH-Gültigkeitskriterien entspricht -->\n    <string name=\"wallet_error_national_rules\">\"Contient des données qui ne satisfont pas aux normes internationales.\"</string>\n\n    <!-- Wallet: Gültigkeit des Zertifikats abgelaufen -->\n    <string name=\"wallet_error_expired\">\"Durée de validité dépassée pour la Suisse\"</string>\n\n    <!-- Wallet: Zertifikat wurde widerrufen -->\n    <string name=\"wallet_error_revocation\">\"Certificat révoqué\"</string>\n\n    <!-- Wallet: Zertifikat mit ungültiger Signatur -->\n    <string name=\"wallet_error_invalid_signature\">\"Signature non valable\"</string>\n\n    <!-- Wallet: ungültiger Signatur (gleiche Worte wie wallet_error_invalid_signature) -->\n    <string name=\"wallet_error_invalid_signature_bold\">\"Signature non valable\"</string>\n\n    <!-- Wallet: widerrufen (gleiches Wort wie bei wallet_error_revocation) -->\n    <string name=\"wallet_error_revocation_bold\">\"Certificat révoqué\"</string>\n\n    <!-- Meldung wenn erneute ein Zertifikat gescannt wurde, welches bereits in der App ist -->\n    <string name=\"wallet_certificate_already_exists\">\"Le certificat est déjà enregistré dans l'application.\"</string>\n\n    <!-- Titel Gültigkeit im Zertifikatsdetail -->\n    <string name=\"wallet_certificate_validity\">\"Validité en \nSuisse\"</string>\n\n    <!-- \"Bis\" Label im Zertifikats-Detail -->\n    <string name=\"wallet_certificate_valid_until\">\"jusqu'au\"</string>\n\n    <!-- Message im Zertifikatsdetail während Überprüfung -->\n    <string name=\"wallet_certificate_verifying\">\"Certificat en cours de vérification\"</string>\n\n    <!-- Message nach erfolgreicher Prüfung im Zertifikatdetail -->\n    <string name=\"wallet_certificate_verify_success\">\"Vérification réussie\"</string>\n\n    <!-- Accessibility: Info Box Butto -->\n    <string name=\"accessibility_info_box\">\"Information\"</string>\n\n    <!-- Button Schliessen -->\n    <string name=\"close_button\">\"Fermer\"</string>\n    <string name=\"wallet_certificate_impfdosis_title\">\"Dose\"</string>\n    <string name=\"target_disease_name\">\"COVID-19\"</string>\n    <string name=\"wallet_certificate_target_disease_title\">\"Maladie ou agent pathogène\"</string>\n    <string name=\"wallet_certificate_impfstoff_product_name_title\">\"Produit\"</string>\n    <string name=\"wallet_certificate_impfstoff_holder\">\"Fabricant\"</string>\n    <string name=\"wallet_certificate_vaccination_date_title\">\"Date de vaccination\"</string>\n    <string name=\"wallet_certificate_vaccination_country_title\">\"Pays de vaccination\"</string>\n    <string name=\"wallet_certificate_vaccination_issuer_title\">\"Délivré par\"</string>\n    <string name=\"covid_certificate_recovery_title\">\"Guérison\"</string>\n    <string name=\"wallet_certificate_recovery_first_positiv_result\">\"Date du premier résultat positif\"</string>\n    <string name=\"wallet_certificate_recovery_from\">\"Valable à partir du\"</string>\n    <string name=\"wallet_certificate_recovery_until\">\"Valable jusqu'au\"</string>\n    <string name=\"wallet_certificate_test_land\">\"Pays de test\"</string>\n    <string name=\"covid_certificate_test_title\">\"Test\"</string>\n    <string name=\"wallet_certificate_test_result_title\">\"Résultat\"</string>\n    <string name=\"wallet_certificate_test_result_negativ\">\"Non détecté (Négatif)\"</string>\n    <string name=\"wallet_certificate_test_result_positiv\">\"Détecté (Positif)\"</string>\n    <string name=\"wallet_certificate_test_type\">\"Type\"</string>\n    <string name=\"wallet_certificate_test_name\">\"Nom\"</string>\n    <string name=\"wallet_certificate_test_holder\">\"Fabricant\"</string>\n    <string name=\"wallet_certificate_test_sample_date_title\">\"Date du prélèvement de l'échantillon\"</string>\n    <string name=\"wallet_certificate_test_result_date_title\">\"Date du résultat\"</string>\n\n    <!-- Header im \"So funktionierts\" Screen der Verifier-App -->\n    <string name=\"verifier_support_header\">\"Comment ça fonctionne\"</string>\n\n    <!-- Text im Bestätigungs-Dialog beim Zertifikat löschen -->\n    <string name=\"wallet_certificate_delete_confirm_text\">\"Voulez-vous vraiment supprimer le certificat ?\"</string>\n\n    <!-- Titel eines Abbrechen-Buttons -->\n    <string name=\"cancel_button\">\"Interrompre\"</string>\n\n    <!-- Wallet: Titel bei Impfungen -->\n    <string name=\"covid_certificate_vaccination_title\">\"Vaccination\"</string>\n\n    <!-- Wallet: Apple App Store URL -->\n    <string name=\"wallet_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917320\"</string>\n\n    <!-- Verifier: Apple App Store URL -->\n    <string name=\"verifier_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917510\"</string>\n\n    <!-- Wallet: Abkürzung \"UVCI\" (Unique Vaccination Certificate Identifier) -->\n    <string name=\"wallet_certificate_identifier\">\"UVCI\"</string>\n\n    <!-- Wallet: Zertifikat erstellt am {DATE} -->\n    <string name=\"wallet_certificate_date\">\"Certificat établi le \n{DATE}\"</string>\n\n    <!-- Wallet: Detail Art des Impfstoffs -->\n    <string name=\"wallet_certificate_vaccine_prophylaxis\">\"Type de vaccin\"</string>\n\n    <!-- Wallet: Test Detail Test durchgeführt durch -->\n    <string name=\"wallet_certificate_test_done_by\">\"Centre de test\"</string>\n\n    <!-- iOS: Erklärung bei Kamera  -->\n    <string name=\"NSCameraUsageDescription\">\"L'application doit accéder à l'appareil photo pour pouvoir scanner le code QR.\"</string>\n\n    <!-- Titel 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_title\">\"Contrôle de certificats COVID\"</string>\n\n    <!-- Text 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_subtitle\">\"L'app de contrôle permet de scanner le code QR figurant sur un certificat COVID et de vérifier l'authenticité et la validité de ce dernier.\"</string>\n\n    <!-- Frage 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_1\">\"Comment contrôler un certificat COVID?\"</string>\n\n    <!-- Antwort 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_1\">\"Pour contrôler un certificat COVID, il vous suffit de scanner le code QR figurant sur le document papier ou dans l'app «COVID Certificate» au moyen de l'app de contrôle prévue à cet effet.\"</string>\n\n    <!-- Frage 2 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_2\">\"Sur quoi porte le contrôle au juste?\"</string>\n\n    <!-- Antwort 2 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_2\">\"Le scan du code QR permet de répondre aux trois questions suivantes:\n– Le certificat contient-il une signature électronique valable?\n– Le certificat a-t-il été révoqué?\n– Le certificat remplit-il les critères de validité fixés par la Suisse?\n\nSi vous pouvez répondre oui à la 1re et à la 3e question et non à la 2e, la validité du certificat COVID est attestée.\"</string>\n\n    <!-- Frage 3 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_3\">\"Quelles pièces d'identité sont valables? Pourquoi faut-il vérifier les données personnelles?\"</string>\n\n    <!-- Antwort 3 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_3\">\"Outre le passeport et la carte d'identité, les pièces d'identité réputées valables sont celles qui attestent l'identité de la personne concernée au moyen d'une photo (par ex. permis de conduire). Le certificat COVID est certes infalsifiable, mais le contrôle des données personnelles est le seul moyen de vérifier que le certificat a été établi au nom de la personne qui le présente.\"</string>\n\n    <!-- Frage 4 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_4\">\"Peut-on aussi contrôler des certificats étrangers?\"</string>\n\n    <!-- Antwort 4 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_4\">\"Oui. L'app de contrôle permet de vérifier si les certificats COVID compatibles avec le certificat COVID numérique de l'UE remplissent les critères de validité fixés par la Suisse.\"</string>\n\n    <!-- Frage 5 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_5\">\"À quelles données ai-je accès lors du contrôle?\"</string>\n\n    <!-- Antwort 5 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_5\">\"Lors du contrôle, vous n'avez accès qu'au nom et à la date de naissance du détenteur du certificat et voyez seulement si le certificat COVID est valable.\"</string>\n\n    <!-- Frage 6 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_6\">\"Quid du stockage des données lors du contrôle?\"</string>\n\n    <!-- Antwort 6 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_6\">\"Aucune des données auxquelles vous avez accès lors du contrôle n'est stockée dans l'app ou dans un système central. Il est par conséquent impossible de savoir quel certificat COVID a été vérifié par qui, quand et où.\"</string>\n\n    <!-- iOS Button zum Einstellungen öffnen -->\n    <string name=\"ios_settings_open\">\"Réglages\"</string>\n\n    <!-- Wallet: Onboarding externer Link zu Datenschutz -->\n    <string name=\"wallet_onboarding_external_privacy_button\">\"Déclaration de confidentialité &amp; condition d'utilisation\"</string>\n\n    <!-- Wallet: Hinweis im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_note\">\"Le présent certificat n'est pas un document de voyage. \n&lt;br /&gt;&lt;br /&gt;\nLes preuves scientifiques relatives à la vaccination, aux tests et au rétablissement liés à la COVID-19 continuent d'évoluer, notamment en ce qui concerne de nouveau variants préoccupants du virus. \n&lt;br /&gt;&lt;br /&gt;\nAvant de voyager, veuillez-vous renseigner sur les restrictions et les règles de validité en vigueur à votre lieu de destination. La validité de votre certificat à l’étranger dépend des règles du pays de destination.\"</string>\n    <string name=\"wallet_terms_privacy_link\">\"https://www.bit.admin.ch/bit/fr/home/documentation/covid-certificate-app.html\"</string>\n    <string name=\"verifier_terms_privacy_link\">\"https://www.bit.admin.ch/bit/fr/home/documentation/covid-certificate-check-app.html\"</string>\n\n    <!-- Verifier: Titel in der App (z.B. Impressum) -->\n    <string name=\"verifier_app_title\">\"COVID Certificate Check\"</string>\n    <string name=\"wallet_faq_questions_question_1_1\">\"Comment puis-je obtenir un certificat COVID après avoir guéri?\"</string>\n    <string name=\"wallet_faq_questions_answer_1_1\">\"En fonction de votre canton, le certificat COVID vous sera délivré soit directement par le lieu de test soit par le laboratoire qui a confirmé votre résultat de test positif. Si tel n’est pas le cas, vous pouvez demander votre certificat après coup, en ligne via la « Plateforme nationale des demandes pour le certificat COVID ». Votre demande y sera traitée par les autorités cantonales compétentes. Lien :\"</string>\n\n    <!-- Wallet: Homescreen Was wollen sie machen? -->\n    <string name=\"wallet_homescreen_what_to_do\">\"Passer à l’étape suivante\"</string>\n\n    <!-- Wallet: Homescreen Titel Zertifikat hinzufügen -->\n    <string name=\"wallet_homescreen_add_title\">\"Ajouter le certificat\"</string>\n\n    <!-- Wallet: Homescreen Zertifikat Description Text -->\n    <string name=\"wallet_homescreen_add_certificate_description\">\"Vous disposez d’un certificat COVID sur papier ou au format PDF et souhaitez l’ajouter à l’application.\"</string>\n\n    <!-- Wallet: Homescreen Transfer-Code erstellen -->\n    <string name=\"wallet_homescreen_add_transfer_code\">\"Créer un code transfert\"</string>\n\n    <!-- Wallet: Transfer Codes Titel -->\n    <string name=\"wallet_transfer_code_onboarding_title\">\"Codes transfert\"</string>\n\n    <!-- Wallet: Transfer Code Text -->\n    <string name=\"wallet_transfer_code_onboarding_text\">\"Vous pouvez utiliser votre code transfert lors d’un test ou d’une vaccination pour recevoir le certificat COVID directement dans votre application.\"</string>\n\n    <!-- Wallet: Transfer Code Onboarding Button -->\n    <string name=\"wallet_transfer_code_onboarding_button\">\"Créer un code\"</string>\n\n    <!-- Wallet: Transfer Code Onboarding So funktioniert's -->\n    <string name=\"wallet_transfer_code_onboarding_howto\">\"Comment ça fonctionne\"</string>\n\n    <!-- prüfen -->\n    <!-- Wallet: Transfer Code: FAQ Titel -->\n    <string name=\"wallet_transfer_code_faq_questions_title\">\"Recevez les certificats COVID directement dans l'application\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Text -->\n    <string name=\"wallet_transfer_code_faq_questions_subtitle\">\"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat après un test ou une vaccination directement dans l’application.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 1 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_1\">\"Qui propose la transmission du certificat COVID par code de transfert ?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 2 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_2\">\"Les codes de transfert peuvent-ils aussi être utilisés pour la transmission de certificats de vaccination ?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 3 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_3\">\"Comment fonctionne la transmission du certificat par code de transfert ?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 4 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_4\">\"Puis-je utiliser plusieurs fois le même code de transfert ?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 1 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_1\">\"Si vous effectuez un test COVID (test PCR ou test rapide antigénique) ou recevez un vaccin contre le COVID-19, le code de transfert peut être utilisé pour transmettre rapidement le certificat COVID.\n\nRenseignez-vous auprès de votre centre de test ou de vaccination, de votre pharmacie ou de votre médecin pour savoir si cette option est proposée.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 2 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_2\">\"Actuellement, la transmission du certificat par code de transfert est réservée aux tests COVID. Pour savoir comment obtenir un certificat COVID après une vaccination, cliquez ici :\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 3 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_3\">\"Si le centre qui effectue le test ou administre le vaccin propose de transmettre le certificat par code de transfert, vous pouvez communiquer votre code au moment de l’inscription, du test ou avant de recevoir le vaccin.\n\nVous pouvez créer à tout moment un code de transfert dans l’application « COVID Certificate » : appuyez sur « Ajouter » sur l’écran d’accueil ou sur le symbole « Plus » en bas à droite, puis sur « Créer un code de transfert ». L’application vous montre le code à 9 caractères.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 4 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_4\">\"Non, un code de transfert ne peut être utilisé qu’une seule fois. Si vous souhaitez obtenir plusieurs certificats (p. ex. pour vos proches), veuillez créer un nouveau code pour chaque certificat.\"</string>\n    <string name=\"wallet_transfer_code_faq_works_title\">\"Comment fonctionne le transfert ?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 1 -->\n    <string name=\"wallet_transfer_code_faq_works_question_1\">\"Comment mes données sont-elles sécurisées lors du transfert ?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 2 -->\n    <string name=\"wallet_transfer_code_faq_works_question_2\">\"Que faire si mon certificat n’arrive pas dans l’application ?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 3 -->\n    <string name=\"wallet_transfer_code_faq_works_question_3\">\"Que se passe-t-il en cas de test positif ?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 1 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_1\">\"Pour le transfert, votre certificat COVID est fourni sous forme cryptée. Le code de transfert garantit que seule votre application peut recevoir le certificat. Les données sont supprimées du serveur immédiatement après le transfert.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 2 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_2\">\"Dès que le certificat a été généré par le laboratoire ou le centre de test, il est disponible pour le transfert. Vérifiez que votre smartphone est connecté à Internet pour recevoir des certificats.\n\nSi malgré tout vous ne recevez pas votre certificat, adressez-vous au lieu où vous avez effectué le test (centre, pharmacie, cabinet médical).\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 3 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_3\">\"En cas de test rapide antigénique positif, vous ne recevrez pas de certificat COVID du laboratoire.\n\nEn cas de test PCR positif, vous recevrez un certificat COVID pour personnes guéries, valable à partir du 11e jour suivant le test.\"</string>\n\n    <!-- Wallet: Transfer Code erstellt Titel -->\n    <string name=\"wallet_transfer_code_code_created_title\">\"Votre code transfert a été créé.\"</string>\n\n    <!-- Wallet: Transfer-Code -->\n    <string name=\"wallet_transfer_code_title\">\"Codes transfert\"</string>\n\n    <!-- Wallet: Transfer Code Erstelltm am {DATE} -->\n    <string name=\"wallet_transfer_code_createdat\">\"Créé le {DATE}\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte -->\n    <string name=\"wallet_transfer_code_next_steps\">\"Étapes suivantes\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte 1 -->\n    <string name=\"wallet_transfer_code_next_steps1\">\"Remettez votre code à la personne prélevant l’échantillon à la pharmacie, au centre de test ou au cabinet médical.\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte 2 -->\n    <string name=\"wallet_transfer_code_next_steps2\">\"Si vous souhaitez recevoir plusieurs certificats, p. ex. pour d’autres membres de votre famille, créez un nouveau code pour chaque certificat.\"</string>\n\n    <!-- Wallet: Transfer Code Fertig Button -->\n    <string name=\"wallet_transfer_code_done_button\">\"Fin\"</string>\n\n    <!-- Wallet: Transfer Code Card Titel -->\n    <string name=\"wallet_transfer_code_card_title\">\"Transfert\"</string>\n\n    <!-- Wallet: Transfer Code Staus Warten auf Transfer -->\n    <string name=\"wallet_transfer_code_state_waiting\">\"Attendre le transfert\"</string>\n\n    <!-- Wallet: Transfer Code Ablauf in 1 Tag -->\n    <string name=\"wallet_transfer_code_expire_singular\">\"Valable encore un jour\"</string>\n\n    <!-- Wallet: Transfer Code: Läuft ab in {DAYS} Tagen -->\n    <string name=\"wallet_transfer_code_expire_plural\">\"Valable encore {DAYS} jours\"</string>\n\n    <!-- Wallet: Transfer Code Status Abgelaufen -->\n    <string name=\"wallet_transfer_code_state_expired\">\"Échec du transfert\"</string>\n\n    <!-- Wallet: Transfer Code Alter Code Titel -->\n    <string name=\"wallet_transfer_code_old_code\">\"Code expiré\"</string>\n\n    <!-- Wallet: Transfer Code State Zuletzt aktualisiert {DATE} -->\n    <string name=\"wallet_transfer_code_state_updated\">\"Dernière mise à jour le \n{DATE}\"</string>\n\n    <!-- Wallet: Transfer Code Kein Zertifikat mehr -->\n    <string name=\"wallet_transfer_code_state_no_certificate\">\"Ce code transfert ne permet plus de recevoir de certificat.\"</string>\n\n    <!-- Wallet: Fehler Format des Zertifikat ungültig -->\n    <string name=\"wallet_error_invalid_format\">\"Format de certificat \nnon valide\"</string>\n\n    <!-- Wallet: Fehler Format des Zertifikat ungültig Fett -->\n    <string name=\"wallet_error_invalid_format_bold\">\"non valide\"</string>\n\n    <!-- Verifier: Error Ungültiges Format -->\n    <string name=\"verifier_error_invalid_format\">\"Le format du certificat COVID n’est pas valide.\"</string>\n\n    <!-- Homescreen Zertifikat: Offline Modus Text -->\n    <string name=\"wallet_homescreen_offline\">\"Mode hors ligne\"</string>\n\n    <!-- Wallet: Detail Offline Text -->\n    <string name=\"wallet_offline_description\">\"Pour pouvoir afficher la validité actuelle, l’application requiert une connexion Internet régulière.\"</string>\n\n    <!-- Wallet: Retry Titel Offline -->\n    <string name=\"wallet_detail_offline_retry_title\">\"Vérification impossible en mode hors ligne\"</string>\n\n    <!-- Wallet: Detail Netzwerkfehler Titel -->\n    <string name=\"wallet_detail_network_error_title\">\"Vérification impossible pour le moment\"</string>\n\n    <!-- Wallet: Detail Netzwerkfehler Text -->\n    <string name=\"wallet_detail_network_error_text\">\"Veuillez réessayer plus tard.\"</string>\n\n    <!-- Verifier: Titel Fehler wenn kein Internet -->\n    <string name=\"verifier_offline_error_title\">\"Vérification impossible en mode hors ligne\"</string>\n\n    <!-- Verifier: Fehlertext wenn Offline bei Verifikation -->\n    <string name=\"verifier_offline_error_text\">\"Une connexion Internet est requise pour actualiser les listes de vérification.\"</string>\n\n    <!-- Verifier: Fehler Titel bei Netzwerkfehler -->\n    <string name=\"verifier_network_error_title\">\"La vérification a échoué\"</string>\n\n    <!-- Verifier: Fehler Text bei Netzwerkfehler -->\n    <string name=\"verifier_network_error_text\">\"Une erreur inattendue est survenue\"</string>\n\n    <!-- Wallet: Text auf Zertifikat auf Homescreen bei Netzwerkfehler -->\n    <string name=\"wallet_homescreen_network_error\">\"La validité n’a pas pu être vérifiée\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_1\">\"L’application vérifie régulièrement si un certificat COVID est disponible pour votre code de transfert.\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 2 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_2\">\"Dès que le certificat COVID est disponible, il apparaît dans l’application. Si vous avez activé les notifications, vous recevrez un message de l’application.\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_3\">\"Le code de transfert expire après {TRANSFER_CODE_VALIDITY} jours. Une fois ce délai passé, l’application attend tout autre transfert pendant 72 h. Ensuite, le code de transfert n’est plus valable.\"</string>\n\n    <!-- Wallet: Titel im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_title\">\"Autoriser les messages\"</string>\n\n    <!-- Wallet: Text im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_text\">\"L’application peut vous informer de l’émission du certificat. Pour cela, autorisez votre application à vous envoyer des messages.\"</string>\n\n    <!-- Wallet: Button im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_button\">\"Suite\"</string>\n\n    <!-- Externe URL im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_external_link\">\"https://ofsp-coronavirus.ch/certificat/comment-obtenir-le-certificat-covid-et-comment-men-servir/\"</string>\n\n    <!-- Label der externen URL im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_external_link_title\">\"Informations supplémentaires\"</string>\n\n    <!-- Buttontitel im Screen, wo ein Code erstellt werden kann -->\n    <string name=\"wallet_transfer_code_create_code_button\">\"Créer un code\"</string>\n\n    <!-- Wallet: Transfer Code Ablauf in 1 Tag (fetter Teil) -->\n    <string name=\"wallet_transfer_code_expire_singular_bold\">\"un jour\"</string>\n\n    <!-- Wallet: Transfer Code: Läuft in {DAYS} Tagen ab (fetter Teil) -->\n    <string name=\"wallet_transfer_code_expire_plural_bold\">\"{DAYS} jours\"</string>\n\n    <!-- Infotext bei erfolgreicher Prüfung (Blacklist) -->\n    <string name=\"verifier_verify_success_info_for_blacklist\">\"Non révoqué\"</string>\n\n    <!-- Infotext bei erfolgreicher Prüfung (Zertifikat) -->\n    <string name=\"verifier_verify_success_info_for_certificate_valid\">\"Signature valide\"</string>\n\n    <!-- Teil der Fehlermeldung bei noch nicht/nicht mehr gültigem Zertifikat, der Bold sein sollte (ref. verifier_verifiy_error_expired und _notyetvalid) -->\n    <string name=\"verifier_verify_error_validity_range_bold\">\"Ne remplit pas les critères de validité de la Suisse.\"</string>\n\n    <!-- Wallet: Transfer Code Fehler Titel -->\n    <string name=\"wallet_transfer_code_error_title\">\"Le code transfert n’a pas pu être créé\"</string>\n\n    <!-- Wallet: Erstellen Fehler Titel -->\n    <string name=\"wallet_transfer_code_no_internet_title\">\"Pas de connexion Internet\"</string>\n\n    <!-- Wallet: Erstellen anderer Fehler Titel -->\n    <string name=\"wallet_transfer_code_generate_error_title\">\"Une erreur inattendue est survenue.\"</string>\n\n    <!-- Wallet: Aktualisierung Transfer Code Fehler Titel -->\n    <string name=\"wallet_transfer_code_update_error_title\">\"Pas de mise à jour possible pour l’instant\"</string>\n\n    <!-- Wallet: Transfer Code Update Fehler Text -->\n    <string name=\"wallet_transfer_code_update_no_internet_error_text\">\"Pour recevoir le transfert, l'application doit être en ligne.\"</string>\n\n    <!-- Wallet Transfer Code Update Fehler Text -->\n    <string name=\"wallet_transfer_code_update_general_error_text\">\"Une erreur inattendue est survenue. Veuillez réessayer plus tard.\"</string>\n\n    <!-- Wallet: Transfer Code Fehlertext bei Generieren -->\n    <string name=\"wallet_transfer_code_generate_error_text\">\"Veuillez réessayer plus tard.\"</string>\n\n    <!-- Wallet: Transfer Code Fehlertext bei Generieren ohne Internet -->\n    <string name=\"wallet_transfer_code_generate_no_internet_error_text\">\"Pour créer un code transfert, l’application doit être en ligne.\"</string>\n\n    <!-- Wallet: Accessibility Name für Refresh Button -->\n    <string name=\"accessibility_refresh_button\">\"Mettre à jour\"</string>\n    <string name=\"wallet_transfer_delete_confirm_text\">\"Voulez-vous vraiment supprimer le transfer ?\"</string>\n    <string name=\"wallet_notification_transfer_title\">\"Transfert réussi\"</string>\n    <string name=\"wallet_notification_transfer_text\">\"Le certificat COVID est arrivé\"</string>\n    <string name=\"wallet_faq_questions_question_2_1\">\"Quelle est la durée de validité du certificat COVID ?\"</string>\n    <string name=\"wallet_faq_questions_answer_2_1\">\"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. À l’étranger, les règles de validité du pays concerné s’appliquent. Vérifiez peu avant votre départ sur le site Internet des autorités de votre pays de transit ou de destination si des mesures impliquant l’utilisation d’un certificat y sont appliquées et si c’est le cas, quelles règles de validité y sont appliquées.  Site Internet utile pour les voyages à l’étranger :\"</string>\n    <string name=\"wallet_faq_questions_linktext_2_1\">\"Re-open EU (europa.eu)\"</string>\n    <string name=\"wallet_faq_questions_linkurl_2_1\">\"https://reopen.europa.eu/fr/\"</string>\n    <string name=\"wallet_faq_works_question_3_1\">\"Puis-je également utiliser l’application hors ligne ?\"</string>\n    <string name=\"wallet_faq_works_answer_3_1\">\"Oui, vous pouvez utiliser l’application sans connexion Internet. Les certificats peuvent aussi être présentés, scannés et vérifiés en mode hors ligne.\"</string>\n    <string name=\"verifier_faq_works_question_2_1\">\"Quels sont les critères de validité actuels de la Suisse ?\"</string>\n    <string name=\"verifier_faq_works_answer_2_1\">\"Vous trouverez des informations sur la durée de validité actuelle du certificat COVID à l’adresse suivante :\"</string>\n    <string name=\"verifier_faq_works_linktext_2_1\">\"Informations supplémentaires\"</string>\n    <string name=\"verifier_faq_works_linkurl_2_1\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"</string>\n    <string name=\"verifier_faq_works_question_7\">\"La vérification des certificats est-elle possible hors ligne ?\"</string>\n    <string name=\"verifier_faq_works_answer_7\">\"En principe, il est aussi possible de vérifier les certificats COVID sans connexion Internet. À cette fin, des listes de contrôle régulièrement mises à jour sont téléchargées à partir d’un serveur central. Elles sont enregistrées localement et ne doivent pas remonter à plus de 48 h.\n\nPour actualiser les listes de contrôle, l’application doit être ouverte et connectée à Internet. La mise à jour s’effectue immédiatement et automatiquement.\"</string>\n\n    <!-- Button zum QR Code Scannen öffnen -->\n    <string name=\"wallet_homescreen_qr_code_scannen\">\"Scanner le code QR\"</string>\n\n    <!-- Button zum PDF importieren -->\n    <string name=\"wallet_homescreen_pdf_import\">\"Importer le PDF\"</string>\n\n    <!-- Wallet: Titel im Transfer Code screen bei deaktiveren Notifications -->\n    <string name=\"wallet_notification_disabled_titel\">\"Astuce: Activer les messages\"</string>\n\n    <!-- Wallet: Button im Transfer Code screen bei deaktiveren Notifications der die Einstellungen öffnet -->\n    <string name=\"wallet_notification_disabled_button\">\"Activer\"</string>\n\n    <!-- Titel für einen \"Nachweis\" (e.g. unvollständige Impfung) -->\n    <string name=\"wallet_certificate_evidence_title\">\"Justificatif\"</string>\n\n    <!-- Typenbezeichnung für eine unvollständige Impfung -->\n    <string name=\"wallet_certificate_type_incomplete_vaccine\">\"Vaccination incomplète\"</string>\n\n    <!-- Label für das Erstellungsdatum eines Nachweises (mit Platzhalter für Datum und Uhrzeit) -->\n    <string name=\"wallet_certificate_evidence_creation_date\">\"Justificatif établi le\n{DATE}\"</string>\n    <string name=\"wallet_transfer_code_faq_questions_linktext_2\">\"Informations supplémentaires\"</string>\n    <string name=\"wallet_transfer_code_faq_questions_linkurl_2\">\"https://ofsp-coronavirus.ch/certificat/comment-obtenir-le-certificat-covid-et-comment-men-servir/\"</string>\n\n    <!-- Wallet: Zertifikat Light Button im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_certificate_light_button\">\"Certificat light\"</string>\n\n    <!-- Wallet: Export Button im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_export_button\">\"Exporter\"</string>\n\n    <!-- Wallet: Zertifikat Light Title -->\n    <string name=\"wallet_certificate_light_detail_title\">\"Qu’est-ce qu’un certificat light ?\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Titel -->\n    <string name=\"wallet_certificate_light_detail_summary_title\">\"Certificat light\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 1 -->\n    <string name=\"wallet_certificate_light_detail_summary_1\">\"Utilisable uniquement en Suisse\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 2 -->\n    <string name=\"wallet_certificate_light_detail_summary_2\">\"Ne contient que le nom, le prénom, la date de naissance et une signature électronique\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 3 -->\n    <string name=\"wallet_certificate_light_detail_summary_3\">\"Valide pour {LIGHT_CERT_VALIDITY_IN_H} h au maximum\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 4 -->\n    <string name=\"wallet_certificate_light_detail_summary_4\">\"Le certificat COVID est converti en certificat light en ligne.\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 5 -->\n    <string name=\"wallet_certificate_light_detail_summary_5\">\"Vous pouvez désactiver le certificat light à tout moment pour repasser au certificat COVID normal.\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivieren Button -->\n    <string name=\"wallet_certificate_light_detail_deactivate_button\">\"Désactiver\"</string>\n\n    <!-- Wallet: Zertifikat Light Deaktivieren Button -->\n    <string name=\"wallet_certificate_light_detail_activate_button\">\"Activer\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Error -->\n    <string name=\"wallet_certificate_light_detail_activation_error\">\"Impossible d’activer le certificat light\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Titel -->\n    <string name=\"wallet_certificate_light_detail_activation_network_error_text\">\"Le certificat light ne peut être activé que si l’application est connectée.\"</string>\n\n    <!-- Info Text bei erfolgreicher Prüfung einers Zertifikate Light -->\n    <string name=\"verifier_verify_success_certificate_light_info\">\"Valide uniquement en Suisse\net avec un document d’identité\"</string>\n\n    <!-- Wallet: Zertifikat Export Title -->\n    <string name=\"wallet_certificate_export_title\">\"Exporter le certificat COVID\"</string>\n\n    <!-- Wallet: Zertifikat Export Erklärung Punkt 1 -->\n    <string name=\"wallet_certificate_export_summary_1\">\"Un fichier PDF sera établi avec les données de votre certificat COVID ; vous pourrez l’imprimer ou le partager.\"</string>\n\n    <!-- Wallet: Zertifikat Export Erklärung Punkt 2 -->\n    <string name=\"wallet_certificate_export_summary_2\">\"Le fichier PDF est établi en ligne.\"</string>\n\n    <!-- Wallet: Zertifikat Export Button -->\n    <string name=\"wallet_certificate_export_button\">\"Exporter\"</string>\n\n    <!-- Wallet: Zertifikat Export Error Title -->\n    <string name=\"wallet_certificate_export_detail_error_title\">\"Impossible d’établir le fichier PDF\"</string>\n\n    <!-- Wallet: Zertifikat Export Netzwerk Error -->\n    <string name=\"wallet_certificate_export_detail_network_error_text\">\"Le fichier PDF ne peut être établi que si l’application est connectée.\"</string>\n    <string name=\"accessibility_qr_code\">\"code QR\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Title -->\n    <string name=\"wallet_certificate_light_detail_activation_network_error_title\">\"Pas de connexion Internet\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation General Fehler Text -->\n    <string name=\"wallet_certificate_light_detail_activation_general_error_text\">\"Veuillez réessayer plus tard.\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation General Fehler Titel -->\n    <string name=\"wallet_certificate_light_detail_activation_general_error_title\">\"Une erreur inattendue est survenue.\"</string>\n\n    <!-- Wallet: Zertifikat Light Titel -->\n    <string name=\"wallet_certificate_light_title\">\"Certificat light\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Detail Title -->\n    <string name=\"wallet_certificate_export_detail_title\">\"Exporter\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Summary 1 -->\n    <string name=\"wallet_certificate_export_detail_summary_1\">\"Un fichier PDF sera établi avec les données de votre certificat COVID ; vous pourrez l’imprimer ou le partager.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Summary 2 -->\n    <string name=\"wallet_certificate_export_detail_summary_2\">\"Le fichier PDF est établi en ligne.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail Export Button -->\n    <string name=\"wallet_certificate_export_detail_export_button\">\"Exporter\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail Netzwerk Fehler -->\n    <string name=\"wallet_certificate_export_detail_network_error_title\">\"Pas de connexion Internet\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail General Fehler -->\n    <string name=\"wallet_certificate_export_detail_general_error_title\">\"Une erreur inattendue est survenue.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail General Fehler Text -->\n    <string name=\"wallet_certificate_export_detail_general_error_text\">\"Une erreur inattendue est survenue. Veuillez réessayer plus tard.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext 1 -->\n    <string name=\"wallet_certificate_light_detail_text_1\">\"Quand vous activez le certificat light, un nouveau code QR est créé à partir des données de votre certificat COVID. Ce nouveau code ne contient pas de données sur la santé.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext 2 -->\n    <string name=\"wallet_certificate_light_detail_text_2\">\"Tant qu’il est valide, le certificat COVID normal est utilisable sans limitation en Suisse et dans l’UE/l’AELE. Par contre, le certificat light n’est utilisable qu’en Suisse. Pour des raisons de protection des données, le certificat light doit être réactivé après {LIGHT_CERT_VALIDITY_IN_H} heures. Il n’apporte aucun droit supplémentaire par rapport au certificat COVID normal.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext Bold -->\n    <string name=\"wallet_certificate_light_detail_text_2_bold\">\"n’est utilisable qu’en doit être aucun\"</string>\n\n    <!-- VoiceOver reads this when the expandable box is reduced -->\n    <string name=\"accessibility_expandable_box_reduced_state\">\"réduit\"</string>\n\n    <!-- VoiceOver reads this when the expandable box is expanded -->\n    <string name=\"accessibility_expandable_box_expanded_state\">\"étendu\"</string>\n\n    <!-- Header im Update Boarding-Screen -->\n    <string name=\"wallet_update_boarding_header\">\"Mise à jour\"</string>\n\n    <!-- Titel im Zertifikat Light-Screen -->\n    <string name=\"wallet_update_boarding_certificate_light_title\">\"Certificat light\"</string>\n\n    <!-- Text im Zertifikat Light-Screen -->\n    <string name=\"wallet_update_boarding_certificate_light_text\">\"Cette mise à jour vous permet de générer une copie du certificat sans données sur la santé pour l’utiliser en Suisse. Les conditions d’utilisation et la déclaration sur la protection des données ont été actualisées et seront considérées comme acceptées si vous continuez à utiliser l’application.\"</string>\n\n    <!-- Header im Update Boarding-Screen -->\n    <string name=\"verifier_update_boarding_header\">\"Mise à jour\"</string>\n\n    <!-- Titel im Zertifikat Light-Screen -->\n    <string name=\"verifier_update_boarding_certificate_light_title\">\"Certificat light\"</string>\n\n    <!-- Text im Zertifikat Light-Screen -->\n    <string name=\"verifier_update_boarding_certificate_light_text\">\"Cette mise à jour vous permet aussi de vérifier les copies de certificat sans données sur la santé. Les conditions d’utilisation et la déclaration sur la protection des données ont été actualisées et seront considérées comme acceptées si vous continuez à utiliser l’application.\"</string>\n\n    <!-- Verifier: Die Gültigkeit eines Certificate Light ist abgelaufen -->\n    <string name=\"verifier_certificate_light_error_expired\">\"Durée de validité du \ncertificat expirée\"</string>\n\n    <!-- Wallet: Badge für Light-Zertifikate in Liste Zertifikate -->\n    <string name=\"wallet_certificate_list_light_certificate_badge\">\"Light\"</string>\n    <string name=\"wallet_faq_questions_question_6\">\"Qu’est-ce que le certificat light ?\"</string>\n\n    <!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n    <string name=\"wallet_faq_questions_answer_6\">\"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Le certificat « light » confirme que le certificat présenté est valide, sans contenir lui-même des données sur la santé.\n\nCette alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, les certificats COVID contiennent certaines données sur la santé (p. ex. le type de vaccin et la date de la vaccination) qui peuvent être lues par des tiers. Le certificat « light » empêche tout abus de ce genre.\n\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant {LIGHT_CERT_VALIDITY_IN_H} heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\"</string>\n    <string name=\"verifier_faq_works_question_8\">\"Qu’est-ce que le certificat light ?\"</string>\n\n    <!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n    <string name=\"verifier_faq_works_answer_8\">\"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Ce certificat « light » indique uniquement si le certificat présenté est valide, sans fournir de données sur la santé.\n\nL’alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, des personnes tierces pourraient développer des applications leur donnant la possibilité de lire, lors de la vérification d’un certificat, les données sur la santé (p. ex. le type de vaccin et la date de la vaccination). Le certificat light empêche tout abus de ce genre.\n\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant {LIGHT_CERT_VALIDITY_IN_H} heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\"</string>\n    <string name=\"verifier_faq_works_question_9\">\"Comment reconvertir un certificat light en certificat COVID conforme aux normes UE/AELE ?\"</string>\n    <string name=\"verifier_faq_works_answer_9\">\"Le détenteur peut en tout temps désactiver le certificat light dans l’application «COVID Certificate». Le certificat COVID standard est alors à nouveau disponible.\"</string>\n\n    <!-- Wallet: Light Zertifikat Accessibility Gültigkeits Label {TIMESPAN} wird ersetzt durch zB. 5 Stunden 3 Minuten -->\n    <string name=\"wallet_accessibility_light_certificate_expiration_timer\">\"Valable encore {TIMESPAN}\"</string>\n\n    <!-- Toast Text wenn ein Transfer Code durch Klicken kopiert wurde -->\n    <string name=\"wallet_transfer_code_copied\">\"Code de transfert copié\"</string>\n    <string name=\"wallet_faq_works_question_2_1\">\"Qu'est-ce qu'un code de transfert ?\"</string>\n    <string name=\"wallet_faq_works_answer_2_1\">\"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat après un test ou une vaccination directement dans l’application.\"</string>\n    <string name=\"wallet_faq_works_question_5_1\">\"Mon certificat COVID n’est disponible qu’au format électronique dans l’application. Comment puis-je obtenir mon certificat en PDF ou sur papier ?\"</string>\n    <string name=\"wallet_faq_works_answer_5_1\">\"Dans l’application « COVID Certificate », vous trouvez la fonction « Exporter » dans la vue détaillée du certificat. Vous pouvez ainsi générer un PDF afin de le sauvegarder et de l’imprimer.\"</string>\n\n    <!-- wallet android app google play store deep link -->\n    <string name=\"wallet_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.wallet\"</string>\n\n    <!-- verifer android app google play store deep link -->\n    <string name=\"verifier_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.verifier\"</string>\n\n    <!-- Wallet: Titel Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n    <string name=\"wallet_certificate_light_rate_limit_title\">\"Limite des 24 heures atteinte\"</string>\n\n    <!-- Wallet: Text Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n    <string name=\"wallet_certificate_light_rate_limit_text\">\"Le certificat light a été activé trop souvent au cours des dernières 24 heures.\"</string>\n    <string name=\"error_file_import_title\">\"L'importation a échoué.\"</string>\n    <string name=\"error_file_import_text\">\"Le fichier ne contient pas de code QR valide ou le code QR n'a pas pu être lu.\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten titel -->\n    <string name=\"wallet_transfer_code_unexpected_error_title\">\"Erreur inattendue\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten text -->\n    <string name=\"wallet_transfer_code_unexpected_error_text\">\"Veuillez contacter le service d’assistance\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten telefon nummer -->\n    <string name=\"wallet_transfer_code_unexpected_error_phone_number\">\"+41 58 466 07 99\"</string>\n    <string name=\"error_corrupt_sharedprefs_title\">\"Erreur de déchiffrement\"</string>\n    <string name=\"error_corrupt_sharedprefs_text\">\"Un espace de stockage de l'application n'a pas pu être déchiffré. Il doit être effacé et recréé pour que vous puissiez continuer à utiliser l'application. Des données seront perdues.\"</string>\n\n    <!-- Einstellungen: Titel -->\n    <string name=\"settings_title\">\"Réglages\"</string>\n\n    <!-- Einstellungen: Titel Sprachauswahl -->\n    <string name=\"language_title\">\"Langue\"</string>\n\n    <!-- Information about the date format (always english) -->\n    <string name=\"wallet_certificate_detail_date_format_info\">\"Date format used: dd.mm.yyyy\"</string>\n    <string name=\"wallet_certificate_test_holder_and_name\">\"Fabricant et Nom\"</string>\n\n    <!-- Wallet: Fehler-Titel falls Uhrzeit falsch eingestellt bei Transfer-Code -->\n    <string name=\"wallet_transfer_code_time_inconsistency_title\">\"Heure incorrecte\"</string>\n\n    <!-- Wallet: Transfer-Code Fehler-Text, falls Zeit falsch eingestellt -->\n    <string name=\"wallet_transfer_code_time_inconsistency_text\">\"L’heure doit être réglée correctement pour que les codes de transfert fonctionnent. Adaptez votre heure et essayez de nouveau.\"</string>\n\n    <!-- Toast Text wenn ein UVCI durch Klicken kopiert wurde -->\n    <string name=\"wallet_uvci_copied\">\"UVCI copié\"</string>\n\n    <!-- canton name ag -->\n    <string name=\"vaccination_booking_ag_name\">\"Argovie\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ag -->\n    <string name=\"vaccination_booking_ag_url\">\"https://www.ag.ch/coronavirus-impfung\"</string>\n\n    <!-- canton name ar -->\n    <string name=\"vaccination_booking_ar_name\">\"Appenzell Rhodes-Extérieures\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ar -->\n    <string name=\"vaccination_booking_ar_url\">\"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"</string>\n\n    <!-- canton name ai -->\n    <string name=\"vaccination_booking_ai_name\">\"Appenzell Rhodes-Intérieures\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ai -->\n    <string name=\"vaccination_booking_ai_url\">\"https://www.ai.ch/coronavirus-impfung\"</string>\n\n    <!-- canton name bl -->\n    <string name=\"vaccination_booking_bl_name\">\"Bâle-Campagne\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton bl -->\n    <string name=\"vaccination_booking_bl_url\">\"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/franzoesisch-francais\"</string>\n\n    <!-- canton name bs -->\n    <string name=\"vaccination_booking_bs_name\">\"Bâle-Ville\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton bs -->\n    <string name=\"vaccination_booking_bs_url\">\"http://www.coronaimpfzentrumbasel.ch\"</string>\n\n    <!-- canton name be -->\n    <string name=\"vaccination_booking_be_name\">\"Berne\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton be -->\n    <string name=\"vaccination_booking_be_url\">\"https://www.gsi.be.ch/fr/start/themen/coronavirus/impfen.html\"</string>\n\n    <!-- canton name fr -->\n    <string name=\"vaccination_booking_fr_name\">\"Fribourg\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton fr -->\n    <string name=\"vaccination_booking_fr_url\">\"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"</string>\n\n    <!-- canton name ge -->\n    <string name=\"vaccination_booking_ge_name\">\"Genève\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ge -->\n    <string name=\"vaccination_booking_ge_url\">\"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"</string>\n\n    <!-- canton name gl -->\n    <string name=\"vaccination_booking_gl_name\">\"Glaris\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton gl -->\n    <string name=\"vaccination_booking_gl_url\">\"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"</string>\n\n    <!-- canton name gr -->\n    <string name=\"vaccination_booking_gr_name\">\"Grisons\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton gr -->\n    <string name=\"vaccination_booking_gr_url\">\"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"</string>\n\n    <!-- canton name ju -->\n    <string name=\"vaccination_booking_ju_name\">\"Jura\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ju -->\n    <string name=\"vaccination_booking_ju_url\">\"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"</string>\n\n    <!-- canton name lu -->\n    <string name=\"vaccination_booking_lu_name\">\"Lucerne\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton lu -->\n    <string name=\"vaccination_booking_lu_url\">\"http://www.lu.ch/covid_impfung\"</string>\n\n    <!-- canton name ne -->\n    <string name=\"vaccination_booking_ne_name\">\"Neuchâtel\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ne -->\n    <string name=\"vaccination_booking_ne_url\">\"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"</string>\n\n    <!-- canton name nw -->\n    <string name=\"vaccination_booking_nw_name\">\"Nidwald\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton nw -->\n    <string name=\"vaccination_booking_nw_url\">\"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"</string>\n\n    <!-- canton name ow -->\n    <string name=\"vaccination_booking_ow_name\">\"Obwald\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ow -->\n    <string name=\"vaccination_booking_ow_url\">\"https://www.ow.ch/dienstleistungen/7129\"</string>\n\n    <!-- canton name sg -->\n    <string name=\"vaccination_booking_sg_name\">\"Saint-Gall\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sg -->\n    <string name=\"vaccination_booking_sg_url\">\"https://www.sg.ch/coronavirus/impfen\"</string>\n\n    <!-- canton name sh -->\n    <string name=\"vaccination_booking_sh_name\">\"Schaffhouse\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sh -->\n    <string name=\"vaccination_booking_sh_url\">\"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"</string>\n\n    <!-- canton name sz -->\n    <string name=\"vaccination_booking_sz_name\">\"Schwyz\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sz -->\n    <string name=\"vaccination_booking_sz_url\">\"https://www.sz.ch/corona-impfen\"</string>\n\n    <!-- canton name so -->\n    <string name=\"vaccination_booking_so_name\">\"Soleure\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton so -->\n    <string name=\"vaccination_booking_so_url\">\"https://so.ch/coronaimpfung\"</string>\n\n    <!-- canton name tg -->\n    <string name=\"vaccination_booking_tg_name\">\"Thurgovie\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton tg -->\n    <string name=\"vaccination_booking_tg_url\">\"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"</string>\n\n    <!-- canton name ti -->\n    <string name=\"vaccination_booking_ti_name\">\"Tessin\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ti -->\n    <string name=\"vaccination_booking_ti_url\">\"http://www.ti.ch/vaccinazione\"</string>\n\n    <!-- canton name ur -->\n    <string name=\"vaccination_booking_ur_name\">\"Uri\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ur -->\n    <string name=\"vaccination_booking_ur_url\">\"https://www.ur.ch/themen/3673\"</string>\n\n    <!-- canton name vs -->\n    <string name=\"vaccination_booking_vs_name\">\"Valais\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton vs -->\n    <string name=\"vaccination_booking_vs_url\">\"https://www.vs.ch/web/coronavirus/#ancre_vaccination\"</string>\n\n    <!-- canton name vd -->\n    <string name=\"vaccination_booking_vd_name\">\"Vaud\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton vd -->\n    <string name=\"vaccination_booking_vd_url\">\"https://vd.ch/coronavirus-vaccins\"</string>\n\n    <!-- canton name zg -->\n    <string name=\"vaccination_booking_zg_name\">\"Zoug\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton zg -->\n    <string name=\"vaccination_booking_zg_url\">\"https://www.corona-impfung-zug.ch/\"</string>\n\n    <!-- canton name zh -->\n    <string name=\"vaccination_booking_zh_name\">\"Zurich\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton zh -->\n    <string name=\"vaccination_booking_zh_url\">\"http://www.zh.ch/coronaimpfung\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_2\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_2\">\"La vaccination contre le COVID-19 vous permet de voyager sereinement dans la plupart des pays.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_3\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_3\">\"La vaccination vous protège contre le COVID-19 et, le cas échéant, contre une évolution grave de la maladie.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_4\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_4\">\"La vaccination contre le COVID-19 vous permet de vous immuniser en toute sécurité.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_5\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_5\">\"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à réduire la charge de morbidité.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_6\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_6\">\"Grâce à la vaccination contre le COVID-19, vous contribuez à la lutte contre les conséquences de la pandémie.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_7\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_7\">\"La vaccination contre le COVID-19 vous permet d’éviter les effets à long terme de la maladie.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_8\">\"Faites-vous vacciner sans plus attendre !\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_8\">\"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à décharger le système de santé.\"</string>\n\n    <!-- vaccination booking info screen title -->\n    <string name=\"vaccination_booking_info_title\">\"Prendre un rendez-vous de vaccination près de chez vous\"</string>\n\n    <!-- vaccination booking info screen text -->\n    <string name=\"vaccination_booking_info_text\">\"La vaccination pourrait, par exemple, être proposée dans les lieux suivants situés à proximité de chez vous :\n\n- dans des centres de vaccination désignés\n- dans les hôpitaux\n- chez votre médecin de famille\n- dans les pharmacies\n\nIl est aussi possible de se faire vacciner sans rendez-vous dans de nombreux endroits.\"</string>\n\n    <!-- vaccination booking info screen info box at bottom -->\n    <string name=\"vaccination_booking_info_info\">\"La vaccination contre le COVID-19 est recommandée pour les personnes dès 5 ans.\"</string>\n\n    <!-- Header on vaccination appointment screen -->\n    <string name=\"vaccination_appointment_header\">\"Rendez-vous de vaccination\"</string>\n\n    <!-- Book vaccination appointment button title on homescreen -->\n    <string name=\"vaccination_homescreen_button_title\">\"Prendre un rendez-vous de vaccination\"</string>\n\n    <!-- Choose your canton title in vaccination appointment screen -->\n    <string name=\"vaccination_choose_your_canton\">\"Sélectionnez votre canton\"</string>\n\n    <!-- Link title for more information about the vaccine -->\n    <string name=\"vaccination_more_information_title\">\"Plus d’informations sur la vaccination contre le COVID-19\"</string>\n\n    <!-- Button text for information about the vaccine at the bottom of the certificate -->\n    <string name=\"vaccination_information_button_in_certificate\">\"Informations sur la vaccination\"</string>\n\n    <!-- Vaccination Booking Info URL Link -->\n    <string name=\"vaccination_booking_info_url\">\"https://ofsp-coronavirus.ch/vaccination/\"</string>\n\n    <!-- Show information if special hardware detected  -->\n    <string name=\"verifier_qr_scanner_external_hardware_detected\">\"Scanner matériel externe détecté\"</string>\n\n    <!-- Error popup reset button text -->\n    <string name=\"error_decryption_reset_button\">\"Réinitialiser\"</string>\n\n    <!-- Text Certificate Could not be loaded {ERROR_CODE} gets replaces with the error code -->\n    <string name=\"error_decryption_text\">\"Les certificats n'ont pas pu être chargés\n\nCode: {ERROR_CODE}\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_title\">\"Guérison (Anticorps)\"</string>\n    <string name=\"wallet_time_inconsistency_error_title\">\"Contrôle impossible\"</string>\n    <string name=\"wallet_time_inconsistency_error_text\">\"La date, l’heure ou le fuseau horaire ne sont pas correctement paramétrés sur l’appareil.\"</string>\n    <string name=\"wallet_info_box_certificate_scan_title\">\"Voulez-vous contrôler des certificats?\"</string>\n    <string name=\"wallet_info_box_certificate_scan_text\">\"Pour un contrôle rapide respectant la protection des données, utilisez l’application «COVID Certificate Check».\"</string>\n    <string name=\"wallet_info_box_certificate_scan_button_check_app\">\"Vers Check-App\"</string>\n    <string name=\"wallet_info_box_certificate_scan_close\">\"Compris\"</string>\n    <string name=\"wallet_info_box_certificate_scan_text_bold\">\"«COVID Certificate Check»-App.\"</string>\n    <string name=\"wallet_only_valid_in_switzerland\">\"N’est pas valable hors de Suisse\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_befund_label\">\"Résultat\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_befund_value\">\"Suffisant\"</string>\n\n    <!-- Ausnahme Test Zertifikat Detail: Titel für Startdatum des Attests -->\n    <string name=\"wallet_certificate_ausnahme_test_attest_start_date\">\"Début de la validité\"</string>\n\n    <!-- Ausnahme Test Zertifikat Detail: Titel für verantwortliche Stelle für Ausstellung -->\n    <string name=\"wallet_certificate_ausnahme_responsible_issuer\">\"Service responsable de l'établissement\"</string>\n\n    <!-- Testname für Schweizer Ausnahme Zertifikat für Nicht-Testbare und Nicht-Impfbare Personen -->\n    <string name=\"covid_certificate_ch_ausnahme_test_title\">\"Certificat de dérogation\"</string>\n    <string name=\"infobox_update_title\">\"Nouvelle version disponible\"</string>\n    <string name=\"infobox_update_text\">\"Téléchargez la nouvelle version de l'application.\"</string>\n    <string name=\"infobox_update_button\">\"Mettre à jour\"</string>\n\n    <!-- vaccination booking  screen info about Impf-Check (impf-check.ch) -->\n    <string name=\"vaccination_impf_check_info_text\">\"COVID-19 Vac-check fournit des renseignements sur la première vaccination ainsi que sur la vaccination de rappel et vous guide vers le service compétent de votre canton.\"</string>\n\n    <!-- button title for link to impf-check.ch -->\n    <string name=\"vaccination_impf_check_action\">\"Vers COVID-19 Vac-check\"</string>\n\n    <!-- URL to ImpfCheck -->\n    <string name=\"vaccination_impf_check_url\">\"https://covid19-vac-check.ch/\"</string>\n    <string name=\"vaccination_impf_check_title\">\"Prendre un rendez-vous maintenant\"</string>\n    <string name=\"verifier_faq_works_linktext_1\">\"Vidéo explicative\"</string>\n    <string name=\"verifier_faq_works_linkurl_1\">\"https://youtu.be/O-9YhJDI3ZI\"</string>\n\n    <!-- Title of button to choose verification mode -->\n    <string name=\"verifier_choose_mode_button_title\">\"Choisir\"</string>\n\n    <!-- 👍 -->\n    <!-- Verifier app scan button with indication of mode -->\n    <string name=\"verifier_homescreen_scan_button_with_mode\">\"Vérifier ({MODE})\"</string>\n\n    <!-- error if scan was performed with a no longer existing mode -->\n    <string name=\"verifier_error_mode_no_longer_exists\">\"Le mode de contrôle choisi n’existe plus.\"</string>\n\n    <!-- 👍 -->\n    <!-- title for info pop-up in wallet app describing the validation states for the different check modes -->\n    <string name=\"wallet_check_mode_info_title\">\"Info\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 2G OK state -->\n    <string name=\"wallet_check_mode_info_2g_ok_text\">\"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries.\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 2G NOT OK state -->\n    <string name=\"wallet_check_mode_info_2g_not_ok_text\">\"Accès refusé.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> display name of check mode 3G -->\n    <string name=\"verifier_check_mode_info_3g_title\">\"3G\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> display name of check mode 2G -->\n    <string name=\"verifier_check_mode_info_2g_title\">\"2G\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_1\">\"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «3G».\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_2\">\"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées, guéries ou testées négatives.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_3\">\"Il peut être également utilisé pour vérifier un «certificat light».\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_1\">\"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «2G».\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_2\">\"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées ou guéries.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_3\">\"La vérification d’un «certificat light» n'est pas possible dans ce mode.\"</string>\n\n    <!-- 👍 -->\n    <!-- Verifier: Modus auswählen Titel -->\n    <string name=\"verifier_mode_title\">\"Mode de contrôle\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 3G OK state -->\n    <string name=\"wallet_check_mode_info_3g_ok_text\">\"Accès aux établissements et aux manifestations réservé aux personnes vaccinées, guéries ou testées négatives.\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 3G NOT OK state -->\n    <string name=\"wallet_check_mode_info_3g_not_ok_text\">\"Accès refusé.\"</string>\n\n    <!-- Titel für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n    <string name=\"verifier_verify_light_not_supported_by_mode_title\">\"Le certificat COVID à vérifier est un «certificat light». Il ne peut pas être vérifié sous le mode de contrôle «{MODUS}».\"</string>\n\n    <!-- Text für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n    <string name=\"verifier_verify_light_not_supported_by_mode_text\">\"La vérification ne peut avoir lieu que si la conversion du certificat en un «certificat light» est annulée.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n    <string name=\"verifier_check_mode_info_unselected_text_1\">\"Choisissez le mode de contrôle correspondant aux certificats COVID à vérifier.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n    <string name=\"verifier_check_mode_info_unselected_text_2\">\"Le mode de contrôle peut être changé en tout temps.\"</string>\n\n    <!-- check app -> check mode select pop-up -> display name of check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_title\">\"2G+\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_1\">\"Pour les entreprises et les manifestations qui appliquent la règle des 2G+.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_2\">\"En plus d'un certificat COVID de vaccination ou de guérison, il faut présenter un certificat de test valable, qui doit être vérifié séparément.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_3\">\"Exceptions: les personnes dont la vaccination, la vaccination de rappel ou la guérison datent de moins de 120 jours\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_4\">\"Ce mode ne permet pas de vérifier les «certificats light».\"</string>\n\n    <!-- 2G+: Anzeige, dass Zertifikat 2G erfüllt -->\n    <string name=\"verifier_2g_plus_success2g\">\"Certificat COVID valable selon la règle des 2G\"</string>\n\n    <!-- 2G+: Info, dass Zertifikat + erfüllt -->\n    <string name=\"verifier_2g_plus_successplus\">\"Certificat COVID de test valable\"</string>\n\n    <!-- Verifier: 2G+ Info, dass noch + nötig -->\n    <string name=\"verifier_2g_plus_infoplus\">\"Pour répondre aux critères de validité du mode 2G+, doit être accompagné d'un certificat de test valable.\"</string>\n\n    <!-- Verifier: 2G+ Info dass noch 2G nötig -->\n    <string name=\"verifier_2g_plus_info2g\">\"Pour répondre aux critères de validité du mode 2G+, doit être accompagné d'un certificat de vaccination ou de guérison.\"</string>\n\n    <!-- Prüfung fehlgeschlagen App update nötig -->\n    <string name=\"verifier_error_app_store_text\">\"La vérification de ce type de certificat nécessite la version la plus récente de l'application «COVID Certificate Check». Actualisez l'application, puis procédez à la vérification.\"</string>\n\n    <!-- Button Text für Prüfung fehlgeschlagen App update nötig  -->\n    <string name=\"verifier_error_app_store_button\">\"Ouvrir l'App Store\"</string>\n\n    <!-- check app -> check mode select pop-up -> display name of check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_title\">\"Certificat de test\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_1\">\"Destiné aux domaines qui nécessitent un certificat de test valable.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_2\">\"Ce mode permet de vérifier les certificats des personnes qui disposent d'un résultat négatif à un test PCR ou à un test rapide antigénique.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_3\">\"Ce mode ne permet pas de vérifier les «certificats light».\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_1\">\"Le bouton «rafraîchir» a été supprimé.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_2\">\"Si votre certificat COVID a expiré ou s'il n'est techniquement pas valable, cette information apparaît automatiquement sur le certificat.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_3\">\"La vérification des certificats COVID doit s'effectuer au moyen de l'application «COVID Certificate Check».\"</string>\n\n    <!-- wallet refresh button removal info box fat title above text 3 -->\n    <string name=\"wallet_refresh_button_info_fat_title_3\">\"Pour les personnes chargées du contrôle\"</string>\n\n    <!-- wallet refresh button removal info box link text -->\n    <string name=\"wallet_refresh_button_info_link_text\">\"Pour en savoir plus\"</string>\n\n    <!-- wallet refresh button removal info box link url -->\n    <string name=\"wallet_refresh_button_info_link_url\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#-1006172949\"</string>\n\n    <!-- text for info pop-up in wallet app describing 2G+ OK state -->\n    <string name=\"wallet_check_mode_info_2g_plus_ok_text\">\"Accès aux établissements et aux manifestations réservé aux personnes dont la vaccination complète, la vaccination de rappel ou la guérison (confirmée par un test PCR) ne date pas de plus de 120 jours. Vous n'avez pas besoin de présenter un certificat de test supplémentaire.\"</string>\n\n    <!-- text for info pop-up in wallet app describing 2G+ NOT OK state -->\n    <string name=\"wallet_check_mode_info_2g_plus_not_ok_text\">\"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries qui présentent, en plus d'un certificat COVID, un résultat de test négatif.\"</string>\n\n    <!-- wallet refresh button removal info box title -->\n    <string name=\"wallet_refresh_button_info_title\">\"Information\"</string>\n\n    <!-- Ausnahme-Zertifikat: Medizinisches Attest ausgestellt in -->\n    <string name=\"wallet_certificate_ausnahme_issued_country\">\"Attestation médicale délivrée en\"</string>\n\n    <!-- Wallet: Hinweis im Zertifikat Detail für Ausnahme Zertifikat -->\n    <string name=\"wallet_certificate_detail_note_ausnahme\">\"Le présent certificat n'est pas un document de voyage. \n&lt;br /&gt;&lt;br /&gt;\nCe certificat n'a qu'une durée de validité limitée. L'application «COVID Certificate» vous permet en tout temps de vérifier la durée de validité actuellement déterminante en Suisse.\"</string>\n\n    <!-- Wallet: Ausnahme Label für Liste -->\n    <string name=\"covid_certificate_ch_ausnahme_list_label\">\"Exception\"</string>\n\n    <!-- Wallet: Titel von einem positivem Antigen-Test -->\n    <string name=\"covid_certificate_antigen_positive_test\">\"Guérison (Test Rapide Antigénique)\"</string>\n\n    <!-- Wallet: Antigen Positive Titel von Testdatum -->\n    <string name=\"wallet_certificate_antigen_positive_date\">\"Date du premier résultat positif\"</string>\n\n    <!-- Wallet: Blaue Box für positiven Antigen-Test -->\n    <string name=\"wallet_certificate_detail_note_positive_antigen\">\"Le présent certificat n'est pas un document de voyage.\n&lt;br /&gt;&lt;br /&gt;\nCe certificat n'a qu'une durée de validité limitée. L'application «COVID Certificate» vous permet en tout temps de vérifier la durée de validité actuellement déterminante en Suisse.\"</string>\n\n    <!-- banner title on homescreen. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_homescreen_title\">\"Expiration imminente\"</string>\n\n    <!-- banner title in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_title\">\"Info\"</string>\n\n    <!-- banner text in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_text\">\"Ce certificat expirera bientôt.\"</string>\n\n    <!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_more_info\">\"En savoir plus?\"</string>\n\n    <!-- title for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_title\">\"Info\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text1\"></string>\n\n    <!-- bold text box for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_bold_text\">\"Ce certificat COVID expirera dans quelques jours. Nous attirons votre attention sur la date de fin de validité affichée.\"</string>\n\n    <!-- link text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_text\">\"Et maintenant ?\"</string>\n\n    <!-- link url for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_url\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/que-dois-je-faire-si-mon-certificat-covid-est-sur-le-point-dexpirer-en-suisse\"</string>\n\n    <!-- banner title on homescreen. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_homescreen_title\">\"Durée de validité réduite\"</string>\n\n    <!-- banner title in certificate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_title\">\"Durée de validité réduite\"</string>\n\n    <!-- banner text in certificate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_text\">\"Ce certificat expirera bientôt.\"</string>\n\n    <!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_more_info\">\"En savoir plus\"</string>\n\n    <!-- title for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_title\">\"Info\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_text1\">\"À partir du 31 janvier 2022, la durée de validité en Suisse des certificats COVID pour les personnes vaccinées ou guéries est réduite de 365 à 270 jours. Ce certificat est directement concerné:\"</string>\n\n    <!-- bold text box for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_bold_text\">\"Ce certificat COVID ne peut plus être utilisé à partir du 31 janvier 2022.\"</string>\n\n    <!-- link text for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_text\">\"En savoir plus\"</string>\n\n    <!-- link url for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_url\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-la-duree-de-validite-des-certificats-de-vaccination-ou-de-guerison-t-elle\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text2\"></string>\n    <string name=\"infobox_generic_title\">\"Sauvegardez vos certificats!\"</string>\n    <string name=\"infobox_generic_text\">\"Si vous supprimez l’application, changez de smartphone ou le perdez, vos certificats COVID seront également perdus.\nConservez donc vos certificats en dehors de l’application en les exportant au format PDF.\"</string>\n    <string name=\"infobox_generic_button\">\"Plus d’informations\"</string>\n    <string name=\"infobox_generic_url_android\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/mon-certificat-covid-nest-disponible-quau-format-electronique-dans-lapplication\"</string>\n    <string name=\"infobox_generic_url_ios\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/mon-certificat-covid-nest-disponible-quau-format-electronique-dans-lapplication\"</string>\n\n    <!-- accessibilityLabel for the \"1\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon1\">\"Première\"</string>\n\n    <!-- accessibilityLabel for the \"2\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon2\">\"Deuxième\"</string>\n\n    <!-- accessibilityLabel for the \"3\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon3\">\"Deuxième\"</string>\n\n    <!-- Reise-Check: Label des Buttons um Gültigkeit im Ausland zu prüfen -->\n    <string name=\"wallet_foreign_rules_check_button\">\"Validité à l'étranger\"</string>\n\n    <!-- Reise-Check: Titel des Reise-Check Screens -->\n    <string name=\"wallet_foreign_rules_check_title\">\"Validité pour les voyages à l’étranger\"</string>\n\n    <!-- Reise-Check: Untertitel des Reise-Check Screens -->\n    <string name=\"wallet_foreign_rules_check_subtitle\">\"Renseignez-vous avant de voyager pour savoir si votre certificat COVID sera valable à votre arrivée dans le pays de destination.\"</string>\n\n    <!-- Reise-Check: Titel der Länder- und Datumsauswahl -->\n    <string name=\"wallet_foreign_rules_check_form_title\">\"Vérifier pour :\"</string>\n\n    <!-- Reise-Check: Label des Länder Eingabefeldes -->\n    <string name=\"wallet_foreign_rules_check_country_label\">\"Pays :\"</string>\n\n    <!-- Reise-Check: Wert wenn kein Land ausgewählt -->\n    <string name=\"wallet_foreign_rules_check_country_empty_label\">\"Sélectionner\"</string>\n\n    <!-- Reise-Check: Label des Datum Eingabefeldes -->\n    <string name=\"wallet_foreign_rules_check_date_label\">\"Date d’arrivée :\"</string>\n\n    <!-- Reise-Check: Fehlermeldung wenn Datum in der Vergangenheit liegt -->\n    <string name=\"wallet_foreign_rules_check_date_in_past_error\">\"L’heure indiquée est déjà passée.\"</string>\n\n    <!-- Reise-Check: Titel des Hinweise Abschnittes -->\n    <string name=\"wallet_foreign_rules_check_hints_title\">\"Informations\"</string>\n\n    <!-- Reise-Check: Label für den Mehr Informationen Button -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_label\">\"Vous trouverez de plus amples informations sur le site\"</string>\n\n    <!-- Reise-Check: Prüfstatus wenn noch kein Land ausgewählt wurde -->\n    <string name=\"wallet_foreign_rules_check_state_empty\">\"Veuillez sélectionner un pays et la date d’arrivée.\"</string>\n\n    <!-- Reise-Check: Titel des Auswahldialoges für das Land -->\n    <string name=\"wallet_foreign_rules_check_country_picker_title\">\"Sélectionner le pays\"</string>\n\n    <!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat gültig ist -->\n    <string name=\"wallet_foreign_rules_check_state_valid\">\"Valide pour entrer dans le pays suivant :\"</string>\n\n    <!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat ungültig ist -->\n    <string name=\"wallet_foreign_rules_check_state_invalid\">\"Non valide pour entrer dans le pays suivant :\"</string>\n\n    <!-- Reise-Check: Zweite Zeile des Prüfstatus wenn Zertifikat (un-)gültig ist. {COUNTRY} und {DATE} nicht übersetzen -->\n    <string name=\"wallet_foreign_rules_check_state_country_and_date\">\"{COUNTRY}, {DATE}\"</string>\n\n    <!-- Error-Titel falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n    <string name=\"wallet_foreign_rules_check_error_title\">\"Erreur lors du chargement des pays disponible\"</string>\n\n    <!-- Error-Text falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n    <string name=\"wallet_foreign_rules_check_network_error_text\">\"Pour vérifier la validité, votre smartphone doit être connecté à Internet.\"</string>\n\n    <!-- Reisefeature: Hinweis 1 -->\n    <string name=\"wallet_foreign_rules_check_hint_2\">\"Les dispositions d’entrée peuvent changer. Vérifiez donc la validité de votre certificat avant votre départ et renseignez-vous également en ligne sur les dispositions d’entrée en vigueur dans votre pays de destination.\"</string>\n\n    <!-- Reisefeature: Hinweis 2 -->\n    <string name=\"wallet_foreign_rules_check_hint_3\">\"Les informations ci-dessus ne concernent que les dispositions d’entrée du pays de destination. Dans le pays, d’autres règles peuvent s’appliquer aux éventuels domaines soumis à l’obligation de présenter un certificat.\"</string>\n\n    <!-- Reisefeature: Hinweis 3 -->\n    <string name=\"wallet_foreign_rules_check_hint_1\">\"La Confédération décline toute responsabilité en ce qui concerne l’actualité et l’exhaustivité des informations fournies.\"</string>\n\n    <!-- Reisefeature: Hinweis 4 -->\n    <string name=\"wallet_foreign_rules_check_hint_4\">\"Vous n’avez pas trouvé votre pays de destination ? Il se peut que certains pays ne reconnaissent pas le certificat COVID ou qu’aucune disposition d’entrée ne soit disponible.\"</string>\n\n    <!-- Reisefeature: Text des Mehr Infos Buttons -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_link_text\">\"reopen.europa.eu\"</string>\n\n    <!-- Reisefeature: URL die geöffnet wird wenn auf den Mehr Info Button geklickt wird -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_link_url\">\"https://reopen.europa.eu/\"</string>\n\n    <!-- RAT-Umwandlung:  Titel bei Zertifikat -->\n    <string name=\"rat_conversion_overview_title\">\"Nouveau : version compatible avec l’UE\"</string>\n\n    <!-- RAT-Umwandlung: Text bei Zertifikat -->\n    <string name=\"rat_conversion_overview_text\">\"Pour ce certificat COVID, il est possible de demander une version compatible avec l’UE.\"</string>\n\n    <!-- RAT-Umwandlung: Button-Text zu Umwandlung Detail -->\n    <string name=\"rat_conversion_overview_button\">\"En savoir plus\"</string>\n\n    <!-- RAT-Umwandlung: Titel Detail -->\n    <string name=\"rat_conversion_title\">\"Demander un certificat COVID (compatible avec l’UE)\"</string>\n\n    <!-- RAT-Umwandlung: Text auf Detail -->\n    <string name=\"rat_conversion_text\">\"Nouveau : les certificats COVID pour personnes guéries établis sur la base de tests rapides antigéniques sont aussi acceptés dans l’UE.\n\nVous avez la possibilité de demander une version de ce certificat compatible avec l’UE sur la plateforme nationale de demandes.\"</string>\n\n    <!-- RAT-Umwandlung: Title bei Formular-Verlinkung -->\n    <string name=\"rat_conversion_form_title\">\"Vers le formulaire en ligne de la plateforme nationale de demandes\"</string>\n\n    <!-- Rat-Umwandlung: Text zum Formular -->\n    <string name=\"rat_conversion_form_text\">\"J’accepte que les données de ce certificat COVID soient transférées dans le formulaire de la plateforme nationale de demandes (site de la Confédération).\"</string>\n\n    <!-- RAT-Umwandlung: Absprung Button -->\n    <string name=\"rat_conversion_form_button\">\"Vers le formulaire\"</string>\n\n    <!-- RAT-Umwandlung: Linktext zur Webseite nationale Antragsstelle -->\n    <string name=\"rat_conversion_link_antragsstelle\">\"Site de la plateforme nationale de demandes (sans transfert de données)\"</string>\n\n    <!-- RAT-Umwandlung: Info Text 1 -->\n    <string name=\"rat_conversion_info1_text\">\"Si votre demande est acceptée, le nouveau certificat COVID compatible avec l’UE vous sera envoyé par la poste. Vous pourrez ensuite le transférer dans l’application. Il n’est pas possible de recevoir le document directement dans l’application.\"</string>\n\n    <!-- RAT-Umwandlung: Info 2 Text -->\n    <string name=\"rat_conversion_info2_text\">\"Le transfert des données du certificat dans le formulaire en ligne permet de faciliter le traitement de votre demande.\"</string>\n\n    <!-- Die URL für das Formular, mit dem für ein RAT Genesungszert ein reguläres Genesungszert beantragt werden kann -->\n    <string name=\"wallet_rat_recovery_conversion_url\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\n    <!-- RAT-Umwandlung: Titel vor Infos -->\n    <string name=\"rat_conversion_info_title\">\"Informations complémentaires\"</string>\n\n    <!-- cert renewal general info heading -->\n    <string name=\"cert_renewal_info_info_heading\">\"Qu’est-ce que cela signifie ?\"</string>\n\n    <!-- cert renewal general info text 1 -->\n    <string name=\"cert_renewal_info_info_text_1\">\"Les codes QR des certificats COVID ont une validité technique limitée\"</string>\n\n    <!-- cert renewal general info text 2 -->\n    <string name=\"cert_renewal_info_info_text_2\">\"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"</string>\n\n    <!-- cert renewal general info text 3 -->\n    <string name=\"cert_renewal_info_info_text_3\">\"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"</string>\n\n    <!-- cert renewal general info text 4 -->\n    <string name=\"cert_renewal_info_info_text_4\">\"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"</string>\n\n    <!-- cert renewal info heading for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_heading\">\"Qu’est-ce que cela signifie ?\"</string>\n\n    <!-- cert renewal text 1 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_1\">\"Les codes QR des certificats COVID ont une validité technique limitée.\"</string>\n\n    <!-- cert renewal text 2 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_2\">\"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"</string>\n\n    <!-- cert renewal text 3 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_3\">\"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"</string>\n\n    <!-- cert renewal text 4 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_4\">\"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"</string>\n\n    <!-- cert renewal info heading for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_heading\">\"À noter:\"</string>\n\n    <!-- cert renewal text 1 for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_text_1\">\"Remplacez également les certificats précédemment imprimés ou enregistrés par cette nouvelle version\"</string>\n\n    <!-- cert renewal text 2 for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_text_2\">\"La durée pendant laquelle une vaccination est reconnue dans un pays n’est pas définie dans le certificat, mais calculée au moment du contrôle selon les règles du pays examinateur. Le renouvellement du code QR garantit uniquement que celui-ci puisse être utilisé d’un point de vue technique. \"</string>\n\n    <!-- Wallet: Zertifikat QR Code läuft ab am {DATE} -->\n    <string name=\"wallet_certificate_qr_code_expiration_date\">\"QR code expiration date (technical)\n{DATE}\"</string>\n\n    <!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_title\">\"Renouveler le code QR!\"</string>\n\n    <!-- Wallet: Text der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_text\">\"Pour pouvoir continuer à utiliser ce certificat, le code QR doit être renouvelé.\"</string>\n\n    <!-- Wallet: Buttontext der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_button\">\"En savoir plus\"</string>\n\n    <!-- Wallet: Buttontext um den QR Code eines Zertifikats zu erneuern -->\n    <string name=\"wallet_certificate_renew_now_button\">\"Renouveler le code QR\"</string>\n    <string name=\"wallet_certificate_renewal_qr_code_expiration\">\"Date d’expiration du code QR\"</string>\n    <string name=\"wallet_certificate_renewal_required_info\">\"La date d’expiration technique de ce code QR est (bientôt) atteinte.\"</string>\n    <string name=\"wallet_certificate_renewal_in_progress_info\">\"Le code QR est en cours de renouvellement\"</string>\n    <string name=\"wallet_certificate_renewal_successful_info\">\"Le code QR a été renouvelé avec succès.\"</string>\n    <string name=\"wallet_certificate_renewal_offline_error_title\">\"Pas de connexion Internet\"</string>\n    <string name=\"wallet_certificate_renewal_offline_error_text\">\"Pour pouvoir renouveler le code QR, l’application doit être connectée à Internet.\"</string>\n    <string name=\"wallet_certificate_renewal_general_error_title\">\"Une erreur inattendue est survenue\"</string>\n    <string name=\"wallet_certificate_renewal_general_error_text\">\"Veuillez réessayer plus tard.\"</string>\n\n    <!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_title\">\"Renouvellement réussi\"</string>\n\n    <!-- Wallet: Text der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_text\">\"Remplacez également les versions imprimées ou enregistrées de ce certificat par cette nouvelle version.\"</string>\n\n    <!-- Wallet: Button der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_button\">\"En savoir plus\"</string>\n\n    <!-- Wallet: QR Code des Zertifikats abgelaufen -->\n    <string name=\"wallet_error_qr_code_expired\">\"La date d’expiration technique de ce code QR est atteinte.\"</string>\n    <string name=\"wallet_certificate_renewal_rate_limit_error_title\">\"Limite des 24 heures atteinte\"</string>\n    <string name=\"wallet_certificate_renewal_rate_limit_error_text\">\"Le code QR a été renouvelé trop souvent. Le renouvellement est temporairement bloqué.\"</string>\n    <string name=\"wallet_certificate_renewal_faq_link_text\">\"Vers la FAQ\"</string>\n    <string name=\"wallet_certificate_renewal_faq_link_url\">\"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"</string>\n    <string name=\"terms_and_conditions_update_boarding_title\">\"Mise à jour\"</string>\n    <string name=\"terms_and_conditions_update_boarding_text\">\"Les conditions d’utilisation et la politique de confidentialité de l’application ont été ponctuellement mises à jour et adaptées aux bases légales.\"</string>\n    <string name=\"wallet_validity_since_vaccination_date\">\"Date de vaccination\"</string>\n    <string name=\"wallet_validity_since_test_date\">\"Test négatif \"</string>\n\n    <!-- vor 2 Tagen - must be before \"2 Tagen\"! -->\n    <string name=\"wallet_validity_since_prefix\">\"il y a\"</string>\n\n    <!-- vor 1 Stunde -->\n    <string name=\"wallet_validity_since_hours_singular\">\"1 heure\"</string>\n\n    <!-- vor 2 Stunden -->\n    <string name=\"wallet_validity_since_hours_plural\">\"{HOURS} heures\"</string>\n\n    <!-- vor 1 Tag -->\n    <string name=\"wallet_validity_since_days_singular\">\"1 jour\"</string>\n\n    <!-- vor 2 Tagen -->\n    <string name=\"wallet_validity_since_days_plural\">\"{DAYS} jours\"</string>\n    <string name=\"wallet_update_boarding_page_1_title\">\"Nouveautés\"</string>\n    <string name=\"wallet_update_boarding_page_1_text\">\"Désormais, le certificat COVID n’affichera plus l’encadré «Validité en Suisse». Celui-ci sera remplacé par la date de la vaccination ou du test. Pourquoi?\"</string>\n    <string name=\"wallet_update_boarding_page_2_title\">\"Certificats COVID en Suisse\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_1\">\"L’obligation de présenter un certificat en Suisse a été levée en février 2022.\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_2\">\"Depuis lors, les durées de validité pour la Suisse sont purement formelles et n’ont plus de pertinence pratique dans le pays.\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_3\">\"La durée de validité pour la Suisse n’a pas non plus de pertinence à l’étranger.\"</string>\n    <string name=\"wallet_update_boarding_page_3_title\">\"Certificats COVID à l’étranger\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_1\">\"À l’étranger, les règles en vigueur dépendent de chaque pays.\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_2\">\"Désormais, l’application indique le nombre de jours écoulés depuis une vaccination ou un test.\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_3\">\"Vous pourrez ainsi déterminer plus facilement si votre certificat est conforme aux règles en vigueur dans votre pays de destination (si celui-ci exige encore un certificat COVID).\"</string>\n    <string name=\"wallet_update_boarding_page_4_title\">\"Situation actuelle en Europe et dans le monde\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_1\">\"Dans l’intervalle, la plupart des pays d’Europe ont levé l’obligation de présenter un certificat pour entrer sur leur territoire.\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_2\">\"La fonction «Validité à l’étranger» a donc également été supprimée.\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_3\">\"Pour savoir quels pays exigent encore un certificat, vous pouvez consulter les sites suivants:\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_1_text\">\"reopen.europa.eu\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_1_url\">\"https://reopen.europa.eu\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_2_text\">\"iatatravelcentre.com\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_2_url\">\"https://www.iatatravelcentre.com\"</string>\n    <string name=\"wallet_validity_since_more_hours_prefix\">\"il y a plus de\"</string>\n    <string name=\"wallet_validity_since_recovery_date\">\"Test positif\"</string>\n    <string name=\"covid_certificate_news_text\">\"Levée de l’obligation de présenter un certificat.\"</string>\n    <string name=\"covid_certificate_news_title\">\"Levée de l’obligation de présenter un certificat.\"</string>\n    <string name=\"covid_certificate_news_item1\">\"L’obligation de présenter un certificat en Suisse a été levée en février 2022.\"</string>\n    <string name=\"covid_certificate_news_item2\">\"Depuis lors, les durées de validité pour la Suisse sont purement formelles et n’ont plus de pertinence pratique dans le pays.\"</string>\n    <string name=\"covid_certificate_news_item3\">\"Cette application de vérification suisse contrôle les certificats COVID en fonction des règles de validité suisses. Le résultat du contrôle n’est pas déterminant pour utiliser l’étranger.\"</string>\n    <string name=\"covid_certificate_news_item4\">\"Lorsqu’un pays exige encore un certificat COVID, les règles du pays en question s’appliquent.\"</string>\n    <string name=\"wallet_faq_questions_linktext_1_1\">\"Plateforme nationale de demandes pour le certificat COVID\"</string>\n    <string name=\"wallet_faq_questions_linkurl_1_1\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n    <string name=\"wallet_faq_questions_question_2_2\">\"Je pars à l’étranger et j’ai besoin d’un certificat COVID pour entrer dans le pays de destination. À quoi dois-je faire attention ?\"</string>\n    <string name=\"wallet_faq_questions_answer_2_2\">\"À l’étranger, les règles de validité du pays concerné s’appliquent, aussi bien à l’entrée qu’à l’intérieur du territoire. L’utilisation du certificat à l’intérieur du pays de destination peut être soumise à d’autres règles que celles fixées pour l’entrée. Ces règles peuvent changer à très court terme. Vérifiez donc peu avant votre départ sur le site Internet des autorités de votre pays de transit ou de destination si des règles en rapport avec le COVID-19 sont toujours appliquées, et si oui, lesquelles. \"</string>\n    <string name=\"wallet_error_not_fully_protected_national_rules\">\"Schéma vaccinal incomplet selon les normes internationales.\"</string>\n</resources>"
  },
  {
    "path": "common/src/main/res/values-it/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n    ~\n    ~ This Source Code Form is subject to the terms of the Mozilla Public\n    ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n    ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n    ~\n    ~ SPDX-License-Identifier: MPL-2.0\n    -->\n<resources>\n\n    <!-- Android App Name -->\n    <string name=\"verifier_app_name\">\"Covid Check\"</string>\n\n    <!-- Title for the qr scanning screen -->\n    <string name=\"verifier_title_qr_scan\">\"Verificare\"</string>\n\n    <!-- Titel über dem Haupttitel -->\n    <string name=\"verifier_homescreen_header_title\">\"Certificato COVID\"</string>\n\n    <!-- Homescreen App Name -->\n    <string name=\"verifier_homescreen_title\">\"Check\"</string>\n\n    <!-- Beschreibung für Pager Bild 1 -->\n    <string name=\"verifier_homescreen_pager_description_1\">\"Scansionare il certificato esibito\"</string>\n\n    <!-- Beschreibung für Pager Bild 2 -->\n    <string name=\"verifier_homescreen_pager_description_2\">\"I certificati vengono verificati automaticamente\"</string>\n\n    <!-- Homescreen Button für Scanning -->\n    <string name=\"verifier_homescreen_scan_button\">\"Verifica\"</string>\n\n    <!-- Homescreen Button für Support -->\n    <string name=\"verifier_homescreen_support_button\">\"Funziona così\"</string>\n    <string name=\"error_network_title\">\"Errore di rete\"</string>\n    <string name=\"error_network_text\">\"Controllare la connessione Internet.\"</string>\n    <string name=\"error_action_retry\">\"Riprovare\"</string>\n    <string name=\"error_camera_permission_title\">\"Nessun accesso alla fotocamera\"</string>\n    <string name=\"error_camera_permission_text\">\"L'app necessita dell'accesso alla fotocamera per scansionare il codice QR.\"</string>\n    <string name=\"error_action_change_settings\">\"Cambiare impostazioni\"</string>\n    <string name=\"error_title\">\"Errore\"</string>\n    <string name=\"qr_scanner_error\">\"Codice non valido\"</string>\n    <string name=\"ok_button\">\"OK\"</string>\n    <string name=\"camera_permission_dialog_text\">\"L'app necessita dell'accesso alla fotocamera per scansionare il codice QR.\"</string>\n    <string name=\"camera_permission_dialog_action\">\"Consentire l'accesso alla fotocamera\"</string>\n    <string name=\"verifier_qr_scanner_scan_qr_text\">\"Inquadrare il codice QR \nper verificare\"</string>\n\n    <!-- Titel auf dem Verifikations-Screen -->\n    <string name=\"covid_certificate_title\">\"Certificato COVID\"</string>\n\n    <!-- Name des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n    <string name=\"verifier_covid_certificate_name\">\"Cognome\"</string>\n\n    <!-- Geburtsdatum des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n    <string name=\"verifier_covid_certificate_birthdate\">\"Data di nascita\"</string>\n\n    <!-- Wallet: Zertifikat hinzufügen -->\n    <string name=\"wallet_add_certificate\">\"Aggiungere\"</string>\n\n    <!-- Wallet: Homescreen Covid-Zertifikat -->\n    <string name=\"wallet_certificate\">\"Certificato COVID\"</string>\n\n    <!-- Wallet: Homescreen Erklärung -->\n    <string name=\"wallet_homescreen_explanation\">\"Inquadrare il codice QR apposto sul certificato COVID per aggiungerlo all'app.\"</string>\n\n    <!-- Wallet: Scanner Titel -->\n    <string name=\"wallet_scanner_title\">\"Aggiungere\"</string>\n\n    <!-- Titel bei erfolgreicher Prüfung -->\n    <string name=\"verifier_verify_success_title\">\"Verifica riuscita\"</string>\n\n    <!-- Info Text bei erfolgreicher Prüfung -->\n    <string name=\"verifier_verify_success_info\">\"Valido solo con un documento \ndi legittimazione\"</string>\n\n    <!-- Prüfung loading text -->\n    <string name=\"verifier_verify_loading_text\">\"Verifica del certificato in corso\"</string>\n\n    <!-- Fehler Title bei Prüfung -->\n    <string name=\"verifier_verify_error_title\">\"Certificato non valido\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Nationale Regeln) -->\n    <string name=\"verifier_verify_error_info_for_national_rules\">\"Non conforme ai criteri di validità applicati in Svizzera o della modalità di verifica  ({MODUS})\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Zertifikat Fehler) -->\n    <string name=\"verifier_verify_error_info_for_certificate_invalid\">\"Il certificato COVID non dispone di una firma valida\"</string>\n\n    <!-- Fehler Infotext bei Prüfung (Blacklist) -->\n    <string name=\"verifier_verify_error_info_for_blacklist\">\"Il certificato COVID è stato revocato\"</string>\n\n    <!-- Fehler bei der geladen Liste -->\n    <string name=\"verifier_verify_error_list_title\">\"Verifica non riuscita\"</string>\n\n    <!-- Fehler Info bei laden der Liste -->\n    <string name=\"verifier_verify_error_list_info_text\">\"Si è verificato un errore imprevisto.\"</string>\n\n    <!-- Wallet: Scanner Text unten -->\n    <string name=\"wallet_scanner_explanation\">\"Inquadrare il codice QR apposto sul certificato COVID.\"</string>\n\n    <!-- Wallet: Scanner Info Button unten -->\n    <string name=\"wallet_scanner_info_button\">\"Funziona così\"</string>\n\n    <!-- Wallet: Erneut scannen Button -->\n    <string name=\"wallet_scan_again\">\"Scansionare di nuovo\"</string>\n\n    <!-- Wallet: Hinzufügen von Zertifikat Button -->\n    <string name=\"wallet_add_certificate_button\">\"Aggiungi\"</string>\n\n    <!-- Wallet: Titel der Liste Zertifikate -->\n    <string name=\"wallet_certificate_list_title\">\"Certificati\"</string>\n\n    <!-- Wallet: Löschen Button Titel -->\n    <string name=\"delete_button\">\"Elimina\"</string>\n\n    <!-- Android App Name für die Wallet -->\n    <string name=\"wallet_app_name\">\"Covid Cert\"</string>\n\n    <!-- Header im Onboarding-Screen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_header\">\"L'app\"</string>\n\n    <!-- Titel im Onboardingscreen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_title\">\"COVID Certificate\"</string>\n\n    <!-- Text im Onboardingscreen \"Die App\" -->\n    <string name=\"wallet_onboarding_app_text\">\"Con l'app può conservare in sicurezza i certificati COVID sullo smartphone e mostrarli facilmente.\"</string>\n\n    <!-- Weiter-Button Titel -->\n    <string name=\"continue_button\">\"Avanti\"</string>\n\n    <!-- Header im Onboarding-Screen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_header\">\"Protezione dei dati\"</string>\n\n    <!-- Titel im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_title\">\"I dati rimangono \nnell'app\"</string>\n\n    <!-- Text im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_text\">\"I certificati sono salvati solo localmente sullo smartphone. I dati non sono salvati in un sistema centralizzato.\"</string>\n\n    <!-- Titel im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_title\">\"Esibire facilmente i certificati\"</string>\n\n    <!-- Text 1 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_text1\">\"I dati visualizzati sul certificato COVID sono contenuti anche nel codice QR.\"</string>\n\n    <!-- Text 2 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_text2\">\"Alla presentazione, il codice QR è scansionato con un'app di verifica. L'autenticità e la validità dei dati ivi contenuti sono verificate automaticamente.\"</string>\n\n    <!-- Titel des Datenschutzerklärungs-Elements im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_privacypolicy_title\">\"Dichiarazione sulla protezione dei dati\"</string>\n\n    <!-- Titel des Nutzungsbedingungen-Elements im Onboardingscreen \"Datenschutz\" -->\n    <string name=\"wallet_onboarding_privacy_conditionsofuse_title\">\"Condizioni d'uso\"</string>\n\n    <!-- Button zum Abschliessen des Onboardings -->\n    <string name=\"wallet_onboarding_accept_button\">\"Accetta\"</string>\n    <string name=\"language_key\">\"it\"</string>\n\n    <!-- Header im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_header\">\"Funziona così\"</string>\n\n    <!-- Titel im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_title\">\"Aggiungere \ncertificati Covid\"</string>\n\n    <!-- Textblock 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text1\">\"Per aggiungere un certificato COVID a un'app è necessario il certificato originale cartaceo o in formato PDF.\"</string>\n\n    <!-- Textblock 2 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text2\">\"Prema su «aggiungi» per aggiungere un nuovo certificato allʼapp.\"</string>\n\n    <!-- Textblock 3 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text3\">\"Tenga la fotocamera dello smartphone sopra il codice QR apposto sul certificato originale per scansionarlo.\"</string>\n\n    <!-- Textblock 4 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_text4\">\"Apparirà un'anteprima del certificato COVID. Prema su «aggiungi» per salvare il certificato nellʼapp.\"</string>\n\n    <!-- Frage 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_question1\">\"Quando e dove posso ricevere un certificato COVID?\"</string>\n\n    <!-- Header im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_header\">\"Domande frequenti\"</string>\n\n    <!-- Titel 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_title\">\"Cos'è il certificato COVID?\"</string>\n\n    <!-- Text 1im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_subtitle\">\"Il certificato COVID offre la possibilità di provare in modo non falsificabile l'avvenuta vaccinazione, la guarigione o un risultato negativo al test.\"</string>\n\n    <!-- Frage 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_1\">\"Quando e dove posso ottenere un certificato COVID?\"</string>\n\n    <!-- Frage 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_2\">\"Come posso mostrare il certificato COVID?\"</string>\n\n    <!-- Frage 3 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_3\">\"Dove vengono salvati i miei dati?\"</string>\n\n    <!-- Frage 4 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_4\">\"Come vengono impediti l'uso improprio e le falsificazioni?\"</string>\n\n    <!-- Frage 5 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_question_5\">\"Cosa succede se perdo il mio certificato COVID su carta?\"</string>\n\n    <!-- Frage 6 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_1\">\"Come posso inserire un certificato COVID sulla app?\"</string>\n\n    <!-- Frage 7 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_2\">\"È possibile aggiungere più certificati COVID?\"</string>\n\n    <!-- Frage 8 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_3\">\"Dove posso verificare se il mio certificato COVID è valido?\"</string>\n\n    <!-- Frage 9 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_4\">\"Come sono protetti i miei dati?\"</string>\n\n    <!-- Frage 10 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_5\">\"Quali dati contiene il codice QR?\"</string>\n\n    <!-- Frage 11 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_question_6\">\"Cosa devo fare se elimino il file contenente il certificato COVID o l'app?\"</string>\n\n    <!-- Antwort 1 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_1\">\"Può ricevere un certificato COVID in seguito alla vaccinazione anti-COVID-19, all'avvenuta guarigione o a un risultato negativo al test. Normalmente, il certificato è rilasciato su richiesta dal personale medico specializzato presso le strutture sanitarie.\"</string>\n\n    <!-- Antwort 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_2\">\"Può mostrare il Suo certificato COVID in formato cartaceo oppure salvarlo e presentarlo utilizzando l’app «COVID Certificate». \nIn entrambi i casi, dovrà mostrare anche un documento di legittimazione.\nIn alcuni Paesi si richiede la versione cartacea del certificato e non si accetta quello elettronico. Porti quindi sempre con sé anche la versione cartacea quando viaggia.\"</string>\n\n    <!-- Antwort 3 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_3\">\"I dati del Suo certificato non vengono salvati in un sistema centrale della Confederazione, ma si trovano solo localmente sul Suo dispositivo mobile, rispettivamente sul certificato COVID in formato cartaceo.\"</string>\n\n    <!-- Antwort 4 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_4\">\"Il codice QR sul certificato COVID contiene una firma elettronica. Questa firma è un elemento di sicurezza importante e garantisce che il certificato non possa essere falsificato. Inoltre, il certificato COVID è valido solo con un documento di legittimazione.\"</string>\n\n    <!-- Antwort 5 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_questions_answer_5\">\"Il Suo certificato COVID non è salvato su un sistema centrale della Confederazione Conservi quindi con cura il certificato COVID su carta e/o in formato PDF. In caso di smarrimento e sostituzione, per il nuovo rilascio da parte delle strutture sanitarie (p. es. la struttura in cui è stato effettuato il test o è stata somministrata la vaccinazione) potrà essere riscosso un emolumento.\"</string>\n\n    <!-- Antwort 6 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_1\">\"Per inserire sull'app un certificato COVID serve il certificato originale rilasciatole su carta o in formato PDF. Utilizzando l'app COVID Certificate può aggiungere il certificato inquadrando il codice QR raffigurato sul certificato. In questo modo, il certificato COVID appare direttamente sull'app.\"</string>\n\n    <!-- Antwort 7 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_2\">\"Sì, è possibile. Ad esempio, può salvare nella Sua app i certificati COVID dei suoi familiari. Anche in questo caso, il certificato COVID è valido solo con un documento di legittimazione del titolare.\"</string>\n\n    <!-- Antwort 8 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_3\">\"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. Pertanto il campo «Validità in Svizzera» non è più visualizzato nell’app. Al suo posto si trova la data della vaccinazione o del test.\n\nViene anche visualizzato quanti giorni sono trascorsi da una vaccinazione o da un test. In tal modo può determinare più facilmente se il Suo certificato è conforme alle regole di validità del Paese di destinazione (qualora il Paese richiedesse ancora un certificato COVID). All’estero si applicano sempre le regole di validità del rispettivo Paese.\"</string>\n\n    <!-- Antwort 9 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_4\">\"I Suoi dati personali non sono salvati in un sistema centrale ma unicamente sul Suo dispositivo mobile oppure nel codice QR indicato sul certificato COVID in formato cartaceo.\"</string>\n\n    <!-- Antwort 10 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_5\">\"Il codice QR contiene tutte le informazioni che trova nel testo del Suo certificato COVID in formato cartaceo. Nel codice QR si trova anche una firma elettronica che consente di verificare la validità del certificato COVID. La firma elettronica impedisce la falsificazione del certificato COVID.\"</string>\n\n    <!-- Antwort 11 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_answer_6\">\"Può semplicemente risalvare il certificato COVID sul Suo dispositivo mobile. Per farlo, scarichi nuovamente l'app e poi scansioni il codice QR che trova sul Suo certificato COVID in formato cartaceo o PDF.\"</string>\n\n    <!-- Titel 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_title\">\"Come funziona \nl'app?\"</string>\n\n    <!-- Text 2 im FAQ-Screen der Wallet App -->\n    <string name=\"wallet_faq_works_subtitle\">\"Con l'app COVID Certificate può salvare e mostrare i certificati COVID in modo semplice e sicuro sul Suo dispositivo mobile.\"</string>\n\n    <!-- Antwort 1 im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_answer1\">\"Può ricevere un certificato COVID in seguito alla completa vaccinazione COVID-19, all'avvenuta guarigione o a un risultato negativo al test. Il certificato è rilasciato su richiesta dal personale medico specializzato presso le strutture sanitarie.\"</string>\n\n    <!-- Verifier: Detail Check Vorname -->\n    <string name=\"verifier_covid_certificate_prename\">\"Nome\"</string>\n\n    <!-- Config: Titel wenn App muss geupdatet werden -->\n    <string name=\"force_update_title\">\"Aggiornamento necessario\"</string>\n\n    <!-- Config: Text der angezeigt wird falls App muss geupdatet werden -->\n    <string name=\"force_update_text\">\"Caricare la nuova versione dellʼapp.\"</string>\n\n    <!-- Config: Update Button Aktualisieren -->\n    <string name=\"force_update_button\">\"Aggiorna\"</string>\n\n    <!-- Wallet: Zertifikat gültig ab: {DATE} -->\n    <string name=\"wallet_certificate_valid_from\">\"Valido in Svizzera dal:\n{DATE}\"</string>\n\n    <!-- Wallet: Zertifikat Detail Geimpft -->\n    <string name=\"certificate_reason_vaccinated\">\"Vaccinazione\"</string>\n\n    <!-- Wallet: Zertifikat Detail Genesen -->\n    <string name=\"certificate_reason_recovered\">\"Guarigione\"</string>\n\n    <!-- Wallet: Zertifikat Detail Getestet -->\n    <string name=\"certificate_reason_tested\">\"Test\"</string>\n\n    <!-- Header im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_header\">\"Vantaggi\"</string>\n\n    <!-- Titel im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_title\">\"Conservare i certificati COVID in formato digitalizzato\"</string>\n\n    <!-- Text1 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_text1\">\"I certificati COVID possono essere aggiunti facilmente all'app e conservati in formato digitalizzato.\"</string>\n\n    <!-- Text2 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n    <string name=\"wallet_onboarding_store_text2\">\"Lʼapp verifica la validità dei certificati in Svizzera. In questo puoi assicurarti che i tuoi certificati siano validi.\"</string>\n\n    <!-- Header im Onboarding-Screen \"Vorteile, Vorweisen\" -->\n    <string name=\"wallet_onboarding_show_header\">\"Vantaggi\"</string>\n\n    <!-- Accessibility: Information -->\n    <string name=\"accessibility_info_button\">\"Impressum\"</string>\n\n    <!-- Accessibility: FAQ Button Titel -->\n    <string name=\"accessibility_faq_button\">\"Domande frequenti\"</string>\n\n    <!-- Accessibility: Button zur Liste der Zertifikate -->\n    <string name=\"accessibility_list_button\">\"Elenco dei certificati\"</string>\n\n    <!-- Accessibility: Zertifikate hinzufügen -->\n    <string name=\"accessibility_add_button\">\"Aggiungi certificato\"</string>\n\n    <!-- Accessibility: Schliessen Button -->\n    <string name=\"accessibility_close_button\">\"Chiudi\"</string>\n\n    <!-- Accessibility: Taschenlampe anschalten Button -->\n    <string name=\"accessibility_lamp_on_button\">\"Attiva la torcia\"</string>\n\n    <!-- Accessibility: Lampe abschalten -->\n    <string name=\"accessibility_lamp_off_button\">\"Disattiva la torcia\"</string>\n\n    <!-- Titel des Impressum-Screens -->\n    <string name=\"impressum_title\">\"Impressum\"</string>\n\n    <!-- Unbekannter Fehler -->\n    <string name=\"unknown_error\">\"Si è verificato un errore sconosciuto.\"</string>\n\n    <!-- Verifier: Die Gültigkeit des Zertifikat ist abgelaufen -->\n    <string name=\"verifier_verifiy_error_expired\">\"Non conforme ai criteri di validità svizzeri.\n\nLa validità del certificato è scaduta.\"</string>\n\n    <!-- Verifier: Zertifikat ist erst gültig ab {DATE} -->\n    <string name=\"verifier_verifiy_error_notyetvalid\">\"Non conforme ai criteri di validità svizzeri.\n\nIl certificato non è ancora valido.\"</string>\n\n    <!-- Verifier: Ein Netzwerkfehler ist aufgetreten. -->\n    <string name=\"verifier_retry_network_error\">\"Si è verificato un errore di rete.\"</string>\n\n    <!-- Verifier: Das Gerät befindet sich im Flugmodus. -->\n    <string name=\"verifier_retry_flightmode_error\">\"Il dispositivo è in modalità aereo\"</string>\n\n    <!-- Wallet: Zertifikat gültig ab: {DATE} -->\n    <string name=\"wallet_error_valid_from\">\"Valido in Svizzera dal:\n{DATE}\"</string>\n\n    <!-- Wallet: Fehler wenn Zertifikat nicht den CH-Gültigkeitskriterien entspricht -->\n    <string name=\"wallet_error_national_rules\">\"Contiene dati non conformi agli standard internazionali.\"</string>\n\n    <!-- Wallet: Gültigkeit des Zertifikats abgelaufen -->\n    <string name=\"wallet_error_expired\">\"La durata di validità in Svizzera è stata superata \"</string>\n\n    <!-- Wallet: Zertifikat wurde widerrufen -->\n    <string name=\"wallet_error_revocation\">\"Il certificato è stato \nrevocato\"</string>\n\n    <!-- Wallet: Zertifikat mit ungültiger Signatur -->\n    <string name=\"wallet_error_invalid_signature\">\"Certificato con \nfirma non valida\"</string>\n\n    <!-- Wallet: ungültiger Signatur (gleiche Worte wie wallet_error_invalid_signature) -->\n    <string name=\"wallet_error_invalid_signature_bold\">\"firma non valida\"</string>\n\n    <!-- Wallet: widerrufen (gleiches Wort wie bei wallet_error_revocation) -->\n    <string name=\"wallet_error_revocation_bold\">\"revocato\"</string>\n\n    <!-- Meldung wenn erneute ein Zertifikat gescannt wurde, welches bereits in der App ist -->\n    <string name=\"wallet_certificate_already_exists\">\"Questo certificato è già salvato nell'app\"</string>\n\n    <!-- Titel Gültigkeit im Zertifikatsdetail -->\n    <string name=\"wallet_certificate_validity\">\"Validità in \nSvizzera\"</string>\n\n    <!-- \"Bis\" Label im Zertifikats-Detail -->\n    <string name=\"wallet_certificate_valid_until\">\"fino al\"</string>\n\n    <!-- Message im Zertifikatsdetail während Überprüfung -->\n    <string name=\"wallet_certificate_verifying\">\"Verifica del certificato in corso\"</string>\n\n    <!-- Message nach erfolgreicher Prüfung im Zertifikatdetail -->\n    <string name=\"wallet_certificate_verify_success\">\"Verifica effettuata con successo\"</string>\n\n    <!-- Accessibility: Info Box Butto -->\n    <string name=\"accessibility_info_box\">\"Informazione\"</string>\n\n    <!-- Button Schliessen -->\n    <string name=\"close_button\">\"Chiudi\"</string>\n    <string name=\"wallet_certificate_impfdosis_title\">\"Dose\"</string>\n    <string name=\"target_disease_name\">\"COVID-19\"</string>\n    <string name=\"wallet_certificate_target_disease_title\">\"Malattia o agente patogeno\"</string>\n    <string name=\"wallet_certificate_impfstoff_product_name_title\">\"Prodotto\"</string>\n    <string name=\"wallet_certificate_impfstoff_holder\">\"Fabbricante\"</string>\n    <string name=\"wallet_certificate_vaccination_date_title\">\"Data di vaccinazione\"</string>\n    <string name=\"wallet_certificate_vaccination_country_title\">\"Paese della vaccinazione\"</string>\n    <string name=\"wallet_certificate_vaccination_issuer_title\">\"Emittente\"</string>\n    <string name=\"covid_certificate_recovery_title\">\"Guarigione\"</string>\n    <string name=\"wallet_certificate_recovery_first_positiv_result\">\"Data del primo risultato positivo\"</string>\n    <string name=\"wallet_certificate_recovery_from\">\"Valido da\"</string>\n    <string name=\"wallet_certificate_recovery_until\">\"Valido fino a\"</string>\n    <string name=\"wallet_certificate_test_land\">\"Paese del test\"</string>\n    <string name=\"covid_certificate_test_title\">\"Test\"</string>\n    <string name=\"wallet_certificate_test_result_title\">\"Risultato\"</string>\n    <string name=\"wallet_certificate_test_result_negativ\">\"Non rilevato (Negativo)\"</string>\n    <string name=\"wallet_certificate_test_result_positiv\">\"Rilevato (Positivo)\"</string>\n    <string name=\"wallet_certificate_test_type\">\"Tipo\"</string>\n    <string name=\"wallet_certificate_test_name\">\"Nome\"</string>\n    <string name=\"wallet_certificate_test_holder\">\"Fabbricante\"</string>\n    <string name=\"wallet_certificate_test_sample_date_title\">\"Data del prelievo del campione\"</string>\n    <string name=\"wallet_certificate_test_result_date_title\">\"Data del risultato\"</string>\n\n    <!-- Header im \"So funktionierts\" Screen der Verifier-App -->\n    <string name=\"verifier_support_header\">\"Funziona così\"</string>\n\n    <!-- Text im Bestätigungs-Dialog beim Zertifikat löschen -->\n    <string name=\"wallet_certificate_delete_confirm_text\">\"Eliminare il certificato?\"</string>\n\n    <!-- Titel eines Abbrechen-Buttons -->\n    <string name=\"cancel_button\">\"Annulla\"</string>\n\n    <!-- Wallet: Titel bei Impfungen -->\n    <string name=\"covid_certificate_vaccination_title\">\"Vaccinazione\"</string>\n\n    <!-- Wallet: Apple App Store URL -->\n    <string name=\"wallet_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917320\"</string>\n\n    <!-- Verifier: Apple App Store URL -->\n    <string name=\"verifier_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917510\"</string>\n\n    <!-- Wallet: Abkürzung \"UVCI\" (Unique Vaccination Certificate Identifier) -->\n    <string name=\"wallet_certificate_identifier\">\"UVCI\"</string>\n\n    <!-- Wallet: Zertifikat erstellt am {DATE} -->\n    <string name=\"wallet_certificate_date\">\"Certificato emesso il\n{DATE}\"</string>\n\n    <!-- Wallet: Detail Art des Impfstoffs -->\n    <string name=\"wallet_certificate_vaccine_prophylaxis\">\"Tipo di vaccino\"</string>\n\n    <!-- Wallet: Test Detail Test durchgeführt durch -->\n    <string name=\"wallet_certificate_test_done_by\">\"Centro di test\"</string>\n\n    <!-- iOS: Erklärung bei Kamera  -->\n    <string name=\"NSCameraUsageDescription\">\"Per poter inquadrare il codice QR l'app deve accedere alla fotocamera.\"</string>\n\n    <!-- Titel 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_title\">\"Come avviene la verifica dei certificati COVID?\"</string>\n\n    <!-- Text 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_subtitle\">\"Con l'app COVID Certificate Check è possibile scansionare i relativi codici QR e verificare l'autenticità e la validità dei certificati COVID.\"</string>\n\n    <!-- Frage 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_1\">\"Come posso verificare i certificati COVID?\"</string>\n\n    <!-- Antwort 1 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_1\">\"Per verificare un certificato COVID tramite l'app COVID Certificate Check, può scansionare il codice QR che trova sulla copia cartacea del certificato oppure sull’app che le viene mostrata.\"</string>\n\n    <!-- Frage 2 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_2\">\"Cosa viene verificato esattamente?\"</string>\n\n    <!-- Antwort 2 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_2\">\"Scansionando il codice QR vengono verificati i seguenti tre aspetti.\n– Il certificato contiene una firma elettronica valida?\n– Il certificato è ancora valido?\n– Il certificato rispetta i criteri di validità previsti dalla normativa svizzera?\n\nSe tutti i tre aspetti sono valutati positivamente, il certificato COVID è considerato valido.\n\"</string>\n\n    <!-- Frage 3 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_3\">\"Quali documenti di legittimazione sono accettati o validi? Perché devono essere verificati i dati personali?\"</string>\n\n    <!-- Antwort 3 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_3\">\"Oltre al passaporto o alla carta d'identità sono accettati altri documenti che provano l'identità della persona in questione tramite una foto (ad es. licenza di condurre). Il certificato COVID non è falsificabile, tuttavia solo verificando i dati personali si garantisce che il certificato sia stato effettivamente rilasciato alla persona che lo sta mostrando.\"</string>\n\n    <!-- Frage 4 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_4\">\"Possono essere verificati anche certificati esteri?\"</string>\n\n    <!-- Antwort 4 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_4\">\"Sì, con l'app COVID Certificate Check è possibile verificare il rispetto dei criteri di validità previsti dalla normativa svizzera dei certificati COVID compatibili con il certificato COVID digitale UE.\"</string>\n\n    <!-- Frage 5 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_5\">\"Quali dati posso visualizzare durante il processo di verifica?\"</string>\n\n    <!-- Antwort 5 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_5\">\"Durante il processo di verifica visualizzerà solo nome e cognome nonché la data di nascita del titolare del certificato e l'indicazione della validità del certificato.\"</string>\n\n    <!-- Frage 6 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_question_6\">\"Durante il processo di verifica vengono salvati dati nell'app COVID Certificate Check o in un sistema centrale?\"</string>\n\n    <!-- Antwort 6 im FAQ der Verifier App -->\n    <string name=\"verifier_faq_works_answer_6\">\"No, durante il processo di verifica non vengono salvati dati nell'app COVID Certificate Check né in un sistema centrale. In questo modo, non è possibile risalire a quali certificati sono stati verificati, da chi, quando e dove.\"</string>\n\n    <!-- iOS Button zum Einstellungen öffnen -->\n    <string name=\"ios_settings_open\">\"Impostazioni\"</string>\n\n    <!-- Wallet: Onboarding externer Link zu Datenschutz -->\n    <string name=\"wallet_onboarding_external_privacy_button\">\"Informativa sulla privacy e condizioni d'uso\"</string>\n\n    <!-- Wallet: Hinweis im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_note\">\"Il presente certificato non costituisce un documento di viaggio. \n&lt;br /&gt;&lt;br /&gt;\nSi acquisiscono sempre più conoscenze scientifiche sulla vaccinazione COVID-19, sulla guarigione dalla COVID-19 e sui test COVID-19, così come sulle nuove varianti problematiche del virus. \n&lt;br /&gt;&lt;br /&gt;\nPrima di un viaggio, informatevi sulle restrizioni e sulle regole di validità vigenti nella località di destinazione. All’estero la validità del certificato è calcolata secondo le regole del Paese di destinazione.\"</string>\n    <string name=\"wallet_terms_privacy_link\">\"https://www.bit.admin.ch/bit/it/home/documentazione/covid-certificate-app.html\"</string>\n    <string name=\"verifier_terms_privacy_link\">\"https://www.bit.admin.ch/bit/it/home/documentazione/covid-certificate-check-app.html\"</string>\n\n    <!-- Verifier: Titel in der App (z.B. Impressum) -->\n    <string name=\"verifier_app_title\">\"COVID Certificate Check\"</string>\n    <string name=\"wallet_faq_questions_question_1_1\">\"Come posso ottenere un certificato COVID dopo essere guarito?\"</string>\n    <string name=\"wallet_faq_questions_answer_1_1\">\"A seconda del Cantone, il certificato COVID viene rilasciato in parte direttamente dalla struttura che ha effettuato il test o dal laboratorio in cui è stato accertato il risultato positivo al test. Qualora così non fosse, può richiedere a posteriori online un certificato COVID tramite il sito web dell’«organo nazionale per la richiesta di certificati COVID». La richiesta sarà evasa in tale sede dall’autorità cantonale competente. Il sito web dell’«organo nazionale per la richiesta di certificati COVID» si trova qui:\"</string>\n\n    <!-- Wallet: Homescreen Was wollen sie machen? -->\n    <string name=\"wallet_homescreen_what_to_do\">\"Vai al passaggio successivo\"</string>\n\n    <!-- Wallet: Homescreen Titel Zertifikat hinzufügen -->\n    <string name=\"wallet_homescreen_add_title\">\"Aggiungi certificato\"</string>\n\n    <!-- Wallet: Homescreen Zertifikat Description Text -->\n    <string name=\"wallet_homescreen_add_certificate_description\">\"Possiedi un certificato COVID in formato cartaceo o in PDF e desideri aggiungerlo nell'app.\"</string>\n\n    <!-- Wallet: Homescreen Transfer-Code erstellen -->\n    <string name=\"wallet_homescreen_add_transfer_code\">\"Crea codice di trasferimento\"</string>\n\n    <!-- Wallet: Transfer Codes Titel -->\n    <string name=\"wallet_transfer_code_onboarding_title\">\"Codici di trasferimento\"</string>\n\n    <!-- Wallet: Transfer Code Text -->\n    <string name=\"wallet_transfer_code_onboarding_text\">\"Puoi fornire i codici di trasferimento in occasione di un test COVID o una vaccinazione anti-COVID-19. Il tuo certificato COVID sarà poi trasmesso direttamente all'app.\"</string>\n\n    <!-- Wallet: Transfer Code Onboarding Button -->\n    <string name=\"wallet_transfer_code_onboarding_button\">\"Crea codice\"</string>\n\n    <!-- Wallet: Transfer Code Onboarding So funktioniert's -->\n    <string name=\"wallet_transfer_code_onboarding_howto\">\"Ecco come funziona\"</string>\n\n    <!-- prüfen -->\n    <!-- Wallet: Transfer Code: FAQ Titel -->\n    <string name=\"wallet_transfer_code_faq_questions_title\">\"Ricevere i certificati COVID direttamente nell’app\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Text -->\n    <string name=\"wallet_transfer_code_faq_questions_subtitle\">\"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app dopo un test COVID o una vaccinazione anti-COVID-19.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 1 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_1\">\"Chi offre la trasmissione mediante codice di trasferimento?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 2 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_2\">\"I codici di trasferimento possono essere impiegati anche per trasmettere i certificati di vaccinazione?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 3 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_3\">\"Come funziona la trasmissione mediante codice di trasferimento?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Frage 4 -->\n    <string name=\"wallet_transfer_code_faq_questions_question_4\">\"Posso utilizzare lo stesso codice di trasferimento più volte?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 1 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_1\">\"Quando fai un test COVID (test PCR o test antigenico rapido) o ricevi una vaccinazione anti-COVID-19, è possibile impiegare il codice di trasferimento per la trasmissione rapida dei certificati COVID.\n\nChiedi al centro di test, al centro di vaccinazione, alla farmacia o al medico se offrono la trasmissione mediante codice di trasferimento.\n\n\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 2 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_2\">\"Attualmente la trasmissione mediante codice di trasferimento funziona solo per i test COVID. Qui trovi maggiori informazioni su come ottenere un certificato COVID dopo una vaccinazione:\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 3 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_3\">\"Se il servizio che effettua il test COVID o somministra la vaccinazione anti-COVID-19 offre la trasmissione mediante codice di trasferimento, puoi indicare il tuo già al momento della prenotazione del prelievo per il test o prima di ricevere la vaccinazione.\n\nPuoi creare un codice di trasferimento in qualsiasi momento nell’app «COVID Certificate» toccando il pulsante «Aggiungi» nella schermata iniziale o il simbolo «Più» in basso a destra. Poi tocca «Crea codice di trasferimento». L’app visualizza il codice a 9 cifre.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ Antwort 4 -->\n    <string name=\"wallet_transfer_code_faq_questions_answer_4\">\"No, un codice di trasferimento può essere utilizzato una volta sola. Se desideri ricevere più di un certificato, per esempio i certificati dei tuoi familiari, crea un nuovo codice per ciascun certificato.\"</string>\n    <string name=\"wallet_transfer_code_faq_works_title\">\"Il trasferimento funziona così\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 1 -->\n    <string name=\"wallet_transfer_code_faq_works_question_1\">\"Come sono protetti i miei dati durante il trasferimento?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 2 -->\n    <string name=\"wallet_transfer_code_faq_works_question_2\">\"Cosa posso fare se il certificato non arriva?\"</string>\n\n    <!-- Wallet: Tranfser Code FAQ 2 Frage 3 -->\n    <string name=\"wallet_transfer_code_faq_works_question_3\">\"Cosa accade in caso di risultato positivo del test?\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 1 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_1\">\"Il tuo certificato COVID è messo a disposizione per il trasferimento in forma criptata. Il codice di trasferimento assicura che soltanto la tua app sia in grado di riceverlo. I dati sono eliminati dal server immediatamente dopo il trasferimento.\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 2 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_2\">\"Non appena il certificato è stato generato dal laboratorio o dal centro di test, è disponibile per il trasferimento. Accertati che il tuo smartphone sia connesso a Internet per poter ricevere i certificati.\n\nSe comunque non dovessi ricevere il tuo certificato COVID, rivolgiti al servizio che ha effettuato il test (centro di test, farmacia, medico).\"</string>\n\n    <!-- Wallet: Transfer Code FAQ 2 Antwort 3 -->\n    <string name=\"wallet_transfer_code_faq_works_answer_3\">\"In caso di test antigenico positivo, non ricevi alcun certificato di test dal laboratorio. \n\nIn caso di test PCR positivo, ricevi un certificato COVID per persone guarite, valido a partire dall’undicesimo giorno dopo l’esecuzione del test.\"</string>\n\n    <!-- Wallet: Transfer Code erstellt Titel -->\n    <string name=\"wallet_transfer_code_code_created_title\">\"Il tuo codice di trasferimento è stato creato\"</string>\n\n    <!-- Wallet: Transfer-Code -->\n    <string name=\"wallet_transfer_code_title\">\"Codice di trasferimento\"</string>\n\n    <!-- Wallet: Transfer Code Erstelltm am {DATE} -->\n    <string name=\"wallet_transfer_code_createdat\">\"Creato il {DATE}\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte -->\n    <string name=\"wallet_transfer_code_next_steps\">\"Passaggi successivi\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte 1 -->\n    <string name=\"wallet_transfer_code_next_steps1\">\"Al momento dell'esecuzione del test comunica il codice alla farmacia, al centro di test o al medico.\"</string>\n\n    <!-- Wallet: Transfer Code Nächste Schritte 2 -->\n    <string name=\"wallet_transfer_code_next_steps2\">\"Se desideri ricevere più di un certificato, per esempio i certificati dei tuoi familiari, crea un nuovo codice per ciascun certificato.\"</string>\n\n    <!-- Wallet: Transfer Code Fertig Button -->\n    <string name=\"wallet_transfer_code_done_button\">\"Fatto\"</string>\n\n    <!-- Wallet: Transfer Code Card Titel -->\n    <string name=\"wallet_transfer_code_card_title\">\"Trasferimento\"</string>\n\n    <!-- Wallet: Transfer Code Staus Warten auf Transfer -->\n    <string name=\"wallet_transfer_code_state_waiting\">\"In attesa del trasferimento\"</string>\n\n    <!-- Wallet: Transfer Code Ablauf in 1 Tag -->\n    <string name=\"wallet_transfer_code_expire_singular\">\"Valido ancora 1 giorno\"</string>\n\n    <!-- Wallet: Transfer Code: Läuft ab in {DAYS} Tagen -->\n    <string name=\"wallet_transfer_code_expire_plural\">\"Valido ancora {DAYS} giorni\"</string>\n\n    <!-- Wallet: Transfer Code Status Abgelaufen -->\n    <string name=\"wallet_transfer_code_state_expired\">\"Trasferimento non riuscito\"</string>\n\n    <!-- Wallet: Transfer Code Alter Code Titel -->\n    <string name=\"wallet_transfer_code_old_code\">\"Codice scaduto\"</string>\n\n    <!-- Wallet: Transfer Code State Zuletzt aktualisiert {DATE} -->\n    <string name=\"wallet_transfer_code_state_updated\">\"Ultimo aggiornamento\n{DATE}\"</string>\n\n    <!-- Wallet: Transfer Code Kein Zertifikat mehr -->\n    <string name=\"wallet_transfer_code_state_no_certificate\">\"Con questo trasferimento non è più possibile ricevere alcun certificato.\"</string>\n\n    <!-- Wallet: Fehler Format des Zertifikat ungültig -->\n    <string name=\"wallet_error_invalid_format\">\"Formato del certificato \nnon valido\"</string>\n\n    <!-- Wallet: Fehler Format des Zertifikat ungültig Fett -->\n    <string name=\"wallet_error_invalid_format_bold\">\"non valido\"</string>\n\n    <!-- Verifier: Error Ungültiges Format -->\n    <string name=\"verifier_error_invalid_format\">\"Il formato del certificato COVID non è valido\"</string>\n\n    <!-- Homescreen Zertifikat: Offline Modus Text -->\n    <string name=\"wallet_homescreen_offline\">\"Modalità offline\"</string>\n\n    <!-- Wallet: Detail Offline Text -->\n    <string name=\"wallet_offline_description\">\"Per poter visualizzare l'effettiva validità, l'app deve essere regolarmente online\"</string>\n\n    <!-- Wallet: Retry Titel Offline -->\n    <string name=\"wallet_detail_offline_retry_title\">\"Impossibile verificare il certificato offline\"</string>\n\n    <!-- Wallet: Detail Netzwerkfehler Titel -->\n    <string name=\"wallet_detail_network_error_title\">\"Impossibile verificare il certificato\"</string>\n\n    <!-- Wallet: Detail Netzwerkfehler Text -->\n    <string name=\"wallet_detail_network_error_text\">\"Riprova più tardi\"</string>\n\n    <!-- Verifier: Titel Fehler wenn kein Internet -->\n    <string name=\"verifier_offline_error_title\">\"Impossibile verificare il certificato offline\"</string>\n\n    <!-- Verifier: Fehlertext wenn Offline bei Verifikation -->\n    <string name=\"verifier_offline_error_text\">\"Per aggiornare gli elenchi di verifica è necessaria una connessione a Internet\"</string>\n\n    <!-- Verifier: Fehler Titel bei Netzwerkfehler -->\n    <string name=\"verifier_network_error_title\">\"Verifica non riuscita\"</string>\n\n    <!-- Verifier: Fehler Text bei Netzwerkfehler -->\n    <string name=\"verifier_network_error_text\">\"Si è verificato un errore imprevisto\"</string>\n\n    <!-- Wallet: Text auf Zertifikat auf Homescreen bei Netzwerkfehler -->\n    <string name=\"wallet_homescreen_network_error\">\"Impossibile determinare la validità\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_1\">\"L’app verifica periodicamente se è disponibile un certificato COVID per il tuo codice di trasferimento.\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 2 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_2\">\"Non appena il certificato COVID è disponibile, viene visualizzato nell’app. Se hai attivato le notifiche, ne riceverai una dall’app.\"</string>\n\n    <!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n    <string name=\"wallet_transfer_code_faq_works_intro_3\">\"Il codice di trasferimento scade dopo {TRANSFER_CODE_VALIDITY} giorni. Poi l’app attende un eventuale trasferimento per altre 72 ore prima di considerare scaduto il codice.\"</string>\n\n    <!-- Wallet: Titel im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_title\">\"Consenti notifiche\"</string>\n\n    <!-- Wallet: Text im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_text\">\"L'app ti può informare non appena il certificato è pervenuto. Consenti all'app di inviarti le notifiche.\"</string>\n\n    <!-- Wallet: Button im Custom-Popup Notification Permission -->\n    <string name=\"wallet_notification_permission_button\">\"Avanti\"</string>\n\n    <!-- Externe URL im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_external_link\">\"https://ufsp-coronavirus.ch/certificato/come-si-ottiene-il-certificato-covid-e-come-si-impiega/\"</string>\n\n    <!-- Label der externen URL im \"So funktionierts\" Screen beim Scannen -->\n    <string name=\"wallet_scanner_howitworks_external_link_title\">\"Ulteriori informazioni\"</string>\n\n    <!-- Buttontitel im Screen, wo ein Code erstellt werden kann -->\n    <string name=\"wallet_transfer_code_create_code_button\">\"Crea codice\"</string>\n\n    <!-- Wallet: Transfer Code Ablauf in 1 Tag (fetter Teil) -->\n    <string name=\"wallet_transfer_code_expire_singular_bold\">\"1 giorno\"</string>\n\n    <!-- Wallet: Transfer Code: Läuft in {DAYS} Tagen ab (fetter Teil) -->\n    <string name=\"wallet_transfer_code_expire_plural_bold\">\"{DAYS} giorni\"</string>\n\n    <!-- Infotext bei erfolgreicher Prüfung (Blacklist) -->\n    <string name=\"verifier_verify_success_info_for_blacklist\">\"Non revocato\"</string>\n\n    <!-- Infotext bei erfolgreicher Prüfung (Zertifikat) -->\n    <string name=\"verifier_verify_success_info_for_certificate_valid\">\"Firma valida\"</string>\n\n    <!-- Teil der Fehlermeldung bei noch nicht/nicht mehr gültigem Zertifikat, der Bold sein sollte (ref. verifier_verifiy_error_expired und _notyetvalid) -->\n    <string name=\"verifier_verify_error_validity_range_bold\">\"Non conforme ai criteri di validità svizzeri.\"</string>\n\n    <!-- Wallet: Transfer Code Fehler Titel -->\n    <string name=\"wallet_transfer_code_error_title\">\"Non è stato possibile creare il codice di trasferimento.\"</string>\n\n    <!-- Wallet: Erstellen Fehler Titel -->\n    <string name=\"wallet_transfer_code_no_internet_title\">\"Nessuna connessione a Internet\"</string>\n\n    <!-- Wallet: Erstellen anderer Fehler Titel -->\n    <string name=\"wallet_transfer_code_generate_error_title\">\"Si è verificato un errore imprevisto.\"</string>\n\n    <!-- Wallet: Aktualisierung Transfer Code Fehler Titel -->\n    <string name=\"wallet_transfer_code_update_error_title\">\"Aggiornamento al momento non disponibile\"</string>\n\n    <!-- Wallet: Transfer Code Update Fehler Text -->\n    <string name=\"wallet_transfer_code_update_no_internet_error_text\">\"Per effettuare il trasferimento l'app deve essere on-line.\"</string>\n\n    <!-- Wallet Transfer Code Update Fehler Text -->\n    <string name=\"wallet_transfer_code_update_general_error_text\">\"Si è verificato un errore imprevisto. Riprova più tardi\"</string>\n\n    <!-- Wallet: Transfer Code Fehlertext bei Generieren -->\n    <string name=\"wallet_transfer_code_generate_error_text\">\"Riprova più tardi.\"</string>\n\n    <!-- Wallet: Transfer Code Fehlertext bei Generieren ohne Internet -->\n    <string name=\"wallet_transfer_code_generate_no_internet_error_text\">\"Per creare un codice di trasferimento l'app deve essere on-line.\"</string>\n\n    <!-- Wallet: Accessibility Name für Refresh Button -->\n    <string name=\"accessibility_refresh_button\">\"Aggiorna\"</string>\n    <string name=\"wallet_transfer_delete_confirm_text\">\"Eliminare il trasferimento?\"</string>\n    <string name=\"wallet_notification_transfer_title\">\"Trasferimento riuscito\"</string>\n    <string name=\"wallet_notification_transfer_text\">\"Il certificato COVID è pervenuto\"</string>\n    <string name=\"wallet_faq_questions_question_2_1\">\"Fino a quando è valido il certificato COVID?\"</string>\n    <string name=\"wallet_faq_questions_answer_2_1\">\"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. All’estero si applicano le regole di validità del rispettivo Paese. Pertanto, prima di partire, si informi consultando il sito web delle autorità del Paese di transito o di destinazione se nel Paese vigono ancora misure relative al certificato e, in caso affermativo, qual è la loro durata di validità. Sito web utile per viaggi all’estero:\"</string>\n    <string name=\"wallet_faq_questions_linktext_2_1\">\"Re-open EU (europa.eu)\"</string>\n    <string name=\"wallet_faq_questions_linkurl_2_1\">\"https://reopen.europa.eu/it/\"</string>\n    <string name=\"wallet_faq_works_question_3_1\">\"Posso utilizzare l’app anche offline?\"</string>\n    <string name=\"wallet_faq_works_answer_3_1\">\"È possibile utilizzare l’app senza connessione Internet. I certificati possono essere presentati, nonché scansionati e verificati dagli addetti anche in modalità offline.\"</string>\n    <string name=\"verifier_faq_works_question_2_1\">\"Quali sono attualmente i criteri di validità in Svizzera?\"</string>\n    <string name=\"verifier_faq_works_answer_2_1\">\"L’attuale durata di validità dei certificati COVID è consultabile qui:\"</string>\n    <string name=\"verifier_faq_works_linktext_2_1\">\"Ulteriori informazioni\"</string>\n    <string name=\"verifier_faq_works_linkurl_2_1\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"</string>\n    <string name=\"verifier_faq_works_question_7\">\"I certificati possono essere verificati anche offline?\"</string>\n    <string name=\"verifier_faq_works_answer_7\">\"In linea di principio, i certificati COVID possono essere verificati anche senza connessione Internet. A tale scopo, vengono scaricati regolarmente da un server centrale gli elenchi di verifica aggiornati. Questi elenchi salvati localmente non devono avere più di 48 ore. \n\nPer poter aggiornare gli elenchi di verifica, l’app deve essere aperta e collegata a Internet. L’aggiornamento avviene in modo immediato e automatico.\"</string>\n\n    <!-- Button zum QR Code Scannen öffnen -->\n    <string name=\"wallet_homescreen_qr_code_scannen\">\"Inquadrare il codice QR\"</string>\n\n    <!-- Button zum PDF importieren -->\n    <string name=\"wallet_homescreen_pdf_import\">\"Importa PDF\"</string>\n\n    <!-- Wallet: Titel im Transfer Code screen bei deaktiveren Notifications -->\n    <string name=\"wallet_notification_disabled_titel\">\"Suggerimento: Attiva notifiche\"</string>\n\n    <!-- Wallet: Button im Transfer Code screen bei deaktiveren Notifications der die Einstellungen öffnet -->\n    <string name=\"wallet_notification_disabled_button\">\"Attiva\"</string>\n\n    <!-- Titel für einen \"Nachweis\" (e.g. unvollständige Impfung) -->\n    <string name=\"wallet_certificate_evidence_title\">\"Documentazione\"</string>\n\n    <!-- Typenbezeichnung für eine unvollständige Impfung -->\n    <string name=\"wallet_certificate_type_incomplete_vaccine\">\"Vaccinazione incompleta\"</string>\n\n    <!-- Label für das Erstellungsdatum eines Nachweises (mit Platzhalter für Datum und Uhrzeit) -->\n    <string name=\"wallet_certificate_evidence_creation_date\">\"Documentazione emessa il\n{DATE}\"</string>\n    <string name=\"wallet_transfer_code_faq_questions_linktext_2\">\"Ulteriori informazioni\"</string>\n    <string name=\"wallet_transfer_code_faq_questions_linkurl_2\">\"https://ufsp-coronavirus.ch/certificato/come-si-ottiene-il-certificato-covid-e-come-si-impiega/\"</string>\n\n    <!-- Wallet: Zertifikat Light Button im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_certificate_light_button\">\"Certificato light\"</string>\n\n    <!-- Wallet: Export Button im Zertifikat Detail -->\n    <string name=\"wallet_certificate_detail_export_button\">\"Esporta\"</string>\n\n    <!-- Wallet: Zertifikat Light Title -->\n    <string name=\"wallet_certificate_light_detail_title\">\"Che cos'è un certificato light?\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Titel -->\n    <string name=\"wallet_certificate_light_detail_summary_title\">\"Certificato light\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 1 -->\n    <string name=\"wallet_certificate_light_detail_summary_1\">\"Può essere utilizzato solamente in Svizzera\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 2 -->\n    <string name=\"wallet_certificate_light_detail_summary_2\">\"Contiene solamente cognome, nome, data di nascita e una firma elettronica\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 3 -->\n    <string name=\"wallet_certificate_light_detail_summary_3\">\"Valido per {LIGHT_CERT_VALIDITY_IN_H} ore al massimo\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 4 -->\n    <string name=\"wallet_certificate_light_detail_summary_4\">\"La conversione del certificato COVID in certificato light avviene online.\"</string>\n\n    <!-- Wallet: Zertifikat Light Summary Punkt 5 -->\n    <string name=\"wallet_certificate_light_detail_summary_5\">\"Puoi disattivare il certificato light in qualsiasi momento per tornare al certificato COVID normale.\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivieren Button -->\n    <string name=\"wallet_certificate_light_detail_deactivate_button\">\"Disattiva\"</string>\n\n    <!-- Wallet: Zertifikat Light Deaktivieren Button -->\n    <string name=\"wallet_certificate_light_detail_activate_button\">\"Attiva\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Error -->\n    <string name=\"wallet_certificate_light_detail_activation_error\">\"Non è stato possibile attivare il certificato light\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Titel -->\n    <string name=\"wallet_certificate_light_detail_activation_network_error_text\">\"Per poter attivare il certificato light, l'app deve essere online.\"</string>\n\n    <!-- Info Text bei erfolgreicher Prüfung einers Zertifikate Light -->\n    <string name=\"verifier_verify_success_certificate_light_info\">\"Valido solo in Svizzera\ncon un documento di legittimazione\"</string>\n\n    <!-- Wallet: Zertifikat Export Title -->\n    <string name=\"wallet_certificate_export_title\">\"Esporta il certificato COVID\"</string>\n\n    <!-- Wallet: Zertifikat Export Erklärung Punkt 1 -->\n    <string name=\"wallet_certificate_export_summary_1\">\"Dai dati del tuo certificato COVID viene creato un PDF, che puoi stampare o condividere.\"</string>\n\n    <!-- Wallet: Zertifikat Export Erklärung Punkt 2 -->\n    <string name=\"wallet_certificate_export_summary_2\">\"Il documento PDF viene creato online.\"</string>\n\n    <!-- Wallet: Zertifikat Export Button -->\n    <string name=\"wallet_certificate_export_button\">\"Esporta\"</string>\n\n    <!-- Wallet: Zertifikat Export Error Title -->\n    <string name=\"wallet_certificate_export_detail_error_title\">\"Non è stato possibile creare il PDF\"</string>\n\n    <!-- Wallet: Zertifikat Export Netzwerk Error -->\n    <string name=\"wallet_certificate_export_detail_network_error_text\">\"Per poter creare il PDF, l'app deve essere online.\"</string>\n    <string name=\"accessibility_qr_code\">\"codice QR\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Title -->\n    <string name=\"wallet_certificate_light_detail_activation_network_error_title\">\"Nessuna connessione a Internet\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation General Fehler Text -->\n    <string name=\"wallet_certificate_light_detail_activation_general_error_text\">\"Riprova più tardi.\"</string>\n\n    <!-- Wallet: Zertifikat Light Aktivation General Fehler Titel -->\n    <string name=\"wallet_certificate_light_detail_activation_general_error_title\">\"Si è verificato un errore imprevisto.\"</string>\n\n    <!-- Wallet: Zertifikat Light Titel -->\n    <string name=\"wallet_certificate_light_title\">\"Certificato light\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Detail Title -->\n    <string name=\"wallet_certificate_export_detail_title\">\"Esporta\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Summary 1 -->\n    <string name=\"wallet_certificate_export_detail_summary_1\">\"Dai dati del tuo certificato COVID viene creato un PDF, che puoi stampare o condividere.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Summary 2 -->\n    <string name=\"wallet_certificate_export_detail_summary_2\">\"Il documento PDF viene creato online.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail Export Button -->\n    <string name=\"wallet_certificate_export_detail_export_button\">\"Esporta\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail Netzwerk Fehler -->\n    <string name=\"wallet_certificate_export_detail_network_error_title\">\"Nessuna connessione a Internet\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail General Fehler -->\n    <string name=\"wallet_certificate_export_detail_general_error_title\">\"Si è verificato un errore imprevisto.\"</string>\n\n    <!-- Wallet: Zertifikat Exportieren Datail General Fehler Text -->\n    <string name=\"wallet_certificate_export_detail_general_error_text\">\"Si è verificato un errore imprevisto. Riprova più tardi\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext 1 -->\n    <string name=\"wallet_certificate_light_detail_text_1\">\"Quando attivi il certificato light, dai dati del tuo certificato COVID viene creato un nuovo codice QR, il quale non contiene dati sanitari.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext 2 -->\n    <string name=\"wallet_certificate_light_detail_text_2\">\"Se valido, il certificato COVID normale può essere utilizzato senza limitazioni sia in Svizzera sia nell'UE/AELS, mentre il certificato light può essere utilizzato solamente in Svizzera. Per motivi legati alla protezione dei dati, il certificato light deve essere riattivato dopo {LIGHT_CERT_VALIDITY_IN_H} ore. Rispetto al certificato COVID normale non implica alcun diritto supplementare.\"</string>\n\n    <!-- Wallet: Zertifikat Light Erklärungstext Bold -->\n    <string name=\"wallet_certificate_light_detail_text_2_bold\">\"solamente deve alcun\"</string>\n\n    <!-- VoiceOver reads this when the expandable box is reduced -->\n    <string name=\"accessibility_expandable_box_reduced_state\">\"compressa\"</string>\n\n    <!-- VoiceOver reads this when the expandable box is expanded -->\n    <string name=\"accessibility_expandable_box_expanded_state\">\"espansa\"</string>\n\n    <!-- Header im Update Boarding-Screen -->\n    <string name=\"wallet_update_boarding_header\">\"Aggiornamento\"</string>\n\n    <!-- Titel im Zertifikat Light-Screen -->\n    <string name=\"wallet_update_boarding_certificate_light_title\">\"Certificato light\"</string>\n\n    <!-- Text im Zertifikat Light-Screen -->\n    <string name=\"wallet_update_boarding_certificate_light_text\">\"Con questo aggiornamento puoi far generare una copia del certificato senza dati sanitari per l'utilizzo in Svizzera. A tale scopo sono state aggiornate le condizioni d'uso e l'informativa sulla protezione dei dati, che sono considerate valide se si continua a utilizzare l'app. \"</string>\n\n    <!-- Header im Update Boarding-Screen -->\n    <string name=\"verifier_update_boarding_header\">\"Aggiornamento\"</string>\n\n    <!-- Titel im Zertifikat Light-Screen -->\n    <string name=\"verifier_update_boarding_certificate_light_title\">\"Certificato light\"</string>\n\n    <!-- Text im Zertifikat Light-Screen -->\n    <string name=\"verifier_update_boarding_certificate_light_text\">\"Con questo aggiornamento, nell'app puoi verificare anche la copia del certificato senza dati sanitari. A tale scopo sono state aggiornate le condizioni d'uso e l'informativa sulla protezione dei dati, che sono considerate valide se si continua a utilizzare l'app.\"</string>\n\n    <!-- Verifier: Die Gültigkeit eines Certificate Light ist abgelaufen -->\n    <string name=\"verifier_certificate_light_error_expired\">\"La validità del certificato \nè scaduta\"</string>\n\n    <!-- Wallet: Badge für Light-Zertifikate in Liste Zertifikate -->\n    <string name=\"wallet_certificate_list_light_certificate_badge\">\"Light\"</string>\n    <string name=\"wallet_faq_questions_question_6\">\"Che cos'è il certificato light?\"</string>\n\n    <!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n    <string name=\"wallet_faq_questions_answer_6\">\"L’app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo da utilizzare in Svizzera. Il certificato light conferma l’esistenza di un certificato valido, senza contenere dati sanitari.\n\nQuesto certificato con dati ridotti al minimo è un’alternativa al certificato COVID ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché i certificati COVID contengono determinati dati sanitari, come per esempio il vaccino somministrato o la data della vaccinazione, che possono anche essere visualizzati e dunque letti. Ciò può essere evitato mediante il certificato light.\n\nIl certificato light è disponibile unicamente in versione elettronica nell’app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il certificato light ha una validità massima di {LIGHT_CERT_VALIDITY_IN_H} ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le {LIGHT_CERT_VALIDITY_IN_H} ore, il certificato light può essere disattivato semplicemente.\n\"</string>\n    <string name=\"verifier_faq_works_question_8\">\"Che cos'è il certificato light?\"</string>\n\n    <!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n    <string name=\"verifier_faq_works_answer_8\">\"L'app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo. Il certificato light indica semplicemente l'esistenza di un certificato valido, ma non contiene i dati sanitari.\n\nIl certificato con dati ridotti al minimo è un’alternativa al certificato COVID-19 ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché le applicazioni autosviluppate per verificare i certificati COVID-19 consentirebbero a terzi di visualizzare i dati sanitari, ad esempio il vaccino somministrato o la data della vaccinazione. Ciò può essere evitato mediante il «certificato light».\n\nIl «certificato light» è disponibile unicamente in versione elettronica nell'app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il «certificato light» ha una validità massima di {LIGHT_CERT_VALIDITY_IN_H} ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le {LIGHT_CERT_VALIDITY_IN_H} ore, il certificato light può essere disattivato semplicemente.\"</string>\n    <string name=\"verifier_faq_works_question_9\">\"Come si fa a trasformare un certificato light nuovamente in un certificato COVID conforme all’UE/AELS?\"</string>\n    <string name=\"verifier_faq_works_answer_9\">\"Il certificato light può essere disattivato dal titolare in qualsiasi momento nell’app «COVID Certificate», dopodiché il certificato COVID di base è di nuovo disponibile.\"</string>\n\n    <!-- Wallet: Light Zertifikat Accessibility Gültigkeits Label {TIMESPAN} wird ersetzt durch zB. 5 Stunden 3 Minuten -->\n    <string name=\"wallet_accessibility_light_certificate_expiration_timer\">\"Valido ancora {TIMESPAN}\"</string>\n\n    <!-- Toast Text wenn ein Transfer Code durch Klicken kopiert wurde -->\n    <string name=\"wallet_transfer_code_copied\">\"Codice di trasferimento copiato\"</string>\n    <string name=\"wallet_faq_works_question_2_1\">\"Cos'è un codice di trasferimento?\"</string>\n    <string name=\"wallet_faq_works_answer_2_1\">\"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app dopo un test COVID o una vaccinazione anti-COVID-19.\"</string>\n    <string name=\"wallet_faq_works_question_5_1\">\"Ho il certificato COVID esclusivamente in formato elettronico nell’app. Come posso ottenerne uno in formato PDF o cartaceo?\"</string>\n    <string name=\"wallet_faq_works_answer_5_1\">\"Nella vista di dettaglio del certificato COVID elettronico dell’app «COVID Certificate» è disponibile la funzione «Esporta», con la quale è possibile creare un PDF, salvarlo e stamparlo.\"</string>\n\n    <!-- wallet android app google play store deep link -->\n    <string name=\"wallet_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.wallet\"</string>\n\n    <!-- verifer android app google play store deep link -->\n    <string name=\"verifier_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.verifier\"</string>\n\n    <!-- Wallet: Titel Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n    <string name=\"wallet_certificate_light_rate_limit_title\">\"È stato raggiunto il limite di 24 ore\"</string>\n\n    <!-- Wallet: Text Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n    <string name=\"wallet_certificate_light_rate_limit_text\">\"Il certificato light è già stato attivato troppo spesso nelle ultime 24 ore\"</string>\n    <string name=\"error_file_import_title\">\"Importazione non riuscita\"</string>\n    <string name=\"error_file_import_text\">\"O il file non contiene alcun codice QR valido o non è stato possibile riconoscere il codice QR\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten titel -->\n    <string name=\"wallet_transfer_code_unexpected_error_title\">\"Errore imprevisto\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten text -->\n    <string name=\"wallet_transfer_code_unexpected_error_text\">\"Contattare il supporto\"</string>\n\n    <!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten telefon nummer -->\n    <string name=\"wallet_transfer_code_unexpected_error_phone_number\">\"+41 58 466 07 99\"</string>\n    <string name=\"error_corrupt_sharedprefs_title\">\"Errore di decodificazione\"</string>\n    <string name=\"error_corrupt_sharedprefs_text\">\"Una memoria dell'app non ha potuto essere decodificata. Per continuare a utilizzare l'app è necessario eliminare e ricreare la memoria. Questa operazione comporta la perdita dei dati.\"</string>\n\n    <!-- Einstellungen: Titel -->\n    <string name=\"settings_title\">\"Impostazioni\"</string>\n\n    <!-- Einstellungen: Titel Sprachauswahl -->\n    <string name=\"language_title\">\"Lingua\"</string>\n\n    <!-- Information about the date format (always english) -->\n    <string name=\"wallet_certificate_detail_date_format_info\">\"Date format used: dd.mm.yyyy\"</string>\n    <string name=\"wallet_certificate_test_holder_and_name\">\"Fabbricante e Nome\"</string>\n\n    <!-- Wallet: Fehler-Titel falls Uhrzeit falsch eingestellt bei Transfer-Code -->\n    <string name=\"wallet_transfer_code_time_inconsistency_title\">\"Errore nell’ora\"</string>\n\n    <!-- Wallet: Transfer-Code Fehler-Text, falls Zeit falsch eingestellt -->\n    <string name=\"wallet_transfer_code_time_inconsistency_text\">\"Per fare in modo che i codici di trasferimento funzionino, l’ora deve essere impostata correttamente. Reimpostare l’ora e riprovare.\"</string>\n\n    <!-- Toast Text wenn ein UVCI durch Klicken kopiert wurde -->\n    <string name=\"wallet_uvci_copied\">\"UVCI copiato\"</string>\n\n    <!-- canton name ag -->\n    <string name=\"vaccination_booking_ag_name\">\"Argovia\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ag -->\n    <string name=\"vaccination_booking_ag_url\">\"https://www.ag.ch/coronavirus-impfung\"</string>\n\n    <!-- canton name ar -->\n    <string name=\"vaccination_booking_ar_name\">\"Appenzello Esterno\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ar -->\n    <string name=\"vaccination_booking_ar_url\">\"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"</string>\n\n    <!-- canton name ai -->\n    <string name=\"vaccination_booking_ai_name\">\"Appenzello Interno\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ai -->\n    <string name=\"vaccination_booking_ai_url\">\"https://www.ai.ch/coronavirus-impfung\"</string>\n\n    <!-- canton name bl -->\n    <string name=\"vaccination_booking_bl_name\">\"Basilea Campagna\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton bl -->\n    <string name=\"vaccination_booking_bl_url\">\"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/italienisch-italiano\"</string>\n\n    <!-- canton name bs -->\n    <string name=\"vaccination_booking_bs_name\">\"Basilea Città\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton bs -->\n    <string name=\"vaccination_booking_bs_url\">\"http://www.coronaimpfzentrumbasel.ch\"</string>\n\n    <!-- canton name be -->\n    <string name=\"vaccination_booking_be_name\">\"Berna\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton be -->\n    <string name=\"vaccination_booking_be_url\">\"http://www.be.ch/corona-impfung\"</string>\n\n    <!-- canton name fr -->\n    <string name=\"vaccination_booking_fr_name\">\"Friburgo\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton fr -->\n    <string name=\"vaccination_booking_fr_url\">\"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"</string>\n\n    <!-- canton name ge -->\n    <string name=\"vaccination_booking_ge_name\">\"Ginevra\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ge -->\n    <string name=\"vaccination_booking_ge_url\">\"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"</string>\n\n    <!-- canton name gl -->\n    <string name=\"vaccination_booking_gl_name\">\"Glarona\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton gl -->\n    <string name=\"vaccination_booking_gl_url\">\"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"</string>\n\n    <!-- canton name gr -->\n    <string name=\"vaccination_booking_gr_name\">\"Grigioni\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton gr -->\n    <string name=\"vaccination_booking_gr_url\">\"https://www.gr.ch/IT/istituzioni/amministrazione/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"</string>\n\n    <!-- canton name ju -->\n    <string name=\"vaccination_booking_ju_name\">\"Giura\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ju -->\n    <string name=\"vaccination_booking_ju_url\">\"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"</string>\n\n    <!-- canton name lu -->\n    <string name=\"vaccination_booking_lu_name\">\"Lucerna\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton lu -->\n    <string name=\"vaccination_booking_lu_url\">\"http://www.lu.ch/covid_impfung\"</string>\n\n    <!-- canton name ne -->\n    <string name=\"vaccination_booking_ne_name\">\"Neuchâtel\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ne -->\n    <string name=\"vaccination_booking_ne_url\">\"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"</string>\n\n    <!-- canton name nw -->\n    <string name=\"vaccination_booking_nw_name\">\"Nidvaldo\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton nw -->\n    <string name=\"vaccination_booking_nw_url\">\"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"</string>\n\n    <!-- canton name ow -->\n    <string name=\"vaccination_booking_ow_name\">\"Obvaldo\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ow -->\n    <string name=\"vaccination_booking_ow_url\">\"https://www.ow.ch/dienstleistungen/7129\"</string>\n\n    <!-- canton name sg -->\n    <string name=\"vaccination_booking_sg_name\">\"San Gallo\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sg -->\n    <string name=\"vaccination_booking_sg_url\">\"https://www.sg.ch/coronavirus/impfen\"</string>\n\n    <!-- canton name sh -->\n    <string name=\"vaccination_booking_sh_name\">\"Sciaffusa\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sh -->\n    <string name=\"vaccination_booking_sh_url\">\"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"</string>\n\n    <!-- canton name sz -->\n    <string name=\"vaccination_booking_sz_name\">\"Svitto\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton sz -->\n    <string name=\"vaccination_booking_sz_url\">\"https://www.sz.ch/corona-impfen\"</string>\n\n    <!-- canton name so -->\n    <string name=\"vaccination_booking_so_name\">\"Soletta\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton so -->\n    <string name=\"vaccination_booking_so_url\">\"https://so.ch/coronaimpfung\"</string>\n\n    <!-- canton name tg -->\n    <string name=\"vaccination_booking_tg_name\">\"Turgovia\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton tg -->\n    <string name=\"vaccination_booking_tg_url\">\"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"</string>\n\n    <!-- canton name ti -->\n    <string name=\"vaccination_booking_ti_name\">\"Ticino\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ti -->\n    <string name=\"vaccination_booking_ti_url\">\"http://www.ti.ch/vaccinazione\"</string>\n\n    <!-- canton name ur -->\n    <string name=\"vaccination_booking_ur_name\">\"Uri\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton ur -->\n    <string name=\"vaccination_booking_ur_url\">\"https://www.ur.ch/themen/3673\"</string>\n\n    <!-- canton name vs -->\n    <string name=\"vaccination_booking_vs_name\">\"Vallese\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton vs -->\n    <string name=\"vaccination_booking_vs_url\">\"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"</string>\n\n    <!-- canton name vd -->\n    <string name=\"vaccination_booking_vd_name\">\"Vaud\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton vd -->\n    <string name=\"vaccination_booking_vd_url\">\"https://vd.ch/coronavirus-vaccins\"</string>\n\n    <!-- canton name zg -->\n    <string name=\"vaccination_booking_zg_name\">\"Zugo\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton zg -->\n    <string name=\"vaccination_booking_zg_url\">\"https://www.corona-impfung-zug.ch/\"</string>\n\n    <!-- canton name zh -->\n    <string name=\"vaccination_booking_zh_name\">\"Zurigo\"</string>\n\n    <!-- url for booking an appointment for vaccination for canton zh -->\n    <string name=\"vaccination_booking_zh_url\">\"http://www.zh.ch/coronaimpfung\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_2\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_2\">\"Con la vaccinazione anti-COVID-19 puoi viaggiare senza preoccupazioni nella maggior parte dei Paesi.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_3\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_3\">\"Con la vaccinazione anti-COVID-19 puoi proteggerti dalla malattia e da un eventuale decorso grave.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_4\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_4\">\"Con la vaccinazione anti-COVID-19 puoi immunizzarti in modo sicuro.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_5\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_5\">\"Con la vaccinazione anti-COVID-19 puoi contribuire a ridurre il carico di malattia.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_6\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_6\">\"Con la vaccinazione anti-COVID-19 puoi contribuire a combattere le ripercussioni della pandemia.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_7\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_7\">\"Con la vaccinazione anti-COVID-19 puoi evitare le conseguenze a lungo termine di una malattia COVID-19.\"</string>\n\n    <!-- vaccination hint box title -->\n    <string name=\"vaccination_hint_title_8\">\"Fatti vaccinare ora!\"</string>\n\n    <!-- vaccination hint box text -->\n    <string name=\"vaccination_hint_text_8\">\"Con la vaccinazione anti-COVID-19 puoi contribuire a sgravare il sistema sanitario.\"</string>\n\n    <!-- vaccination booking info screen title -->\n    <string name=\"vaccination_booking_info_title\">\"Prendi appuntamento per la vaccinazione nelle tue vicinanze\"</string>\n\n    <!-- vaccination booking info screen text -->\n    <string name=\"vaccination_booking_info_text\">\"Per esempio potresti farti vaccinare in uno di questi luoghi nelle tue vicinanze:\n\n- in centri di vaccinazione specifici\n- negli ospedali\n- dal tuo medico di famiglia\n- nelle farmacie che vaccinano\n\nMolti di essi offrono anche vaccinazioni libere senza appuntamento.\"</string>\n\n    <!-- vaccination booking info screen info box at bottom -->\n    <string name=\"vaccination_booking_info_info\">\"La vaccinazione anti-COVID-19 è raccomandata per le persone a partire dai 5 anni.\"</string>\n\n    <!-- Header on vaccination appointment screen -->\n    <string name=\"vaccination_appointment_header\">\"Appuntamento per la vaccinazione\"</string>\n\n    <!-- Book vaccination appointment button title on homescreen -->\n    <string name=\"vaccination_homescreen_button_title\">\"Prendi appuntamento per la vaccinazione\"</string>\n\n    <!-- Choose your canton title in vaccination appointment screen -->\n    <string name=\"vaccination_choose_your_canton\">\"Scegli il Cantone\"</string>\n\n    <!-- Link title for more information about the vaccine -->\n    <string name=\"vaccination_more_information_title\">\"Ulteriori informazioni sulla vaccinazione anti-COVID-19\"</string>\n\n    <!-- Button text for information about the vaccine at the bottom of the certificate -->\n    <string name=\"vaccination_information_button_in_certificate\">\"Informazioni sulla vaccinazione\"</string>\n\n    <!-- Vaccination Booking Info URL Link -->\n    <string name=\"vaccination_booking_info_url\">\"https://ufsp-coronavirus.ch/vaccinazione/\"</string>\n\n    <!-- Show information if special hardware detected  -->\n    <string name=\"verifier_qr_scanner_external_hardware_detected\">\"Rilevato uno scanner hardware esterno\"</string>\n\n    <!-- Error popup reset button text -->\n    <string name=\"error_decryption_reset_button\">\"Reset\"</string>\n\n    <!-- Text Certificate Could not be loaded {ERROR_CODE} gets replaces with the error code -->\n    <string name=\"error_decryption_text\">\"I certificati non possono essere caricati\n\nCode: {ERROR_CODE}\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_title\">\"Guarigione (Anticorpi)\"</string>\n    <string name=\"wallet_time_inconsistency_error_title\">\"Impossibile effettuare la verifica\"</string>\n    <string name=\"wallet_time_inconsistency_error_text\">\"Impostazione di data, ora o fuso orario del dispositivo non corretta.\"</string>\n    <string name=\"wallet_info_box_certificate_scan_title\">\"Si vogliono verificare certificati?\"</string>\n    <string name=\"wallet_info_box_certificate_scan_text\">\"Per una verifica più rapida e conforme alla protezione dei dati, utilizzare l'app \\\"COVID Certificate Check\\\"\"</string>\n    <string name=\"wallet_info_box_certificate_scan_button_check_app\">\"All'app Check\"</string>\n    <string name=\"wallet_info_box_certificate_scan_close\">\"Capito\"</string>\n    <string name=\"wallet_info_box_certificate_scan_text_bold\">\"«COVID Certificate Check»-App.\"</string>\n    <string name=\"wallet_only_valid_in_switzerland\">\"Non valido al di fuori della Svizzera\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_befund_label\">\"Risultati\"</string>\n    <string name=\"covid_certificate_sero_positiv_test_befund_value\">\"Sufficiente\"</string>\n\n    <!-- Ausnahme Test Zertifikat Detail: Titel für Startdatum des Attests -->\n    <string name=\"wallet_certificate_ausnahme_test_attest_start_date\">\"Inizio della validità\"</string>\n\n    <!-- Ausnahme Test Zertifikat Detail: Titel für verantwortliche Stelle für Ausstellung -->\n    <string name=\"wallet_certificate_ausnahme_responsible_issuer\">\"Per il servizio responsabile dell'emissione\"</string>\n\n    <!-- Testname für Schweizer Ausnahme Zertifikat für Nicht-Testbare und Nicht-Impfbare Personen -->\n    <string name=\"covid_certificate_ch_ausnahme_test_title\">\"Certificato di deroga\"</string>\n    <string name=\"infobox_update_title\">\"È disponibile una nuova versione\"</string>\n    <string name=\"infobox_update_text\">\"Caricare la nuova versione dellʼapp.\"</string>\n    <string name=\"infobox_update_button\">\"Aggiorna\"</string>\n\n    <!-- vaccination booking  screen info about Impf-Check (impf-check.ch) -->\n    <string name=\"vaccination_impf_check_info_text\">\"Il COVID-19 Vac-Check fornisce informazioni sulle prime vaccinazioni, sulle vaccinazioni di richiamo e ti indirizza verso il punto di contatto del tuo Cantone.\"</string>\n\n    <!-- button title for link to impf-check.ch -->\n    <string name=\"vaccination_impf_check_action\">\"Vai al COVID-19 Vac-Check\"</string>\n\n    <!-- URL to ImpfCheck -->\n    <string name=\"vaccination_impf_check_url\">\"https://covid19-vac-check.ch/\"</string>\n    <string name=\"vaccination_impf_check_title\">\"Prendi appuntamento ora\"</string>\n    <string name=\"verifier_faq_works_linktext_1\">\"Video esplicativo\"</string>\n    <string name=\"verifier_faq_works_linkurl_1\">\"https://youtu.be/b4JXnfr2Ugg\"</string>\n\n    <!-- Title of button to choose verification mode -->\n    <string name=\"verifier_choose_mode_button_title\">\"Scegliere\"</string>\n\n    <!-- 👍 -->\n    <!-- Verifier app scan button with indication of mode -->\n    <string name=\"verifier_homescreen_scan_button_with_mode\">\"Verifica ({MODE})\"</string>\n\n    <!-- error if scan was performed with a no longer existing mode -->\n    <string name=\"verifier_error_mode_no_longer_exists\">\"La modalità di verifica selezionata non esiste più.\"</string>\n\n    <!-- 👍 -->\n    <!-- title for info pop-up in wallet app describing the validation states for the different check modes -->\n    <string name=\"wallet_check_mode_info_title\">\"Info\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 2G OK state -->\n    <string name=\"wallet_check_mode_info_2g_ok_text\">\"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate o guarite.\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 2G NOT OK state -->\n    <string name=\"wallet_check_mode_info_2g_not_ok_text\">\"L’accesso non è consentito.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> display name of check mode 3G -->\n    <string name=\"verifier_check_mode_info_3g_title\">\"3G\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> display name of check mode 2G -->\n    <string name=\"verifier_check_mode_info_2g_title\">\"2G\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_1\">\"Per le strutture e le manifestazioni in cui si applica la regola 3G.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_2\">\"In questa modalità sono accettati i certificati COVID per persone vaccinate, guartite o testate negative.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n    <string name=\"verifier_check_mode_info_3g_text_3\">\"I certificati light possono essere verificati.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_1\">\"Per le strutture e le manifestazioni in cui si applica la regola 2G.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_2\">\"In questa modalità sono accettati i certificati COVID per persone vaccinate o guartite.\"</string>\n\n    <!-- 👍 -->\n    <!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n    <string name=\"verifier_check_mode_info_2g_text_3\">\"Questa modalità non permette di verificare i certificati light.\"</string>\n\n    <!-- 👍 -->\n    <!-- Verifier: Modus auswählen Titel -->\n    <string name=\"verifier_mode_title\">\"Modalità di verifica\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 3G OK state -->\n    <string name=\"wallet_check_mode_info_3g_ok_text\">\"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate, guarite o testate negative.\"</string>\n\n    <!-- 👍 -->\n    <!-- text for info pop-up in wallet app describing 3G NOT OK state -->\n    <string name=\"wallet_check_mode_info_3g_not_ok_text\">\"L’accesso non è consentito.\"</string>\n\n    <!-- Titel für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n    <string name=\"verifier_verify_light_not_supported_by_mode_title\">\"Il certificato è di tipo «light». Questo tipo di certificato non può essere verificato nella modalità {MODUS}.\"</string>\n\n    <!-- Text für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n    <string name=\"verifier_verify_light_not_supported_by_mode_text\">\"Per verificare il certificato è necessario disattivare il certificato light e tornare al certificato di base.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n    <string name=\"verifier_check_mode_info_unselected_text_1\">\"Selezionare la modalità in cui verificare i certificati COVID.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n    <string name=\"verifier_check_mode_info_unselected_text_2\">\"La modalità di verifica può essere cambiata in qualsiasi momento.\"</string>\n\n    <!-- check app -> check mode select pop-up -> display name of check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_title\">\"2G+\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_1\">\"Per strutture e manifestazioni cui si applica la regola 2G+.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_2\">\"Oltre a un certificato di vaccinazione o di guarigione COVID è richiesto un certificato di test valido, che deve essere verificato separatamente.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_3\">\"Eccezioni: Persone per le quali sono trascorsi al massimo 120 giorni dalla vaccinazione completa, dalla vaccinazione di richiamo o dalla guarigione.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n    <string name=\"verifier_check_mode_info_2g_plus_text_4\">\"In questa modalità non è possibile verificare i certificati light.\"</string>\n\n    <!-- 2G+: Anzeige, dass Zertifikat 2G erfüllt -->\n    <string name=\"verifier_2g_plus_success2g\">\"Certificato COVID valido secondo la regola 2G\"</string>\n\n    <!-- 2G+: Info, dass Zertifikat + erfüllt -->\n    <string name=\"verifier_2g_plus_successplus\">\"Certificato di test COVID valido\"</string>\n\n    <!-- Verifier: 2G+ Info, dass noch + nötig -->\n    <string name=\"verifier_2g_plus_infoplus\">\"Per la regola 2G+ accettato solo previa verifica di un certificato di test valido.\"</string>\n\n    <!-- Verifier: 2G+ Info dass noch 2G nötig -->\n    <string name=\"verifier_2g_plus_info2g\">\"Per la regola 2G+ accettato solo previa verifica di un certificato di vaccinazione o di guarigione.\"</string>\n\n    <!-- Prüfung fehlgeschlagen App update nötig -->\n    <string name=\"verifier_error_app_store_text\">\"Per la verifica di questo tipo di certificato COVID è necessario scaricare la versione più recente dell’app «COVID Certificate Check». Aggiornare l’app e ripetere la procedura di verifica.\"</string>\n\n    <!-- Button Text für Prüfung fehlgeschlagen App update nötig  -->\n    <string name=\"verifier_error_app_store_button\">\"All'App Store\"</string>\n\n    <!-- check app -> check mode select pop-up -> display name of check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_title\">\"Certificato di test\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_1\">\"Per i contesti in cui è richiesto un certificato di test valido.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_2\">\"In questa modalità sono accettati i certificati COVID rilasciati alle persone risultate negative a un test PCR o a un test antigenico rapido.\"</string>\n\n    <!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n    <string name=\"verifier_check_mode_info_test_cert_text_3\">\"In questa modalità non è possibile verificare i certificati light.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_1\">\"Il pulsante «Aggiorna» è stato eliminato.\"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_2\">\"Se il certificato è scaduto o se non è valido per motivi tecnici, l’informazione compare direttamente nell’app. \"</string>\n\n    <!-- wallet refresh button removal info box text -->\n    <string name=\"wallet_refresh_button_info_text_3\">\"I certificati COVID devono essere verificati utilizzando l’app «COVID Certificate Check».\"</string>\n\n    <!-- wallet refresh button removal info box fat title above text 3 -->\n    <string name=\"wallet_refresh_button_info_fat_title_3\">\"Per le persone incaricate della verifica\"</string>\n\n    <!-- wallet refresh button removal info box link text -->\n    <string name=\"wallet_refresh_button_info_link_text\">\"Per saperne di più\"</string>\n\n    <!-- wallet refresh button removal info box link url -->\n    <string name=\"wallet_refresh_button_info_link_url\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1358421103\"</string>\n\n    <!-- text for info pop-up in wallet app describing 2G+ OK state -->\n    <string name=\"wallet_check_mode_info_2g_plus_ok_text\">\"L’accesso a strutture e manifestazioni è consentito alle persone per le quali sono trascorsi al massimo 120 giorni dal completamento del ciclo vaccinale, dalla somministrazione della dose di richiamo o dalla guarigione (sulla base di un test PCR). In questo caso non è necessario un ulteriore certificato di test.\"</string>\n\n    <!-- text for info pop-up in wallet app describing 2G+ NOT OK state -->\n    <string name=\"wallet_check_mode_info_2g_plus_not_ok_text\">\"Oltre al certificato di vaccinazione o di guarigione, per l’accesso a strutture e manifestazioni è necessario presentare anche il risultato di un test negativo.\"</string>\n\n    <!-- wallet refresh button removal info box title -->\n    <string name=\"wallet_refresh_button_info_title\">\"Informazione\"</string>\n\n    <!-- Ausnahme-Zertifikat: Medizinisches Attest ausgestellt in -->\n    <string name=\"wallet_certificate_ausnahme_issued_country\">\"Certificato medico rilasciato in\"</string>\n\n    <!-- Wallet: Hinweis im Zertifikat Detail für Ausnahme Zertifikat -->\n    <string name=\"wallet_certificate_detail_note_ausnahme\">\"La presente attestazione non costituisce un documento di viaggio. \n&lt;br /&gt;&lt;br /&gt;\nQuesto certificato ha soltanto una validità temporanea. L'applicazione «COVID Certificate» consente di verificare in qualsiasi momento l'attuale durata di validità in Svizzera.\"</string>\n\n    <!-- Wallet: Ausnahme Label für Liste -->\n    <string name=\"covid_certificate_ch_ausnahme_list_label\">\"Eccezione\"</string>\n\n    <!-- Wallet: Titel von einem positivem Antigen-Test -->\n    <string name=\"covid_certificate_antigen_positive_test\">\"Recovery (Antigen Rapid Test)\"</string>\n\n    <!-- Wallet: Antigen Positive Titel von Testdatum -->\n    <string name=\"wallet_certificate_antigen_positive_date\">\"Data del primo risultato positivo\"</string>\n\n    <!-- Wallet: Blaue Box für positiven Antigen-Test -->\n    <string name=\"wallet_certificate_detail_note_positive_antigen\">\"La presente attestazione non costituisce un documento di viaggio.\n&lt;br /&gt;&lt;br /&gt;\nQuesto certificato ha soltanto una validità temporanea. L'applicazione «COVID Certificate» consente di verificare in qualsiasi momento l'attuale durata di validità in Svizzera.\"</string>\n\n    <!-- banner title on homescreen. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_homescreen_title\">\"Scadenza imminente\"</string>\n\n    <!-- banner title in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_title\">\"Info\"</string>\n\n    <!-- banner text in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_text\">\"Questo certificato sta per scadere.\"</string>\n\n    <!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_more_info\">\"Per saperne di più\"</string>\n\n    <!-- title for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_title\">\"Info\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text1\"></string>\n\n    <!-- bold text box for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_bold_text\">\"Questo certificato COVID è valido ancora per pochi giorni. Si prega di tenere conto della data di scadenza indicata sullo stesso.\"</string>\n\n    <!-- link text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_text\">\"E ora?\"</string>\n\n    <!-- link url for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_url\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/cosa-devo-fare-se-il-mio-certificato-covid-sta-scadere-secondo-le-regole-di\"</string>\n\n    <!-- banner title on homescreen. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_homescreen_title\">\"Durata di validità abbreviata\"</string>\n\n    <!-- banner title in certificate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_title\">\"Durata di validità abbreviata\"</string>\n\n    <!-- banner text in certificate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_text\">\"Questo certificato sta per scadere.\"</string>\n\n    <!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_detail_more_info\">\"Per saperne di più\"</string>\n\n    <!-- title for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_title\">\"Info\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_text1\">\"Dal 31 gennaio 2022 in Svizzera vige una durata di validità del certificato COVID per persone vaccinate o guarite di 270 anziché di 365 giorni. Questo certificato è interessato direttamente dall’abbreviazione della durata di validità:\"</string>\n\n    <!-- bold text box for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_bold_text\">\"La scadenza della durata di validità di questo certificato COVID è il 31 gennaio 2022. Pertanto il certificato non è più utilizzabile dopo quella data.\"</string>\n\n    <!-- link text for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_text\">\"Per saperne di più\"</string>\n\n    <!-- link url for pop up. case: certificate will be invalid at time of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_url\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-la-durata-di-validita-dei-certificati-di-vaccinazione-o-di-guarigione-e\"</string>\n\n    <!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n    <string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text2\"></string>\n    <string name=\"infobox_generic_title\">\"Mettete al sicuro il vostro certificato!\"</string>\n    <string name=\"infobox_generic_text\">\"Se cancellate l’app, cambiate o smarrite il vostro smartphone, anche i vostri certificati COVID andranno persi. \nConservate quindi i vostri certificati anche al di fuori dell’app esportandoli in formato PDF.\"</string>\n    <string name=\"infobox_generic_button\">\"Per maggiori informazioni\"</string>\n    <string name=\"infobox_generic_url_android\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/ho-il-certificato-covid-esclusivamente-formato-elettronico-nellapp-covid\"</string>\n    <string name=\"infobox_generic_url_ios\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/ho-il-certificato-covid-esclusivamente-formato-elettronico-nellapp-covid\"</string>\n\n    <!-- accessibilityLabel for the \"1\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon1\">\"Primo\"</string>\n\n    <!-- accessibilityLabel for the \"2\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon2\">\"Secondo\"</string>\n\n    <!-- accessibilityLabel for the \"3\"-icon -->\n    <string name=\"wallet_scanner_how_it_works_accessibility_icon3\">\"Terzo\"</string>\n\n    <!-- Reise-Check: Label des Buttons um Gültigkeit im Ausland zu prüfen -->\n    <string name=\"wallet_foreign_rules_check_button\">\"Validità all'estero\"</string>\n\n    <!-- Reise-Check: Titel des Reise-Check Screens -->\n    <string name=\"wallet_foreign_rules_check_title\">\"Validità per i viaggi all’estero\"</string>\n\n    <!-- Reise-Check: Untertitel des Reise-Check Screens -->\n    <string name=\"wallet_foreign_rules_check_subtitle\">\"Prima di un viaggio all’estero, informatevi sulla validità del vostro certificato al momento dell’entrata nel Paese di destinazione.  \"</string>\n\n    <!-- Reise-Check: Titel der Länder- und Datumsauswahl -->\n    <string name=\"wallet_foreign_rules_check_form_title\">\"Verificare per:\"</string>\n\n    <!-- Reise-Check: Label des Länder Eingabefeldes -->\n    <string name=\"wallet_foreign_rules_check_country_label\">\"Paese:\"</string>\n\n    <!-- Reise-Check: Wert wenn kein Land ausgewählt -->\n    <string name=\"wallet_foreign_rules_check_country_empty_label\">\"Seleziona\"</string>\n\n    <!-- Reise-Check: Label des Datum Eingabefeldes -->\n    <string name=\"wallet_foreign_rules_check_date_label\">\"Entrata in data:\"</string>\n\n    <!-- Reise-Check: Fehlermeldung wenn Datum in der Vergangenheit liegt -->\n    <string name=\"wallet_foreign_rules_check_date_in_past_error\">\"L’ora indicata è già passat\"</string>\n\n    <!-- Reise-Check: Titel des Hinweise Abschnittes -->\n    <string name=\"wallet_foreign_rules_check_hints_title\">\"Avvertenze\"</string>\n\n    <!-- Reise-Check: Label für den Mehr Informationen Button -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_label\">\"Maggiori informazioni sono disponibili su\"</string>\n\n    <!-- Reise-Check: Prüfstatus wenn noch kein Land ausgewählt wurde -->\n    <string name=\"wallet_foreign_rules_check_state_empty\">\"Vogliate scegliere un Paese e una data di entrata.\"</string>\n\n    <!-- Reise-Check: Titel des Auswahldialoges für das Land -->\n    <string name=\"wallet_foreign_rules_check_country_picker_title\">\"Seleziona un Paese\"</string>\n\n    <!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat gültig ist -->\n    <string name=\"wallet_foreign_rules_check_state_valid\">\"Valido per l’entrata in:\"</string>\n\n    <!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat ungültig ist -->\n    <string name=\"wallet_foreign_rules_check_state_invalid\">\"Non valido per l’entrata in:\"</string>\n\n    <!-- Reise-Check: Zweite Zeile des Prüfstatus wenn Zertifikat (un-)gültig ist. {COUNTRY} und {DATE} nicht übersetzen -->\n    <string name=\"wallet_foreign_rules_check_state_country_and_date\">\"{COUNTRY}, {DATE}\"</string>\n\n    <!-- Error-Titel falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n    <string name=\"wallet_foreign_rules_check_error_title\">\"Si è verificato un errore durante il caricamento dei Paesi disponibili\"</string>\n\n    <!-- Error-Text falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n    <string name=\"wallet_foreign_rules_check_network_error_text\">\"Per poter verificare la validità, lo smartphone deve essere collegato a Internet.\"</string>\n\n    <!-- Reisefeature: Hinweis 1 -->\n    <string name=\"wallet_foreign_rules_check_hint_2\">\"Le disposizioni d’entrata possono cambiare. Verificate poco prima della partenza se il vostro certificato è valido e informatevi ulteriormente online sulle disposizioni d’entrata attuali del Paese di destinazione.\"</string>\n\n    <!-- Reisefeature: Hinweis 2 -->\n    <string name=\"wallet_foreign_rules_check_hint_3\">\"Le informazioni sopra indicate si riferiscono solo alle disposizioni d’entrata del Paese di destinazione. Per eventuali settori soggetti all’obbligo di certificato all’interno del Paese possono vigere altre regole.\"</string>\n\n    <!-- Reisefeature: Hinweis 3 -->\n    <string name=\"wallet_foreign_rules_check_hint_1\">\"La Confederazione non si assume la responsabilità per l’attualità e la completezza delle informazioni fornite.\"</string>\n\n    <!-- Reisefeature: Hinweis 4 -->\n    <string name=\"wallet_foreign_rules_check_hint_4\">\"Non avete trovato un Paese? Non tutti i Paesi accettano i certificati COVID o rendono disponibili le regole d’entrata.\"</string>\n\n    <!-- Reisefeature: Text des Mehr Infos Buttons -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_link_text\">\"reopen.europa.eu\"</string>\n\n    <!-- Reisefeature: URL die geöffnet wird wenn auf den Mehr Info Button geklickt wird -->\n    <string name=\"wallet_foreign_rules_check_hints_more_info_link_url\">\"https://reopen.europa.eu/\"</string>\n\n    <!-- RAT-Umwandlung:  Titel bei Zertifikat -->\n    <string name=\"rat_conversion_overview_title\">\"Novità: versione compatibile con l’UE\"</string>\n\n    <!-- RAT-Umwandlung: Text bei Zertifikat -->\n    <string name=\"rat_conversion_overview_text\">\"Per questo certificato COVID è possibile richiedere una versione compatibile con l’UE.\"</string>\n\n    <!-- RAT-Umwandlung: Button-Text zu Umwandlung Detail -->\n    <string name=\"rat_conversion_overview_button\">\"Maggiori informazioni\"</string>\n\n    <!-- RAT-Umwandlung: Titel Detail -->\n    <string name=\"rat_conversion_title\">\"Richiedere un certificato COVID (compatibile con l’UE)\"</string>\n\n    <!-- RAT-Umwandlung: Text auf Detail -->\n    <string name=\"rat_conversion_text\">\"Ora i certificati COVID per persone guarite rilasciati sulla base di test antigenici rapidi sono accettati anche nell’UE.\n\nÈ possibile richiedere una versione di questo certificato compatibile con l’UE presso l’organo nazionale per la richiesta di certificati COVID.\"</string>\n\n    <!-- RAT-Umwandlung: Title bei Formular-Verlinkung -->\n    <string name=\"rat_conversion_form_title\">\"Al modulo online dell’organo nazionale per la richiesta di certificati COVID\"</string>\n\n    <!-- Rat-Umwandlung: Text zum Formular -->\n    <string name=\"rat_conversion_form_text\">\"Acconsento al trasferimento dei dati del presente certificato COVID nel modulo dell’organo nazionale per la richiesta di certificati COVID (un sito web della Confederazione).\"</string>\n\n    <!-- RAT-Umwandlung: Absprung Button -->\n    <string name=\"rat_conversion_form_button\">\"Al modulo\"</string>\n\n    <!-- RAT-Umwandlung: Linktext zur Webseite nationale Antragsstelle -->\n    <string name=\"rat_conversion_link_antragsstelle\">\"Sito web dell’organo nazionale per la richiesta di certificati COVID (senza trasferimento dati)\"</string>\n\n    <!-- RAT-Umwandlung: Info Text 1 -->\n    <string name=\"rat_conversion_info1_text\">\"Se la richiesta è accolta, il nuovo certificato COVID compatibile con l’UE sarà inviato per posta e successivamente potrà essere trasferito nell’app dal richiedente. Un invio direttamente nell’app non è possibile.\"</string>\n\n    <!-- RAT-Umwandlung: Info 2 Text -->\n    <string name=\"rat_conversion_info2_text\">\"Con il trasferimento dei dati del certificato nel modulo online, la richiesta può essere elaborata più semplicemente.\"</string>\n\n    <!-- Die URL für das Formular, mit dem für ein RAT Genesungszert ein reguläres Genesungszert beantragt werden kann -->\n    <string name=\"wallet_rat_recovery_conversion_url\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\n    <!-- RAT-Umwandlung: Titel vor Infos -->\n    <string name=\"rat_conversion_info_title\">\"Maggiori informazioni\"</string>\n\n    <!-- cert renewal general info heading -->\n    <string name=\"cert_renewal_info_info_heading\">\"Cosa significa?\"</string>\n\n    <!-- cert renewal general info text 1 -->\n    <string name=\"cert_renewal_info_info_text_1\">\"I codici QR dei certificati COVID hanno una validità tecnica limitata\"</string>\n\n    <!-- cert renewal general info text 2 -->\n    <string name=\"cert_renewal_info_info_text_2\">\"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"</string>\n\n    <!-- cert renewal general info text 3 -->\n    <string name=\"cert_renewal_info_info_text_3\">\"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"</string>\n\n    <!-- cert renewal general info text 4 -->\n    <string name=\"cert_renewal_info_info_text_4\">\"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"</string>\n\n    <!-- cert renewal info heading for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_heading\">\"Cosa significa?\"</string>\n\n    <!-- cert renewal text 1 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_1\">\"I codici QR dei certificati COVID hanno una validità tecnica limitata.\"</string>\n\n    <!-- cert renewal text 2 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_2\">\"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"</string>\n\n    <!-- cert renewal text 3 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_3\">\"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"</string>\n\n    <!-- cert renewal text 4 for soon to be expired or expired certificates -->\n    <string name=\"cert_renewal_info_expired_text_4\">\"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"</string>\n\n    <!-- cert renewal info heading for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_heading\">\"Importante!\"</string>\n\n    <!-- cert renewal text 1 for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_text_1\">\"Sostituisci anche i certificati stampati o salvati in precedenza con la presente versione aggiornata.\"</string>\n\n    <!-- cert renewal text 2 for renewed certificates -->\n    <string name=\"cert_renewal_info_renewed_text_2\">\"La durata del riconoscimento di una vaccinazione in un Paese non è specificata nel certificato. Questo viene calcolato durante la verifica in base alle regole del Paese esaminatore. Il rinnovo del codice QR garantisce solo che tale codice possa continuare a essere tecnicamente utilizzato.\"</string>\n\n    <!-- Wallet: Zertifikat QR Code läuft ab am {DATE} -->\n    <string name=\"wallet_certificate_qr_code_expiration_date\">\"QR code expiration date (technical)\n{DATE}\"</string>\n\n    <!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_title\">\"Rinnova il codice QR!\"</string>\n\n    <!-- Wallet: Text der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_text\">\"Per continuare a utilizzare questo certificato, è necessario rinnovare il codice QR.\"</string>\n\n    <!-- Wallet: Buttontext der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n    <string name=\"wallet_certificate_renewal_required_bubble_button\">\"Per saperne di più\"</string>\n\n    <!-- Wallet: Buttontext um den QR Code eines Zertifikats zu erneuern -->\n    <string name=\"wallet_certificate_renew_now_button\">\"Rinnova il codice QR\"</string>\n    <string name=\"wallet_certificate_renewal_qr_code_expiration\">\"Data di scadenza del codice QR\"</string>\n    <string name=\"wallet_certificate_renewal_required_info\">\"La data di scadenza tecnica di questo codice QR sarà (presto) raggiunta.\"</string>\n    <string name=\"wallet_certificate_renewal_in_progress_info\">\"Codice QR viene rinnovato\"</string>\n    <string name=\"wallet_certificate_renewal_successful_info\">\"Il codice QR è stato rinnovato.\"</string>\n    <string name=\"wallet_certificate_renewal_offline_error_title\">\"Nessuna connessione a Internet\"</string>\n    <string name=\"wallet_certificate_renewal_offline_error_text\">\"Per rinnovare il codice QR è necessario che l’app sia online.\"</string>\n    <string name=\"wallet_certificate_renewal_general_error_title\">\"Si è verificato un errore imprevisto.\"</string>\n    <string name=\"wallet_certificate_renewal_general_error_text\">\"Riprova più tardi\"</string>\n\n    <!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_title\">\"Rinnovo avvenuto\"</string>\n\n    <!-- Wallet: Text der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_text\">\"Sostituisci anche le versioni stampate o salvate di questo certificato con la presente versione aggiornata.\"</string>\n\n    <!-- Wallet: Button der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n    <string name=\"wallet_certificate_renewal_successful_bubble_button\">\"Per saperne di più\"</string>\n\n    <!-- Wallet: QR Code des Zertifikats abgelaufen -->\n    <string name=\"wallet_error_qr_code_expired\">\"La data di scadenza tecnica di questo codice QR sarà raggiunta.\"</string>\n    <string name=\"wallet_certificate_renewal_rate_limit_error_title\">\"È stato raggiunto il limite di 24 ore\"</string>\n    <string name=\"wallet_certificate_renewal_rate_limit_error_text\">\"Codice QR rinnovato troppo spesso. Rinnovo temporaneamente bloccato.\"</string>\n    <string name=\"wallet_certificate_renewal_faq_link_text\">\"Alle FAQ\"</string>\n    <string name=\"wallet_certificate_renewal_faq_link_url\">\"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"</string>\n    <string name=\"terms_and_conditions_update_boarding_title\">\"Aggiornamento\"</string>\n    <string name=\"terms_and_conditions_update_boarding_text\">\"L’informativa sulla privacy (dichiarazione sulla protezione dei dati) e le condizioni d’uso dell’app sono state puntualmente aggiornate e adeguate alle basi legali.\"</string>\n    <string name=\"wallet_validity_since_vaccination_date\">\"Data di vaccinazione\"</string>\n    <string name=\"wallet_validity_since_test_date\">\"Test negativo\"</string>\n\n    <!-- vor 2 Tagen - must be before \"2 Tagen\"! -->\n    <string name=\"wallet_validity_since_prefix\">\" \"</string>\n\n    <!-- vor 1 Stunde -->\n    <string name=\"wallet_validity_since_hours_singular\">\"1 ora fa\"</string>\n\n    <!-- vor 2 Stunden -->\n    <string name=\"wallet_validity_since_hours_plural\">\"{HOURS} ore fa\"</string>\n\n    <!-- vor 1 Tag -->\n    <string name=\"wallet_validity_since_days_singular\">\"1 giorno fa\"</string>\n\n    <!-- vor 2 Tagen -->\n    <string name=\"wallet_validity_since_days_plural\">\"{DAYS} giorni fa\"</string>\n    <string name=\"wallet_update_boarding_page_1_title\">\"Quali sono le novità?\"</string>\n    <string name=\"wallet_update_boarding_page_1_text\">\"Nel certificato COVID non viene più indicato il campo «Validità in Svizzera». Al suo posto l’app riporta la data della vaccinazione o del test. Perché?\"</string>\n    <string name=\"wallet_update_boarding_page_2_title\">\"Certificato COVID in Svizzera\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_1\">\"In Svizzera l’obbligo di certificato è stato revocato a febbraio 2022\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_2\">\"Da allora la durata di validità in Svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese.\"</string>\n    <string name=\"wallet_update_boarding_page_2_bullet_3\">\"La durata di validità svizzera non ha valore nemmeno all’estero.\"</string>\n    <string name=\"wallet_update_boarding_page_3_title\">\"Certificati COVID all’estero\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_1\">\"All’estero si applicano le regole dei singoli Paesi.\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_2\">\"L’app mostra ora quanti giorni sono passati da una vaccinazione o da un test.\"</string>\n    <string name=\"wallet_update_boarding_page_3_bullet_3\">\"In questo modo è più facile determinare se il certificato rispetta le regole del Paese di destinazione (qualora quest’ultimo richieda ancora un certificato COVID).\"</string>\n    <string name=\"wallet_update_boarding_page_4_title\">\"Situazione attuale in Europa e nel mondo\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_1\">\"La maggior parte dei Paesi europei ha revocato l’obbligo di certificato per l’entrata.\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_2\">\"La funzione «Validità all’estero» è dunque stata rimossa.\"</string>\n    <string name=\"wallet_update_boarding_page_4_bullet_3\">\"Per sapere se in un determinato Paese vige ancora l’obbligo di certificato, consulta i seguenti siti web:\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_1_text\">\"reopen.europa.eu\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_1_url\">\"https://reopen.europa.eu\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_2_text\">\"iatatravelcentre.com\"</string>\n    <string name=\"wallet_update_boarding_page_4_link_2_url\">\"https://www.iatatravelcentre.com\"</string>\n    <string name=\"wallet_validity_since_more_hours_prefix\">\"più di\"</string>\n    <string name=\"wallet_validity_since_recovery_date\">\"Test positivo\"</string>\n    <string name=\"covid_certificate_news_text\">\"Obbligo di certificato revocato\"</string>\n    <string name=\"covid_certificate_news_title\">\"Obbligo di certificato revocato\"</string>\n    <string name=\"covid_certificate_news_item1\">\"In Svizzera l’obbligo di certificato è stato revocato a febbraio 2022.\"</string>\n    <string name=\"covid_certificate_news_item2\">\"Da allora la durata di validità in Svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese.\"</string>\n    <string name=\"covid_certificate_news_item3\">\"Questa app svizzera verifica i certificati COVID in base alle regole di validità vigenti in Svizzera. Il risultato della verifica non è determinante per un impiego all’estero.\"</string>\n    <string name=\"covid_certificate_news_item4\">\"Qualora un Paese richieda ancora un certificato COVID, si applicano le regole di tale Paese.\"</string>\n    <string name=\"wallet_faq_questions_linktext_1_1\">\"Organo nazionale per la richiesta di certificati COVID\"</string>\n    <string name=\"wallet_faq_questions_linkurl_1_1\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n    <string name=\"wallet_faq_questions_question_2_2\">\"Devo recarmi all’estero e ho bisogno di un certificato COVID. Cosa devo fare?\"</string>\n    <string name=\"wallet_faq_questions_answer_2_2\">\"All’estero si applicano le regole di validità del rispettivo Paese, sia per l’entrata sia all’interno del Paese stesso. Per l’impiego del certificato all’interno del Paese di destinazione possono applicarsi altre regole rispetto a quelle vigenti per l’entrata. Queste regole possono cambiare in tempi brevi. Pertanto, prima di partire, si informi consultando il sito web delle autorità del Paese di transito o di destinazione se nel Paese vigono ancora regole relative alla COVID-19 e, in caso affermativo, quali sono.\"</string>\n    <string name=\"wallet_error_not_fully_protected_national_rules\">\"Serie di vaccinazioni incompleta secondo gli standard internazionali.\"</string>\n</resources>"
  },
  {
    "path": "common/src/main/res/values-rm/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n    ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n    ~\n    ~ This Source Code Form is subject to the terms of the Mozilla Public\n    ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n    ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n    ~\n    ~ SPDX-License-Identifier: MPL-2.0\n    -->\n<resources>\n\n\t<!-- Android App Name -->\n\t<string name=\"verifier_app_name\">\"Covid Check\"</string>\n\n\t<!-- Title for the qr scanning screen -->\n\t<string name=\"verifier_title_qr_scan\">\"Verifitgar\"</string>\n\n\t<!-- Titel über dem Haupttitel -->\n\t<string name=\"verifier_homescreen_header_title\">\"Covid Certificate\"</string>\n\n\t<!-- Homescreen App Name -->\n\t<string name=\"verifier_homescreen_title\">\"Check\"</string>\n\n\t<!-- Beschreibung für Pager Bild 1 -->\n\t<string name=\"verifier_homescreen_pager_description_1\">\"Scannar il certificat preschentà\"</string>\n\n\t<!-- Beschreibung für Pager Bild 2 -->\n\t<string name=\"verifier_homescreen_pager_description_2\">\"Ils certificats vegnan verifitgads automaticamain\"</string>\n\n\t<!-- Homescreen Button für Scanning -->\n\t<string name=\"verifier_homescreen_scan_button\">\"Verifitgar\"</string>\n\n\t<!-- Homescreen Button für Support -->\n\t<string name=\"verifier_homescreen_support_button\">\"Uschia funcziuni\"</string>\n\t<string name=\"error_network_title\">\"Sbagl en la rait\"</string>\n\t<string name=\"error_network_text\">\"Verifitgai Vossa colliaziun d'internet.\"</string>\n\t<string name=\"error_action_retry\">\"Empruvar danovamain\"</string>\n\t<string name=\"error_camera_permission_title\">\"Nagin access a la camera\"</string>\n\t<string name=\"error_camera_permission_text\">\"L'app dovra access a la camera per pudair scannar il code QR.\"</string>\n\t<string name=\"error_action_change_settings\">\"Midar las configuraziuns\"</string>\n\t<string name=\"error_title\">\"Sbagl\"</string>\n\t<string name=\"qr_scanner_error\">\"Il code n'è betg valaivel\"</string>\n\t<string name=\"ok_button\">\"OK\"</string>\n\t<string name=\"camera_permission_dialog_text\">\"L'app dovra access a la camera per pudair scannar il code QR.\"</string>\n\t<string name=\"camera_permission_dialog_action\">\"Permetter l'access a la camera\"</string>\n\t<string name=\"verifier_qr_scanner_scan_qr_text\">\"Scannar il code QR per verifitgar\"</string>\n\n\t<!-- Titel auf dem Verifikations-Screen -->\n\t<string name=\"covid_certificate_title\">\"Certificat COVID\"</string>\n\n\t<!-- Name des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n\t<string name=\"verifier_covid_certificate_name\">\"Num\"</string>\n\n\t<!-- Geburtsdatum des/der Zertifikatsinhabers/Zertifikatsinhaberin -->\n\t<string name=\"verifier_covid_certificate_birthdate\">\"Data da naschientscha\"</string>\n\n\t<!-- Wallet: Zertifikat hinzufügen -->\n\t<string name=\"wallet_add_certificate\">\"Agiuntar\"</string>\n\n\t<!-- Wallet: Homescreen Covid-Zertifikat -->\n\t<string name=\"wallet_certificate\">\"Certificat COVID\"</string>\n\n\t<!-- Wallet: Homescreen Erklärung -->\n\t<string name=\"wallet_homescreen_explanation\">\"Scannai il code QR sin il certificat COVID per al agiuntar a l'app.\"</string>\n\n\t<!-- Wallet: Scanner Titel -->\n\t<string name=\"wallet_scanner_title\">\"Agiuntar\"</string>\n\n\t<!-- Titel bei erfolgreicher Prüfung -->\n\t<string name=\"verifier_verify_success_title\">\"Verificaziun reussida\"</string>\n\n\t<!-- Info Text bei erfolgreicher Prüfung -->\n\t<string name=\"verifier_verify_success_info\">\"Valaivel mo cun in\ndocument da legitimaziun\"</string>\n\n\t<!-- Prüfung loading text -->\n\t<string name=\"verifier_verify_loading_text\">\"Il certificat vegn verifitgà\"</string>\n\n\t<!-- Fehler Title bei Prüfung -->\n\t<string name=\"verifier_verify_error_title\">\"Il certificat n'è betg valaivel\"</string>\n\n\t<!-- Fehler Infotext bei Prüfung (Nationale Regeln) -->\n\t<string name=\"verifier_verify_error_info_for_national_rules\">\"Na correspunda betg als criteris da valaivladad da la Svizra u dal modus da verificaziun ({MODUS})\"</string>\n\n\t<!-- Fehler Infotext bei Prüfung (Zertifikat Fehler) -->\n\t<string name=\"verifier_verify_error_info_for_certificate_invalid\">\"Il certificat COVID n'ha betg ina signatura valaivla\"</string>\n\n\t<!-- Fehler Infotext bei Prüfung (Blacklist) -->\n\t<string name=\"verifier_verify_error_info_for_blacklist\">\"Il certificat COVID è vegnì revocà\"</string>\n\n\t<!-- Fehler bei der geladen Liste -->\n\t<string name=\"verifier_verify_error_list_title\">\"Verificaziun betg reussida\"</string>\n\n\t<!-- Fehler Info bei laden der Liste -->\n\t<string name=\"verifier_verify_error_list_info_text\">\"Igl è capità in sbagl imprevis.\"</string>\n\n\t<!-- Wallet: Scanner Text unten -->\n\t<string name=\"wallet_scanner_explanation\">\"Scannai il code QR sin il certificat COVID.\"</string>\n\n\t<!-- Wallet: Scanner Info Button unten -->\n\t<string name=\"wallet_scanner_info_button\">\"Uschia funcziuni\"</string>\n\n\t<!-- Wallet: Erneut scannen Button -->\n\t<string name=\"wallet_scan_again\">\"Scannar danovamain\"</string>\n\n\t<!-- Wallet: Hinzufügen von Zertifikat Button -->\n\t<string name=\"wallet_add_certificate_button\">\"Agiuntar\"</string>\n\n\t<!-- Wallet: Titel der Liste Zertifikate -->\n\t<string name=\"wallet_certificate_list_title\">\"Certificats\"</string>\n\n\t<!-- Wallet: Löschen Button Titel -->\n\t<string name=\"delete_button\">\"Stizzar\"</string>\n\n\t<!-- Android App Name für die Wallet -->\n\t<string name=\"wallet_app_name\">\"Covid Cert\"</string>\n\n\t<!-- Header im Onboarding-Screen \"Die App\" -->\n\t<string name=\"wallet_onboarding_app_header\">\"L'app\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Die App\" -->\n\t<string name=\"wallet_onboarding_app_title\">\"COVID Certificate\"</string>\n\n\t<!-- Text im Onboardingscreen \"Die App\" -->\n\t<string name=\"wallet_onboarding_app_text\">\"Cun l'app pudais Vus tegnair en salv en moda segira ils certificats COVID sin Voss smartphone ed als preschentar en moda simpla.\"</string>\n\n\t<!-- Weiter-Button Titel -->\n\t<string name=\"continue_button\">\"Vinavant\"</string>\n\n\t<!-- Header im Onboarding-Screen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_header\">\"Protecziun da datas\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_title\">\"Vossas datas restan en l'app\"</string>\n\n\t<!-- Text im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_text\">\"Ils certificats vegnan arcunads mo localmain sin Voss smartphone. Las datas na vegnan betg arcunadas en in sistem central.\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_title\">\"Preschentar ils certificats en moda simpla\"</string>\n\n\t<!-- Text 1 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_text1\">\"Las datas sin il certificat COVID èn er cuntegnidas en il code QR. \"</string>\n\n\t<!-- Text 2 im Onboardingscreen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_text2\">\"Cun preschentar il certificat vegn scannà il code QR cun l'app da verificaziun. Las datas vegnan verifitgadas automaticamain areguard l'autenticitad e la valaivladad.\"</string>\n\n\t<!-- Titel des Datenschutzerklärungs-Elements im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_privacypolicy_title\">\"Decleraziun davart la protecziun da datas\"</string>\n\n\t<!-- Titel des Nutzungsbedingungen-Elements im Onboardingscreen \"Datenschutz\" -->\n\t<string name=\"wallet_onboarding_privacy_conditionsofuse_title\">\"Cundiziuns d'utilisaziun\"</string>\n\n\t<!-- Button zum Abschliessen des Onboardings -->\n\t<string name=\"wallet_onboarding_accept_button\">\"Acceptar\"</string>\n\t<string name=\"language_key\">\"rm\"</string>\n\n\t<!-- Header im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_header\">\"Uschia funcziuni\"</string>\n\n\t<!-- Titel im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_title\">\"Agiuntar certificats COVID\"</string>\n\n\t<!-- Textblock 1 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text1\">\"Per pudair agiuntar in certificat COVID a l'app duvrais Vus il certificat original sin palpiri u sco PDF. \"</string>\n\n\t<!-- Textblock 2 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text2\">\"Smatgai en l'app sin «Agiuntar» per agiuntar in nov certificat a l'app.\"</string>\n\n\t<!-- Textblock 3 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text3\">\"Tegnai ussa la camera dal smartphone sur il code QR sin il certificat original per scannar il code.\"</string>\n\n\t<!-- Textblock 4 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_text4\">\"I cumpara ina prevista dal certificat covid. Smatgai sin «Agiuntar» per arcunar il certificat en moda segira en l'app.\"</string>\n\n\t<!-- Frage 1 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_question1\">\"Cura e co obtegn jau in certificat COVID?\"</string>\n\n\t<!-- Header im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_header\">\"Dumondas frequentas\"</string>\n\n\t<!-- Titel 1 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_title\">\"Tge è il certificat COVID?\"</string>\n\n\t<!-- Text 1im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_subtitle\">\"Il certificat COVID permetta da documentar – en moda nunfalsifitgabla – ina vaccinaziun cunter COVID-19, ina infecziun u in resultat negativ dal test.\"</string>\n\n\t<!-- Frage 1 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_1\">\"Cura e co obtegn jau in certificat COVID?\"</string>\n\n\t<!-- Frage 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_2\">\"Co poss jau preschentar in certificat COVID?\"</string>\n\n\t<!-- Frage 3 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_3\">\"Nua vegnan arcunadas mias datas?\"</string>\n\n\t<!-- Frage 4 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_4\">\"Co vegnan impedids abus e falsificaziuns?\"</string>\n\n\t<!-- Frage 5 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_question_5\">\"Tge capita, sche jau perd mes certificat COVID?\"</string>\n\n\t<!-- Frage 6 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_1\">\"Co poss jau agiuntar in certificat COVID a l'app?\"</string>\n\n\t<!-- Frage 7 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_2\">\"Pon vegnir agiuntads er plirs certificats COVID?\"</string>\n\n\t<!-- Frage 8 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_3\">\"Nua ves jau, sche mes certificat COVID è valaivel?\"</string>\n\n\t<!-- Frage 9 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_4\">\"Co vegnan protegidas mias datas?\"</string>\n\n\t<!-- Frage 10 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_5\">\"Tge datas cuntegna il code QR?\"</string>\n\n\t<!-- Frage 11 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_question_6\">\"Tge stoss jau far, sche jau stiz il certificat COVID u l'app?\"</string>\n\n\t<!-- Antwort 1 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_1\">\"In certificat COVID survegnis Vus suenter ina vaccinaziun cumpletta cunter COVID-19, suenter ina infecziun u suenter in resultat negativ dal test. Il certificat vegn per il solit emess – sin dumonda – dal persunal spezialisà da sanadad al lieu. \"</string>\n\n\t<!-- Antwort 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_2\">\"Vus pudais preschentar Voss certificat COVID sin palpiri u sur l'app «COVID Certificate». L'app permetta d'arcunar certificats e d'als preschentar directamain sin il telefonin.\nResguardai per plaschair che Vus stuais en mintga cas preschentar er anc in document da legitimaziun.\nEn intgins pajais vegn pretendida ina versiun stampada dal certificat ed il certificat electronic na vegn betg acceptà. Sin viadis duessas Vus perquai adina avair cun Vus er la versiun stampada.\"</string>\n\n\t<!-- Antwort 3 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_3\">\"Las datas da Voss certificat na vegnan betg arcunadas en in sistem central da la Confederaziun, mabain mo localmain sin Voss telefonin resp. sin il certificat COVID sin palpiri.\"</string>\n\n\t<!-- Antwort 4 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_4\">\"Il code QR sin Voss certificat COVID cuntegna ina signatura digitala. La signatura è ina impurtanta caracteristica da segirezza che impedescha da falsifitgar il certificat COVID. Il certificat COVID è ultra da quai valaivel mo en cumbinaziun cun in document da legitimaziun.\"</string>\n\n\t<!-- Antwort 5 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_questions_answer_5\">\"Voss certificat COVID na vegn betg arcunà en in sistem central da la Confederaziun. Tegnai perquai en salv cun quità il certificat COVID sin palpiri e/u sco PDF. Sche Vus avais pers il certificat u sche Vus duvrais in certificat substitutiv, po l'instituziun da sanadad (p.ex. il post da test u da vaccinaziun) pretender ina taxa per emetter in nov certificat.\"</string>\n\n\t<!-- Antwort 6 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_1\">\"Per agiuntar in certificat COVID a l'app, duvrais Vus il certificat original ch'è vegnì emess per Vus sin palpiri u en furma da PDF. Cun l'app COVID Certificate pudais Vus alura scannar il code QR sin il certificat ed al agiuntar a l'app. Silsuenter cumpara il certificat COVID directamain en l'app.\"</string>\n\n\t<!-- Antwort 7 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_2\">\"Gea, quai è pussaivel. Vus pudais p.ex. arcunar en Vossa app ils certificats COVID da tut Vossas confamigliaras e da tut Voss confamigliars. Er en quest cas vala: Il certificat COVID è valaivel mo en cumbinaziun cun in document da legitimaziun  da la possessura u dal possessur dal certificat.\"</string>\n\n\t<!-- Antwort 8 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_3\">\"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. Sin il certificat COVID na vegn perquai betg pli mussà il champ «Valaivladad en Svizra». Empè da quai mussa l'app la data da la vaccinaziun resp. dal test.\n\nI vegn er mussà, avant quants dis ch'igl è vegnì fatg ina vaccinaziun resp. in test. Uschia èsi pli facil per Vus da constatar, sche Voss certificat correspunda a las reglas da valaivladad da Voss pajais da destinaziun (premess ch'il pajais pretenda anc in certificat Covid). A l'exteriur valan adina las reglas dal pajais respectiv. \"</string>\n\n\t<!-- Antwort 9 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_4\">\"Vossas datas persunalas na vegnan betg arcunadas en in sistem central, mabain mo localmain sin Voss telefonin resp. en il code QR sin Voss certificat COVID en furma da palpiri.\"</string>\n\n\t<!-- Antwort 10 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_5\">\"Il code QR cuntegna tut las infurmaziuns che Vus chattais sin Voss certificat COVID en furma da palpiri en text betg criptà. Plinavant sa chatta ina signatura digitala en il code QR. Cun quella po vegnir verifitgada l'autenticitad da Voss certificat COVID. Uschia na po il certificat COVID betg vegnir falsifitgà.\"</string>\n\n\t<!-- Antwort 11 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_answer_6\">\"Vus pudais simplamain arcunar anc ina giada il certificat COVID sin Voss telefonin. Chargiai giu danovamain l’app e scannai alura il code QR sin Voss certificat COVID sin palpiri u en furma da PDF.\"</string>\n\n\t<!-- Titel 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_title\">\"Co funcziuna\nl'app?\"</string>\n\n\t<!-- Text 2 im FAQ-Screen der Wallet App -->\n\t<string name=\"wallet_faq_works_subtitle\">\"Cun l'app COVID Certificate pudais Vus arcunar e preschentar en moda simpla e segira certificats COVID sin Voss telefonin.\"</string>\n\n\t<!-- Antwort 1 im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_answer1\">\"In certificat COVID pudais Vus obtegnair suenter ina vaccinaziun cumpletta cunter COVID-19, suenter ina infecziun cun COVID-19 u suenter in resultat negativ dal test da COVID-19. Il certificat vegn emess – sin dumonda – dal persunal medicinal al lieu.\"</string>\n\n\t<!-- Verifier: Detail Check Vorname -->\n\t<string name=\"verifier_covid_certificate_prename\">\"Prenum\"</string>\n\n\t<!-- Config: Titel wenn App muss geupdatet werden -->\n\t<string name=\"force_update_title\">\"Update necessari\"</string>\n\n\t<!-- Config: Text der angezeigt wird falls App muss geupdatet werden -->\n\t<string name=\"force_update_text\">\"Chargiai giu la nova versiun da l'app.\"</string>\n\n\t<!-- Config: Update Button Aktualisieren -->\n\t<string name=\"force_update_button\">\"Actualisar\"</string>\n\n\t<!-- Wallet: Zertifikat gültig ab: {DATE} -->\n\t<string name=\"wallet_certificate_valid_from\">\"Valaivel en Svizra a partir dals:\n{DATE}\"</string>\n\n\t<!-- Wallet: Zertifikat Detail Geimpft -->\n\t<string name=\"certificate_reason_vaccinated\">\"Vaccinaziun\"</string>\n\n\t<!-- Wallet: Zertifikat Detail Genesen -->\n\t<string name=\"certificate_reason_recovered\">\"Guariziun\"</string>\n\n\t<!-- Wallet: Zertifikat Detail Getestet -->\n\t<string name=\"certificate_reason_tested\">\"Test\"</string>\n\n\t<!-- Header im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_header\">\"Avantatgs\"</string>\n\n\t<!-- Titel im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_title\">\"Tegnair en salv ils certificats COVID en moda digitala\"</string>\n\n\t<!-- Text1 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_text1\">\"Ils certificats COVID pon vegnir agiuntads en moda simpla a l'app e vegnir tegnids en salv en moda digitala.\"</string>\n\n\t<!-- Text2 im Onboardingscreen \"Vorteile, Aufbewahren\" -->\n\t<string name=\"wallet_onboarding_store_text2\">\"L'app verifitgescha ils certificats areguard lur valaivladad en Svizra. Uschia pudais Vus As atschertar che Voss certificats èn valaivels. \"</string>\n\n\t<!-- Header im Onboarding-Screen \"Vorteile, Vorweisen\" -->\n\t<string name=\"wallet_onboarding_show_header\">\"Avantatgs\"</string>\n\n\t<!-- Accessibility: Information -->\n\t<string name=\"accessibility_info_button\">\"Impressum\"</string>\n\n\t<!-- Accessibility: FAQ Button Titel -->\n\t<string name=\"accessibility_faq_button\">\"Dumondas frequentas\"</string>\n\n\t<!-- Accessibility: Button zur Liste der Zertifikate -->\n\t<string name=\"accessibility_list_button\">\"Glista dals certificats\"</string>\n\n\t<!-- Accessibility: Zertifikate hinzufügen -->\n\t<string name=\"accessibility_add_button\">\"Agiuntar in certificat\"</string>\n\n\t<!-- Accessibility: Schliessen Button -->\n\t<string name=\"accessibility_close_button\">\"Serrar\"</string>\n\n\t<!-- Accessibility: Taschenlampe anschalten Button -->\n\t<string name=\"accessibility_lamp_on_button\">\"Activar la glisch da giaglioffa\"</string>\n\n\t<!-- Accessibility: Lampe abschalten -->\n\t<string name=\"accessibility_lamp_off_button\">\"Deactivar la glisch da giaglioffa\"</string>\n\n\t<!-- Titel des Impressum-Screens -->\n\t<string name=\"impressum_title\">\"Configuraziuns\"</string>\n\n\t<!-- Unbekannter Fehler -->\n\t<string name=\"unknown_error\">\"Igl è capità in sbagl nunenconuschent.\"</string>\n\n\t<!-- Verifier: Die Gültigkeit des Zertifikat ist abgelaufen -->\n\t<string name=\"verifier_verifiy_error_expired\">\"Na correspunda betg als criteris da valaivladad da la Svizra.\n\nLa valaivladad dal certificat è scadida.\"</string>\n\n\t<!-- Verifier: Zertifikat ist erst gültig ab {DATE} -->\n\t<string name=\"verifier_verifiy_error_notyetvalid\">\"Na correspunda betg als criteris da valaivladad da la Svizra.\n\nIl certificat n'è anc betg valaivel.\"</string>\n\n\t<!-- Verifier: Ein Netzwerkfehler ist aufgetreten. -->\n\t<string name=\"verifier_retry_network_error\">\"Igl è capità in sbagl en la rait.\"</string>\n\n\t<!-- Verifier: Das Gerät befindet sich im Flugmodus. -->\n\t<string name=\"verifier_retry_flightmode_error\">\"L'apparat è en il modus offline.\"</string>\n\n\t<!-- Wallet: Zertifikat gültig ab: {DATE} -->\n\t<string name=\"wallet_error_valid_from\">\"Valaivel en Svizra a partir dals:\n{DATE}\"</string>\n\n\t<!-- Wallet: Fehler wenn Zertifikat nicht den CH-Gültigkeitskriterien entspricht -->\n\t<string name=\"wallet_error_national_rules\">\"Cuntegna datas che na correspundan betg als standards internaziunals.\"</string>\n\n\t<!-- Wallet: Gültigkeit des Zertifikats abgelaufen -->\n\t<string name=\"wallet_error_expired\">\"Surpassà la durada da valaivladad en Svizra\"</string>\n\n\t<!-- Wallet: Zertifikat wurde widerrufen -->\n\t<string name=\"wallet_error_revocation\">\"Il certificat è vegnì\nrevocà\"</string>\n\n\t<!-- Wallet: Zertifikat mit ungültiger Signatur -->\n\t<string name=\"wallet_error_invalid_signature\">\"Certificat cun\nsignatura nunvalaivla\"</string>\n\n\t<!-- Wallet: ungültiger Signatur (gleiche Worte wie wallet_error_invalid_signature) -->\n\t<string name=\"wallet_error_invalid_signature_bold\">\"signatura nunvalaivla\"</string>\n\n\t<!-- Wallet: widerrufen (gleiches Wort wie bei wallet_error_revocation) -->\n\t<string name=\"wallet_error_revocation_bold\">\"revocà\"</string>\n\n\t<!-- Meldung wenn erneute ein Zertifikat gescannt wurde, welches bereits in der App ist -->\n\t<string name=\"wallet_certificate_already_exists\">\"Quest certificat è gia arcunà en l'app\"</string>\n\n\t<!-- Titel Gültigkeit im Zertifikatsdetail -->\n\t<string name=\"wallet_certificate_validity\">\"Valaivladad\nen Svizra\"</string>\n\n\t<!-- \"Bis\" Label im Zertifikats-Detail -->\n\t<string name=\"wallet_certificate_valid_until\">\"fin ils\"</string>\n\n\t<!-- Message im Zertifikatsdetail während Überprüfung -->\n\t<string name=\"wallet_certificate_verifying\">\"Il certificat vegn verifitgà\"</string>\n\n\t<!-- Message nach erfolgreicher Prüfung im Zertifikatdetail -->\n\t<string name=\"wallet_certificate_verify_success\">\"Verificaziun reussida\"</string>\n\n\t<!-- Accessibility: Info Box Butto -->\n\t<string name=\"accessibility_info_box\">\"Infurmaziun\"</string>\n\n\t<!-- Button Schliessen -->\n\t<string name=\"close_button\">\"Serrar\"</string>\n\t<string name=\"wallet_certificate_impfdosis_title\">\"Dosa\"</string>\n\t<string name=\"target_disease_name\">\"COVID-19\"</string>\n\t<string name=\"wallet_certificate_target_disease_title\">\"Malsogna u agent patogen\"</string>\n\t<string name=\"wallet_certificate_impfstoff_product_name_title\">\"Product\"</string>\n\t<string name=\"wallet_certificate_impfstoff_holder\">\"Producent\"</string>\n\t<string name=\"wallet_certificate_vaccination_date_title\">\"Data da la vaccinaziun\"</string>\n\t<string name=\"wallet_certificate_vaccination_country_title\">\"Pajais da la vaccinaziun\"</string>\n\t<string name=\"wallet_certificate_vaccination_issuer_title\">\"Emess da\"</string>\n\t<string name=\"covid_certificate_recovery_title\">\"Guariziun\"</string>\n\t<string name=\"wallet_certificate_recovery_first_positiv_result\">\"Data da l'emprim resultat positiv\"</string>\n\t<string name=\"wallet_certificate_recovery_from\">\"Valaivel a partir dals\"</string>\n\t<string name=\"wallet_certificate_recovery_until\">\"Valaivel fin ils\"</string>\n\t<string name=\"wallet_certificate_test_land\">\"Pajais dal test\"</string>\n\t<string name=\"covid_certificate_test_title\">\"Test\"</string>\n\t<string name=\"wallet_certificate_test_result_title\">\"Resultat\"</string>\n\t<string name=\"wallet_certificate_test_result_negativ\">\"Betg identifitgà (Negativ)\"</string>\n\t<string name=\"wallet_certificate_test_result_positiv\">\"Identifitgà (Positiv)\"</string>\n\t<string name=\"wallet_certificate_test_type\">\"Tip\"</string>\n\t<string name=\"wallet_certificate_test_name\">\"Num\"</string>\n\t<string name=\"wallet_certificate_test_holder\">\"Producent\"</string>\n\t<string name=\"wallet_certificate_test_sample_date_title\">\"Data da l'emprova\"</string>\n\t<string name=\"wallet_certificate_test_result_date_title\">\"Data da resultat\"</string>\n\n\t<!-- Header im \"So funktionierts\" Screen der Verifier-App -->\n\t<string name=\"verifier_support_header\">\"Uschia funcziuni\"</string>\n\n\t<!-- Text im Bestätigungs-Dialog beim Zertifikat löschen -->\n\t<string name=\"wallet_certificate_delete_confirm_text\">\"Vulais Vus propi stizzar il certificat?\"</string>\n\n\t<!-- Titel eines Abbrechen-Buttons -->\n\t<string name=\"cancel_button\">\"Interrumper\"</string>\n\n\t<!-- Wallet: Titel bei Impfungen -->\n\t<string name=\"covid_certificate_vaccination_title\">\"Vaccinaziun\"</string>\n\n\t<!-- Wallet: Apple App Store URL -->\n\t<string name=\"wallet_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917320\"</string>\n\n\t<!-- Verifier: Apple App Store URL -->\n\t<string name=\"verifier_apple_app_store_url\">\"http://itunes.apple.com/app/id1565917510\"</string>\n\n\t<!-- Wallet: Abkürzung \"UVCI\" (Unique Vaccination Certificate Identifier) -->\n\t<string name=\"wallet_certificate_identifier\">\"UVCI\"</string>\n\n\t<!-- Wallet: Zertifikat erstellt am {DATE} -->\n\t<string name=\"wallet_certificate_date\">\"Certificat emess ils\n{DATE}\"</string>\n\n\t<!-- Wallet: Detail Art des Impfstoffs -->\n\t<string name=\"wallet_certificate_vaccine_prophylaxis\">\"Tip dal vaccin\"</string>\n\n\t<!-- Wallet: Test Detail Test durchgeführt durch -->\n\t<string name=\"wallet_certificate_test_done_by\">\"Center da test\"</string>\n\n\t<!-- iOS: Erklärung bei Kamera  -->\n\t<string name=\"NSCameraUsageDescription\">\"L'app dovra access a la camera per pudair scannar il code QR.\"</string>\n\n\t<!-- Titel 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_title\">\"Uschia vegnan verifitgads ils certificats COVID\"</string>\n\n\t<!-- Text 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_subtitle\">\"Cun l'app COVID Certificate Check pon vegnir scannads ils codes QR sin ils certificats COVID per verifitgar l'autenticitad e la valaivladad dals certificats.\"</string>\n\n\t<!-- Frage 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_1\">\"Co pon vegnir verifitgads ils certificats COVID?\"</string>\n\n\t<!-- Antwort 1 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_1\">\"Per verifitgar in certificat COVID pudais Vus scannar il code QR sin Voss certificat sin palpiri u en l'app COVID Certificate cun l’app «COVID Certificate Check» previsa per quai.\"</string>\n\n\t<!-- Frage 2 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_2\">\"Tge vegn propi verifitgà?\"</string>\n\n\t<!-- Antwort 2 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_2\">\"Cun scannar vegnan verifitgads trais aspects:\n– Cuntegna il certificat ina signatura digitala valaivla?\n– N'è il certificat betg vegnì revocà?\n– Correspunda il certificat als criteris da valaivladad en Svizra?\n\nSche tut ils trais aspects vegnan valitads en moda positiva, vegn il certificat COVID considerà sco valaivel.\n\"</string>\n\n\t<!-- Frage 3 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_3\">\"Tge documents da legitimaziun vegnan acceptads resp. èn valaivels? Pertge ston vegnir verifitgadas las persunalias?\"</string>\n\n\t<!-- Antwort 3 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_3\">\"Ultra dal passaport e da la ID vegnan acceptads er auters documents da legitimaziun valaivels che cumprovan l’identitad da la persuna pertutgada cun ina fotografia (p.ex. permiss dad ir cun auto). Il certificat COVID na po bain betg vegnir falsifitgà, però pir cun verifitgar las persunalias vegn controllà, sch'il certificat preschentà è vegnì emess per la persuna ch'al preschenta.\"</string>\n\n\t<!-- Frage 4 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_4\">\"Pon vegnir verifitgads er certificats COVID esters?\"</string>\n\n\t<!-- Antwort 4 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_4\">\"Gea, certificats COVID ch'èn cumpatibels cun il «Digital Covid Certificate» da la UE pon vegnir verifitgads cun l'app COVID Certificate Check areguard ils criteris da valaivladad da la Svizra.\"</string>\n\n\t<!-- Frage 5 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_5\">\"Tge datas ves jau tar la procedura da verificaziun?\"</string>\n\n\t<!-- Antwort 5 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_5\">\"Tar la procedura da verificaziun vesais Vus mo il num e la data da naschientscha da la possessura u dal possessur dal certificat e sch'il certificat COVID è valaivel.\"</string>\n\n\t<!-- Frage 6 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_question_6\">\"Vegnan arcunadas datas en in sistem central u en l'app COVID Certificate Check tar la procedura da verificaziun?\"</string>\n\n\t<!-- Antwort 6 im FAQ der Verifier App -->\n\t<string name=\"verifier_faq_works_answer_6\">\"Na, tar la procedura da verificaziun na vegnan arcunadas naginas datas – ni en l'app COVID Certificate Check ni en in sistem central? I n'è pia betg pussaivel d'identifitgar tge certificat COVID ch'è vegnì verifitgà da tgi, cura e nua.\"</string>\n\n\t<!-- iOS Button zum Einstellungen öffnen -->\n\t<string name=\"ios_settings_open\">\"Configuraziun\"</string>\n\n\t<!-- Wallet: Onboarding externer Link zu Datenschutz -->\n\t<string name=\"wallet_onboarding_external_privacy_button\">\"Decleraziun davart la protecziun da datas &amp; cundiziuns d’utilisaziun\"</string>\n\n\t<!-- Wallet: Hinweis im Zertifikat Detail -->\n\t<string name=\"wallet_certificate_detail_note\">\"Quest attest n'è betg in document da viadi.\n&lt;br /&gt;&lt;br /&gt;\nLas enconuschientschas scientificas davart la vaccinaziun cunter COVID-19, davart la guariziun da COVID-19 e davart ils tests da COVID-19 sa sviluppan cuntinuadamain, er areguard las novas variantas privlusas dal virus.\n&lt;br /&gt;&lt;br /&gt;\nAs infurmai per plaschair avant in viadi davart las restricziuns e davart las reglas da valaivladad che valan al lieu da destinaziun. La valaivladad da Voss certificat vegn calculada a l'exteriur a maun da las reglas dal pajais da destinaziun.\"</string>\n\t<string name=\"wallet_terms_privacy_link\">\"https://www.bit.admin.ch/bit/de/home/dokumentation/covid-certificate-app.html\"</string>\n\t<string name=\"verifier_terms_privacy_link\">\"https://www.bit.admin.ch/bit/de/home/dokumentation/covid-certificate-check-app.html\"</string>\n\n\t<!-- Verifier: Titel in der App (z.B. Impressum) -->\n\t<string name=\"verifier_app_title\">\"COVID Certificate Check\"</string>\n\t<string name=\"wallet_faq_questions_question_1_1\">\"Co obtegn jau in certificat COVID suenter ina infecziun cun COVID-19?\"</string>\n\t<string name=\"wallet_faq_questions_answer_1_1\">\"Tut tenor il chantun vegn il certificat COVID per part emess directamain dal post da test u dal labor, nua che Voss test positiv è vegnì constatà. Sche quai n'è betg il cas, pudais Vus dumandar pli tard online in certificat COVID sur la pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID». Là vegn la dumonda elavurada da l'autoritad chantunala cumpetenta. La pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID» chattais Vus qua:\"</string>\n\n\t<!-- Wallet: Homescreen Was wollen sie machen? -->\n\t<string name=\"wallet_homescreen_what_to_do\">\"Tscherner il proxim pass\"</string>\n\n\t<!-- Wallet: Homescreen Titel Zertifikat hinzufügen -->\n\t<string name=\"wallet_homescreen_add_title\">\"Agiuntar in certificat\"</string>\n\n\t<!-- Wallet: Homescreen Zertifikat Description Text -->\n\t<string name=\"wallet_homescreen_add_certificate_description\">\"Vus avais in certificat COVID sin palpiri u sco PDF ed al vulais agiuntar a l'app.\"</string>\n\n\t<!-- Wallet: Homescreen Transfer-Code erstellen -->\n\t<string name=\"wallet_homescreen_add_transfer_code\">\"Crear in code da transfer\"</string>\n\n\t<!-- Wallet: Transfer Codes Titel -->\n\t<string name=\"wallet_transfer_code_onboarding_title\">\"Codes da transfer\"</string>\n\n\t<!-- Wallet: Transfer Code Text -->\n\t<string name=\"wallet_transfer_code_onboarding_text\">\"Vus pudais inditgar ils codes da transfer a chaschun da tests da COVID u vaccinaziuns cunter COVID-19. Vus retschavais alura il certificat COVID directamain en l'app.\"</string>\n\n\t<!-- Wallet: Transfer Code Onboarding Button -->\n\t<string name=\"wallet_transfer_code_onboarding_button\">\"Crear in code\"</string>\n\n\t<!-- Wallet: Transfer Code Onboarding So funktioniert's -->\n\t<string name=\"wallet_transfer_code_onboarding_howto\">\"Uschia funcziuni\"</string>\n\n\t<!-- prüfen -->\n\t<!-- Wallet: Transfer Code: FAQ Titel -->\n\t<string name=\"wallet_transfer_code_faq_questions_title\">\"Certificats COVID furnids directamain en l'app\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Text -->\n\t<string name=\"wallet_transfer_code_faq_questions_subtitle\">\"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app suenter in test dal coronavirus u ina vaccinaziun cunter COVID-19.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 1 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_1\">\"Tgi porscha la transmissiun cun in code da transfer?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 2 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_2\">\"Pon ils codes da transfer vegnir duvrads er per transmetter certificats da vaccinaziun?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 3 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_3\">\"Co funcziuna la transmissiun cun in code da transfer?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Frage 4 -->\n\t<string name=\"wallet_transfer_code_faq_questions_question_4\">\"Poss jau duvrar pliras giadas il medem code da transfer?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 1 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_1\">\"Sche Vus faschais in test dal coronavirus (test da PCR u test svelt d'antigens) u sche Vussurvegnis ina vaccinaziun cunter COVID-19, po il code da transfer vegnir en funcziun per transmetter sveltamain ils certificats COVID.\n\nAs infurmai tar Voss center da test, tar il post da vaccinaziun, en l'apoteca u tar Vossa media u Voss medi, sche la transmissiun cun in code da transfer è pussaivla.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 2 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_2\">\"Actualmain è la transmissiun cun in code da transfer concepì per tests dal coronavirus. Co che Vus survegnis in certificat COVID suenter ina vaccinaziun, vegnis Vus a savair qua:\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 3 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_3\">\"En cas ch'il post che fa il test dal coronavirus u la vaccinaziun cunter COVID-19 porscha la transmissiun cun in code da transfer, pudais Vus inditgar Voss code da transfer gia tar l'annunzia, a chaschun da la prelevaziun dal test u avant che survegnir la vaccinaziun.\n\nIn code da transfer pudais Vus crear da tut temp en l'app «COVID Certificate». Cliccaii sin la pagina iniziala sin «Agiuntar» resp. sin il simbol «+» sutvart a dretga. Cliccai alura sin «Crear in code da transfer». L'app As mussa il code da 9 cifras.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ Antwort 4 -->\n\t<string name=\"wallet_transfer_code_faq_questions_answer_4\">\"Na, in code da transfer po vegnir duvrà mo ina giada. En cas che Vus vulais retschaiver plirs certificats, per exempel da confamigliaras u confamigliars, creai per plaschair per mintga certificat in nov code.\"</string>\n\t<string name=\"wallet_transfer_code_faq_works_title\">\"Uschia funcziuna il transfer\"</string>\n\n\t<!-- Wallet: Tranfser Code FAQ 2 Frage 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_question_1\">\"Co vegnan protegidas mias datas tar il transfer?\"</string>\n\n\t<!-- Wallet: Tranfser Code FAQ 2 Frage 2 -->\n\t<string name=\"wallet_transfer_code_faq_works_question_2\">\"Tge poss jau far, sch'il certificat n'arriva betg?\"</string>\n\n\t<!-- Wallet: Tranfser Code FAQ 2 Frage 3 -->\n\t<string name=\"wallet_transfer_code_faq_works_question_3\">\"Tge capita en cas d'in test positiv?\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ 2 Antwort 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_answer_1\">\"Per il transfer vegn Voss certificat COVID mess a disposiziun en moda codifitgada. Il code da transfer garantescha che mo Vossa app po retschaiver il certificat COVID. Las datas vegnan puspè stizzadas dal server immediatamain suenter il transfer.\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ 2 Antwort 2 -->\n\t<string name=\"wallet_transfer_code_faq_works_answer_2\">\"Uschespert ch'il certificat è vegnì generà dal labor u dal center da test, stat el a disposiziun per il transfer. Guardai che Voss smartphone saja collià cun l'internet per pudair retschaiver certificats.\n\nEn cas che Voss certificat COVID n'arriva tuttina betg, As drizzai al post che ha fatg il test (center da test, apoteca, media u medi).\"</string>\n\n\t<!-- Wallet: Transfer Code FAQ 2 Antwort 3 -->\n\t<string name=\"wallet_transfer_code_faq_works_answer_3\">\"En cas d'in test svelt d'antigens positiv na survegnis Vus betg in certificat COVID dal labor.\n\nEn cas d'in test da PCR positiv survegnis Vus in certificat COVID per persunas guaridas. El è valaivel a partir dal 11. di suenter la prelevaziun dal test.\"</string>\n\n\t<!-- Wallet: Transfer Code erstellt Titel -->\n\t<string name=\"wallet_transfer_code_code_created_title\">\"Voss code da transfer è vegnì creà\"</string>\n\n\t<!-- Wallet: Transfer-Code -->\n\t<string name=\"wallet_transfer_code_title\">\"Code da transfer\"</string>\n\n\t<!-- Wallet: Transfer Code Erstelltm am {DATE} -->\n\t<string name=\"wallet_transfer_code_createdat\">\"Creà ils {DATE}\"</string>\n\n\t<!-- Wallet: Transfer Code Nächste Schritte -->\n\t<string name=\"wallet_transfer_code_next_steps\">\"Proxims pass\"</string>\n\n\t<!-- Wallet: Transfer Code Nächste Schritte 1 -->\n\t<string name=\"wallet_transfer_code_next_steps1\">\"Consegnai il code a l'apoteca, al center da test u a la media / al medi a chaschun da la prova da test.\"</string>\n\n\t<!-- Wallet: Transfer Code Nächste Schritte 2 -->\n\t<string name=\"wallet_transfer_code_next_steps2\">\"En cas che Vus vulais retschaiver plirs certificats, per exempel da confamigliaras u confamigliars, creai per mintga certificat in nov code.\"</string>\n\n\t<!-- Wallet: Transfer Code Fertig Button -->\n\t<string name=\"wallet_transfer_code_done_button\">\"Terminà\"</string>\n\n\t<!-- Wallet: Transfer Code Card Titel -->\n\t<string name=\"wallet_transfer_code_card_title\">\"Transfer\"</string>\n\n\t<!-- Wallet: Transfer Code Staus Warten auf Transfer -->\n\t<string name=\"wallet_transfer_code_state_waiting\">\"Spetgar il transfer\"</string>\n\n\t<!-- Wallet: Transfer Code Ablauf in 1 Tag -->\n\t<string name=\"wallet_transfer_code_expire_singular\">\"Anc valaivel 1 di\"</string>\n\n\t<!-- Wallet: Transfer Code: Läuft ab in {DAYS} Tagen -->\n\t<string name=\"wallet_transfer_code_expire_plural\">\"Anc valaivel {DAYS} dis\"</string>\n\n\t<!-- Wallet: Transfer Code Status Abgelaufen -->\n\t<string name=\"wallet_transfer_code_state_expired\">\"Il transfer n'è betg reussì\"</string>\n\n\t<!-- Wallet: Transfer Code Alter Code Titel -->\n\t<string name=\"wallet_transfer_code_old_code\">\"Il code è scadì\"</string>\n\n\t<!-- Wallet: Transfer Code State Zuletzt aktualisiert {DATE} -->\n\t<string name=\"wallet_transfer_code_state_updated\">\"Actualisà l'ultima giada\n{DATE}\"</string>\n\n\t<!-- Wallet: Transfer Code Kein Zertifikat mehr -->\n\t<string name=\"wallet_transfer_code_state_no_certificate\">\"Cun quest transfer na po vegnir retschavì pli nagin certificat.\"</string>\n\n\t<!-- Wallet: Fehler Format des Zertifikat ungültig -->\n\t<string name=\"wallet_error_invalid_format\">\"Il format dal certificat\nn’è betg valaivel\"</string>\n\n\t<!-- Wallet: Fehler Format des Zertifikat ungültig Fett -->\n\t<string name=\"wallet_error_invalid_format_bold\">\"n’è betg valaivel\"</string>\n\n\t<!-- Verifier: Error Ungültiges Format -->\n\t<string name=\"verifier_error_invalid_format\">\"Il format dal certificat COVID n’è betg valaivel.\"</string>\n\n\t<!-- Homescreen Zertifikat: Offline Modus Text -->\n\t<string name=\"wallet_homescreen_offline\">\"Modus offline\"</string>\n\n\t<!-- Wallet: Detail Offline Text -->\n\t<string name=\"wallet_offline_description\">\"Per pudair mussar la valaivladad actuala sto l’app esser regularmain online.\"</string>\n\n\t<!-- Wallet: Retry Titel Offline -->\n\t<string name=\"wallet_detail_offline_retry_title\">\"La verificaziun n’è betg pussaivla en il modus offline\"</string>\n\n\t<!-- Wallet: Detail Netzwerkfehler Titel -->\n\t<string name=\"wallet_detail_network_error_title\">\"Actualmain n’è la verificaziun betg pussaivla\"</string>\n\n\t<!-- Wallet: Detail Netzwerkfehler Text -->\n\t<string name=\"wallet_detail_network_error_text\">\"Empruvai pli tard anc ina giada\"</string>\n\n\t<!-- Verifier: Titel Fehler wenn kein Internet -->\n\t<string name=\"verifier_offline_error_title\">\"La verificaziun n’è betg pussaivla en il modus offline\"</string>\n\n\t<!-- Verifier: Fehlertext wenn Offline bei Verifikation -->\n\t<string name=\"verifier_offline_error_text\">\"Per actualisar las glistas da verificaziun dovri ina colliaziun cun l’internet.\"</string>\n\n\t<!-- Verifier: Fehler Titel bei Netzwerkfehler -->\n\t<string name=\"verifier_network_error_title\">\"Verificaziun betg reussida\"</string>\n\n\t<!-- Verifier: Fehler Text bei Netzwerkfehler -->\n\t<string name=\"verifier_network_error_text\">\"Igl è capità in sbagl imprevis\"</string>\n\n\t<!-- Wallet: Text auf Zertifikat auf Homescreen bei Netzwerkfehler -->\n\t<string name=\"wallet_homescreen_network_error\">\"La valaivladad n’ha betg pudì vegnir eruida\"</string>\n\n\t<!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_intro_1\">\"L'app verifitgescha regularmain, schebain in certificat COVID è disponibel per Voss code da transfer.\"</string>\n\n\t<!-- Wallet: Transfer Code So Funktionierts Text 2 -->\n\t<string name=\"wallet_transfer_code_faq_works_intro_2\">\"Uschespert ch'il certificat COVID è disponibel, cumpara el en l'app. Sche Vus avais activà ils avis, vegnis Vus infurmada u infurmà da l'app.\"</string>\n\n\t<!-- Wallet: Transfer Code So Funktionierts Text 1 -->\n\t<string name=\"wallet_transfer_code_faq_works_intro_3\">\"Suenter {TRANSFER_CODE_VALIDITY} dis scada il code da transfer. Silsuenter spetga l'app anc ulteriuras 72 uras, avant ch'il code da transfer daventa nunvalaivel.\"</string>\n\n\t<!-- Wallet: Titel im Custom-Popup Notification Permission -->\n\t<string name=\"wallet_notification_permission_title\">\"Permetter avis\"</string>\n\n\t<!-- Wallet: Text im Custom-Popup Notification Permission -->\n\t<string name=\"wallet_notification_permission_text\">\"L'app As po infurmar, uschespert ch'il certificat è arrivà. Permettai a l'app d'As trametter avis.\"</string>\n\n\t<!-- Wallet: Button im Custom-Popup Notification Permission -->\n\t<string name=\"wallet_notification_permission_button\">\"Vinavant\"</string>\n\n\t<!-- Externe URL im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_external_link\">\"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"</string>\n\n\t<!-- Label der externen URL im \"So funktionierts\" Screen beim Scannen -->\n\t<string name=\"wallet_scanner_howitworks_external_link_title\">\"Ulteriuras infurmaziuns\"</string>\n\n\t<!-- Buttontitel im Screen, wo ein Code erstellt werden kann -->\n\t<string name=\"wallet_transfer_code_create_code_button\">\"Crear in code\"</string>\n\n\t<!-- Wallet: Transfer Code Ablauf in 1 Tag (fetter Teil) -->\n\t<string name=\"wallet_transfer_code_expire_singular_bold\">\"1 di\"</string>\n\n\t<!-- Wallet: Transfer Code: Läuft in {DAYS} Tagen ab (fetter Teil) -->\n\t<string name=\"wallet_transfer_code_expire_plural_bold\">\"{DAYS} dis\"</string>\n\n\t<!-- Infotext bei erfolgreicher Prüfung (Blacklist) -->\n\t<string name=\"verifier_verify_success_info_for_blacklist\">\"Betg revocar\"</string>\n\n\t<!-- Infotext bei erfolgreicher Prüfung (Zertifikat) -->\n\t<string name=\"verifier_verify_success_info_for_certificate_valid\">\"La signatura è valaivla\"</string>\n\n\t<!-- Teil der Fehlermeldung bei noch nicht/nicht mehr gültigem Zertifikat, der Bold sein sollte (ref. verifier_verifiy_error_expired und _notyetvalid) -->\n\t<string name=\"verifier_verify_error_validity_range_bold\">\"Na correspunda betg als criteris da valaivladad da la Svizra.\"</string>\n\n\t<!-- Wallet: Transfer Code Fehler Titel -->\n\t<string name=\"wallet_transfer_code_error_title\">\"Il code da transfer n'ha betg pudì vegnir creà\"</string>\n\n\t<!-- Wallet: Erstellen Fehler Titel -->\n\t<string name=\"wallet_transfer_code_no_internet_title\">\"Nagina colliaziun cun l'internet\"</string>\n\n\t<!-- Wallet: Erstellen anderer Fehler Titel -->\n\t<string name=\"wallet_transfer_code_generate_error_title\">\"Igl è capità in sbagl imprevis.\"</string>\n\n\t<!-- Wallet: Aktualisierung Transfer Code Fehler Titel -->\n\t<string name=\"wallet_transfer_code_update_error_title\">\"Actualmain n'è l'actualisaziun betg pussaivla\"</string>\n\n\t<!-- Wallet: Transfer Code Update Fehler Text -->\n\t<string name=\"wallet_transfer_code_update_no_internet_error_text\">\"Per pudair retschaiver il transfer, sto l'app esser online.\"</string>\n\n\t<!-- Wallet Transfer Code Update Fehler Text -->\n\t<string name=\"wallet_transfer_code_update_general_error_text\">\"Igl è capità in sbagl imprevis. Empruvai pli tard anc ina giada.\"</string>\n\n\t<!-- Wallet: Transfer Code Fehlertext bei Generieren -->\n\t<string name=\"wallet_transfer_code_generate_error_text\">\"Empruvai pli tard anc ina giada.\"</string>\n\n\t<!-- Wallet: Transfer Code Fehlertext bei Generieren ohne Internet -->\n\t<string name=\"wallet_transfer_code_generate_no_internet_error_text\">\"Per pudair crear in code da transfer, sto l'app esser online.\"</string>\n\n\t<!-- Wallet: Accessibility Name für Refresh Button -->\n\t<string name=\"accessibility_refresh_button\">\"Actualisar\"</string>\n\t<string name=\"wallet_transfer_delete_confirm_text\">\"Vulais Vus propi stizzar il transfer?\"</string>\n\t<string name=\"wallet_notification_transfer_title\">\"Transfer reussì\"</string>\n\t<string name=\"wallet_notification_transfer_text\">\"Il certificat COVID è arrivà\"</string>\n\t<string name=\"wallet_faq_questions_question_2_1\">\"Quant ditg è il certificat COVID valaivel?\"</string>\n\t<string name=\"wallet_faq_questions_answer_2_1\">\"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. A l'exteriur valan mintgamai las reglas da valaivladad dal pajais respectiv. As infurmai curt avant Vossa partenza sur la pagina d'internet da las autoritads da Voss pajais da transit u da destinaziun, sch'i valan en il pajais anc mesiras sin basa dal certificat, e sche gea, tge duradas da valaivladad che Voss pajais da destinaziun ha fixà. Pagina d'internet utila per viadis a l'exteriur:\"</string>\n\t<string name=\"wallet_faq_questions_linktext_2_1\">\"Re-open EU (europa.eu)\"</string>\n\t<string name=\"wallet_faq_questions_linkurl_2_1\">\"https://reopen.europa.eu/de\"</string>\n\t<string name=\"wallet_faq_works_question_3_1\">\"Poss jau er duvrar l'app offline?\"</string>\n\t<string name=\"wallet_faq_works_answer_3_1\">\"Vus pudais duvrar l'app senza ina colliaziun cun l'internet. Er en il modus offline pon ils certificats vegnir preschentads sco er scannads e verifitgads da las controlladras e dals controlladers.\"</string>\n\t<string name=\"verifier_faq_works_question_2_1\">\"Tge èn ils criteris da valaivladad actuals da la Svizra?\"</string>\n\t<string name=\"verifier_faq_works_answer_2_1\">\"La durada da valaivladad vertenta actuala dals certificats COVID chattais Vus qua:\"</string>\n\t<string name=\"verifier_faq_works_linktext_2_1\">\"Ulteriuras infurmaziuns\"</string>\n\t<string name=\"verifier_faq_works_linkurl_2_1\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"</string>\n\t<string name=\"verifier_faq_works_question_7\">\"Pon ils certificats er vegnir verifitgads offline?\"</string>\n\t<string name=\"verifier_faq_works_answer_7\">\"Da princip pon ils certificats COVID er vegnir verifitgads senza ina colliaziun cun l'internet. Per far quai vegnan chargiadas giu regularmain d'in server central glistas da verificaziun actualisadas. Questas glistas da verificaziun arcunadas localmain na dastgan betg esser pli veglias che 48 uras.\n\nPer actualisar las glistas da verificaziun sto l'app esser colliada cun l'internet e vegnir averta. L'actualisaziun succeda immediatamain ed automaticamain.\"</string>\n\n\t<!-- Button zum QR Code Scannen öffnen -->\n\t<string name=\"wallet_homescreen_qr_code_scannen\">\"Scannar il code QR\"</string>\n\n\t<!-- Button zum PDF importieren -->\n\t<string name=\"wallet_homescreen_pdf_import\">\"Importar il PDF\"</string>\n\n\t<!-- Wallet: Titel im Transfer Code screen bei deaktiveren Notifications -->\n\t<string name=\"wallet_notification_disabled_titel\">\"Activar avis\"</string>\n\n\t<!-- Wallet: Button im Transfer Code screen bei deaktiveren Notifications der die Einstellungen öffnet -->\n\t<string name=\"wallet_notification_disabled_button\">\"Activar\"</string>\n\n\t<!-- Titel für einen \"Nachweis\" (e.g. unvollständige Impfung) -->\n\t<string name=\"wallet_certificate_evidence_title\">\"Cumprova\"</string>\n\n\t<!-- Typenbezeichnung für eine unvollständige Impfung -->\n\t<string name=\"wallet_certificate_type_incomplete_vaccine\">\"Vaccinaziun incumpletta\"</string>\n\n\t<!-- Label für das Erstellungsdatum eines Nachweises (mit Platzhalter für Datum und Uhrzeit) -->\n\t<string name=\"wallet_certificate_evidence_creation_date\">\"Cumprova emessa ils\n{DATE}\"</string>\n\t<string name=\"wallet_transfer_code_faq_questions_linktext_2\">\"Ulteriuras infurmaziuns\"</string>\n\t<string name=\"wallet_transfer_code_faq_questions_linkurl_2\">\"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"</string>\n\n\t<!-- Wallet: Zertifikat Light Button im Zertifikat Detail -->\n\t<string name=\"wallet_certificate_detail_certificate_light_button\">\"Certificat light\"</string>\n\n\t<!-- Wallet: Export Button im Zertifikat Detail -->\n\t<string name=\"wallet_certificate_detail_export_button\">\"Exportar\"</string>\n\n\t<!-- Wallet: Zertifikat Light Title -->\n\t<string name=\"wallet_certificate_light_detail_title\">\"Tge è in certificat light?\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Titel -->\n\t<string name=\"wallet_certificate_light_detail_summary_title\">\"Certificat light\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 1 -->\n\t<string name=\"wallet_certificate_light_detail_summary_1\">\"Po vegnir duvrà mo en Svizra\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 2 -->\n\t<string name=\"wallet_certificate_light_detail_summary_2\">\"Cuntegna mo il num, il prenum, la data da naschientscha ed ina signatura digitala\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 3 -->\n\t<string name=\"wallet_certificate_light_detail_summary_3\">\"Valaivel per max. {LIGHT_CERT_VALIDITY_IN_H} uras\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 4 -->\n\t<string name=\"wallet_certificate_light_detail_summary_4\">\"La conversiun dal certificat COVID en in certificat light succeda online.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Summary Punkt 5 -->\n\t<string name=\"wallet_certificate_light_detail_summary_5\">\"Vus pudais deactivar da tut temp il certificat light per puspè midar al certificat COVID normal.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivieren Button -->\n\t<string name=\"wallet_certificate_light_detail_deactivate_button\">\"Deactivar\"</string>\n\n\t<!-- Wallet: Zertifikat Light Deaktivieren Button -->\n\t<string name=\"wallet_certificate_light_detail_activate_button\">\"Activar\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation Error -->\n\t<string name=\"wallet_certificate_light_detail_activation_error\">\"Il certificat light n'ha betg pudì vegnir activà\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Titel -->\n\t<string name=\"wallet_certificate_light_detail_activation_network_error_text\">\"Per pudair activar il certificat light sto l'app esser online.\"</string>\n\n\t<!-- Info Text bei erfolgreicher Prüfung einers Zertifikate Light -->\n\t<string name=\"verifier_verify_success_certificate_light_info\">\"Valaivel mo cun in document da legitimaziun\ne mo en Svizra\"</string>\n\n\t<!-- Wallet: Zertifikat Export Title -->\n\t<string name=\"wallet_certificate_export_title\">\"Exportar il certificat COVID\"</string>\n\n\t<!-- Wallet: Zertifikat Export Erklärung Punkt 1 -->\n\t<string name=\"wallet_certificate_export_summary_1\">\"Or da las datas da Voss certificat COVID vegn creà in PDF che Vus pudais stampar u cundivider.\"</string>\n\n\t<!-- Wallet: Zertifikat Export Erklärung Punkt 2 -->\n\t<string name=\"wallet_certificate_export_summary_2\">\"La creaziun dal document PDF succeda online.\"</string>\n\n\t<!-- Wallet: Zertifikat Export Button -->\n\t<string name=\"wallet_certificate_export_button\">\"Exportar\"</string>\n\n\t<!-- Wallet: Zertifikat Export Error Title -->\n\t<string name=\"wallet_certificate_export_detail_error_title\">\"Il PDF n'ha betg pudì vegnir creà\"</string>\n\n\t<!-- Wallet: Zertifikat Export Netzwerk Error -->\n\t<string name=\"wallet_certificate_export_detail_network_error_text\">\"Per pudair crear il PDF sto l'app esser online.\"</string>\n\t<string name=\"accessibility_qr_code\">\"code QR\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation Netzwerk Fehler Title -->\n\t<string name=\"wallet_certificate_light_detail_activation_network_error_title\">\"Nagina colliaziun cun l'internet\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation General Fehler Text -->\n\t<string name=\"wallet_certificate_light_detail_activation_general_error_text\">\"Empruvai pli tard anc ina giada.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Aktivation General Fehler Titel -->\n\t<string name=\"wallet_certificate_light_detail_activation_general_error_title\">\"Igl è capità in sbagl imprevis.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Titel -->\n\t<string name=\"wallet_certificate_light_title\">\"Certificat light\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Detail Title -->\n\t<string name=\"wallet_certificate_export_detail_title\">\"Exportar\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Summary 1 -->\n\t<string name=\"wallet_certificate_export_detail_summary_1\">\"Or da las datas da Voss certificat COVID vegn creà in PDF che Vus pudais stampar u cundivider.\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Summary 2 -->\n\t<string name=\"wallet_certificate_export_detail_summary_2\">\"La creaziun dal document PDF succeda online.\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail Export Button -->\n\t<string name=\"wallet_certificate_export_detail_export_button\">\"Exportar\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail Netzwerk Fehler -->\n\t<string name=\"wallet_certificate_export_detail_network_error_title\">\"Nagina colliaziun cun l'internet\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail General Fehler -->\n\t<string name=\"wallet_certificate_export_detail_general_error_title\">\"Igl è capità in sbagl imprevis.\"</string>\n\n\t<!-- Wallet: Zertifikat Exportieren Datail General Fehler Text -->\n\t<string name=\"wallet_certificate_export_detail_general_error_text\">\"Igl è capità in sbagl imprevis.Empruvai pli tard anc ina giada.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Erklärungstext 1 -->\n\t<string name=\"wallet_certificate_light_detail_text_1\">\"Sche Vus activais il certificat light, vegn creà or da las datas da Voss certificat COVID in nov code QR che na cuntegna naginas datas da sanadad.\"</string>\n\n\t<!-- Wallet: Zertifikat Light Erklärungstext 2 -->\n\t<string name=\"wallet_certificate_light_detail_text_2\">\"Entant ch'il certificat COVID normal po vegnir duvrà en il rom da sia valaivladad senza restricziuns tant en Svizra sco er en il stadis da la UE e da la AECL, po il certificat light vegnir duvrà mo en Svizra.Per motivs da la protecziun da datas sto il certificat light vegnir activà danovamain suenter {LIGHT_CERT_VALIDITY_IN_H} uras. El na porta nagins dretgs supplementars en cumparegliaziun cun il certificat COVID normal. \"</string>\n\n\t<!-- Wallet: Zertifikat Light Erklärungstext Bold -->\n\t<string name=\"wallet_certificate_light_detail_text_2_bold\">\"mo danovamain nagins\"</string>\n\n\t<!-- VoiceOver reads this when the expandable box is reduced -->\n\t<string name=\"accessibility_expandable_box_reduced_state\">\"reducì\"</string>\n\n\t<!-- VoiceOver reads this when the expandable box is expanded -->\n\t<string name=\"accessibility_expandable_box_expanded_state\">\"extendì\"</string>\n\n\t<!-- Header im Update Boarding-Screen -->\n\t<string name=\"wallet_update_boarding_header\">\"Update\"</string>\n\n\t<!-- Titel im Zertifikat Light-Screen -->\n\t<string name=\"wallet_update_boarding_certificate_light_title\">\"Certificat light\"</string>\n\n\t<!-- Text im Zertifikat Light-Screen -->\n\t<string name=\"wallet_update_boarding_certificate_light_text\">\"Cun quest update pudais Vus laschar generar en l'app ina copia dal certificat senza las datas da sanadad per il diever en Svizra. Per quest intent èn vegnidas actualisadas las cundiziuns d'utilisaziun e la decleraziun davart la protecziun da datas che valan sco acceptadas, sche Vus duvrais vinavant l'app.\"</string>\n\n\t<!-- Header im Update Boarding-Screen -->\n\t<string name=\"verifier_update_boarding_header\">\"Update\"</string>\n\n\t<!-- Titel im Zertifikat Light-Screen -->\n\t<string name=\"verifier_update_boarding_certificate_light_title\">\"Certificat light\"</string>\n\n\t<!-- Text im Zertifikat Light-Screen -->\n\t<string name=\"verifier_update_boarding_certificate_light_text\">\"Cun quest update pudais Vus verifitgar en l'app er la copia dal certificat senza las datas da sanadad. Per quest intent èn vegnidas actualisadas las cundiziuns d'utilisaziun e la decleraziun davart la protecziun da datas che valan sco acceptadas, sche Vus duvrais vinavant l'app.\"</string>\n\n\t<!-- Verifier: Die Gültigkeit eines Certificate Light ist abgelaufen -->\n\t<string name=\"verifier_certificate_light_error_expired\">\"La valaivladad dal certificat\nè scadida\"</string>\n\n\t<!-- Wallet: Badge für Light-Zertifikate in Liste Zertifikate -->\n\t<string name=\"wallet_certificate_list_light_certificate_badge\">\"Light\"</string>\n\t<string name=\"wallet_faq_questions_question_6\">\"Tge è in certificat light?\"</string>\n\n\t<!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n\t<string name=\"wallet_faq_questions_answer_6\">\"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Il «certificat light» conferma ch'igl è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad.\n\nQuest certificat cun ina quantitad minimala da datas è vegnì sviluppà sco alternativa al certificat COVID sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai ch'ils certificats COVID cuntegnan tschertas datas da sanadad ch'èn visiblas, sco per exempel il vaccin u la data da la vaccinaziun. Cun agid dal «certificat light» vegn quai impedì.\n\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da {LIGHT_CERT_VALIDITY_IN_H} uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà avant che las {LIGHT_CERT_VALIDITY_IN_H} uras èn passadas, po il «certificat light» simplamain vegnir deactivà.\"</string>\n\t<string name=\"verifier_faq_works_question_8\">\"Tge è in certificat light?\"</string>\n\n\t<!-- there is a placeholder ({LIGHT_CERT_VALIDITY_IN_H}) which describes the number of hours a light certificate is valid. do NOT translate! -->\n\t<string name=\"verifier_faq_works_answer_8\">\"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Quest «certificat light» mussa mo ch'i è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad.\n\nL'alternativa al certificat COVID è vegnida sviluppada sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai che terzas persunas pudessan – en il rom da la verificaziun da certificats COVID e cun apps sviluppadas sez – prender invista da datas da sanadad, sco per exempel dal vaccin u da la data da la vaccinaziun. Cun agid dal «certificat COVID» vegn quai impedì.\n\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da {LIGHT_CERT_VALIDITY_IN_H} uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà gia pli baud, po il certificat light simplamain vegnir deactivà.\"</string>\n\t<string name=\"verifier_faq_works_question_9\">\"Co po in certificat light puspè vegnir transfurmà en in certificat COVID confurm a la UE/AECL?\"</string>\n\t<string name=\"verifier_faq_works_answer_9\">\"La possessura u il possessur po deactivar da tut temp il certificat light en l'app «COVID Certificate». Alura stat puspè a disposiziun il certificat COVID normal. \"</string>\n\n\t<!-- Wallet: Light Zertifikat Accessibility Gültigkeits Label {TIMESPAN} wird ersetzt durch zB. 5 Stunden 3 Minuten -->\n\t<string name=\"wallet_accessibility_light_certificate_expiration_timer\">\"Anc valaivel {TIMESPAN}\"</string>\n\n\t<!-- Toast Text wenn ein Transfer Code durch Klicken kopiert wurde -->\n\t<string name=\"wallet_transfer_code_copied\">\"Copià il code da transfer\"</string>\n\t<string name=\"wallet_faq_works_question_2_1\">\"Tge è in code da transfer?\"</string>\n\t<string name=\"wallet_faq_works_answer_2_1\">\"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app suenter in test dal coronavirus u ina vaccinaziun cunter COVID-19.\"</string>\n\t<string name=\"wallet_faq_works_question_5_1\">\"Jau hai il certificat COVID mo en moda digitala en l'app. Co survegn jau il certificat sco PDF u sin palpiri?\"</string>\n\t<string name=\"wallet_faq_works_answer_5_1\">\"En la vista detagliada dal certificat COVID digital en l'app «COVID Certificate» chattais Vus la funcziun «Exportar». Uschia pudais Vus generar in PDF, l'arcunar ed al stampar.\"</string>\n\n\t<!-- wallet android app google play store deep link -->\n\t<string name=\"wallet_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.wallet\"</string>\n\n\t<!-- verifer android app google play store deep link -->\n\t<string name=\"verifier_android_app_google_play_store_url\">\"market://details?id=ch.admin.bag.covidcertificate.verifier\"</string>\n\n\t<!-- Wallet: Titel Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n\t<string name=\"wallet_certificate_light_rate_limit_title\">\"La limita da 24 uras è cuntanschida\"</string>\n\n\t<!-- Wallet: Text Fehlermeldung wenn Conversion Rate Limit erreicht wurde -->\n\t<string name=\"wallet_certificate_light_rate_limit_text\">\"Il certificat light è gia vegnì activà memia savens durant las ultimas 24 uras.\"</string>\n\t<string name=\"error_file_import_title\">\"Import betg reussì\"</string>\n\t<string name=\"error_file_import_text\">\"La datoteca na cuntegna nagin code QR valaivel ubain il code QR n'ha betg pudì vegnir reconuschì.\"</string>\n\n\t<!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten titel -->\n\t<string name=\"wallet_transfer_code_unexpected_error_title\">\"Sbagl nunspetgà\"</string>\n\n\t<!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten text -->\n\t<string name=\"wallet_transfer_code_unexpected_error_text\">\"Contactai per plaschair il support\"</string>\n\n\t<!-- Wallet: Transfercode ein unerwartet Fehler ist aufgetreten telefon nummer -->\n\t<string name=\"wallet_transfer_code_unexpected_error_phone_number\">\"+41 58 466 07 99\"</string>\n\t<string name=\"error_corrupt_sharedprefs_title\">\"Sbagl da decodaziun\"</string>\n\t<string name=\"error_corrupt_sharedprefs_text\">\"In arcun da l'app n'ha betg pudì vegnir decodà. Per pudair utilisar vinavant l'app, sto l'arcun vegnir stizzà e creà da nov. Cun far quai van a perder datas.\"</string>\n\n\t<!-- Einstellungen: Titel -->\n\t<string name=\"settings_title\">\"Parameters\"</string>\n\n\t<!-- Einstellungen: Titel Sprachauswahl -->\n\t<string name=\"language_title\">\"Lingua\"</string>\n\n\t<!-- Information about the date format (always english) -->\n\t<string name=\"wallet_certificate_detail_date_format_info\">\"Date format used: dd.mm.yyyy\"</string>\n\t<string name=\"wallet_certificate_test_holder_and_name\">\"Producent e Num\"</string>\n\n\t<!-- Wallet: Fehler-Titel falls Uhrzeit falsch eingestellt bei Transfer-Code -->\n\t<string name=\"wallet_transfer_code_time_inconsistency_title\">\"Sbagl uras\"</string>\n\n\t<!-- Wallet: Transfer-Code Fehler-Text, falls Zeit falsch eingestellt -->\n\t<string name=\"wallet_transfer_code_time_inconsistency_text\">\"Las uras ston esser configuradas endretg, per ch’ils codes da transfer funcziunian. Adattai Vossas uras ed empruvai anc ina giada.\"</string>\n\n\t<!-- Toast Text wenn ein UVCI durch Klicken kopiert wurde -->\n\t<string name=\"wallet_uvci_copied\">\"Copià il UVCI\"</string>\n\n\t<!-- canton name ag -->\n\t<string name=\"vaccination_booking_ag_name\">\"Argovia\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ag -->\n\t<string name=\"vaccination_booking_ag_url\">\"https://www.ag.ch/coronavirus-impfung\"</string>\n\n\t<!-- canton name ar -->\n\t<string name=\"vaccination_booking_ar_name\">\"Appenzell Dadora\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ar -->\n\t<string name=\"vaccination_booking_ar_url\">\"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"</string>\n\n\t<!-- canton name ai -->\n\t<string name=\"vaccination_booking_ai_name\">\"Appenzell Dadens\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ai -->\n\t<string name=\"vaccination_booking_ai_url\">\"https://www.ai.ch/coronavirus-impfung\"</string>\n\n\t<!-- canton name bl -->\n\t<string name=\"vaccination_booking_bl_name\">\"Basilea-Champagna\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton bl -->\n\t<string name=\"vaccination_booking_bl_url\">\"https://www.bl.ch/impfen\"</string>\n\n\t<!-- canton name bs -->\n\t<string name=\"vaccination_booking_bs_name\">\"Basilea-Citad\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton bs -->\n\t<string name=\"vaccination_booking_bs_url\">\"http://www.coronaimpfzentrumbasel.ch\"</string>\n\n\t<!-- canton name be -->\n\t<string name=\"vaccination_booking_be_name\">\"Berna\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton be -->\n\t<string name=\"vaccination_booking_be_url\">\"http://www.be.ch/corona-impfung\"</string>\n\n\t<!-- canton name fr -->\n\t<string name=\"vaccination_booking_fr_name\">\"Friburg\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton fr -->\n\t<string name=\"vaccination_booking_fr_url\">\"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"</string>\n\n\t<!-- canton name ge -->\n\t<string name=\"vaccination_booking_ge_name\">\"Genevra\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ge -->\n\t<string name=\"vaccination_booking_ge_url\">\"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"</string>\n\n\t<!-- canton name gl -->\n\t<string name=\"vaccination_booking_gl_name\">\"Glaruna\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton gl -->\n\t<string name=\"vaccination_booking_gl_url\">\"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"</string>\n\n\t<!-- canton name gr -->\n\t<string name=\"vaccination_booking_gr_name\">\"Grischun\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton gr -->\n\t<string name=\"vaccination_booking_gr_url\">\"https://www.gr.ch/RM/instituziuns/administraziun/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"</string>\n\n\t<!-- canton name ju -->\n\t<string name=\"vaccination_booking_ju_name\">\"Giura\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ju -->\n\t<string name=\"vaccination_booking_ju_url\">\"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"</string>\n\n\t<!-- canton name lu -->\n\t<string name=\"vaccination_booking_lu_name\">\"Lucerna\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton lu -->\n\t<string name=\"vaccination_booking_lu_url\">\"http://www.lu.ch/covid_impfung\"</string>\n\n\t<!-- canton name ne -->\n\t<string name=\"vaccination_booking_ne_name\">\"Neuchâtel\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ne -->\n\t<string name=\"vaccination_booking_ne_url\">\"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"</string>\n\n\t<!-- canton name nw -->\n\t<string name=\"vaccination_booking_nw_name\">\"Sutsilvania\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton nw -->\n\t<string name=\"vaccination_booking_nw_url\">\"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"</string>\n\n\t<!-- canton name ow -->\n\t<string name=\"vaccination_booking_ow_name\">\"Sursilvania\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ow -->\n\t<string name=\"vaccination_booking_ow_url\">\"https://www.ow.ch/dienstleistungen/7129\"</string>\n\n\t<!-- canton name sg -->\n\t<string name=\"vaccination_booking_sg_name\">\"Son Gagl\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton sg -->\n\t<string name=\"vaccination_booking_sg_url\">\"https://www.sg.ch/coronavirus/impfen\"</string>\n\n\t<!-- canton name sh -->\n\t<string name=\"vaccination_booking_sh_name\">\"Schaffusa\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton sh -->\n\t<string name=\"vaccination_booking_sh_url\">\"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"</string>\n\n\t<!-- canton name sz -->\n\t<string name=\"vaccination_booking_sz_name\">\"Sviz\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton sz -->\n\t<string name=\"vaccination_booking_sz_url\">\"https://www.sz.ch/corona-impfen\"</string>\n\n\t<!-- canton name so -->\n\t<string name=\"vaccination_booking_so_name\">\"Soloturn\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton so -->\n\t<string name=\"vaccination_booking_so_url\">\"https://so.ch/coronaimpfung\"</string>\n\n\t<!-- canton name tg -->\n\t<string name=\"vaccination_booking_tg_name\">\"Turgovia\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton tg -->\n\t<string name=\"vaccination_booking_tg_url\">\"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"</string>\n\n\t<!-- canton name ti -->\n\t<string name=\"vaccination_booking_ti_name\">\"Tessin\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ti -->\n\t<string name=\"vaccination_booking_ti_url\">\"http://www.ti.ch/vaccinazione\"</string>\n\n\t<!-- canton name ur -->\n\t<string name=\"vaccination_booking_ur_name\">\"Uri\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton ur -->\n\t<string name=\"vaccination_booking_ur_url\">\"https://www.ur.ch/themen/3673\"</string>\n\n\t<!-- canton name vs -->\n\t<string name=\"vaccination_booking_vs_name\">\"Vallais\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton vs -->\n\t<string name=\"vaccination_booking_vs_url\">\"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"</string>\n\n\t<!-- canton name vd -->\n\t<string name=\"vaccination_booking_vd_name\">\"Vad\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton vd -->\n\t<string name=\"vaccination_booking_vd_url\">\"https://vd.ch/coronavirus-vaccins\"</string>\n\n\t<!-- canton name zg -->\n\t<string name=\"vaccination_booking_zg_name\">\"Zug\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton zg -->\n\t<string name=\"vaccination_booking_zg_url\">\"https://www.corona-impfung-zug.ch/\"</string>\n\n\t<!-- canton name zh -->\n\t<string name=\"vaccination_booking_zh_name\">\"Turitg\"</string>\n\n\t<!-- url for booking an appointment for vaccination for canton zh -->\n\t<string name=\"vaccination_booking_zh_url\">\"http://www.zh.ch/coronaimpfung\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_2\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_2\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus viagiar libramain en la gronda part dals pajais.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_3\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_3\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus As proteger cunter ina infecziun e cunter in eventual grev decurs da la malsogna.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_4\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_4\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus As immunisar en moda segira.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_5\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_5\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a reducir la chargia da la malsogna.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_6\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_6\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a cumbatter cunter las consequenzas da la pandemia.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_7\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_7\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus evitar las consequenzas da lunga durada d'ina infecziun cun COVID-19.\"</string>\n\n\t<!-- vaccination hint box title -->\n\t<string name=\"vaccination_hint_title_8\">\"Sa laschar vaccinar ussa!\"</string>\n\n\t<!-- vaccination hint box text -->\n\t<string name=\"vaccination_hint_text_8\">\"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a distgargiar il sistem da sanadad.\"</string>\n\n\t<!-- vaccination booking info screen title -->\n\t<string name=\"vaccination_booking_info_title\">\"Reservar in termin da vaccinaziun en Vossa vischinanza\"</string>\n\n\t<!-- vaccination booking info screen text -->\n\t<string name=\"vaccination_booking_info_text\">\"Ina vaccinaziun pudess per exempel vegnir fatga en quests lieus en Vossa vischinanza:\n\n- en centers da vaccinaziun specifics\n- en ospitals\n- tar Vossa media u tar Voss medi da chasa\n- en apotecas da vaccinaziun\n\nBlers lieus porschan er vaccinaziuns «walk-in» senza termin.\"</string>\n\n\t<!-- vaccination booking info screen info box at bottom -->\n\t<string name=\"vaccination_booking_info_info\">\"La vaccinaziun cunter COVID-19 è recumandada per persunas a partir da 5 onns.\"</string>\n\n\t<!-- Header on vaccination appointment screen -->\n\t<string name=\"vaccination_appointment_header\">\"Termin da vaccinaziun\"</string>\n\n\t<!-- Book vaccination appointment button title on homescreen -->\n\t<string name=\"vaccination_homescreen_button_title\">\"Reservar in termin da vaccinaziun\"</string>\n\n\t<!-- Choose your canton title in vaccination appointment screen -->\n\t<string name=\"vaccination_choose_your_canton\">\"Tscherni Voss chantun\"</string>\n\n\t<!-- Link title for more information about the vaccine -->\n\t<string name=\"vaccination_more_information_title\">\"Ulteriuras infurmaziuns davart la vaccinaziun cunter COVID-19\"</string>\n\n\t<!-- Button text for information about the vaccine at the bottom of the certificate -->\n\t<string name=\"vaccination_information_button_in_certificate\">\"Infurmaziuns davart la vaccinaziun\"</string>\n\n\t<!-- Vaccination Booking Info URL Link -->\n\t<string name=\"vaccination_booking_info_url\">\"https://bag-coronavirus.ch/impfung/\"</string>\n\n\t<!-- Show information if special hardware detected  -->\n\t<string name=\"verifier_qr_scanner_external_hardware_detected\">\"Identifitgà il scanner d'indriz tecnic extern\"</string>\n\n\t<!-- Error popup reset button text -->\n\t<string name=\"error_decryption_reset_button\">\"Reinizialisar\"</string>\n\n\t<!-- Text Certificate Could not be loaded {ERROR_CODE} gets replaces with the error code -->\n\t<string name=\"error_decryption_text\">\"Ils certificats n’han betg pudì vegnir chargiads\n\nCode: {ERROR_CODE}\"</string>\n\t<string name=\"covid_certificate_sero_positiv_test_title\">\"Guariziun (Anticorpuls)\"</string>\n\t<string name=\"wallet_time_inconsistency_error_title\">\"Verificaziun betg pussaivla\"</string>\n\t<string name=\"wallet_time_inconsistency_error_text\">\"La data, las uras u la zona da temp sin l'apparat n'èn betg configuradas correctamain.\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_title\">\"Vulais Vus verifitgar certificats?\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_text\">\"Per ina verificaziun pli svelta e confurma a la protecziun da datas, utilisai l'app «COVID Certificate Check».\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_button_check_app\">\"Tar l'app «COVID Certificate Check»\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_close\">\"Chapì\"</string>\n\t<string name=\"wallet_info_box_certificate_scan_text_bold\">\"«COVID Certificate Check»-App.\"</string>\n\t<string name=\"wallet_only_valid_in_switzerland\">\"Betg valaivel ordaifer la Svizra\"</string>\n\t<string name=\"covid_certificate_sero_positiv_test_befund_label\">\"Diagnosa\"</string>\n\t<string name=\"covid_certificate_sero_positiv_test_befund_value\">\"Suffizient\"</string>\n\n\t<!-- Ausnahme Test Zertifikat Detail: Titel für Startdatum des Attests -->\n\t<string name=\"wallet_certificate_ausnahme_test_attest_start_date\">\"Cumenzament da la valaivladad\"</string>\n\n\t<!-- Ausnahme Test Zertifikat Detail: Titel für verantwortliche Stelle für Ausstellung -->\n\t<string name=\"wallet_certificate_ausnahme_responsible_issuer\">\"Post responsabel per l'emissiun\"</string>\n\n\t<!-- Testname für Schweizer Ausnahme Zertifikat für Nicht-Testbare und Nicht-Impfbare Personen -->\n\t<string name=\"covid_certificate_ch_ausnahme_test_title\">\"Certificat excepziunal\"</string>\n\t<string name=\"infobox_update_title\">\"A disposiziun versiun nova\"</string>\n\t<string name=\"infobox_update_text\">\"Chargiai giu la nova versiun da l'app.\"</string>\n\t<string name=\"infobox_update_button\">\"Actualisar\"</string>\n\n\t<!-- vaccination booking  screen info about Impf-Check (impf-check.ch) -->\n\t<string name=\"vaccination_impf_check_info_text\">\"Il check da vaccinaziun COVID-19 As infurmescha davart las emprimas vaccinaziuns sco er davart las vaccinaziuns da rinfrestgament ed As maina al post da consultaziun correspundent da Voss chantun.  \"</string>\n\n\t<!-- button title for link to impf-check.ch -->\n\t<string name=\"vaccination_impf_check_action\">\"Al check da vaccinaziun\"</string>\n\n\t<!-- URL to ImpfCheck -->\n\t<string name=\"vaccination_impf_check_url\">\"https://covid19.impf-check.ch/\"</string>\n\t<string name=\"vaccination_impf_check_title\">\"Reservar in termin ussa\"</string>\n\t<string name=\"verifier_faq_works_linktext_1\">\"Video explicativ\"</string>\n\t<string name=\"verifier_faq_works_linkurl_1\">\"https://youtu.be/DClLZIUjr3w\"</string>\n\n\t<!-- Title of button to choose verification mode -->\n\t<string name=\"verifier_choose_mode_button_title\">\"Tscherner\"</string>\n\n\t<!-- 👍 -->\n\t<!-- Verifier app scan button with indication of mode -->\n\t<string name=\"verifier_homescreen_scan_button_with_mode\">\"Verifitgar ({MODE})\"</string>\n\n\t<!-- error if scan was performed with a no longer existing mode -->\n\t<string name=\"verifier_error_mode_no_longer_exists\">\"Il modus da verificaziun che Vus avais tschernì n’exista betg pli.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- title for info pop-up in wallet app describing the validation states for the different check modes -->\n\t<string name=\"wallet_check_mode_info_title\">\"Info\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 2G OK state -->\n\t<string name=\"wallet_check_mode_info_2g_ok_text\">\"Access a manaschis ed ad occurrenzas per persunas vaccinadas u guaridas.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 2G NOT OK state -->\n\t<string name=\"wallet_check_mode_info_2g_not_ok_text\">\"Nagin access.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> display name of check mode 3G -->\n\t<string name=\"verifier_check_mode_info_3g_title\">\"3G\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> display name of check mode 2G -->\n\t<string name=\"verifier_check_mode_info_2g_title\">\"2G\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n\t<string name=\"verifier_check_mode_info_3g_text_1\">\"Per manaschis ed occurrenzas cun ina regla da 3G.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n\t<string name=\"verifier_check_mode_info_3g_text_2\">\"En quest modus vegnan acceptads certificats COVID per persunas vaccinadas, per persunas guaridas u per persunas cun in test negativ.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 3g -->\n\t<string name=\"verifier_check_mode_info_3g_text_3\">\"En quest modus po vegnir verifitgà in certificat light.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n\t<string name=\"verifier_check_mode_info_2g_text_1\">\"Per manaschis ed occurrenzas cun ina regla da 2G.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n\t<string name=\"verifier_check_mode_info_2g_text_2\">\"En quest modus vegnan acceptads ils certificats COVID per persunas vaccinadas u per persunas guaridas.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2g -->\n\t<string name=\"verifier_check_mode_info_2g_text_3\">\"“Certificat light” na po betg vegnir verifitgà en il modus da verificaziun da 2G.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- Verifier: Modus auswählen Titel -->\n\t<string name=\"verifier_mode_title\">\"Modus da verificaziun\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 3G OK state -->\n\t<string name=\"wallet_check_mode_info_3g_ok_text\">\"Access a manaschis ed ad occurrenzas per persunas vaccinadas, guaridas u cun in test negativ.\"</string>\n\n\t<!-- 👍 -->\n\t<!-- text for info pop-up in wallet app describing 3G NOT OK state -->\n\t<string name=\"wallet_check_mode_info_3g_not_ok_text\">\"Nagin access.\"</string>\n\n\t<!-- Titel für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n\t<string name=\"verifier_verify_light_not_supported_by_mode_title\">\"Qua sa tracti d’in certificat light. In tal certificat na po betg vegnir verifitgà en il modus da verificaziun da {MODUS}.\"</string>\n\n\t<!-- Text für Fehler wenn Modus Light-Zertifikat nicht unterstützt -->\n\t<string name=\"verifier_verify_light_not_supported_by_mode_text\">\"Il certificat po en quest cas vegnir verifitgà mo, sch’il certificat light vegn midà enavos ad in certificat normal.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n\t<string name=\"verifier_check_mode_info_unselected_text_1\">\"Tscherni il modus da verificaziun, en il qual Vus vulais verifitgar ils certificats COVID.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text when no check mode is selected -->\n\t<string name=\"verifier_check_mode_info_unselected_text_2\">\"Il modus da verificaziun po vegnir midà da tut temp.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> display name of check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_title\">\"2G+\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_1\">\"Per manaschis ed occurrenzas, nua ch’i vegn verifitgà tenor la regla da 2G+.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_2\">\"Ultra d’in certificat COVID per persunas vaccinadas e guaridas dovri in certificat d'in test valaivel che sto vegnir verifitgà separadamain.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_3\">\"Excepziuns: Persunas ch'èn vegnidas vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch'èn guaridas (sin basa d'in test da PCR) avant maximalmain 120 dis\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode 2G+ -->\n\t<string name=\"verifier_check_mode_info_2g_plus_text_4\">\"En quest modus na pon vegnir verifitgads nagins certificats light.\"</string>\n\n\t<!-- 2G+: Anzeige, dass Zertifikat 2G erfüllt -->\n\t<string name=\"verifier_2g_plus_success2g\">\"Certificat COVID valaivel tenor la regla da 2G\"</string>\n\n\t<!-- 2G+: Info, dass Zertifikat + erfüllt -->\n\t<string name=\"verifier_2g_plus_successplus\">\"Certificat COVID valaivel per persunas testadas\"</string>\n\n\t<!-- Verifier: 2G+ Info, dass noch + nötig -->\n\t<string name=\"verifier_2g_plus_infoplus\">\"Admess per 2G+ mo en cumbinaziun cun la verificaziun d’in certificat d'in test valaivel.\"</string>\n\n\t<!-- Verifier: 2G+ Info dass noch 2G nötig -->\n\t<string name=\"verifier_2g_plus_info2g\">\"Admess per 2G+ mo en cumbinaziun cun la verificaziun d’in certificat COVID per persunas vaccinadas u guaridas.\"</string>\n\n\t<!-- Prüfung fehlgeschlagen App update nötig -->\n\t<string name=\"verifier_error_app_store_text\">\"Per verifitgar in tal certificat COVID dovri la versiun da l’app da verificaziun la pli nova. Actualisai per plaschair Vossa app ed empruvai anc ina giada.\"</string>\n\n\t<!-- Button Text für Prüfung fehlgeschlagen App update nötig  -->\n\t<string name=\"verifier_error_app_store_button\">\"Al App Store\"</string>\n\n\t<!-- check app -> check mode select pop-up -> display name of check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_title\">\"Certificat d'in test\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_text_1\">\"Per secturs che dovran in certificat d'in test valaivel.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_text_2\">\"En quest modus vegnan acceptads certificats COVID per persunas cun in test negativ sin basa d’in test da PCR u d’in test svelt d’antigens.\"</string>\n\n\t<!-- check app -> check mode select pop-up -> info text for check mode Testzertifikat -->\n\t<string name=\"verifier_check_mode_info_test_cert_text_3\">\"En quest modus na pon vegnir verifitgads nagins certificats light.\"</string>\n\n\t<!-- wallet refresh button removal info box text -->\n\t<string name=\"wallet_refresh_button_info_text_1\">\"La «buttun da refresh» è vegnida stizzada.\"</string>\n\n\t<!-- wallet refresh button removal info box text -->\n\t<string name=\"wallet_refresh_button_info_text_2\">\"Sche Voss certificat COVID è spirà u sch’el n’è tecnicamain betg valaivel, vegn quai inditgà directamain sin il certificat.\"</string>\n\n\t<!-- wallet refresh button removal info box text -->\n\t<string name=\"wallet_refresh_button_info_text_3\">\"Ils certificats COVID ston vegnir verifitgads cun l’app «COVID Certificate Check».\"</string>\n\n\t<!-- wallet refresh button removal info box fat title above text 3 -->\n\t<string name=\"wallet_refresh_button_info_fat_title_3\">\"Per las persunas che verifitgeschan\"</string>\n\n\t<!-- wallet refresh button removal info box link text -->\n\t<string name=\"wallet_refresh_button_info_link_text\">\"Dapli infurmaziuns\"</string>\n\n\t<!-- wallet refresh button removal info box link url -->\n\t<string name=\"wallet_refresh_button_info_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"</string>\n\n\t<!-- text for info pop-up in wallet app describing 2G+ OK state -->\n\t<string name=\"wallet_check_mode_info_2g_plus_ok_text\">\"Access a manaschis ed ad occurrenzas per persunas ch’èn vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch’èn guaridas (sin basa d’in test da PCR) avant maximalmain 120 dis. Vus na duvrais nagin certificat da test supplementar.\"</string>\n\n\t<!-- text for info pop-up in wallet app describing 2G+ NOT OK state -->\n\t<string name=\"wallet_check_mode_info_2g_plus_not_ok_text\">\"Per l’access a manaschis ed ad occurrenzas dovri ultra dal certificat COVID per persunas vaccinadas u guaridas in test negativ.\"</string>\n\n\t<!-- wallet refresh button removal info box title -->\n\t<string name=\"wallet_refresh_button_info_title\">\"Infurmaziun\"</string>\n\n\t<!-- Ausnahme-Zertifikat: Medizinisches Attest ausgestellt in -->\n\t<string name=\"wallet_certificate_ausnahme_issued_country\">\"L'attest dal medi è vegnì emess a\"</string>\n\n\t<!-- Wallet: Hinweis im Zertifikat Detail für Ausnahme Zertifikat -->\n\t<string name=\"wallet_certificate_detail_note_ausnahme\">\"Quest attest n'è betg in document da viadi.\n&lt;br /&gt;&lt;br /&gt;\nQuest certificat è valaivel mo per in tschert temp. La durada da valaivladad actuala en Svizra pudais Vus verifitgar da tut temp cun l'app «Covid-Certificate».\"</string>\n\n\t<!-- Wallet: Ausnahme Label für Liste -->\n\t<string name=\"covid_certificate_ch_ausnahme_list_label\">\"Excepziun\"</string>\n\n\t<!-- Wallet: Titel von einem positivem Antigen-Test -->\n\t<string name=\"covid_certificate_antigen_positive_test\">\"Guariziun (Test svelt d'antigens)\"</string>\n\n\t<!-- Wallet: Antigen Positive Titel von Testdatum -->\n\t<string name=\"wallet_certificate_antigen_positive_date\">\"Data da l'emprim resultat positiv\"</string>\n\n\t<!-- Wallet: Blaue Box für positiven Antigen-Test -->\n\t<string name=\"wallet_certificate_detail_note_positive_antigen\">\"Quest attest n'è betg in document da viadi.\n&lt;br /&gt;&lt;br /&gt;\nQuest certificat è valaivel mo per in tschert temp. La durada da valaivladad actuala en Svizra pudais Vus verifitgar da tut temp cun l'app «Covid-Certificate».\"</string>\n\n\t<!-- banner title on homescreen. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_homescreen_title\">\"Scada bainbaud\"</string>\n\n\t<!-- banner title in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_title\">\"Info\"</string>\n\n\t<!-- banner text in certificate detail view. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_text\">\"Quest certificat scada bainbaud.\"</string>\n\n\t<!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_detail_more_info\">\"Dapli infurmaziuns?\"</string>\n\n\t<!-- title for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_title\">\"Info\"</string>\n\n\t<!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text1\"></string>\n\n\t<!-- bold text box for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_bold_text\">\"Quest certificat COVID è valaivel mo pli intgins dis. Resguardai per plaschair la data da scadenza inditgà sin il certificat.\"</string>\n\n\t<!-- link text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_text\">\"Ed uss?\"</string>\n\n\t<!-- link url for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"</string>\n\n\t<!-- banner title on homescreen. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_homescreen_title\">\"Valaivladad pli curta\"</string>\n\n\t<!-- banner title in certificate detail view. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_detail_title\">\"Valaivladad pli curta\"</string>\n\n\t<!-- banner text in certificate detail view. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_detail_text\">\"Quest certificat scada bainbaud.\"</string>\n\n\t<!-- more info 'button' text in banner in certicate detail view. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_detail_more_info\">\"Dapli infurmaziuns\"</string>\n\n\t<!-- title for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_title\">\"Info\"</string>\n\n\t<!-- text for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_text1\">\"A partir dals 31-01-2022 valan en Svizra duradas da valaivladad reducidas da 270 dis empè da 365 dis per certificats COVID per persunas vaccinadas u guaridas. Quest certificat è pertutgà directamain da la valaivladad pli curta:\"</string>\n\n\t<!-- bold text box for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_bold_text\">\"Quest certificat COVID na po betg pli vegnir duvrà a partir dals 31-01-2022, perquai che la durada da valaivladad è lura gia scadida.\"</string>\n\n\t<!-- link text for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_text\">\"Dapli infurmaziuns\"</string>\n\n\t<!-- link url for pop up. case: certificate will be invalid at time of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_from_first_february_popup_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"</string>\n\n\t<!-- text for pop up. case: certificate will be invalid within three weeks of validity change. -->\n\t<string name=\"wallet_eol_banner_invalid_in_three_weeks_popup_text2\"></string>\n\t<string name=\"infobox_generic_title\">\"Tegnair en salv il certificat!\"</string>\n\t<string name=\"infobox_generic_text\">\"Sche Vus stizzais l'app, midais u perdais Voss smartphone, van er a perder Voss certificats COVID.\nTegnai perquai en salv Voss certificats er ordaifer l'app cun exportar quels sco PDF.\"</string>\n\t<string name=\"infobox_generic_button\">\"Dapli infurmaziuns\"</string>\n\t<string name=\"infobox_generic_url_android\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/ich-habe-das-covid-zertifikat-ausschliesslich-elektronisch-der-covid-certificate\"</string>\n\t<string name=\"infobox_generic_url_ios\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/ich-habe-das-covid-zertifikat-ausschliesslich-elektronisch-der-covid-certificate\"</string>\n\n\t<!-- accessibilityLabel for the \"1\"-icon -->\n\t<string name=\"wallet_scanner_how_it_works_accessibility_icon1\">\"Emprim\"</string>\n\n\t<!-- accessibilityLabel for the \"2\"-icon -->\n\t<string name=\"wallet_scanner_how_it_works_accessibility_icon2\">\"Segund\"</string>\n\n\t<!-- accessibilityLabel for the \"3\"-icon -->\n\t<string name=\"wallet_scanner_how_it_works_accessibility_icon3\">\"Terz\"</string>\n\n\t<!-- Reise-Check: Label des Buttons um Gültigkeit im Ausland zu prüfen -->\n\t<string name=\"wallet_foreign_rules_check_button\">\"Valaivladad en l'exteriur\"</string>\n\n\t<!-- Reise-Check: Titel des Reise-Check Screens -->\n\t<string name=\"wallet_foreign_rules_check_title\">\"Valaivladad per viadis a l'exteriur\"</string>\n\n\t<!-- Reise-Check: Untertitel des Reise-Check Screens -->\n\t<string name=\"wallet_foreign_rules_check_subtitle\">\"Vegni a savair avant in viadi a l'exteriur, sche Voss certificat COVID è valaivel il mument da l'entrada en il pajais da destinaziun.\"</string>\n\n\t<!-- Reise-Check: Titel der Länder- und Datumsauswahl -->\n\t<string name=\"wallet_foreign_rules_check_form_title\">\"Verifitgar per:\"</string>\n\n\t<!-- Reise-Check: Label des Länder Eingabefeldes -->\n\t<string name=\"wallet_foreign_rules_check_country_label\">\"Pajais:\"</string>\n\n\t<!-- Reise-Check: Wert wenn kein Land ausgewählt -->\n\t<string name=\"wallet_foreign_rules_check_country_empty_label\">\"Selecziunar\"</string>\n\n\t<!-- Reise-Check: Label des Datum Eingabefeldes -->\n\t<string name=\"wallet_foreign_rules_check_date_label\">\"Entrada ils:\"</string>\n\n\t<!-- Reise-Check: Fehlermeldung wenn Datum in der Vergangenheit liegt -->\n\t<string name=\"wallet_foreign_rules_check_date_in_past_error\">\"Las uras inditgadas èn en il passà\"</string>\n\n\t<!-- Reise-Check: Titel des Hinweise Abschnittes -->\n\t<string name=\"wallet_foreign_rules_check_hints_title\">\"Infurmaziuns\"</string>\n\n\t<!-- Reise-Check: Label für den Mehr Informationen Button -->\n\t<string name=\"wallet_foreign_rules_check_hints_more_info_label\">\"Dapli infurmaziuns chattais Vus sut\"</string>\n\n\t<!-- Reise-Check: Prüfstatus wenn noch kein Land ausgewählt wurde -->\n\t<string name=\"wallet_foreign_rules_check_state_empty\">\"Tscherni per plaschair in pajais e la data d'entrada.\"</string>\n\n\t<!-- Reise-Check: Titel des Auswahldialoges für das Land -->\n\t<string name=\"wallet_foreign_rules_check_country_picker_title\">\"Tscherner in pajais\"</string>\n\n\t<!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat gültig ist -->\n\t<string name=\"wallet_foreign_rules_check_state_valid\">\"Valaivel per entrar en:\"</string>\n\n\t<!-- Reise-Check: Erste Zeile des Prüfstatus wenn Zertifikat ungültig ist -->\n\t<string name=\"wallet_foreign_rules_check_state_invalid\">\"Betg valaivel per entrar en:\"</string>\n\n\t<!-- Reise-Check: Zweite Zeile des Prüfstatus wenn Zertifikat (un-)gültig ist. {COUNTRY} und {DATE} nicht übersetzen -->\n\t<string name=\"wallet_foreign_rules_check_state_country_and_date\">\"{COUNTRY}, {DATE}\"</string>\n\n\t<!-- Error-Titel falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n\t<string name=\"wallet_foreign_rules_check_error_title\">\"Sbagl cun chargiar ils pajais disponibels\"</string>\n\n\t<!-- Error-Text falls das Reisefeature (\"Gültigkeit im Ausland\") im Offline-Modus gestartet wurde -->\n\t<string name=\"wallet_foreign_rules_check_network_error_text\">\"Per verifitgar la valaivladad sto Voss smartphone esser collià cun l’internet.\"</string>\n\n\t<!-- Reisefeature: Hinweis 1 -->\n\t<string name=\"wallet_foreign_rules_check_hint_2\">\"Las reglas d'entrada pon sa midar. Verifitgai perquai la valaivladad curt avant che Vus partis ed As infurmai ultra da quai online davart las reglas d'entrada actualas dal pajais da destinaziun.\"</string>\n\n\t<!-- Reisefeature: Hinweis 2 -->\n\t<string name=\"wallet_foreign_rules_check_hint_3\">\"Las infurmaziuns qua survart sa refereschan mo a las reglas d'entrada dal pajais da destinaziun. Per secturs che pretendan eventualmain in certificat entaifer il pajais pon valair autras reglas.\"</string>\n\n\t<!-- Reisefeature: Hinweis 3 -->\n\t<string name=\"wallet_foreign_rules_check_hint_1\">\"Per l'actualitad e la cumplettadad da las infurmaziuns na surpiglia la Confederaziun nagina responsabladad.\"</string>\n\n\t<!-- Reisefeature: Hinweis 4 -->\n\t<string name=\"wallet_foreign_rules_check_hint_4\">\"N'avais Vus betg chattà Voss pajais da destinaziun? Betg tut ils pajais n'acceptan certificats COVID, u i n'èn vegnidas messas a disposiziun naginas infurmaziuns davart eventualas reglas d'entrada.\"</string>\n\n\t<!-- Reisefeature: Text des Mehr Infos Buttons -->\n\t<string name=\"wallet_foreign_rules_check_hints_more_info_link_text\">\"reopen.europa.eu\"</string>\n\n\t<!-- Reisefeature: URL die geöffnet wird wenn auf den Mehr Info Button geklickt wird -->\n\t<string name=\"wallet_foreign_rules_check_hints_more_info_link_url\">\"https://reopen.europa.eu/\"</string>\n\n\t<!-- RAT-Umwandlung:  Titel bei Zertifikat -->\n\t<string name=\"rat_conversion_overview_title\">\"Nov: Versiun cumpatibla cun il certificat da la UE\"</string>\n\n\t<!-- RAT-Umwandlung: Text bei Zertifikat -->\n\t<string name=\"rat_conversion_overview_text\">\"Per quest certificat COVID po vegnir dumandada ina versiun cumpatibla cun il certificat da la UE.\"</string>\n\n\t<!-- RAT-Umwandlung: Button-Text zu Umwandlung Detail -->\n\t<string name=\"rat_conversion_overview_button\">\"Dapli infurmaziuns\"</string>\n\n\t<!-- RAT-Umwandlung: Titel Detail -->\n\t<string name=\"rat_conversion_title\">\"Dumandar in certificat COVID (cumpatibel cun il certificat da la UE)\"</string>\n\n\t<!-- RAT-Umwandlung: Text auf Detail -->\n\t<string name=\"rat_conversion_text\">\"Da nov vegnan ils certificats COVID per persunas guaridas sin basa da tests svelts d'antigens acceptads er en la UE.\n\nPer quest certificat pudais Vus dumandar ina versiun cumpatibla cun il certificat da la UE. La dumonda per in tal certificat pudais Vus far al Post naziunal da dumondas.\"</string>\n\n\t<!-- RAT-Umwandlung: Title bei Formular-Verlinkung -->\n\t<string name=\"rat_conversion_form_title\">\"Al formular online dal Post naziunal da dumondas\"</string>\n\n\t<!-- Rat-Umwandlung: Text zum Formular -->\n\t<string name=\"rat_conversion_form_text\">\"Jau sun d'accord che las datas da quest certificat COVID vegnan transferidas en il formular dal Post naziunal da dumondas (ina pagina d'internet da la Confederaziun).\"</string>\n\n\t<!-- RAT-Umwandlung: Absprung Button -->\n\t<string name=\"rat_conversion_form_button\">\"Al formular\"</string>\n\n\t<!-- RAT-Umwandlung: Linktext zur Webseite nationale Antragsstelle -->\n\t<string name=\"rat_conversion_link_antragsstelle\">\"Pagina d'internet dal Post naziunal da dumondas (senza transferiment da datas)\"</string>\n\n\t<!-- RAT-Umwandlung: Info Text 1 -->\n\t<string name=\"rat_conversion_info1_text\">\"Sche la dumonda vegn acceptada, survegnis Vus il nov certificat COVID cumpatibel cun il certificat da la UE per posta. Quel pudais Vus alura arcunar en Vossa app. I n'è betg pussaivel d'As consegnar il certificat directamain en l'app.\"</string>\n\n\t<!-- RAT-Umwandlung: Info 2 Text -->\n\t<string name=\"rat_conversion_info2_text\">\"Cun transferir las datas dal certificat en il formular online po Vossa dumonda vegnir tractada en moda pli simpla.\"</string>\n\n\t<!-- Die URL für das Formular, mit dem für ein RAT Genesungszert ein reguläres Genesungszert beantragt werden kann -->\n\t<string name=\"wallet_rat_recovery_conversion_url\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\n\t<!-- RAT-Umwandlung: Titel vor Infos -->\n\t<string name=\"rat_conversion_info_title\">\"Ulteriuras infurmaziuns\"</string>\n\n\t<!-- cert renewal general info heading -->\n\t<string name=\"cert_renewal_info_info_heading\">\"Tge vul quai dir?\"</string>\n\n\t<!-- cert renewal general info text 1 -->\n\t<string name=\"cert_renewal_info_info_text_1\">\"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"</string>\n\n\t<!-- cert renewal general info text 2 -->\n\t<string name=\"cert_renewal_info_info_text_2\">\"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"</string>\n\n\t<!-- cert renewal general info text 3 -->\n\t<string name=\"cert_renewal_info_info_text_3\">\"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"</string>\n\n\t<!-- cert renewal general info text 4 -->\n\t<string name=\"cert_renewal_info_info_text_4\">\"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"</string>\n\n\t<!-- cert renewal info heading for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_heading\">\"Tge vul quai dir?\"</string>\n\n\t<!-- cert renewal text 1 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_1\">\"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"</string>\n\n\t<!-- cert renewal text 2 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_2\">\"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"</string>\n\n\t<!-- cert renewal text 3 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_3\">\"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"</string>\n\n\t<!-- cert renewal text 4 for soon to be expired or expired certificates -->\n\t<string name=\"cert_renewal_info_expired_text_4\">\"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"</string>\n\n\t<!-- cert renewal info heading for renewed certificates -->\n\t<string name=\"cert_renewal_info_renewed_heading\">\"Impurtant!\"</string>\n\n\t<!-- cert renewal text 1 for renewed certificates -->\n\t<string name=\"cert_renewal_info_renewed_text_1\">\"Remplazzai per plaschair tras questa nova versiun er ils certificats che Vus avais arcunà u stampà pli baud.\"</string>\n\n\t<!-- cert renewal text 2 for renewed certificates -->\n\t<string name=\"cert_renewal_info_renewed_text_2\">\"Quant ditg ch'ina vaccinaziun vegn renconuschida en in pajais, n'è betg fixà en il certificat. Quai vegn calculà a chaschun da la verificaziun tenor las reglas dal pajais che fa la verificaziun. La renovaziun dal code QR garantescha unicamain l'utilisaziun tecnica dal code QR\"</string>\n\n\t<!-- Wallet: Zertifikat QR Code läuft ab am {DATE} -->\n\t<string name=\"wallet_certificate_qr_code_expiration_date\">\"QR code expiration date (technical)\n{DATE}\"</string>\n\n\t<!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n\t<string name=\"wallet_certificate_renewal_required_bubble_title\">\"Renovar il code QR!\"</string>\n\n\t<!-- Wallet: Text der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n\t<string name=\"wallet_certificate_renewal_required_bubble_text\">\"Per pudair duvrar vinavant quest certificat sto il code QR vegnir renovà\"</string>\n\n\t<!-- Wallet: Buttontext der Info-Bubble wenn das Zertifikat erneuert werden muss -->\n\t<string name=\"wallet_certificate_renewal_required_bubble_button\">\"Dapli infurmaziuns\"</string>\n\n\t<!-- Wallet: Buttontext um den QR Code eines Zertifikats zu erneuern -->\n\t<string name=\"wallet_certificate_renew_now_button\">\"Renovar il code QR\"</string>\n\t<string name=\"wallet_certificate_renewal_qr_code_expiration\">\"Data da scadenza dal code QR\"</string>\n\t<string name=\"wallet_certificate_renewal_required_info\">\"La data da la scadenza tecnica da quest code QR è (bainbaud) arrivada.\"</string>\n\t<string name=\"wallet_certificate_renewal_in_progress_info\">\"Il code QR vegn renovà\"</string>\n\t<string name=\"wallet_certificate_renewal_successful_info\">\"Il code QR è vegnì renovà cun success.\"</string>\n\t<string name=\"wallet_certificate_renewal_offline_error_title\">\"Nagina colliaziun cun l'internet\"</string>\n\t<string name=\"wallet_certificate_renewal_offline_error_text\">\"Per pudair renovar il code QR sto l'app esser online.\"</string>\n\t<string name=\"wallet_certificate_renewal_general_error_title\">\"Igl è capità in sbagl imprevis.\"</string>\n\t<string name=\"wallet_certificate_renewal_general_error_text\">\"Empruvai pli tard anc ina giada\"</string>\n\n\t<!-- Wallet: Titel der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n\t<string name=\"wallet_certificate_renewal_successful_bubble_title\">\"Renovà cun success\"</string>\n\n\t<!-- Wallet: Text der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n\t<string name=\"wallet_certificate_renewal_successful_bubble_text\">\"Remplazzai per plaschair tras questa nova versiun er versiuns gia arcunadas e stampadas da quest certificat.\"</string>\n\n\t<!-- Wallet: Button der Info-Bubble wenn das Zertifikat erfolgreich erneuert wurde -->\n\t<string name=\"wallet_certificate_renewal_successful_bubble_button\">\"Dapli infurmaziuns\"</string>\n\n\t<!-- Wallet: QR Code des Zertifikats abgelaufen -->\n\t<string name=\"wallet_error_qr_code_expired\">\"La data da la scadenza tecnica da quest code QR è arrivada.\"</string>\n\t<string name=\"wallet_certificate_renewal_rate_limit_error_title\">\"La limita da 24 uras è cuntanschida\"</string>\n\t<string name=\"wallet_certificate_renewal_rate_limit_error_text\">\"Code QR renovà memia savens. Renovaziun bloccada temporarmain.\"</string>\n\t<string name=\"wallet_certificate_renewal_faq_link_text\">\"A la FAQ\"</string>\n\t<string name=\"wallet_certificate_renewal_faq_link_url\">\"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"</string>\n\t<string name=\"terms_and_conditions_update_boarding_title\">\"Actualisaziun\"</string>\n\t<string name=\"terms_and_conditions_update_boarding_text\">\"Las cundiziuns d’utilisaziun e la decleraziun davart la protecziun da datas da l’app èn vegnidas actualisadas en tscherts puncts ed adattadas a las basas legalas. \"</string>\n\t<string name=\"wallet_validity_since_vaccination_date\">\"Data da la vaccinaziun\"</string>\n\t<string name=\"wallet_validity_since_test_date\">\"Data dal test negativ\"</string>\n\n\t<!-- vor 2 Tagen - must be before \"2 Tagen\"! -->\n\t<string name=\"wallet_validity_since_prefix\">\"avant\"</string>\n\n\t<!-- vor 1 Stunde -->\n\t<string name=\"wallet_validity_since_hours_singular\">\"1 ura\"</string>\n\n\t<!-- vor 2 Stunden -->\n\t<string name=\"wallet_validity_since_hours_plural\">\"{HOURS} uras\"</string>\n\n\t<!-- vor 1 Tag -->\n\t<string name=\"wallet_validity_since_days_singular\">\"1 di\"</string>\n\n\t<!-- vor 2 Tagen -->\n\t<string name=\"wallet_validity_since_days_plural\">\"{DAYS} dis\"</string>\n\t<string name=\"wallet_update_boarding_page_1_title\">\"Tge è nov?\"</string>\n\t<string name=\"wallet_update_boarding_page_1_text\">\"Sin il certificat COVID vegn da nov betg pli mussà il champ «Valaivladad en Svizra». Empè da quai mussa l'app la data da la vaccinaziun resp. dal test. Pertge?\"</string>\n\t<string name=\"wallet_update_boarding_page_2_title\">\"Certificats COVID en Svizra\"</string>\n\t<string name=\"wallet_update_boarding_page_2_bullet_1\">\"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022.\"</string>\n\t<string name=\"wallet_update_boarding_page_2_bullet_2\">\"Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han nagina impurtanza pratica pli en Svizra.\"</string>\n\t<string name=\"wallet_update_boarding_page_2_bullet_3\">\"La durada da valaivladad svizra n'ha er nagina impurtanza a l'exteriur.\"</string>\n\t<string name=\"wallet_update_boarding_page_3_title\">\"Certificats COVID a l'exteriur\"</string>\n\t<string name=\"wallet_update_boarding_page_3_bullet_1\">\"A l'exteriur valan mintgamai las reglas dal pajais respectiv.\"</string>\n\t<string name=\"wallet_update_boarding_page_3_bullet_2\">\"Da nov mussa l'app, avant quants dis ch'igl è vegnì fatg ina vaccinaziun resp. in test.\"</string>\n\t<string name=\"wallet_update_boarding_page_3_bullet_3\">\"Uschia pudais Vus constatar en moda pli simpla, sche Voss certificat correspunda a las reglas da Voss pajais da destinaziun (premess ch'il pajais pretenda anc in certificat).\"</string>\n\t<string name=\"wallet_update_boarding_page_4_title\">\"La situaziun actuala en l'Europa e sin l'entir mund\"</string>\n\t<string name=\"wallet_update_boarding_page_4_bullet_1\">\"La gronda part dals pajais en l'Europa ha entant abolì l'obligatori dal certificat per l'entrada en il pajais.\"</string>\n\t<string name=\"wallet_update_boarding_page_4_bullet_2\">\"La funcziun «Valaivladad a l'exteriur» è perquai medemamain vegnida stizzada.\"</string>\n\t<string name=\"wallet_update_boarding_page_4_bullet_3\">\"Sche l'obligatori dal certificat vala anc en in tschert pajais, vegnis Vus a savair sin questas paginas d'internet:\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_1_text\">\"reopen.europa.eu\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_1_url\">\"https://reopen.europa.eu\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_2_text\">\"iatatravelcentre.com\"</string>\n\t<string name=\"wallet_update_boarding_page_4_link_2_url\">\"https://www.iatatravelcentre.com\"</string>\n\t<string name=\"wallet_validity_since_more_hours_prefix\">\"avant pli che\"</string>\n\t<string name=\"wallet_validity_since_recovery_date\">\"Data dal test positiv\"</string>\n\t<string name=\"covid_certificate_news_text\">\"Abolì l'obligatori dal certificat\"</string>\n\t<string name=\"covid_certificate_news_title\">\"Abolì l'obligatori dal certificat\"</string>\n\t<string name=\"covid_certificate_news_item1\">\"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022.\"</string>\n\t<string name=\"covid_certificate_news_item2\">\"Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han nagina impurtanza pratica pli en Svizra.\"</string>\n\t<string name=\"covid_certificate_news_item3\">\"Questa app svizra da controlla controllescha certificats COVID tenor las reglas da valaivladad svizras. Il resultat da la controlla n'è betg relevant per il diever a l'exteriur.\"</string>\n\t<string name=\"covid_certificate_news_item4\">\"Sch'in pajais premetta anc in certificat COVID, valan mintgamai las reglas dal pajais respectiv.\"</string>\n\t<string name=\"wallet_faq_questions_linktext_1_1\">\"Plattafurma naziunala da dumondas per il certificat COVID (admin.ch)\"</string>\n\t<string name=\"wallet_faq_questions_linkurl_1_1\">\"https://covidcertificate-form.admin.ch/immunityrequest\"</string>\n\t<string name=\"wallet_faq_questions_question_2_2\">\"Jau fatsch in viadi a l'exteriur e dovrel in certificat COVID per entrar en il pajais. Tge stoss jau resguardar?\"</string>\n\t<string name=\"wallet_faq_questions_answer_2_2\">\"A l'exteriur valan mintgamai las reglas da valaivladad dal pajais respectiv, e quai tant per entrar en il pajais sco er per activitads entaifer il pajais da destinaziun. Per l'utilisaziun dal certificat entaifer il pajais da destinaziun pon valair autras reglas che per l'entrada en il pajais. Questas reglas pon midar a curta vista. As infurmai perquai curt avant Vossa partenza sur la pagina d'internet da las autoritads da Voss pajais da transit u da destinaziun, sch'i valan là anc reglas en connex cun COVID-19, e sche gea, tgeninas.\"</string>\n\t<string name=\"wallet_error_not_fully_protected_national_rules\">\"Seria da vaccinaziun incumpletta tenor ils standards internaziunals.\"</string>\n</resources>"
  },
  {
    "path": "common/src/main/res/xml/network_security_config.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2020 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<network-security-config>\n\t<!-- use default system config -->\n</network-security-config>"
  },
  {
    "path": "common/src/prod/java/ch/admin/bag/covidcertificate/common/debug/DebugFragment.kt",
    "content": "package ch.admin.bag.covidcertificate.common.debug\n/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport android.content.Context\nimport androidx.fragment.app.Fragment\n\nopen class DebugFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): DebugFragment = DebugFragment()\n\n\t\tconst val EXISTS = false\n\n\t\tfun initDebug(context: Context) {}\n\t}\n\n}"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionSha256Sum=f581709a9c35e9cb92e16f585d2c4bc99b2b1a5f85d2badbd3dc6bff59e1e6dd\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-7.2-bin.zip\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\n"
  },
  {
    "path": "gradle.properties",
    "content": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\norg.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true\n# AndroidX package structure to make it clearer which packages are bundled with the\n# Android operating system, and which are packaged with your app\"s APK\n# https://developer.android.com/topic/libraries/support-library/androidx-rn\nandroid.useAndroidX=true\n# Automatically convert third-party libraries to use AndroidX\nandroid.enableJetifier=true\n# Kotlin code style for this project: \"official\" or \"obsolete\":\nkotlin.code.style=official\n\n# Bouncy Castle included some JDK15 classes starting with v1.67 which fails with Jetifier.\n# Since Jetifier is an Android tool to migrate old support to AndroidX dependencies, blacklisting BC should not make any difference\nandroid.jetifier.ignorelist = bcprov-jdk15on\n"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS='\"-Xmx64m\" \"-Xms64m\"'\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn () {\n    echo \"$*\"\n}\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\n  NONSTOP* )\n    nonstop=true\n    ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" -a \"$nonstop\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin or MSYS, switch paths to Windows format before running java\nif [ \"$cygwin\" = \"true\" -o \"$msys\" = \"true\" ] ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=`expr $i + 1`\n    done\n    case $i in\n        0) set -- ;;\n        1) set -- \"$args0\" ;;\n        2) set -- \"$args0\" \"$args1\" ;;\n        3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Escape application args\nsave () {\n    for i do printf %s\\\\n \"$i\" | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\$s/\\$/' \\\\\\\\/\" ; done\n    echo \" \"\n}\nAPP_ARGS=`save \"$@\"`\n\n# Collect all arguments for the java command, following the shell quoting and substitution rules\neval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS \"\\\"-Dorg.gradle.appname=$APP_BASE_NAME\\\"\" -classpath \"\\\"$CLASSPATH\\\"\" org.gradle.wrapper.GradleWrapperMain \"$APP_ARGS\"\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (the \"License\");\r\n@rem you may not use this file except in compliance with the License.\r\n@rem You may obtain a copy of the License at\r\n@rem\r\n@rem      https://www.apache.org/licenses/LICENSE-2.0\r\n@rem\r\n@rem Unless required by applicable law or agreed to in writing, software\r\n@rem distributed under the License is distributed on an \"AS IS\" BASIS,\r\n@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n@rem See the License for the specific language governing permissions and\r\n@rem limitations under the License.\r\n@rem\r\n\r\n@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Resolve any \".\" and \"..\" in APP_HOME to make it shorter.\r\nfor %%i in (\"%APP_HOME%\") do set APP_HOME=%%~fi\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\"-Xmx64m\" \"-Xms64m\"\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif \"%ERRORLEVEL%\" == \"0\" goto execute\r\n\r\necho.\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto execute\r\n\r\necho.\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %*\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\nexit /b 1\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "loadConfigs.sh",
    "content": "#!/bin/bash\n\napps=(\"wallet\" \"verifier\")\nenvironments=(\"prod\" \"abn\" \"dev\")\n\ntimestamp=$(date +%s%N | cut -b1-13)\n\nfor app in ${apps[@]}; do\n  for environment in ${environments[@]}; do\n    if [[ $environment = \"prod\" ]]; then\n      subdomain=\"cc-a\" # Take the prod config from the ABN environment\n      output=\"${app}/src/main/assets/faq/config.json\"\n    elif [ $environment = \"abn\" ]; then\n      subdomain=\"cc-a\"\n      output=\"${app}/src/${environment}/assets/faq/config.json\"\n    elif [ $environment = \"dev\" ]; then\n      subdomain=\"cc-d\"\n      output=\"${app}/src/${environment}/assets/faq/config.json\"\n    fi\n\n    versionName=$(cat \"${app}/build.gradle\" | sed -n -e 's/^.*versionName\\s*\"\\(.*\\)\"$/\\1/p')\n    url=\"https://www.${subdomain}.bit.admin.ch/app/${app}/v1/config?osversion=android&appversion=android-${versionName}&buildnr=${timestamp}\"\n\n    echo \"Loading fallback ${environment} config for ${app} from ${url}\"\n    curl $url | jq > $output\n  done\ndone\n"
  },
  {
    "path": "settings.gradle",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\ninclude ':common'\ninclude ':verifier'\ninclude ':wallet'\nrootProject.name = \"CovidCertificate\"\n"
  },
  {
    "path": "verifier/.gitignore",
    "content": "/build"
  },
  {
    "path": "verifier/build.gradle",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nplugins {\n\tid 'com.android.application'\n\tid 'kotlin-android'\n\tid 'com.google.devtools.ksp' version '1.6.10-1.0.4'\n\tid 'org.sonarqube' version '3.0'\n\tid 'ch.ubique.gradle.ubdiag'\n}\n\next.readProperty = { paramName -> readPropertyWithDefault(paramName, null) }\next.readPropertyWithDefault = { paramName, defaultValue ->\n\tif (project.hasProperty(paramName)) {\n\t\treturn project.getProperties().get(paramName)\n\t} else {\n\t\tProperties properties = new Properties()\n\t\tif (project.rootProject.file('local.properties').exists()) {\n\t\t\tproperties.load(project.rootProject.file('local.properties').newDataInputStream())\n\t\t}\n\t\tif (properties.getProperty(paramName) != null) {\n\t\t\treturn properties.getProperty(paramName)\n\t\t} else {\n\t\t\treturn defaultValue\n\t\t}\n\t}\n}\n\nandroid {\n\tcompileSdkVersion 31\n\n\tdefaultConfig {\n\t\tapplicationId \"ch.admin.bag.covidcertificate.verifier\"\n\t\tminSdkVersion readPropertyWithDefault('minSdkVersion', '23').toInteger()\n\t\ttargetSdkVersion 31\n\t\tversionCode 4_10_00_00\n\t\tversionName \"4.10.0\"\n\n\t\t// Stops the Gradle plugin’s automatic rasterization of vectors\n\t\tgeneratedDensities = []\n\n\t\tbuildConfigField \"long\", \"BUILD_TIME\", readPropertyWithDefault('buildTimestamp', System.currentTimeMillis()) + 'L'\n\n\t\ttestInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"\n\t}\n\n\tproductFlavors {\n\t\t// These app tokens are reserved for the official COVID Certificate Check app.\n\t\t// If you intend to integrate the CovidCertificate-SDK into your app, please get in touch with BIT/BAG to get a token assigned.\n\t\tdev {\n\t\t\tbuildConfigField \"String\", \"BASE_URL\", '\"https://www.cc-d.bit.admin.ch/app/verifier/v1/\"'\n\t\t\tbuildConfigField \"String\", \"SDK_APP_TOKEN\", '\"7f64903d-4420-4cc3-ac90-c14306b5e556\"'\n\t\t\tapplicationIdSuffix '.dev'\n\t\t}\n\t\tabn {\n\t\t\tbuildConfigField \"String\", \"BASE_URL\", '\"https://www.cc-a.bit.admin.ch/app/verifier/v1/\"'\n\t\t\tbuildConfigField \"String\", \"SDK_APP_TOKEN\", '\"f731fd3b-cb55-4cfd-9c46-fb3a927ffcd8\"'\n\t\t\tapplicationIdSuffix '.abn'\n\t\t}\n\t\tprod {\n\t\t\tbuildConfigField \"String\", \"BASE_URL\", '\"https://www.cc.bit.admin.ch/app/verifier/v1/\"'\n\t\t\tbuildConfigField \"String\", \"SDK_APP_TOKEN\", '\"25958ed0-7790-4846-9341-7c7ef87ec389\"'\n\t\t}\n\t}\n\n\tflavorDimensions \"version\"\n\n\tsigningConfigs {\n\t\trelease {\n\t\t\tstoreFile file(readPropertyWithDefault('keystoreFile', 'testKeystore'))\n\t\t\tstorePassword readProperty('keystorePassword')\n\t\t\tkeyAlias readPropertyWithDefault('keyAlias', 'keyAlias')\n\t\t\tkeyPassword readProperty('keyAliasPassword')\n\t\t}\n\t}\n\n\tbuildTypes {\n\t\trelease {\n\t\t\tminifyEnabled false\n\t\t\tproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n\t\t\tsigningConfig signingConfigs.release\n\t\t}\n\t}\n\n\tcompileOptions {\n\t\tcoreLibraryDesugaringEnabled true\n\n\t\tsourceCompatibility JavaVersion.VERSION_1_8\n\t\ttargetCompatibility JavaVersion.VERSION_1_8\n\t}\n\n\tkotlinOptions {\n\t\tjvmTarget = '1.8'\n\t}\n\n\tbuildFeatures {\n\t\tviewBinding true\n\t}\n}\n\n\nsonarqube {\n\tproperties {\n\t\tproperty \"sonar.projectName\", \"COVID Certificate Check App Android\"\n\t\tproperty \"sonar.projectKey\", \"admin-ch_CovidCertificate-App-Android\"\n\t\tproperty \"sonar.organization\", \"admin-ch\"\n\t\tproperty \"sonar.host.url\", \"https://sonarcloud.io\"\n\t}\n}\n\ndependencies {\n\n\timplementation 'com.google.android.material:material:1.5.0'\n\timplementation project(':common')\n\n\tcoreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'\n\n\timplementation 'androidx.core:core-ktx:1.7.0'\n\timplementation 'androidx.appcompat:appcompat:1.4.1'\n\timplementation 'androidx.constraintlayout:constraintlayout:2.1.3'\n\timplementation 'androidx.fragment:fragment-ktx:1.4.0'\n\timplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'\n\timplementation \"androidx.viewpager2:viewpager2:1.0.0\"\n\timplementation 'androidx.security:security-crypto:1.0.0'\n\n\timplementation 'com.squareup.retrofit2:retrofit:2.9.0'\n\timplementation 'com.squareup.retrofit2:converter-moshi:2.9.0'\n\timplementation 'com.squareup.okhttp3:logging-interceptor:4.9.1'\n\timplementation 'com.squareup.moshi:moshi:1.13.0'\n\tksp \"com.squareup.moshi:moshi-kotlin-codegen:1.13.0\"\n\n\ttestImplementation 'junit:junit:4.13.2'\n\tandroidTestImplementation 'androidx.test.ext:junit:1.1.3'\n\tandroidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'\n}"
  },
  {
    "path": "verifier/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile"
  },
  {
    "path": "verifier/src/abn/assets/faq/config.json",
    "content": "{\n  \"forceUpdate\": false,\n  \"infoBox\": null,\n  \"questions\": null,\n  \"works\": {\n    \"de\": {\n      \"faqTitle\": \"So werden Covid-Zertifikate geprüft\",\n      \"faqSubTitle\": \"Mit der COVID Certificate Check App können QR-Codes auf Covid-Zertifikaten gescannt und die Zertifikate auf Echtheit und Gültigkeit überprüft werden.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie können Covid-Zertifikate geprüft werden?\",\n          \"text\": \"Um ein Covid-Zertifikat zu prüfen, scannen Sie den QR-Code auf dem Papierzertifikat oder in der vorgewiesenen COVID Certificate App mit der dafür vorgesehenen COVID Certificate Check App.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Erklärvideo\",\n          \"linkUrl\": \"https://youtu.be/DClLZIUjr3w\"\n        },\n        {\n          \"title\": \"Was wird genau geprüft?\",\n          \"text\": \"Beim Scannen werden drei Aspekte geprüft:\\n– Enthält das Zertifikat eine gültige elektronische Signatur?\\n– Ist das Zertifikat nicht widerrufen worden?\\n– Entspricht das Zertifikat den Gültigkeitskriterien der Schweiz?\\n\\nWenn alle drei Aspekte positiv bewertet werden, wird das Covid-Zertifikat als gültig ausgewiesen.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was sind die aktuellen Gültigkeitskriterien der Schweiz?\",\n          \"text\": \"Die aktuell geltende Gültigkeitsdauer von Covid-Zertifikaten finden Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Weitere Informationen\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Welche Ausweisdokumente sind gültig? Weshalb müssen die Personalien überprüft werden?\",\n          \"text\": \"Neben Pass oder ID werden auch andere Ausweisdokumente akzeptiert, die die Identität der betreffenden Person mit einem Foto belegen (z.B. Führerausweis). Das Covid-Zertifikat ist zwar fälschungssicher, mit der Überprüfung der Personalien wird aber erst sichergestellt, dass das vorgezeigte Zertifikat auch auf den Vorweisenden ausgestellt wurde.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Welche Daten sehe ich beim Prüfvorgang?\",\n          \"text\": \"Beim Prüfvorgang sehen Sie nur den Namen und das Geburtsdatum der Zertifikatsinhaberin oder des Zertifikatsinhabers und ob das Covid-Zertifikat gültig ist.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Werden beim Prüfvorgang in der COVID Certificate Check App oder in einem zentralen System Daten gespeichert?\",\n          \"text\": \"Nein, beim Prüfvorgang werden keine Daten gespeichert - weder in der COVID Certificate Check App noch in einem zentralen System. Es ist somit nicht möglich nachzuvollziehen, welches Covid-Zertifikat von wem, wann und wo überprüft wurde.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können Zertifikate auch offline geprüft werden?\",\n          \"text\": \"Grundsätzlich können Covid-Zertifikate auch ohne eine Internetverbindung geprüft werden. Dazu werden regelmässig aktualisierte Prüflisten von einem zentralen Server heruntergeladen. Diese lokal gespeicherten Prüflisten dürfen nicht älter als 48h sein. \\n\\nUm die Prüflisten zu aktualisieren muss die App mit dem Internet verbunden sein und geöffnet werden. Die Aktualisierung erfolgt unmittelbar und automatisch.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist das Zertifikat Light?\",\n          \"text\": \"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zu generieren. Dieses «Zertifikat Light» zeigt lediglich das Vorliegen eines gültigen Covid-Zertifikats an, jedoch ohne Gesundheitsdaten zu enthalten. \\n\\nDie datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Dritte mit selbstentwickelten Apps bei der Prüfung von Covid-Zertifikaten Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung einsehen könnten. Mittels dem «Zertifikat Light» wird dies verhindert.\\n\\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von 24 Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der 24 Stunden benötigt, kann das Zertifikat Light einfach deaktiviert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie kann ein Zertifikat Light wieder in ein EU/EFTA-konformes Covid-Zertifikat umgewandelt werden?\",\n          \"text\": \"Das Zertifikat Light kann durch die Halterin / den Halter jederzeit in der «COVID Certificate»-App deaktiviert werden. Danach steht das normale Covid-Zertifikat wieder zur Verfügung.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How COVID certificates are checked\",\n      \"faqSubTitle\": \"The COVID Certificate Check app can be used to scan the QR codes on COVID certificates and check the certificates for authenticity and validity.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"How can COVID certificates be checked?\",\n          \"text\": \"To check a COVID certificate, use the dedicated COVID Certificate Check app to scan the QR code on the paper certificate or in the COVID Certificate app presented.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Explanatory video\",\n          \"linkUrl\": \"https://youtu.be/spfVPMqukjM\"\n        },\n        {\n          \"title\": \"What exactly is checked?\",\n          \"text\": \"Three aspects are checked when scanning:\\n– Does the certificate contain a valid electronic signature?\\n– Is the certificate unrevoked?\\n– Does the certificate meet Switzerland's validity criteria?\\n\\nIf the answer to all three questions is affirmative, the COVID certificate is shown as valid.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What are the current validity criteria in Switzerland?\",\n          \"text\": \"The current validity period of COVID certificates can be found here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Further information\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Which identification documents are valid? Why do personal details have to be checked?\",\n          \"text\": \"Aside from passports or ID cards, other photo identification documents that prove the identity of the person in question (e.g. driving licence) are also accepted. Although the COVID certificate is forgery-proof, the only way to ensure that the certificate shown was issued to the person presenting it is to check the personal details.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What data do I see during the verification process?\",\n          \"text\": \"During the verification process, you see only the certificate holder's name and date of birth, and whether the COVID certificate is valid.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Is any data stored in the COVID Certificate Check app or in a central system during the verification process?\",\n          \"text\": \"No, no data is stored during the verification process, be it in the COVID Certificate Check app or in a central system. Therefore, it is not possible to trace which COVID certificate was checked by whom, when and where.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Is it possible to verify the certificates offline?\",\n          \"text\": \"In principle, COVID certificates can also be verified without an Internet connection. For this purpose, regularly updated checklists are downloaded from a central server. These locally stored checklists must not be older than 48 hours. \\n\\nIn order to update the checklists, the app must be open and connected to the Internet. Updating occurs immediately and automatically.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is the 'certificate light'\",\n          \"text\": \"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. This 'certificate light' merely shows that the holder has a valid COVID certificate but does not contain any health-related data. \\n\\nThe alternative to the COVID certificate containing minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as third parties using apps they have developed themselves could be able to see health-related data such as the vaccine administered or date of vaccination when checking the certificate. The 'certificate light' prevents this.\\n\\nThe 'Certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons the 'certificate light' is only valid for 24 hours and must then be reactivated. If you need to use the normal certificate before the end of the 24-hour period, you can simply deactivate the 'certificate light'.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How can a 'certificate light' be converted back into an EU/EFTA-compliant COVID certificate?\",\n          \"text\": \"The holder can deactivate a 'certificate light' any time in their COVID Certificate app. After that their normal COVID certificate is available again.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Contrôle de certificats COVID\",\n      \"faqSubTitle\": \"L'app de contrôle permet de scanner le code QR figurant sur un certificat COVID et de vérifier l'authenticité et la validité de ce dernier.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment contrôler un certificat COVID?\",\n          \"text\": \"Pour contrôler un certificat COVID, il vous suffit de scanner le code QR figurant sur le document papier ou dans l'app «COVID Certificate» au moyen de l'app de contrôle prévue à cet effet.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Vidéo explicative\",\n          \"linkUrl\": \"https://youtu.be/O-9YhJDI3ZI\"\n        },\n        {\n          \"title\": \"Sur quoi porte le contrôle au juste?\",\n          \"text\": \"Le scan du code QR permet de répondre aux trois questions suivantes:\\n– Le certificat contient-il une signature électronique valable?\\n– Le certificat a-t-il été révoqué?\\n– Le certificat remplit-il les critères de validité fixés par la Suisse?\\n\\nSi vous pouvez répondre oui à la 1re et à la 3e question et non à la 2e, la validité du certificat COVID est attestée.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quels sont les critères de validité actuels de la Suisse ?\",\n          \"text\": \"Vous trouverez des informations sur la durée de validité actuelle du certificat COVID à l’adresse suivante :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Informations supplémentaires\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Quelles pièces d'identité sont valables? Pourquoi faut-il vérifier les données personnelles?\",\n          \"text\": \"Outre le passeport et la carte d'identité, les pièces d'identité réputées valables sont celles qui attestent l'identité de la personne concernée au moyen d'une photo (par ex. permis de conduire). Le certificat COVID est certes infalsifiable, mais le contrôle des données personnelles est le seul moyen de vérifier que le certificat a été établi au nom de la personne qui le présente.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"À quelles données ai-je accès lors du contrôle?\",\n          \"text\": \"Lors du contrôle, vous n'avez accès qu'au nom et à la date de naissance du détenteur du certificat et voyez seulement si le certificat COVID est valable.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quid du stockage des données lors du contrôle?\",\n          \"text\": \"Aucune des données auxquelles vous avez accès lors du contrôle n'est stockée dans l'app ou dans un système central. Il est par conséquent impossible de savoir quel certificat COVID a été vérifié par qui, quand et où.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"La vérification des certificats est-elle possible hors ligne ?\",\n          \"text\": \"En principe, il est aussi possible de vérifier les certificats COVID sans connexion Internet. À cette fin, des listes de contrôle régulièrement mises à jour sont téléchargées à partir d’un serveur central. Elles sont enregistrées localement et ne doivent pas remonter à plus de 48 h.\\n\\nPour actualiser les listes de contrôle, l’application doit être ouverte et connectée à Internet. La mise à jour s’effectue immédiatement et automatiquement.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu’est-ce que le certificat light ?\",\n          \"text\": \"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Ce certificat « light » indique uniquement si le certificat présenté est valide, sans fournir de données sur la santé.\\n\\nL’alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, des personnes tierces pourraient développer des applications leur donnant la possibilité de lire, lors de la vérification d’un certificat, les données sur la santé (p. ex. le type de vaccin et la date de la vaccination). Le certificat light empêche tout abus de ce genre.\\n\\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant 24 heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment reconvertir un certificat light en certificat COVID conforme aux normes UE/AELE ?\",\n          \"text\": \"Le détenteur peut en tout temps désactiver le certificat light dans l’application «COVID Certificate». Le certificat COVID standard est alors à nouveau disponible.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Come avviene la verifica dei certificati COVID?\",\n      \"faqSubTitle\": \"Con l'app COVID Certificate Check è possibile scansionare i relativi codici QR e verificare l'autenticità e la validità dei certificati COVID.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Come posso verificare i certificati COVID?\",\n          \"text\": \"Per verificare un certificato COVID tramite l'app COVID Certificate Check, può scansionare il codice QR che trova sulla copia cartacea del certificato oppure sull’app che le viene mostrata.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Video esplicativo\",\n          \"linkUrl\": \"https://youtu.be/b4JXnfr2Ugg\"\n        },\n        {\n          \"title\": \"Cosa viene verificato esattamente?\",\n          \"text\": \"Scansionando il codice QR vengono verificati i seguenti tre aspetti.\\n– Il certificato contiene una firma elettronica valida?\\n– Il certificato è ancora valido?\\n– Il certificato rispetta i criteri di validità previsti dalla normativa svizzera?\\n\\nSe tutti i tre aspetti sono valutati positivamente, il certificato COVID è considerato valido.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali sono attualmente i criteri di validità in Svizzera?\",\n          \"text\": \"L’attuale durata di validità dei certificati COVID è consultabile qui:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriori informazioni\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Quali documenti di legittimazione sono accettati o validi? Perché devono essere verificati i dati personali?\",\n          \"text\": \"Oltre al passaporto o alla carta d'identità sono accettati altri documenti che provano l'identità della persona in questione tramite una foto (ad es. licenza di condurre). Il certificato COVID non è falsificabile, tuttavia solo verificando i dati personali si garantisce che il certificato sia stato effettivamente rilasciato alla persona che lo sta mostrando.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali dati posso visualizzare durante il processo di verifica?\",\n          \"text\": \"Durante il processo di verifica visualizzerà solo nome e cognome nonché la data di nascita del titolare del certificato e l'indicazione della validità del certificato.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Durante il processo di verifica vengono salvati dati nell'app COVID Certificate Check o in un sistema centrale?\",\n          \"text\": \"No, durante il processo di verifica non vengono salvati dati nell'app COVID Certificate Check né in un sistema centrale. In questo modo, non è possibile risalire a quali certificati sono stati verificati, da chi, quando e dove.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I certificati possono essere verificati anche offline?\",\n          \"text\": \"In linea di principio, i certificati COVID possono essere verificati anche senza connessione Internet. A tale scopo, vengono scaricati regolarmente da un server centrale gli elenchi di verifica aggiornati. Questi elenchi salvati localmente non devono avere più di 48 ore. \\n\\nPer poter aggiornare gli elenchi di verifica, l’app deve essere aperta e collegata a Internet. L’aggiornamento avviene in modo immediato e automatico.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Che cos'è il certificato light?\",\n          \"text\": \"L'app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo. Il certificato light indica semplicemente l'esistenza di un certificato valido, ma non contiene i dati sanitari.\\n\\nIl certificato con dati ridotti al minimo è un’alternativa al certificato COVID-19 ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché le applicazioni autosviluppate per verificare i certificati COVID-19 consentirebbero a terzi di visualizzare i dati sanitari, ad esempio il vaccino somministrato o la data della vaccinazione. Ciò può essere evitato mediante il «certificato light».\\n\\nIl «certificato light» è disponibile unicamente in versione elettronica nell'app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il «certificato light» ha una validità massima di 24 ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le 24 ore, il certificato light può essere disattivato semplicemente.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come si fa a trasformare un certificato light nuovamente in un certificato COVID conforme all’UE/AELS?\",\n          \"text\": \"Il certificato light può essere disattivato dal titolare in qualsiasi momento nell’app «COVID Certificate», dopodiché il certificato COVID di base è di nuovo disponibile.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Uschia vegnan verifitgads ils certificats COVID\",\n      \"faqSubTitle\": \"Cun l'app COVID Certificate Check pon vegnir scannads ils codes QR sin ils certificats COVID per verifitgar l'autenticitad e la valaivladad dals certificats.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Co pon vegnir verifitgads ils certificats COVID?\",\n          \"text\": \"Per verifitgar in certificat COVID pudais Vus scannar il code QR sin Voss certificat sin palpiri u en l'app COVID Certificate cun l’app «COVID Certificate Check» previsa per quai.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Video explicativ\",\n          \"linkUrl\": \"https://youtu.be/DClLZIUjr3w\"\n        },\n        {\n          \"title\": \"Tge vegn propi verifitgà?\",\n          \"text\": \"Cun scannar vegnan verifitgads trais aspects:\\n– Cuntegna il certificat ina signatura digitala valaivla?\\n– N'è il certificat betg vegnì revocà?\\n– Correspunda il certificat als criteris da valaivladad en Svizra?\\n\\nSche tut ils trais aspects vegnan valitads en moda positiva, vegn il certificat COVID considerà sco valaivel.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge èn ils criteris da valaivladad actuals da la Svizra?\",\n          \"text\": \"La durada da valaivladad vertenta actuala dals certificats COVID chattais Vus qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriuras infurmaziuns\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Tge documents da legitimaziun vegnan acceptads resp. èn valaivels? Pertge ston vegnir verifitgadas las persunalias?\",\n          \"text\": \"Ultra dal passaport e da la ID vegnan acceptads er auters documents da legitimaziun valaivels che cumprovan l’identitad da la persuna pertutgada cun ina fotografia (p.ex. permiss dad ir cun auto). Il certificat COVID na po bain betg vegnir falsifitgà, però pir cun verifitgar las persunalias vegn controllà, sch'il certificat preschentà è vegnì emess per la persuna ch'al preschenta.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge datas ves jau tar la procedura da verificaziun?\",\n          \"text\": \"Tar la procedura da verificaziun vesais Vus mo il num e la data da naschientscha da la possessura u dal possessur dal certificat e sch'il certificat COVID è valaivel.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Vegnan arcunadas datas en in sistem central u en l'app COVID Certificate Check tar la procedura da verificaziun?\",\n          \"text\": \"Na, tar la procedura da verificaziun na vegnan arcunadas naginas datas – ni en l'app COVID Certificate Check ni en in sistem central? I n'è pia betg pussaivel d'identifitgar tge certificat COVID ch'è vegnì verifitgà da tgi, cura e nua.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon ils certificats er vegnir verifitgads offline?\",\n          \"text\": \"Da princip pon ils certificats COVID er vegnir verifitgads senza ina colliaziun cun l'internet. Per far quai vegnan chargiadas giu regularmain d'in server central glistas da verificaziun actualisadas. Questas glistas da verificaziun arcunadas localmain na dastgan betg esser pli veglias che 48 uras.\\n\\nPer actualisar las glistas da verificaziun sto l'app esser colliada cun l'internet e vegnir averta. L'actualisaziun succeda immediatamain ed automaticamain.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in certificat light?\",\n          \"text\": \"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Quest «certificat light» mussa mo ch'i è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad.\\n\\nL'alternativa al certificat COVID è vegnida sviluppada sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai che terzas persunas pudessan – en il rom da la verificaziun da certificats COVID e cun apps sviluppadas sez – prender invista da datas da sanadad, sco per exempel dal vaccin u da la data da la vaccinaziun. Cun agid dal «certificat COVID» vegn quai impedì.\\n\\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da 24 uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà gia pli baud, po il certificat light simplamain vegnir deactivà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co po in certificat light puspè vegnir transfurmà en in certificat COVID confurm a la UE/AECL?\",\n          \"text\": \"La possessura u il possessur po deactivar da tut temp il certificat light en l'app «COVID Certificate». Alura stat puspè a disposiziun il certificat COVID normal. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"androidTransferCheckIntervalMs\": 0,\n  \"androidTransferCheckBackoffMs\": 0,\n  \"timeshiftDetectionEnabled\": false,\n  \"checkModesInfos\": {\n    \"de\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer 3G-Regelung geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für Geimpfte, Genesene oder negativ Getestete akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"Die Prüfung von einem Zertifikat Light ist in diesem Modus möglich.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer 2G-Regelung geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für Geimpfte oder Genesene akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von einem Zertifikat Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer Regelung nach 2G+ geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Zusätzlich zu einem Covid-Zertifikat für Geimpfte oder Genesene wird ein gültiges Testzertifikat benötigt, welches separat geprüft werden muss.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Ausnahmen: Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung nicht länger als 120 Tage zurückliegt.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Testzertifikat\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Bereiche, bei denen ein gültiges Testzertifikat notwendig ist.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für negativ Getestete basierend auf einem PCR- oder Antigen-Schnelltest akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Wählen Sie den Prüfmodus, in welchem Sie Covid-Zertifikate prüfen möchten.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Der Prüfmodus kann jederzeit geändert werden.\"\n          }\n        ]\n      }\n    },\n    \"en\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 3G rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have been vaccinated, or who have recovered or tested negative.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"It is possible to verify a \\\"light\\\" certificate in this mode.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 2G rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have been vaccinated or who have recovered.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify a \\\"light\\\" certificate in this mode.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 2G+ rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"In addition to a COVID certificate for people who have been vaccinated or who have recovered, a valid test certificate is required. This must be verified separately.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Exceptions: People who have been fully vaccinated, received a booster vaccination or recovered (based on a PCR test) no longer than 120 days ago\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify \\\"light\\\" certificates in this mode.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Test certificate\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For areas in which a valid test certificate is required.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have tested negative based on a PCR or rapid antigen test.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify \\\"light\\\" certificates in this mode.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Select the verification mode that you want to use for verifying COVID certificates.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"The verification mode can be changed at any time.\"\n          }\n        ]\n      }\n    },\n    \"fr\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «3G».\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées, guéries ou testées négatives.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"Il peut être également utilisé pour vérifier un «certificat light».\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «2G».\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées ou guéries.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"La vérification d’un «certificat light» n'est pas possible dans ce mode.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations qui appliquent la règle des 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"En plus d'un certificat COVID de vaccination ou de guérison, il faut présenter un certificat de test valable, qui doit être vérifié séparément.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Exceptions: les personnes dont la vaccination, la vaccination de rappel ou la guérison datent de moins de 120 jours\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Ce mode ne permet pas de vérifier les «certificats light».\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificat de test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Destiné aux domaines qui nécessitent un certificat de test valable.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"Ce mode permet de vérifier les certificats des personnes qui disposent d'un résultat négatif à un test PCR ou à un test rapide antigénique.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Ce mode ne permet pas de vérifier les «certificats light».\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Choisissez le mode de contrôle correspondant aux certificats COVID à vérifier.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Le mode de contrôle peut être changé en tout temps.\"\n          }\n        ]\n      }\n    },\n    \"it\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per le strutture e le manifestazioni in cui si applica la regola 3G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID per persone vaccinate, guartite o testate negative.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"I certificati light possono essere verificati.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per le strutture e le manifestazioni in cui si applica la regola 2G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID per persone vaccinate o guartite.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Questa modalità non permette di verificare i certificati light.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per strutture e manifestazioni cui si applica la regola 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Oltre a un certificato di vaccinazione o di guarigione COVID è richiesto un certificato di test valido, che deve essere verificato separatamente.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Eccezioni: Persone per le quali sono trascorsi al massimo 120 giorni dalla vaccinazione completa, dalla vaccinazione di richiamo o dalla guarigione.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"In questa modalità non è possibile verificare i certificati light.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificato di test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per i contesti in cui è richiesto un certificato di test valido.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID rilasciati alle persone risultate negative a un test PCR o a un test antigenico rapido.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"In questa modalità non è possibile verificare i certificati light.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Selezionare la modalità in cui verificare i certificati COVID.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"La modalità di verifica può essere cambiata in qualsiasi momento.\"\n          }\n        ]\n      }\n    },\n    \"rm\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas cun ina regla da 3G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"En quest modus vegnan acceptads certificats COVID per persunas vaccinadas, per persunas guaridas u per persunas cun in test negativ.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"En quest modus po vegnir verifitgà in certificat light.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas cun ina regla da 2G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"En quest modus vegnan acceptads ils certificats COVID per persunas vaccinadas u per persunas guaridas.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"“Certificat light” na po betg vegnir verifitgà en il modus da verificaziun da 2G.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas, nua ch’i vegn verifitgà tenor la regla da 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Ultra d’in certificat COVID per persunas vaccinadas e guaridas dovri in certificat d'in test valaivel che sto vegnir verifitgà separadamain.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Excepziuns: Persunas ch'èn vegnidas vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch'èn guaridas (sin basa d'in test da PCR) avant maximalmain 120 dis\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"En quest modus na pon vegnir verifitgads nagins certificats light.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificat d'in test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per secturs che dovran in certificat d'in test valaivel.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"En quest modus vegnan acceptads certificats COVID per persunas cun in test negativ sin basa d’in test da PCR u d’in test svelt d’antigens.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"En quest modus na pon vegnir verifitgads nagins certificats light.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Tscherni il modus da verificaziun, en il qual Vus vulais verifitgar ils certificats COVID.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Il modus da verificaziun po vegnir midà da tut temp.\"\n          }\n        ]\n      }\n    }\n  },\n  \"checkModeReselectAfterHours\": 2147483647\n}"
  },
  {
    "path": "verifier/src/dev/assets/faq/config.json",
    "content": "{\n  \"forceUpdate\": false,\n  \"infoBox\": {\n    \"de\": {\n      \"title\": \"Mock InfoBox Titel (de)\",\n      \"msg\": \"Ein Mock Text mit mehreren Zeilen.\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\",\n      \"url\": \"tel:+41583877780\",\n      \"urlTitle\": \"+41 58 387 77 80\",\n      \"isDismissible\": false,\n      \"infoId\": \"830796854\"\n    },\n    \"en\": {\n      \"title\": \"Mock InfoBox Titel (en)\",\n      \"msg\": \"Ein Mock Text mit mehreren Zeilen.\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\",\n      \"url\": \"tel:+41583877780\",\n      \"urlTitle\": \"+41 58 387 77 80\",\n      \"isDismissible\": false,\n      \"infoId\": \"830798094\"\n    },\n    \"fr\": {\n      \"title\": \"Mock InfoBox Titel (fr)\",\n      \"msg\": \"Ein Mock Text mit mehreren Zeilen.\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\",\n      \"url\": \"tel:+41583877780\",\n      \"urlTitle\": \"+41 58 387 77 80\",\n      \"isDismissible\": false,\n      \"infoId\": \"830799179\"\n    },\n    \"it\": {\n      \"title\": \"Mock InfoBox Titel (it)\",\n      \"msg\": \"Ein Mock Text mit mehreren Zeilen.\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\",\n      \"url\": \"tel:+41583877780\",\n      \"urlTitle\": \"+41 58 387 77 80\",\n      \"isDismissible\": false,\n      \"infoId\": \"830802124\"\n    },\n    \"rm\": {\n      \"title\": \"Mock InfoBox Titel (rm)\",\n      \"msg\": \"Ein Mock Text mit mehreren Zeilen.\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\",\n      \"url\": \"tel:+41583877780\",\n      \"urlTitle\": \"+41 58 387 77 80\",\n      \"isDismissible\": false,\n      \"infoId\": \"830810556\"\n    }\n  },\n  \"questions\": null,\n  \"works\": {\n    \"de\": {\n      \"faqTitle\": \"So werden Covid-Zertifikate geprüft\",\n      \"faqSubTitle\": \"Mit der COVID Certificate Check App können QR-Codes auf Covid-Zertifikaten gescannt und die Zertifikate auf Echtheit und Gültigkeit überprüft werden.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie können Covid-Zertifikate geprüft werden?\",\n          \"text\": \"Um ein Covid-Zertifikat zu prüfen, scannen Sie den QR-Code auf dem Papierzertifikat oder in der vorgewiesenen COVID Certificate App mit der dafür vorgesehenen COVID Certificate Check App.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Erklärvideo\",\n          \"linkUrl\": \"https://youtu.be/DClLZIUjr3w\"\n        },\n        {\n          \"title\": \"Was wird genau geprüft?\",\n          \"text\": \"Beim Scannen werden drei Aspekte geprüft:\\n– Enthält das Zertifikat eine gültige elektronische Signatur?\\n– Ist das Zertifikat nicht widerrufen worden?\\n– Entspricht das Zertifikat den Gültigkeitskriterien der Schweiz?\\n\\nWenn alle drei Aspekte positiv bewertet werden, wird das Covid-Zertifikat als gültig ausgewiesen.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was sind die aktuellen Gültigkeitskriterien der Schweiz?\",\n          \"text\": \"Die aktuell geltende Gültigkeitsdauer von Covid-Zertifikaten finden Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Weitere Informationen\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Welche Ausweisdokumente sind gültig? Weshalb müssen die Personalien überprüft werden?\",\n          \"text\": \"Neben Pass oder ID werden auch andere Ausweisdokumente akzeptiert, die die Identität der betreffenden Person mit einem Foto belegen (z.B. Führerausweis). Das Covid-Zertifikat ist zwar fälschungssicher, mit der Überprüfung der Personalien wird aber erst sichergestellt, dass das vorgezeigte Zertifikat auch auf den Vorweisenden ausgestellt wurde.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Welche Daten sehe ich beim Prüfvorgang?\",\n          \"text\": \"Beim Prüfvorgang sehen Sie nur den Namen und das Geburtsdatum der Zertifikatsinhaberin oder des Zertifikatsinhabers und ob das Covid-Zertifikat gültig ist.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Werden beim Prüfvorgang in der COVID Certificate Check App oder in einem zentralen System Daten gespeichert?\",\n          \"text\": \"Nein, beim Prüfvorgang werden keine Daten gespeichert - weder in der COVID Certificate Check App noch in einem zentralen System. Es ist somit nicht möglich nachzuvollziehen, welches Covid-Zertifikat von wem, wann und wo überprüft wurde.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können Zertifikate auch offline geprüft werden?\",\n          \"text\": \"Grundsätzlich können Covid-Zertifikate auch ohne eine Internetverbindung geprüft werden. Dazu werden regelmässig aktualisierte Prüflisten von einem zentralen Server heruntergeladen. Diese lokal gespeicherten Prüflisten dürfen nicht älter als 48h sein. \\n\\nUm die Prüflisten zu aktualisieren muss die App mit dem Internet verbunden sein und geöffnet werden. Die Aktualisierung erfolgt unmittelbar und automatisch.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist das Zertifikat Light?\",\n          \"text\": \"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zu generieren. Dieses «Zertifikat Light» zeigt lediglich das Vorliegen eines gültigen Covid-Zertifikats an, jedoch ohne Gesundheitsdaten zu enthalten. \\n\\nDie datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Dritte mit selbstentwickelten Apps bei der Prüfung von Covid-Zertifikaten Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung einsehen könnten. Mittels dem «Zertifikat Light» wird dies verhindert.\\n\\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von 24 Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der 24 Stunden benötigt, kann das Zertifikat Light einfach deaktiviert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie kann ein Zertifikat Light wieder in ein EU/EFTA-konformes Covid-Zertifikat umgewandelt werden?\",\n          \"text\": \"Das Zertifikat Light kann durch die Halterin / den Halter jederzeit in der «COVID Certificate»-App deaktiviert werden. Danach steht das normale Covid-Zertifikat wieder zur Verfügung.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How COVID certificates are checked\",\n      \"faqSubTitle\": \"The COVID Certificate Check app can be used to scan the QR codes on COVID certificates and check the certificates for authenticity and validity.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"How can COVID certificates be checked?\",\n          \"text\": \"To check a COVID certificate, use the dedicated COVID Certificate Check app to scan the QR code on the paper certificate or in the COVID Certificate app presented.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Explanatory video\",\n          \"linkUrl\": \"https://youtu.be/spfVPMqukjM\"\n        },\n        {\n          \"title\": \"What exactly is checked?\",\n          \"text\": \"Three aspects are checked when scanning:\\n– Does the certificate contain a valid electronic signature?\\n– Is the certificate unrevoked?\\n– Does the certificate meet Switzerland's validity criteria?\\n\\nIf the answer to all three questions is affirmative, the COVID certificate is shown as valid.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What are the current validity criteria in Switzerland?\",\n          \"text\": \"The current validity period of COVID certificates can be found here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Further information\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Which identification documents are valid? Why do personal details have to be checked?\",\n          \"text\": \"Aside from passports or ID cards, other photo identification documents that prove the identity of the person in question (e.g. driving licence) are also accepted. Although the COVID certificate is forgery-proof, the only way to ensure that the certificate shown was issued to the person presenting it is to check the personal details.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What data do I see during the verification process?\",\n          \"text\": \"During the verification process, you see only the certificate holder's name and date of birth, and whether the COVID certificate is valid.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Is any data stored in the COVID Certificate Check app or in a central system during the verification process?\",\n          \"text\": \"No, no data is stored during the verification process, be it in the COVID Certificate Check app or in a central system. Therefore, it is not possible to trace which COVID certificate was checked by whom, when and where.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Is it possible to verify the certificates offline?\",\n          \"text\": \"In principle, COVID certificates can also be verified without an Internet connection. For this purpose, regularly updated checklists are downloaded from a central server. These locally stored checklists must not be older than 48 hours. \\n\\nIn order to update the checklists, the app must be open and connected to the Internet. Updating occurs immediately and automatically.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is the 'certificate light'\",\n          \"text\": \"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. This 'certificate light' merely shows that the holder has a valid COVID certificate but does not contain any health-related data. \\n\\nThe alternative to the COVID certificate containing minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as third parties using apps they have developed themselves could be able to see health-related data such as the vaccine administered or date of vaccination when checking the certificate. The 'certificate light' prevents this.\\n\\nThe 'Certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons the 'certificate light' is only valid for 24 hours and must then be reactivated. If you need to use the normal certificate before the end of the 24-hour period, you can simply deactivate the 'certificate light'.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How can a 'certificate light' be converted back into an EU/EFTA-compliant COVID certificate?\",\n          \"text\": \"The holder can deactivate a 'certificate light' any time in their COVID Certificate app. After that their normal COVID certificate is available again.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Contrôle de certificats COVID\",\n      \"faqSubTitle\": \"L'app de contrôle permet de scanner le code QR figurant sur un certificat COVID et de vérifier l'authenticité et la validité de ce dernier.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment contrôler un certificat COVID?\",\n          \"text\": \"Pour contrôler un certificat COVID, il vous suffit de scanner le code QR figurant sur le document papier ou dans l'app «COVID Certificate» au moyen de l'app de contrôle prévue à cet effet.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Vidéo explicative\",\n          \"linkUrl\": \"https://youtu.be/O-9YhJDI3ZI\"\n        },\n        {\n          \"title\": \"Sur quoi porte le contrôle au juste?\",\n          \"text\": \"Le scan du code QR permet de répondre aux trois questions suivantes:\\n– Le certificat contient-il une signature électronique valable?\\n– Le certificat a-t-il été révoqué?\\n– Le certificat remplit-il les critères de validité fixés par la Suisse?\\n\\nSi vous pouvez répondre oui à la 1re et à la 3e question et non à la 2e, la validité du certificat COVID est attestée.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quels sont les critères de validité actuels de la Suisse ?\",\n          \"text\": \"Vous trouverez des informations sur la durée de validité actuelle du certificat COVID à l’adresse suivante :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Informations supplémentaires\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Quelles pièces d'identité sont valables? Pourquoi faut-il vérifier les données personnelles?\",\n          \"text\": \"Outre le passeport et la carte d'identité, les pièces d'identité réputées valables sont celles qui attestent l'identité de la personne concernée au moyen d'une photo (par ex. permis de conduire). Le certificat COVID est certes infalsifiable, mais le contrôle des données personnelles est le seul moyen de vérifier que le certificat a été établi au nom de la personne qui le présente.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"À quelles données ai-je accès lors du contrôle?\",\n          \"text\": \"Lors du contrôle, vous n'avez accès qu'au nom et à la date de naissance du détenteur du certificat et voyez seulement si le certificat COVID est valable.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quid du stockage des données lors du contrôle?\",\n          \"text\": \"Aucune des données auxquelles vous avez accès lors du contrôle n'est stockée dans l'app ou dans un système central. Il est par conséquent impossible de savoir quel certificat COVID a été vérifié par qui, quand et où.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"La vérification des certificats est-elle possible hors ligne ?\",\n          \"text\": \"En principe, il est aussi possible de vérifier les certificats COVID sans connexion Internet. À cette fin, des listes de contrôle régulièrement mises à jour sont téléchargées à partir d’un serveur central. Elles sont enregistrées localement et ne doivent pas remonter à plus de 48 h.\\n\\nPour actualiser les listes de contrôle, l’application doit être ouverte et connectée à Internet. La mise à jour s’effectue immédiatement et automatiquement.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu’est-ce que le certificat light ?\",\n          \"text\": \"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Ce certificat « light » indique uniquement si le certificat présenté est valide, sans fournir de données sur la santé.\\n\\nL’alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, des personnes tierces pourraient développer des applications leur donnant la possibilité de lire, lors de la vérification d’un certificat, les données sur la santé (p. ex. le type de vaccin et la date de la vaccination). Le certificat light empêche tout abus de ce genre.\\n\\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant 24 heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment reconvertir un certificat light en certificat COVID conforme aux normes UE/AELE ?\",\n          \"text\": \"Le détenteur peut en tout temps désactiver le certificat light dans l’application «COVID Certificate». Le certificat COVID standard est alors à nouveau disponible.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Come avviene la verifica dei certificati COVID?\",\n      \"faqSubTitle\": \"Con l'app COVID Certificate Check è possibile scansionare i relativi codici QR e verificare l'autenticità e la validità dei certificati COVID.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Come posso verificare i certificati COVID?\",\n          \"text\": \"Per verificare un certificato COVID tramite l'app COVID Certificate Check, può scansionare il codice QR che trova sulla copia cartacea del certificato oppure sull’app che le viene mostrata.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Video esplicativo\",\n          \"linkUrl\": \"https://youtu.be/b4JXnfr2Ugg\"\n        },\n        {\n          \"title\": \"Cosa viene verificato esattamente?\",\n          \"text\": \"Scansionando il codice QR vengono verificati i seguenti tre aspetti.\\n– Il certificato contiene una firma elettronica valida?\\n– Il certificato è ancora valido?\\n– Il certificato rispetta i criteri di validità previsti dalla normativa svizzera?\\n\\nSe tutti i tre aspetti sono valutati positivamente, il certificato COVID è considerato valido.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali sono attualmente i criteri di validità in Svizzera?\",\n          \"text\": \"L’attuale durata di validità dei certificati COVID è consultabile qui:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriori informazioni\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Quali documenti di legittimazione sono accettati o validi? Perché devono essere verificati i dati personali?\",\n          \"text\": \"Oltre al passaporto o alla carta d'identità sono accettati altri documenti che provano l'identità della persona in questione tramite una foto (ad es. licenza di condurre). Il certificato COVID non è falsificabile, tuttavia solo verificando i dati personali si garantisce che il certificato sia stato effettivamente rilasciato alla persona che lo sta mostrando.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali dati posso visualizzare durante il processo di verifica?\",\n          \"text\": \"Durante il processo di verifica visualizzerà solo nome e cognome nonché la data di nascita del titolare del certificato e l'indicazione della validità del certificato.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Durante il processo di verifica vengono salvati dati nell'app COVID Certificate Check o in un sistema centrale?\",\n          \"text\": \"No, durante il processo di verifica non vengono salvati dati nell'app COVID Certificate Check né in un sistema centrale. In questo modo, non è possibile risalire a quali certificati sono stati verificati, da chi, quando e dove.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I certificati possono essere verificati anche offline?\",\n          \"text\": \"In linea di principio, i certificati COVID possono essere verificati anche senza connessione Internet. A tale scopo, vengono scaricati regolarmente da un server centrale gli elenchi di verifica aggiornati. Questi elenchi salvati localmente non devono avere più di 48 ore. \\n\\nPer poter aggiornare gli elenchi di verifica, l’app deve essere aperta e collegata a Internet. L’aggiornamento avviene in modo immediato e automatico.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Che cos'è il certificato light?\",\n          \"text\": \"L'app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo. Il certificato light indica semplicemente l'esistenza di un certificato valido, ma non contiene i dati sanitari.\\n\\nIl certificato con dati ridotti al minimo è un’alternativa al certificato COVID-19 ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché le applicazioni autosviluppate per verificare i certificati COVID-19 consentirebbero a terzi di visualizzare i dati sanitari, ad esempio il vaccino somministrato o la data della vaccinazione. Ciò può essere evitato mediante il «certificato light».\\n\\nIl «certificato light» è disponibile unicamente in versione elettronica nell'app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il «certificato light» ha una validità massima di 24 ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le 24 ore, il certificato light può essere disattivato semplicemente.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come si fa a trasformare un certificato light nuovamente in un certificato COVID conforme all’UE/AELS?\",\n          \"text\": \"Il certificato light può essere disattivato dal titolare in qualsiasi momento nell’app «COVID Certificate», dopodiché il certificato COVID di base è di nuovo disponibile.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Uschia vegnan verifitgads ils certificats COVID\",\n      \"faqSubTitle\": \"Cun l'app COVID Certificate Check pon vegnir scannads ils codes QR sin ils certificats COVID per verifitgar l'autenticitad e la valaivladad dals certificats.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Co pon vegnir verifitgads ils certificats COVID?\",\n          \"text\": \"Per verifitgar in certificat COVID pudais Vus scannar il code QR sin Voss certificat sin palpiri u en l'app COVID Certificate cun l’app «COVID Certificate Check» previsa per quai.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Video explicativ\",\n          \"linkUrl\": \"https://youtu.be/DClLZIUjr3w\"\n        },\n        {\n          \"title\": \"Tge vegn propi verifitgà?\",\n          \"text\": \"Cun scannar vegnan verifitgads trais aspects:\\n– Cuntegna il certificat ina signatura digitala valaivla?\\n– N'è il certificat betg vegnì revocà?\\n– Correspunda il certificat als criteris da valaivladad en Svizra?\\n\\nSche tut ils trais aspects vegnan valitads en moda positiva, vegn il certificat COVID considerà sco valaivel.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge èn ils criteris da valaivladad actuals da la Svizra?\",\n          \"text\": \"La durada da valaivladad vertenta actuala dals certificats COVID chattais Vus qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriuras infurmaziuns\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Tge documents da legitimaziun vegnan acceptads resp. èn valaivels? Pertge ston vegnir verifitgadas las persunalias?\",\n          \"text\": \"Ultra dal passaport e da la ID vegnan acceptads er auters documents da legitimaziun valaivels che cumprovan l’identitad da la persuna pertutgada cun ina fotografia (p.ex. permiss dad ir cun auto). Il certificat COVID na po bain betg vegnir falsifitgà, però pir cun verifitgar las persunalias vegn controllà, sch'il certificat preschentà è vegnì emess per la persuna ch'al preschenta.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge datas ves jau tar la procedura da verificaziun?\",\n          \"text\": \"Tar la procedura da verificaziun vesais Vus mo il num e la data da naschientscha da la possessura u dal possessur dal certificat e sch'il certificat COVID è valaivel.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Vegnan arcunadas datas en in sistem central u en l'app COVID Certificate Check tar la procedura da verificaziun?\",\n          \"text\": \"Na, tar la procedura da verificaziun na vegnan arcunadas naginas datas – ni en l'app COVID Certificate Check ni en in sistem central? I n'è pia betg pussaivel d'identifitgar tge certificat COVID ch'è vegnì verifitgà da tgi, cura e nua.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon ils certificats er vegnir verifitgads offline?\",\n          \"text\": \"Da princip pon ils certificats COVID er vegnir verifitgads senza ina colliaziun cun l'internet. Per far quai vegnan chargiadas giu regularmain d'in server central glistas da verificaziun actualisadas. Questas glistas da verificaziun arcunadas localmain na dastgan betg esser pli veglias che 48 uras.\\n\\nPer actualisar las glistas da verificaziun sto l'app esser colliada cun l'internet e vegnir averta. L'actualisaziun succeda immediatamain ed automaticamain.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in certificat light?\",\n          \"text\": \"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Quest «certificat light» mussa mo ch'i è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad.\\n\\nL'alternativa al certificat COVID è vegnida sviluppada sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai che terzas persunas pudessan – en il rom da la verificaziun da certificats COVID e cun apps sviluppadas sez – prender invista da datas da sanadad, sco per exempel dal vaccin u da la data da la vaccinaziun. Cun agid dal «certificat COVID» vegn quai impedì.\\n\\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da 24 uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà gia pli baud, po il certificat light simplamain vegnir deactivà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co po in certificat light puspè vegnir transfurmà en in certificat COVID confurm a la UE/AECL?\",\n          \"text\": \"La possessura u il possessur po deactivar da tut temp il certificat light en l'app «COVID Certificate». Alura stat puspè a disposiziun il certificat COVID normal. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"androidTransferCheckIntervalMs\": 0,\n  \"androidTransferCheckBackoffMs\": 0,\n  \"timeshiftDetectionEnabled\": false,\n  \"checkModesInfos\": {\n    \"de\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer 3G-Regelung geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für Geimpfte, Genesene oder negativ Getestete akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"Die Prüfung von einem Zertifikat Light ist in diesem Modus möglich.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer 2G-Regelung geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für Geimpfte oder Genesene akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von einem Zertifikat Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer Regelung nach 2G+ geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Zusätzlich zu einem Covid-Zertifikat für Geimpfte oder Genesene wird ein gültiges Testzertifikat benötigt, welches separat geprüft werden muss.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Ausnahmen: Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung nicht länger als 120 Tage zurückliegt.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Testzertifikat\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Bereiche, bei denen ein gültiges Testzertifikat notwendig ist.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für negativ Getestete basierend auf einem PCR- oder Antigen-Schnelltest akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Wählen Sie den Prüfmodus, in welchem Sie Covid-Zertifikate prüfen möchten.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Der Prüfmodus kann jederzeit geändert werden.\"\n          }\n        ]\n      }\n    },\n    \"en\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 3G rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have been vaccinated, or who have recovered or tested negative.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"It is possible to verify a \\\"light\\\" certificate in this mode.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 2G rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have been vaccinated or who have recovered.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify a \\\"light\\\" certificate in this mode.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 2G+ rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"In addition to a COVID certificate for people who have been vaccinated or who have recovered, a valid test certificate is required. This must be verified separately.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Exceptions: People who have been fully vaccinated, received a booster vaccination or recovered (based on a PCR test) no longer than 120 days ago\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify \\\"light\\\" certificates in this mode.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Test certificate\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For areas in which a valid test certificate is required.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have tested negative based on a PCR or rapid antigen test.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify \\\"light\\\" certificates in this mode.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Select the verification mode that you want to use for verifying COVID certificates.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"The verification mode can be changed at any time.\"\n          }\n        ]\n      }\n    },\n    \"fr\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «3G».\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées, guéries ou testées négatives.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"Il peut être également utilisé pour vérifier un «certificat light».\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «2G».\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées ou guéries.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"La vérification d’un «certificat light» n'est pas possible dans ce mode.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations qui appliquent la règle des 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"En plus d'un certificat COVID de vaccination ou de guérison, il faut présenter un certificat de test valable, qui doit être vérifié séparément.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Exceptions: les personnes dont la vaccination, la vaccination de rappel ou la guérison datent de moins de 120 jours\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Ce mode ne permet pas de vérifier les «certificats light».\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificat de test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Destiné aux domaines qui nécessitent un certificat de test valable.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"Ce mode permet de vérifier les certificats des personnes qui disposent d'un résultat négatif à un test PCR ou à un test rapide antigénique.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Ce mode ne permet pas de vérifier les «certificats light».\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Choisissez le mode de contrôle correspondant aux certificats COVID à vérifier.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Le mode de contrôle peut être changé en tout temps.\"\n          }\n        ]\n      }\n    },\n    \"it\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per le strutture e le manifestazioni in cui si applica la regola 3G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID per persone vaccinate, guartite o testate negative.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"I certificati light possono essere verificati.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per le strutture e le manifestazioni in cui si applica la regola 2G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID per persone vaccinate o guartite.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Questa modalità non permette di verificare i certificati light.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per strutture e manifestazioni cui si applica la regola 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Oltre a un certificato di vaccinazione o di guarigione COVID è richiesto un certificato di test valido, che deve essere verificato separatamente.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Eccezioni: Persone per le quali sono trascorsi al massimo 120 giorni dalla vaccinazione completa, dalla vaccinazione di richiamo o dalla guarigione.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"In questa modalità non è possibile verificare i certificati light.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificato di test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per i contesti in cui è richiesto un certificato di test valido.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID rilasciati alle persone risultate negative a un test PCR o a un test antigenico rapido.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"In questa modalità non è possibile verificare i certificati light.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Selezionare la modalità in cui verificare i certificati COVID.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"La modalità di verifica può essere cambiata in qualsiasi momento.\"\n          }\n        ]\n      }\n    },\n    \"rm\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas cun ina regla da 3G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"En quest modus vegnan acceptads certificats COVID per persunas vaccinadas, per persunas guaridas u per persunas cun in test negativ.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"En quest modus po vegnir verifitgà in certificat light.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas cun ina regla da 2G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"En quest modus vegnan acceptads ils certificats COVID per persunas vaccinadas u per persunas guaridas.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"“Certificat light” na po betg vegnir verifitgà en il modus da verificaziun da 2G.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas, nua ch’i vegn verifitgà tenor la regla da 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Ultra d’in certificat COVID per persunas vaccinadas e guaridas dovri in certificat d'in test valaivel che sto vegnir verifitgà separadamain.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Excepziuns: Persunas ch'èn vegnidas vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch'èn guaridas (sin basa d'in test da PCR) avant maximalmain 120 dis\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"En quest modus na pon vegnir verifitgads nagins certificats light.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificat d'in test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per secturs che dovran in certificat d'in test valaivel.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"En quest modus vegnan acceptads certificats COVID per persunas cun in test negativ sin basa d’in test da PCR u d’in test svelt d’antigens.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"En quest modus na pon vegnir verifitgads nagins certificats light.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Tscherni il modus da verificaziun, en il qual Vus vulais verifitgar ils certificats COVID.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Il modus da verificaziun po vegnir midà da tut temp.\"\n          }\n        ]\n      }\n    }\n  },\n  \"checkModeReselectAfterHours\": 2147483647,\n  \"covidCertificateNewsText\": {\n    \"de\": \"Zertifikatspflicht aufgehoben\",\n    \"en\": \"Certificate requirement lifted\",\n    \"fr\": \"Levée de l’obligation de présenter un certificat.\",\n    \"it\": \"Obbligo di certificato revocato\",\n    \"rm\": \"Abolì l'obligatori dal certificat\"\n  },\n  \"infoCovidCertificateNews\": {\n    \"de\": {\n      \"title\": \"Zertifikatspflicht aufgehoben\",\n      \"newsItems\": [\n        {\n          \"text\": \"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben.\",\n          \"iconIos\": \"ic-bund-small\",\n          \"iconAndroid\": \"ic_bund_small\"\n        },\n        {\n          \"text\": \"Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben im Inland keine praktische Bedeutung mehr.\",\n          \"iconIos\": \"ic-timelapse-blue\",\n          \"iconAndroid\": \"ic_timelapse_blue\"\n        },\n        {\n          \"text\": \"Diese Schweizer Prüf-App prüft Covid-Zertifikate nach den Schweizer Gültigkeitsregeln. Das Prüfergebnis ist für einen Einsatz im Ausland nicht massgeblich.\",\n          \"iconIos\": \"ic-phone\",\n          \"iconAndroid\": \"ic_phone\"\n        },\n        {\n          \"text\": \"Falls ein Land noch ein Covid-Zertifikat voraussetzt, gelten jeweils die Regeln des entsprechenden Landes.\",\n          \"iconIos\": \"ic-travel\",\n          \"iconAndroid\": \"ic_travel\"\n        }\n      ]\n    },\n    \"en\": {\n      \"title\": \"Certificate requirement lifted\",\n      \"newsItems\": [\n        {\n          \"text\": \"The certificate requirement in Switzerland was lifted in February 2022.\",\n          \"iconIos\": \"ic-bund-small\",\n          \"iconAndroid\": \"ic_bund_small\"\n        },\n        {\n          \"text\": \"Since then, the Swiss validity periods have only existed formally and no longer have any practical significance in this country.\",\n          \"iconIos\": \"ic-timelapse-blue\",\n          \"iconAndroid\": \"ic_timelapse_blue\"\n        },\n        {\n          \"text\": \"This Swiss certificate check app verifies COVID certificates based on Swiss validity rules. The result of the check is not relevant for use of the certificate abroad.\",\n          \"iconIos\": \"ic-phone\",\n          \"iconAndroid\": \"ic_phone\"\n        },\n        {\n          \"text\": \"If a country still requires a COVID certificate, the rules of the country in question apply.\",\n          \"iconIos\": \"ic-travel\",\n          \"iconAndroid\": \"ic_travel\"\n        }\n      ]\n    },\n    \"fr\": {\n      \"title\": \"Levée de l’obligation de présenter un certificat.\",\n      \"newsItems\": [\n        {\n          \"text\": \"L’obligation de présenter un certificat en Suisse a été levée en février 2022.\",\n          \"iconIos\": \"ic-bund-small\",\n          \"iconAndroid\": \"ic_bund_small\"\n        },\n        {\n          \"text\": \"Depuis lors, les durées de validité pour la Suisse sont purement formelles et n’ont plus de pertinence pratique dans le pays.\",\n          \"iconIos\": \"ic-timelapse-blue\",\n          \"iconAndroid\": \"ic_timelapse_blue\"\n        },\n        {\n          \"text\": \"Cette application de vérification suisse contrôle les certificats COVID en fonction des règles de validité suisses. Le résultat du contrôle n’est pas déterminant pour utiliser l’étranger.\",\n          \"iconIos\": \"ic-phone\",\n          \"iconAndroid\": \"ic_phone\"\n        },\n        {\n          \"text\": \"Lorsqu’un pays exige encore un certificat COVID, les règles du pays en question s’appliquent.\",\n          \"iconIos\": \"ic-travel\",\n          \"iconAndroid\": \"ic_travel\"\n        }\n      ]\n    },\n    \"it\": {\n      \"title\": \"Obbligo di certificato revocato\",\n      \"newsItems\": [\n        {\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato a febbraio 2022.\",\n          \"iconIos\": \"ic-bund-small\",\n          \"iconAndroid\": \"ic_bund_small\"\n        },\n        {\n          \"text\": \"Da allora la durata di validità in Svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese.\",\n          \"iconIos\": \"ic-timelapse-blue\",\n          \"iconAndroid\": \"ic_timelapse_blue\"\n        },\n        {\n          \"text\": \"Questa app svizzera verifica i certificati COVID in base alle regole di validità vigenti in Svizzera. Il risultato della verifica non è determinante per un impiego all’estero.\",\n          \"iconIos\": \"ic-phone\",\n          \"iconAndroid\": \"ic_phone\"\n        },\n        {\n          \"text\": \"Qualora un Paese richieda ancora un certificato COVID, si applicano le regole di tale Paese.\",\n          \"iconIos\": \"ic-travel\",\n          \"iconAndroid\": \"ic_travel\"\n        }\n      ]\n    },\n    \"rm\": {\n      \"title\": \"Abolì l'obligatori dal certificat\",\n      \"newsItems\": [\n        {\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022.\",\n          \"iconIos\": \"ic-bund-small\",\n          \"iconAndroid\": \"ic_bund_small\"\n        },\n        {\n          \"text\": \"Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han nagina impurtanza pratica pli en Svizra.\",\n          \"iconIos\": \"ic-timelapse-blue\",\n          \"iconAndroid\": \"ic_timelapse_blue\"\n        },\n        {\n          \"text\": \"Questa app svizra da controlla controllescha certificats COVID tenor las reglas da valaivladad svizras. Il resultat da la controlla n'è betg relevant per il diever a l'exteriur.\",\n          \"iconIos\": \"ic-phone\",\n          \"iconAndroid\": \"ic_phone\"\n        },\n        {\n          \"text\": \"Sch'in pajais premetta anc in certificat COVID, valan mintgamai las reglas dal pajais respectiv.\",\n          \"iconIos\": \"ic-travel\",\n          \"iconAndroid\": \"ic_travel\"\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "verifier/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tpackage=\"ch.admin.bag.covidcertificate.verifier\">\n\n\t<uses-permission android:name=\"android.permission.INTERNET\" />\n\t<uses-permission android:name=\"android.permission.CAMERA\" />\n\n\t<application\n\t\tandroid:name=\".MainApplication\"\n\t\tandroid:allowBackup=\"false\"\n\t\tandroid:fullBackupContent=\"false\"\n\t\tandroid:hardwareAccelerated=\"true\"\n\t\tandroid:icon=\"@mipmap/ic_launcher\"\n\t\tandroid:label=\"@string/verifier_app_name\"\n\t\tandroid:networkSecurityConfig=\"@xml/network_security_config\"\n\t\tandroid:roundIcon=\"@mipmap/ic_launcher_round\"\n\t\tandroid:supportsRtl=\"true\"\n\t\tandroid:theme=\"@style/Theme.CovidCertificate\">\n\t\t<activity\n\t\t\tandroid:name=\"ch.admin.bag.covidcertificate.verifier.MainActivity\"\n\t\t\tandroid:exported=\"true\"\n\t\t\tandroid:launchMode=\"singleInstance\"\n\t\t\tandroid:screenOrientation=\"portrait\">\n\t\t\t<intent-filter>\n\t\t\t\t<action android:name=\"android.intent.action.MAIN\" />\n\n\t\t\t\t<category android:name=\"android.intent.category.LAUNCHER\" />\n\t\t\t</intent-filter>\n\t\t</activity>\n\n\t\t<activity\n\t\t\tandroid:name=\".updateboarding.UpdateboardingActivity\"\n\t\t\tandroid:launchMode=\"singleInstance\"\n\t\t\tandroid:exported=\"false\"\n\t\t\tandroid:screenOrientation=\"portrait\" />\n\t</application>\n\n\t<queries>\n\t\t<intent>\n\t\t\t<action android:name=\"com.symbol.datawedge.api.ACTION\" />\n\t\t</intent>\n\t</queries>\n\n</manifest>"
  },
  {
    "path": "verifier/src/main/assets/faq/config.json",
    "content": "{\n  \"forceUpdate\": false,\n  \"infoBox\": null,\n  \"questions\": null,\n  \"works\": {\n    \"de\": {\n      \"faqTitle\": \"So werden Covid-Zertifikate geprüft\",\n      \"faqSubTitle\": \"Mit der COVID Certificate Check App können QR-Codes auf Covid-Zertifikaten gescannt und die Zertifikate auf Echtheit und Gültigkeit überprüft werden.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie können Covid-Zertifikate geprüft werden?\",\n          \"text\": \"Um ein Covid-Zertifikat zu prüfen, scannen Sie den QR-Code auf dem Papierzertifikat oder in der vorgewiesenen COVID Certificate App mit der dafür vorgesehenen COVID Certificate Check App.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Erklärvideo\",\n          \"linkUrl\": \"https://youtu.be/DClLZIUjr3w\"\n        },\n        {\n          \"title\": \"Was wird genau geprüft?\",\n          \"text\": \"Beim Scannen werden drei Aspekte geprüft:\\n– Enthält das Zertifikat eine gültige elektronische Signatur?\\n– Ist das Zertifikat nicht widerrufen worden?\\n– Entspricht das Zertifikat den Gültigkeitskriterien der Schweiz?\\n\\nWenn alle drei Aspekte positiv bewertet werden, wird das Covid-Zertifikat als gültig ausgewiesen.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was sind die aktuellen Gültigkeitskriterien der Schweiz?\",\n          \"text\": \"Die aktuell geltende Gültigkeitsdauer von Covid-Zertifikaten finden Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Weitere Informationen\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Welche Ausweisdokumente sind gültig? Weshalb müssen die Personalien überprüft werden?\",\n          \"text\": \"Neben Pass oder ID werden auch andere Ausweisdokumente akzeptiert, die die Identität der betreffenden Person mit einem Foto belegen (z.B. Führerausweis). Das Covid-Zertifikat ist zwar fälschungssicher, mit der Überprüfung der Personalien wird aber erst sichergestellt, dass das vorgezeigte Zertifikat auch auf den Vorweisenden ausgestellt wurde.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Welche Daten sehe ich beim Prüfvorgang?\",\n          \"text\": \"Beim Prüfvorgang sehen Sie nur den Namen und das Geburtsdatum der Zertifikatsinhaberin oder des Zertifikatsinhabers und ob das Covid-Zertifikat gültig ist.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Werden beim Prüfvorgang in der COVID Certificate Check App oder in einem zentralen System Daten gespeichert?\",\n          \"text\": \"Nein, beim Prüfvorgang werden keine Daten gespeichert - weder in der COVID Certificate Check App noch in einem zentralen System. Es ist somit nicht möglich nachzuvollziehen, welches Covid-Zertifikat von wem, wann und wo überprüft wurde.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können Zertifikate auch offline geprüft werden?\",\n          \"text\": \"Grundsätzlich können Covid-Zertifikate auch ohne eine Internetverbindung geprüft werden. Dazu werden regelmässig aktualisierte Prüflisten von einem zentralen Server heruntergeladen. Diese lokal gespeicherten Prüflisten dürfen nicht älter als 48h sein. \\n\\nUm die Prüflisten zu aktualisieren muss die App mit dem Internet verbunden sein und geöffnet werden. Die Aktualisierung erfolgt unmittelbar und automatisch.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist das Zertifikat Light?\",\n          \"text\": \"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zu generieren. Dieses «Zertifikat Light» zeigt lediglich das Vorliegen eines gültigen Covid-Zertifikats an, jedoch ohne Gesundheitsdaten zu enthalten. \\n\\nDie datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Dritte mit selbstentwickelten Apps bei der Prüfung von Covid-Zertifikaten Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung einsehen könnten. Mittels dem «Zertifikat Light» wird dies verhindert.\\n\\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von 24 Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der 24 Stunden benötigt, kann das Zertifikat Light einfach deaktiviert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie kann ein Zertifikat Light wieder in ein EU/EFTA-konformes Covid-Zertifikat umgewandelt werden?\",\n          \"text\": \"Das Zertifikat Light kann durch die Halterin / den Halter jederzeit in der «COVID Certificate»-App deaktiviert werden. Danach steht das normale Covid-Zertifikat wieder zur Verfügung.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How COVID certificates are checked\",\n      \"faqSubTitle\": \"The COVID Certificate Check app can be used to scan the QR codes on COVID certificates and check the certificates for authenticity and validity.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"How can COVID certificates be checked?\",\n          \"text\": \"To check a COVID certificate, use the dedicated COVID Certificate Check app to scan the QR code on the paper certificate or in the COVID Certificate app presented.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Explanatory video\",\n          \"linkUrl\": \"https://youtu.be/spfVPMqukjM\"\n        },\n        {\n          \"title\": \"What exactly is checked?\",\n          \"text\": \"Three aspects are checked when scanning:\\n– Does the certificate contain a valid electronic signature?\\n– Is the certificate unrevoked?\\n– Does the certificate meet Switzerland's validity criteria?\\n\\nIf the answer to all three questions is affirmative, the COVID certificate is shown as valid.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What are the current validity criteria in Switzerland?\",\n          \"text\": \"The current validity period of COVID certificates can be found here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Further information\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Which identification documents are valid? Why do personal details have to be checked?\",\n          \"text\": \"Aside from passports or ID cards, other photo identification documents that prove the identity of the person in question (e.g. driving licence) are also accepted. Although the COVID certificate is forgery-proof, the only way to ensure that the certificate shown was issued to the person presenting it is to check the personal details.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What data do I see during the verification process?\",\n          \"text\": \"During the verification process, you see only the certificate holder's name and date of birth, and whether the COVID certificate is valid.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Is any data stored in the COVID Certificate Check app or in a central system during the verification process?\",\n          \"text\": \"No, no data is stored during the verification process, be it in the COVID Certificate Check app or in a central system. Therefore, it is not possible to trace which COVID certificate was checked by whom, when and where.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Is it possible to verify the certificates offline?\",\n          \"text\": \"In principle, COVID certificates can also be verified without an Internet connection. For this purpose, regularly updated checklists are downloaded from a central server. These locally stored checklists must not be older than 48 hours. \\n\\nIn order to update the checklists, the app must be open and connected to the Internet. Updating occurs immediately and automatically.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is the 'certificate light'\",\n          \"text\": \"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. This 'certificate light' merely shows that the holder has a valid COVID certificate but does not contain any health-related data. \\n\\nThe alternative to the COVID certificate containing minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as third parties using apps they have developed themselves could be able to see health-related data such as the vaccine administered or date of vaccination when checking the certificate. The 'certificate light' prevents this.\\n\\nThe 'Certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons the 'certificate light' is only valid for 24 hours and must then be reactivated. If you need to use the normal certificate before the end of the 24-hour period, you can simply deactivate the 'certificate light'.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How can a 'certificate light' be converted back into an EU/EFTA-compliant COVID certificate?\",\n          \"text\": \"The holder can deactivate a 'certificate light' any time in their COVID Certificate app. After that their normal COVID certificate is available again.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Contrôle de certificats COVID\",\n      \"faqSubTitle\": \"L'app de contrôle permet de scanner le code QR figurant sur un certificat COVID et de vérifier l'authenticité et la validité de ce dernier.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment contrôler un certificat COVID?\",\n          \"text\": \"Pour contrôler un certificat COVID, il vous suffit de scanner le code QR figurant sur le document papier ou dans l'app «COVID Certificate» au moyen de l'app de contrôle prévue à cet effet.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Vidéo explicative\",\n          \"linkUrl\": \"https://youtu.be/O-9YhJDI3ZI\"\n        },\n        {\n          \"title\": \"Sur quoi porte le contrôle au juste?\",\n          \"text\": \"Le scan du code QR permet de répondre aux trois questions suivantes:\\n– Le certificat contient-il une signature électronique valable?\\n– Le certificat a-t-il été révoqué?\\n– Le certificat remplit-il les critères de validité fixés par la Suisse?\\n\\nSi vous pouvez répondre oui à la 1re et à la 3e question et non à la 2e, la validité du certificat COVID est attestée.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quels sont les critères de validité actuels de la Suisse ?\",\n          \"text\": \"Vous trouverez des informations sur la durée de validité actuelle du certificat COVID à l’adresse suivante :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Informations supplémentaires\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Quelles pièces d'identité sont valables? Pourquoi faut-il vérifier les données personnelles?\",\n          \"text\": \"Outre le passeport et la carte d'identité, les pièces d'identité réputées valables sont celles qui attestent l'identité de la personne concernée au moyen d'une photo (par ex. permis de conduire). Le certificat COVID est certes infalsifiable, mais le contrôle des données personnelles est le seul moyen de vérifier que le certificat a été établi au nom de la personne qui le présente.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"À quelles données ai-je accès lors du contrôle?\",\n          \"text\": \"Lors du contrôle, vous n'avez accès qu'au nom et à la date de naissance du détenteur du certificat et voyez seulement si le certificat COVID est valable.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quid du stockage des données lors du contrôle?\",\n          \"text\": \"Aucune des données auxquelles vous avez accès lors du contrôle n'est stockée dans l'app ou dans un système central. Il est par conséquent impossible de savoir quel certificat COVID a été vérifié par qui, quand et où.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"La vérification des certificats est-elle possible hors ligne ?\",\n          \"text\": \"En principe, il est aussi possible de vérifier les certificats COVID sans connexion Internet. À cette fin, des listes de contrôle régulièrement mises à jour sont téléchargées à partir d’un serveur central. Elles sont enregistrées localement et ne doivent pas remonter à plus de 48 h.\\n\\nPour actualiser les listes de contrôle, l’application doit être ouverte et connectée à Internet. La mise à jour s’effectue immédiatement et automatiquement.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu’est-ce que le certificat light ?\",\n          \"text\": \"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Ce certificat « light » indique uniquement si le certificat présenté est valide, sans fournir de données sur la santé.\\n\\nL’alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, des personnes tierces pourraient développer des applications leur donnant la possibilité de lire, lors de la vérification d’un certificat, les données sur la santé (p. ex. le type de vaccin et la date de la vaccination). Le certificat light empêche tout abus de ce genre.\\n\\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant 24 heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment reconvertir un certificat light en certificat COVID conforme aux normes UE/AELE ?\",\n          \"text\": \"Le détenteur peut en tout temps désactiver le certificat light dans l’application «COVID Certificate». Le certificat COVID standard est alors à nouveau disponible.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Come avviene la verifica dei certificati COVID?\",\n      \"faqSubTitle\": \"Con l'app COVID Certificate Check è possibile scansionare i relativi codici QR e verificare l'autenticità e la validità dei certificati COVID.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Come posso verificare i certificati COVID?\",\n          \"text\": \"Per verificare un certificato COVID tramite l'app COVID Certificate Check, può scansionare il codice QR che trova sulla copia cartacea del certificato oppure sull’app che le viene mostrata.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Video esplicativo\",\n          \"linkUrl\": \"https://youtu.be/b4JXnfr2Ugg\"\n        },\n        {\n          \"title\": \"Cosa viene verificato esattamente?\",\n          \"text\": \"Scansionando il codice QR vengono verificati i seguenti tre aspetti.\\n– Il certificato contiene una firma elettronica valida?\\n– Il certificato è ancora valido?\\n– Il certificato rispetta i criteri di validità previsti dalla normativa svizzera?\\n\\nSe tutti i tre aspetti sono valutati positivamente, il certificato COVID è considerato valido.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali sono attualmente i criteri di validità in Svizzera?\",\n          \"text\": \"L’attuale durata di validità dei certificati COVID è consultabile qui:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriori informazioni\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Quali documenti di legittimazione sono accettati o validi? Perché devono essere verificati i dati personali?\",\n          \"text\": \"Oltre al passaporto o alla carta d'identità sono accettati altri documenti che provano l'identità della persona in questione tramite una foto (ad es. licenza di condurre). Il certificato COVID non è falsificabile, tuttavia solo verificando i dati personali si garantisce che il certificato sia stato effettivamente rilasciato alla persona che lo sta mostrando.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali dati posso visualizzare durante il processo di verifica?\",\n          \"text\": \"Durante il processo di verifica visualizzerà solo nome e cognome nonché la data di nascita del titolare del certificato e l'indicazione della validità del certificato.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Durante il processo di verifica vengono salvati dati nell'app COVID Certificate Check o in un sistema centrale?\",\n          \"text\": \"No, durante il processo di verifica non vengono salvati dati nell'app COVID Certificate Check né in un sistema centrale. In questo modo, non è possibile risalire a quali certificati sono stati verificati, da chi, quando e dove.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I certificati possono essere verificati anche offline?\",\n          \"text\": \"In linea di principio, i certificati COVID possono essere verificati anche senza connessione Internet. A tale scopo, vengono scaricati regolarmente da un server centrale gli elenchi di verifica aggiornati. Questi elenchi salvati localmente non devono avere più di 48 ore. \\n\\nPer poter aggiornare gli elenchi di verifica, l’app deve essere aperta e collegata a Internet. L’aggiornamento avviene in modo immediato e automatico.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Che cos'è il certificato light?\",\n          \"text\": \"L'app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo. Il certificato light indica semplicemente l'esistenza di un certificato valido, ma non contiene i dati sanitari.\\n\\nIl certificato con dati ridotti al minimo è un’alternativa al certificato COVID-19 ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché le applicazioni autosviluppate per verificare i certificati COVID-19 consentirebbero a terzi di visualizzare i dati sanitari, ad esempio il vaccino somministrato o la data della vaccinazione. Ciò può essere evitato mediante il «certificato light».\\n\\nIl «certificato light» è disponibile unicamente in versione elettronica nell'app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il «certificato light» ha una validità massima di 24 ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le 24 ore, il certificato light può essere disattivato semplicemente.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come si fa a trasformare un certificato light nuovamente in un certificato COVID conforme all’UE/AELS?\",\n          \"text\": \"Il certificato light può essere disattivato dal titolare in qualsiasi momento nell’app «COVID Certificate», dopodiché il certificato COVID di base è di nuovo disponibile.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Uschia vegnan verifitgads ils certificats COVID\",\n      \"faqSubTitle\": \"Cun l'app COVID Certificate Check pon vegnir scannads ils codes QR sin ils certificats COVID per verifitgar l'autenticitad e la valaivladad dals certificats.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Co pon vegnir verifitgads ils certificats COVID?\",\n          \"text\": \"Per verifitgar in certificat COVID pudais Vus scannar il code QR sin Voss certificat sin palpiri u en l'app COVID Certificate cun l’app «COVID Certificate Check» previsa per quai.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Video explicativ\",\n          \"linkUrl\": \"https://youtu.be/DClLZIUjr3w\"\n        },\n        {\n          \"title\": \"Tge vegn propi verifitgà?\",\n          \"text\": \"Cun scannar vegnan verifitgads trais aspects:\\n– Cuntegna il certificat ina signatura digitala valaivla?\\n– N'è il certificat betg vegnì revocà?\\n– Correspunda il certificat als criteris da valaivladad en Svizra?\\n\\nSche tut ils trais aspects vegnan valitads en moda positiva, vegn il certificat COVID considerà sco valaivel.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge èn ils criteris da valaivladad actuals da la Svizra?\",\n          \"text\": \"La durada da valaivladad vertenta actuala dals certificats COVID chattais Vus qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriuras infurmaziuns\",\n          \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat.html#-837133624\"\n        },\n        {\n          \"title\": \"Tge documents da legitimaziun vegnan acceptads resp. èn valaivels? Pertge ston vegnir verifitgadas las persunalias?\",\n          \"text\": \"Ultra dal passaport e da la ID vegnan acceptads er auters documents da legitimaziun valaivels che cumprovan l’identitad da la persuna pertutgada cun ina fotografia (p.ex. permiss dad ir cun auto). Il certificat COVID na po bain betg vegnir falsifitgà, però pir cun verifitgar las persunalias vegn controllà, sch'il certificat preschentà è vegnì emess per la persuna ch'al preschenta.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge datas ves jau tar la procedura da verificaziun?\",\n          \"text\": \"Tar la procedura da verificaziun vesais Vus mo il num e la data da naschientscha da la possessura u dal possessur dal certificat e sch'il certificat COVID è valaivel.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Vegnan arcunadas datas en in sistem central u en l'app COVID Certificate Check tar la procedura da verificaziun?\",\n          \"text\": \"Na, tar la procedura da verificaziun na vegnan arcunadas naginas datas – ni en l'app COVID Certificate Check ni en in sistem central? I n'è pia betg pussaivel d'identifitgar tge certificat COVID ch'è vegnì verifitgà da tgi, cura e nua.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon ils certificats er vegnir verifitgads offline?\",\n          \"text\": \"Da princip pon ils certificats COVID er vegnir verifitgads senza ina colliaziun cun l'internet. Per far quai vegnan chargiadas giu regularmain d'in server central glistas da verificaziun actualisadas. Questas glistas da verificaziun arcunadas localmain na dastgan betg esser pli veglias che 48 uras.\\n\\nPer actualisar las glistas da verificaziun sto l'app esser colliada cun l'internet e vegnir averta. L'actualisaziun succeda immediatamain ed automaticamain.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in certificat light?\",\n          \"text\": \"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Quest «certificat light» mussa mo ch'i è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad.\\n\\nL'alternativa al certificat COVID è vegnida sviluppada sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai che terzas persunas pudessan – en il rom da la verificaziun da certificats COVID e cun apps sviluppadas sez – prender invista da datas da sanadad, sco per exempel dal vaccin u da la data da la vaccinaziun. Cun agid dal «certificat COVID» vegn quai impedì.\\n\\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da 24 uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà gia pli baud, po il certificat light simplamain vegnir deactivà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co po in certificat light puspè vegnir transfurmà en in certificat COVID confurm a la UE/AECL?\",\n          \"text\": \"La possessura u il possessur po deactivar da tut temp il certificat light en l'app «COVID Certificate». Alura stat puspè a disposiziun il certificat COVID normal. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"androidTransferCheckIntervalMs\": 0,\n  \"androidTransferCheckBackoffMs\": 0,\n  \"timeshiftDetectionEnabled\": false,\n  \"checkModesInfos\": {\n    \"de\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer 3G-Regelung geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für Geimpfte, Genesene oder negativ Getestete akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"Die Prüfung von einem Zertifikat Light ist in diesem Modus möglich.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer 2G-Regelung geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für Geimpfte oder Genesene akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von einem Zertifikat Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Betriebe und Veranstaltungen, in welchen mit einer Regelung nach 2G+ geprüft wird.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Zusätzlich zu einem Covid-Zertifikat für Geimpfte oder Genesene wird ein gültiges Testzertifikat benötigt, welches separat geprüft werden muss.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Ausnahmen: Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung nicht länger als 120 Tage zurückliegt.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Testzertifikat\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Für Bereiche, bei denen ein gültiges Testzertifikat notwendig ist.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In diesem Modus werden Covid-Zertifikate für negativ Getestete basierend auf einem PCR- oder Antigen-Schnelltest akzeptiert.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Die Prüfung von Zertifikate Light ist in diesem Modus nicht möglich.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Wählen Sie den Prüfmodus, in welchem Sie Covid-Zertifikate prüfen möchten.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Der Prüfmodus kann jederzeit geändert werden.\"\n          }\n        ]\n      }\n    },\n    \"en\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 3G rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have been vaccinated, or who have recovered or tested negative.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"It is possible to verify a \\\"light\\\" certificate in this mode.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 2G rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have been vaccinated or who have recovered.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify a \\\"light\\\" certificate in this mode.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For organisations and events applying the 2G+ rule.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"In addition to a COVID certificate for people who have been vaccinated or who have recovered, a valid test certificate is required. This must be verified separately.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Exceptions: People who have been fully vaccinated, received a booster vaccination or recovered (based on a PCR test) no longer than 120 days ago\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify \\\"light\\\" certificates in this mode.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Test certificate\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"For areas in which a valid test certificate is required.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In this mode, COVID certificates are accepted for people who have tested negative based on a PCR or rapid antigen test.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"It is not possible to verify \\\"light\\\" certificates in this mode.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Select the verification mode that you want to use for verifying COVID certificates.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"The verification mode can be changed at any time.\"\n          }\n        ]\n      }\n    },\n    \"fr\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «3G».\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées, guéries ou testées négatives.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"Il peut être également utilisé pour vérifier un «certificat light».\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations où les contrôles se fondent sur la règle des «2G».\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"Ce mode de contrôle permet de vérifier les certificats COVID des personnes vaccinées ou guéries.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"La vérification d’un «certificat light» n'est pas possible dans ce mode.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Pour les entreprises et les manifestations qui appliquent la règle des 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"En plus d'un certificat COVID de vaccination ou de guérison, il faut présenter un certificat de test valable, qui doit être vérifié séparément.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Exceptions: les personnes dont la vaccination, la vaccination de rappel ou la guérison datent de moins de 120 jours\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Ce mode ne permet pas de vérifier les «certificats light».\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificat de test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Destiné aux domaines qui nécessitent un certificat de test valable.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"Ce mode permet de vérifier les certificats des personnes qui disposent d'un résultat négatif à un test PCR ou à un test rapide antigénique.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Ce mode ne permet pas de vérifier les «certificats light».\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Choisissez le mode de contrôle correspondant aux certificats COVID à vérifier.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Le mode de contrôle peut être changé en tout temps.\"\n          }\n        ]\n      }\n    },\n    \"it\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per le strutture e le manifestazioni in cui si applica la regola 3G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID per persone vaccinate, guartite o testate negative.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"I certificati light possono essere verificati.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per le strutture e le manifestazioni in cui si applica la regola 2G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID per persone vaccinate o guartite.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"Questa modalità non permette di verificare i certificati light.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per strutture e manifestazioni cui si applica la regola 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Oltre a un certificato di vaccinazione o di guarigione COVID è richiesto un certificato di test valido, che deve essere verificato separatamente.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Eccezioni: Persone per le quali sono trascorsi al massimo 120 giorni dalla vaccinazione completa, dalla vaccinazione di richiamo o dalla guarigione.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"In questa modalità non è possibile verificare i certificati light.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificato di test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per i contesti in cui è richiesto un certificato di test valido.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"In questa modalità sono accettati i certificati COVID rilasciati alle persone risultate negative a un test PCR o a un test antigenico rapido.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"In questa modalità non è possibile verificare i certificati light.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Selezionare la modalità in cui verificare i certificati COVID.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"La modalità di verifica può essere cambiata in qualsiasi momento.\"\n          }\n        ]\n      }\n    },\n    \"rm\": {\n      \"infos\": {\n        \"THREE_G\": {\n          \"title\": \"3G\",\n          \"hexColor\": \"#86c5d9\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas cun ina regla da 3G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_3g\",\n              \"iconIos\": \"ic_3g\",\n              \"text\": \"En quest modus vegnan acceptads certificats COVID per persunas vaccinadas, per persunas guaridas u per persunas cun in test negativ.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light\",\n              \"iconIos\": \"ic-qr-certificate-light\",\n              \"text\": \"En quest modus po vegnir verifitgà in certificat light.\"\n            }\n          ]\n        },\n        \"TWO_G\": {\n          \"title\": \"2G\",\n          \"hexColor\": \"#c2d076\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas cun ina regla da 2G.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g\",\n              \"iconIos\": \"ic_2g\",\n              \"text\": \"En quest modus vegnan acceptads ils certificats COVID per persunas vaccinadas u per persunas guaridas.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"“Certificat light” na po betg vegnir verifitgà en il modus da verificaziun da 2G.\"\n            }\n          ]\n        },\n        \"TWO_G_PLUS\": {\n          \"title\": \"2G+\",\n          \"hexColor\": \"#e6ad8e\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per manaschis ed occurrenzas, nua ch’i vegn verifitgà tenor la regla da 2G+.\"\n            },\n            {\n              \"iconAndroid\": \"ic_2g_plus\",\n              \"iconIos\": \"ic-2-g-plus\",\n              \"text\": \"Ultra d’in certificat COVID per persunas vaccinadas e guaridas dovri in certificat d'in test valaivel che sto vegnir verifitgà separadamain.\"\n            },\n            {\n              \"iconAndroid\": \"ic_info_alert\",\n              \"iconIos\": \"ic-info-alert\",\n              \"text\": \"Excepziuns: Persunas ch'èn vegnidas vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch'èn guaridas (sin basa d'in test da PCR) avant maximalmain 120 dis\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"En quest modus na pon vegnir verifitgads nagins certificats light.\"\n            }\n          ]\n        },\n        \"TEST_CERT\": {\n          \"title\": \"Certificat d'in test\",\n          \"hexColor\": \"#facafa\",\n          \"infos\": [\n            {\n              \"iconAndroid\": \"ic_expire_i\",\n              \"iconIos\": \"ic-expire-i\",\n              \"text\": \"Per secturs che dovran in certificat d'in test valaivel.\"\n            },\n            {\n              \"iconAndroid\": \"ic_t\",\n              \"iconIos\": \"ic-t\",\n              \"text\": \"En quest modus vegnan acceptads certificats COVID per persunas cun in test negativ sin basa d’in test da PCR u d’in test svelt d’antigens.\"\n            },\n            {\n              \"iconAndroid\": \"ic_qr_certificate_light_no\",\n              \"iconIos\": \"ic-qr-certificate-light-no\",\n              \"text\": \"En quest modus na pon vegnir verifitgads nagins certificats light.\"\n            }\n          ]\n        }\n      },\n      \"unselected\": {\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Tscherni il modus da verificaziun, en il qual Vus vulais verifitgar ils certificats COVID.\"\n          },\n          {\n            \"iconAndroid\": \"ic_settings\",\n            \"iconIos\": \"ic-settings\",\n            \"text\": \"Il modus da verificaziun po vegnir midà da tut temp.\"\n          }\n        ]\n      }\n    }\n  },\n  \"checkModeReselectAfterHours\": 2147483647\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/HomeFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier\n\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.graphics.toColorInt\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.config.InfoBoxModel\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\nimport ch.admin.bag.covidcertificate.common.dialog.InfoDialogFragment\nimport ch.admin.bag.covidcertificate.common.html.BuildInfo\nimport ch.admin.bag.covidcertificate.common.html.ImprintFragment\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.models.VerifierCertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.android.verification.state.VerifierDecodeState\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\nimport ch.admin.bag.covidcertificate.verifier.databinding.FragmentHomeBinding\nimport ch.admin.bag.covidcertificate.verifier.faq.VerifierFaqFragment\nimport ch.admin.bag.covidcertificate.verifier.modes.ChooseModeDialogFragment\nimport ch.admin.bag.covidcertificate.verifier.modes.ModesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.verifier.news.InfoCertificateNewsFragment\nimport ch.admin.bag.covidcertificate.verifier.pager.HomescreenPageAdapter\nimport ch.admin.bag.covidcertificate.verifier.pager.HomescreenPagerFragment\nimport ch.admin.bag.covidcertificate.verifier.qr.VerifierQrScanFragment\nimport ch.admin.bag.covidcertificate.verifier.verification.VerificationFragment\nimport ch.admin.bag.covidcertificate.verifier.zebra.ZebraActionBroadcastReceiver\nimport com.google.android.material.tabs.TabLayoutMediator\nimport java.util.concurrent.atomic.AtomicLong\n\nclass HomeFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): HomeFragment {\n\t\t\treturn HomeFragment()\n\t\t}\n\t}\n\n\tprivate val modesAndConfigViewModel by activityViewModels<ModesAndConfigViewModel>()\n\tprivate val verifierSecureStorage by lazy { VerifierSecureStorage.getInstance(requireContext()) }\n\tprivate val zebraBroadcastReceiver by lazy { ZebraActionBroadcastReceiver(verifierSecureStorage) }\n\n\tprivate var _binding: FragmentHomeBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentHomeBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tval adapter = HomescreenPageAdapter(this, HomescreenPagerFragment.getDescriptions().size)\n\t\tbinding.viewPager.adapter = adapter\n\n\t\tbinding.homescreenScanButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, VerifierQrScanFragment.newInstance())\n\t\t\t\t.addToBackStack(VerifierQrScanFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tbinding.homescreenSupportButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, VerifierFaqFragment.newInstance())\n\t\t\t\t.addToBackStack(VerifierFaqFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tbinding.homescreenSettingsButton.setOnClickListener {\n\t\t\tChooseModeDialogFragment.newInstance().show(childFragmentManager, ChooseModeDialogFragment::class.java.canonicalName)\n\t\t}\n\n\t\tmodesAndConfigViewModel.modesLiveData.observe(viewLifecycleOwner) { modeState ->\n\t\t\tval mode = modeState.selectedMode\n\t\t\tif (mode == null || modeState.availableModes.size == 1) {\n\t\t\t\tbinding.homescreenModeIndicator.isVisible = false\n\t\t\t\tbinding.homescreenScanButton.text = getString(R.string.verifier_homescreen_scan_button)\n\t\t\t\tbinding.homescreenSettingsButton.isVisible = modeState.availableModes.size > 1\n\t\t\t} else {\n\t\t\t\tbinding.homescreenModeIndicator.backgroundTintList = ColorStateList.valueOf(mode.hexColor.toColorInt())\n\t\t\t\tbinding.homescreenModeIndicator.text = mode.title\n\t\t\t\tbinding.homescreenModeIndicator.setOnClickListener {\n\t\t\t\t\tChooseModeDialogFragment.newInstance()\n\t\t\t\t\t\t.show(childFragmentManager, ChooseModeDialogFragment::class.java.canonicalName)\n\t\t\t\t}\n\t\t\t\tbinding.homescreenModeIndicator.isVisible = true\n\t\t\t\tbinding.homescreenSettingsButton.isVisible = true\n\t\t\t\tbinding.homescreenScanButton.text =\n\t\t\t\t\tgetString(R.string.verifier_homescreen_scan_button_with_mode).replace(\"{MODE}\", mode.title)\n\t\t\t}\n\t\t}\n\n\t\tmodesAndConfigViewModel.configLiveData.observe(viewLifecycleOwner) { configModel ->\n\t\t\tval languageKey = getString(R.string.language_key)\n\t\t\tval title = configModel.getCovidCertificateNewsText(languageKey)\n\t\t\tif (!title.isNullOrBlank()) {\n\t\t\t\tbinding.covidCertificateInfo.text = title\n\t\t\t\tbinding.covidCertificateInfo.isVisible = true\n\t\t\t\tbinding.covidCertificateInfo.setOnClickListener {\n\t\t\t\t\tshowNewsDialog(configModel)\n\t\t\t\t}\n\t\t\t\tif (!verifierSecureStorage.wasNewsShown(configModel.getCovidCertificateNewsText(\"de\") ?: \"\")) {\n\t\t\t\t\tshowNewsDialog(configModel)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbinding.covidCertificateInfo.isVisible = false\n\t\t\t}\n\n\n\t\t}\n\t\tTabLayoutMediator(binding.tabLayout, binding.viewPager) { _, _ ->\n\t\t\t//Some implementation\n\t\t}.attach()\n\n\t\tif (DebugFragment.EXISTS) {\n\t\t\tsetupDebugFragment()\n\t\t}\n\n\t\tbinding.homescreenHeader.headerImpressum.setOnClickListener {\n\t\t\tval buildInfo = BuildInfo(\n\t\t\t\tgetString(R.string.verifier_app_title),\n\t\t\t\tBuildConfig.VERSION_NAME,\n\t\t\t\tBuildConfig.BUILD_TIME,\n\t\t\t\tBuildConfig.FLAVOR,\n\t\t\t\tgetString(R.string.verifier_terms_privacy_link),\n\t\t\t\t\"covidCheck\",\n\t\t\t)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(\n\t\t\t\t\tR.id.fragment_container, ImprintFragment.newInstance(\n\t\t\t\t\t\tR.string.impressum_title,\n\t\t\t\t\t\tbuildInfo\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addToBackStack(ImprintFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tsetupInfoBox()\n\t}\n\n\tprivate fun showNewsDialog(configModel: ConfigModel) {\n\t\tverifierSecureStorage.setNewsWasShown(configModel.getCovidCertificateNewsText(\"de\") ?: \"\")\n\t\tInfoCertificateNewsFragment.newInstance()\n\t\t\t.show(childFragmentManager, InfoCertificateNewsFragment::class.java.canonicalName)\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\t\tzebraBroadcastReceiver.registerWith(requireContext()) { decodeQrCodeData(it) }\n\t\tmodesAndConfigViewModel.resetSelectedModeIfNeeded()\n\t}\n\n\toverride fun onPause() {\n\t\tsuper.onPause()\n\t\tzebraBroadcastReceiver.unregisterWith(requireContext())\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupDebugFragment() {\n\t\tval lastClick = AtomicLong(0)\n\t\tval debugButtonClickListener = View.OnClickListener {\n\t\t\tval now = System.currentTimeMillis()\n\t\t\tif (lastClick.get() > now - 1000L) {\n\t\t\t\tlastClick.set(0)\n\t\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t\t.replace(R.id.fragment_container, DebugFragment.newInstance())\n\t\t\t\t\t.addToBackStack(DebugFragment::class.java.canonicalName)\n\t\t\t\t\t.commit()\n\t\t\t} else {\n\t\t\t\tlastClick.set(now)\n\t\t\t}\n\t\t}\n\t\tbinding.homescreenHeader.schwiizerchruez.setOnClickListener(debugButtonClickListener)\n\t}\n\n\tprivate fun setupInfoBox() {\n\t\tmodesAndConfigViewModel.configLiveData.observe(viewLifecycleOwner) { config ->\n\t\t\tval notificationButton = binding.homescreenHeader.headerNotification\n\t\t\tval localizedInfo = config.getInfoBox(getString(R.string.language_key))\n\t\t\tval hasInfoBox = localizedInfo != null\n\n\t\t\tval onClickListener = localizedInfo?.let { infoBox ->\n\t\t\t\tval secureStorage = ConfigSecureStorage.getInstance(notificationButton.context)\n\t\t\t\tif (secureStorage.getLastShownInfoBoxId() != infoBox.infoId) {\n\t\t\t\t\tcloseCurrentInfoDialog()\n\t\t\t\t\tshowInfoDialog(infoBox)\n\t\t\t\t\tsecureStorage.setLastShownInfoBoxId(infoBox.infoId)\n\t\t\t\t}\n\n\t\t\t\treturn@let View.OnClickListener {\n\t\t\t\t\tcloseCurrentInfoDialog()\n\t\t\t\t\tshowInfoDialog(infoBox)\n\t\t\t\t\tsecureStorage.setLastShownInfoBoxId(infoBox.infoId)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnotificationButton.isVisible = hasInfoBox\n\t\t\tnotificationButton.setOnClickListener(onClickListener)\n\t\t}\n\t}\n\n\tprivate fun closeCurrentInfoDialog() {\n\t\t(childFragmentManager.findFragmentByTag(InfoDialogFragment::class.java.canonicalName) as? InfoDialogFragment)?.dismiss()\n\t}\n\n\tprivate fun showInfoDialog(infoBox: InfoBoxModel) {\n\t\tInfoDialogFragment.newInstance(infoBox).show(childFragmentManager, InfoDialogFragment::class.java.canonicalName)\n\t}\n\n\tprivate fun decodeQrCodeData(qrCodeData: String) {\n\t\twhen (val decodeState = CovidCertificateSdk.Verifier.decode(qrCodeData)) {\n\t\t\tis VerifierDecodeState.SUCCESS -> {\n\t\t\t\tshowVerificationFragment(decodeState.certificateHolder)\n\t\t\t}\n\t\t\tis VerifierDecodeState.ERROR -> {\n\t\t\t\t// Ignore errors when scanning in the home screen\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun showVerificationFragment(certificateHolder: VerifierCertificateHolder) {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, VerificationFragment.newInstance(certificateHolder))\n\t\t\t.addToBackStack(VerificationFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/MainActivity.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier\n\nimport android.content.DialogInterface\nimport android.content.Intent\nimport android.os.Bundle\nimport androidx.activity.result.contract.ActivityResultContracts\nimport androidx.activity.viewModels\nimport androidx.appcompat.app.AlertDialog\nimport androidx.lifecycle.lifecycleScope\nimport ch.admin.bag.covidcertificate.common.BaseActivity\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.onboarding.BaseOnboardingActivity\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.util.setSecureFlagToBlockScreenshots\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\nimport ch.admin.bag.covidcertificate.verifier.databinding.ActivityMainBinding\nimport ch.admin.bag.covidcertificate.verifier.modes.ModesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.verifier.updateboarding.UpdateboardingActivity\n\nclass MainActivity : BaseActivity() {\n\n\tprivate lateinit var binding: ActivityMainBinding\n\n\tprivate val configViewModel by viewModels<ModesAndConfigViewModel>()\n\tprivate val secureStorage by lazy { VerifierSecureStorage.getInstance(this) }\n\n\tprivate var forceUpdateDialog: AlertDialog? = null\n\n\tprivate val updateboardingLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->\n\t\tif (result.resultCode == RESULT_OK) {\n\t\t\tsecureStorage.setCertificateLightUpdateboardingCompleted(true)\n\t\t\tsecureStorage.setAgbUpdateboardingCompleted(true)\n\n\t\t\t// Load the config and trust list here because onStart ist called before the activity result and the onboarding\n\t\t\t// completion flags are therefore not yet set to true\n\t\t\tloadConfigAndTrustList()\n\t\t\tshowHomeFragment()\n\t\t} else {\n\t\t\tfinish()\n\t\t}\n\t}\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\n\t\tconfigViewModel.loadActiveModes(getString(R.string.language_key))\n\n\t\tbinding = ActivityMainBinding.inflate(layoutInflater)\n\t\tval view = binding.root\n\t\tsetContentView(view)\n\n\t\twindow.setSecureFlagToBlockScreenshots(BuildConfig.FLAVOR)\n\n\t\tif (savedInstanceState == null) {\n\t\t\tval certificateLightUpdateboardingCompleted = secureStorage.getCertificateLightUpdateboardingCompleted()\n\t\t\tval agbUpdateboardingCompleted = secureStorage.getAgbUpdateboardingCompleted()\n\n\t\t\tval onboardingType = when {\n\t\t\t\t!certificateLightUpdateboardingCompleted -> UpdateboardingActivity.OnboardingType.CERTIFICATE_LIGHT\n\t\t\t\t!agbUpdateboardingCompleted -> UpdateboardingActivity.OnboardingType.AGB_UPDATE\n\t\t\t\telse -> null\n\t\t\t}\n\n\t\t\tif (onboardingType != null) {\n\t\t\t\tval intent = Intent(this, UpdateboardingActivity::class.java).apply {\n\t\t\t\t\tputExtra(BaseOnboardingActivity.EXTRA_ONBOARDING_TYPE, onboardingType.name)\n\t\t\t\t}\n\t\t\t\tupdateboardingLauncher.launch(intent)\n\t\t\t} else {\n\t\t\t\tshowHomeFragment()\n\t\t\t}\n\t\t}\n\n\t\tconfigViewModel.configLiveData.observe(this) { config -> handleConfig(config) }\n\t}\n\n\toverride fun onStart() {\n\t\tsuper.onStart()\n\n\t\t// Every time the app comes into the foreground and the updateboarding was completed, reload the config and trust list\n\t\tif (secureStorage.getCertificateLightUpdateboardingCompleted()) {\n\t\t\tloadConfigAndTrustList()\n\t\t}\n\t}\n\n\toverride fun onDestroy() {\n\t\tsuper.onDestroy()\n\t\tCovidCertificateSdk.unregisterWithLifecycle(lifecycle)\n\t}\n\n\tprivate fun loadConfigAndTrustList() {\n\t\tconfigViewModel.loadConfig(BuildConfig.BASE_URL, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TIME.toString())\n\t\tCovidCertificateSdk.refreshTrustList(lifecycleScope)\n\t}\n\n\tprivate fun showHomeFragment() {\n\t\tCovidCertificateSdk.registerWithLifecycle(lifecycle)\n\n\t\tsupportFragmentManager.beginTransaction()\n\t\t\t.add(R.id.fragment_container, HomeFragment.newInstance())\n\t\t\t.commit()\n\t}\n\n\tprivate fun handleConfig(config: ConfigModel) {\n\t\tif (config.forceUpdate && forceUpdateDialog == null) {\n\t\t\tval forceUpdateDialog = AlertDialog.Builder(this, R.style.CovidCertificate_AlertDialogStyle)\n\t\t\t\t.setTitle(R.string.force_update_title)\n\t\t\t\t.setMessage(R.string.force_update_text)\n\t\t\t\t.setPositiveButton(R.string.force_update_button, null)\n\t\t\t\t.setCancelable(false)\n\t\t\t\t.create()\n\t\t\t\t.apply { window?.setSecureFlagToBlockScreenshots(BuildConfig.FLAVOR) }\n\t\t\tforceUpdateDialog.setOnShowListener {\n\t\t\t\tforceUpdateDialog.getButton(DialogInterface.BUTTON_POSITIVE)\n\t\t\t\t\t.setOnClickListener {\n\t\t\t\t\t\tval packageName = packageName\n\t\t\t\t\t\tUrlUtil.openUrl(this@MainActivity, \"market://details?id=$packageName\")\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tthis.forceUpdateDialog = forceUpdateDialog\n\t\t\tforceUpdateDialog.show()\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/MainApplication.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier\n\nimport android.app.Application\nimport android.content.Intent\nimport android.content.IntentFilter\nimport android.os.Build\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\nimport ch.admin.bag.covidcertificate.common.util.EnvironmentUtil\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\nimport ch.admin.bag.covidcertificate.verifier.zebra.ZebraDataWedgeApiUtil\nimport ch.admin.bag.covidcertificate.verifier.zebra.ZebraResultActionBroadcastReceiver\n\nclass MainApplication : Application() {\n\n\toverride fun onCreate() {\n\t\tsuper.onCreate()\n\n\t\tif (DebugFragment.EXISTS) {\n\t\t\tDebugFragment.initDebug(this)\n\t\t}\n\n\t\t// If this is a fresh install, don't show an updateboarding\n\t\tval isFreshInstall = ConfigSecureStorage.getInstance(this).getConfig() == null\n\t\tif (isFreshInstall) {\n\t\t\tVerifierSecureStorage.getInstance(this).setCertificateLightUpdateboardingCompleted(true)\n\t\t\tVerifierSecureStorage.getInstance(this).setAgbUpdateboardingCompleted(true)\n\t\t}\n\n\t\tConfig.appToken = BuildConfig.SDK_APP_TOKEN\n\t\tConfig.userAgent =\n\t\t\tUserAgentInterceptor.UserAgentGenerator { \"${this.packageName};${BuildConfig.VERSION_NAME};${BuildConfig.BUILD_TIME};Android;${Build.VERSION.SDK_INT}\" }\n\n\t\tCovidCertificateSdk.init(this, EnvironmentUtil.getSdkEnvironment())\n\n\t\tcheckForExternalScanners()\n\t}\n\n\tprivate fun checkForExternalScanners() {\n\t\tregisterReceiver(ZebraResultActionBroadcastReceiver(), IntentFilter().apply {\n\t\t\taddAction(ZebraDataWedgeApiUtil.DATA_WEDGE_API_RESULT_ACTION)\n\t\t\taddCategory(Intent.CATEGORY_DEFAULT)\n\t\t})\n\n\t\t// Send a broadcast to the Zebra Data Wedge API querying the available scanners\n\t\tval enumerateScannersIntent = ZebraDataWedgeApiUtil.getEnumerateScannersIntent()\n\t\tsendBroadcast(enumerateScannersIntent)\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/data/VerifierSecureStorage.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.data\n\nimport android.content.Context\nimport androidx.core.content.edit\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\n\nclass VerifierSecureStorage private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<VerifierSecureStorage, Context>(::VerifierSecureStorage) {\n\t\tprivate const val PREFERENCES = \"SecureStorage\"\n\t\tprivate const val KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED = \"KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED\"\n\t\tprivate const val KEY_AGB_UPDATEBOARDING_COMPLETED = \"KEY_AGB_UPDATEBOARDIN_COMPLETED\"\n\n\t\tprivate const val KEY_HAS_ZEBRA_SCANNER = \"KEY_HAS_ZEBRA_SCANNER\"\n\n\t\tprivate const val KEY_SELECTED_MODE = \"KEY_SELECTED_MODE\"\n\t\tprivate const val KEY_MODE_SELECTION_TIME = \"KEY_MODE_SELECTION_TIME\"\n\n\t\tprivate const val KEY_SHOW_COVID_NEWS = \"KEY_SHOW_COVID_NEWS_FIRST_TIME\"\n\t}\n\n\tprivate val prefs = EncryptedSharedPreferencesUtil.initializeSharedPreferences(context, PREFERENCES)\n\n\tfun getCertificateLightUpdateboardingCompleted() = prefs.getBoolean(KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED, false)\n\n\tfun setCertificateLightUpdateboardingCompleted(completed: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED, completed)\n\t}\n\n\tfun getAgbUpdateboardingCompleted() = prefs.getBoolean(KEY_AGB_UPDATEBOARDING_COMPLETED, false)\n\n\tfun setAgbUpdateboardingCompleted(completed: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_AGB_UPDATEBOARDING_COMPLETED, completed)\n\t}\n\n\tfun hasZebraScanner() = prefs.getBoolean(KEY_HAS_ZEBRA_SCANNER, false)\n\n\tfun setHasZebraScanner(hasZebraScanner: Boolean) = prefs.edit { putBoolean(KEY_HAS_ZEBRA_SCANNER, hasZebraScanner) }\n\n\tfun setSelectedMode(mode: String?) = prefs.edit {\n\t\tputString(KEY_SELECTED_MODE, mode)\n\t\tputLong(KEY_MODE_SELECTION_TIME, System.currentTimeMillis())\n\t}\n\n\tfun getSelectedMode(): String? {\n\t\treturn prefs.getString(KEY_SELECTED_MODE, null)\n\t}\n\n\tfun resetSelectedModeIfNeeded(maxAge: Long): Boolean {\n\t\tval selectionTime = prefs.getLong(KEY_MODE_SELECTION_TIME, 0)\n\t\treturn if (selectionTime < System.currentTimeMillis() - maxAge) {\n\t\t\tprefs.edit {\n\t\t\t\tputString(KEY_SELECTED_MODE, null)\n\t\t\t}\n\t\t\ttrue\n\t\t} else {\n\t\t\tfalse\n\t\t}\n\t}\n\n\tfun setNewsWasShown(title: String) = prefs.edit { putString(KEY_SHOW_COVID_NEWS, title) }\n\tfun wasNewsShown(title: String): Boolean {\n\t\tval shownNews = prefs.getString(KEY_SHOW_COVID_NEWS, \"\")\n\t\tif (shownNews.isNullOrEmpty()) return false\n\t\treturn shownNews == title\n\t}\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/extensions/ContextExtensions.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier.extensions\n\nimport android.annotation.SuppressLint\nimport android.content.Context\nimport android.content.pm.PackageManager\nimport android.content.pm.Signature\nimport android.os.Build\nimport java.security.MessageDigest\n\n@SuppressLint(\"PackageManagerGetSignatures\")\nfun Context.getApplicationSignature(): List<String> {\n\ttry {\n\t\treturn if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {\n\t\t\tval sig = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES).signingInfo\n\t\t\tif (sig.hasMultipleSigners()) {\n\t\t\t\t// Send all with apkContentsSigners\n\t\t\t\tsig.apkContentsSigners.map { it.toShaHash() }\n\t\t\t} else {\n\t\t\t\t// Send one with signingCertificateHistory\n\t\t\t\tsig.signingCertificateHistory.map { it.toShaHash() }\n\t\t\t}\n\t\t} else {\n\t\t\tval sig = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES).signatures\n\t\t\tsig.map { it.toShaHash() }\n\t\t}\n\t} catch (e: Exception) {\n\t\t// Ignore exception\n\t}\n\treturn emptyList()\n}\n\nprivate fun Signature.toShaHash(): String {\n\tval digest = MessageDigest.getInstance(\"SHA\")\n\tdigest.update(this.toByteArray())\n\treturn bytesToHex(digest.digest())\n}\n\nprivate fun bytesToHex(bytes: ByteArray): String {\n\tval hexArray = charArrayOf('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F')\n\tval hexChars = CharArray(bytes.size * 2)\n\tvar v: Int\n\tfor (j in bytes.indices) {\n\t\tv = bytes[j].toInt() and 0xFF\n\t\thexChars[j * 2] = hexArray[v.ushr(4)]\n\t\thexChars[j * 2 + 1] = hexArray[v and 0x0F]\n\t}\n\treturn String(hexChars)\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/faq/VerifierFaqFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.faq\n\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.config.ConfigViewModel\nimport ch.admin.bag.covidcertificate.common.faq.FaqFragment\nimport ch.admin.bag.covidcertificate.verifier.BuildConfig\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.modes.ModesAndConfigViewModel\n\nclass VerifierFaqFragment : FaqFragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): FaqFragment = VerifierFaqFragment()\n\t}\n\n\tprivate val configViewModel by activityViewModels<ModesAndConfigViewModel>()\n\n\toverride fun setupFaqProvider() {\n\t\ttoolbar.setTitle(R.string.verifier_support_header)\n\t\tconfigViewModel.configLiveData.observe(viewLifecycleOwner, { config ->\n\t\t\tval languageKey = getString(R.string.language_key)\n\t\t\tsetupFaqList(config.generateFaqItems(languageKey))\n\t\t})\n\t\tconfigViewModel.loadConfig(BuildConfig.BASE_URL, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TIME.toString())\n\t}\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/modes/ChooseModeDialogFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.modes\n\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.graphics.toColorInt\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.DialogFragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.lifecycle.Observer\nimport ch.admin.bag.covidcertificate.common.config.CheckModeInfoEntry\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.databinding.DialogFragmentChooseModeBinding\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemModeButtonBinding\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemModeInfoBinding\n\nclass ChooseModeDialogFragment : DialogFragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): ChooseModeDialogFragment = ChooseModeDialogFragment()\n\t}\n\n\tprivate var _binding: DialogFragmentChooseModeBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val viewModel by activityViewModels<ModesAndConfigViewModel>()\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_ChooseModeDialog)\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = DialogFragmentChooseModeBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\n\t\tval observers = mutableListOf<Observer<ModesAndConfigViewModel.ModeState?>>()\n\t\tviewModel.modesLiveData.observe(viewLifecycleOwner) { modeState ->\n\n\t\t\tbinding.modeItemsLayout.removeAllViews()\n\t\t\tobservers.forEach { viewModel.modesLiveData.removeObserver(it) }\n\t\t\tobservers.clear()\n\n\t\t\tfor (mode in modeState.availableModes) {\n\t\t\t\tval itemView = ItemModeButtonBinding.inflate(layoutInflater, binding.infoItemsLayout, false)\n\t\t\t\titemView.title.text = mode.title\n\t\t\t\tval observer = Observer<ModesAndConfigViewModel.ModeState?> { modeState ->\n\t\t\t\t\tif (modeState.selectedMode?.id == mode.id) {\n\t\t\t\t\t\titemView.buttonIcon.setImageResource(R.drawable.ic_checkbox_filled)\n\t\t\t\t\t\titemView.root.backgroundTintList = ColorStateList.valueOf(mode.hexColor.toColorInt())\n\t\t\t\t\t} else {\n\t\t\t\t\t\titemView.buttonIcon.setImageResource(R.drawable.ic_checkbox_empty)\n\t\t\t\t\t\titemView.root.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.grey_light, null))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tviewModel.modesLiveData.observe(viewLifecycleOwner, observer)\n\t\t\t\tobservers.add(observer)\n\n\t\t\t\titemView.root.setOnClickListener {\n\t\t\t\t\tviewModel.setSelectedMode(mode.id)\n\t\t\t\t}\n\n\t\t\t\tbinding.modeItemsLayout.addView(itemView.root)\n\n\t\t\t}\n\t\t}\n\n\t\tviewModel.modesLiveData.observe(viewLifecycleOwner) { modeState ->\n\n\t\t\tbinding.infoItemsLayout.removeAllViews()\n\n\t\t\tval mode = modeState.selectedMode\n\t\t\tval items: ArrayList<CheckModeInfoEntry> = arrayListOf()\n\t\t\tif (mode == null) {\n\t\t\t\tbinding.chooseModeButton.isVisible = false\n\t\t\t\tval unselectedModeInfos = viewModel.configLiveData.value?.getUnselectedModesInfos(getString(R.string.language_key))\n\t\t\t\tunselectedModeInfos?.infos?.forEach { unselectedModeInfo ->\n\t\t\t\t\titems.add(CheckModeInfoEntry(unselectedModeInfo.iconAndroid, unselectedModeInfo.text))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbinding.chooseModeButton.isVisible = true\n\t\t\t\titems.addAll(mode.infos)\n\t\t\t}\n\n\t\t\tfor (item in items) {\n\t\t\t\tval itemView = ItemModeInfoBinding.inflate(layoutInflater, binding.infoItemsLayout, false)\n\n\t\t\t\tval iconId = requireContext().getDrawableIdentifier(item.iconAndroid)\n\t\t\t\tif (iconId != 0) {\n\t\t\t\t\titemView.icon.setImageResource(iconId)\n\t\t\t\t} else {\n\t\t\t\t\titemView.icon.setImageResource(R.drawable.ic_info_outline)\n\t\t\t\t}\n\t\t\t\titemView.infoText.text = item.text\n\n\t\t\t\tbinding.infoItemsLayout.addView(itemView.root)\n\t\t\t}\n\t\t}\n\n\t\tbinding.chooseModeButton.setOnClickListener {\n\t\t\tdismiss()\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/modes/ModesAndConfigViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.modes\n\nimport android.app.Application\nimport android.util.Log\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.asFlow\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.common.config.CheckModeInfoModelWithId\nimport ch.admin.bag.covidcertificate.common.config.ConfigViewModel\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.flow.collect\nimport kotlinx.coroutines.flow.combine\nimport kotlinx.coroutines.launch\n\nclass ModesAndConfigViewModel(application: Application) : ConfigViewModel(application) {\n\n\tprivate val verifierSecureStorage = VerifierSecureStorage.getInstance(application)\n\n\tprivate val modesMutableLiveData = MutableLiveData<ModeState>()\n\tval modesLiveData: LiveData<ModeState> = modesMutableLiveData\n\n\tprivate val selectedModeMutableLiveData = MutableLiveData<String?>()\n\n\tinit {\n\t\tselectedModeMutableLiveData.value = verifierSecureStorage.getSelectedMode()\n\t}\n\n\tfun loadActiveModes(langKey: String) {\n\t\tviewModelScope.launch(Dispatchers.Main) {\n\t\t\tCovidCertificateSdk.Verifier.getActiveModes().combine(configLiveData.asFlow()) { activeModes, config ->\n\t\t\t\tval configModeItems = mutableListOf<CheckModeInfoModelWithId>()\n\t\t\t\tfor (mode in activeModes) {\n\t\t\t\t\tval configItem = config?.getCheckModesInfos(langKey)?.get(mode.id)\n\t\t\t\t\tif (configItem != null) {\n\t\t\t\t\t\tconfigModeItems.add(\n\t\t\t\t\t\t\tCheckModeInfoModelWithId(\n\t\t\t\t\t\t\t\tmode.id,\n\t\t\t\t\t\t\t\tconfigItem.title,\n\t\t\t\t\t\t\t\tconfigItem.hexColor,\n\t\t\t\t\t\t\t\tconfigItem.infos\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconfigModeItems.add(\n\t\t\t\t\t\t\tCheckModeInfoModelWithId(\n\t\t\t\t\t\t\t\tmode.id,\n\t\t\t\t\t\t\t\tmode.displayName,\n\t\t\t\t\t\t\t\t\"#888888\",\n\t\t\t\t\t\t\t\tlistOf()\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconfigModeItems\n\t\t\t}.combine(selectedModeMutableLiveData.asFlow()) { configModeItems, selectedModeIdentifier ->\n\t\t\t\tval selectedMode: CheckModeInfoModelWithId?\n\t\t\t\tif (configModeItems.size == 1) {\n\t\t\t\t\tselectedMode = configModeItems[0]\n\t\t\t\t} else {\n\t\t\t\t\tselectedMode = configModeItems.firstOrNull { it.id == selectedModeIdentifier }\n\t\t\t\t}\n\t\t\t\tModeState(configModeItems, selectedMode)\n\t\t\t}.collect {\n\t\t\t\tmodesMutableLiveData.value = it\n\t\t\t}\n\t\t}\n\t}\n\n\tfun setSelectedMode(mode: String?) {\n\t\tselectedModeMutableLiveData.value = mode\n\t\tverifierSecureStorage.setSelectedMode(mode)\n\t}\n\n\tfun resetSelectedModeIfNeeded() {\n\t\tif (verifierSecureStorage.resetSelectedModeIfNeeded(\n\t\t\t\t(configLiveData.value?.checkModeReselectAfterHours ?: 48) * 60 * 60 * 1000L\n\t\t\t)\n\t\t) {\n\t\t\tselectedModeMutableLiveData.value = null\n\t\t}\n\t}\n\n\tdata class ModeState(val availableModes: List<CheckModeInfoModelWithId>, val selectedMode: CheckModeInfoModelWithId?)\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/news/InfoCertificateNewsFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.news\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.DialogFragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.verifier.databinding.DialogFragmentInfoCertificateNewsBinding\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemCertificateNewsBinding\nimport ch.admin.bag.covidcertificate.verifier.modes.ModesAndConfigViewModel\n\nclass InfoCertificateNewsFragment : DialogFragment() {\n\n\tcompanion object {\n\n\t\tfun newInstance(): InfoCertificateNewsFragment = InfoCertificateNewsFragment()\n\t}\n\n\tprivate var _binding: DialogFragmentInfoCertificateNewsBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val viewModel by activityViewModels<ModesAndConfigViewModel>()\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_ChooseModeDialog)\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = DialogFragmentInfoCertificateNewsBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsetupNews()\n\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupNews() {\n\t\tval languageKey = getString(ch.admin.bag.covidcertificate.verifier.R.string.language_key)\n\n\t\tviewModel.configLiveData.observe(viewLifecycleOwner) { configModel ->\n\t\t\tval newsList = configModel.getInfoCovidCertificateNews(languageKey)\n\t\t\tbinding.infoCertificateNewsTitle.text = newsList?.title\n\t\t\tbinding.infoCertificateNewsList.removeAllViews()\n\t\t\tnewsList?.newsItems?.forEach { covidCertificateNewsItem ->\n\t\t\t\tval itemView = ItemCertificateNewsBinding.inflate(layoutInflater, binding.infoCertificateNewsList, true)\n\t\t\t\tval iconIdentifier = requireContext().getDrawableIdentifier(covidCertificateNewsItem.iconAndroid ?: \"\")\n\t\t\t\titemView.newsIcon.setImageResource(iconIdentifier)\n\t\t\t\titemView.newsText.text = covidCertificateNewsItem.text\n\t\t\t}\n\t\t}\n\t\tbinding.infoCertificateNewsCloseButton.setOnClickListener {\n\t\t\tif (this@InfoCertificateNewsFragment.isVisible) dismiss()\n\t\t}\n\t}\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/pager/HomescreenPageAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.pager\n\nimport androidx.fragment.app.Fragment\nimport androidx.viewpager2.adapter.FragmentStateAdapter\n\nclass HomescreenPageAdapter(fragment: Fragment, private val itemsCount: Int) : FragmentStateAdapter(fragment) {\n\n\n\toverride fun getItemCount(): Int {\n\t\treturn itemsCount\n\t}\n\n\toverride fun createFragment(position: Int): Fragment {\n\t\treturn HomescreenPagerFragment.getInstance(position)\n\t}\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/pager/HomescreenPagerFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.pager\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.os.bundleOf\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.databinding.FragmentHomeScreenPagerBinding\n\nclass HomescreenPagerFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate const val ARG_POSITION = \"ARG_POSITION\"\n\n\t\tfun getInstance(position: Int) = HomescreenPagerFragment().apply {\n\t\t\targuments = bundleOf(ARG_POSITION to position)\n\t\t}\n\n\t\tfun getDescriptions() = listOf(\n\t\t\tR.string.verifier_homescreen_pager_description_1,\n\t\t\tR.string.verifier_homescreen_pager_description_2\n\t\t)\n\t}\n\n\tprivate var _binding: FragmentHomeScreenPagerBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentHomeScreenPagerBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tval position = requireArguments().getInt(ARG_POSITION)\n\t\tval homescreenPagerDescriptions: List<Int> = getDescriptions()\n\t\tval homescreenImages = getImageAssets()\n\t\twith(binding) {\n\t\t\thomescreenImage.setImageResource(homescreenImages[position])\n\t\t\thomescreenDescription.setText(homescreenPagerDescriptions[position])\n\n\t\t\troot.post {\n\t\t\t\t// It seems that the viewpager has an issue with wrap_content and multiline text views. That's why we have to\n\t\t\t\t// request a layout on the description again after the full view is laid out, to ensure the whole text is visible.\n\t\t\t\thomescreenDescription.requestLayout()\n\t\t\t}\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun getImageAssets() = listOf(\n\t\tR.drawable.ic_illu_home_1,\n\t\tR.drawable.ic_illu_home_2\n\t)\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/qr/VerifierQrScanFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.qr\n\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.content.ContextCompat\nimport androidx.core.graphics.toColorInt\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.setFragmentResultListener\nimport ch.admin.bag.covidcertificate.common.qr.QrScanFragment\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.models.VerifierCertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.android.verification.state.VerifierDecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\nimport ch.admin.bag.covidcertificate.verifier.databinding.FragmentQrScanBinding\nimport ch.admin.bag.covidcertificate.verifier.modes.ChooseModeDialogFragment\nimport ch.admin.bag.covidcertificate.verifier.modes.ModesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.verifier.verification.VerificationFragment\nimport ch.admin.bag.covidcertificate.verifier.verification.VerificationFragment.Companion.RESULT_FRAGMENT_POPPED\nimport ch.admin.bag.covidcertificate.verifier.zebra.ZebraActionBroadcastReceiver\n\nclass VerifierQrScanFragment : QrScanFragment() {\n\n\tcompanion object {\n\t\tval TAG = VerifierQrScanFragment::class.java.canonicalName\n\n\t\tfun newInstance(): VerifierQrScanFragment {\n\t\t\treturn VerifierQrScanFragment()\n\t\t}\n\n\t}\n\n\tprivate var _binding: FragmentQrScanBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride val viewFinderErrorColor: Int = R.color.red_error_qr_verifier\n\toverride val viewFinderColor: Int = R.color.white\n\toverride val torchOnDrawable: Int = R.drawable.ic_light_on_black\n\toverride val torchOffDrawable: Int = R.drawable.ic_light_off\n\toverride val zoomOnDrawable: Int = R.drawable.ic_zoom_on_black\n\toverride val zoomOffDrawable: Int = R.drawable.ic_zoom_off_white\n\n\tprivate val verifierSecureStorage by lazy { VerifierSecureStorage.getInstance(requireContext()) }\n\tprivate val zebraBroadcastReceiver by lazy { ZebraActionBroadcastReceiver(verifierSecureStorage) }\n\n\tprivate val modesViewModel by activityViewModels<ModesAndConfigViewModel>()\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\n\t\t// Restart the Analyzer whenever the VerificationFragment is popped\n\t\tsetFragmentResultListener(RESULT_FRAGMENT_POPPED) { _, _ ->\n\t\t\tsetScannerCallback()\n\t\t}\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\tsuper.onCreateView(inflater, container, savedInstanceState)\n\n\t\t_binding = FragmentQrScanBinding.inflate(inflater, container, false)\n\n\t\ttoolbar = binding.fragmentQrScannerToolbar\n\t\tqrCodeScanner = binding.qrCodeScanner\n\t\tcutOut = binding.cameraPreviewContainer\n\t\tflashButton = binding.fragmentQrScannerFlashButton\n\t\terrorView = binding.fragmentQrScannerErrorView\n\t\terrorCodeView = binding.qrCodeScannerErrorCode\n\t\tzoomButton = binding.fragmentQrZoom\n\n\t\tinvalidCodeText = binding.qrCodeScannerInvalidCodeText\n\t\tviewFinderTopLeftIndicator = binding.qrCodeScannerTopLeftIndicator\n\t\tviewFinderTopRightIndicator = binding.qrCodeScannerTopRightIndicator\n\t\tviewFinderBottomLeftIndicator = binding.qrCodeScannerBottomLeftIndicator\n\t\tviewFinderBottomRightIndicator = binding.qrCodeScannerBottomRightIndicator\n\n\t\tif (verifierSecureStorage.hasZebraScanner()) {\n\t\t\t// Needs to be before the onAttachedToWindow of the scanner view (which happens between onCreateView and onViewCreated)\n\t\t\tqrCodeScanner.setAutoActivateOnAttach(false)\n\t\t}\n\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tif (verifierSecureStorage.hasZebraScanner()) {\n\t\t\tbinding.qrCodeScannerExternalHardwareDetected.isVisible = true\n\t\t} else {\n\t\t\tactivateCamera()\n\t\t}\n\n\t\tmodesViewModel.modesLiveData.observe(viewLifecycleOwner) { modeState ->\n\t\t\tval mode = modeState.selectedMode\n\t\t\tif (mode == null || modeState.availableModes.size <= 1) {\n\t\t\t\tbinding.fragmentQrScannerModeIndicator.visibility = View.GONE\n\t\t\t} else {\n\t\t\t\tbinding.fragmentQrScannerModeIndicator.backgroundTintList = ColorStateList.valueOf(mode.hexColor.toColorInt())\n\t\t\t\tbinding.fragmentQrScannerModeIndicator.text = mode.title\n\t\t\t\tbinding.fragmentQrScannerModeIndicator.visibility = View.VISIBLE\n\t\t\t}\n\t\t\tbinding.fragmentQrScannerModeIndicator.setOnClickListener {\n\t\t\t\tChooseModeDialogFragment.newInstance()\n\t\t\t\t\t.show(childFragmentManager, ChooseModeDialogFragment::class.java.canonicalName)\n\t\t\t}\n\t\t}\n\n\t\tsetupActivateCameraButton()\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\n\t\tval modeState = modesViewModel.modesLiveData.value\n\t\tif (modeState?.availableModes?.size ?: 0 > 1 && modeState?.selectedMode == null) {\n\t\t\tChooseModeDialogFragment.newInstance().apply { isCancelable = false }\n\t\t\t\t.show(childFragmentManager, ChooseModeDialogFragment::class.java.canonicalName)\n\t\t}\n\n\t\tzebraBroadcastReceiver.registerWith(requireContext()) { decodeQrCodeData(it, {}, {}) }\n\t}\n\n\toverride fun onPause() {\n\t\tsuper.onPause()\n\t\tzebraBroadcastReceiver.unregisterWith(requireContext())\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\toverride fun decodeQrCodeData(qrCodeData: String, onDecodeSuccess: () -> Unit, onDecodeError: (StateError) -> Unit) {\n\t\twhen (val decodeState = CovidCertificateSdk.Verifier.decode(qrCodeData)) {\n\t\t\tis VerifierDecodeState.SUCCESS -> {\n\t\t\t\tonDecodeSuccess.invoke()\n\t\t\t\tshowVerificationFragment(decodeState.certificateHolder)\n\t\t\t}\n\t\t\tis VerifierDecodeState.ERROR -> onDecodeError.invoke(decodeState.error)\n\t\t}\n\t}\n\n\tprivate fun setupActivateCameraButton() {\n\t\tbinding.fragmentCameraActivate.isVisible = verifierSecureStorage.hasZebraScanner()\n\n\t\tbinding.fragmentCameraActivate.setOnClickListener {\n\t\t\tif (qrCodeScanner.isCameraActive) {\n\t\t\t\tdeactivateCamera()\n\t\t\t} else {\n\t\t\t\tactivateCamera()\n\t\t\t}\n\t\t\tbinding.fragmentCameraActivate.isSelected = !qrCodeScanner.isCameraActive\n\n\t\t\tval iconColor = if (qrCodeScanner.isCameraActive) R.color.white else R.color.black\n\t\t\tbinding.fragmentCameraActivate.imageTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(requireContext(), iconColor))\n\t\t}\n\t}\n\n\tprivate fun showVerificationFragment(certificateHolder: VerifierCertificateHolder) {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.add(R.id.fragment_container, VerificationFragment.newInstance(certificateHolder))\n\t\t\t.addToBackStack(VerificationFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n}\n\n"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/updateboarding/UpdateboardingActivity.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.updateboarding\n\nimport androidx.viewpager2.adapter.FragmentStateAdapter\nimport ch.admin.bag.covidcertificate.common.onboarding.BaseOnboardingActivity\nimport ch.admin.bag.covidcertificate.common.onboarding.SimpleOnboardingPagerAdapter\n\nclass UpdateboardingActivity : BaseOnboardingActivity() {\n\n\toverride fun getPagerAdapter(): FragmentStateAdapter? {\n\t\tval onboardingType = intent.getStringExtra(EXTRA_ONBOARDING_TYPE)?.let { OnboardingType.valueOf(it) }\n\n\t\treturn when (onboardingType) {\n\t\t\tOnboardingType.CERTIFICATE_LIGHT -> SimpleOnboardingPagerAdapter(\n\t\t\t\tthis,\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingCertificateLightFragment.newInstance() }\n\t\t\t)\n\t\t\tOnboardingType.AGB_UPDATE -> SimpleOnboardingPagerAdapter(\n\t\t\t\tthis,\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingAgbFragment.newInstance() }\n\t\t\t)\n\t\t\telse -> null\n\t\t}\n\t}\n\n\tenum class OnboardingType {\n\t\tCERTIFICATE_LIGHT, AGB_UPDATE\n\t}\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/updateboarding/UpdateboardingAgbFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.updateboarding\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.databinding.FragmentUpdateboardingAgbBinding\n\nclass UpdateboardingAgbFragment : Fragment(R.layout.fragment_updateboarding_agb) {\n\n\tcompanion object {\n\t\tfun newInstance() = UpdateboardingAgbFragment()\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingAgbBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentUpdateboardingAgbBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as UpdateboardingActivity).continueToNextPage()\n\t\t}\n\n\t\tbinding.itemAgbLink.setOnClickListener { v ->\n\t\t\tval url = v.context.getString(R.string.verifier_terms_privacy_link)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/updateboarding/UpdateboardingCertificateLightFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.updateboarding\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.databinding.FragmentUpdateboardingCertificateLightBinding\n\nclass UpdateboardingCertificateLightFragment : Fragment(R.layout.fragment_updateboarding_certificate_light) {\n\n\tcompanion object {\n\t\tfun newInstance() = UpdateboardingCertificateLightFragment()\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingCertificateLightBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentUpdateboardingCertificateLightBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as UpdateboardingActivity).continueToNextPage()\n\t\t}\n\n\t\tbinding.itemAgbLink.setOnClickListener { v ->\n\t\t\tval url = v.context.getString(R.string.verifier_terms_privacy_link)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/verification/VerificationAdapter.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier.verification\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemVerificationStatusBinding\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemVerificationStatusInfoBinding\n\nclass VerificationAdapter(\n\tprivate val onRetryClickListener: View.OnClickListener,\n\tprivate val onPlayStoreClickListener: View.OnClickListener\n) :\n\tRecyclerView.Adapter<RecyclerView.ViewHolder>() {\n\n\tprivate val items: MutableList<VerificationItem> = mutableListOf()\n\n\toverride fun getItemViewType(position: Int): Int {\n\t\treturn when (items[position]) {\n\t\t\tis StatusItem -> 0\n\t\t\tis InfoItem -> 1\n\t\t}\n\t}\n\n\toverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {\n\t\treturn when (viewType) {\n\t\t\t0 -> StatusViewHolder(ItemVerificationStatusBinding.inflate(LayoutInflater.from(parent.context), parent, false))\n\t\t\telse -> InfoViewHolder(\n\t\t\t\tItemVerificationStatusInfoBinding.inflate(LayoutInflater.from(parent.context), parent, false),\n\t\t\t\tonRetryClickListener,\n\t\t\t\tonPlayStoreClickListener\n\t\t\t)\n\t\t}\n\t}\n\n\toverride fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {\n\t\tval item = items[position]\n\t\tval type = getItemViewType(position)\n\t\twhen (type) {\n\t\t\t0 -> (holder as StatusViewHolder).bindStatusItem(item as StatusItem)\n\t\t\telse -> (holder as InfoViewHolder).bindStatusItem(item as InfoItem)\n\t\t}\n\t}\n\n\toverride fun getItemCount(): Int = items.size\n\n\tfun setItems(newItems: List<VerificationItem>) {\n\t\titems.clear()\n\t\titems.addAll(newItems)\n\t\tnotifyDataSetChanged()\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/verification/VerificationFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.verification\n\nimport android.annotation.SuppressLint\nimport android.content.res.ColorStateList\nimport android.content.res.Resources\nimport android.graphics.drawable.GradientDrawable\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.activity.OnBackPressedCallback\nimport androidx.appcompat.app.AlertDialog\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.view.doOnLayout\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.FragmentManager.POP_BACK_STACK_INCLUSIVE\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.setFragmentResult\nimport androidx.fragment.app.viewModels\nimport androidx.recyclerview.widget.LinearLayoutManager\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.util.getInvalidErrorCode\nimport ch.admin.bag.covidcertificate.common.views.VerticalMarginItemDecoration\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.models.VerifierCertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.android.verification.state.VerifierDecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.ModeValidityState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.SuccessState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.verifier.R\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\nimport ch.admin.bag.covidcertificate.verifier.databinding.FragmentVerificationBinding\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemVerificationHeaderIconBinding\nimport ch.admin.bag.covidcertificate.verifier.modes.ModesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.verifier.zebra.ZebraActionBroadcastReceiver\nimport kotlin.math.max\nimport kotlin.math.roundToInt\n\nclass VerificationFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate val TAG = VerificationFragment::class.java.canonicalName\n\t\tprivate const val ARG_DECODE_DGC = \"ARG_DECODE_DGC\"\n\n\t\tconst val RESULT_FRAGMENT_POPPED = \"RESULT_FRAGMENT_POPPED\"\n\n\t\tfun newInstance(certificateHolder: VerifierCertificateHolder): VerificationFragment {\n\t\t\treturn VerificationFragment().apply {\n\t\t\t\targuments = Bundle().apply {\n\t\t\t\t\tputSerializable(ARG_DECODE_DGC, certificateHolder)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentVerificationBinding? = null\n\tprivate val binding get() = _binding!!\n\tprivate val verificationViewModel: VerificationViewModel by viewModels()\n\tprivate val modesViewModel by activityViewModels<ModesAndConfigViewModel>()\n\tprivate val zebraBroadcastReceiver by lazy { ZebraActionBroadcastReceiver(VerifierSecureStorage.getInstance(requireContext())) }\n\tprivate var certificateHolder: VerifierCertificateHolder? = null\n\tprivate var isClosedByUser = false\n\n\tprivate lateinit var verificationAdapter: VerificationAdapter\n\n\tprivate val onBackPressedCallback = object : OnBackPressedCallback(true) {\n\t\toverride fun handleOnBackPressed() {\n\t\t\tisClosedByUser = true\n\t\t\tparentFragmentManager.popBackStack()\n\t\t\tsetFragmentResult(RESULT_FRAGMENT_POPPED, bundleOf())\n\t\t\tremove()\n\t\t}\n\t}\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tif (arguments?.containsKey(ARG_DECODE_DGC) == false) {\n\t\t\treturn\n\t\t}\n\n\t\tcertificateHolder = requireArguments().getSerializable(ARG_DECODE_DGC) as VerifierCertificateHolder\n\n\t\trequireActivity().onBackPressedDispatcher.addCallback(onBackPressedCallback)\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentVerificationBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\t@SuppressLint(\"SetTextI18n\")\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tview.doOnLayout { setupScrollBehavior() }\n\t\tverificationAdapter = VerificationAdapter(onRetryClickListener = {\n\t\t\tcertificateHolder?.let {\n\t\t\t\tverificationViewModel.retryVerification(it, modesViewModel.modesLiveData.value?.selectedMode?.id ?: \"unknown\")\n\t\t\t}\n\t\t}, onPlayStoreClickListener = {\n\t\t\tUrlUtil.openUrl(context, getString(R.string.verifier_android_app_google_play_store_url))\n\t\t})\n\n\t\tbinding.verificationStatusRecyclerView.apply {\n\t\t\tlayoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)\n\t\t\tadapter = verificationAdapter\n\t\t\taddItemDecoration(VerticalMarginItemDecoration(context, R.dimen.spacing_very_small))\n\t\t}\n\n\t\tbinding.verificationFooterButton.setOnClickListener {\n\t\t\tisClosedByUser = true\n\t\t\tonBackPressedCallback.remove()\n\t\t\tparentFragmentManager.popBackStack()\n\t\t\tsetFragmentResult(RESULT_FRAGMENT_POPPED, bundleOf())\n\t\t}\n\n\t\tverificationViewModel.verificationLiveData.observe(viewLifecycleOwner) {\n\t\t\tupdateHeaderAndVerificationView(it)\n\n\t\t\tif (it is VerificationState.SUCCESS && (it.successState as SuccessState.VerifierSuccessState).modeValidity.modeValidityState == ModeValidityState.UNKNOWN_MODE) {\n\t\t\t\tAlertDialog.Builder(requireContext())\n\t\t\t\t\t.setMessage(R.string.verifier_error_mode_no_longer_exists)\n\t\t\t\t\t.setPositiveButton(R.string.ok_button) { _, _ -> }\n\t\t\t\t\t.show()\n\t\t\t\tmodesViewModel.setSelectedMode(null)\n\t\t\t\tparentFragmentManager.popBackStack(VerificationFragment::class.java.canonicalName, POP_BACK_STACK_INCLUSIVE)\n\t\t\t}\n\t\t}\n\n\t\tverifyAndDisplayCertificateHolder()\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\t\tzebraBroadcastReceiver.registerWith(requireContext()) { decodeQrCodeData(it) }\n\t}\n\n\toverride fun onPause() {\n\t\tsuper.onPause()\n\t\t// Pop the backstack back to the QR scanner screen when the verification fragment is put into the background, unless\n\t\t// it was closed by the user (e.g. with the back or OK button)\n\t\tif (!isClosedByUser) {\n\t\t\tonBackPressedCallback.remove()\n\t\t\tparentFragmentManager.popBackStack()\n\t\t\tsetFragmentResult(RESULT_FRAGMENT_POPPED, bundleOf())\n\t\t}\n\t\tzebraBroadcastReceiver.unregisterWith(requireContext())\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun verifyAndDisplayCertificateHolder() {\n\t\tval certificateHolder = certificateHolder ?: return\n\t\tbinding.verificationScrollView.smoothScrollTo(0, 0)\n\t\tval personName = certificateHolder.getPersonName()\n\n\t\tbinding.verificationFamilyName.text = personName.prettyFamilyName()\n\t\tbinding.verificationGivenName.text = personName.prettyGivenName()\n\t\tbinding.verificationBirthdate.text = certificateHolder.getFormattedDateOfBirth()\n\t\tbinding.verificationStandardizedNameLabel.text = personName.prettyStandardizedName()\n\n\t\tverificationViewModel.startVerification(\n\t\t\tcertificateHolder,\n\t\t\tmodesViewModel.modesLiveData.value?.selectedMode?.id ?: \"unknown\"\n\t\t)\n\t}\n\n\tprivate fun updateHeaderAndVerificationView(verificationState: VerificationState) {\n\t\tupdateHeader(verificationState)\n\t\tupdateStatusBubbles(verificationState)\n\t}\n\n\tprivate fun updateHeader(state: VerificationState) {\n\t\tval context = binding.root.context\n\n\t\tval isLoading = state == VerificationState.LOADING\n\n\t\tbinding.verificationHeaderProgressBar.isVisible = isLoading\n\t\tbinding.verificationHeaderIcon.isVisible = !isLoading\n\n\t\tval inflater = LayoutInflater.from(context)\n\t\tbinding.verificationHeaderIcons.isVisible = !isLoading\n\t\tbinding.verificationHeaderIcons.removeAllViews()\n\t\tval headerIcons = state.getValidationStatusIconsLarge()\n\t\theaderIcons.forEach {\n\t\t\tval iconView = ItemVerificationHeaderIconBinding.inflate(inflater, binding.verificationHeaderIcons, true)\n\t\t\ticonView.root.setImageResource(it)\n\t\t}\n\n\t\tColorStateList.valueOf(ContextCompat.getColor(context, state.getHeaderColor())).let { headerBackgroundTint ->\n\t\t\tbinding.verificationBaseGroup.backgroundTintList = headerBackgroundTint\n\t\t\tbinding.verificationContentGroup.backgroundTintList = headerBackgroundTint\n\t\t\tbinding.verificationHeaderGroup.backgroundTintList = headerBackgroundTint\n\t\t}\n\t}\n\n\tprivate fun updateStatusBubbles(state: VerificationState) {\n\t\tval context = binding.root.context\n\n\t\tverificationAdapter.setItems(\n\t\t\tstate.getVerificationStateItems(\n\t\t\t\tcontext,\n\t\t\t\tmodesViewModel.modesLiveData.value?.selectedMode?.title ?: \"\"\n\t\t\t)\n\t\t)\n\n\t\tbinding.verificationErrorCode.apply {\n\t\t\tvisibility = View.INVISIBLE\n\t\t\tif (state is VerificationState.ERROR) {\n\t\t\t\tvisibility = View.VISIBLE\n\t\t\t\ttext = state.error.code\n\t\t\t} else if (state is VerificationState.INVALID) {\n\t\t\t\tval errorCode = state.getInvalidErrorCode()\n\t\t\t\tif (errorCode.isNotEmpty()) {\n\t\t\t\t\tvisibility = View.VISIBLE\n\t\t\t\t\ttext = errorCode\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupScrollBehavior() {\n\t\tval headerCollapseManager = HeaderCollapseManager(resources, binding)\n\t\tbinding.verificationScrollView.setOnScrollChangeListener(headerCollapseManager)\n\t}\n\n\tprivate fun decodeQrCodeData(qrCodeData: String) {\n\t\twhen (val decodeState = CovidCertificateSdk.Verifier.decode(qrCodeData)) {\n\t\t\tis VerifierDecodeState.SUCCESS -> {\n\t\t\t\tcertificateHolder = decodeState.certificateHolder\n\t\t\t\tverifyAndDisplayCertificateHolder()\n\t\t\t}\n\t\t\tis VerifierDecodeState.ERROR -> {\n\t\t\t\t// Ignore errors when scanning in the details screen\n\t\t\t}\n\t\t}\n\t}\n\n\tinternal class HeaderCollapseManager(resources: Resources, binding: FragmentVerificationBinding) : View.OnScrollChangeListener {\n\n\t\tprivate val root = binding.verificationBaseGroup\n\t\tprivate val headerGroup = binding.verificationHeaderGroup\n\t\tprivate val headerShadow = binding.verificationHeaderGroupShadow\n\t\tprivate val sheetGroup = binding.verificationSheetGroup\n\n\t\tprivate val scrollOffset = (sheetGroup.layoutParams as ViewGroup.MarginLayoutParams).topMargin\n\t\tprivate val minHeaderHeight = resources.getDimensionPixelSize(R.dimen.header_height_default)\n\t\tprivate val maxHeaderHeight = resources.getDimensionPixelSize(R.dimen.header_height_max)\n\t\tprivate val diffMaxMinHeaderHeight = maxHeaderHeight - minHeaderHeight\n\t\tprivate val headerShadowAnimRange = resources.getDimensionPixelSize(R.dimen.spacing_medium)\n\t\tprivate val sheetDefaultCornerRadius = resources.getDimensionPixelSize(R.dimen.corner_radius_sheet)\n\n\t\toverride fun onScrollChange(v: View, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) {\n\t\t\tval scrollVertical = max(scrollY - scrollOffset, 0)\n\n\t\t\tval progressPadding = (scrollVertical / minHeaderHeight.toFloat()).coerceIn(0f, 1f)\n\t\t\theaderGroup.setPadding(0, ((1f - progressPadding) * minHeaderHeight).roundToInt(), 0, 0)\n\n\t\t\tval progressSize = (scrollVertical / diffMaxMinHeaderHeight.toFloat()).coerceIn(0f, 1f)\n\t\t\tval lp: ViewGroup.LayoutParams = headerGroup.layoutParams\n\t\t\tlp.height = (maxHeaderHeight - progressSize * diffMaxMinHeaderHeight).roundToInt()\n\t\t\theaderGroup.layoutParams = lp\n\n\t\t\tval progressHeaderShadow =\n\t\t\t\t((scrollVertical - diffMaxMinHeaderHeight) / headerShadowAnimRange.toFloat()).coerceIn(0f, 1f)\n\t\t\theaderShadow.alpha = progressHeaderShadow\n\n\t\t\tval progressSheetCorner = ((scrollVertical - minHeaderHeight) / scrollOffset.toFloat()).coerceIn(0f, 1f)\n\t\t\tval sheetCornerRadius = (1f - progressSheetCorner) * sheetDefaultCornerRadius\n\t\t\t(sheetGroup.background as? GradientDrawable)?.cornerRadii =\n\t\t\t\tfloatArrayOf(sheetCornerRadius, sheetCornerRadius, sheetCornerRadius, sheetCornerRadius, 0f, 0f, 0f, 0f)\n\n\t\t\troot.requestLayout()\n\t\t}\n\t}\n\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/verification/VerificationItem.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier.verification\n\nimport android.text.SpannableString\n\nsealed class VerificationItem\n\ndata class StatusItem(val statusString: SpannableString, val statusIcon: Int, val bubbleColor: Int, val isLoading: Boolean) :\n\tVerificationItem()\n\ndata class InfoItem(\n\tval statusString: String,\n\tval infoIconColor: Int,\n\tval bubbleColor: Int,\n\tval showRetry: Boolean,\n\tval showAppLink: Boolean\n) :\n\tVerificationItem()"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/verification/VerificationStateUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.verification\n\nimport android.content.Context\nimport android.text.SpannableString\nimport androidx.annotation.ColorRes\nimport androidx.annotation.DrawableRes\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.util.makeBold\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.*\n\n/**\n * The verification state indicates an offline mode if it is an ERROR and the error code is set to GENERAL_OFFLINE (G|OFF)\n */\nfun VerificationState.isOfflineMode() = this is VerificationState.ERROR && this.error.code == ErrorCodes.GENERAL_OFFLINE\n\n/**\n * @return A list of 0-n [StatusItem] and optionally one or none [InfoItem]\n */\nfun VerificationState.getVerificationStateItems(context: Context, modeTitle: String): List<VerificationItem> {\n\tval items = mutableListOf<VerificationItem>()\n\n\tval isLoading = this == VerificationState.LOADING\n\n\t// Get a list of status bubbles based on the verification state\n\tval statusString = getValidationStatusStrings(context, modeTitle)\n\tval statusIcons = getValidationStatusIcons()\n\tval statusBubbleColors = getStatusBubbleColors()\n\tval numStatus = listOf(statusString.size, statusIcons.size, statusBubbleColors.size).minOrNull() ?: 0\n\n\tfor (i in 0 until numStatus) {\n\t\titems.add(StatusItem(statusString[i], statusIcons[i], statusBubbleColors[i], isLoading))\n\t}\n\n\tif (!isLoading) {\n\t\t// Add an additional info status bubble if it's not a loading state\n\t\tval statusInfoText = getStatusInformationString(context)\n\t\tif (statusInfoText != null) {\n\t\t\tval showRetry = this is VerificationState.ERROR\n\t\t\tvar showAppStoreLink = false\n\t\t\tif (this is VerificationState.SUCCESS) {\n\t\t\t\tif (getModeValidity() == ModeValidityState.UNKNOWN) {\n\t\t\t\t\tshowAppStoreLink = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titems.add(InfoItem(statusInfoText, getInfoIconColor(), getStatusInformationBubbleColor(), showRetry, showAppStoreLink))\n\t\t}\n\t}\n\n\treturn items\n}\n\n/**\n * @return A list of spannable strings shown in the status bubbles (each list entry is shown in a separate bubble)\n */\nfun VerificationState.getValidationStatusStrings(context: Context, modeTitle: String): List<SpannableString> {\n\treturn when (this) {\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> listOf(context.getString(R.string.verifier_verify_success_title).makeBold())\n\t\t\tModeValidityState.IS_LIGHT -> listOf(\n\t\t\t\tcontext.getString(R.string.verifier_verify_light_not_supported_by_mode_title).replace(\"{MODUS}\", modeTitle)\n\t\t\t\t\t.makeBold()\n\t\t\t)\n\t\t\tModeValidityState.INVALID -> listOf(\n\t\t\t\tSpannableString(context.getString(R.string.verifier_verify_success_info_for_certificate_valid)),\n\t\t\t\tSpannableString(context.getString(R.string.verifier_verify_success_info_for_blacklist)),\n\t\t\t\tcontext.getString(R.string.verifier_verify_error_info_for_national_rules).replace(\"{MODUS}\", modeTitle).makeBold()\n\t\t\t)\n\t\t\tModeValidityState.SUCCESS_2G -> listOf(\n\t\t\t\tcontext.getString(R.string.verifier_2g_plus_success2g).makeBold(),\n\t\t\t\tSpannableString(context.getString(R.string.verifier_2g_plus_infoplus))\n\t\t\t)\n\t\t\tModeValidityState.SUCCESS_2G_PLUS -> listOf(\n\t\t\t\tcontext.getString(R.string.verifier_2g_plus_successplus).makeBold(),\n\t\t\t\tSpannableString(context.getString(R.string.verifier_2g_plus_info2g))\n\t\t\t)\n\t\t\tModeValidityState.UNKNOWN -> listOf(\n\t\t\t\tSpannableString(context.getString(R.string.verifier_error_app_store_text))\n\t\t\t)\n\t\t\telse -> listOf(context.getString(R.string.verifier_verify_error_list_title).makeBold())\n\t\t}\n\t\tis VerificationState.ERROR -> {\n\t\t\tlistOf(\n\t\t\t\tif (isOfflineMode()) {\n\t\t\t\t\tcontext.getString(R.string.verifier_offline_error_title).makeBold()\n\t\t\t\t} else {\n\t\t\t\t\tcontext.getString(R.string.verifier_verify_error_list_title).makeBold()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tis VerificationState.INVALID -> {\n\t\t\tval stateStrings = mutableListOf<SpannableString>()\n\t\t\tval signatureState = this.signatureState\n\t\t\tif (signatureState is CheckSignatureState.SUCCESS) {\n\t\t\t\tstateStrings.add(SpannableString(context.getString(R.string.verifier_verify_success_info_for_certificate_valid)))\n\n\t\t\t\tif (this.revocationState is CheckRevocationState.SUCCESS) {\n\t\t\t\t\tstateStrings.add(SpannableString(context.getString(R.string.verifier_verify_success_info_for_blacklist)))\n\n\t\t\t\t\twhen (this.nationalRulesState) {\n\t\t\t\t\t\tis CheckNationalRulesState.INVALID,\n\t\t\t\t\t\tis CheckNationalRulesState.NOT_VALID_ANYMORE,\n\t\t\t\t\t\tis CheckNationalRulesState.NOT_YET_VALID -> {\n\t\t\t\t\t\t\tstateStrings.add(\n\t\t\t\t\t\t\t\tcontext.getString(R.string.verifier_verify_error_info_for_national_rules)\n\t\t\t\t\t\t\t\t\t.replace(\"{MODUS}\", modeTitle).makeBold()\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse -> {}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstateStrings.add(context.getString(R.string.verifier_verify_error_info_for_blacklist).makeBold())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (signatureState is CheckSignatureState.INVALID\n\t\t\t\t\t&& signatureState.signatureErrorCode == ErrorCodes.SIGNATURE_TIMESTAMP_EXPIRED\n\t\t\t\t) {\n\t\t\t\t\tstateStrings.add(context.getString(R.string.verifier_certificate_light_error_expired).makeBold())\n\t\t\t\t} else {\n\t\t\t\t\tstateStrings.add(context.getString(R.string.verifier_verify_error_info_for_certificate_invalid).makeBold())\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstateStrings\n\t\t}\n\t\tVerificationState.LOADING -> listOf(SpannableString(context.getString(R.string.wallet_certificate_verifying)))\n\t}\n}\n\n/**\n * @return The string to be shown in the info status bubble\n */\nfun VerificationState.getStatusInformationString(context: Context): String? {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> {\n\t\t\tif (isOfflineMode()) {\n\t\t\t\tcontext.getString(R.string.verifier_offline_error_text)\n\t\t\t} else {\n\t\t\t\tcontext.getString(R.string.verifier_verify_error_list_info_text)\n\t\t\t}\n\t\t}\n\t\tis VerificationState.INVALID -> null\n\t\tVerificationState.LOADING -> context.getString(R.string.wallet_certificate_verifying)\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> if (this.isLightCertificate) {\n\t\t\t\tcontext.getString(R.string.verifier_verify_success_certificate_light_info)\n\t\t\t} else {\n\t\t\t\tcontext.getString(R.string.verifier_verify_success_info)\n\t\t\t}\n\t\t\tModeValidityState.IS_LIGHT -> context.getString(R.string.verifier_verify_light_not_supported_by_mode_text)\n\t\t\tModeValidityState.UNKNOWN -> context.getString(R.string.verifier_error_app_store_button)\n\t\t\tModeValidityState.INVALID -> null\n\t\t\tModeValidityState.SUCCESS_2G -> null\n\t\t\tModeValidityState.SUCCESS_2G_PLUS -> null\n\t\t\telse -> context.getString(R.string.verifier_verify_error_list_info_text)\n\t\t}\n\t}\n}\n\n/**\n * @return A list of drawable resource IDs shown in the status bubbles (each list entry is shown in a separate bubble)\n */\n@DrawableRes\nfun VerificationState.getValidationStatusIcons(): List<Int> {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> {\n\t\t\tlistOf(\n\t\t\t\tif (isOfflineMode()) {\n\t\t\t\t\tR.drawable.ic_no_connection\n\t\t\t\t} else {\n\t\t\t\t\tR.drawable.ic_process_error\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tis VerificationState.INVALID -> {\n\t\t\tval stateIcons = mutableListOf<Int>()\n\t\t\tif (this.signatureState is CheckSignatureState.SUCCESS) {\n\t\t\t\tstateIcons.add(R.drawable.ic_privacy_grey)\n\t\t\t\tif (this.revocationState is CheckRevocationState.SUCCESS) {\n\t\t\t\t\tstateIcons.add(R.drawable.ic_check_grey)\n\t\t\t\t\tstateIcons.add(R.drawable.ic_error)\n\t\t\t\t} else {\n\t\t\t\t\tstateIcons.add(R.drawable.ic_error)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstateIcons.add(R.drawable.ic_error)\n\t\t\t}\n\t\t\tstateIcons\n\t\t}\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> listOf(R.drawable.ic_check_green)\n\t\t\tModeValidityState.IS_LIGHT, ModeValidityState.UNKNOWN -> listOf(R.drawable.ic_process_error)\n\t\t\tModeValidityState.INVALID -> listOf(\n\t\t\t\tR.drawable.ic_privacy_grey,\n\t\t\t\tR.drawable.ic_check_grey,\n\t\t\t\tR.drawable.ic_error\n\t\t\t)\n\t\t\tModeValidityState.SUCCESS_2G -> listOf(\n\t\t\t\tR.drawable.ic_2g_green,\n\t\t\t\tR.drawable.ic_plus\n\t\t\t)\n\t\t\tModeValidityState.SUCCESS_2G_PLUS -> listOf(\n\t\t\t\tR.drawable.ic_plus_green,\n\t\t\t\tR.drawable.ic_2g_grey\n\t\t\t)\n\t\t\telse -> listOf(R.drawable.ic_error)\n\t\t}\n\t\tVerificationState.LOADING -> listOf(0)\n\t}\n}\n\n/**\n * @return A list of drawable resource IDs that correspond to the large verification state icon in the header\n */\nfun VerificationState.getValidationStatusIconsLarge(): List<Int> {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> {\n\t\t\tif (isOfflineMode()) {\n\t\t\t\tlistOf(R.drawable.ic_no_connection_large)\n\t\t\t} else {\n\t\t\t\tlistOf(R.drawable.ic_process_error_large)\n\t\t\t}\n\t\t}\n\t\tis VerificationState.INVALID -> listOf(R.drawable.ic_error_large)\n\t\tis VerificationState.LOADING -> emptyList()\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> listOf(R.drawable.ic_check_large)\n\t\t\tModeValidityState.IS_LIGHT, ModeValidityState.UNKNOWN -> listOf(R.drawable.ic_process_error_large)\n\t\t\tModeValidityState.SUCCESS_2G -> listOf(\n\t\t\t\tch.admin.bag.covidcertificate.verifier.R.drawable.ic_header_2g_on,\n\t\t\t\tch.admin.bag.covidcertificate.verifier.R.drawable.ic_header_plus_off,\n\t\t\t)\n\t\t\tModeValidityState.SUCCESS_2G_PLUS -> listOf(\n\t\t\t\tch.admin.bag.covidcertificate.verifier.R.drawable.ic_header_2g_off,\n\t\t\t\tch.admin.bag.covidcertificate.verifier.R.drawable.ic_header_plus_on,\n\t\t\t)\n\t\t\telse -> listOf(R.drawable.ic_error_large)\n\t\t}\n\t}\n}\n\n/**\n * @return A list of color resource IDs for the status bubble backgrounds\n */\n@ColorRes\nfun VerificationState.getStatusBubbleColors(): List<Int> {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> listOf(R.color.orangeish)\n\t\tis VerificationState.INVALID -> {\n\t\t\tval stateColors = mutableListOf<Int>()\n\t\t\tif (this.signatureState is CheckSignatureState.SUCCESS) {\n\t\t\t\tstateColors.add(R.color.greyish)\n\t\t\t\tif (this.revocationState is CheckRevocationState.SUCCESS) {\n\t\t\t\t\tstateColors.add(R.color.greyish)\n\t\t\t\t\tstateColors.add(R.color.redish)\n\t\t\t\t} else {\n\t\t\t\t\tstateColors.add(R.color.redish)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstateColors.add(R.color.redish)\n\t\t\t}\n\t\t\tstateColors\n\t\t}\n\t\tVerificationState.LOADING -> listOf(R.color.greyish)\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> listOf(R.color.greenish)\n\t\t\tModeValidityState.IS_LIGHT, ModeValidityState.UNKNOWN -> listOf(R.color.orangeish)\n\t\t\tModeValidityState.INVALID -> listOf(R.color.greyish, R.color.greyish, R.color.redish)\n\t\t\tModeValidityState.SUCCESS_2G, ModeValidityState.SUCCESS_2G_PLUS -> listOf(R.color.greenish, R.color.greyish)\n\t\t\telse -> listOf(R.color.redish)\n\t\t}\n\t}\n}\n\n/**\n * @return The background color resource ID for the info status bubble\n */\n@ColorRes\nfun VerificationState.getStatusInformationBubbleColor(): Int {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> R.color.orangeish\n\t\tis VerificationState.INVALID -> R.color.redish\n\t\tVerificationState.LOADING -> R.color.greyish\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> R.color.blueish\n\t\t\tModeValidityState.IS_LIGHT, ModeValidityState.UNKNOWN -> R.color.orangeish\n\t\t\telse -> R.color.redish\n\t\t}\n\t}\n}\n\n/**\n * @return The color resource ID for the info status bubble icon tint\n */\n@ColorRes\nfun VerificationState.getInfoIconColor(): Int {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> R.color.orange\n\t\tis VerificationState.INVALID -> R.color.red\n\t\tVerificationState.LOADING -> R.color.grey\n\t\tis VerificationState.SUCCESS -> when (getModeValidity()) {\n\t\t\tModeValidityState.SUCCESS -> R.color.blue\n\t\t\tModeValidityState.IS_LIGHT, ModeValidityState.UNKNOWN -> R.color.orange\n\t\t\telse -> R.color.red\n\t\t}\n\t}\n}\n\n/**\n * @return The header background color\n */\n@ColorRes\nfun VerificationState.getHeaderColor(): Int {\n\treturn when (this) {\n\t\tis VerificationState.ERROR -> R.color.orange\n\t\tis VerificationState.INVALID -> R.color.red\n\t\tVerificationState.LOADING -> R.color.grey\n\t\tis VerificationState.SUCCESS -> {\n\t\t\twhen (getModeValidity()) {\n\t\t\t\tModeValidityState.SUCCESS, ModeValidityState.SUCCESS_2G, ModeValidityState.SUCCESS_2G_PLUS -> R.color.green\n\t\t\t\tModeValidityState.INVALID -> R.color.red\n\t\t\t\tModeValidityState.IS_LIGHT -> R.color.orange\n\t\t\t\tModeValidityState.UNKNOWN -> R.color.orange\n\t\t\t\tModeValidityState.UNKNOWN_MODE -> R.color.red_error\n\t\t\t}\n\t\t}\n\t}\n}\n\nprivate fun VerificationState.SUCCESS.getModeValidity() =\n\t(this.successState as SuccessState.VerifierSuccessState).modeValidity.modeValidityState"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/verification/VerificationViewHolder.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier.verification\n\nimport android.content.res.ColorStateList\nimport android.view.View\nimport androidx.core.content.ContextCompat\nimport androidx.core.view.isVisible\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemVerificationStatusBinding\nimport ch.admin.bag.covidcertificate.verifier.databinding.ItemVerificationStatusInfoBinding\n\nclass StatusViewHolder(private val binding: ItemVerificationStatusBinding) : RecyclerView.ViewHolder(binding.root) {\n\n\tfun bindStatusItem(statusItem: StatusItem) {\n\t\tbinding.apply {\n\t\t\tverificationStepTitle.text = statusItem.statusString\n\t\t\tverificationStepProgressIndicator.progressIndicatorIcon.setImageResource(statusItem.statusIcon)\n\t\t\tverificationStepProgressIndicator.progressIndicatorIcon.isVisible = !statusItem.isLoading\n\t\t\tverificationStepProgressIndicator.progressIndicatorProgressBar.isVisible = statusItem.isLoading\n\t\t\tverificationStepFrame.backgroundTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(root.context, statusItem.bubbleColor))\n\t\t}\n\t}\n\n}\n\nclass InfoViewHolder(\n\tprivate val binding: ItemVerificationStatusInfoBinding,\n\tprivate val onRetryClickListener: View.OnClickListener,\n\tprivate val onPlayStoreClickListener: View.OnClickListener\n) : RecyclerView.ViewHolder(binding.root) {\n\n\tfun bindStatusItem(infoItem: InfoItem) {\n\t\tbinding.apply {\n\t\t\tinfoText.text = infoItem.statusString\n\t\t\tinfoIcon.imageTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(root.context, infoItem.infoIconColor))\n\t\t\tinfoFrame.backgroundTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(root.context, infoItem.bubbleColor))\n\n\t\t\tif (infoItem.showRetry) {\n\t\t\t\tinfoRetry.isVisible = true\n\t\t\t\tinfoRetry.setOnClickListener { view ->\n\t\t\t\t\tonRetryClickListener.onClick(view)\n\t\t\t\t\tinfoRetry.setOnClickListener(null)\n\t\t\t\t}\n\t\t\t} else if (infoItem.showAppLink) {\n\t\t\t\tinfoApplink.isVisible = true\n\t\t\t\tinfoApplink.setOnClickListener { view ->\n\t\t\t\t\tonPlayStoreClickListener.onClick(view)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinfoRetry.isVisible = false\n\t\t\t\tinfoApplink.isVisible = false\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/verification/VerificationViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.verification\n\nimport android.app.Application\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.models.VerifierCertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.flow.collect\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass VerificationViewModel(application: Application) : AndroidViewModel(application) {\n\n\tcompanion object {\n\t\tprivate const val STATUS_LOAD_DELAY = 1000L\n\t}\n\n\tprivate val verificationStateMutableLiveData = MutableLiveData<VerificationState>()\n\tval verificationLiveData = verificationStateMutableLiveData as LiveData<VerificationState>\n\n\tfun startVerification(certificateHolder: VerifierCertificateHolder, verificationMode: String) {\n\t\tviewModelScope.launch {\n\t\t\tval verificationStateFlow = CovidCertificateSdk.Verifier.verify(certificateHolder, verificationMode, viewModelScope)\n\t\t\tverificationStateFlow.collect {\n\t\t\t\tverificationStateMutableLiveData.postValue(it)\n\t\t\t}\n\t\t}\n\t}\n\n\tfun retryVerification(certificateHolder: VerifierCertificateHolder, verificationMode: String) {\n\t\tverificationStateMutableLiveData.value = VerificationState.LOADING\n\t\tviewModelScope.launch {\n\t\t\tdelay(STATUS_LOAD_DELAY)\n\t\t\tif (!isActive) return@launch\n\n\t\t\tstartVerification(certificateHolder, verificationMode)\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/zebra/ZebraActionBroadcastReceiver.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.verifier.zebra\n\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.content.Intent\nimport android.content.IntentFilter\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\n\nclass ZebraActionBroadcastReceiver(private val secureStorage: VerifierSecureStorage) : BroadcastReceiver() {\n\n\tcompanion object {\n\t\tprivate const val INTENT_ACTION = \"ch.admin.bag.covidcertificate.verifier.qr.zebra\"\n\t\tprivate const val INTENT_CATEGORY = Intent.CATEGORY_DEFAULT\n\t\tprivate const val KEY_ZEBRA_RESULT_DATA_STRING = \"com.symbol.datawedge.data_string\"\n\t}\n\n\tprivate val intentFilter = IntentFilter().apply {\n\t\taddAction(INTENT_ACTION)\n\t\taddCategory(INTENT_CATEGORY)\n\t}\n\n\tprivate var onQrCodeScanned: (String) -> Unit = {}\n\n\toverride fun onReceive(context: Context, intent: Intent) {\n\t\tif (intent.hasExtra(KEY_ZEBRA_RESULT_DATA_STRING)) {\n\t\t\thandleQrCodeScannedResult(intent)\n\t\t}\n\t}\n\n\tfun registerWith(context: Context, onQrCodeScanned: (String) -> Unit) {\n\t\tthis.onQrCodeScanned = onQrCodeScanned\n\t\tif (secureStorage.hasZebraScanner()) {\n\t\t\tcontext.registerReceiver(this, intentFilter)\n\t\t}\n\t}\n\n\tfun unregisterWith(context: Context) {\n\t\tif (secureStorage.hasZebraScanner()) {\n\t\t\tcontext.unregisterReceiver(this)\n\t\t}\n\t}\n\n\tprivate fun handleQrCodeScannedResult(intent: Intent) {\n\t\tval qrCodeData = intent.getStringExtra(KEY_ZEBRA_RESULT_DATA_STRING)\n\t\tqrCodeData?.let {\n\t\t\tonQrCodeScanned.invoke(it)\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/zebra/ZebraDataWedgeApiUtil.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier.zebra\n\nimport android.content.Context\nimport android.content.Intent\nimport androidx.core.os.bundleOf\nimport ch.admin.bag.covidcertificate.verifier.BuildConfig\nimport ch.admin.bag.covidcertificate.verifier.extensions.getApplicationSignature\n\n/**\n * A utility class to work with the Data Wedge API of Zebra scanner phones\n * @see <a href=\"https://techdocs.zebra.com/datawedge/11-0/guide/output/intent/\">https://techdocs.zebra.com/datawedge/11-0/guide/output/intent/</a>\n */\nobject ZebraDataWedgeApiUtil {\n\n\tconst val DATA_WEDGE_API_RESULT_ACTION = \"com.symbol.datawedge.api.RESULT_ACTION\"\n\tconst val DATA_WEDGE_API_ACTION = \"com.symbol.datawedge.api.ACTION\"\n\n\tfun getEnumerateScannersIntent() = Intent().apply {\n\t\taction = DATA_WEDGE_API_ACTION\n\t\tputExtra(\"com.symbol.datawedge.api.ENUMERATE_SCANNERS\", \"\")\n\t}\n\n\tfun getCreateProfileIntent() = Intent().apply {\n\t\taction = DATA_WEDGE_API_ACTION\n\t\tputExtra(\"com.symbol.datawedge.api.CREATE_PROFILE\", \"CovidCheck-${BuildConfig.FLAVOR}\")\n\t}\n\n\tfun getSetConfigIntent(context: Context): Intent {\n\t\tval configExtras = bundleOf(\n\t\t\t\"PROFILE_NAME\" to \"CovidCheck-${BuildConfig.FLAVOR}\",\n\t\t\t\"PROFILE_ENABLED\" to true,\n\t\t\t\"CONFIG_MODE\" to \"OVERWRITE\",\n\t\t\t\"APP_LIST\" to arrayOf(\n\t\t\t\tbundleOf(\n\t\t\t\t\t\"PACKAGE_NAME\" to BuildConfig.APPLICATION_ID,\n\t\t\t\t\t\"ACTIVITY_LIST\" to arrayOf(\"*\"),\n\t\t\t\t)\n\t\t\t),\n\t\t\t\"PLUGIN_CONFIG\" to bundleOf(\n\t\t\t\t\"PLUGIN_NAME\" to \"INTENT\",\n\t\t\t\t\"RESET_CONFIG\" to false,\n\t\t\t\t\"PARAM_LIST\" to bundleOf(\n\t\t\t\t\t\"intent_action\" to \"ch.admin.bag.covidcertificate.verifier.qr.zebra\",\n\t\t\t\t\t\"intent_category\" to Intent.CATEGORY_DEFAULT,\n\t\t\t\t\t\"intent_delivery\" to 2, // 2 = Deliver via Broadcast\n\t\t\t\t\t\"intent_component_info\" to bundleOf(\n\t\t\t\t\t\t\"PACKAGE_NAME\" to BuildConfig.APPLICATION_ID,\n\t\t\t\t\t\t\"SIGNATURE\" to context.getApplicationSignature(),\n\t\t\t\t\t),\n\t\t\t\t\t\"intent_output_enabled\" to true,\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\n\t\tval configIntent = Intent().apply {\n\t\t\taction = \"com.symbol.datawedge.api.ACTION\"\n\t\t\tputExtra(\"com.symbol.datawedge.api.SET_CONFIG\", configExtras)\n\t\t}\n\n\t\treturn configIntent\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/java/ch/admin/bag/covidcertificate/verifier/zebra/ZebraResultActionBroadcastReceiver.kt",
    "content": "package ch.admin.bag.covidcertificate.verifier.zebra\n\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.content.Intent\nimport android.os.Bundle\nimport ch.admin.bag.covidcertificate.verifier.data.VerifierSecureStorage\n\nclass ZebraResultActionBroadcastReceiver : BroadcastReceiver() {\n\n\tcompanion object {\n\t\tprivate const val KEY_ZEBRA_ENUMERATE_SCANNER_RESULT = \"com.symbol.datawedge.api.RESULT_ENUMERATE_SCANNERS\"\n\t}\n\n\toverride fun onReceive(context: Context, intent: Intent) {\n\t\tif (intent.hasExtra(KEY_ZEBRA_ENUMERATE_SCANNER_RESULT)) {\n\t\t\thandleEnumerateScannersResult(context, intent)\n\t\t}\n\t}\n\n\tprivate fun handleEnumerateScannersResult(context: Context, intent: Intent) {\n\t\tval storage = VerifierSecureStorage.getInstance(context)\n\t\tval scanners = intent.getSerializableExtra(KEY_ZEBRA_ENUMERATE_SCANNER_RESULT) as? List<Bundle>\n\t\tif (scanners != null && scanners.isNotEmpty()) {\n\t\t\tstorage.setHasZebraScanner(true)\n\n\t\t\t// Create a profile in the Data Wedge API\n\t\t\tval createProfileIntent = ZebraDataWedgeApiUtil.getCreateProfileIntent()\n\t\t\tcontext.sendBroadcast(createProfileIntent)\n\n\t\t\t// Configure the Data Wedge API\n\t\t\tval setConfigIntent = ZebraDataWedgeApiUtil.getSetConfigIntent(context)\n\t\t\tcontext.sendBroadcast(setConfigIntent)\n\t\t} else {\n\t\t\tstorage.setHasZebraScanner(false)\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "verifier/src/main/play/listings/de-DE/full-description.txt",
    "content": "<b>Covid-Zertifikate mit  dem Mobiltelefon prüfen</b>\n\nCOVID Certificate Check ist die offizielle App für das Prüfen von Covid-Zertifikaten in der Schweiz. Sie wird durch das Bundesamt für Informatik und Telekommunikation BIT im Auftrag des Bundesamtes für Gesundheit betrieben.\n\nMit der App lassen sich in der Schweiz ausgestellte Covid-Zertifikate auf Gültigkeit prüfen.   \n\n<b>So funktioniert die App</b>\n\nEin Button auf dem Startbildschirm aktiviert die Kamera des Smartphones und die Anwendung ist bereit zur Erfassung des QR-Codes.\n\nEinfach den QR-Code auf dem Papier oder auf dem gezeigten Mobiltelefon mit einer Halter-Anwendung in das anzeigte Quadrat positionieren und der QR-Code wird automatisch erfasst. Unmittelbar danach führt das System eine automatische Prüfung gegen die Schweizer Gültigkeitskriterien durch.\n\n- Ein Haken und ein grüner Hintergrund zeigen an, dass das vorgewiesene Zertifikat gültig ist.\n- Ein Ausrufezeichen und ein roter Hintergrund zeigen an, dass das vorgewiesene Zertifikat nicht gültig ist.\n- Ein Fragezeichen und ein oranger Hintergrund zeigen an, dass die Prüfung fehlgeschlagen ist.\n\nZudem wird noch der Name, Vorname und das Geburtsdatum der Inhaberin des Zertifikates angezeigt. Diese Daten sind mit dem vorgezeigten Ausweisdokument zu vergleichen.\n\n<b>Datenschutz ist zentral</b>\n\nDie Daten von Covid-Zertifikaten sowie von Prüfvorgängen werden nicht gespeichert.Ein Covid-Zertifikat ist durch eine digitale Signatur geschützt und dadurch fälschungssicher.\n\nDie Anwendung der App ist auf die Schweiz beschränkt und unterliegt Schweizer Recht."
  },
  {
    "path": "verifier/src/main/play/listings/de-DE/short-description.txt",
    "content": "Covid-Zertifikate prüfen"
  },
  {
    "path": "verifier/src/main/play/listings/de-DE/title.txt",
    "content": "COVID Certificate Check"
  },
  {
    "path": "verifier/src/main/play/listings/en-US/full-description.txt",
    "content": "<b>Check COVID certificates with a mobile phone</b>\n\nCOVID Certificate Check is the official app for checking COVID certificates in Switzerland. It is developed by the Federal Office of Information Technology, Systems and Telecommunication FOITT on behalf of the Federal Office of Public Health.\n\nThe app can be used to check the validity of COVID certificates issued in Switzerland.\n\n<b>How the app works</b>\n\nA button on the home screen activates the smartphone camera and the app is ready to capture the QR code.\n\nSimply position the QR code on the paper or on the mobile phone shown with a holder app in the square displayed and the QR will be captured automatically.\n\nImmediately afterwards, the system performs an automatic check concerning Swiss validity rules.\n\n- A tick and a green background indicate that the presented certificate is valid.\n- An exclamation mark and a red background indicate that the presented certificate is not valid.\n- A question mark and an orange background indicate that the check failed.\n\nIn addition, the full name and date of birth of the certificate holder are displayed. These details are to be compared with the identification document presented.\n\n<b>Data protection is a top priority</b>\n\nThe data concerning COVID certificates and checking processes is not stored. COVID certificates are protected by a digital signature and are thus forgery-proof.\n\nThe use of the app is limited to Switzerland and is subject to Swiss law."
  },
  {
    "path": "verifier/src/main/play/listings/en-US/short-description.txt",
    "content": "Check COVID certificates"
  },
  {
    "path": "verifier/src/main/play/listings/en-US/title.txt",
    "content": "COVID Certificate Check"
  },
  {
    "path": "verifier/src/main/play/listings/fr-FR/full-description.txt",
    "content": "<b>Vérification du certificat COVID au moyen du téléphone portable</b>\n\nCOVID Certificate Check est le nom de l’application officielle permettant de vérifier la validité des certificats COVID en Suisse. Elle a été développée par l’Office fédéral de l’informatique et de la télécommunication sur mandant de l’Office fédéral de la santé publique (OFSP).\n\nL’application permet de vérifier la validité des certificats COVID délivrés en Suisse.\n\n<b>Fonctionnement de l’application</b>\n\nUn bouton sur l'écran d'accueil active automatiquement l’appareil photo du smartphone, qui est alors prêt à scanner le code QR.\n\nPour capturer un code QR, il suffit de tenir votre smartphone de telle sorte que le code apparaisse dans le viseur de l’application. Il est possible de scanner les codes affichés sur un écran tout comme les codes imprimés. Dès que le code a été saisi, le système vérifie automatiquement la validité du certificat en tenant compte des règles en Suisse.\n\n- Une coche sur fond vert indique que le certificat présenté est valide.\n- Un point d'exclamation sur fond rouge indique que le certificat présenté n’est pas valide.\n- Un point d’interrogation sur fond orange indique l’échec de la vérification.\n\nEn outre, le nom, le prénom et la date de naissance du titulaire du certificat sont affichés. Ces données doivent être comparées avec le document d'identité présenté.\n\n<b>Respect absolu de la protection des données</b>\n\nLes données relatives aux certificats COVID et aux procédures de vérification ne sont pas enregistrées. Le certificat COVID est protégé par une signature électronique et n’est donc pas falsifiable.\n\nL'utilisation de l'application est limitée à la Suisse et est soumise au droit suisse."
  },
  {
    "path": "verifier/src/main/play/listings/fr-FR/short-description.txt",
    "content": "Vérifier les certificats COVID"
  },
  {
    "path": "verifier/src/main/play/listings/fr-FR/title.txt",
    "content": "COVID Certificate Check"
  },
  {
    "path": "verifier/src/main/play/listings/it-IT/full-description.txt",
    "content": "<b>Verificare i certificati COVID con un dispositivo mobile</b>\n\nL’applicazione COVID Certificate Check è l’app ufficiale per verificare i certificati COVID in Svizzera. È stato sviluppato dall’Ufficio federale dell’informatica e della telecomunicazione (UFIT) su mandato dell’Ufficio federale della sanità pubblica (UFSP).\n\nL’applicazione permette di verificare la validità dei certificati COVID emessi in Svizzera.  \n\n<b>Come funziona l’app?</b>\n\nUn pulsante sulla homescreen attiva la fotocamera dello smartphone si attiva e l’applicazione è pronta per scansionare il codice QR.\n\nBasta quindi posizionare nell’apposito riquadro il codice QR che si trova sulla copia cartacea del certificato o quello visualizzato sul cellulare con l’applicazione messa a disposizione del titolare e il codice viene rilevato automaticamente.\n\nSubito dopo, il sistema esegue un controllo automatico in base ai criteri di validità applicabili in Svizzera.\n\n- Un segno di spunta su sfondo verde indica che il certificato presentato è valido.\n- Un punto esclamativo su sfondo rosso indica che il certificato presentato non è valido.\n- Un punto di domanda su sfondo arancione indica che la verifica non è andata a buon fine.\n\nVengono inoltre visualizzati il nome, il cognome e la data di nascita del titolare del certificato. Questi dati devono essere confrontati con quelli presenti nel documento d’identità esibito.\n\n<b>La protezione dei dati è fondamentale</b>\n\nI dati dei certificati COVID e quelli delle verifiche non vengono memorizzati. I certificati COVID recano una firma elettronica e quindi non sono falsificabili.\n\nL'applicazione dell'app è limitata alla Svizzera ed è soggetta al diritto svizzero."
  },
  {
    "path": "verifier/src/main/play/listings/it-IT/short-description.txt",
    "content": "Verificare i certificati COVID"
  },
  {
    "path": "verifier/src/main/play/listings/it-IT/title.txt",
    "content": "COVID Certificate Check"
  },
  {
    "path": "verifier/src/main/play/release-notes/en-US/default.txt",
    "content": "See https://github.com/admin-ch/CovidCertificate-App-Android/releases (or click Links > Changelog)\n"
  },
  {
    "path": "verifier/src/main/res/drawable/bg_bubble_bottom_left.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"110dp\"\n\tandroid:height=\"110dp\"\n\tandroid:viewportWidth=\"110\"\n\tandroid:viewportHeight=\"110\">\n\t<path\n\t\tandroid:fillColor=\"#19000000\"\n\t\tandroid:pathData=\"M110,110C110,49.249 60.751,0 0,0v110\" />\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_faq_image.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M68.906,100a88.594,90 0,1 0,177.188 0a88.594,90 0,1 0,-177.188 0z\"\n      android:fillColor=\"#ECECEC\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M111.52,31.389l50.743,-4.439c4.402,-0.385 8.282,2.871 8.667,7.272l10.459,119.543c0.385,4.401 -2.87,8.282 -7.272,8.667L123.374,166.871c-4.402,0.385 -8.282,-2.871 -8.667,-7.272L104.248,40.056c-0.385,-4.401 2.87,-8.282 7.272,-8.667z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M107.391,29.742l54.729,-4.788c3.3,-0.289 6.211,2.153 6.5,5.454l10.807,123.528c0.289,3.301 -2.154,6.211 -5.454,6.5L119.245,165.225c-3.301,0.289 -6.211,-2.153 -6.5,-5.454L101.937,36.243c-0.289,-3.301 2.153,-6.211 5.454,-6.5z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#009E89\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M118.085,28.807l33.343,-2.917l0.43,4.914c0.144,1.651 -1.077,3.106 -2.727,3.25l-27.365,2.394c-1.65,0.144 -3.106,-1.076 -3.25,-2.727L118.085,28.807z\"\n      android:fillColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M127.025,54.191a10.2,10.041 85,1 0,20.006 -1.75a10.2,10.041 85,1 0,-20.006 1.75z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M132.263,53.552L136.113,56.835 142.558,49.031\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M110.363,73.851l56.49,-4.942c2.201,-0.193 4.141,1.435 4.333,3.636l7.118,81.356c0.241,2.75 -1.795,5.176 -4.545,5.417L119.261,164.086c-2.751,0.241 -5.176,-1.795 -5.417,-4.545L106.727,78.185c-0.193,-2.202 1.435,-4.141 3.636,-4.333z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M118.763,134.55L151.339,131.7A1.5,1.5 111.092,0 1,152.964 133.064L152.999,133.462A1.5,1.5 104.374,0 1,151.635 135.087L119.06,137.937A1.5,1.5 111.092,0 1,117.435 136.574L117.4,136.175A1.5,1.5 128.955,0 1,118.763 134.55z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M116.491,108.582L159.07,104.857A1.5,1.5 91.686,0 1,160.695 106.221L160.73,106.619A1.5,1.5 94.586,0 1,159.366 108.244L116.788,111.969A1.5,1.5 129.135,0 1,115.163 110.606L115.128,110.207A1.5,1.5 131.728,0 1,116.491 108.582z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M119.356,141.324L143.04,139.252A1.5,1.5 104.374,0 1,144.665 140.616L144.7,141.014A1.5,1.5 104.374,0 1,143.337 142.639L119.652,144.711A1.5,1.5 101.741,0 1,118.027 143.348L117.992,142.949A1.5,1.5 111.092,0 1,119.356 141.324z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M117.084,115.356L140.769,113.284A1.5,1.5 51.028,0 1,142.394 114.648L142.428,115.046A1.5,1.5 100.383,0 1,141.065 116.671L117.38,118.744A1.5,1.5 129.135,0 1,115.755 117.38L115.72,116.981A1.5,1.5 131.728,0 1,117.084 115.356z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.417,84.873L146.993,82.023A1.5,1.5 67.585,0 1,148.618 83.386L148.653,83.785A1.5,1.5 100.383,0 1,147.289 85.41L114.713,88.26A1.5,1.5 130.254,0 1,113.088 86.896L113.054,86.498A1.5,1.5 128.325,0 1,114.417 84.873z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M115.01,91.647L138.694,89.575A1.5,1.5 103.604,0 1,140.319 90.938L140.354,91.337A1.5,1.5 51.028,0 1,138.991 92.962L115.306,95.034A1.5,1.5 78.313,0 1,113.681 93.671L113.646,93.272A1.5,1.5 89.476,0 1,115.01 91.647z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M155.578,99L233.25,99A3,3 0,0 1,236.25 102L236.25,148A3,3 0,0 1,233.25 151L155.578,151A3,3 0,0 1,152.578 148L152.578,102A3,3 0,0 1,155.578 99z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M153.594,98L233.266,98A2,2 0,0 1,235.266 100L235.266,148A2,2 0,0 1,233.266 150L153.594,150A2,2 0,0 1,151.594 148L151.594,100A2,2 0,0 1,153.594 98z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#EFF5F9\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M158.5,104L174.219,104A1,1 0,0 1,175.219 105L175.219,121A1,1 0,0 1,174.219 122L158.5,122A1,1 0,0 1,157.5 121L157.5,105A1,1 0,0 1,158.5 104z\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M182.141,126L205.704,126A2,2 0,0 1,207.704 128L207.704,129A2,2 0,0 1,205.704 131L182.141,131A2,2 0,0 1,180.141 129L180.141,128A2,2 0,0 1,182.141 126z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M181.641,134L216.047,134A1.5,1.5 0,0 1,217.547 135.5L217.547,135.5A1.5,1.5 0,0 1,216.047 137L181.641,137A1.5,1.5 0,0 1,180.141 135.5L180.141,135.5A1.5,1.5 0,0 1,181.641 134z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M181.141,104L217.532,104A1,1 0,0 1,218.532 105L218.532,105A1,1 0,0 1,217.532 106L181.141,106A1,1 0,0 1,180.141 105L180.141,105A1,1 0,0 1,181.141 104z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M181.141,109L203.75,109A1,1 0,0 1,204.75 110L204.75,110A1,1 0,0 1,203.75 111L181.141,111A1,1 0,0 1,180.141 110L180.141,110A1,1 0,0 1,181.141 109z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M181.141,143L190.954,143A1,1 0,0 1,191.954 144L191.954,144A1,1 0,0 1,190.954 145L181.141,145A1,1 0,0 1,180.141 144L180.141,144A1,1 0,0 1,181.141 143z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M164.391,107L168.329,107L168.329,119L164.391,119z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M160.453,111L172.266,111L172.266,115L160.453,115z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M166.359,135c5.266,0 7.891,3 7.875,9L158.484,144c-0.016,-6 2.61,-9 7.875,-9z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M162.421,130a3.938,4 0,1 0,7.876 0a3.938,4 0,1 0,-7.876 0z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_header_2g_off.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28S51.464,64 36,64 8,51.464 8,36 20.536,8 36,8zM45.255,25.358c-1.359,0 -2.627,0.233 -3.804,0.698a8.945,8.945 0,0 0,-3.102 2.048c-0.891,0.9 -1.586,2 -2.084,3.296 -0.497,1.298 -0.746,2.78 -0.746,4.45 0,2.148 0.411,4.001 1.234,5.56 0.822,1.56 1.97,2.76 3.44,3.604 1.47,0.843 3.18,1.264 5.126,1.264 1.744,0 3.292,-0.347 4.642,-1.043a7.751,7.751 0,0 0,3.182 -2.994c0.77,-1.3 1.156,-2.86 1.156,-4.68v-2.697h-8.773v3.587h4.029l-0.004,0.16c-0.035,0.625 -0.194,1.175 -0.477,1.65 -0.322,0.545 -0.797,0.965 -1.424,1.262 -0.626,0.296 -1.393,0.444 -2.3,0.444 -1.015,0 -1.88,-0.243 -2.597,-0.728 -0.716,-0.485 -1.262,-1.188 -1.64,-2.11 -0.378,-0.921 -0.567,-2.035 -0.567,-3.343 0,-1.296 0.195,-2.4 0.585,-3.31 0.39,-0.912 0.944,-1.607 1.664,-2.087 0.72,-0.48 1.572,-0.72 2.556,-0.72 0.491,0 0.943,0.059 1.356,0.175a3.51,3.51 0,0 1,1.095 0.515c0.317,0.227 0.586,0.501 0.805,0.823 0.22,0.321 0.385,0.69 0.498,1.104h4.98a7.225,7.225 0,0 0,-0.92 -2.79,7.676 7.676,0 0,0 -1.913,-2.198 8.817,8.817 0,0 0,-2.703 -1.434c-1.016,-0.337 -2.114,-0.506 -3.294,-0.506zM25.743,25.358c-1.5,0 -2.814,0.273 -3.943,0.82 -1.129,0.545 -2.005,1.322 -2.63,2.33 -0.624,1.007 -0.936,2.203 -0.936,3.587h4.669c0,-0.61 0.116,-1.133 0.349,-1.567 0.232,-0.433 0.562,-0.764 0.988,-0.993 0.426,-0.229 0.922,-0.343 1.487,-0.343 0.555,0 1.048,0.11 1.48,0.328 0.43,0.219 0.769,0.53 1.015,0.93 0.245,0.403 0.368,0.884 0.368,1.447 0,0.506 -0.103,0.972 -0.309,1.399 -0.206,0.426 -0.505,0.85 -0.896,1.272a22.67,22.67 0,0 1,-1.428 1.393l-7.421,6.5L18.536,46L33.61,46v-3.97h-8.257v-0.127l2.442,-2.25c1.474,-1.285 2.614,-2.389 3.42,-3.31 0.805,-0.923 1.364,-1.764 1.678,-2.524 0.313,-0.76 0.47,-1.529 0.47,-2.304 0,-1.223 -0.314,-2.296 -0.94,-3.22 -0.628,-0.924 -1.512,-1.644 -2.653,-2.161 -1.142,-0.518 -2.484,-0.776 -4.027,-0.776z\"\n      android:fillColor=\"#000\"\n      android:fillAlpha=\"0.3\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_header_2g_on.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M59,48c6.075,0 11,4.925 11,11s-4.925,11 -11,11 -11,-4.925 -11,-11 4.925,-11 11,-11zM36,8c15.464,0 28,12.536 28,28 0,3.657 -0.701,7.151 -1.977,10.354A13.019,13.019 0,0 0,59 46c-7.18,0 -13,5.82 -13,13 0,1.04 0.122,2.053 0.353,3.023A27.911,27.911 0,0 1,36 64C20.536,64 8,51.464 8,36S20.536,8 36,8zM62.97,54.455 L62.88,54.545 56.956,61.259 54.838,59.141 54.751,59.064a1,1 0,0 0,-1.41 1.397l0.083,0.095 2.87,2.871 0.086,0.076a1,1 0,0 0,1.286 -0.035l0.086,-0.087 6.628,-7.513 0.072,-0.092a1,1 0,0 0,-0.07 -1.23l-0.09,-0.09 -0.092,-0.072a1,1 0,0 0,-1.23 0.071zM45.255,25.358c-1.359,0 -2.627,0.233 -3.804,0.698a8.945,8.945 0,0 0,-3.102 2.048c-0.891,0.9 -1.586,2 -2.084,3.296 -0.497,1.298 -0.746,2.78 -0.746,4.45 0,2.148 0.411,4.001 1.234,5.56 0.822,1.56 1.97,2.76 3.44,3.604 1.47,0.843 3.18,1.264 5.126,1.264 1.744,0 3.292,-0.347 4.642,-1.043a7.751,7.751 0,0 0,3.182 -2.994c0.716,-1.207 1.1,-2.639 1.15,-4.295l0.006,-0.386v-2.696h-8.773v3.587h4.029l-0.004,0.16c-0.035,0.625 -0.194,1.175 -0.477,1.65 -0.322,0.545 -0.797,0.965 -1.424,1.262 -0.626,0.296 -1.393,0.444 -2.3,0.444 -1.015,0 -1.88,-0.243 -2.597,-0.728 -0.716,-0.485 -1.262,-1.188 -1.64,-2.11 -0.378,-0.921 -0.567,-2.035 -0.567,-3.343 0,-1.296 0.195,-2.4 0.585,-3.31 0.39,-0.912 0.944,-1.607 1.664,-2.087 0.72,-0.48 1.572,-0.72 2.556,-0.72 0.491,0 0.943,0.059 1.356,0.175a3.51,3.51 0,0 1,1.095 0.515c0.317,0.227 0.586,0.501 0.805,0.823 0.176,0.257 0.317,0.544 0.424,0.861l0.074,0.243h4.98a7.225,7.225 0,0 0,-0.92 -2.79,7.676 7.676,0 0,0 -1.913,-2.198 8.817,8.817 0,0 0,-2.703 -1.434c-1.016,-0.337 -2.114,-0.506 -3.294,-0.506zM25.743,25.358c-1.5,0 -2.814,0.273 -3.943,0.82 -1.129,0.545 -2.005,1.322 -2.63,2.33 -0.572,0.924 -0.882,2.005 -0.93,3.245l-0.006,0.342h4.669c0,-0.61 0.116,-1.133 0.349,-1.567 0.232,-0.433 0.562,-0.764 0.988,-0.993 0.426,-0.229 0.922,-0.343 1.487,-0.343 0.555,0 1.048,0.11 1.48,0.328 0.43,0.219 0.769,0.53 1.015,0.93 0.245,0.403 0.368,0.884 0.368,1.447 0,0.506 -0.103,0.972 -0.309,1.399 -0.206,0.426 -0.505,0.85 -0.896,1.272 -0.326,0.352 -0.71,0.733 -1.154,1.144l-0.274,0.25 -7.421,6.498L18.536,46L33.61,46v-3.97h-8.257v-0.127l2.442,-2.25c1.474,-1.285 2.614,-2.389 3.42,-3.31 0.805,-0.923 1.364,-1.764 1.678,-2.524 0.313,-0.76 0.47,-1.529 0.47,-2.304 0,-1.223 -0.314,-2.296 -0.94,-3.22 -0.628,-0.924 -1.512,-1.644 -2.653,-2.161 -1.142,-0.518 -2.484,-0.776 -4.027,-0.776z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_header_plus_off.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28S51.464,64 36,64 8,51.464 8,36 20.536,8 36,8zM36,23a3,3 0,0 0,-3 3v7h-7a3,3 0,0 0,-2.995 2.824L23,36a3,3 0,0 0,3 3h7v7a3,3 0,0 0,2.824 2.995L36,49a3,3 0,0 0,3 -3v-7h7a3,3 0,0 0,2.995 -2.824L49,36a3,3 0,0 0,-3 -3h-7v-7a3,3 0,0 0,-2.824 -2.995z\"\n      android:fillColor=\"#000\"\n      android:fillAlpha=\"0.3\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_header_plus_on.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"72dp\"\n    android:height=\"72dp\"\n    android:viewportWidth=\"72\"\n    android:viewportHeight=\"72\">\n  <path\n      android:pathData=\"M36,8c15.464,0 28,12.536 28,28 0,3.657 -0.701,7.151 -1.977,10.354A13.019,13.019 0,0 0,59 46c-7.18,0 -13,5.82 -13,13 0,1.04 0.122,2.053 0.353,3.023A27.911,27.911 0,0 1,36 64C20.536,64 8,51.464 8,36S20.536,8 36,8zM36,23a3,3 0,0 0,-2.995 2.824L33,26v7h-7a3,3 0,0 0,-2.995 2.824L23,36a3,3 0,0 0,2.824 2.995L26,39h7v7a3,3 0,0 0,2.824 2.995L36,49a3,3 0,0 0,2.995 -2.824L39,46v-7h7a3,3 0,0 0,2.995 -2.824L49,36a3,3 0,0 0,-2.824 -2.995L46,33h-7v-7a3,3 0,0 0,-2.824 -2.995L36,23zM59,48c6.075,0 11,4.925 11,11s-4.925,11 -11,11 -11,-4.925 -11,-11 4.925,-11 11,-11zM64.2,54.384a1,1 0,0 0,-1.23 0.071l-0.09,0.09 -5.924,6.714 -2.118,-2.118 -0.087,-0.077a1,1 0,0 0,-1.41 1.397l0.083,0.095 2.87,2.871 0.086,0.076a1,1 0,0 0,1.286 -0.035l0.086,-0.087 6.628,-7.513 0.072,-0.092a1,1 0,0 0,-0.07 -1.23l-0.09,-0.09 -0.092,-0.072z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_illu_home_1.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:aapt=\"http://schemas.android.com/aapt\"\n    android:width=\"280dp\"\n    android:height=\"168dp\"\n    android:viewportWidth=\"280\"\n    android:viewportHeight=\"168\">\n  <path\n      android:pathData=\"M88.432,19.961c-2.816,-1.072 -6.106,-1.848 -9.871,-2.325 -3.764,-0.477 -9.569,-0.287 -17.416,0.571\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M106.76,21.022l21.527,2.319c5.422,3.516 8.179,6.205 8.269,8.067 0.09,1.862 -0.978,2.792 -3.206,2.79M135.457,38.717c5.704,1.886 8.705,3.937 9.003,6.151 0.298,2.215 -1.155,3.487 -4.356,3.814M144.018,57.074C148.474,58.555 151.015,60.184 151.64,61.958c0.626,1.775 -0.527,3.125 -3.454,4.054\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M166.295,119.045l-43.503,20.286c-3.003,1.4 -6.573,0.101 -7.974,-2.902l-45.643,-97.881c-1.401,-3.004 -0.1,-6.573 2.902,-7.974l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902L169.197,111.072c1.401,3.004 0.101,6.573 -2.902,7.974z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M107.424,14.092l-27.189,12.679l1.69,3.625c0.7,1.502 2.485,2.151 3.987,1.451l21.751,-10.143c1.502,-0.7 2.151,-2.485 1.451,-3.987l-1.69,-3.625z\"\n      android:fillColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M62.972,39.565c4.917,2.543 8.75,5.986 11.495,10.329 1.259,1.989 3.57,7.963 6.936,17.921 4.757,5.224 8.348,9.933 10.771,14.13 3.636,6.295 0.415,13.521 -0.842,13.584 -1.258,0.063 -7.187,-8.065 -11.414,-11.69s-7.975,-5.994 -9.391,-6.88c-1.415,-0.886 -2.807,-4.301 -9.863,-10.391 -4.705,-4.06 -9.696,-7.437 -14.974,-10.13l-20.276,-10.047\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#ECECEC\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M123.188,26.602l-43.503,20.286c-0.5,0.233 -0.717,0.829 -0.484,1.329L95.684,83.563l-0,0L105.192,103.954l2.869,1.421 -0.756,3.111L112.166,118.909c0.233,0.5 0.829,0.717 1.329,0.484l43.503,-20.286c0.5,-0.233 0.717,-0.829 0.484,-1.329l-3.804,-8.157l-0,0l-1.057,-2.266l-2.869,-1.421 0.756,-3.111L124.517,27.086c-0.233,-0.5 -0.829,-0.717 -1.329,-0.484z\"\n      android:strokeAlpha=\"0.402\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M113.995,60.128L120.969,75.082L135.923,68.109L128.949,53.155l-14.954,6.973zM111.636,72.814l1.267,2.717L102.028,80.604l1.268,2.719L116.89,76.984l-2.536,-5.438l-2.719,1.268zM117.983,61.579l9.516,-4.437l4.437,9.514l-9.516,4.437L117.983,61.579zM107.198,63.298L109.1,67.376l-2.719,1.268l-1.902,-4.078l-8.157,3.804L100.76,77.885l2.719,-1.268l-3.168,-6.798l2.719,-1.268L104.93,72.631l8.157,-3.804l-3.17,-6.797l-2.719,1.268zM121.969,63.03L123.871,67.109L127.949,65.207l-1.902,-4.078l-4.078,1.902zM105.754,42.455l6.973,14.954L127.682,50.436L120.708,35.482l-14.954,6.973zM88.081,50.696l6.973,14.954L110.009,58.677L103.035,43.723L88.081,50.696zM109.742,43.906l9.516,-4.437l4.437,9.515l-9.516,4.437l-4.437,-9.516zM92.069,52.147l9.516,-4.437l4.437,9.515L96.505,61.662l-4.437,-9.516zM113.728,45.357l1.902,4.078L119.708,47.534L117.806,43.455l-4.078,1.902zM96.055,53.598l1.902,4.078l4.078,-1.902L100.133,51.696L96.055,53.598z\"\n      android:fillColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M116.658,47.729l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902l45.643,97.881c1.401,3.004 0.101,6.573 -2.902,7.974L167.372,156.486c-3.004,1.401 -6.573,0.101 -7.974,-2.902L113.756,55.703c-1.401,-3.004 -0.101,-6.573 2.902,-7.974z\"\n      android:strokeWidth=\"6\"\n      android:fillColor=\"#7A7A7A\"\n      android:strokeColor=\"#ECECEC\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M116.658,47.729l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902l45.643,97.881c1.401,3.004 0.101,6.573 -2.902,7.974L167.372,156.486c-3.004,1.401 -6.573,0.101 -7.974,-2.902L113.756,55.703c-1.401,-3.004 -0.101,-6.573 2.902,-7.974z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#7A7A7A\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M124.815,43.926l27.189,-12.679l1.69,3.625c0.7,1.502 0.051,3.286 -1.451,3.987L130.492,49.002c-1.502,0.7 -3.286,0.051 -3.987,-1.451L124.815,43.926z\"\n      android:fillColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M200.061,146.28c2.53,1.888 5.595,3.585 9.195,5.094 3.729,1.561 7.584,2.733 11.566,3.514\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M157.117,106.1L146.241,111.171L141.17,100.295m-10.143,-21.751L125.955,67.668l10.876,-5.071m21.751,-10.143l10.876,-5.071l5.071,10.876m10.143,21.751l5.071,10.876L178.868,95.957\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M127.284,68.152L168.975,48.711L188.415,90.402L146.725,109.842z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M157.124,81.27L164.097,96.224L149.143,103.197L142.17,88.243l14.954,-6.973zM168.359,87.617l1.267,2.717L180.503,85.264l1.268,2.719L168.176,94.322l-2.536,-5.438l2.719,-1.268zM155.672,85.257l-9.516,4.437l4.437,9.514l9.516,-4.437L155.672,85.257zM163.921,78.101L165.823,82.179l2.719,-1.268l-1.902,-4.078l8.157,-3.804L179.235,82.545l-2.719,1.268l-3.171,-6.796l-2.719,1.268L172.529,82.362l-8.157,3.804l-3.17,-6.797l2.719,-1.268zM154.222,89.244L156.124,93.322L152.045,95.224l-1.902,-4.078l4.078,-1.902zM148.883,63.597l6.973,14.954L140.902,85.524L133.929,70.57l14.954,-6.973zM166.556,55.356l6.973,14.954L158.575,77.283L151.602,62.329L166.556,55.356zM147.431,67.584l-9.516,4.437l4.437,9.515l9.516,-4.437l-4.437,-9.516zM165.104,59.343l-9.516,4.437l4.437,9.515L169.542,68.858l-4.437,-9.516zM145.981,71.571l1.902,4.078L143.804,77.551L141.903,73.473l4.078,-1.902zM163.654,63.33l1.902,4.078l-4.078,1.902L159.576,65.231L163.654,63.33z\"\n      android:fillColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M137.005,88.997L178.695,69.557L188.415,90.402L146.725,109.842z\"\n      android:fillType=\"evenOdd\">\n    <aapt:attr name=\"android:fillColor\">\n      <gradient \n          android:startY=\"69.557\"\n          android:startX=\"162.70999\"\n          android:endY=\"109.842\"\n          android:endX=\"162.70999\"\n          android:type=\"linear\">\n        <item android:offset=\"0\" android:color=\"#66009E89\"/>\n        <item android:offset=\"1\" android:color=\"#00009E89\"/>\n      </gradient>\n    </aapt:attr>\n  </path>\n  <path\n      android:pathData=\"M137.911,88.574L177.788,69.979\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#009E89\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M214.784,132.902c-1.226,-0.794 -2.123,-1.382 -2.693,-1.762 -5.772,-3.849 -9.556,-6.901 -11.353,-9.155 -2.063,-2.586 -4.739,-8.325 -8.028,-17.217 -6.092,-2.075 -10.399,-4.483 -12.919,-7.225 -2.521,-2.742 -3.318,-6.353 -2.39,-10.832 12.81,5.046 21.408,8.342 25.796,9.889 6.581,2.321 9.636,2.102 13.169,4.593 3.532,2.49 9.309,15.689 13.072,18.28 2.508,1.727 10.235,3.824 23.181,6.29\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#ECECEC\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_illu_home_2.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"280dp\"\n    android:height=\"168dp\"\n    android:viewportWidth=\"280\"\n    android:viewportHeight=\"168\">\n  <path\n      android:pathData=\"M200.06,146.28c2.53,1.888 5.595,3.585 9.195,5.094 3.729,1.561 7.584,2.733 11.566,3.514\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M116.658,47.729l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902l45.643,97.881c1.401,3.004 0.101,6.573 -2.902,7.974L167.372,156.486c-3.004,1.401 -6.573,0.101 -7.974,-2.902L113.756,55.703c-1.401,-3.004 -0.101,-6.573 2.902,-7.974z\"\n      android:strokeWidth=\"6\"\n      android:fillColor=\"#7A7A7A\"\n      android:strokeColor=\"#ECECEC\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M117.437,48.464l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902l45.643,97.881c1.4,3.003 0.101,6.573 -2.902,7.974l-43.503,20.286c-3.003,1.4 -6.573,0.1 -7.974,-2.902l-45.643,-97.881c-1.401,-3.004 -0.1,-6.573 2.902,-7.974z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#009E89\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M125.594,44.66l27.189,-12.679l1.69,3.625c0.7,1.502 0.051,3.286 -1.451,3.987l-21.751,10.143c-1.502,0.7 -3.286,0.051 -3.987,-1.451l-1.69,-3.625z\"\n      android:fillColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M129.388,85.923l52.566,-24.512l31.696,67.973c1.167,2.502 0.084,5.478 -2.418,6.645L167.729,156.314c-2.502,1.167 -5.478,0.084 -6.645,-2.418L129.388,85.923z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M158.1,132.116L184.383,119.86A1.5,1.5 62.808,0 1,186.376 120.586L186.376,120.586A1.5,1.5 62.808,0 1,185.651 122.579L159.368,134.835A1.5,1.5 123.338,0 1,157.375 134.11L157.375,134.11A1.5,1.5 123.338,0 1,158.1 132.116z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M148.38,111.271L182.82,95.212A1.5,1.5 63.274,0 1,184.813 95.937L184.813,95.937A1.5,1.5 63.274,0 1,184.088 97.931L149.648,113.99A1.5,1.5 98.563,0 1,147.654 113.265L147.654,113.265A1.5,1.5 98.563,0 1,148.38 111.271z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M160.636,137.554L179.668,128.679A1.5,1.5 100.668,0 1,181.662 129.405L181.662,129.405A1.5,1.5 100.668,0 1,180.936 131.398L161.904,140.273A1.5,1.5 96.225,0 1,159.91 139.547L159.91,139.547A1.5,1.5 96.225,0 1,160.636 137.554z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M150.916,116.709L169.948,107.834A1.5,1.5 78.688,0 1,171.942 108.56L171.942,108.56A1.5,1.5 78.688,0 1,171.216 110.553L152.184,119.428A1.5,1.5 110.14,0 1,150.19 118.702L150.19,118.702A1.5,1.5 110.14,0 1,150.916 116.709z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.505,92.239L165.788,79.983A1.5,1.5 63.274,0 1,167.781 80.708L167.781,80.708A1.5,1.5 63.274,0 1,167.056 82.702L140.773,94.958A1.5,1.5 110.013,0 1,138.779 94.232L138.779,94.232A1.5,1.5 110.013,0 1,139.505 92.239z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M142.041,97.677L161.073,88.802A1.5,1.5 110.14,0 1,163.067 89.527L163.067,89.527A1.5,1.5 110.14,0 1,162.341 91.52L143.309,100.395A1.5,1.5 117.276,0 1,141.315 99.67L141.315,99.67A1.5,1.5 117.276,0 1,142.041 97.677z\"\n      android:fillColor=\"#C8C8C8\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M148.909,59.166m-8.157,3.804a9,9 124.883,1 1,16.314 -7.607a9,9 124.883,1 1,-16.314 7.607\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M144.969,60.828L149.198,62.367 152.276,53.909\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M214.784,132.901c-1.226,-0.794 -2.123,-1.382 -2.693,-1.762 -5.772,-3.849 -9.556,-6.901 -11.353,-9.155 -2.063,-2.586 -4.739,-8.325 -8.028,-17.217 -6.092,-2.075 -10.399,-4.483 -12.919,-7.225 -2.521,-2.742 -3.318,-6.353 -2.39,-10.832 12.81,5.046 21.408,8.342 25.796,9.889 6.581,2.321 9.636,2.102 13.169,4.593 3.532,2.49 9.309,15.689 13.072,18.28 2.508,1.727 10.235,3.824 23.181,6.29\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#ECECEC\"\n      android:strokeColor=\"#2D3032\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_launcher_background.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportWidth=\"108\"\n    android:viewportHeight=\"108\">\n  <path\n      android:pathData=\"M0.125,0h107.75v108h-107.75z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#00B59D\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M74.125,64.403L74.125,70.386C74.125,72.43 72.484,74.091 70.448,74.124L70.386,74.125L64.282,74.125L64.282,71L70.386,71C70.716,71 70.985,70.74 70.999,70.413L71,70.386L71,64.403L74.125,64.403ZM37.121,64.282L37.121,70.386C37.121,70.716 37.382,70.985 37.708,70.999L37.736,71L43.718,71L43.718,74.125L37.736,74.125C35.691,74.125 34.03,72.484 33.997,70.448L33.996,70.386L33.996,64.282L37.121,64.282ZM43.718,33.996L43.718,37.121L37.736,37.121C37.405,37.121 37.136,37.382 37.122,37.708L37.121,37.736L37.121,43.718L33.996,43.718L33.996,37.736C33.996,35.691 35.637,34.03 37.674,33.997L37.736,33.996L43.718,33.996ZM70.386,33.996C72.43,33.996 74.091,35.637 74.124,37.674L74.125,37.736L74.125,43.718L71,43.718L71,37.736C71,37.405 70.74,37.136 70.413,37.122L70.386,37.121L64.282,37.121L64.282,33.996L70.386,33.996Z\"\n      android:strokeAlpha=\"0.53\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FFFFFF\"\n      android:fillType=\"nonZero\"\n      android:strokeColor=\"#00000000\"\n      android:fillAlpha=\"0.53\"/>\n  <path\n      android:pathData=\"M76.5,64.313L76.5,72.199C76.5,74.55 74.612,76.461 72.27,76.499L72.199,76.5L64.313,76.5L64.313,72.75L72.199,72.75C72.494,72.75 72.735,72.517 72.749,72.225L72.75,72.199L72.75,64.313L76.5,64.313ZM35.25,64.313L35.25,72.199C35.25,72.494 35.483,72.735 35.775,72.749L35.801,72.75L43.688,72.75L43.688,76.5L35.801,76.5C33.45,76.5 31.539,74.612 31.501,72.27L31.5,72.199L31.5,64.313L35.25,64.313ZM43.688,31.5L43.688,35.25L35.801,35.25C35.506,35.25 35.265,35.483 35.251,35.775L35.25,35.801L35.25,43.688L31.5,43.688L31.5,35.801C31.5,33.45 33.388,31.539 35.73,31.501L35.801,31.5L43.688,31.5ZM72.199,31.5C74.55,31.5 76.461,33.388 76.499,35.73L76.5,35.801L76.5,43.688L72.75,43.688L72.75,35.801C72.75,35.506 72.517,35.265 72.225,35.251L72.199,35.25L64.313,35.25L64.313,31.5L72.199,31.5Z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FFFFFF\"\n      android:fillType=\"nonZero\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M61.872,47.247C62.702,46.418 64.048,46.418 64.878,47.247C65.697,48.066 65.707,49.387 64.91,50.22L64.878,50.253L53.628,61.503C52.809,62.322 51.488,62.332 50.655,61.535L50.622,61.503L45.622,56.503C44.793,55.673 44.793,54.327 45.622,53.497C46.441,52.678 47.762,52.668 48.595,53.465L48.628,53.497L52.125,56.995L61.872,47.247Z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FFFFFF\"\n      android:fillType=\"nonZero\"\n      android:strokeColor=\"#00000000\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/ic_settings.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,14.52c-1.369,0 -2.483,-1.13 -2.483,-2.52 0,-1.39 1.114,-2.52 2.483,-2.52s2.483,1.13 2.483,2.52c0,1.39 -1.114,2.52 -2.483,2.52zM12,7.76c-2.302,0 -4.175,1.902 -4.175,4.24S9.698,16.24 12,16.24c2.302,0 4.175,-1.902 4.175,-4.24S14.302,7.76 12,7.76zM19.026,18.206 L17.933,17.79c-1.748,-0.665 -3.655,0.457 -3.961,2.322l-0.192,1.17h-3.56l-0.192,-1.17c-0.306,-1.87 -2.216,-2.986 -3.96,-2.322l-1.094,0.416 -1.78,-3.13 0.902,-0.754c1.44,-1.204 1.437,-3.442 0,-4.644l-0.902,-0.754 1.78,-3.13 1.093,0.416c1.748,0.665 3.655,-0.457 3.961,-2.322l0.192,-1.17h3.56l0.192,1.17c0.306,1.87 2.217,2.986 3.96,2.322l1.094,-0.416 1.78,3.13 -0.902,0.754c-1.44,1.204 -1.438,3.442 0,4.644l0.902,0.754 -1.78,3.13zM21.882,13.749 L20.98,12.995a1.302,1.302 0,0 1,0 -1.99l0.902,-0.754a1.732,1.732 0,0 0,0.39 -2.186l-1.78,-3.13a1.676,1.676 0,0 0,-2.06 -0.75L17.34,4.6a1.268,1.268 0,0 1,-1.698 -0.996l-0.192,-1.169A1.695,1.695 0,0 0,13.78 1L10.22,1c-0.83,0 -1.533,0.604 -1.67,1.436l-0.191,1.17A1.268,1.268 0,0 1,6.66 4.6l-1.093,-0.416a1.676,1.676 0,0 0,-2.06 0.75l-1.78,3.13c-0.415,0.73 -0.251,1.65 0.39,2.186l0.902,0.754a1.302,1.302 0,0 1,0 1.99l-0.902,0.754a1.731,1.731 0,0 0,-0.39 2.186l1.78,3.13a1.675,1.675 0,0 0,2.06 0.75L6.66,19.4a1.268,1.268 0,0 1,1.698 0.995l0.192,1.17A1.695,1.695 0,0 0,10.22 23h3.559c0.83,0 1.533,-0.604 1.67,-1.436l0.191,-1.17c0.132,-0.8 0.95,-1.28 1.698,-0.995l1.093,0.416a1.675,1.675 0,0 0,2.06 -0.75l1.78,-3.13c0.415,-0.73 0.251,-1.65 -0.39,-2.186z\"\n      android:fillColor=\"#757575\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/drawable/illu_updateboarding_certificate_light.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:aapt=\"http://schemas.android.com/aapt\"\n\tandroid:width=\"280dp\"\n\tandroid:height=\"168dp\"\n\tandroid:viewportWidth=\"280\"\n\tandroid:viewportHeight=\"168\">\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M88.431,19.96c-2.816,-1.072 -6.106,-1.848 -9.871,-2.325 -3.764,-0.477 -9.569,-0.287 -17.416,0.571\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\"\n\t\tandroid:strokeLineCap=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M106.759,21.021l21.527,2.319c5.422,3.516 8.179,6.205 8.269,8.067 0.09,1.862 -0.978,2.792 -3.206,2.79M135.456,38.716c5.704,1.886 8.705,3.937 9.003,6.151 0.298,2.215 -1.155,3.487 -4.356,3.814M144.016,57.073C148.473,58.554 151.014,60.183 151.638,61.957c0.626,1.775 -0.527,3.125 -3.454,4.054\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\" />\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M166.294,119.044l-43.503,20.286c-3.003,1.4 -6.573,0.101 -7.974,-2.902l-45.643,-97.881c-1.401,-3.004 -0.1,-6.573 2.902,-7.974l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902L169.196,111.071c1.401,3.004 0.101,6.573 -2.902,7.974z\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\" />\n\t<path\n\t\tandroid:fillColor=\"#2D3032\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M107.423,14.091l-27.189,12.679l1.69,3.625c0.7,1.502 2.485,2.151 3.987,1.451l21.751,-10.143c1.502,-0.7 2.151,-2.485 1.451,-3.987l-1.69,-3.625z\" />\n\t<path\n\t\tandroid:fillColor=\"#ECECEC\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M62.97,39.564c4.917,2.543 8.75,5.986 11.495,10.329 1.259,1.989 3.57,7.963 6.936,17.921 4.757,5.224 8.348,9.933 10.771,14.13 3.636,6.295 0.415,13.521 -0.842,13.584 -1.258,0.063 -7.187,-8.065 -11.414,-11.69s-7.975,-5.994 -9.391,-6.88c-1.415,-0.886 -2.807,-4.301 -9.863,-10.391 -4.705,-4.06 -9.696,-7.437 -14.974,-10.13l-20.276,-10.047\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\"\n\t\tandroid:strokeLineCap=\"round\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M123.186,26.601l-43.503,20.286c-0.5,0.233 -0.717,0.829 -0.484,1.329L95.682,83.562l-0,0L105.191,103.953l2.869,1.421 -0.756,3.111L112.164,118.908c0.233,0.5 0.829,0.717 1.329,0.484l43.503,-20.286c0.5,-0.233 0.717,-0.829 0.484,-1.329l-3.804,-8.157l-0,0l-1.057,-2.266l-2.869,-1.421 0.756,-3.111L124.515,27.085c-0.233,-0.5 -0.829,-0.717 -1.329,-0.484z\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeAlpha=\"0.402\"\n\t\tandroid:strokeColor=\"#243784\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"nonZero\"\n\t\tandroid:pathData=\"M103.223,66.024c4.379,-2.042 9.586,-0.147 11.628,4.232s0.147,9.586 -4.232,11.628 -9.586,0.147 -11.628,-4.232 -0.147,-9.586 4.232,-11.628zM132.984,65.662c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S132.327,70.465 131.714,69.151 131.67,66.275 132.984,65.662zM121.882,70.839C123.196,70.227 124.757,70.795 125.37,72.109s0.044,2.876 -1.27,3.488 -2.876,0.044 -3.488,-1.27S120.568,71.452 121.882,70.839zM104.703,69.196c-2.628,1.226 -3.765,4.349 -2.539,6.977s4.349,3.765 6.977,2.539 3.765,-4.349 2.539,-6.977 -4.349,-3.765 -6.977,-2.539zM130.395,60.111c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S129.739,64.914 129.126,63.6s-0.044,-2.876 1.27,-3.488zM124.844,62.7c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488 -2.876,0.044 -3.488,-1.27 -0.044,-2.876 1.27,-3.488zM105.812,71.575c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S105.155,76.377 104.542,75.063s-0.044,-2.876 1.27,-3.488zM122.256,57.149c1.314,-0.613 2.876,-0.044 3.488,1.27S125.789,61.294 124.475,61.907s-2.876,0.044 -3.488,-1.27S120.942,57.761 122.256,57.149zM116.705,59.737c1.314,-0.613 2.876,-0.044 3.488,1.27S120.238,63.882 118.923,64.495s-2.876,0.044 -3.488,-1.27 -0.044,-2.876 1.27,-3.488zM94.348,46.991c4.379,-2.042 9.586,-0.147 11.628,4.232s0.147,9.586 -4.232,11.628 -9.586,0.147 -11.628,-4.232 -0.147,-9.586 4.232,-11.628zM113.381,38.116c4.379,-2.042 9.586,-0.147 11.628,4.232s0.147,9.586 -4.232,11.628 -9.586,0.147 -11.628,-4.232 -0.147,-9.586 4.232,-11.628zM95.828,50.163c-2.628,1.226 -3.765,4.349 -2.539,6.977s4.349,3.765 6.977,2.539 3.765,-4.349 2.539,-6.977 -4.349,-3.765 -6.977,-2.539zM114.86,41.288c-2.628,1.226 -3.765,4.349 -2.539,6.977s4.349,3.765 6.977,2.539 3.765,-4.349 2.539,-6.977 -4.349,-3.765 -6.977,-2.539zM96.937,52.542c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S96.28,57.345 95.667,56.031 95.623,53.155 96.937,52.542zM115.969,43.667c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488 -2.876,0.044 -3.488,-1.27S114.655,44.28 115.969,43.667z\" />\n\t<path\n\t\tandroid:fillColor=\"#7A7A7A\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M116.658,47.729l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902l45.643,97.881c1.401,3.004 0.101,6.573 -2.902,7.974L167.372,156.486c-3.004,1.401 -6.573,0.101 -7.974,-2.902L113.756,55.703c-1.401,-3.004 -0.101,-6.573 2.902,-7.974z\"\n\t\tandroid:strokeWidth=\"6\"\n\t\tandroid:strokeColor=\"#ECECEC\" />\n\t<path\n\t\tandroid:fillColor=\"#7A7A7A\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M116.658,47.729l43.503,-20.286c3.004,-1.401 6.573,-0.101 7.974,2.902l45.643,97.881c1.401,3.004 0.101,6.573 -2.902,7.974L167.372,156.486c-3.004,1.401 -6.573,0.101 -7.974,-2.902L113.756,55.703c-1.401,-3.004 -0.101,-6.573 2.902,-7.974z\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\" />\n\t<path\n\t\tandroid:fillColor=\"#2D3032\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M124.815,43.926l27.189,-12.679l1.69,3.625c0.7,1.502 0.051,3.286 -1.451,3.987L130.492,49.002c-1.502,0.7 -3.286,0.051 -3.987,-1.451L124.815,43.926z\" />\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M200.06,146.28c2.53,1.888 5.595,3.585 9.195,5.094 3.729,1.561 7.584,2.733 11.566,3.514\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\"\n\t\tandroid:strokeLineCap=\"round\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M157.117,106.099L146.241,111.171L141.17,100.295m-10.143,-21.751L125.955,67.668l10.876,-5.071m21.751,-10.143l10.876,-5.071l5.071,10.876m10.143,21.751l5.071,10.876L178.868,95.957\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M127.284,68.152L168.975,48.711L188.415,90.401L146.725,109.842z\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"nonZero\"\n\t\tandroid:pathData=\"M149.131,85.181c4.379,-2.042 9.586,-0.147 11.628,4.232s0.147,9.586 -4.232,11.628 -9.586,0.147 -11.628,-4.232 -0.147,-9.586 4.232,-11.628zM178.891,84.82c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S178.235,89.622 177.622,88.308 177.577,85.433 178.891,84.82zM167.789,89.997C169.103,89.384 170.665,89.952 171.278,91.267s0.044,2.876 -1.27,3.488 -2.876,0.044 -3.488,-1.27S166.475,90.61 167.789,89.997zM150.61,88.353c-2.628,1.226 -3.765,4.349 -2.539,6.977s4.349,3.765 6.977,2.539 3.765,-4.349 2.539,-6.977 -4.349,-3.765 -6.977,-2.539zM176.303,79.269c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S175.646,84.071 175.033,82.757s-0.044,-2.876 1.27,-3.488zM170.752,81.857c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488 -2.876,0.044 -3.488,-1.27 -0.044,-2.876 1.27,-3.488zM151.719,90.732c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S151.062,95.535 150.45,94.221s-0.044,-2.876 1.27,-3.488zM168.163,76.306c1.314,-0.613 2.876,-0.044 3.488,1.27S171.696,80.451 170.382,81.064s-2.876,0.044 -3.488,-1.27S166.849,76.919 168.163,76.306zM162.612,78.895c1.314,-0.613 2.876,-0.044 3.488,1.27S166.145,83.04 164.831,83.653s-2.876,0.044 -3.488,-1.27 -0.044,-2.876 1.27,-3.488zM140.256,66.149c4.379,-2.042 9.586,-0.147 11.628,4.232s0.147,9.586 -4.232,11.628 -9.586,0.147 -11.628,-4.232 -0.147,-9.586 4.232,-11.628zM159.288,57.274c4.379,-2.042 9.586,-0.147 11.628,4.232s0.147,9.586 -4.232,11.628 -9.586,0.147 -11.628,-4.232 -0.147,-9.586 4.232,-11.628zM141.735,69.321c-2.628,1.226 -3.765,4.349 -2.539,6.977s4.349,3.765 6.977,2.539 3.765,-4.349 2.539,-6.977 -4.349,-3.765 -6.977,-2.539zM160.767,60.446c-2.628,1.226 -3.765,4.349 -2.539,6.977s4.349,3.765 6.977,2.539 3.765,-4.349 2.539,-6.977 -4.349,-3.765 -6.977,-2.539zM142.844,71.7c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488S142.187,76.502 141.575,75.188 141.53,72.312 142.844,71.7zM161.877,62.825c1.314,-0.613 2.876,-0.044 3.488,1.27s0.044,2.876 -1.27,3.488 -2.876,0.044 -3.488,-1.27S160.563,63.438 161.877,62.825z\" />\n\t<path\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M137.005,88.997L178.695,69.556L188.415,90.401L146.725,109.842z\">\n\t\t<aapt:attr name=\"android:fillColor\">\n\t\t\t<gradient\n\t\t\t\tandroid:endX=\"162.70999\"\n\t\t\t\tandroid:endY=\"109.842\"\n\t\t\t\tandroid:startX=\"162.70999\"\n\t\t\t\tandroid:startY=\"69.556\"\n\t\t\t\tandroid:type=\"linear\">\n\t\t\t\t<item\n\t\t\t\t\tandroid:color=\"#66009E89\"\n\t\t\t\t\tandroid:offset=\"0\" />\n\t\t\t\t<item\n\t\t\t\t\tandroid:color=\"#00009E89\"\n\t\t\t\t\tandroid:offset=\"1\" />\n\t\t\t</gradient>\n\t\t</aapt:attr>\n\t</path>\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M137.911,88.574L177.788,69.979\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#009E89\"\n\t\tandroid:strokeLineCap=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#ECECEC\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M214.784,132.901c-1.226,-0.794 -2.123,-1.382 -2.693,-1.762 -5.772,-3.849 -9.556,-6.901 -11.353,-9.155 -2.063,-2.586 -4.739,-8.325 -8.028,-17.217 -6.092,-2.075 -10.399,-4.483 -12.919,-7.225 -2.521,-2.742 -3.318,-6.353 -2.39,-10.832 12.81,5.046 21.408,8.342 25.796,9.889 6.581,2.321 9.636,2.102 13.169,4.593 3.532,2.49 9.309,15.689 13.072,18.28 2.508,1.727 10.235,3.824 23.181,6.29\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#2D3032\"\n\t\tandroid:strokeLineCap=\"round\"\n\t\tandroid:strokeLineJoin=\"round\" />\n</vector>\n"
  },
  {
    "path": "verifier/src/main/res/layout/activity_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\">\n\n\t<androidx.fragment.app.FragmentContainerView\n\t\tandroid:id=\"@+id/fragment_container\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\" />\n\n</FrameLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/dialog_fragment_choose_mode.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"vertical\"\n\tandroid:overScrollMode=\"never\">\n\n\t<ScrollView\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:layout_weight=\"1\"\n\t\tandroid:overScrollMode=\"never\">\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_large\"\n\t\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/info_dialog_title\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\tandroid:text=\"@string/verifier_mode_title\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/mode_items_layout\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/info_items_layout\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\" />\n\n\t\t</LinearLayout>\n\t</ScrollView>\n\n\t<FrameLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:elevation=\"4dp\"\n\t\tandroid:paddingVertical=\"@dimen/spacing_medium_large\">\n\n\t\t<Button\n\t\t\tandroid:id=\"@+id/choose_mode_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"center\"\n\t\t\tandroid:text=\"@string/verifier_choose_mode_button_title\" />\n\t</FrameLayout>\n\n</LinearLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/dialog_fragment_info_certificate_news.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<ScrollView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:overScrollMode=\"never\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"center_horizontal\"\n\t\tandroid:orientation=\"vertical\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_small\"\n\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/info_certificate_news_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:text=\"Info\" />\n\n\t\t<LinearLayout\n\t\t\tandroid:id=\"@+id/info_certificate_news_list\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\tandroid:orientation=\"vertical\" />\n\n\t\t<Button\n\t\t\tandroid:id=\"@+id/info_certificate_news_close_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:text=\"@string/close_button\" />\n\n\t</LinearLayout>\n</ScrollView>"
  },
  {
    "path": "verifier/src/main/res/layout/fragment_home.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/homescreen_constraint_layout\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:background=\"@color/greyish\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\tandroid:layout_marginTop=\"100dp\"\n\t\t\tandroid:background=\"@color/greyish\"\n\t\t\tandroid:fillViewport=\"true\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:text=\"@string/verifier_homescreen_header_title\"\n\t\t\t\t\tandroid:textAllCaps=\"true\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:text=\"@string/verifier_homescreen_title\"\n\t\t\t\t\tandroid:textSize=\"@dimen/spacing_very_large\" />\n\n\t\t\t\t<Button\n\t\t\t\t\tandroid:id=\"@+id/covid_certificate_info\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:textAllCaps=\"false\"\n\t\t\t\t\tapp:icon=\"@drawable/ic_info_outline\"\n\t\t\t\t\tapp:iconGravity=\"textEnd\"\n\t\t\t\t\tapp:iconTint=\"@color/blue\"\n\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\ttools:text=\"Zertifikatspflicht aufgehoben  \" />\n\n\t\t\t\t<androidx.viewpager2.widget.ViewPager2\n\t\t\t\t\tandroid:id=\"@+id/viewPager\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\" />\n\n\t\t\t\t<com.google.android.material.tabs.TabLayout\n\t\t\t\t\tandroid:id=\"@+id/tab_layout\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:background=\"@color/greyish\"\n\t\t\t\t\tapp:tabBackground=\"@drawable/tab_selector\"\n\t\t\t\t\tapp:tabGravity=\"center\"\n\t\t\t\t\tapp:tabIndicatorHeight=\"0dp\" />\n\n\t\t\t\t<Button\n\t\t\t\t\tandroid:id=\"@+id/homescreen_scan_button\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginBottom=\"100dp\"\n\t\t\t\t\tandroid:text=\"@string/verifier_homescreen_scan_button\" />\n\n\t\t\t</LinearLayout>\n\n\t\t</ScrollView>\n\n\t\t<include\n\t\t\tandroid:id=\"@+id/homescreen_header\"\n\t\t\tlayout=\"@layout/item_header\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/button_bar_bubble\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:srcCompat=\"@drawable/bg_bubble_bottom_left\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/homescreen_support_button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:foreground=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:srcCompat=\"@drawable/ic_faq\"\n\t\t\tapp:tint=\"@color/grey\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/homescreen_settings_button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:foreground=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_large\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:srcCompat=\"@drawable/ic_settings\"\n\t\t\tapp:tint=\"@color/grey\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/homescreen_mode_indicator\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"28dp\"\n\t\t\tandroid:layout_marginRight=\"-17dp\"\n\t\t\tandroid:background=\"@drawable/bg_pill\"\n\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/homescreen_settings_button\"\n\t\t\tapp:layout_constraintEnd_toStartOf=\"@id/homescreen_settings_button\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"@id/homescreen_settings_button\"\n\t\t\ttools:backgroundTint=\"@color/green\"\n\t\t\ttools:text=\"3G\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/fragment_home_screen_pager.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"vertical\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/homescreen_image\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"center\"\n\t\tapp:srcCompat=\"@drawable/ic_illu_home_1\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/homescreen_description\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_large\"\n\t\tandroid:layout_marginVertical=\"@dimen/spacing_large\"\n\t\tandroid:gravity=\"center\"\n\t\tandroid:text=\"@string/verifier_homescreen_pager_description_2\" />\n\n</LinearLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/fragment_qr_scan.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/black\"\n\ttools:context=\".qr.VerifierQrScanFragment\">\n\n\t<ch.ubique.qrscanner.view.QrScannerView\n\t\tandroid:id=\"@+id/qr_code_scanner\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\" />\n\n\t<View\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"@dimen/header_height_default\"\n\t\tandroid:layout_gravity=\"top\"\n\t\tandroid:background=\"@color/black_60\" />\n\n\t<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tapp:applyWindowInsets=\"left|right|bottom\">\n\n\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<View\n\t\t\t\tandroid:id=\"@+id/toolbar_place_holder\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"@dimen/header_height_default\"\n\t\t\t\tandroid:layout_gravity=\"top\"\n\t\t\t\tandroid:visibility=\"invisible\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t<View\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_milk_top\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:background=\"@color/black_60\"\n\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/toolbar_place_holder\" />\n\n\t\t\t<View\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_milk_bottom\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:background=\"@color/black_60\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/qr_code_scanner_camera_hole\" />\n\n\t\t\t<View\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:background=\"@color/black_60\"\n\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_milk_bottom\"\n\t\t\t\tapp:layout_constraintEnd_toStartOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/qr_code_scanner_milk_top\" />\n\n\t\t\t<View\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:background=\"@color/black_60\"\n\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_milk_bottom\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintStart_toEndOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/qr_code_scanner_milk_top\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_external_hardware_detected\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:background=\"@drawable/bg_rect_rounded_small\"\n\t\t\t\tandroid:padding=\"@dimen/spacing_small\"\n\t\t\t\tandroid:text=\"@string/verifier_qr_scanner_external_hardware_detected\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/camera_preview_container\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/toolbar_place_holder\"\n\t\t\t\tapp:layout_constraintWidth_default=\"wrap\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_invalid_code_text\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_large\"\n\t\t\t\tandroid:background=\"@drawable/bg_rect_rounded_small\"\n\t\t\t\tandroid:drawablePadding=\"@dimen/spacing_small\"\n\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_small\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_small\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_large\"\n\t\t\t\tandroid:text=\"@string/qr_scanner_error\"\n\t\t\t\tandroid:visibility=\"invisible\"\n\t\t\t\tapp:drawableStartCompat=\"@drawable/ic_scanner_alert\"\n\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/camera_preview_container\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/toolbar_place_holder\"\n\t\t\t\ttools:visibility=\"gone\" />\n\n\t\t\t<View\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_camera_hole\"\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_larger\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/camera_preview_container\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/camera_preview_container\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"@id/camera_preview_container\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/camera_preview_container\" />\n\n\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\tandroid:id=\"@+id/camera_preview_container\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_huge\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintDimensionRatio=\"1:1\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_top_right_indicator\"\n\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_top_right\"\n\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_top_left_indicator\"\n\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_top_left\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_bottom_left_indicator\"\n\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_bottom_left\"\n\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_bottom_right_indicator\"\n\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_bottom_right\"\n\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\" />\n\n\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_error_code\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Error.Bundesrot\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/camera_preview_container\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/camera_preview_container\"\n\t\t\t\ttools:text=\"ER-14\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/qr_code_scanner_explanation\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.White\"\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_huge\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\tandroid:text=\"@string/verifier_qr_scanner_scan_qr_text\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/camera_preview_container\" />\n\n\t\t\t<com.google.android.material.floatingactionbutton.FloatingActionButton\n\t\t\t\tandroid:id=\"@+id/fragment_qr_zoom\"\n\t\t\t\tstyle=\"@style/CovidCertificate.FloatingActionButton.BlackWhite\"\n\t\t\t\tandroid:layout_width=\"@dimen/floating_button_height\"\n\t\t\t\tandroid:layout_height=\"@dimen/floating_button_height\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_zoom_off\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<com.google.android.material.floatingactionbutton.FloatingActionButton\n\t\t\t\tandroid:id=\"@+id/fragment_camera_activate\"\n\t\t\t\tstyle=\"@style/CovidCertificate.FloatingActionButton.BlackWhite\"\n\t\t\t\tandroid:layout_width=\"@dimen/floating_button_height\"\n\t\t\t\tandroid:layout_height=\"@dimen/floating_button_height\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_camera_switch\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<com.google.android.material.floatingactionbutton.FloatingActionButton\n\t\t\t\tandroid:id=\"@+id/fragment_qr_scanner_flash_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.FloatingActionButton.BlackWhite\"\n\t\t\t\tandroid:layout_width=\"@dimen/floating_button_height\"\n\t\t\t\tandroid:layout_height=\"@dimen/floating_button_height\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_light_off\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/fragment_qr_scanner_error_view\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/toolbar_place_holder\">\n\n\t\t\t\t<include\n\t\t\t\t\tlayout=\"@layout/item_error_status\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\" />\n\t\t\t</LinearLayout>\n\n\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>\n\n\t<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout\n\t\tandroid:id=\"@+id/fragment_qr_toolbar_inset_group\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:background=\"@color/black_50\"\n\t\tapp:applyWindowInsets=\"all\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/fragment_qr_scanner_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"@dimen/header_height_default\"\n\t\t\tandroid:layout_gravity=\"top\"\n\t\t\tandroid:background=\"@null\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close\"\n\t\t\tapp:title=\"@string/verifier_title_qr_scan\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/white\" >\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/fragment_qr_scanner_mode_indicator\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"28dp\"\n\t\t\t\tandroid:layout_marginRight=\"-17dp\"\n\t\t\t\tandroid:background=\"@drawable/bg_pill\"\n\t\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\t\tandroid:layout_gravity=\"right\"\n\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\ttools:backgroundTint=\"@color/green\"\n\t\t\t\ttools:text=\"3G\" />\n\n\t\t</androidx.appcompat.widget.Toolbar>\n\n\t</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>\n</FrameLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/fragment_updateboarding_agb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_illustration\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_onboarding_data_protection\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:text=\"@string/terms_and_conditions_update_boarding_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/terms_and_conditions_update_boarding_text\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\"/>\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link_label\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_external_privacy_button\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/wallet_onboarding_accept_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/fragment_updateboarding_certificate_light.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/verifier_update_boarding_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_updateboarding_certificate_light\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:text=\"@string/verifier_update_boarding_certificate_light_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\tandroid:text=\"@string/verifier_update_boarding_certificate_light_text\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/item_agb_link\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link_label\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_external_privacy_button\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/wallet_onboarding_accept_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/fragment_verification.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:id=\"@+id/verification_base_group\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/red\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:background=\"@color/white\">\n\n\t\t<Button\n\t\t\tandroid:id=\"@+id/verification_footer_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\tandroid:layout_width=\"200dp\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:text=\"@string/ok_button\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\" />\n\n\t\t<ScrollView\n\t\t\tandroid:id=\"@+id/verification_scroll_view\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tandroid:overScrollMode=\"never\"\n\t\t\tandroid:scrollIndicators=\"none\"\n\t\t\tandroid:scrollbars=\"none\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/verification_footer_button\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/verification_content_group\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:background=\"@color/grey\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingTop=\"@dimen/header_height_max\">\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/verification_sheet_group\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_corners_top_left\"\n\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/covid_certificate_title\" />\n\n\t\t\t\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\t\t\t\tandroid:id=\"@+id/verification_status_recycler_view\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/verification_error_code\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"end\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tandroid:textColor=\"@color/grey\"\n\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\tandroid:visibility=\"invisible\"\n\t\t\t\t\t\ttools:text=\"NE-NOCONN\"\n\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_corners_top_left\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/verification_family_name\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\ttools:text=\"Studer\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:text=\"@string/verifier_covid_certificate_name\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/verification_given_name\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\t\t\ttools:text=\"Martina\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:text=\"@string/verifier_covid_certificate_prename\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/verification_birthdate\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\t\t\ttools:text=\"16.09.1961\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:text=\"@string/verifier_covid_certificate_birthdate\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/verification_standardized_name_label\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Code\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\ttools:text=\"STUDER&lt;&lt;MARTINA\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\n\t\t</ScrollView>\n\n\t\t<FrameLayout\n\t\t\tandroid:id=\"@+id/verification_header_group\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"@dimen/header_height_max\"\n\t\t\tandroid:background=\"@color/grey\"\n\t\t\tandroid:paddingTop=\"@dimen/header_height_default\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t<FrameLayout\n\t\t\t\tandroid:id=\"@+id/verification_header_status_group\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_tiny_small\">\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:id=\"@+id/verification_header_icons\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/verification_header_icon\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_check_large\"\n\t\t\t\t\t\tandroid:visibility=\"visible\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<ProgressBar\n\t\t\t\t\tandroid:id=\"@+id/verification_header_progress_bar\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\tandroid:indeterminateTint=\"@color/white\"\n\t\t\t\t\tandroid:progress=\"40\"\n\t\t\t\t\tandroid:visibility=\"visible\" />\n\t\t\t</FrameLayout>\n\t\t</FrameLayout>\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/verification_header_group_shadow\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"@dimen/header_shadow_height\"\n\t\t\tandroid:alpha=\"0\"\n\t\t\tapp:srcCompat=\"@drawable/header_collapsed_shadow\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/verification_header_group\"\n\t\t\ttools:alpha=\"1\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/item_certificate_news.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_margin=\"@dimen/spacing_medium_small\"\n\tandroid:orientation=\"horizontal\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/news_icon\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\ttools:src=\"@drawable/ic_bund_small\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/news_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:text=\"@string/wallet_update_boarding_page_2_bullet_1\" />\n</LinearLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/item_mode_button.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_small\"\n\tandroid:background=\"@drawable/bg_rect_rounded_small\"\n\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_weight=\"1\"\n\t\ttools:text=\"3G\" />\n\n\t<ImageView\n\t\tandroid:id=\"@+id/buttonIcon\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:src=\"@drawable/ic_checkbox_empty\" />\n\n</LinearLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/item_mode_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_marginVertical=\"@dimen/spacing_medium\"\n\tandroid:orientation=\"horizontal\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/icon\"\n\t\tandroid:layout_width=\"45dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:paddingEnd=\"@dimen/spacing_large\"\n\t\tandroid:src=\"@drawable/ic_expire_i\"\n\t\tandroid:scaleType=\"centerInside\"\n\t\tapp:tint=\"@color/blue\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/info_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:text=\"Für Betriebe und Veranstalter mit 3G-Regel.\" />\n\n</LinearLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/item_progress_indicator.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"wrap_content\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_gravity=\"top|center_horizontal\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/progress_indicator_icon\"\n\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\tapp:srcCompat=\"@drawable/ic_check_green\"\n\t\tandroid:visibility=\"visible\" />\n\n\t<ProgressBar\n\t\tandroid:id=\"@+id/progress_indicator_progress_bar\"\n\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\tandroid:indeterminateTint=\"@color/grey\"\n\t\tandroid:progress=\"40\"\n\t\tandroid:visibility=\"visible\" />\n\n</FrameLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/item_verification_header_icon.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ImageView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:id=\"@+id/verification_header_icon\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:visibility=\"visible\"\n\tapp:srcCompat=\"@drawable/ic_check_large\" />"
  },
  {
    "path": "verifier/src/main/res/layout/item_verification_status.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:id=\"@+id/verification_step_frame\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:background=\"@drawable/bg_rect_rounded_small\"\n\tapp:backgroundTint=\"@color/greyish\"\n\tandroid:padding=\"@dimen/spacing_small\">\n\n\t<include\n\t\tandroid:id=\"@+id/verification_step_progress_indicator\"\n\t\tlayout=\"@layout/item_progress_indicator\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/verification_step_title\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_small\"\n\t\ttools:text=\"Error\" />\n\n</LinearLayout>"
  },
  {
    "path": "verifier/src/main/res/layout/item_verification_status_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:id=\"@+id/info_frame\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:background=\"@drawable/bg_rect_rounded_small\"\n\tapp:backgroundTint=\"@color/greyish\"\n\tandroid:padding=\"@dimen/spacing_small\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/info_icon\"\n\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\tandroid:layout_gravity=\"top|center_horizontal\"\n\t\tapp:srcCompat=\"@drawable/ic_info_outline\"\n\t\tandroid:visibility=\"visible\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/info_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_small\"\n\t\tandroid:gravity=\"start\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toEndOf=\"@id/info_icon\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\ttools:text=\"Lorem ipsum dolor sit amet\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/info_retry\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Orange\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"10dp\"\n\t\tandroid:drawablePadding=\"@dimen/spacing_tiny_small\"\n\t\tandroid:drawableLeft=\"@drawable/ic_retry\"\n\t\tandroid:foreground=\"?android:attr/selectableItemBackground\"\n\t\tandroid:text=\"@string/error_action_retry\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintStart_toStartOf=\"@id/info_text\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@id/info_text\"\n\t\ttools:visibility=\"visible\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/info_applink\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Orange\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"10dp\"\n\t\tandroid:drawablePadding=\"@dimen/spacing_tiny_small\"\n\t\tandroid:drawableLeft=\"@drawable/ic_link_external\"\n\t\tandroid:drawableTint=\"@color/orange\"\n\t\tandroid:foreground=\"?android:attr/selectableItemBackground\"\n\t\tandroid:text=\"@string/verifier_error_app_store_button\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintStart_toStartOf=\"@id/info_text\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@id/info_text\"\n\t\ttools:visibility=\"visible\" />\n\n</androidx.constraintlayout.widget.ConstraintLayout>"
  },
  {
    "path": "verifier/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\"/>\n    <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n</adaptive-icon>"
  },
  {
    "path": "verifier/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\"/>\n    <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n</adaptive-icon>"
  },
  {
    "path": "wallet/.gitignore",
    "content": "/build"
  },
  {
    "path": "wallet/build.gradle",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nplugins {\n\tid 'com.android.application'\n\tid 'kotlin-android'\n\tid 'com.google.devtools.ksp' version '1.6.10-1.0.4'\n\tid 'org.sonarqube' version '3.0'\n\tid 'ch.ubique.gradle.ubdiag'\n}\n\next.readProperty = { paramName -> readPropertyWithDefault(paramName, null) }\next.readPropertyWithDefault = { paramName, defaultValue ->\n\tif (project.hasProperty(paramName)) {\n\t\treturn project.getProperties().get(paramName)\n\t} else {\n\t\tProperties properties = new Properties()\n\t\tif (project.rootProject.file('local.properties').exists()) {\n\t\t\tproperties.load(project.rootProject.file('local.properties').newDataInputStream())\n\t\t}\n\t\tif (properties.getProperty(paramName) != null) {\n\t\t\treturn properties.getProperty(paramName)\n\t\t} else {\n\t\t\treturn defaultValue\n\t\t}\n\t}\n}\n\nandroid {\n\tcompileSdkVersion 31\n\n\tdefaultConfig {\n\t\tapplicationId \"ch.admin.bag.covidcertificate.wallet\"\n\t\tminSdkVersion readPropertyWithDefault('minSdkVersion', '23').toInteger()\n\t\ttargetSdkVersion 31\n\t\tversionCode 4_10_00_00\n\t\tversionName \"4.10.0\"\n\n\t\t// Stops the Gradle plugin’s automatic rasterization of vectors\n\t\tgeneratedDensities = []\n\n\t\tbuildConfigField \"long\", \"BUILD_TIME\", readPropertyWithDefault('buildTimestamp', System.currentTimeMillis()) + 'L'\n\n\t\ttestInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"\n\t\t// The following argument makes the Android Test Orchestrator run its\n\t\t// \"pm clear\" command after each test invocation. This command ensures\n\t\t// that the app's state is completely cleared between tests.\n\t\ttestInstrumentationRunnerArguments clearPackageData: 'true'\n\t\ttestOptions {\n\t\t\tanimationsDisabled = true\n\t\t\texecution 'ANDROIDX_TEST_ORCHESTRATOR'\n\t\t}\n\t}\n\n\tproductFlavors {\n\t\t// These app tokens are reserved for the official COVID Certificate app.\n\t\t// If you intend to integrate the CovidCertificate-SDK into your app, please get in touch with BIT/BAG to get a token assigned.\n\t\tdev {\n\t\t\tbuildConfigField \"String\", \"BASE_URL\", '\"https://www.cc-d.bit.admin.ch/app/wallet/v1/\"'\n\t\t\tbuildConfigField \"String\", \"BASE_URL_DELIVERY\", '\"https://covidcertificate-app-d.bit.admin.ch/app/delivery/v1/\"'\n\t\t\tbuildConfigField \"String\", \"BASE_URL_TRANSFORMATION\", '\"https://covidcertificate-app-d.bit.admin.ch/app/transform/v1/\"'\n\t\t\tbuildConfigField \"String\", \"SDK_APP_TOKEN\", '\"c838a4c4-39e5-4bbb-8e75-e4382df2edfe\"'\n\t\t\tapplicationIdSuffix '.dev'\n\t\t}\n\t\tabn {\n\t\t\tbuildConfigField \"String\", \"BASE_URL\", '\"https://www.cc-a.bit.admin.ch/app/wallet/v1/\"'\n\t\t\tbuildConfigField \"String\", \"BASE_URL_DELIVERY\", '\"https://covidcertificate-app-a.bit.admin.ch/app/delivery/v1/\"'\n\t\t\tbuildConfigField \"String\", \"BASE_URL_TRANSFORMATION\", '\"https://covidcertificate-app-a.bit.admin.ch/app/transform/v1/\"'\n\t\t\tbuildConfigField \"String\", \"SDK_APP_TOKEN\", '\"e9802c49-4f2b-49cc-a645-24c206366455\"'\n\t\t\tapplicationIdSuffix '.abn'\n\t\t}\n\t\tprod {\n\t\t\tbuildConfigField \"String\", \"BASE_URL\", '\"https://www.cc.bit.admin.ch/app/wallet/v1/\"'\n\t\t\tbuildConfigField \"String\", \"BASE_URL_DELIVERY\", '\"https://covidcertificate-app.bit.admin.ch/app/delivery/v1/\"'\n\t\t\tbuildConfigField \"String\", \"BASE_URL_TRANSFORMATION\", '\"https://covidcertificate-app.bit.admin.ch/app/transform/v1/\"'\n\t\t\tbuildConfigField \"String\", \"SDK_APP_TOKEN\", '\"0795dc8b-d8d0-4313-abf2-510b12d50939\"'\n\t\t}\n\t}\n\n\tflavorDimensions \"version\"\n\n\tsigningConfigs {\n\t\trelease {\n\t\t\tstoreFile file(readPropertyWithDefault('keystoreFile', 'testKeystore'))\n\t\t\tstorePassword readProperty('keystorePassword')\n\t\t\tkeyAlias readPropertyWithDefault('keyAlias', 'keyAlias')\n\t\t\tkeyPassword readProperty('keyAliasPassword')\n\t\t}\n\t}\n\n\tbuildTypes {\n\t\trelease {\n\t\t\tminifyEnabled false\n\t\t\tproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n\t\t\tsigningConfig signingConfigs.release\n\t\t}\n\t\tdebug {\n\t\t\tminifyEnabled false\n\t\t\tproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n\t\t\tsigningConfig signingConfigs.release\n\t\t}\n\t}\n\n\tcompileOptions {\n\t\tcoreLibraryDesugaringEnabled true\n\n\t\tsourceCompatibility JavaVersion.VERSION_1_8\n\t\ttargetCompatibility JavaVersion.VERSION_1_8\n\t}\n\n\tkotlinOptions {\n\t\tjvmTarget = '1.8'\n\t}\n\n\tbuildFeatures {\n\t\tviewBinding true\n\t}\n}\n\nsonarqube {\n\tproperties {\n\t\tproperty \"sonar.projectName\", \"COVID Certificate App Android\"\n\t\tproperty \"sonar.projectKey\", \"covidcertificate-android\"\n\t\tproperty \"sonar.organization\", \"admin-ch\"\n\t\tproperty \"sonar.host.url\", \"https://sonarcloud.io\"\n\t}\n}\n\ndependencies {\n\tandroidTestImplementation 'androidx.test:rules:1.4.1-alpha03'\n\tandroidTestImplementation 'androidx.test.espresso:espresso-contrib:3.5.0-alpha03'\n\tcoreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'\n\n\timplementation 'com.google.android.material:material:1.5.0'\n\timplementation project(':common')\n\n\timplementation 'androidx.core:core-ktx:1.7.0'\n\timplementation 'androidx.appcompat:appcompat:1.4.1'\n\timplementation 'androidx.constraintlayout:constraintlayout:2.1.3'\n\timplementation 'androidx.fragment:fragment-ktx:1.4.0'\n\timplementation 'androidx.lifecycle:lifecycle-process:2.4.0'\n\timplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'\n\timplementation 'androidx.viewpager2:viewpager2:1.0.0'\n\timplementation 'androidx.security:security-crypto:1.0.0'\n\timplementation 'androidx.work:work-runtime-ktx:2.7.1'\n\n\timplementation 'com.squareup.retrofit2:retrofit:2.9.0'\n\timplementation 'com.squareup.retrofit2:converter-moshi:2.9.0'\n\timplementation 'com.squareup.okhttp3:logging-interceptor:4.9.1'\n\timplementation 'com.squareup.moshi:moshi:1.13.0'\n\tksp 'com.squareup.moshi:moshi-kotlin-codegen:1.13.0'\n\n\ttestImplementation 'junit:junit:4.13.2'\n\tandroidTestImplementation 'androidx.test.ext:junit:1.1.3'\n\tandroidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'\n\tandroidTestImplementation 'androidx.test:runner:1.4.0'\n\tandroidTestUtil 'androidx.test:orchestrator:1.4.1'\n}"
  },
  {
    "path": "wallet/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile"
  },
  {
    "path": "wallet/src/abn/assets/faq/config.json",
    "content": "{\n  \"forceUpdate\": false,\n  \"infoBox\": null,\n  \"questions\": {\n    \"de\": {\n      \"faqTitle\": \"Was sind Covid-Zertifikate?\",\n      \"faqSubTitle\": \"Das Covid-Zertifikat bietet die Möglichkeit, eine Covid-19-Impfung, eine durchgemachte Erkrankung oder ein negatives Testergebnis fälschungssicher zu dokumentieren.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wann und wo kann ich ein Covid-Zertifikat erhalten?\",\n          \"text\": \"Ein Covid-Zertifikat können Sie nach einer Covid-19-Impfung, nach einer durchgemachten Erkrankung oder nach einem negativen Testergebnis erhalten. Das Zertifikat stellt Ihnen in der Regel das Gesundheitsfachpersonal vor Ort auf Anfrage aus.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie erhalte ich nach einer durchgemachten Covid-19-Erkrankung ein Covid-Zertifikat?\",\n          \"text\": \"Je nach Kanton wird Ihnen das Covid-Zertifikat teilweise direkt von der Teststelle oder dem Labor ausgestellt, in dem Ihr positives Testresultat festgestellt wurde. Falls dies nicht der Fall ist, können Sie nachträglich online über die Webseite der «Nationale Antragsstelle Covid-Zertifikat» ein Covid-Zertifikat beantragen. Der Antrag wird dort von der zuständigen kantonalen Behörde bearbeitet. Die Webseite der «Nationale Antragsstelle Covid-Zertifikat» finden Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Nationale Antragsstelle Covid-Zertifikat (admin.ch)\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Wie kann ich ein Covid-Zertifikat vorweisen?\",\n          \"text\": \"Sie können Ihr Covid-Zertifikat in Papierform vorweisen oder Sie benutzen die «COVID Certificate»-App, um Zertifikate in der App zu speichern und direkt aus der App vorzuweisen. \\n\\nBeachten Sie, dass Sie in jedem Fall auch noch ein Ausweisdokument vorweisen müssen.\\nIn einigen Ländern wird eine ausgedruckte Version des Zertifikats verlangt und das elektronische Zertifikat nicht akzeptiert. Führen Sie auf Reisen daher stets auch die ausgedruckte Version mit.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie lange ist das Covid-Zertifikat gültig?\",\n          \"text\": \"In der Schweiz wurde die Zertifikatspflicht im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Im Ausland gelten jeweils die Gültigkeitsregeln des entsprechenden Landes. Informieren Sie sich kurz vor Ihrer Abreise auf der Webseite der Behörden Ihres Transit- oder Ziellandes, ob das Land noch zertifikatsbasierte Massnahmen hat und welche falls ja, welche Gültigkeitsdauern für Ihr Zielland festgelegt sind. Hilfreiche Webseite bei Auslandsreisen:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/de\"\n        },\n        {\n          \"title\": \"Wo sind meine Daten gespeichert?\",\n          \"text\": \"Ihre Zertifikatsdaten werden nicht in einem zentralen System des Bundes gespeichert, sondern befinden sich nur lokal auf Ihrem Mobilgerät, respektive auf dem Covid-Zertifikat in Papierform.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie werden Missbrauch und Fälschung verhindert?\",\n          \"text\": \"Der QR-Code auf dem Covid-Zertifikat enthält eine elektronische Signatur. Die Signatur ist ein wichtiges Sicherheitsmerkmal und macht das Covid-Zertifikat fälschungssicher. Das Covid-Zertifikat ist zudem nur in Kombination mit einem Ausweisdokument gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was passiert, wenn ich mein Covid-Zertifikat verliere?\",\n          \"text\": \"Ihr Covid-Zertifikat wird in keinem zentralen System des Bundes gespeichert. Bewahren Sie das Covid-Zertifikat auf Papier und/oder als PDF deshalb sorgfältig auf. Bei Verlust und Bedarf nach einem Einsatz kann für die Neuausstellung durch die Gesundheitseinrichtungen (z. B. der Test- oder Impf-stelle) eine Gebühr erhoben werden. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist das Zertifikat Light?\",\n          \"text\": \"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zur Nutzung in der Schweiz zu generieren. Das «Zertifikat Light» bestätigt das Vorliegen eines gültigen Covid-Zertifikats, ohne selbst Gesundheitsdaten zu enthalten. \\n\\nDiese datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Covid-Zertifikategewisse Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung enthalten, die auch ausgelesen werden können. Mittels dem «Zertifikat Light» wird dies verhindert.\\n\\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von 24 Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der 24 Stunden benötigt, kann das «Zertifikat Light» einfach deaktiviert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"What are COVID certificates?\",\n      \"faqSubTitle\": \"The COVID certificate makes it possible to document a COVID-19 vaccination, recovery from the virus or a negative test result in a forgery-proof manner.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"When and where can I get a COVID certificate?\",\n          \"text\": \"You can get a COVID certificate after a COVID-19 vaccination, after you have recovered from the virus, or after you have tested negative. The certificate is generally issued upon request by health care professionals on site.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How do I get a COVID certificate after I have recovered from COVID-19?\",\n          \"text\": \"Depending on the canton, the COVID certificate will, in some cases, be sent to you directly by the test centre or by the laboratory that determined your positive test result. If this is not the case, you can subsequently apply online for a COVID certificate via the “National COVID certificate application platform”. The application will be processed there by the competent cantonal authority. You will find the “National COVID certificate application platform” here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"National COVID certificate application platform\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"How can I present a COVID certificate?\",\n          \"text\": \"You can present your COVID certificate in paper form, or you can use the COVID Certificate app to save certificates in the dedicated app and present them directly from the app.\\n\\nPlease note that you will also need to show an identification document (passport or ID card) in either case. A number of countries require a printed version of the certificate and will not accept the electronic certificate. You should therefore always take the printed version with you when travelling.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How long is the COVID certificate valid?\",\n          \"text\": \"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. Abroad, the validity rules of the country in question apply. Shortly before departing you should check the authorities’ website for your transit or destination country to see whether certificate-based measures are still in force and, if so, which validity periods apply for your destination country. Helpful website for travel abroad:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/en/\"\n        },\n        {\n          \"title\": \"Where is my data stored?\",\n          \"text\": \"Your certificate data is not stored in a central government system, but only locally on your mobile device or on the paper COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How are misuse and forgery prevented?\",\n          \"text\": \"The COVID certificate QR code contains an electronic signature. This is an important security feature and makes the COVID certificate forgery-proof. Moreover, the COVID certificate is valid only in combination with an identification document (passport or ID card).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What happens if I lose my COVID certificate?\",\n          \"text\": \"Your COVID certificate is not stored in any central government system. Therefore, keep your paper and/or PDF COVID certificate in a safe place. If you lose your certificate and need to replace it, a fee may be charged for its reissue by a health care facility (e.g. the test or vaccination centre).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is the 'certificate light'\",\n          \"text\": \"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. The 'certificate light' confirms that the holder has a valid COVID certificate but does not itself contain any health-related data. \\n\\nThis alternative to the COVID certificate which contains minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as COVID certificates contain certain health-related data such as the vaccine administered or the date of vaccination, which can also be seen. The 'certificate light' prevents this.\\n\\nThe 'certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons, the 'certificate light' is only valid for 24 hours and must then be reactivated. If you need to use the normal certificate before the end of the 24-hour period, you can simply deactivate the 'certificate light'.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Le certificat COVID en bref\",\n      \"faqSubTitle\": \"Le certificat COVID atteste de manière infalsifiable une vaccination contre le COVID-19, une guérison ou un résultat de test négatif.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Quand et où puis-je obtenir un certificat COVID?\",\n          \"text\": \"Vous pouvez obtenir le certificat COVID si vous êtes vaccinés contre le COVID-19, si vous avez guéri de la maladie ou si vous présentez un résultat de test négatif. En général, le certificat est délivré sur demande, par les professionnels de la santé présents sur le site.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment puis-je obtenir un certificat COVID après avoir guéri?\",\n          \"text\": \"En fonction de votre canton, le certificat COVID vous sera délivré soit directement par le lieu de test soit par le laboratoire qui a confirmé votre résultat de test positif. Si tel n’est pas le cas, vous pouvez demander votre certificat après coup, en ligne via la « Plateforme nationale des demandes pour le certificat COVID ». Votre demande y sera traitée par les autorités cantonales compétentes. Lien :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Plateforme nationale de demandes pour le certificat COVID\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Par quel moyen puis-je présenter un certificat COVID?\",\n          \"text\": \"Vous pouvez présenter votre certificat COVID sur papier ou au moyen de l’app de stockage créée à cet effet. Vous êtes libre de choisir l’une ou l’autre solution.\\n\\nDans tous les cas, vous devez aussi présenter une pièce d’identité sur demande. Dans certains pays, une version imprimée du certificat est exigée, et le certificat électronique n’est pas accepté. Nous vous conseillons donc de vous munir de la version imprimée lorsque vous voyagez.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quelle est la durée de validité du certificat COVID ?\",\n          \"text\": \"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. À l’étranger, les règles de validité du pays concerné s’appliquent. Vérifiez peu avant votre départ sur le site Internet des autorités de votre pays de transit ou de destination si des mesures impliquant l’utilisation d’un certificat y sont appliquées et si c’est le cas, quelles règles de validité y sont appliquées.  Site Internet utile pour les voyages à l’étranger :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/fr/\"\n        },\n        {\n          \"title\": \"Où mes données sont-elles stockées?\",\n          \"text\": \"Les données de votre certificat ne sont pas stockées dans un système central de la Confédération, mais sont sauvegardées localement, sur votre appareil mobile ou sur le certificat papier.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment prévient-on les abus et les falsifications?\",\n          \"text\": \"Le code QR figurant sur le certificat COVID contient une signature électronique. Celle-ci est une caractéristique de sécurité importante qui rend le certificat infalsifiable. En outre, le certificat COVID n'est valable que sur présentation d'une pièce d'identité.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Et si je perds mon certificat COVID?\",\n          \"text\": \"Votre certificat COVID n'est pas stocké dans un système central de la Confédération. Par conséquent, nous vous recommandons de le conserver sur papier ou au format PDF dans un endroit sûr. En cas de perte ou de remplacement, le paiement d’un émolument peut être exigé pour l’établissement d’un nouveau document par les institutions sanitaires (lieu de test ou de vaccination).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu’est-ce que le certificat light ?\",\n          \"text\": \"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Le certificat « light » confirme que le certificat présenté est valide, sans contenir lui-même des données sur la santé.\\n\\nCette alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, les certificats COVID contiennent certaines données sur la santé (p. ex. le type de vaccin et la date de la vaccination) qui peuvent être lues par des tiers. Le certificat « light » empêche tout abus de ce genre.\\n\\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant 24 heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Cos'è il certificato COVID?\",\n      \"faqSubTitle\": \"Il certificato COVID offre la possibilità di provare in modo non falsificabile l'avvenuta vaccinazione, la guarigione o un risultato negativo al test.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Quando e dove posso ottenere un certificato COVID?\",\n          \"text\": \"Può ricevere un certificato COVID in seguito alla vaccinazione anti-COVID-19, all'avvenuta guarigione o a un risultato negativo al test. Normalmente, il certificato è rilasciato su richiesta dal personale medico specializzato presso le strutture sanitarie.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come posso ottenere un certificato COVID dopo essere guarito?\",\n          \"text\": \"A seconda del Cantone, il certificato COVID viene rilasciato in parte direttamente dalla struttura che ha effettuato il test o dal laboratorio in cui è stato accertato il risultato positivo al test. Qualora così non fosse, può richiedere a posteriori online un certificato COVID tramite il sito web dell’«organo nazionale per la richiesta di certificati COVID». La richiesta sarà evasa in tale sede dall’autorità cantonale competente. Il sito web dell’«organo nazionale per la richiesta di certificati COVID» si trova qui:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Organo nazionale per la richiesta di certificati COVID\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Come posso mostrare il certificato COVID?\",\n          \"text\": \"Può mostrare il Suo certificato COVID in formato cartaceo oppure salvarlo e presentarlo utilizzando l’app «COVID Certificate». \\nIn entrambi i casi, dovrà mostrare anche un documento di legittimazione.\\nIn alcuni Paesi si richiede la versione cartacea del certificato e non si accetta quello elettronico. Porti quindi sempre con sé anche la versione cartacea quando viaggia.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Fino a quando è valido il certificato COVID?\",\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. All’estero si applicano le regole di validità del rispettivo Paese. Pertanto, prima di partire, si informi consultando il sito web delle autorità del Paese di transito o di destinazione se nel Paese vigono ancora misure relative al certificato e, in caso affermativo, qual è la loro durata di validità. Sito web utile per viaggi all’estero:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/it/\"\n        },\n        {\n          \"title\": \"Dove vengono salvati i miei dati?\",\n          \"text\": \"I dati del Suo certificato non vengono salvati in un sistema centrale della Confederazione, ma si trovano solo localmente sul Suo dispositivo mobile, rispettivamente sul certificato COVID in formato cartaceo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come vengono impediti l'uso improprio e le falsificazioni?\",\n          \"text\": \"Il codice QR sul certificato COVID contiene una firma elettronica. Questa firma è un elemento di sicurezza importante e garantisce che il certificato non possa essere falsificato. Inoltre, il certificato COVID è valido solo con un documento di legittimazione.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa succede se perdo il mio certificato COVID su carta?\",\n          \"text\": \"Il Suo certificato COVID non è salvato su un sistema centrale della Confederazione Conservi quindi con cura il certificato COVID su carta e/o in formato PDF. In caso di smarrimento e sostituzione, per il nuovo rilascio da parte delle strutture sanitarie (p. es. la struttura in cui è stato effettuato il test o è stata somministrata la vaccinazione) potrà essere riscosso un emolumento.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Che cos'è il certificato light?\",\n          \"text\": \"L’app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo da utilizzare in Svizzera. Il certificato light conferma l’esistenza di un certificato valido, senza contenere dati sanitari.\\n\\nQuesto certificato con dati ridotti al minimo è un’alternativa al certificato COVID ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché i certificati COVID contengono determinati dati sanitari, come per esempio il vaccino somministrato o la data della vaccinazione, che possono anche essere visualizzati e dunque letti. Ciò può essere evitato mediante il certificato light.\\n\\nIl certificato light è disponibile unicamente in versione elettronica nell’app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il certificato light ha una validità massima di 24 ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le 24 ore, il certificato light può essere disattivato semplicemente.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Tge è il certificat COVID?\",\n      \"faqSubTitle\": \"Il certificat COVID permetta da documentar – en moda nunfalsifitgabla – ina vaccinaziun cunter COVID-19, ina infecziun u in resultat negativ dal test.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Cura e co obtegn jau in certificat COVID?\",\n          \"text\": \"In certificat COVID survegnis Vus suenter ina vaccinaziun cumpletta cunter COVID-19, suenter ina infecziun u suenter in resultat negativ dal test. Il certificat vegn per il solit emess – sin dumonda – dal persunal spezialisà da sanadad al lieu. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co obtegn jau in certificat COVID suenter ina infecziun cun COVID-19?\",\n          \"text\": \"Tut tenor il chantun vegn il certificat COVID per part emess directamain dal post da test u dal labor, nua che Voss test positiv è vegnì constatà. Sche quai n'è betg il cas, pudais Vus dumandar pli tard online in certificat COVID sur la pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID». Là vegn la dumonda elavurada da l'autoritad chantunala cumpetenta. La pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID» chattais Vus qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Plattafurma naziunala da dumondas per il certificat COVID (admin.ch)\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Co poss jau preschentar in certificat COVID?\",\n          \"text\": \"Vus pudais preschentar Voss certificat COVID sin palpiri u sur l'app «COVID Certificate». L'app permetta d'arcunar certificats e d'als preschentar directamain sin il telefonin. \\nResguardai per plaschair che Vus stuais en mintga cas preschentar er anc in document da legitimaziun.\\nEn intgins pajais vegn pretendida ina versiun stampada dal certificat ed il certificat electronic na vegn betg acceptà. Sin viadis duessas Vus perquai adina avair cun Vus er la versiun stampada.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quant ditg è il certificat COVID valaivel?\",\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. A l'exteriur valan mintgamai las reglas da valaivladad dal pajais respectiv. As infurmai curt avant Vossa partenza sur la pagina d'internet da las autoritads da Voss pajais da transit u da destinaziun, sch'i valan en il pajais anc mesiras sin basa dal certificat, e sche gea, tge duradas da valaivladad che Voss pajais da destinaziun ha fixà. Pagina d'internet utila per viadis a l'exteriur:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/de\"\n        },\n        {\n          \"title\": \"Nua vegnan arcunadas mias datas?\",\n          \"text\": \"Las datas da Voss certificat na vegnan betg arcunadas en in sistem central da la Confederaziun, mabain mo localmain sin Voss telefonin resp. sin il certificat COVID sin palpiri.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co vegnan impedids abus e falsificaziuns?\",\n          \"text\": \"Il code QR sin Voss certificat COVID cuntegna ina signatura digitala. La signatura è ina impurtanta caracteristica da segirezza che impedescha da falsifitgar il certificat COVID. Il certificat COVID è ultra da quai valaivel mo en cumbinaziun cun in document da legitimaziun.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge capita, sche jau perd mes certificat COVID?\",\n          \"text\": \"Voss certificat COVID na vegn betg arcunà en in sistem central da la Confederaziun. Tegnai perquai en salv cun quità il certificat COVID sin palpiri e/u sco PDF. Sche Vus avais pers il certificat u sche Vus duvrais in certificat substitutiv, po l'instituziun da sanadad (p.ex. il post da test u da vaccinaziun) pretender ina taxa per emetter in nov certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in certificat light?\",\n          \"text\": \"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Il «certificat light» conferma ch'igl è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad. \\n\\nQuest certificat cun ina quantitad minimala da datas è vegnì sviluppà sco alternativa al certificat COVID sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai ch'ils certificats COVID cuntegnan tschertas datas da sanadad ch'èn visiblas, sco per exempel il vaccin u la data da la vaccinaziun. Cun agid dal «certificat light» vegn quai impedì.\\n\\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da 24 uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà avant che las 24  uras èn passadas, po il «certificat light» simplamain vegnir deactivà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"works\": {\n    \"de\": {\n      \"faqTitle\": \"Wie funktioniert \\ndie App?\",\n      \"faqSubTitle\": \"Mit der COVID Certificate App können Sie Covid-Zertifikate einfach und sicher auf Ihrem Mobilgerät abspeichern und vorweisen.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie kann ich ein Covid-Zertifikat zur App hinzufügen?\",\n          \"text\": \"Um ein Covid-Zertifikat zur App hinzuzufügen, benötigen Sie das Ihnen ausgestellte Originalzertifikat auf Papier oder als PDF-Dokument. Den darauf abgebildeten QR-Code können Sie mit der COVID Certificate App scannen und hinzufügen. Anschliessend erscheint das Covid-Zertifikat direkt in der App.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können auch mehrere Covid-Zertifikate hinzugefügt werden?\",\n          \"text\": \"Ja das ist möglich. So können Sie z. B. alle Covid-Zertifikate von Familienangehörigen in Ihrer App speichern. Auch in diesem Fall gilt: Das Covid-Zertifikat ist nur in Kombination mit einem Ausweisdokument des Zertifikatsinhabers / der Zertifikatsinhaberin gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist ein Transfer-Code?\",\n          \"text\": \"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat, z. B. nach einem Covid-Test, direkt in die App geliefert.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wo sehe ich, ob mein Covid-Zertifikat gültig ist?\",\n          \"text\": \"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Deshalb wird in der App das Feld «Gültigkeit in der Schweiz» nicht mehr dargestellt. Stattdessen zeigt sie den Zeitpunkt der Impfung bzw. des Tests an. \\n\\nEs wird auch angezeigt, wie viele Tage eine Impfung bzw. ein Test her ist. So können Sie einfacher feststellen, ob Ihr Zertifikat den Gültigkeitsregeln Ihres Ziellandes entspricht (falls das Land noch ein Covid-Zertifikat voraussetzt). Im Ausland gelten immer die Regeln des entsprechenden Landes.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Kann ich die App auch offline verwenden?\",\n          \"text\": \"Sie können die App ohne eine Internetverbindung verwenden. Auch im Offline-Modus können Zertifikate vorgewiesen und von den Prüfern gescannt und verifiziert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie sind meine Daten geschützt?\",\n          \"text\": \"Ihre persönlichen Daten werden in keinem zentralen System gespeichert, sondern befinden sich ausschliesslich bei Ihnen lokal auf dem Mobilgerät, respektive im QR-Code auf dem Covid-Zertifikat in Papierform.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Welche Daten sind im QR-Code enthalten?\",\n          \"text\": \"Der QR-Code enthält alle Informationen, die Sie auf Ihrem Covid-Zertifikat in Papierform im Klartext finden. Weiter befindet sich im QR-Code eine elektronische Signatur, mit der sich die Echtheit des Covid-Zertifikats überprüfen lässt. Dadurch wird das Covid-Zertifikat fälschungssicher.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Ich habe das Covid-Zertifikat ausschliesslich elektronisch in der App. Wie komme ich zum Zertifikat als PDF oder auf Papier?\",\n          \"text\": \"In der «COVID Certificate»-App finden Sie in der Detailansicht des elektronischen Covid-Zertifikats die Funktion «Exportieren». Damit können Sie ein PDF erstellen, dieses speichern und ausdrucken.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was muss ich tun, wenn ich das Covid-Zertifikat oder die App lösche?\",\n          \"text\": \"Sie können Ihr Covid-Zertifikat einfach wieder auf Ihrem Mobilgerät speichern. Laden Sie dazu die App erneut herunter und scannen Sie anschliessend den QR-Code auf Ihrem Covid-Zertifikat auf Papier oder als PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How the app works\",\n      \"faqSubTitle\": \"With the COVID Certificate app, you can easily and securely store and present COVID certificates on your mobile device.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"How can I add a COVID certificate to the app?\",\n          \"text\": \"To add a COVID certificate to the app, you need the original certificate issued to you on paper or as a PDF document. You can use the COVID certificate app to scan the QR code on the original and add it to the app. The COVID certificate will then appear directly in the app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can several COVID certificates be added?\",\n          \"text\": \"Yes, that is possible. For example, you can save the COVID certificates of all family members in your app. Also in this case, each COVID certificate is valid only in combination with an identification document (passport or ID card) of the certificate holder.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is a transfer code?\",\n          \"text\": \"The transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you receive your certificate (e.g. after a test) directly in the application.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Where can I see if my COVID certificate is valid?\",\n          \"text\": \"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. The “Validity in Switzerland” section is thus no longer displayed in the app. Instead, the time of the vaccination or test is shown. \\n\\nThe number of days that have elapsed since a vaccination or test is also shown. This makes it easier for you to determine whether your certificate complies with the validity rules of your destination country (if the country in question still requires a COVID certificate). When abroad, it is always the rules of the country in question that apply.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can I use the app offline?\",\n          \"text\": \"You can use the app without an internet connection, so you can still call up your certificates and present them for scanning and verification.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How is my data protected?\",\n          \"text\": \"Your personal data is not stored in a central system; instead, it can be found solely locally on the mobile device or in the QR code in the case of the paper COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What data is contained in the QR code?\",\n          \"text\": \"The QR code contains all the information that is found in plain text on your paper COVID certificate. The QR code also contains an electronic signature that can be used to check the authenticity of the COVID certificate. This makes the COVID certificate forgery-proof.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I only have my COVID certificate electronically in the app. How can I get the certificate as a PDF or on paper?\",\n          \"text\": \"In the detailed view of the electronic COVID certificate in the COVID Certificate app you’ll find the Export function. You can use this to generate, save and print a PDF\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What do I need to do if I delete the COVID certificate or the app?\",\n          \"text\": \"You can easily restore your COVID certificate on your mobile device. To do so, download the app again and then scan the QR code on your paper or PDF COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Comment l'app \\nfonctionne-t-elle?\",\n      \"faqSubTitle\": \"L'app vous permet de stocker des certificats COVID de manière simple et sûre sur votre appareil mobile et de les présenter au moyen de ce dernier.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment ajouter un certificat COVID à l'app?\",\n          \"text\": \"Pour ajouter un certificat COVID à l'app, vous avez besoin du certificat original qui vous a été délivré sur papier ou par voie électronique, au format PDF. Au moyen de l'app, vous pouvez scanner le code QR figurant sur ce document. Ensuite, le certificat COVID apparaît directement dans l'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je ajouter plusieurs certificats COVID?\",\n          \"text\": \"Oui. Vous pouvez par exemple stocker dans l'app les certificats COVID de tous les membres de votre famille. À noter également dans ce cas qu'un certificat COVID n'est valable que si son détenteur présente une pièce d'identité.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu'est-ce qu'un code de transfert ?\",\n          \"text\": \"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat (p. ex. après un test) directement dans l’application.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Où voir si mon certificat COVID est valable ?\",\n          \"text\": \"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. C’est pourquoi le champ « Validité en Suisse » n’est plus représenté dans l’application, qui indique par contre le nombre de jours écoulés depuis une vaccination ou un test. \\n\\nL’application indique aussi le nombre de jours écoulés depuis une vaccination ou un test. Vous pouvez ainsi vérifier plus facilement si votre certificat correspond aux règles de validité de votre pays de destination (au cas où ce pays exige encore un certificat COVID). À l’étranger, les règles en vigueur varient d’un pays à l’autre.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je également utiliser l’application hors ligne ?\",\n          \"text\": \"Oui, vous pouvez utiliser l’application sans connexion Internet. Les certificats peuvent aussi être présentés, scannés et vérifiés en mode hors ligne.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment mes données sont-elles protégées?\",\n          \"text\": \"Vos données personnelles ne sont pas stockées dans un système central, mais ne sont sauvegardées que localement, sur votre appareil mobile ou dans le code QR figurant sur le certificat papier.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que contient le code QR?\",\n          \"text\": \"Le code QR contient toutes les informations qui apparaissent en clair sur le certificat papier. En outre, il renferme une signature électronique qui permet de vérifier l'authenticité du certificat COVID. Par conséquent, le certificat COVID est infalsifiable.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Mon certificat COVID n’est disponible qu’au format électronique dans l’application. Comment puis-je obtenir mon certificat en PDF ou sur papier ?\",\n          \"text\": \"Dans l’application « COVID Certificate », vous trouvez la fonction « Exporter » dans la vue détaillée du certificat. Vous pouvez ainsi générer un PDF afin de le sauvegarder et de l’imprimer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Et si je supprime le certificat COVID ou l'app?\",\n          \"text\": \"Vous pouvez réenregistrer facilement votre certificat COVID sur votre appareil mobile. Il vous suffit de télécharger de nouveau l'app, puis de scanner le code QR figurant sur le certificat original, établi sur papier ou au format PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Come funziona \\nl'app?\",\n      \"faqSubTitle\": \"Con l'app COVID Certificate può salvare e mostrare i certificati COVID in modo semplice e sicuro sul Suo dispositivo mobile.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Come posso inserire un certificato COVID sulla app?\",\n          \"text\": \"Per inserire sull'app un certificato COVID serve il certificato originale rilasciatole su carta o in formato PDF. Utilizzando l'app COVID Certificate può aggiungere il certificato inquadrando il codice QR raffigurato sul certificato. In questo modo, il certificato COVID appare direttamente sull'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"È possibile aggiungere più certificati COVID?\",\n          \"text\": \"Sì, è possibile. Ad esempio, può salvare nella Sua app i certificati COVID dei suoi familiari. Anche in questo caso, il certificato COVID è valido solo con un documento di legittimazione del titolare.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cos'è un codice di trasferimento?\",\n          \"text\": \"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app, ad esempio dopo aver fatto un test COVID.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Dove posso verificare se il mio certificato COVID è valido?\",\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. Pertanto il campo «Validità in Svizzera» non è più visualizzato nell’app. Al suo posto si trova la data della vaccinazione o del test.\\n\\nViene anche visualizzato quanti giorni sono trascorsi da una vaccinazione o da un test. In tal modo può determinare più facilmente se il Suo certificato è conforme alle regole di validità del Paese di destinazione (qualora il Paese richiedesse ancora un certificato COVID). All’estero si applicano sempre le regole di validità del rispettivo Paese.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Posso utilizzare l’app anche offline?\",\n          \"text\": \"È possibile utilizzare l’app senza connessione Internet. I certificati possono essere presentati, nonché scansionati e verificati dagli addetti anche in modalità offline.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come sono protetti i miei dati?\",\n          \"text\": \"I Suoi dati personali non sono salvati in un sistema centrale ma unicamente sul Suo dispositivo mobile oppure nel codice QR indicato sul certificato COVID in formato cartaceo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali dati contiene il codice QR?\",\n          \"text\": \"Il codice QR contiene tutte le informazioni che trova nel testo del Suo certificato COVID in formato cartaceo. Nel codice QR si trova anche una firma elettronica che consente di verificare la validità del certificato COVID. La firma elettronica impedisce la falsificazione del certificato COVID.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Ho il certificato COVID esclusivamente in formato elettronico nell’app. Come posso ottenerne uno in formato PDF o cartaceo?\",\n          \"text\": \"Nella vista di dettaglio del certificato COVID elettronico dell’app «COVID Certificate» è disponibile la funzione «Esporta», con la quale è possibile creare un PDF, salvarlo e stamparlo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa devo fare se elimino il file contenente il certificato COVID o l'app?\",\n          \"text\": \"Può semplicemente risalvare il certificato COVID sul Suo dispositivo mobile. Per farlo, scarichi nuovamente l'app e poi scansioni il codice QR che trova sul Suo certificato COVID in formato cartaceo o PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Co funcziuna \\nl'app?\",\n      \"faqSubTitle\": \"Cun l'app COVID Certificate pudais Vus arcunar e preschentar en moda simpla e segira certificats COVID sin Voss telefonin.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Co poss jau agiuntar in certificat COVID a l'app?\",\n          \"text\": \"Per agiuntar in certificat COVID a l'app, duvrais Vus il certificat original ch'è vegnì emess per Vus sin palpiri u en furma da PDF. Cun l'app COVID Certificate pudais Vus alura scannar il code QR sin il certificat ed al agiuntar a l'app. Silsuenter cumpara il certificat COVID directamain en l'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon vegnir agiuntads er plirs certificats COVID?\",\n          \"text\": \"Gea, quai è pussaivel. Vus pudais p.ex. arcunar en Vossa app ils certificats COVID da tut Vossas confamigliaras e da tut Voss confamigliars. Er en quest cas vala: Il certificat COVID è valaivel mo en cumbinaziun cun in document da legitimaziun  da la possessura u dal possessur dal certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in code da transfer?\",\n          \"text\": \"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app, p.ex. suenter in test dal coronavirus.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Nua ves jau, sche mes certificat COVID è valaivel?\",\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. Sin il certificat COVID na vegn perquai betg pli mussà il champ «Valaivladad en Svizra». Empè da quai mussa l'app la data da la vaccinaziun resp. dal test. \\n\\nI vegn er mussà, avant quants dis ch'igl è vegnì fatg ina vaccinaziun resp. in test. Uschia èsi pli facil per Vus da constatar, sche Voss certificat correspunda a las reglas da valaivladad da Voss pajais da destinaziun (premess ch'il pajais pretenda anc in certificat Covid). A l'exteriur valan adina las reglas dal pajais respectiv. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Poss jau er duvrar l'app offline?\",\n          \"text\": \"Vus pudais duvrar l'app senza ina colliaziun cun l'internet. Er en il modus offline pon ils certificats vegnir preschentads sco er scannads e verifitgads da las controlladras e dals controlladers.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co vegnan protegidas mias datas?\",\n          \"text\": \"Vossas datas persunalas na vegnan betg arcunadas en in sistem central, mabain mo localmain sin Voss telefonin resp. en il code QR sin Voss certificat COVID en furma da palpiri.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge datas cuntegna il code QR?\",\n          \"text\": \"Il code QR cuntegna tut las infurmaziuns che Vus chattais sin Voss certificat COVID en furma da palpiri en text betg criptà. Plinavant sa chatta ina signatura digitala en il code QR. Cun quella po vegnir verifitgada l'autenticitad da Voss certificat COVID. Uschia na po il certificat COVID betg vegnir falsifitgà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Jau hai il certificat COVID mo en moda digitala en l'app. Co survegn jau il certificat sco PDF u sin palpiri?\",\n          \"text\": \"En la vista detagliada dal certificat COVID digital en l'app «COVID Certificate» chattais Vus la funcziun «Exportar». Uschia pudais Vus generar in PDF, l'arcunar ed al stampar.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge stoss jau far, sche jau stiz il certificat COVID u l'app?\",\n          \"text\": \"Vus pudais simplamain arcunar anc ina giada il certificat COVID sin Voss telefonin. Chargiai giu danovamain l’app e scannai alura il code QR sin Voss certificat COVID sin palpiri u en furma da PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"androidTransferCheckIntervalMs\": 7200000,\n  \"androidTransferCheckBackoffMs\": 30000,\n  \"timeshiftDetectionEnabled\": true,\n  \"transferQuestions\": {\n    \"de\": {\n      \"faqTitle\": \"Covid-Zertifikate direkt in die App geliefert\",\n      \"faqSubTitle\": \"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat, z. B. nach einem Covid-Test, direkt in die App geliefert.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wer bietet die Übermittlung per Transfer-Code an?\",\n          \"text\": \"Wenn Sie einen Covid-Test machen (PCR-Test oder Antigen-Schnelltest), kann der Transfer-Code zur schnellen Übermittlung von Covid-Zertifikaten zum Einsatz kommen.\\n\\nInformieren Sie sich bei Ihrem Testcenter, in der Apotheke oder bei Ihrem Arzt, ob die Übermittlung per Transfer-Code angeboten wird.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können Transfer-Codes auch zur Übermittlung von Impfzertifikaten verwendet werden?\",\n          \"text\": \"Aktuell ist die Übermittlung per Transfer-Code auf Covid-Tests ausgelegt. Wie Sie ein Covid-Zertifikat nach einer Impfung erhalten erfahren Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Weitere Informationen\",\n          \"linkUrl\": \"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"\n        },\n        {\n          \"title\": \"Wie funktioniert die Übermittlung per Transfer-Code?\",\n          \"text\": \"Falls die Stelle, die den Covid-Test durchführt, die Übermittlung per Transfer-Code anbietet, werden Sie bereits bei der Anmeldung oder der Testentnahme nach einem Transfer-Code gefragt.\\n\\nDen Transfer-Code können Sie in der «COVID Certificate»-App erstellen. Tippen Sie dazu auf dem Startbildschirm auf «Hinzufügen» resp. auf das «Plus»-Symbol unten rechts. Danach tippen Sie auf «Transfer-Code erstellen».\\n\\nDie App zeigt Ihnen einen 9-stelligen Code an. Diesen können Sie entweder bei der Anmeldung in ein Formular eintragen oder direkt bei der Testentnahme angeben.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Kann ich den Transfer-Code mehrmals benutzen?\",\n          \"text\": \"Nein, ein Transfer-Code kann nur einmal verwendet werden. Falls Sie mehrere Zertifikate z. B. von Familienangehörigen empfangen möchten, erstellen Sie bitte für jedes Zertifikat einen neuen Code.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"Receive COVID certificates directly in the app\",\n      \"faqSubTitle\": \"The transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you receive your certificate (e.g. after a test) directly in the application.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Who offers the transmission of the COVID certificate by transfer code?\",\n          \"text\": \"If you perform a COVID test (PCR test or rapid antigen test), the transfer code can be used to quickly transmit the COVID certificate.\\n\\nAsk your test centre, pharmacy or doctor if this option is available.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can the transfer codes also be used for the transmission of vaccination certificates?\",\n          \"text\": \"Currently, the transmission of the certificate by transfer code is reserved for COVID tests. To find out how to obtain a COVID certificate after vaccination, click here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Further information\",\n          \"linkUrl\": \"https://foph-coronavirus.ch/certificate/how-do-i-get-a-covid-certificate-and-how-do-i-use-it/\"\n        },\n        {\n          \"title\": \"How does the transmission of the certificate by transfer code work?\",\n          \"text\": \"If the test centre offers to transmit the certificate by transfer code, you will be asked for a code at the time of registration or testing.\\n\\nYou can create the transfer code in the \\\"COVID Certificate\\\" application: press \\\"Add\\\" on the home screen or the \\\"More\\\" symbol at the bottom right, then \\\"Create a transfer code\\\".\\n\\nThe application will show you a 9-character code, which you can either enter in a form when you register or pass on directly during the test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can I use the same transfer code more than once?\",\n          \"text\": \"No, a transfer code can only be used once. If you wish to obtain several certificates (e.g. for your relatives), please create a new code for each certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Recevez les certificats COVID directement dans l'application\",\n      \"faqSubTitle\": \"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat (p. ex. après un test) directement dans l’application.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Qui propose la transmission du certificat COVID par code de transfert ?\",\n          \"text\": \"Si vous effectuez un test COVID (test PCR ou test rapide antigénique), le code de transfert peut être utilisé pour transmettre rapidement le certificat COVID.\\n\\nRenseignez-vous auprès de votre centre de test, de votre pharmacie ou de votre médecin pour savoir si cette option est proposée.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Les codes de transfert peuvent-ils aussi être utilisés pour la transmission de certificats de vaccination ?\",\n          \"text\": \"Actuellement, la transmission du certificat par code de transfert est réservée aux tests COVID. Pour savoir comment obtenir un certificat COVID après une vaccination, cliquez ici :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Informations supplémentaires\",\n          \"linkUrl\": \"https://ofsp-coronavirus.ch/certificat/comment-obtenir-le-certificat-covid-et-comment-men-servir/\"\n        },\n        {\n          \"title\": \"Comment fonctionne la transmission du certificat par code de transfert ?\",\n          \"text\": \"Si le centre de test propose de transmettre le certificat par code de transfert, un code vous sera demandé au moment de l’inscription ou du test.\\n\\nVous pouvez créer le code de transfert dans l’application « COVID Certificate » : appuyez sur « Ajouter » sur l’écran d’accueil ou sur le symbole « Plus » en bas à droite, puis sur « Créer un code de transfert ».\\n\\nL’application vous montre un code à 9 caractères, que vous pouvez soit inscrire dans un formulaire lors de l’inscription, soit transmettre directement lors du test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je utiliser plusieurs fois le même code de transfert ?\",\n          \"text\": \"Non, un code de transfert ne peut être utilisé qu’une seule fois. Si vous souhaitez obtenir plusieurs certificats (p. ex. pour vos proches), veuillez créer un nouveau code pour chaque certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Ricevere i certificati COVID direttamente nell’app\",\n      \"faqSubTitle\": \"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app, ad esempio dopo aver fatto un test COVID.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Chi offre la trasmissione mediante codice di trasferimento?\",\n          \"text\": \"Quando fai un test COVID (test PCR o test antigenico rapido), è possibile impiegare il codice di trasferimento per la trasmissione rapida dei certificati COVID.\\n\\nChiedi al centro di test, alla farmacia o al medico se offrono la trasmissione mediante codice di trasferimento.\\n\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I codici di trasferimento possono essere impiegati anche per trasmettere i certificati di vaccinazione?\",\n          \"text\": \"Attualmente la trasmissione mediante codice di trasferimento funziona solo per i test COVID. Qui trovi maggiori informazioni su come ottenere un certificato COVID dopo una vaccinazione:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriori informazioni\",\n          \"linkUrl\": \"https://ufsp-coronavirus.ch/certificato/come-si-ottiene-il-certificato-covid-e-come-si-impiega/\"\n        },\n        {\n          \"title\": \"Come funziona la trasmissione mediante codice di trasferimento?\",\n          \"text\": \"Se il servizio che effettua il test COVID offre la trasmissione mediante codice di trasferimento, te ne chiede uno già al momento della prenotazione o dell’esecuzione del test.\\n\\nPuoi creare il codice di trasferimento nell’app «COVID Certificate» toccando il pulsante «Aggiungi» nella schermata iniziale o il simbolo «Più» in basso a destra. Poi tocca «Crea codice di trasferimento».\\n\\nL’app visualizza un codice a 9 cifre, che puoi inserire nel modulo di prenotazione o fornire direttamente al momento dell’esecuzione del test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Posso utilizzare lo stesso codice di trasferimento più volte?\",\n          \"text\": \"No, un codice di trasferimento può essere utilizzato una volta sola. Se desideri ricevere più di un certificato, per esempio i certificati dei tuoi familiari, crea un nuovo codice per ciascun certificato.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Certificats COVID furnids directamain en l'app\",\n      \"faqSubTitle\": \"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app, p.ex. suenter in test dal coronavirus.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Tgi porscha la transmissiun cun in code da transfer?\",\n          \"text\": \"Sche Vus faschais in test dal coronavirus (test da PCR u test svelt d'antigens), po il code da transfer vegnir en funcziun per transmetter sveltamain ils certificats COVID.\\n\\nAs infurmai tar Voss center da test, en l'apoteca u tar Vossa media u Voss medi, sche la transmissiun cun in code da transfer è pussaivla.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon ils codes da transfer vegnir duvrads er per transmetter certificats da vaccinaziun?\",\n          \"text\": \"Actualmain è la transmissiun cun in code da transfer concepì per tests dal coronavirus. Co che Vus survegnis in certificat COVID suenter ina vaccinaziun, vegnis Vus a savair qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriuras infurmaziuns\",\n          \"linkUrl\": \"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"\n        },\n        {\n          \"title\": \"Co funcziuna la transmissiun cun in code da transfer?\",\n          \"text\": \"En cas ch'il post che fa il test dal coronavirus porscha la transmissiun cun in code da transfer, vegnis Vus supplitgà d'inditgar Voss code da transfer gia tar l'annunzia u a chaschun da la prelevaziun dal test.\\n\\nIl code da transfer pudais Vus crear en l'app «COVID Certificate». Smatgai sin la pagina iniziala sin «Agiuntar» resp. sin il simbol «+» sutvart a dretga. Smatgai alura sin «Crear in code da transfer».\\n\\nL'app As mussa in code da 9 cifras. Quest code pudais Vus u endatar tar l'annunzia en in formular u inditgar directamain a chaschun da la prelevaziun dal test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Poss jau duvrar pliras giadas il medem code da transfer?\",\n          \"text\": \"Na, in code da transfer po vegnir duvrà mo ina giada. En cas che Vus vulais retschaiver plirs certificats, per exempel da confamigliaras u confamigliars, creai per plaschair per mintga certificat in nov code.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"transferWorks\": {\n    \"de\": {\n      \"faqTitle\": \"So funktioniert der Transfer\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"Die App prüft regelmässig, ob ein Covid-Zertifikat für Ihren Transfer-Code verfügbar ist.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Sobald das Covid-Zertifikat verfügbar ist, erscheint es in der App. Wenn Sie Mitteilungen aktiviert haben, werden Sie von der App benachrichtigt.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Nach 30 Tagen läuft der Transfer-Code ab. Danach wartet die App noch für weitere 72h auf einen möglichen Transfer, bevor der Transfer-Code ungültig wird.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie sind meine Daten beim Transfer geschützt?\",\n          \"text\": \"Für den Transfer wird Ihr Covid-Zertifikat verschlüsselt bereitgestellt. Der Transfer-Code stellt sicher, dass nur Ihre App das Covid-Zertifikat empfangen kann. Unmittelbar nach dem Transfer werden die Daten wieder vom Server gelöscht.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was kann ich tun, wenn das Zertifikat nicht ankommt?\",\n          \"text\": \"Sobald das Zertifikat vom Labor oder Testcenter generiert wurde, steht es zum Transfer zur Verfügung. Stellen Sie sicher, dass Ihr Smartphone mit dem Internet verbunden ist, um Zertifikate empfangen zu können.\\n\\nSollte ihr Covid-Zertifikat dennoch nicht eintreffen, fragen Sie bei der Stelle nach, die den Test durchgeführt hat (Testcenter, Apotheke, Ärztin / Arzt).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was passiert bei einem positiven Testresultat?\",\n          \"text\": \"Bei einem positiven Antigen-Schnelltest erhalten Sie vom Labor kein Covid-Zertifikat. \\n\\nBei einem positiven PCR-Test erhalten Sie ein Covid-Zertifikat für Genesene. Es ist ab dem 11. Tag nach der Testentnahme gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How does the transfer work?\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"The application regularly checks whether a COVID certificate is available for your transfer code.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"As soon as the COVID certificate is available, it appears in the application. If you have activated notifications, you will receive a message from the application.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"The transfer code expires after 30 days. After this period, the application waits for any further transfers for 72 hours. After that, the transfer code is no longer valid.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"How is my data secured during the transfer?\",\n          \"text\": \"For the transfer, your COVID certificate is delivered in encrypted form. The transfer code ensures that only your application can receive the certificate. The data is deleted from the server immediately after the transfer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What if my certificate does not arrive in the application?\",\n          \"text\": \"Once the certificate has been generated by the laboratory or test centre, it is available for transfer. Make sure that your smartphone is connected to the Internet to receive certificates.\\n\\nIf you still do not receive your certificate, contact the place where you performed the test (centre, pharmacy, doctor's practice).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What happens if I test positive?\",\n          \"text\": \"In case of a positive rapid antigen test, you will not receive a COVID certificate from the laboratory.\\n\\nIn case of a positive PCR test, you will receive a COVID certificate for cured persons, valid from the 11th day after the test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Comment fonctionne le transfert ?\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L’application vérifie régulièrement si un certificat COVID est disponible pour votre code de transfert.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Dès que le certificat COVID est disponible, il apparaît dans l’application. Si vous avez activé les notifications, vous recevrez un message de l’application.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Le code de transfert expire après 30 jours. Une fois ce délai passé, l’application attend tout autre transfert pendant 72 h. Ensuite, le code de transfert n’est plus valable.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment mes données sont-elles sécurisées lors du transfert ?\",\n          \"text\": \"Pour le transfert, votre certificat COVID est fourni sous forme cryptée. Le code de transfert garantit que seule votre application peut recevoir le certificat. Les données sont supprimées du serveur immédiatement après le transfert.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que faire si mon certificat n’arrive pas dans l’application ?\",\n          \"text\": \"Dès que le certificat a été généré par le laboratoire ou le centre de test, il est disponible pour le transfert. Vérifiez que votre smartphone est connecté à Internet pour recevoir des certificats.\\n\\nSi malgré tout vous ne recevez pas votre certificat, adressez-vous au lieu où vous avez effectué le test (centre, pharmacie, cabinet médical).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que se passe-t-il en cas de test positif ?\",\n          \"text\": \"En cas de test rapide antigénique positif, vous ne recevrez pas de certificat COVID du laboratoire.\\n\\nEn cas de test PCR positif, vous recevrez un certificat COVID pour personnes guéries, valable à partir du 11e jour suivant le test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Il trasferimento funziona così\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L’app verifica periodicamente se è disponibile un certificato COVID per il tuo codice di trasferimento.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Non appena il certificato COVID è disponibile, viene visualizzato nell’app. Se hai attivato le notifiche, ne riceverai una dall’app.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Il codice di trasferimento scade dopo 30 giorni. Poi l’app attende un eventuale trasferimento per altre 72 ore prima di considerare scaduto il codice.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Come sono protetti i miei dati durante il trasferimento?\",\n          \"text\": \"Il tuo certificato COVID è messo a disposizione per il trasferimento in forma criptata. Il codice di trasferimento assicura che soltanto la tua app sia in grado di riceverlo. I dati sono eliminati dal server immediatamente dopo il trasferimento.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa posso fare se il certificato non arriva?\",\n          \"text\": \"Non appena il certificato è stato generato dal laboratorio o dal centro di test, è disponibile per il trasferimento. Accertati che il tuo smartphone sia connesso a Internet per poter ricevere i certificati.\\n\\nSe comunque non dovessi ricevere il tuo certificato COVID, rivolgiti al servizio che ha effettuato il test (centro di test, farmacia, medico).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa accade in caso di risultato positivo del test?\",\n          \"text\": \"In caso di test antigenico positivo, non ricevi alcun certificato di test dal laboratorio. \\n\\nIn caso di test PCR positivo, ricevi un certificato COVID per persone guarite, valido a partire dall’undicesimo giorno dopo l’esecuzione del test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Uschia funcziuna il transfer\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L'app verifitgescha regularmain, schebain in certificat COVID è disponibel per Voss code da transfer.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Uschespert ch'il certificat COVID è disponibel, cumpara el en l'app. Sche Vus avais activà ils avis, vegnis Vus infurmada u infurmà da l'app.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Suenter 30 dis scada il code da transfer. Silsuenter spetga l'app anc ulteriuras 72 uras, avant ch'il code da transfer daventa nunvalaivel.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Co vegnan protegidas mias datas tar il transfer?\",\n          \"text\": \"Per il transfer vegn Voss certificat COVID mess a disposiziun en moda codifitgada. Il code da transfer garantescha che mo Vossa app po retschaiver il certificat COVID. Las datas vegnan puspè stizzadas dal server immediatamain suenter il transfer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge poss jau far, sch'il certificat n'arriva betg?\",\n          \"text\": \"Uschespert ch'il certificat è vegnì generà dal labor u dal center da test, stat el a disposiziun per il transfer. Guardai che Voss smartphone saja collià cun l'internet per pudair retschaiver certificats.\\n\\nEn cas che Voss certificat COVID n'arriva tuttina betg, As drizzai al post che ha fatg il test (center da test, apoteca, media u medi).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge capita en cas d'in test positiv?\",\n          \"text\": \"En cas d'in test svelt d'antigens positiv na survegnis Vus betg in certificat COVID dal labor.\\n\\nEn cas d'in test da PCR positiv survegnis Vus in certificat COVID per persunas guaridas. El è valaivel a partir dal 11. di suenter la prelevaziun dal test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"lightCertificateActive\": true,\n  \"pdfGenerationActive\": true,\n  \"vaccinationHints\": {\n    \"de\": [\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie unbeschwert in die meisten Länder reisen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie sich vor Erkrankung und einem allfälligen schweren Verlauf schützen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie auf sichere Art immun werden.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie mithelfen, die Krankheitslast zu reduzieren.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie helfen, die Auswirkungen der Pandemie zu bekämpfen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie die Langzeitfolgen einer Covid-19-Erkrankung vermeiden.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie dazu beitragen, das Gesundheitswesen zu entlasten.\"\n      }\n    ],\n    \"en\": [\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means hassle-free travel to most countries. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means protection from infection and severe disease. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means immunity the safe way.\"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to reduce the disease burden. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to control the impact of the pandemic. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means preventing long COVID.\"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to relieve the pressure on the health system.\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet de voyager sereinement dans la plupart des pays.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination vous protège contre le COVID-19 et, le cas échéant, contre une évolution grave de la maladie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet de vous immuniser en toute sécurité.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à réduire la charge de morbidité.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous contribuez à la lutte contre les conséquences de la pandémie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet d’éviter les effets à long terme de la maladie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à décharger le système de santé.\"\n      }\n    ],\n    \"it\": [\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi viaggiare senza preoccupazioni nella maggior parte dei Paesi.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi proteggerti dalla malattia e da un eventuale decorso grave.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi immunizzarti in modo sicuro.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a ridurre il carico di malattia.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a combattere le ripercussioni della pandemia.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi evitare le conseguenze a lungo termine di una malattia COVID-19.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a sgravare il sistema sanitario.\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus viagiar libramain en la gronda part dals pajais.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus As proteger cunter ina infecziun e cunter in eventual grev decurs da la malsogna.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus As immunisar en moda segira.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a reducir la chargia da la malsogna.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a cumbatter cunter las consequenzas da la pandemia.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus evitar las consequenzas da lunga durada d'ina infecziun cun COVID-19.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a distgargiar il sistem da sanadad.\"\n      }\n    ]\n  },\n  \"foreignRulesHints\": {\n    \"de\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"Für die Aktualität und Vollständigkeit der gegebenen Informationen übernimmt der Bund keine Haftung.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Die Einreiseregeln können sich ändern. Prüfen Sie daher die Gültigkeit kurz vor der Abreise und informieren Sie sich zusätzlich online über die aktuellen Einreiseregeln des Ziellandes.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Die oben genannten Angaben beziehen sich nur auf die Einreiseregeln des Ziellandes. Für allfällige zertifikatspflichtige Bereiche innerhalb des Landes können andere Regeln gelten.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Land nicht gefunden? Nicht alle Länder akzeptieren Covid-Zertifikate oder es wurden keine Einreiseregeln verfügbar gemacht.\"\n      }\n    ],\n    \"en\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"The federal government assumes no liability for the up-to-dateness or completeness of the information provided.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Entry rules can change. So check the validity shortly before you depart, and go online to make sure of the latest entry rules for your destination country.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"The above information relates only to the rules for entering your destination country. Different rules may apply to settings where a certificate is required within the country.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Couldn’t find the country you were looking for? Not all countries accept COVID certificates; it might also be that no entry rules have been made available.\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"La Confédération décline toute responsabilité en ce qui concerne l’actualité et l’exhaustivité des informations fournies.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Les dispositions d’entrée peuvent changer. Vérifiez donc la validité de votre certificat avant votre départ et renseignez-vous également en ligne sur les dispositions d’entrée en vigueur dans votre pays de destination.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Les informations ci-dessus ne concernent que les dispositions d’entrée du pays de destination. Dans le pays, d’autres règles peuvent s’appliquer aux éventuels domaines soumis à l’obligation de présenter un certificat.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Vous n’avez pas trouvé votre pays de destination ? Il se peut que certains pays ne reconnaissent pas le certificat COVID ou qu’aucune disposition d’entrée ne soit disponible.\"\n      }\n    ],\n    \"it\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"La Confederazione non si assume la responsabilità per l’attualità e la completezza delle informazioni fornite.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Le disposizioni d’entrata possono cambiare. Verificate poco prima della partenza se il vostro certificato è valido e informatevi ulteriormente online sulle disposizioni d’entrata attuali del Paese di destinazione.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Le informazioni sopra indicate si riferiscono solo alle disposizioni d’entrata del Paese di destinazione. Per eventuali settori soggetti all’obbligo di certificato all’interno del Paese possono vigere altre regole.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Non avete trovato un Paese? Non tutti i Paesi accettano i certificati COVID o rendono disponibili le regole d’entrata.\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"Per l'actualitad e la cumplettadad da las infurmaziuns na surpiglia la Confederaziun nagina responsabladad.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Las reglas d'entrada pon sa midar. Verifitgai perquai la valaivladad curt avant che Vus partis ed As infurmai ultra da quai online davart las reglas d'entrada actualas dal pajais da destinaziun.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Las infurmaziuns qua survart sa refereschan mo a las reglas d'entrada dal pajais da destinaziun. Per secturs che pretendan eventualmain in certificat entaifer il pajais pon valair autras reglas.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"N'avais Vus betg chattà Voss pajais da destinaziun? Betg tut ils pajais n'acceptan certificats COVID, u i n'èn vegnidas messas a disposiziun naginas infurmaziuns davart eventualas reglas d'entrada.\"\n      }\n    ]\n  },\n  \"foreignRulesLinkText\": {\n    \"de\": \"reopen.europa.eu\",\n    \"en\": \"reopen.europa.eu\",\n    \"fr\": \"reopen.europa.eu\",\n    \"it\": \"reopen.europa.eu\",\n    \"rm\": \"reopen.europa.eu\"\n  },\n  \"foreignRulesLinkUrl\": {\n    \"de\": \"https://reopen.europa.eu/\",\n    \"en\": \"https://reopen.europa.eu/\",\n    \"fr\": \"https://reopen.europa.eu/\",\n    \"it\": \"https://reopen.europa.eu/\",\n    \"rm\": \"https://reopen.europa.eu/\"\n  },\n  \"vaccinationBookingCantons\": {\n    \"de\": [\n      {\n        \"name\": \"Aargau\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Ausserrhoden\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Innerrhoden\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basel-Landschaft\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.bl.ch/impfen\"\n      },\n      {\n        \"name\": \"Basel-Stadt\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Bern\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Freiburg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/de/gesundheit/covid-19/covid-19-impfung-in-ihrer-naehe-durch-impfteams-in-den-impfzentren-in-der-apotheke-oder-bei-ihrem-arzt\"\n      },\n      {\n        \"name\": \"Genf\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glarus\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Graubünden\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Luzern\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuenburg\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwalden\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwalden\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"St. Gallen\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhausen\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Solothurn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgau\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Wallis\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Waadt\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zürich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"en\": [\n      {\n        \"name\": \"Aargau\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Ausserrhoden\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Innerrhoden\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basel-Country\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/englisch-english\"\n      },\n      {\n        \"name\": \"Basel-City\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berne\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Fribourg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Geneva\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/en/getting-vaccinated-against-covid-19\"\n      },\n      {\n        \"name\": \"Glarus\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Graubünden\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerne\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwalden\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwalden\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"St. Gallen\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhausen\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Solothurn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Ticino\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Valais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/en/\"\n      },\n      {\n        \"name\": \"Zürich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"name\": \"Argovie\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Rhodes-Extérieures\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Rhodes-Intérieures\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Bâle-Campagne\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/franzoesisch-francais\"\n      },\n      {\n        \"name\": \"Bâle-Ville\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berne\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"https://www.gsi.be.ch/fr/start/themen/coronavirus/impfen.html\"\n      },\n      {\n        \"name\": \"Fribourg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Genève\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glaris\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grisons\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerne\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwald\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwald\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"Saint-Gall\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhouse\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soleure\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgovie\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Valais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/web/coronavirus/#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zoug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zurich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"it\": [\n      {\n        \"name\": \"Argovia\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzello Esterno\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzello Interno\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basilea Campagna\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/italienisch-italiano\"\n      },\n      {\n        \"name\": \"Basilea Città\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berna\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Friburgo\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Ginevra\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glarona\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grigioni\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/IT/istituzioni/amministrazione/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Giura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerna\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidvaldo\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obvaldo\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"San Gallo\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Sciaffusa\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Svitto\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soletta\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Turgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Ticino\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Vallese\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zugo\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zurigo\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"name\": \"Argovia\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Dadora\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Dadens\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basilea-Champagna\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.bl.ch/impfen\"\n      },\n      {\n        \"name\": \"Basilea-Citad\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berna\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Friburg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Genevra\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glaruna\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grischun\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/RM/instituziuns/administraziun/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Giura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerna\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Sutsilvania\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Sursilvania\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"Son Gagl\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffusa\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Sviz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soloturn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Turgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Vallais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vad\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Turitg\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ]\n  },\n  \"vaccinationBookingInfo\": {\n    \"de\": {\n      \"title\": \"Impftermin in Ihrer Nähe buchen\",\n      \"text\": \"Eine Impfung könnte zum Beispiel an diesen Orten in Ihrer Nähe stattfinden:\\n\\n- in spezifischen Impfzentren\\n- in Spitälern\\n- bei Ihrem Hausarzt oder Ihrer Hausärztin\\n- in Impfapotheken\\n\\nViele Orte bieten auch Walk-in-Impfungen ohne Termine an.\",\n      \"info\": \"Die Covid-19-Impfung ist für Personen ab 5 Jahren empfohlen.\",\n      \"impfcheckTitle\": \"Jetzt Termin buchen\",\n      \"impfcheckText\": \"Der Covid-19 Impf-Check gibt Auskunft über Erst- sowie Auffrischimpfungen und führt Sie zur entsprechenden Anlaufstelle in Ihrem Kanton.\",\n      \"impfcheckButton\": \"Zum Impf-Check\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    },\n    \"en\": {\n      \"title\": \"Book a vaccination appointment near you\",\n      \"text\": \"Vaccination may be performed at the following locations near you:\\n\\n- at specific vaccination centres\\n- in hospitals\\n- at your general practitioner's surgery\\n- at a vaccination pharmacy\\n\\nMany places also offer walk-in vaccinations without an appointment.\",\n      \"info\": \"The COVID-19 vaccination is recommended for those over 5. \",\n      \"impfcheckTitle\": \"Book an appointment now\",\n      \"impfcheckText\": \"The COVID-19 Vaccination Check provides information on initial and booster vaccinations and guides you to the relevant point of contact in your canton.\",\n      \"impfcheckButton\": \"To the Vaccination Check\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    },\n    \"fr\": {\n      \"title\": \"Prendre un rendez-vous de vaccination près de chez vous\",\n      \"text\": \"La vaccination pourrait, par exemple, être proposée dans les lieux suivants situés à proximité de chez vous :\\n\\n- dans des centres de vaccination désignés\\n- dans les hôpitaux\\n- chez votre médecin de famille\\n- dans les pharmacies\\n\\nIl est aussi possible de se faire vacciner sans rendez-vous dans de nombreux endroits.\",\n      \"info\": \"La vaccination contre le COVID-19 est recommandée pour les personnes dès 5 ans.\",\n      \"impfcheckTitle\": \"Prendre un rendez-vous maintenant\",\n      \"impfcheckText\": \"COVID-19 Vac-check fournit des renseignements sur la première vaccination ainsi que sur la vaccination de rappel et vous guide vers le service compétent de votre canton.\",\n      \"impfcheckButton\": \"Vers COVID-19 Vac-check\",\n      \"impfcheckUrl\": \"https://covid19-vac-check.ch/\"\n    },\n    \"it\": {\n      \"title\": \"Prendi appuntamento per la vaccinazione nelle tue vicinanze\",\n      \"text\": \"Per esempio potresti farti vaccinare in uno di questi luoghi nelle tue vicinanze:\\n\\n- in centri di vaccinazione specifici\\n- negli ospedali\\n- dal tuo medico di famiglia\\n- nelle farmacie che vaccinano\\n\\nMolti di essi offrono anche vaccinazioni libere senza appuntamento.\",\n      \"info\": \"La vaccinazione anti-COVID-19 è raccomandata per le persone a partire dai 5 anni.\",\n      \"impfcheckTitle\": \"Prendi appuntamento ora\",\n      \"impfcheckText\": \"Il COVID-19 Vac-Check fornisce informazioni sulle prime vaccinazioni, sulle vaccinazioni di richiamo e ti indirizza verso il punto di contatto del tuo Cantone.\",\n      \"impfcheckButton\": \"Vai al COVID-19 Vac-Check\",\n      \"impfcheckUrl\": \"https://covid19-vac-check.ch/\"\n    },\n    \"rm\": {\n      \"title\": \"Reservar in termin da vaccinaziun en Vossa vischinanza\",\n      \"text\": \"Ina vaccinaziun pudess per exempel vegnir fatga en quests lieus en Vossa vischinanza:\\n\\n- en centers da vaccinaziun specifics\\n- en ospitals\\n- tar Vossa media u tar Voss medi da chasa\\n- en apotecas da vaccinaziun\\n\\nBlers lieus porschan er vaccinaziuns «walk-in» senza termin.\",\n      \"info\": \"La vaccinaziun cunter COVID-19 è recumandada per persunas a partir da 5 onns.\",\n      \"impfcheckTitle\": \"Reservar in termin ussa\",\n      \"impfcheckText\": \"Il check da vaccinaziun COVID-19 As infurmescha davart las emprimas vaccinaziuns sco er davart las vaccinaziuns da rinfrestgament ed As maina al post da consultaziun correspundent da Voss chantun.  \",\n      \"impfcheckButton\": \"Al check da vaccinaziun\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    }\n  },\n  \"checkModesInfo\": {\n    \"de\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für geimpfte, genesene oder negativ getestete Personen.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Kein Zutritt.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für geimpfte oder genesene Personen.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Kein Zutritt.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung (basierend auf PCR-Test) nicht länger als 120 Tage zurückliegt. Sie benötigen kein zusätzliches Testzertifikat.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Für den Zutritt zu Betrieben und Veranstaltungen wird zusätzlich zum Covid-Zertifikat für geimpfte oder genesene Personen ein negatives Testresultat benötigt.\"\n          }\n        }\n      }\n    },\n    \"en\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Access to organisations and events permitted for people who have been vaccinated, or who have recovered or tested negative.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Access not permitted.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Access to organisations and events permitted for people who have been vaccinated or who have recovered.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Access not permitted.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Access to organisations and events permitted for people who have been fully vaccinated, have received a booster jab or have recovered (based on PCR test results) in the preceding 120 days; an additional test certificate is not required.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"To gain access to organisations and events, a negative test result is required in addition to the COVID certificate for people who have been vaccinated or have recovered.\"\n          }\n        }\n      }\n    },\n    \"fr\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées, guéries ou testées négatives.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Accès refusé.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Accès refusé.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes dont la vaccination complète, la vaccination de rappel ou la guérison (confirmée par un test PCR) ne date pas de plus de 120 jours. Vous n'avez pas besoin de présenter un certificat de test supplémentaire.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries qui présentent, en plus d'un certificat COVID, un résultat de test négatif.\"\n          }\n        }\n      }\n    },\n    \"it\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate, guarite o testate negative.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"L’accesso non è consentito.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate o guarite.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"L’accesso non è consentito.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone per le quali sono trascorsi al massimo 120 giorni dal completamento del ciclo vaccinale, dalla somministrazione della dose di richiamo o dalla guarigione (sulla base di un test PCR). In questo caso non è necessario un ulteriore certificato di test.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Oltre al certificato di vaccinazione o di guarigione, per l’accesso a strutture e manifestazioni è necessario presentare anche il risultato di un test negativo.\"\n          }\n        }\n      }\n    },\n    \"rm\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas vaccinadas, guaridas u cun in test negativ.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Nagin access.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas vaccinadas u guaridas.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Nagin access.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas ch’èn vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch’èn guaridas (sin basa d’in test da PCR) avant maximalmain 120 dis. Vus na duvrais nagin certificat da test supplementar.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Per l’access a manaschis ed ad occurrenzas dovri ultra dal certificat COVID per persunas vaccinadas u guaridas in test negativ.\"\n          }\n        }\n      }\n    }\n  },\n  \"lightCertDurationInHours\": 24,\n  \"showVaccinationHintHomescreen\": false,\n  \"showVaccinationHintDetail\": false,\n  \"showVaccinationHintTransfer\": false,\n  \"refreshButtonDisabled\": true,\n  \"refreshButtonInfo\": {\n    \"de\": {\n      \"title\": \"Info\",\n      \"text1\": \"Der «Refresh-Button» wurde entfernt.\",\n      \"text2\": \"Sollte Ihr Covid-Zertifikat abgelaufen oder technisch ungültig sein, wird Ihnen dies direkt auf dem Zertifikat angezeigt.\",\n      \"fatTitle\": \"Für Prüfende\",\n      \"text3\": \"Die Prüfung von Covid-Zertifikaten ist mit der App «COVID Certificate Check» vorzunehmen.\",\n      \"linkText\": \"Mehr erfahren\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"\n    },\n    \"en\": {\n      \"title\": \"Info\",\n      \"text1\": \"The \\\"Refresh button\\\" has been removed.\",\n      \"text2\": \"If your COVID certificate has expired or is technically invalid, this is indicated directly on the certificate.\",\n      \"fatTitle\": \"For verifiers\",\n      \"text3\": \"COVID certificates are to be verified with the \\\"COVID Certificate Check\\\" app.\",\n      \"linkText\": \"To find out more\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1851413288\"\n    },\n    \"fr\": {\n      \"title\": \"Information\",\n      \"text1\": \"Le bouton «rafraîchir» a été supprimé.\",\n      \"text2\": \"Si votre certificat COVID a expiré ou s'il n'est techniquement pas valable, cette information apparaît automatiquement sur le certificat.\",\n      \"fatTitle\": \"Pour les personnes chargées du contrôle\",\n      \"text3\": \"La vérification des certificats COVID doit s'effectuer au moyen de l'application «COVID Certificate Check».\",\n      \"linkText\": \"Pour en savoir plus\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#-1006172949\"\n    },\n    \"it\": {\n      \"title\": \"Informazione\",\n      \"text1\": \"Il pulsante «Aggiorna» è stato eliminato.\",\n      \"text2\": \"Se il certificato è scaduto o se non è valido per motivi tecnici, l’informazione compare direttamente nell’app. \",\n      \"fatTitle\": \"Per le persone incaricate della verifica\",\n      \"text3\": \"I certificati COVID devono essere verificati utilizzando l’app «COVID Certificate Check».\",\n      \"linkText\": \"Per saperne di più\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1358421103\"\n    },\n    \"rm\": {\n      \"title\": \"Infurmaziun\",\n      \"text1\": \"La «buttun da refresh» è vegnida stizzada.\",\n      \"text2\": \"Sche Voss certificat COVID è spirà u sch’el n’è tecnicamain betg valaivel, vegn quai inditgà directamain sin il certificat.\",\n      \"fatTitle\": \"Per las persunas che verifitgeschan\",\n      \"text3\": \"Ils certificats COVID ston vegnir verifitgads cun l’app «COVID Certificate Check».\",\n      \"linkText\": \"Dapli infurmaziuns\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"\n    }\n  },\n  \"eolBannerInfo\": {\n    \"de\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Verkürzte Gültigkeitsdauer\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Verkürzte Gültigkeitsdauer\",\n        \"detailText\": \"Dieses Zertifikat wird bald ablaufen.\",\n        \"detailMoreInfo\": \"Mehr erfahren\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"Per 31. Jan. 2022 gelten in der Schweiz reduzierte Gültigkeitsdauern von 270 statt 365 Tagen für Covid-Zertifikate für Geimpfte oder Genesene. Dieses Zertifikat ist von der verkürzten Gültigkeitsdauer unmittelbar betroffen:\",\n        \"popupBoldText\": \"Dieses Covid-Zertifikat kann ab dem 31. Jan. 2022 nicht mehr verwendet werden, da die Gültigkeitsdauer dann bereits abgelaufen sein wird.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Mehr erfahren\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Bald abgelaufen\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Dieses Zertifikat läuft bald ab.\",\n        \"detailMoreInfo\": \"Mehr erfahren?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Dieses Covid-Zertifikat ist nur noch wenige Tage gültig. Bitte beachten Sie das auf dem Zertifikat ausgewiesene Ablaufdatum.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Und nun?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"\n      }\n    },\n    \"en\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Shortened period of validity\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Shortened period of validity\",\n        \"detailText\": \"This certificate will soon expire.\",\n        \"detailMoreInfo\": \"More information\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"As of 31 Jan 2022 a shortened period of validity of 270 instead of 365 days applies to COVID vaccination or recovery certificates in Switzerland. This certificate is directly affected by the shortened period of validity:\",\n        \"popupBoldText\": \"This COVID certificate can no longer be used after 31 Jan 2022 as the period of validity will already have expired.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"More information\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-period-validity-certificates-vaccination-or-recovery-being-shortened-365-270\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Imminent expiry\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"This certificate will soon expire.\",\n        \"detailMoreInfo\": \"More information?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"This COVID certificate is valid for only a few more days. Please note the expiry date shown on the certificate.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"And now?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/what-should-i-do-if-my-covid-certificate-about-expire-under-swiss-rules-validity\"\n      }\n    },\n    \"fr\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Durée de validité réduite\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Durée de validité réduite\",\n        \"detailText\": \"Ce certificat expirera bientôt.\",\n        \"detailMoreInfo\": \"En savoir plus\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"À partir du 31 janvier 2022, la durée de validité en Suisse des certificats COVID pour les personnes vaccinées ou guéries est réduite de 365 à 270 jours. Ce certificat est directement concerné:\",\n        \"popupBoldText\": \"Ce certificat COVID ne peut plus être utilisé à partir du 31 janvier 2022.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"En savoir plus\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-la-duree-de-validite-des-certificats-de-vaccination-ou-de-guerison-t-elle\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Expiration imminente\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Ce certificat expirera bientôt.\",\n        \"detailMoreInfo\": \"En savoir plus?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Ce certificat COVID expirera dans quelques jours. Nous attirons votre attention sur la date de fin de validité affichée.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Et maintenant ?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/que-dois-je-faire-si-mon-certificat-covid-est-sur-le-point-dexpirer-en-suisse\"\n      }\n    },\n    \"it\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Durata di validità abbreviata\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Durata di validità abbreviata\",\n        \"detailText\": \"Questo certificato sta per scadere.\",\n        \"detailMoreInfo\": \"Per saperne di più\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"Dal 31 gennaio 2022 in Svizzera vige una durata di validità del certificato COVID per persone vaccinate o guarite di 270 anziché di 365 giorni. Questo certificato è interessato direttamente dall’abbreviazione della durata di validità:\",\n        \"popupBoldText\": \"La scadenza della durata di validità di questo certificato COVID è il 31 gennaio 2022. Pertanto il certificato non è più utilizzabile dopo quella data.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Per saperne di più\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-la-durata-di-validita-dei-certificati-di-vaccinazione-o-di-guarigione-e\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Scadenza imminente\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Questo certificato sta per scadere.\",\n        \"detailMoreInfo\": \"Per saperne di più\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Questo certificato COVID è valido ancora per pochi giorni. Si prega di tenere conto della data di scadenza indicata sullo stesso.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"E ora?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/cosa-devo-fare-se-il-mio-certificato-covid-sta-scadere-secondo-le-regole-di\"\n      }\n    },\n    \"rm\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Valaivladad pli curta\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Valaivladad pli curta\",\n        \"detailText\": \"Quest certificat scada bainbaud.\",\n        \"detailMoreInfo\": \"Dapli infurmaziuns\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"A partir dals 31-01-2022 valan en Svizra duradas da valaivladad reducidas da 270 dis empè da 365 dis per certificats COVID per persunas vaccinadas u guaridas. Quest certificat è pertutgà directamain da la valaivladad pli curta:\",\n        \"popupBoldText\": \"Quest certificat COVID na po betg pli vegnir duvrà a partir dals 31-01-2022, perquai che la durada da valaivladad è lura gia scadida.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Dapli infurmaziuns\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Scada bainbaud\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Quest certificat scada bainbaud.\",\n        \"detailMoreInfo\": \"Dapli infurmaziuns?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Quest certificat COVID è valaivel mo pli intgins dis. Resguardai per plaschair la data da scadenza inditgà sin il certificat.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Ed uss?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"\n      }\n    }\n  },\n  \"showRatConversionForm\": true,\n  \"ratConversionFormUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\",\n  \"certRenewalInfo\": {\n    \"de\": {\n      \"INFO\": {\n        \"heading\": \"Was bedeutet das?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Wieso Sie den QR-Code auch dann erneuern sollten, wenn Ihr Impf- oder Genesungszertifikat nach den Schweizer Gültigkeitsregeln bald abläuft oder bereits abgelaufen ist, lesen Sie in dieser FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Was bedeutet das?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Erneuern Sie den QR-Code auch dann, wenn die Gültigkeit in der Schweiz bald abläuft oder bereits abgelaufen ist.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Wichtig!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Ersetzen Sie auch zuvor ausgedruckte oder gespeicherte Zertifikate durch diese erneuerte Version.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"Wie lange ein Covid-Zertifikat gültig ist wird in jedem Land gemäss den aktuell geltenden Regeln berechnet. Die Erneuerung des QR-Codes hat darauf keinen Einfluss.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      }\n    },\n    \"en\": {\n      \"INFO\": {\n        \"heading\": \"What does this mean?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"The QR codes used for COVID certificates have limited technical validity\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"What does this mean?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"The QR codes used for COVID certificates have limited technical validity.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Important!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Also replace certificates you have previously printed out or stored with this renewed version.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"The length of time for which a vaccination is recognised in a particular country is not specified in the certificate. Instead, it is calculated in accordance with the specific rules of the country each time the certificate is checked. Renewing the QR code merely ensures that the QR code can be used from a technical point of view.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      }\n    },\n    \"fr\": {\n      \"INFO\": {\n        \"heading\": \"Qu’est-ce que cela signifie ?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Les codes QR des certificats COVID ont une validité technique limitée\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Qu’est-ce que cela signifie ?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Les codes QR des certificats COVID ont une validité technique limitée.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"À noter:\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Remplacez également les certificats précédemment imprimés ou enregistrés par cette nouvelle version\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"La durée pendant laquelle une vaccination est reconnue dans un pays n’est pas définie dans le certificat, mais calculée au moment du contrôle selon les règles du pays examinateur. Le renouvellement du code QR garantit uniquement que celui-ci puisse être utilisé d’un point de vue technique. \"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      }\n    },\n    \"it\": {\n      \"INFO\": {\n        \"heading\": \"Cosa significa?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"I codici QR dei certificati COVID hanno una validità tecnica limitata\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Cosa significa?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"I codici QR dei certificati COVID hanno una validità tecnica limitata.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Importante!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Sostituisci anche i certificati stampati o salvati in precedenza con la presente versione aggiornata.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"La durata del riconoscimento di una vaccinazione in un Paese non è specificata nel certificato. Questo viene calcolato durante la verifica in base alle regole del Paese esaminatore. Il rinnovo del codice QR garantisce solo che tale codice possa continuare a essere tecnicamente utilizzato.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      }\n    },\n    \"rm\": {\n      \"INFO\": {\n        \"heading\": \"Tge vul quai dir?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Tge vul quai dir?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Impurtant!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Remplazzai per plaschair tras questa nova versiun er ils certificats che Vus avais arcunà u stampà pli baud.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"Quant ditg ch'ina vaccinaziun vegn renconuschida en in pajais, n'è betg fixà en il certificat. Quai vegn calculà a chaschun da la verificaziun tenor las reglas dal pajais che fa la verificaziun. La renovaziun dal code QR garantescha unicamain l'utilisaziun tecnica dal code QR\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      }\n    }\n  },\n  \"showValidityState\": false,\n  \"foreignRulesCheckEnabled\": false\n}"
  },
  {
    "path": "wallet/src/abn/java/ch/admin/bag/covidcertificate/wallet/debug/WalletDebugFragment.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.debug\n/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\n\nclass WalletDebugFragment : DebugFragment() {\n\tcompanion object {\n\t\tfun newInstance(): DebugFragment = DebugFragment()\n\t}\n}"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/EspressoUtil.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport androidx.test.espresso.Espresso\nimport androidx.test.espresso.ViewAction\nimport androidx.test.espresso.action.ViewActions\nimport androidx.test.espresso.matcher.ViewMatchers\nimport org.hamcrest.Matchers\n\nopen class EspressoUtil {\n\n\tfun doOnboarding() {\n\t\tval materialButton = Espresso.onView(\n\t\t\tMatchers.allOf(\n\t\t\t\tViewMatchers.withId(R.id.onboarding_continue_button),\n\t\t\t\tViewMatchers.isDisplayed()\n\t\t\t)\n\t\t)\n\t\tmaterialButton.perform(ViewActions.click())\n\t\tval materialButton2 = Espresso.onView(\n\t\t\tMatchers.allOf(\n\t\t\t\tViewMatchers.withId(R.id.onboarding_continue_button),\n\t\t\t\tViewMatchers.isDisplayed()\n\t\t\t)\n\t\t)\n\t\tmaterialButton2.perform(ViewActions.click())\n\n\n\t\tval materialButton3 = Espresso.onView(\n\t\t\tMatchers.allOf(\n\t\t\t\tViewMatchers.withId(R.id.onboarding_continue_button),\n\t\t\t\tViewMatchers.isDisplayed()\n\t\t\t)\n\t\t)\n\t\tmaterialButton3.perform(ViewActions.click())\n\n\t\tval materialButton4 = Espresso.onView(\n\t\t\tMatchers.allOf(\n\t\t\t\tViewMatchers.withId(R.id.onboarding_continue_button),\n\t\t\t\tViewMatchers.isDisplayed()\n\t\t\t)\n\t\t)\n\t\tmaterialButton4.perform(ViewActions.click())\n\t}\n\n\t// The standard scrollTo Action does not support NestedScrollView. This implementation does support NestedScrollView in\n\t// addition to the Views supported by the standard ScrollToAction\n\tfun scrollTo(): ViewAction {\n\t\treturn ViewActions.actionWithAssertions(NestedScrollToAction())\n\t}\n}\n"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/LoadconfigTest.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\n\nimport androidx.test.espresso.Espresso.onView\nimport androidx.test.espresso.action.ViewActions.click\nimport androidx.test.espresso.matcher.ViewMatchers.*\nimport androidx.test.filters.LargeTest\nimport androidx.test.platform.app.InstrumentationRegistry\nimport androidx.test.rule.ActivityTestRule\nimport androidx.test.runner.AndroidJUnit4\nimport ch.admin.bag.covidcertificate.common.browserstack.AirplaneMode\nimport ch.admin.bag.covidcertificate.common.browserstack.BadNetwork\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport org.hamcrest.Matchers.*\nimport org.junit.Before\nimport org.junit.Rule\nimport org.junit.Test\nimport org.junit.runner.RunWith\n\n@AirplaneMode\n@BadNetwork\n@LargeTest\n@RunWith(AndroidJUnit4::class)\nclass LoadconfigTest : EspressoUtil() {\n\n\t@Rule\n\t@JvmField\n\tvar mActivityTestRule = ActivityTestRule(MainActivity::class.java)\n\tval secureStorage by lazy { WalletSecureStorage.getInstance(InstrumentationRegistry.getInstrumentation().getTargetContext()) }\n\n\t@Before\n\tfun checkIfOnboardingIsShown(){\n\t\tif (secureStorage.getOnboardingCompleted()){\n\t\t\treturn\n\t\t}\n\t\tdoOnboarding()\n\t}\n\n\t@Test\n\tfun loadconfigTest() {\n        val supportButton = onView(\n            allOf(\n                withId(R.id.homescreen_support_button),\n                isDisplayed()\n            )\n        )\n        supportButton.perform(click())\n\n\t\tonView(\n\t\t\tallOf(\n\t\t\t\twithId(R.id.faq_recycler_view),\n\t\t\t\tisDisplayed(),\n\t\t\t)\n\t\t).check( RecyclerViewNotEmptyAssertion())\n\t}\n}\n"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/NestedScrollViewScrollTo.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.view.View\nimport android.widget.HorizontalScrollView\nimport android.widget.ListView\nimport android.widget.ScrollView\nimport androidx.core.widget.NestedScrollView\nimport androidx.test.espresso.ViewAction\nimport androidx.test.espresso.action.ViewActions\nimport androidx.test.espresso.matcher.ViewMatchers\nimport org.hamcrest.Matcher\nimport org.hamcrest.Matchers\n\nclass NestedScrollToAction(scrolltoAction: ViewAction = ViewActions.scrollTo()) : ViewAction by scrolltoAction {\n\toverride fun getConstraints(): Matcher<View> {\n\t\treturn Matchers.allOf(\n\t\t\tViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE),\n\t\t\tViewMatchers.isDescendantOfA(\n\t\t\t\tMatchers.anyOf(\n\t\t\t\t\tViewMatchers.isAssignableFrom(NestedScrollView::class.java),\n\t\t\t\t\tViewMatchers.isAssignableFrom(ScrollView::class.java),\n\t\t\t\t\tViewMatchers.isAssignableFrom(HorizontalScrollView::class.java),\n\t\t\t\t\tViewMatchers.isAssignableFrom(ListView::class.java)\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t}\n}\n\n"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/OnboardingTest.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\n\nimport androidx.test.espresso.Espresso.onView\nimport androidx.test.espresso.assertion.ViewAssertions.matches\nimport androidx.test.espresso.matcher.ViewMatchers.*\nimport androidx.test.filters.LargeTest\nimport androidx.test.rule.ActivityTestRule\nimport androidx.test.runner.AndroidJUnit4\nimport ch.admin.bag.covidcertificate.common.browserstack.AirplaneMode\nimport ch.admin.bag.covidcertificate.common.browserstack.BadNetwork\nimport ch.admin.bag.covidcertificate.common.browserstack.Normal\nimport ch.admin.bag.covidcertificate.common.browserstack.Onboarding\nimport org.hamcrest.Matchers.allOf\nimport org.junit.FixMethodOrder\nimport org.junit.Rule\nimport org.junit.Test\nimport org.junit.runner.RunWith\nimport org.junit.runners.MethodSorters\n\n@Onboarding\n@RunWith(AndroidJUnit4::class)\n@FixMethodOrder(MethodSorters.NAME_ASCENDING)\nclass OnboardingTest : EspressoUtil() {\n\n\t@Rule\n\t@JvmField\n\tvar mActivityTestRule = ActivityTestRule(MainActivity::class.java)\n\n\t@Test\n\tfun A_onboardingTest() {\n\t\tdoOnboarding()\n\n\t\tval textView = onView(\n\t\t\tallOf(\n\t\t\t\twithId(R.id.homescreen_add_certificate_options_title),\n\t\t\t\tisDisplayed()\n\t\t\t)\n\t\t)\n\t\ttextView.check(matches(withText(R.string.wallet_homescreen_what_to_do)))\n\t\t\n\t}\n\n\n\t@Test\n\tfun B_onboardingTestShowNoOnboarding() {\n\t\tval textView = onView(\n\t\t\tallOf(\n\t\t\t\twithId(R.id.homescreen_add_certificate_options_title),\n\t\t\t\tisDisplayed()\n\t\t\t)\n\t\t)\n\t\ttextView.check(matches(withText(R.string.wallet_homescreen_what_to_do)))\n\t}\n}\n"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/RecyclerViewNotEmptyAssertion.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.view.View\nimport androidx.recyclerview.widget.RecyclerView\nimport androidx.test.espresso.NoMatchingViewException\nimport androidx.test.espresso.ViewAssertion\nimport org.junit.Assert.assertNotNull\n\n\nclass RecyclerViewNotEmptyAssertion : ViewAssertion {\n\toverride fun check(view: View?, noViewFoundException: NoMatchingViewException?) {\n\t\tif (noViewFoundException != null) {\n\t\t\tthrow noViewFoundException\n\t\t}\n\t\tval recyclerView = view as RecyclerView\n\t\tval adapter = recyclerView.adapter\n\t\tassertNotNull(adapter)\n\t\tassert(adapter!!.itemCount > 0)\n\t}\n}\n\n"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/ScanCountTest.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.content.Context\nimport androidx.test.ext.junit.runners.AndroidJUnit4\nimport androidx.test.platform.app.InstrumentationRegistry\nimport ch.admin.bag.covidcertificate.common.browserstack.Normal\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport org.junit.Assert.assertFalse\nimport org.junit.Assert.assertTrue\nimport org.junit.Before\nimport org.junit.Test\nimport org.junit.runner.RunWith\n\n@Normal\n@RunWith(AndroidJUnit4::class)\nclass ScanCountTest() {\n\n\tlateinit var context: Context\n\tlateinit var walletSecureStorage: WalletSecureStorage\n\n\t@Before\n\tfun setup() {\n\t\tcontext = InstrumentationRegistry.getInstrumentation().targetContext\n\t\tEncryptedSharedPreferencesUtil.initializeSharedPreferences(context, \"SecureStorage\").edit().clear().apply()\n\t\twalletSecureStorage = WalletSecureStorage.getInstance(context)\n\t}\n\n\t@Test\n\tfun checkInsertTodayLessThan10() {\n\t\tfor (i in 1..9) {\n\t\t\twalletSecureStorage.addLastScanTimes(System.currentTimeMillis())\n\t\t}\n\t\tassertFalse(walletSecureStorage.has10OrMoreScansInLast24h())\n\t}\n\n\t@Test\n\tfun checkInsertTodayExactly10() {\n\t\tfor (i in 1..10) {\n\t\t\twalletSecureStorage.addLastScanTimes(System.currentTimeMillis())\n\t\t}\n\t\tassertTrue(walletSecureStorage.has10OrMoreScansInLast24h())\n\t}\n\n\t@Test\n\tfun checkInsertTodayMoreThan10() {\n\t\tfor (i in 1..15) {\n\t\t\twalletSecureStorage.addLastScanTimes(System.currentTimeMillis())\n\t\t}\n\t\tassertTrue(walletSecureStorage.has10OrMoreScansInLast24h())\n\t}\n\n\t@Test\n\tfun checkInsertTodayMoreThan10Yesterday() {\n\t\tfor (i in 1..15) {\n\t\t\twalletSecureStorage.addLastScanTimes(System.currentTimeMillis() - 24 * 60 * 60 * 1000L)\n\t\t}\n\t\tassertFalse(walletSecureStorage.has10OrMoreScansInLast24h())\n\t}\n\n\t@Test\n\tfun checkInsertTodayMoreThan10YesterdayAndToday() {\n\t\tfor (i in 1..15) {\n\t\t\twalletSecureStorage.addLastScanTimes(System.currentTimeMillis())\n\t\t\twalletSecureStorage.addLastScanTimes(System.currentTimeMillis() - 24 * 60 * 60 * 1000L)\n\t\t}\n\t\tassertTrue(walletSecureStorage.has10OrMoreScansInLast24h())\n\t}\n\n}"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/TransferCodeTest.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\n\nimport androidx.test.espresso.Espresso.onView\nimport androidx.test.espresso.ViewAction\nimport androidx.test.espresso.action.ViewActions.*\nimport androidx.test.espresso.matcher.ViewMatchers.*\nimport androidx.test.filters.LargeTest\nimport androidx.test.platform.app.InstrumentationRegistry\nimport androidx.test.rule.ActivityTestRule\nimport androidx.test.runner.AndroidJUnit4\nimport androidx.viewpager2.widget.ViewPager2\nimport ch.admin.bag.covidcertificate.common.browserstack.Normal\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport org.hamcrest.Matchers.allOf\nimport org.junit.Assert\nimport org.junit.Before\nimport org.junit.Rule\nimport org.junit.Test\nimport org.junit.runner.RunWith\n\n\n@LargeTest\n@Normal\n@RunWith(AndroidJUnit4::class)\nclass TransferCodeTest : EspressoUtil() {\n\n\n\tprivate val context by lazy { InstrumentationRegistry.getInstrumentation().targetContext }\n\tprivate val secureStorage by lazy { WalletSecureStorage.getInstance(context) }\n\n\t@Before\n\tfun setup() {\n\t\tif (!secureStorage.getOnboardingCompleted()) doOnboarding()\n\t}\n\n\t@Rule\n\t@JvmField\n\tvar mActivityTestRule = ActivityTestRule(MainActivity::class.java)\n\n\n\t@Test\n\tfun testCreateTransferCode() {\n\n\t\twhile (countTransfercodesOnHomeScreen() != 0) {\n\t\t\tdeleteTransfercode()\n\t\t}\n\t\tAssert.assertEquals(0, countTransfercodesOnHomeScreen())\n\t\tcreateTransfercode()\n\t\tAssert.assertEquals(1, countTransfercodesOnHomeScreen())\n\t\tdeleteTransfercode()\n\t\tAssert.assertEquals(0, countTransfercodesOnHomeScreen())\n\n\t}\n\n\t@Test\n\tfun testCreateMultipleTransferCodes() {\n\n\t\twhile (countTransfercodesOnHomeScreen() != 0) {\n\t\t\tdeleteTransfercode()\n\t\t}\n\t\tAssert.assertEquals(0, countTransfercodesOnHomeScreen())\n\t\tcreateTransfercode()\n\t\tAssert.assertEquals(1, countTransfercodesOnHomeScreen())\n\t\tcreateTransfercode()\n\t\tAssert.assertEquals(2, countTransfercodesOnHomeScreen())\n\t\tdeleteTransfercode()\n\t\tAssert.assertEquals(1, countTransfercodesOnHomeScreen())\n\t\tdeleteTransfercode()\n\t\tAssert.assertEquals(0, countTransfercodesOnHomeScreen())\n\n\t}\n\n\n\tprivate fun clickButton(id: Int) {\n\t\tonView(allOf(withId(id), isDisplayed())).perform(click())\n\t}\n\n\tprivate fun createTransfercode() {\n\n\t\tif (countTransfercodesOnHomeScreen() != 0) {\n\t\t\tclickButton(R.id.homescreen_scan_button_small)\n\t\t}\n\n\t\tclickButton(R.id.option_transfer_code)\n\n\t\tclickButton(R.id.transfer_code_intro_create)\n\n\t\tonView(withId(R.id.transfer_code_content)).perform(waitUntilVisible(timeout = 30000L))\n\n\t\tclickButton(R.id.transfer_code_creation_done_button)\n\n\t}\n\n\tprivate fun deleteTransfercode() {\n\n\t\tonView(allOf(withId(R.id.transfer_code_page_card), isCompletelyDisplayed())).perform(click())\n\n\n\t\tonView(withId(R.id.transfer_code_content)).perform(waitUntilVisible(timeout = 30000L))\n\n\t\t//Scroll to delete button\n\t\tonView(withId(R.id.transfer_code_detail_delete_button)).perform(scrollTo())\n\n\t\tclickButton(R.id.transfer_code_detail_delete_button)\n\t\tclickButton(android.R.id.button1)\n\n\t}\n\n\tprivate fun countTransfercodesOnHomeScreen(): Int {\n\n\t\tval recyclerView = onView(\n\t\t\tallOf(\n\t\t\t\twithId(R.id.homescreen_certificates_view_pager),\n\t\t\t\tisDisplayed()\n\t\t\t)\n\t\t)\n\n\t\tvar count = 0\n\t\trecyclerView.check { view, _ ->\n\t\t\tif (view == null) return@check\n\t\t\tcount = (view as ViewPager2).adapter?.itemCount ?: 0\n\t\t}\n\t\treturn count\n\t}\n\n\t/**\n\t * @return a [WaitUntilVisibleAction] instance created with the given [timeout] parameter.\n\t */\n\tprivate fun waitUntilVisible(timeout: Long): ViewAction = WaitUntilVisibleAction(timeout)\n\n}\n"
  },
  {
    "path": "wallet/src/androidTest/java/ch/admin/bag/covidcertificate/wallet/WaitUntilVisibleAction.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.view.View\nimport androidx.test.espresso.PerformException\nimport androidx.test.espresso.UiController\nimport androidx.test.espresso.ViewAction\nimport androidx.test.espresso.util.HumanReadables\nimport org.hamcrest.Matcher\nimport org.hamcrest.Matchers.any\nimport java.util.concurrent.TimeoutException\n\n/**\n * A [ViewAction] that waits up to [timeout] milliseconds for a [View]'s visibility value to change to [View.VISIBLE].\n */\nclass WaitUntilVisibleAction(private val timeout: Long) : ViewAction {\n\n    override fun getConstraints(): Matcher<View> {\n        return any(View::class.java)\n    }\n\n    override fun getDescription(): String {\n        return \"wait up to $timeout milliseconds for the view to become visible\"\n    }\n\n    override fun perform(uiController: UiController, view: View) {\n\n        val endTime = System.currentTimeMillis() + timeout\n\n        do {\n            if (view.visibility == View.VISIBLE) return\n            uiController.loopMainThreadForAtLeast(50)\n        } while (System.currentTimeMillis() < endTime)\n\n        throw PerformException.Builder()\n            .withActionDescription(description)\n            .withCause(TimeoutException(\"Waited $timeout milliseconds\"))\n            .withViewDescription(HumanReadables.describe(view))\n            .build()\n    }\n}\n"
  },
  {
    "path": "wallet/src/dev/assets/faq/config.json",
    "content": "{\n  \"forceUpdate\": false,\n  \"infoBox\": null,\n  \"questions\": {\n    \"de\": {\n      \"faqTitle\": \"Was sind Covid-Zertifikate?\",\n      \"faqSubTitle\": \"Das Covid-Zertifikat bietet die Möglichkeit, eine Covid-19-Impfung, eine durchgemachte Erkrankung oder ein negatives Testergebnis fälschungssicher zu dokumentieren.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wann und wo kann ich ein Covid-Zertifikat erhalten?\",\n          \"text\": \"Ein Covid-Zertifikat können Sie nach einer Covid-19-Impfung, nach einer durchgemachten Erkrankung oder nach einem negativen Testergebnis erhalten. Das Zertifikat stellt Ihnen in der Regel das Gesundheitsfachpersonal vor Ort auf Anfrage aus.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie erhalte ich nach einer durchgemachten Covid-19-Erkrankung ein Covid-Zertifikat?\",\n          \"text\": \"Je nach Kanton wird Ihnen das Covid-Zertifikat teilweise direkt von der Teststelle oder dem Labor ausgestellt, in dem Ihr positives Testresultat festgestellt wurde. Falls dies nicht der Fall ist, können Sie nachträglich online über die Webseite der «Nationale Antragsstelle Covid-Zertifikat» ein Covid-Zertifikat beantragen. Der Antrag wird dort von der zuständigen kantonalen Behörde bearbeitet. Die Webseite der «Nationale Antragsstelle Covid-Zertifikat» finden Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Nationale Antragsstelle Covid-Zertifikat (admin.ch)\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Wie kann ich ein Covid-Zertifikat vorweisen?\",\n          \"text\": \"Sie können Ihr Covid-Zertifikat in Papierform vorweisen oder Sie benutzen die «COVID Certificate»-App, um Zertifikate in der App zu speichern und direkt aus der App vorzuweisen. \\n\\nBeachten Sie, dass Sie in jedem Fall auch noch ein Ausweisdokument vorweisen müssen.\\nIn einigen Ländern wird eine ausgedruckte Version des Zertifikats verlangt und das elektronische Zertifikat nicht akzeptiert. Führen Sie auf Reisen daher stets auch die ausgedruckte Version mit.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie lange ist das Covid-Zertifikat gültig?\",\n          \"text\": \"In der Schweiz wurde die Zertifikatspflicht im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Im Ausland gelten jeweils die Gültigkeitsregeln des entsprechenden Landes. Informieren Sie sich kurz vor Ihrer Abreise auf der Webseite der Behörden Ihres Transit- oder Ziellandes, ob das Land noch zertifikatsbasierte Massnahmen hat und welche falls ja, welche Gültigkeitsdauern für Ihr Zielland festgelegt sind. Hilfreiche Webseite bei Auslandsreisen:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/de\"\n        },\n        {\n          \"title\": \"Wo sind meine Daten gespeichert?\",\n          \"text\": \"Ihre Zertifikatsdaten werden nicht in einem zentralen System des Bundes gespeichert, sondern befinden sich nur lokal auf Ihrem Mobilgerät, respektive auf dem Covid-Zertifikat in Papierform.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie werden Missbrauch und Fälschung verhindert?\",\n          \"text\": \"Der QR-Code auf dem Covid-Zertifikat enthält eine elektronische Signatur. Die Signatur ist ein wichtiges Sicherheitsmerkmal und macht das Covid-Zertifikat fälschungssicher. Das Covid-Zertifikat ist zudem nur in Kombination mit einem Ausweisdokument gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was passiert, wenn ich mein Covid-Zertifikat verliere?\",\n          \"text\": \"Ihr Covid-Zertifikat wird in keinem zentralen System des Bundes gespeichert. Bewahren Sie das Covid-Zertifikat auf Papier und/oder als PDF deshalb sorgfältig auf. Bei Verlust und Bedarf nach einem Einsatz kann für die Neuausstellung durch die Gesundheitseinrichtungen (z. B. der Test- oder Impf-stelle) eine Gebühr erhoben werden. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist das Zertifikat Light?\",\n          \"text\": \"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zur Nutzung in der Schweiz zu generieren. Das «Zertifikat Light» bestätigt das Vorliegen eines gültigen Covid-Zertifikats, ohne selbst Gesundheitsdaten zu enthalten. \\n\\nDiese datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Covid-Zertifikategewisse Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung enthalten, die auch ausgelesen werden können. Mittels dem «Zertifikat Light» wird dies verhindert.\\n\\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von 24 Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der 24 Stunden benötigt, kann das «Zertifikat Light» einfach deaktiviert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"What are COVID certificates?\",\n      \"faqSubTitle\": \"The COVID certificate makes it possible to document a COVID-19 vaccination, recovery from the virus or a negative test result in a forgery-proof manner.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"When and where can I get a COVID certificate?\",\n          \"text\": \"You can get a COVID certificate after a COVID-19 vaccination, after you have recovered from the virus, or after you have tested negative. The certificate is generally issued upon request by health care professionals on site.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How do I get a COVID certificate after I have recovered from COVID-19?\",\n          \"text\": \"Depending on the canton, the COVID certificate will, in some cases, be sent to you directly by the test centre or by the laboratory that determined your positive test result. If this is not the case, you can subsequently apply online for a COVID certificate via the “National COVID certificate application platform”. The application will be processed there by the competent cantonal authority. You will find the “National COVID certificate application platform” here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"National COVID certificate application platform\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"How can I present a COVID certificate?\",\n          \"text\": \"You can present your COVID certificate in paper form, or you can use the COVID Certificate app to save certificates in the dedicated app and present them directly from the app.\\n\\nPlease note that you will also need to show an identification document (passport or ID card) in either case. A number of countries require a printed version of the certificate and will not accept the electronic certificate. You should therefore always take the printed version with you when travelling.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How long is the COVID certificate valid?\",\n          \"text\": \"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. Abroad, the validity rules of the country in question apply. Shortly before departing you should check the authorities’ website for your transit or destination country to see whether certificate-based measures are still in force and, if so, which validity periods apply for your destination country. Helpful website for travel abroad:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/en/\"\n        },\n        {\n          \"title\": \"Where is my data stored?\",\n          \"text\": \"Your certificate data is not stored in a central government system, but only locally on your mobile device or on the paper COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How are misuse and forgery prevented?\",\n          \"text\": \"The COVID certificate QR code contains an electronic signature. This is an important security feature and makes the COVID certificate forgery-proof. Moreover, the COVID certificate is valid only in combination with an identification document (passport or ID card).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What happens if I lose my COVID certificate?\",\n          \"text\": \"Your COVID certificate is not stored in any central government system. Therefore, keep your paper and/or PDF COVID certificate in a safe place. If you lose your certificate and need to replace it, a fee may be charged for its reissue by a health care facility (e.g. the test or vaccination centre).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is the 'certificate light'\",\n          \"text\": \"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. The 'certificate light' confirms that the holder has a valid COVID certificate but does not itself contain any health-related data. \\n\\nThis alternative to the COVID certificate which contains minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as COVID certificates contain certain health-related data such as the vaccine administered or the date of vaccination, which can also be seen. The 'certificate light' prevents this.\\n\\nThe 'certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons, the 'certificate light' is only valid for 24 hours and must then be reactivated. If you need to use the normal certificate before the end of the 24-hour period, you can simply deactivate the 'certificate light'.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Le certificat COVID en bref\",\n      \"faqSubTitle\": \"Le certificat COVID atteste de manière infalsifiable une vaccination contre le COVID-19, une guérison ou un résultat de test négatif.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Quand et où puis-je obtenir un certificat COVID?\",\n          \"text\": \"Vous pouvez obtenir le certificat COVID si vous êtes vaccinés contre le COVID-19, si vous avez guéri de la maladie ou si vous présentez un résultat de test négatif. En général, le certificat est délivré sur demande, par les professionnels de la santé présents sur le site.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment puis-je obtenir un certificat COVID après avoir guéri?\",\n          \"text\": \"En fonction de votre canton, le certificat COVID vous sera délivré soit directement par le lieu de test soit par le laboratoire qui a confirmé votre résultat de test positif. Si tel n’est pas le cas, vous pouvez demander votre certificat après coup, en ligne via la « Plateforme nationale des demandes pour le certificat COVID ». Votre demande y sera traitée par les autorités cantonales compétentes. Lien :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Plateforme nationale de demandes pour le certificat COVID\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Par quel moyen puis-je présenter un certificat COVID?\",\n          \"text\": \"Vous pouvez présenter votre certificat COVID sur papier ou au moyen de l’app de stockage créée à cet effet. Vous êtes libre de choisir l’une ou l’autre solution.\\n\\nDans tous les cas, vous devez aussi présenter une pièce d’identité sur demande. Dans certains pays, une version imprimée du certificat est exigée, et le certificat électronique n’est pas accepté. Nous vous conseillons donc de vous munir de la version imprimée lorsque vous voyagez.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quelle est la durée de validité du certificat COVID ?\",\n          \"text\": \"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. À l’étranger, les règles de validité du pays concerné s’appliquent. Vérifiez peu avant votre départ sur le site Internet des autorités de votre pays de transit ou de destination si des mesures impliquant l’utilisation d’un certificat y sont appliquées et si c’est le cas, quelles règles de validité y sont appliquées.  Site Internet utile pour les voyages à l’étranger :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/fr/\"\n        },\n        {\n          \"title\": \"Où mes données sont-elles stockées?\",\n          \"text\": \"Les données de votre certificat ne sont pas stockées dans un système central de la Confédération, mais sont sauvegardées localement, sur votre appareil mobile ou sur le certificat papier.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment prévient-on les abus et les falsifications?\",\n          \"text\": \"Le code QR figurant sur le certificat COVID contient une signature électronique. Celle-ci est une caractéristique de sécurité importante qui rend le certificat infalsifiable. En outre, le certificat COVID n'est valable que sur présentation d'une pièce d'identité.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Et si je perds mon certificat COVID?\",\n          \"text\": \"Votre certificat COVID n'est pas stocké dans un système central de la Confédération. Par conséquent, nous vous recommandons de le conserver sur papier ou au format PDF dans un endroit sûr. En cas de perte ou de remplacement, le paiement d’un émolument peut être exigé pour l’établissement d’un nouveau document par les institutions sanitaires (lieu de test ou de vaccination).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu’est-ce que le certificat light ?\",\n          \"text\": \"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Le certificat « light » confirme que le certificat présenté est valide, sans contenir lui-même des données sur la santé.\\n\\nCette alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, les certificats COVID contiennent certaines données sur la santé (p. ex. le type de vaccin et la date de la vaccination) qui peuvent être lues par des tiers. Le certificat « light » empêche tout abus de ce genre.\\n\\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant 24 heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Cos'è il certificato COVID?\",\n      \"faqSubTitle\": \"Il certificato COVID offre la possibilità di provare in modo non falsificabile l'avvenuta vaccinazione, la guarigione o un risultato negativo al test.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Quando e dove posso ottenere un certificato COVID?\",\n          \"text\": \"Può ricevere un certificato COVID in seguito alla vaccinazione anti-COVID-19, all'avvenuta guarigione o a un risultato negativo al test. Normalmente, il certificato è rilasciato su richiesta dal personale medico specializzato presso le strutture sanitarie.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come posso ottenere un certificato COVID dopo essere guarito?\",\n          \"text\": \"A seconda del Cantone, il certificato COVID viene rilasciato in parte direttamente dalla struttura che ha effettuato il test o dal laboratorio in cui è stato accertato il risultato positivo al test. Qualora così non fosse, può richiedere a posteriori online un certificato COVID tramite il sito web dell’«organo nazionale per la richiesta di certificati COVID». La richiesta sarà evasa in tale sede dall’autorità cantonale competente. Il sito web dell’«organo nazionale per la richiesta di certificati COVID» si trova qui:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Organo nazionale per la richiesta di certificati COVID\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Come posso mostrare il certificato COVID?\",\n          \"text\": \"Può mostrare il Suo certificato COVID in formato cartaceo oppure salvarlo e presentarlo utilizzando l’app «COVID Certificate». \\nIn entrambi i casi, dovrà mostrare anche un documento di legittimazione.\\nIn alcuni Paesi si richiede la versione cartacea del certificato e non si accetta quello elettronico. Porti quindi sempre con sé anche la versione cartacea quando viaggia.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Fino a quando è valido il certificato COVID?\",\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. All’estero si applicano le regole di validità del rispettivo Paese. Pertanto, prima di partire, si informi consultando il sito web delle autorità del Paese di transito o di destinazione se nel Paese vigono ancora misure relative al certificato e, in caso affermativo, qual è la loro durata di validità. Sito web utile per viaggi all’estero:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/it/\"\n        },\n        {\n          \"title\": \"Dove vengono salvati i miei dati?\",\n          \"text\": \"I dati del Suo certificato non vengono salvati in un sistema centrale della Confederazione, ma si trovano solo localmente sul Suo dispositivo mobile, rispettivamente sul certificato COVID in formato cartaceo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come vengono impediti l'uso improprio e le falsificazioni?\",\n          \"text\": \"Il codice QR sul certificato COVID contiene una firma elettronica. Questa firma è un elemento di sicurezza importante e garantisce che il certificato non possa essere falsificato. Inoltre, il certificato COVID è valido solo con un documento di legittimazione.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa succede se perdo il mio certificato COVID su carta?\",\n          \"text\": \"Il Suo certificato COVID non è salvato su un sistema centrale della Confederazione Conservi quindi con cura il certificato COVID su carta e/o in formato PDF. In caso di smarrimento e sostituzione, per il nuovo rilascio da parte delle strutture sanitarie (p. es. la struttura in cui è stato effettuato il test o è stata somministrata la vaccinazione) potrà essere riscosso un emolumento.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Che cos'è il certificato light?\",\n          \"text\": \"L’app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo da utilizzare in Svizzera. Il certificato light conferma l’esistenza di un certificato valido, senza contenere dati sanitari.\\n\\nQuesto certificato con dati ridotti al minimo è un’alternativa al certificato COVID ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché i certificati COVID contengono determinati dati sanitari, come per esempio il vaccino somministrato o la data della vaccinazione, che possono anche essere visualizzati e dunque letti. Ciò può essere evitato mediante il certificato light.\\n\\nIl certificato light è disponibile unicamente in versione elettronica nell’app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il certificato light ha una validità massima di 24 ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le 24 ore, il certificato light può essere disattivato semplicemente.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Tge è il certificat COVID?\",\n      \"faqSubTitle\": \"Il certificat COVID permetta da documentar – en moda nunfalsifitgabla – ina vaccinaziun cunter COVID-19, ina infecziun u in resultat negativ dal test.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Cura e co obtegn jau in certificat COVID?\",\n          \"text\": \"In certificat COVID survegnis Vus suenter ina vaccinaziun cumpletta cunter COVID-19, suenter ina infecziun u suenter in resultat negativ dal test. Il certificat vegn per il solit emess – sin dumonda – dal persunal spezialisà da sanadad al lieu. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co obtegn jau in certificat COVID suenter ina infecziun cun COVID-19?\",\n          \"text\": \"Tut tenor il chantun vegn il certificat COVID per part emess directamain dal post da test u dal labor, nua che Voss test positiv è vegnì constatà. Sche quai n'è betg il cas, pudais Vus dumandar pli tard online in certificat COVID sur la pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID». Là vegn la dumonda elavurada da l'autoritad chantunala cumpetenta. La pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID» chattais Vus qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Plattafurma naziunala da dumondas per il certificat COVID (admin.ch)\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Co poss jau preschentar in certificat COVID?\",\n          \"text\": \"Vus pudais preschentar Voss certificat COVID sin palpiri u sur l'app «COVID Certificate». L'app permetta d'arcunar certificats e d'als preschentar directamain sin il telefonin. \\nResguardai per plaschair che Vus stuais en mintga cas preschentar er anc in document da legitimaziun.\\nEn intgins pajais vegn pretendida ina versiun stampada dal certificat ed il certificat electronic na vegn betg acceptà. Sin viadis duessas Vus perquai adina avair cun Vus er la versiun stampada.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quant ditg è il certificat COVID valaivel?\",\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. A l'exteriur valan mintgamai las reglas da valaivladad dal pajais respectiv. As infurmai curt avant Vossa partenza sur la pagina d'internet da las autoritads da Voss pajais da transit u da destinaziun, sch'i valan en il pajais anc mesiras sin basa dal certificat, e sche gea, tge duradas da valaivladad che Voss pajais da destinaziun ha fixà. Pagina d'internet utila per viadis a l'exteriur:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/de\"\n        },\n        {\n          \"title\": \"Nua vegnan arcunadas mias datas?\",\n          \"text\": \"Las datas da Voss certificat na vegnan betg arcunadas en in sistem central da la Confederaziun, mabain mo localmain sin Voss telefonin resp. sin il certificat COVID sin palpiri.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co vegnan impedids abus e falsificaziuns?\",\n          \"text\": \"Il code QR sin Voss certificat COVID cuntegna ina signatura digitala. La signatura è ina impurtanta caracteristica da segirezza che impedescha da falsifitgar il certificat COVID. Il certificat COVID è ultra da quai valaivel mo en cumbinaziun cun in document da legitimaziun.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge capita, sche jau perd mes certificat COVID?\",\n          \"text\": \"Voss certificat COVID na vegn betg arcunà en in sistem central da la Confederaziun. Tegnai perquai en salv cun quità il certificat COVID sin palpiri e/u sco PDF. Sche Vus avais pers il certificat u sche Vus duvrais in certificat substitutiv, po l'instituziun da sanadad (p.ex. il post da test u da vaccinaziun) pretender ina taxa per emetter in nov certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in certificat light?\",\n          \"text\": \"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Il «certificat light» conferma ch'igl è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad. \\n\\nQuest certificat cun ina quantitad minimala da datas è vegnì sviluppà sco alternativa al certificat COVID sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai ch'ils certificats COVID cuntegnan tschertas datas da sanadad ch'èn visiblas, sco per exempel il vaccin u la data da la vaccinaziun. Cun agid dal «certificat light» vegn quai impedì.\\n\\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da 24 uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà avant che las 24  uras èn passadas, po il «certificat light» simplamain vegnir deactivà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"works\": {\n    \"de\": {\n      \"faqTitle\": \"Wie funktioniert \\ndie App?\",\n      \"faqSubTitle\": \"Mit der COVID Certificate App können Sie Covid-Zertifikate einfach und sicher auf Ihrem Mobilgerät abspeichern und vorweisen.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie kann ich ein Covid-Zertifikat zur App hinzufügen?\",\n          \"text\": \"Um ein Covid-Zertifikat zur App hinzuzufügen, benötigen Sie das Ihnen ausgestellte Originalzertifikat auf Papier oder als PDF-Dokument. Den darauf abgebildeten QR-Code können Sie mit der COVID Certificate App scannen und hinzufügen. Anschliessend erscheint das Covid-Zertifikat direkt in der App.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können auch mehrere Covid-Zertifikate hinzugefügt werden?\",\n          \"text\": \"Ja das ist möglich. So können Sie z. B. alle Covid-Zertifikate von Familienangehörigen in Ihrer App speichern. Auch in diesem Fall gilt: Das Covid-Zertifikat ist nur in Kombination mit einem Ausweisdokument des Zertifikatsinhabers / der Zertifikatsinhaberin gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist ein Transfer-Code?\",\n          \"text\": \"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat, z. B. nach einem Covid-Test, direkt in die App geliefert.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wo sehe ich, ob mein Covid-Zertifikat gültig ist?\",\n          \"text\": \"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Deshalb wird in der App das Feld «Gültigkeit in der Schweiz» nicht mehr dargestellt. Stattdessen zeigt sie den Zeitpunkt der Impfung bzw. des Tests an. \\n\\nEs wird auch angezeigt, wie viele Tage eine Impfung bzw. ein Test her ist. So können Sie einfacher feststellen, ob Ihr Zertifikat den Gültigkeitsregeln Ihres Ziellandes entspricht (falls das Land noch ein Covid-Zertifikat voraussetzt). Im Ausland gelten immer die Regeln des entsprechenden Landes.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Kann ich die App auch offline verwenden?\",\n          \"text\": \"Sie können die App ohne eine Internetverbindung verwenden. Auch im Offline-Modus können Zertifikate vorgewiesen und von den Prüfern gescannt und verifiziert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie sind meine Daten geschützt?\",\n          \"text\": \"Ihre persönlichen Daten werden in keinem zentralen System gespeichert, sondern befinden sich ausschliesslich bei Ihnen lokal auf dem Mobilgerät, respektive im QR-Code auf dem Covid-Zertifikat in Papierform.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Welche Daten sind im QR-Code enthalten?\",\n          \"text\": \"Der QR-Code enthält alle Informationen, die Sie auf Ihrem Covid-Zertifikat in Papierform im Klartext finden. Weiter befindet sich im QR-Code eine elektronische Signatur, mit der sich die Echtheit des Covid-Zertifikats überprüfen lässt. Dadurch wird das Covid-Zertifikat fälschungssicher.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Ich habe das Covid-Zertifikat ausschliesslich elektronisch in der App. Wie komme ich zum Zertifikat als PDF oder auf Papier?\",\n          \"text\": \"In der «COVID Certificate»-App finden Sie in der Detailansicht des elektronischen Covid-Zertifikats die Funktion «Exportieren». Damit können Sie ein PDF erstellen, dieses speichern und ausdrucken.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was muss ich tun, wenn ich das Covid-Zertifikat oder die App lösche?\",\n          \"text\": \"Sie können Ihr Covid-Zertifikat einfach wieder auf Ihrem Mobilgerät speichern. Laden Sie dazu die App erneut herunter und scannen Sie anschliessend den QR-Code auf Ihrem Covid-Zertifikat auf Papier oder als PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How the app works\",\n      \"faqSubTitle\": \"With the COVID Certificate app, you can easily and securely store and present COVID certificates on your mobile device.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"How can I add a COVID certificate to the app?\",\n          \"text\": \"To add a COVID certificate to the app, you need the original certificate issued to you on paper or as a PDF document. You can use the COVID certificate app to scan the QR code on the original and add it to the app. The COVID certificate will then appear directly in the app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can several COVID certificates be added?\",\n          \"text\": \"Yes, that is possible. For example, you can save the COVID certificates of all family members in your app. Also in this case, each COVID certificate is valid only in combination with an identification document (passport or ID card) of the certificate holder.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is a transfer code?\",\n          \"text\": \"The transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you receive your certificate (e.g. after a test) directly in the application.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Where can I see if my COVID certificate is valid?\",\n          \"text\": \"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. The “Validity in Switzerland” section is thus no longer displayed in the app. Instead, the time of the vaccination or test is shown. \\n\\nThe number of days that have elapsed since a vaccination or test is also shown. This makes it easier for you to determine whether your certificate complies with the validity rules of your destination country (if the country in question still requires a COVID certificate). When abroad, it is always the rules of the country in question that apply.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can I use the app offline?\",\n          \"text\": \"You can use the app without an internet connection, so you can still call up your certificates and present them for scanning and verification.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How is my data protected?\",\n          \"text\": \"Your personal data is not stored in a central system; instead, it can be found solely locally on the mobile device or in the QR code in the case of the paper COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What data is contained in the QR code?\",\n          \"text\": \"The QR code contains all the information that is found in plain text on your paper COVID certificate. The QR code also contains an electronic signature that can be used to check the authenticity of the COVID certificate. This makes the COVID certificate forgery-proof.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I only have my COVID certificate electronically in the app. How can I get the certificate as a PDF or on paper?\",\n          \"text\": \"In the detailed view of the electronic COVID certificate in the COVID Certificate app you’ll find the Export function. You can use this to generate, save and print a PDF\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What do I need to do if I delete the COVID certificate or the app?\",\n          \"text\": \"You can easily restore your COVID certificate on your mobile device. To do so, download the app again and then scan the QR code on your paper or PDF COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Comment l'app \\nfonctionne-t-elle?\",\n      \"faqSubTitle\": \"L'app vous permet de stocker des certificats COVID de manière simple et sûre sur votre appareil mobile et de les présenter au moyen de ce dernier.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment ajouter un certificat COVID à l'app?\",\n          \"text\": \"Pour ajouter un certificat COVID à l'app, vous avez besoin du certificat original qui vous a été délivré sur papier ou par voie électronique, au format PDF. Au moyen de l'app, vous pouvez scanner le code QR figurant sur ce document. Ensuite, le certificat COVID apparaît directement dans l'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je ajouter plusieurs certificats COVID?\",\n          \"text\": \"Oui. Vous pouvez par exemple stocker dans l'app les certificats COVID de tous les membres de votre famille. À noter également dans ce cas qu'un certificat COVID n'est valable que si son détenteur présente une pièce d'identité.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu'est-ce qu'un code de transfert ?\",\n          \"text\": \"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat (p. ex. après un test) directement dans l’application.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Où voir si mon certificat COVID est valable ?\",\n          \"text\": \"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. C’est pourquoi le champ « Validité en Suisse » n’est plus représenté dans l’application, qui indique par contre le nombre de jours écoulés depuis une vaccination ou un test. \\n\\nL’application indique aussi le nombre de jours écoulés depuis une vaccination ou un test. Vous pouvez ainsi vérifier plus facilement si votre certificat correspond aux règles de validité de votre pays de destination (au cas où ce pays exige encore un certificat COVID). À l’étranger, les règles en vigueur varient d’un pays à l’autre.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je également utiliser l’application hors ligne ?\",\n          \"text\": \"Oui, vous pouvez utiliser l’application sans connexion Internet. Les certificats peuvent aussi être présentés, scannés et vérifiés en mode hors ligne.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment mes données sont-elles protégées?\",\n          \"text\": \"Vos données personnelles ne sont pas stockées dans un système central, mais ne sont sauvegardées que localement, sur votre appareil mobile ou dans le code QR figurant sur le certificat papier.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que contient le code QR?\",\n          \"text\": \"Le code QR contient toutes les informations qui apparaissent en clair sur le certificat papier. En outre, il renferme une signature électronique qui permet de vérifier l'authenticité du certificat COVID. Par conséquent, le certificat COVID est infalsifiable.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Mon certificat COVID n’est disponible qu’au format électronique dans l’application. Comment puis-je obtenir mon certificat en PDF ou sur papier ?\",\n          \"text\": \"Dans l’application « COVID Certificate », vous trouvez la fonction « Exporter » dans la vue détaillée du certificat. Vous pouvez ainsi générer un PDF afin de le sauvegarder et de l’imprimer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Et si je supprime le certificat COVID ou l'app?\",\n          \"text\": \"Vous pouvez réenregistrer facilement votre certificat COVID sur votre appareil mobile. Il vous suffit de télécharger de nouveau l'app, puis de scanner le code QR figurant sur le certificat original, établi sur papier ou au format PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Come funziona \\nl'app?\",\n      \"faqSubTitle\": \"Con l'app COVID Certificate può salvare e mostrare i certificati COVID in modo semplice e sicuro sul Suo dispositivo mobile.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Come posso inserire un certificato COVID sulla app?\",\n          \"text\": \"Per inserire sull'app un certificato COVID serve il certificato originale rilasciatole su carta o in formato PDF. Utilizzando l'app COVID Certificate può aggiungere il certificato inquadrando il codice QR raffigurato sul certificato. In questo modo, il certificato COVID appare direttamente sull'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"È possibile aggiungere più certificati COVID?\",\n          \"text\": \"Sì, è possibile. Ad esempio, può salvare nella Sua app i certificati COVID dei suoi familiari. Anche in questo caso, il certificato COVID è valido solo con un documento di legittimazione del titolare.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cos'è un codice di trasferimento?\",\n          \"text\": \"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app, ad esempio dopo aver fatto un test COVID.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Dove posso verificare se il mio certificato COVID è valido?\",\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. Pertanto il campo «Validità in Svizzera» non è più visualizzato nell’app. Al suo posto si trova la data della vaccinazione o del test.\\n\\nViene anche visualizzato quanti giorni sono trascorsi da una vaccinazione o da un test. In tal modo può determinare più facilmente se il Suo certificato è conforme alle regole di validità del Paese di destinazione (qualora il Paese richiedesse ancora un certificato COVID). All’estero si applicano sempre le regole di validità del rispettivo Paese.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Posso utilizzare l’app anche offline?\",\n          \"text\": \"È possibile utilizzare l’app senza connessione Internet. I certificati possono essere presentati, nonché scansionati e verificati dagli addetti anche in modalità offline.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come sono protetti i miei dati?\",\n          \"text\": \"I Suoi dati personali non sono salvati in un sistema centrale ma unicamente sul Suo dispositivo mobile oppure nel codice QR indicato sul certificato COVID in formato cartaceo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali dati contiene il codice QR?\",\n          \"text\": \"Il codice QR contiene tutte le informazioni che trova nel testo del Suo certificato COVID in formato cartaceo. Nel codice QR si trova anche una firma elettronica che consente di verificare la validità del certificato COVID. La firma elettronica impedisce la falsificazione del certificato COVID.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Ho il certificato COVID esclusivamente in formato elettronico nell’app. Come posso ottenerne uno in formato PDF o cartaceo?\",\n          \"text\": \"Nella vista di dettaglio del certificato COVID elettronico dell’app «COVID Certificate» è disponibile la funzione «Esporta», con la quale è possibile creare un PDF, salvarlo e stamparlo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa devo fare se elimino il file contenente il certificato COVID o l'app?\",\n          \"text\": \"Può semplicemente risalvare il certificato COVID sul Suo dispositivo mobile. Per farlo, scarichi nuovamente l'app e poi scansioni il codice QR che trova sul Suo certificato COVID in formato cartaceo o PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Co funcziuna \\nl'app?\",\n      \"faqSubTitle\": \"Cun l'app COVID Certificate pudais Vus arcunar e preschentar en moda simpla e segira certificats COVID sin Voss telefonin.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Co poss jau agiuntar in certificat COVID a l'app?\",\n          \"text\": \"Per agiuntar in certificat COVID a l'app, duvrais Vus il certificat original ch'è vegnì emess per Vus sin palpiri u en furma da PDF. Cun l'app COVID Certificate pudais Vus alura scannar il code QR sin il certificat ed al agiuntar a l'app. Silsuenter cumpara il certificat COVID directamain en l'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon vegnir agiuntads er plirs certificats COVID?\",\n          \"text\": \"Gea, quai è pussaivel. Vus pudais p.ex. arcunar en Vossa app ils certificats COVID da tut Vossas confamigliaras e da tut Voss confamigliars. Er en quest cas vala: Il certificat COVID è valaivel mo en cumbinaziun cun in document da legitimaziun  da la possessura u dal possessur dal certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in code da transfer?\",\n          \"text\": \"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app, p.ex. suenter in test dal coronavirus.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Nua ves jau, sche mes certificat COVID è valaivel?\",\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. Sin il certificat COVID na vegn perquai betg pli mussà il champ «Valaivladad en Svizra». Empè da quai mussa l'app la data da la vaccinaziun resp. dal test. \\n\\nI vegn er mussà, avant quants dis ch'igl è vegnì fatg ina vaccinaziun resp. in test. Uschia èsi pli facil per Vus da constatar, sche Voss certificat correspunda a las reglas da valaivladad da Voss pajais da destinaziun (premess ch'il pajais pretenda anc in certificat Covid). A l'exteriur valan adina las reglas dal pajais respectiv. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Poss jau er duvrar l'app offline?\",\n          \"text\": \"Vus pudais duvrar l'app senza ina colliaziun cun l'internet. Er en il modus offline pon ils certificats vegnir preschentads sco er scannads e verifitgads da las controlladras e dals controlladers.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co vegnan protegidas mias datas?\",\n          \"text\": \"Vossas datas persunalas na vegnan betg arcunadas en in sistem central, mabain mo localmain sin Voss telefonin resp. en il code QR sin Voss certificat COVID en furma da palpiri.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge datas cuntegna il code QR?\",\n          \"text\": \"Il code QR cuntegna tut las infurmaziuns che Vus chattais sin Voss certificat COVID en furma da palpiri en text betg criptà. Plinavant sa chatta ina signatura digitala en il code QR. Cun quella po vegnir verifitgada l'autenticitad da Voss certificat COVID. Uschia na po il certificat COVID betg vegnir falsifitgà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Jau hai il certificat COVID mo en moda digitala en l'app. Co survegn jau il certificat sco PDF u sin palpiri?\",\n          \"text\": \"En la vista detagliada dal certificat COVID digital en l'app «COVID Certificate» chattais Vus la funcziun «Exportar». Uschia pudais Vus generar in PDF, l'arcunar ed al stampar.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge stoss jau far, sche jau stiz il certificat COVID u l'app?\",\n          \"text\": \"Vus pudais simplamain arcunar anc ina giada il certificat COVID sin Voss telefonin. Chargiai giu danovamain l’app e scannai alura il code QR sin Voss certificat COVID sin palpiri u en furma da PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"androidTransferCheckIntervalMs\": 7200000,\n  \"androidTransferCheckBackoffMs\": 30000,\n  \"timeshiftDetectionEnabled\": true,\n  \"transferQuestions\": {\n    \"de\": {\n      \"faqTitle\": \"Covid-Zertifikate direkt in die App geliefert\",\n      \"faqSubTitle\": \"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat, z. B. nach einem Covid-Test, direkt in die App geliefert.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wer bietet die Übermittlung per Transfer-Code an?\",\n          \"text\": \"Wenn Sie einen Covid-Test machen (PCR-Test oder Antigen-Schnelltest), kann der Transfer-Code zur schnellen Übermittlung von Covid-Zertifikaten zum Einsatz kommen.\\n\\nInformieren Sie sich bei Ihrem Testcenter, in der Apotheke oder bei Ihrem Arzt, ob die Übermittlung per Transfer-Code angeboten wird.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können Transfer-Codes auch zur Übermittlung von Impfzertifikaten verwendet werden?\",\n          \"text\": \"Aktuell ist die Übermittlung per Transfer-Code auf Covid-Tests ausgelegt. Wie Sie ein Covid-Zertifikat nach einer Impfung erhalten erfahren Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Weitere Informationen\",\n          \"linkUrl\": \"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"\n        },\n        {\n          \"title\": \"Wie funktioniert die Übermittlung per Transfer-Code?\",\n          \"text\": \"Falls die Stelle, die den Covid-Test durchführt, die Übermittlung per Transfer-Code anbietet, werden Sie bereits bei der Anmeldung oder der Testentnahme nach einem Transfer-Code gefragt.\\n\\nDen Transfer-Code können Sie in der «COVID Certificate»-App erstellen. Tippen Sie dazu auf dem Startbildschirm auf «Hinzufügen» resp. auf das «Plus»-Symbol unten rechts. Danach tippen Sie auf «Transfer-Code erstellen».\\n\\nDie App zeigt Ihnen einen 9-stelligen Code an. Diesen können Sie entweder bei der Anmeldung in ein Formular eintragen oder direkt bei der Testentnahme angeben.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Kann ich den Transfer-Code mehrmals benutzen?\",\n          \"text\": \"Nein, ein Transfer-Code kann nur einmal verwendet werden. Falls Sie mehrere Zertifikate z. B. von Familienangehörigen empfangen möchten, erstellen Sie bitte für jedes Zertifikat einen neuen Code.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"Receive COVID certificates directly in the app\",\n      \"faqSubTitle\": \"The transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you receive your certificate (e.g. after a test) directly in the application.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Who offers the transmission of the COVID certificate by transfer code?\",\n          \"text\": \"If you perform a COVID test (PCR test or rapid antigen test), the transfer code can be used to quickly transmit the COVID certificate.\\n\\nAsk your test centre, pharmacy or doctor if this option is available.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can the transfer codes also be used for the transmission of vaccination certificates?\",\n          \"text\": \"Currently, the transmission of the certificate by transfer code is reserved for COVID tests. To find out how to obtain a COVID certificate after vaccination, click here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Further information\",\n          \"linkUrl\": \"https://foph-coronavirus.ch/certificate/how-do-i-get-a-covid-certificate-and-how-do-i-use-it/\"\n        },\n        {\n          \"title\": \"How does the transmission of the certificate by transfer code work?\",\n          \"text\": \"If the test centre offers to transmit the certificate by transfer code, you will be asked for a code at the time of registration or testing.\\n\\nYou can create the transfer code in the \\\"COVID Certificate\\\" application: press \\\"Add\\\" on the home screen or the \\\"More\\\" symbol at the bottom right, then \\\"Create a transfer code\\\".\\n\\nThe application will show you a 9-character code, which you can either enter in a form when you register or pass on directly during the test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can I use the same transfer code more than once?\",\n          \"text\": \"No, a transfer code can only be used once. If you wish to obtain several certificates (e.g. for your relatives), please create a new code for each certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Recevez les certificats COVID directement dans l'application\",\n      \"faqSubTitle\": \"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat (p. ex. après un test) directement dans l’application.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Qui propose la transmission du certificat COVID par code de transfert ?\",\n          \"text\": \"Si vous effectuez un test COVID (test PCR ou test rapide antigénique), le code de transfert peut être utilisé pour transmettre rapidement le certificat COVID.\\n\\nRenseignez-vous auprès de votre centre de test, de votre pharmacie ou de votre médecin pour savoir si cette option est proposée.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Les codes de transfert peuvent-ils aussi être utilisés pour la transmission de certificats de vaccination ?\",\n          \"text\": \"Actuellement, la transmission du certificat par code de transfert est réservée aux tests COVID. Pour savoir comment obtenir un certificat COVID après une vaccination, cliquez ici :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Informations supplémentaires\",\n          \"linkUrl\": \"https://ofsp-coronavirus.ch/certificat/comment-obtenir-le-certificat-covid-et-comment-men-servir/\"\n        },\n        {\n          \"title\": \"Comment fonctionne la transmission du certificat par code de transfert ?\",\n          \"text\": \"Si le centre de test propose de transmettre le certificat par code de transfert, un code vous sera demandé au moment de l’inscription ou du test.\\n\\nVous pouvez créer le code de transfert dans l’application « COVID Certificate » : appuyez sur « Ajouter » sur l’écran d’accueil ou sur le symbole « Plus » en bas à droite, puis sur « Créer un code de transfert ».\\n\\nL’application vous montre un code à 9 caractères, que vous pouvez soit inscrire dans un formulaire lors de l’inscription, soit transmettre directement lors du test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je utiliser plusieurs fois le même code de transfert ?\",\n          \"text\": \"Non, un code de transfert ne peut être utilisé qu’une seule fois. Si vous souhaitez obtenir plusieurs certificats (p. ex. pour vos proches), veuillez créer un nouveau code pour chaque certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Ricevere i certificati COVID direttamente nell’app\",\n      \"faqSubTitle\": \"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app, ad esempio dopo aver fatto un test COVID.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Chi offre la trasmissione mediante codice di trasferimento?\",\n          \"text\": \"Quando fai un test COVID (test PCR o test antigenico rapido), è possibile impiegare il codice di trasferimento per la trasmissione rapida dei certificati COVID.\\n\\nChiedi al centro di test, alla farmacia o al medico se offrono la trasmissione mediante codice di trasferimento.\\n\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I codici di trasferimento possono essere impiegati anche per trasmettere i certificati di vaccinazione?\",\n          \"text\": \"Attualmente la trasmissione mediante codice di trasferimento funziona solo per i test COVID. Qui trovi maggiori informazioni su come ottenere un certificato COVID dopo una vaccinazione:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriori informazioni\",\n          \"linkUrl\": \"https://ufsp-coronavirus.ch/certificato/come-si-ottiene-il-certificato-covid-e-come-si-impiega/\"\n        },\n        {\n          \"title\": \"Come funziona la trasmissione mediante codice di trasferimento?\",\n          \"text\": \"Se il servizio che effettua il test COVID offre la trasmissione mediante codice di trasferimento, te ne chiede uno già al momento della prenotazione o dell’esecuzione del test.\\n\\nPuoi creare il codice di trasferimento nell’app «COVID Certificate» toccando il pulsante «Aggiungi» nella schermata iniziale o il simbolo «Più» in basso a destra. Poi tocca «Crea codice di trasferimento».\\n\\nL’app visualizza un codice a 9 cifre, che puoi inserire nel modulo di prenotazione o fornire direttamente al momento dell’esecuzione del test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Posso utilizzare lo stesso codice di trasferimento più volte?\",\n          \"text\": \"No, un codice di trasferimento può essere utilizzato una volta sola. Se desideri ricevere più di un certificato, per esempio i certificati dei tuoi familiari, crea un nuovo codice per ciascun certificato.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Certificats COVID furnids directamain en l'app\",\n      \"faqSubTitle\": \"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app, p.ex. suenter in test dal coronavirus.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Tgi porscha la transmissiun cun in code da transfer?\",\n          \"text\": \"Sche Vus faschais in test dal coronavirus (test da PCR u test svelt d'antigens), po il code da transfer vegnir en funcziun per transmetter sveltamain ils certificats COVID.\\n\\nAs infurmai tar Voss center da test, en l'apoteca u tar Vossa media u Voss medi, sche la transmissiun cun in code da transfer è pussaivla.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon ils codes da transfer vegnir duvrads er per transmetter certificats da vaccinaziun?\",\n          \"text\": \"Actualmain è la transmissiun cun in code da transfer concepì per tests dal coronavirus. Co che Vus survegnis in certificat COVID suenter ina vaccinaziun, vegnis Vus a savair qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriuras infurmaziuns\",\n          \"linkUrl\": \"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"\n        },\n        {\n          \"title\": \"Co funcziuna la transmissiun cun in code da transfer?\",\n          \"text\": \"En cas ch'il post che fa il test dal coronavirus porscha la transmissiun cun in code da transfer, vegnis Vus supplitgà d'inditgar Voss code da transfer gia tar l'annunzia u a chaschun da la prelevaziun dal test.\\n\\nIl code da transfer pudais Vus crear en l'app «COVID Certificate». Smatgai sin la pagina iniziala sin «Agiuntar» resp. sin il simbol «+» sutvart a dretga. Smatgai alura sin «Crear in code da transfer».\\n\\nL'app As mussa in code da 9 cifras. Quest code pudais Vus u endatar tar l'annunzia en in formular u inditgar directamain a chaschun da la prelevaziun dal test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Poss jau duvrar pliras giadas il medem code da transfer?\",\n          \"text\": \"Na, in code da transfer po vegnir duvrà mo ina giada. En cas che Vus vulais retschaiver plirs certificats, per exempel da confamigliaras u confamigliars, creai per plaschair per mintga certificat in nov code.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"transferWorks\": {\n    \"de\": {\n      \"faqTitle\": \"So funktioniert der Transfer\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"Die App prüft regelmässig, ob ein Covid-Zertifikat für Ihren Transfer-Code verfügbar ist.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Sobald das Covid-Zertifikat verfügbar ist, erscheint es in der App. Wenn Sie Mitteilungen aktiviert haben, werden Sie von der App benachrichtigt.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Nach 30 Tagen läuft der Transfer-Code ab. Danach wartet die App noch für weitere 72h auf einen möglichen Transfer, bevor der Transfer-Code ungültig wird.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie sind meine Daten beim Transfer geschützt?\",\n          \"text\": \"Für den Transfer wird Ihr Covid-Zertifikat verschlüsselt bereitgestellt. Der Transfer-Code stellt sicher, dass nur Ihre App das Covid-Zertifikat empfangen kann. Unmittelbar nach dem Transfer werden die Daten wieder vom Server gelöscht.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was kann ich tun, wenn das Zertifikat nicht ankommt?\",\n          \"text\": \"Sobald das Zertifikat vom Labor oder Testcenter generiert wurde, steht es zum Transfer zur Verfügung. Stellen Sie sicher, dass Ihr Smartphone mit dem Internet verbunden ist, um Zertifikate empfangen zu können.\\n\\nSollte ihr Covid-Zertifikat dennoch nicht eintreffen, fragen Sie bei der Stelle nach, die den Test durchgeführt hat (Testcenter, Apotheke, Ärztin / Arzt).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was passiert bei einem positiven Testresultat?\",\n          \"text\": \"Bei einem positiven Antigen-Schnelltest erhalten Sie vom Labor kein Covid-Zertifikat. \\n\\nBei einem positiven PCR-Test erhalten Sie ein Covid-Zertifikat für Genesene. Es ist ab dem 11. Tag nach der Testentnahme gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How does the transfer work?\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"The application regularly checks whether a COVID certificate is available for your transfer code.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"As soon as the COVID certificate is available, it appears in the application. If you have activated notifications, you will receive a message from the application.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"The transfer code expires after 30 days. After this period, the application waits for any further transfers for 72 hours. After that, the transfer code is no longer valid.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"How is my data secured during the transfer?\",\n          \"text\": \"For the transfer, your COVID certificate is delivered in encrypted form. The transfer code ensures that only your application can receive the certificate. The data is deleted from the server immediately after the transfer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What if my certificate does not arrive in the application?\",\n          \"text\": \"Once the certificate has been generated by the laboratory or test centre, it is available for transfer. Make sure that your smartphone is connected to the Internet to receive certificates.\\n\\nIf you still do not receive your certificate, contact the place where you performed the test (centre, pharmacy, doctor's practice).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What happens if I test positive?\",\n          \"text\": \"In case of a positive rapid antigen test, you will not receive a COVID certificate from the laboratory.\\n\\nIn case of a positive PCR test, you will receive a COVID certificate for cured persons, valid from the 11th day after the test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Comment fonctionne le transfert ?\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L’application vérifie régulièrement si un certificat COVID est disponible pour votre code de transfert.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Dès que le certificat COVID est disponible, il apparaît dans l’application. Si vous avez activé les notifications, vous recevrez un message de l’application.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Le code de transfert expire après 30 jours. Une fois ce délai passé, l’application attend tout autre transfert pendant 72 h. Ensuite, le code de transfert n’est plus valable.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment mes données sont-elles sécurisées lors du transfert ?\",\n          \"text\": \"Pour le transfert, votre certificat COVID est fourni sous forme cryptée. Le code de transfert garantit que seule votre application peut recevoir le certificat. Les données sont supprimées du serveur immédiatement après le transfert.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que faire si mon certificat n’arrive pas dans l’application ?\",\n          \"text\": \"Dès que le certificat a été généré par le laboratoire ou le centre de test, il est disponible pour le transfert. Vérifiez que votre smartphone est connecté à Internet pour recevoir des certificats.\\n\\nSi malgré tout vous ne recevez pas votre certificat, adressez-vous au lieu où vous avez effectué le test (centre, pharmacie, cabinet médical).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que se passe-t-il en cas de test positif ?\",\n          \"text\": \"En cas de test rapide antigénique positif, vous ne recevrez pas de certificat COVID du laboratoire.\\n\\nEn cas de test PCR positif, vous recevrez un certificat COVID pour personnes guéries, valable à partir du 11e jour suivant le test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Il trasferimento funziona così\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L’app verifica periodicamente se è disponibile un certificato COVID per il tuo codice di trasferimento.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Non appena il certificato COVID è disponibile, viene visualizzato nell’app. Se hai attivato le notifiche, ne riceverai una dall’app.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Il codice di trasferimento scade dopo 30 giorni. Poi l’app attende un eventuale trasferimento per altre 72 ore prima di considerare scaduto il codice.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Come sono protetti i miei dati durante il trasferimento?\",\n          \"text\": \"Il tuo certificato COVID è messo a disposizione per il trasferimento in forma criptata. Il codice di trasferimento assicura che soltanto la tua app sia in grado di riceverlo. I dati sono eliminati dal server immediatamente dopo il trasferimento.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa posso fare se il certificato non arriva?\",\n          \"text\": \"Non appena il certificato è stato generato dal laboratorio o dal centro di test, è disponibile per il trasferimento. Accertati che il tuo smartphone sia connesso a Internet per poter ricevere i certificati.\\n\\nSe comunque non dovessi ricevere il tuo certificato COVID, rivolgiti al servizio che ha effettuato il test (centro di test, farmacia, medico).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa accade in caso di risultato positivo del test?\",\n          \"text\": \"In caso di test antigenico positivo, non ricevi alcun certificato di test dal laboratorio. \\n\\nIn caso di test PCR positivo, ricevi un certificato COVID per persone guarite, valido a partire dall’undicesimo giorno dopo l’esecuzione del test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Uschia funcziuna il transfer\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L'app verifitgescha regularmain, schebain in certificat COVID è disponibel per Voss code da transfer.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Uschespert ch'il certificat COVID è disponibel, cumpara el en l'app. Sche Vus avais activà ils avis, vegnis Vus infurmada u infurmà da l'app.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Suenter 30 dis scada il code da transfer. Silsuenter spetga l'app anc ulteriuras 72 uras, avant ch'il code da transfer daventa nunvalaivel.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Co vegnan protegidas mias datas tar il transfer?\",\n          \"text\": \"Per il transfer vegn Voss certificat COVID mess a disposiziun en moda codifitgada. Il code da transfer garantescha che mo Vossa app po retschaiver il certificat COVID. Las datas vegnan puspè stizzadas dal server immediatamain suenter il transfer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge poss jau far, sch'il certificat n'arriva betg?\",\n          \"text\": \"Uschespert ch'il certificat è vegnì generà dal labor u dal center da test, stat el a disposiziun per il transfer. Guardai che Voss smartphone saja collià cun l'internet per pudair retschaiver certificats.\\n\\nEn cas che Voss certificat COVID n'arriva tuttina betg, As drizzai al post che ha fatg il test (center da test, apoteca, media u medi).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge capita en cas d'in test positiv?\",\n          \"text\": \"En cas d'in test svelt d'antigens positiv na survegnis Vus betg in certificat COVID dal labor.\\n\\nEn cas d'in test da PCR positiv survegnis Vus in certificat COVID per persunas guaridas. El è valaivel a partir dal 11. di suenter la prelevaziun dal test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"lightCertificateActive\": true,\n  \"pdfGenerationActive\": true,\n  \"vaccinationHints\": {\n    \"de\": [\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie unbeschwert in die meisten Länder reisen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie sich vor Erkrankung und einem allfälligen schweren Verlauf schützen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie auf sichere Art immun werden.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie mithelfen, die Krankheitslast zu reduzieren.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie helfen, die Auswirkungen der Pandemie zu bekämpfen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie die Langzeitfolgen einer Covid-19-Erkrankung vermeiden.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie dazu beitragen, das Gesundheitswesen zu entlasten.\"\n      }\n    ],\n    \"en\": [\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means hassle-free travel to most countries. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means protection from infection and severe disease. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means immunity the safe way.\"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to reduce the disease burden. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to control the impact of the pandemic. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means preventing long COVID.\"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to relieve the pressure on the health system.\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet de voyager sereinement dans la plupart des pays.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination vous protège contre le COVID-19 et, le cas échéant, contre une évolution grave de la maladie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet de vous immuniser en toute sécurité.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à réduire la charge de morbidité.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous contribuez à la lutte contre les conséquences de la pandémie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet d’éviter les effets à long terme de la maladie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à décharger le système de santé.\"\n      }\n    ],\n    \"it\": [\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi viaggiare senza preoccupazioni nella maggior parte dei Paesi.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi proteggerti dalla malattia e da un eventuale decorso grave.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi immunizzarti in modo sicuro.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a ridurre il carico di malattia.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a combattere le ripercussioni della pandemia.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi evitare le conseguenze a lungo termine di una malattia COVID-19.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a sgravare il sistema sanitario.\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus viagiar libramain en la gronda part dals pajais.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus As proteger cunter ina infecziun e cunter in eventual grev decurs da la malsogna.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus As immunisar en moda segira.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a reducir la chargia da la malsogna.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a cumbatter cunter las consequenzas da la pandemia.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus evitar las consequenzas da lunga durada d'ina infecziun cun COVID-19.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a distgargiar il sistem da sanadad.\"\n      }\n    ]\n  },\n  \"foreignRulesHints\": {\n    \"de\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"Für die Aktualität und Vollständigkeit der gegebenen Informationen übernimmt der Bund keine Haftung.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Die Einreiseregeln können sich ändern. Prüfen Sie daher die Gültigkeit kurz vor der Abreise und informieren Sie sich zusätzlich online über die aktuellen Einreiseregeln des Ziellandes.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Die oben genannten Angaben beziehen sich nur auf die Einreiseregeln des Ziellandes. Für allfällige zertifikatspflichtige Bereiche innerhalb des Landes können andere Regeln gelten.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Land nicht gefunden? Nicht alle Länder akzeptieren Covid-Zertifikate oder es wurden keine Einreiseregeln verfügbar gemacht.\"\n      }\n    ],\n    \"en\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"The federal government assumes no liability for the up-to-dateness or completeness of the information provided.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Entry rules can change. So check the validity shortly before you depart, and go online to make sure of the latest entry rules for your destination country.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"The above information relates only to the rules for entering your destination country. Different rules may apply to settings where a certificate is required within the country.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Couldn’t find the country you were looking for? Not all countries accept COVID certificates; it might also be that no entry rules have been made available.\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"La Confédération décline toute responsabilité en ce qui concerne l’actualité et l’exhaustivité des informations fournies.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Les dispositions d’entrée peuvent changer. Vérifiez donc la validité de votre certificat avant votre départ et renseignez-vous également en ligne sur les dispositions d’entrée en vigueur dans votre pays de destination.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Les informations ci-dessus ne concernent que les dispositions d’entrée du pays de destination. Dans le pays, d’autres règles peuvent s’appliquer aux éventuels domaines soumis à l’obligation de présenter un certificat.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Vous n’avez pas trouvé votre pays de destination ? Il se peut que certains pays ne reconnaissent pas le certificat COVID ou qu’aucune disposition d’entrée ne soit disponible.\"\n      }\n    ],\n    \"it\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"La Confederazione non si assume la responsabilità per l’attualità e la completezza delle informazioni fornite.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Le disposizioni d’entrata possono cambiare. Verificate poco prima della partenza se il vostro certificato è valido e informatevi ulteriormente online sulle disposizioni d’entrata attuali del Paese di destinazione.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Le informazioni sopra indicate si riferiscono solo alle disposizioni d’entrata del Paese di destinazione. Per eventuali settori soggetti all’obbligo di certificato all’interno del Paese possono vigere altre regole.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Non avete trovato un Paese? Non tutti i Paesi accettano i certificati COVID o rendono disponibili le regole d’entrata.\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"Per l'actualitad e la cumplettadad da las infurmaziuns na surpiglia la Confederaziun nagina responsabladad.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Las reglas d'entrada pon sa midar. Verifitgai perquai la valaivladad curt avant che Vus partis ed As infurmai ultra da quai online davart las reglas d'entrada actualas dal pajais da destinaziun.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Las infurmaziuns qua survart sa refereschan mo a las reglas d'entrada dal pajais da destinaziun. Per secturs che pretendan eventualmain in certificat entaifer il pajais pon valair autras reglas.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"N'avais Vus betg chattà Voss pajais da destinaziun? Betg tut ils pajais n'acceptan certificats COVID, u i n'èn vegnidas messas a disposiziun naginas infurmaziuns davart eventualas reglas d'entrada.\"\n      }\n    ]\n  },\n  \"foreignRulesLinkText\": {\n    \"de\": \"reopen.europa.eu\",\n    \"en\": \"reopen.europa.eu\",\n    \"fr\": \"reopen.europa.eu\",\n    \"it\": \"reopen.europa.eu\",\n    \"rm\": \"reopen.europa.eu\"\n  },\n  \"foreignRulesLinkUrl\": {\n    \"de\": \"https://reopen.europa.eu/\",\n    \"en\": \"https://reopen.europa.eu/\",\n    \"fr\": \"https://reopen.europa.eu/\",\n    \"it\": \"https://reopen.europa.eu/\",\n    \"rm\": \"https://reopen.europa.eu/\"\n  },\n  \"vaccinationBookingCantons\": {\n    \"de\": [\n      {\n        \"name\": \"Aargau\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Ausserrhoden\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Innerrhoden\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basel-Landschaft\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.bl.ch/impfen\"\n      },\n      {\n        \"name\": \"Basel-Stadt\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Bern\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Freiburg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/de/gesundheit/covid-19/covid-19-impfung-in-ihrer-naehe-durch-impfteams-in-den-impfzentren-in-der-apotheke-oder-bei-ihrem-arzt\"\n      },\n      {\n        \"name\": \"Genf\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glarus\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Graubünden\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Luzern\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuenburg\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwalden\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwalden\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"St. Gallen\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhausen\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Solothurn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgau\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Wallis\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Waadt\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zürich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"en\": [\n      {\n        \"name\": \"Aargau\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Ausserrhoden\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Innerrhoden\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basel-Country\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/englisch-english\"\n      },\n      {\n        \"name\": \"Basel-City\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berne\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Fribourg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Geneva\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/en/getting-vaccinated-against-covid-19\"\n      },\n      {\n        \"name\": \"Glarus\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Graubünden\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerne\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwalden\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwalden\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"St. Gallen\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhausen\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Solothurn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Ticino\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Valais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/en/\"\n      },\n      {\n        \"name\": \"Zürich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"name\": \"Argovie\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Rhodes-Extérieures\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Rhodes-Intérieures\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Bâle-Campagne\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/franzoesisch-francais\"\n      },\n      {\n        \"name\": \"Bâle-Ville\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berne\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"https://www.gsi.be.ch/fr/start/themen/coronavirus/impfen.html\"\n      },\n      {\n        \"name\": \"Fribourg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Genève\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glaris\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grisons\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerne\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwald\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwald\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"Saint-Gall\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhouse\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soleure\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgovie\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Valais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/web/coronavirus/#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zoug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zurich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"it\": [\n      {\n        \"name\": \"Argovia\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzello Esterno\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzello Interno\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basilea Campagna\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/italienisch-italiano\"\n      },\n      {\n        \"name\": \"Basilea Città\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berna\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Friburgo\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Ginevra\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glarona\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grigioni\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/IT/istituzioni/amministrazione/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Giura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerna\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidvaldo\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obvaldo\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"San Gallo\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Sciaffusa\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Svitto\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soletta\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Turgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Ticino\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Vallese\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zugo\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zurigo\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"name\": \"Argovia\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Dadora\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Dadens\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basilea-Champagna\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.bl.ch/impfen\"\n      },\n      {\n        \"name\": \"Basilea-Citad\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berna\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Friburg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Genevra\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glaruna\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grischun\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/RM/instituziuns/administraziun/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Giura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerna\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Sutsilvania\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Sursilvania\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"Son Gagl\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffusa\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Sviz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soloturn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Turgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Vallais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vad\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Turitg\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ]\n  },\n  \"vaccinationBookingInfo\": {\n    \"de\": {\n      \"title\": \"Impftermin in Ihrer Nähe buchen\",\n      \"text\": \"Eine Impfung könnte zum Beispiel an diesen Orten in Ihrer Nähe stattfinden:\\n\\n- in spezifischen Impfzentren\\n- in Spitälern\\n- bei Ihrem Hausarzt oder Ihrer Hausärztin\\n- in Impfapotheken\\n\\nViele Orte bieten auch Walk-in-Impfungen ohne Termine an.\",\n      \"info\": \"Die Covid-19-Impfung ist für Personen ab 5 Jahren empfohlen.\",\n      \"impfcheckTitle\": \"Jetzt Termin buchen\",\n      \"impfcheckText\": \"Der Covid-19 Impf-Check gibt Auskunft über Erst- sowie Auffrischimpfungen und führt Sie zur entsprechenden Anlaufstelle in Ihrem Kanton.\",\n      \"impfcheckButton\": \"Zum Impf-Check\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    },\n    \"en\": {\n      \"title\": \"Book a vaccination appointment near you\",\n      \"text\": \"Vaccination may be performed at the following locations near you:\\n\\n- at specific vaccination centres\\n- in hospitals\\n- at your general practitioner's surgery\\n- at a vaccination pharmacy\\n\\nMany places also offer walk-in vaccinations without an appointment.\",\n      \"info\": \"The COVID-19 vaccination is recommended for those over 5. \",\n      \"impfcheckTitle\": \"Book an appointment now\",\n      \"impfcheckText\": \"The COVID-19 Vaccination Check provides information on initial and booster vaccinations and guides you to the relevant point of contact in your canton.\",\n      \"impfcheckButton\": \"To the Vaccination Check\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    },\n    \"fr\": {\n      \"title\": \"Prendre un rendez-vous de vaccination près de chez vous\",\n      \"text\": \"La vaccination pourrait, par exemple, être proposée dans les lieux suivants situés à proximité de chez vous :\\n\\n- dans des centres de vaccination désignés\\n- dans les hôpitaux\\n- chez votre médecin de famille\\n- dans les pharmacies\\n\\nIl est aussi possible de se faire vacciner sans rendez-vous dans de nombreux endroits.\",\n      \"info\": \"La vaccination contre le COVID-19 est recommandée pour les personnes dès 5 ans.\",\n      \"impfcheckTitle\": \"Prendre un rendez-vous maintenant\",\n      \"impfcheckText\": \"COVID-19 Vac-check fournit des renseignements sur la première vaccination ainsi que sur la vaccination de rappel et vous guide vers le service compétent de votre canton.\",\n      \"impfcheckButton\": \"Vers COVID-19 Vac-check\",\n      \"impfcheckUrl\": \"https://covid19-vac-check.ch/\"\n    },\n    \"it\": {\n      \"title\": \"Prendi appuntamento per la vaccinazione nelle tue vicinanze\",\n      \"text\": \"Per esempio potresti farti vaccinare in uno di questi luoghi nelle tue vicinanze:\\n\\n- in centri di vaccinazione specifici\\n- negli ospedali\\n- dal tuo medico di famiglia\\n- nelle farmacie che vaccinano\\n\\nMolti di essi offrono anche vaccinazioni libere senza appuntamento.\",\n      \"info\": \"La vaccinazione anti-COVID-19 è raccomandata per le persone a partire dai 5 anni.\",\n      \"impfcheckTitle\": \"Prendi appuntamento ora\",\n      \"impfcheckText\": \"Il COVID-19 Vac-Check fornisce informazioni sulle prime vaccinazioni, sulle vaccinazioni di richiamo e ti indirizza verso il punto di contatto del tuo Cantone.\",\n      \"impfcheckButton\": \"Vai al COVID-19 Vac-Check\",\n      \"impfcheckUrl\": \"https://covid19-vac-check.ch/\"\n    },\n    \"rm\": {\n      \"title\": \"Reservar in termin da vaccinaziun en Vossa vischinanza\",\n      \"text\": \"Ina vaccinaziun pudess per exempel vegnir fatga en quests lieus en Vossa vischinanza:\\n\\n- en centers da vaccinaziun specifics\\n- en ospitals\\n- tar Vossa media u tar Voss medi da chasa\\n- en apotecas da vaccinaziun\\n\\nBlers lieus porschan er vaccinaziuns «walk-in» senza termin.\",\n      \"info\": \"La vaccinaziun cunter COVID-19 è recumandada per persunas a partir da 5 onns.\",\n      \"impfcheckTitle\": \"Reservar in termin ussa\",\n      \"impfcheckText\": \"Il check da vaccinaziun COVID-19 As infurmescha davart las emprimas vaccinaziuns sco er davart las vaccinaziuns da rinfrestgament ed As maina al post da consultaziun correspundent da Voss chantun.  \",\n      \"impfcheckButton\": \"Al check da vaccinaziun\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    }\n  },\n  \"checkModesInfo\": {\n    \"de\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für geimpfte, genesene oder negativ getestete Personen.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Kein Zutritt.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für geimpfte oder genesene Personen.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Kein Zutritt.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung (basierend auf PCR-Test) nicht länger als 120 Tage zurückliegt. Sie benötigen kein zusätzliches Testzertifikat.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Für den Zutritt zu Betrieben und Veranstaltungen wird zusätzlich zum Covid-Zertifikat für geimpfte oder genesene Personen ein negatives Testresultat benötigt.\"\n          }\n        }\n      }\n    },\n    \"en\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Access to organisations and events permitted for people who have been vaccinated, or who have recovered or tested negative.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Access not permitted.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Access to organisations and events permitted for people who have been vaccinated or who have recovered.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Access not permitted.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Access to organisations and events permitted for people who have been fully vaccinated, have received a booster jab or have recovered (based on PCR test results) in the preceding 120 days; an additional test certificate is not required.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"To gain access to organisations and events, a negative test result is required in addition to the COVID certificate for people who have been vaccinated or have recovered.\"\n          }\n        }\n      }\n    },\n    \"fr\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées, guéries ou testées négatives.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Accès refusé.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Accès refusé.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes dont la vaccination complète, la vaccination de rappel ou la guérison (confirmée par un test PCR) ne date pas de plus de 120 jours. Vous n'avez pas besoin de présenter un certificat de test supplémentaire.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries qui présentent, en plus d'un certificat COVID, un résultat de test négatif.\"\n          }\n        }\n      }\n    },\n    \"it\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate, guarite o testate negative.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"L’accesso non è consentito.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate o guarite.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"L’accesso non è consentito.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone per le quali sono trascorsi al massimo 120 giorni dal completamento del ciclo vaccinale, dalla somministrazione della dose di richiamo o dalla guarigione (sulla base di un test PCR). In questo caso non è necessario un ulteriore certificato di test.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Oltre al certificato di vaccinazione o di guarigione, per l’accesso a strutture e manifestazioni è necessario presentare anche il risultato di un test negativo.\"\n          }\n        }\n      }\n    },\n    \"rm\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas vaccinadas, guaridas u cun in test negativ.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Nagin access.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas vaccinadas u guaridas.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Nagin access.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas ch’èn vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch’èn guaridas (sin basa d’in test da PCR) avant maximalmain 120 dis. Vus na duvrais nagin certificat da test supplementar.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Per l’access a manaschis ed ad occurrenzas dovri ultra dal certificat COVID per persunas vaccinadas u guaridas in test negativ.\"\n          }\n        }\n      }\n    }\n  },\n  \"lightCertDurationInHours\": 24,\n  \"showVaccinationHintHomescreen\": false,\n  \"showVaccinationHintDetail\": false,\n  \"showVaccinationHintTransfer\": false,\n  \"refreshButtonDisabled\": true,\n  \"refreshButtonInfo\": {\n    \"de\": {\n      \"title\": \"Info\",\n      \"text1\": \"Der «Refresh-Button» wurde entfernt.\",\n      \"text2\": \"Sollte Ihr Covid-Zertifikat abgelaufen oder technisch ungültig sein, wird Ihnen dies direkt auf dem Zertifikat angezeigt.\",\n      \"fatTitle\": \"Für Prüfende\",\n      \"text3\": \"Die Prüfung von Covid-Zertifikaten ist mit der App «COVID Certificate Check» vorzunehmen.\",\n      \"linkText\": \"Mehr erfahren\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"\n    },\n    \"en\": {\n      \"title\": \"Info\",\n      \"text1\": \"The \\\"Refresh button\\\" has been removed.\",\n      \"text2\": \"If your COVID certificate has expired or is technically invalid, this is indicated directly on the certificate.\",\n      \"fatTitle\": \"For verifiers\",\n      \"text3\": \"COVID certificates are to be verified with the \\\"COVID Certificate Check\\\" app.\",\n      \"linkText\": \"To find out more\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1851413288\"\n    },\n    \"fr\": {\n      \"title\": \"Information\",\n      \"text1\": \"Le bouton «rafraîchir» a été supprimé.\",\n      \"text2\": \"Si votre certificat COVID a expiré ou s'il n'est techniquement pas valable, cette information apparaît automatiquement sur le certificat.\",\n      \"fatTitle\": \"Pour les personnes chargées du contrôle\",\n      \"text3\": \"La vérification des certificats COVID doit s'effectuer au moyen de l'application «COVID Certificate Check».\",\n      \"linkText\": \"Pour en savoir plus\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#-1006172949\"\n    },\n    \"it\": {\n      \"title\": \"Informazione\",\n      \"text1\": \"Il pulsante «Aggiorna» è stato eliminato.\",\n      \"text2\": \"Se il certificato è scaduto o se non è valido per motivi tecnici, l’informazione compare direttamente nell’app. \",\n      \"fatTitle\": \"Per le persone incaricate della verifica\",\n      \"text3\": \"I certificati COVID devono essere verificati utilizzando l’app «COVID Certificate Check».\",\n      \"linkText\": \"Per saperne di più\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1358421103\"\n    },\n    \"rm\": {\n      \"title\": \"Infurmaziun\",\n      \"text1\": \"La «buttun da refresh» è vegnida stizzada.\",\n      \"text2\": \"Sche Voss certificat COVID è spirà u sch’el n’è tecnicamain betg valaivel, vegn quai inditgà directamain sin il certificat.\",\n      \"fatTitle\": \"Per las persunas che verifitgeschan\",\n      \"text3\": \"Ils certificats COVID ston vegnir verifitgads cun l’app «COVID Certificate Check».\",\n      \"linkText\": \"Dapli infurmaziuns\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"\n    }\n  },\n  \"eolBannerInfo\": {\n    \"de\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Verkürzte Gültigkeitsdauer\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Verkürzte Gültigkeitsdauer\",\n        \"detailText\": \"Dieses Zertifikat wird bald ablaufen.\",\n        \"detailMoreInfo\": \"Mehr erfahren\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"Per 31. Jan. 2022 gelten in der Schweiz reduzierte Gültigkeitsdauern von 270 statt 365 Tagen für Covid-Zertifikate für Geimpfte oder Genesene. Dieses Zertifikat ist von der verkürzten Gültigkeitsdauer unmittelbar betroffen:\",\n        \"popupBoldText\": \"Dieses Covid-Zertifikat kann ab dem 31. Jan. 2022 nicht mehr verwendet werden, da die Gültigkeitsdauer dann bereits abgelaufen sein wird.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Mehr erfahren\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Bald abgelaufen\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Dieses Zertifikat läuft bald ab.\",\n        \"detailMoreInfo\": \"Mehr erfahren?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Dieses Covid-Zertifikat ist nur noch wenige Tage gültig. Bitte beachten Sie das auf dem Zertifikat ausgewiesene Ablaufdatum.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Und nun?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"\n      }\n    },\n    \"en\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Shortened period of validity\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Shortened period of validity\",\n        \"detailText\": \"This certificate will soon expire.\",\n        \"detailMoreInfo\": \"More information\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"As of 31 Jan 2022 a shortened period of validity of 270 instead of 365 days applies to COVID vaccination or recovery certificates in Switzerland. This certificate is directly affected by the shortened period of validity:\",\n        \"popupBoldText\": \"This COVID certificate can no longer be used after 31 Jan 2022 as the period of validity will already have expired.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"More information\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-period-validity-certificates-vaccination-or-recovery-being-shortened-365-270\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Imminent expiry\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"This certificate will soon expire.\",\n        \"detailMoreInfo\": \"More information?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"This COVID certificate is valid for only a few more days. Please note the expiry date shown on the certificate.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"And now?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/what-should-i-do-if-my-covid-certificate-about-expire-under-swiss-rules-validity\"\n      }\n    },\n    \"fr\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Durée de validité réduite\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Durée de validité réduite\",\n        \"detailText\": \"Ce certificat expirera bientôt.\",\n        \"detailMoreInfo\": \"En savoir plus\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"À partir du 31 janvier 2022, la durée de validité en Suisse des certificats COVID pour les personnes vaccinées ou guéries est réduite de 365 à 270 jours. Ce certificat est directement concerné:\",\n        \"popupBoldText\": \"Ce certificat COVID ne peut plus être utilisé à partir du 31 janvier 2022.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"En savoir plus\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-la-duree-de-validite-des-certificats-de-vaccination-ou-de-guerison-t-elle\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Expiration imminente\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Ce certificat expirera bientôt.\",\n        \"detailMoreInfo\": \"En savoir plus?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Ce certificat COVID expirera dans quelques jours. Nous attirons votre attention sur la date de fin de validité affichée.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Et maintenant ?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/que-dois-je-faire-si-mon-certificat-covid-est-sur-le-point-dexpirer-en-suisse\"\n      }\n    },\n    \"it\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Durata di validità abbreviata\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Durata di validità abbreviata\",\n        \"detailText\": \"Questo certificato sta per scadere.\",\n        \"detailMoreInfo\": \"Per saperne di più\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"Dal 31 gennaio 2022 in Svizzera vige una durata di validità del certificato COVID per persone vaccinate o guarite di 270 anziché di 365 giorni. Questo certificato è interessato direttamente dall’abbreviazione della durata di validità:\",\n        \"popupBoldText\": \"La scadenza della durata di validità di questo certificato COVID è il 31 gennaio 2022. Pertanto il certificato non è più utilizzabile dopo quella data.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Per saperne di più\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-la-durata-di-validita-dei-certificati-di-vaccinazione-o-di-guarigione-e\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Scadenza imminente\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Questo certificato sta per scadere.\",\n        \"detailMoreInfo\": \"Per saperne di più\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Questo certificato COVID è valido ancora per pochi giorni. Si prega di tenere conto della data di scadenza indicata sullo stesso.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"E ora?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/cosa-devo-fare-se-il-mio-certificato-covid-sta-scadere-secondo-le-regole-di\"\n      }\n    },\n    \"rm\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Valaivladad pli curta\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Valaivladad pli curta\",\n        \"detailText\": \"Quest certificat scada bainbaud.\",\n        \"detailMoreInfo\": \"Dapli infurmaziuns\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"A partir dals 31-01-2022 valan en Svizra duradas da valaivladad reducidas da 270 dis empè da 365 dis per certificats COVID per persunas vaccinadas u guaridas. Quest certificat è pertutgà directamain da la valaivladad pli curta:\",\n        \"popupBoldText\": \"Quest certificat COVID na po betg pli vegnir duvrà a partir dals 31-01-2022, perquai che la durada da valaivladad è lura gia scadida.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Dapli infurmaziuns\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Scada bainbaud\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Quest certificat scada bainbaud.\",\n        \"detailMoreInfo\": \"Dapli infurmaziuns?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Quest certificat COVID è valaivel mo pli intgins dis. Resguardai per plaschair la data da scadenza inditgà sin il certificat.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Ed uss?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"\n      }\n    }\n  },\n  \"showRatConversionForm\": true,\n  \"ratConversionFormUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\",\n  \"certRenewalInfo\": {\n    \"de\": {\n      \"INFO\": {\n        \"heading\": \"Was bedeutet das?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Wieso Sie den QR-Code auch dann erneuern sollten, wenn Ihr Impf- oder Genesungszertifikat nach den Schweizer Gültigkeitsregeln bald abläuft oder bereits abgelaufen ist, lesen Sie in dieser FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Was bedeutet das?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Erneuern Sie den QR-Code auch dann, wenn die Gültigkeit in der Schweiz bald abläuft oder bereits abgelaufen ist.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Wichtig!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Ersetzen Sie auch zuvor ausgedruckte oder gespeicherte Zertifikate durch diese erneuerte Version.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"Wie lange ein Covid-Zertifikat gültig ist wird in jedem Land gemäss den aktuell geltenden Regeln berechnet. Die Erneuerung des QR-Codes hat darauf keinen Einfluss.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      }\n    },\n    \"en\": {\n      \"INFO\": {\n        \"heading\": \"What does this mean?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"The QR codes used for COVID certificates have limited technical validity\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"What does this mean?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"The QR codes used for COVID certificates have limited technical validity.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Important!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Also replace certificates you have previously printed out or stored with this renewed version.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"The length of time for which a vaccination is recognised in a particular country is not specified in the certificate. Instead, it is calculated in accordance with the specific rules of the country each time the certificate is checked. Renewing the QR code merely ensures that the QR code can be used from a technical point of view.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      }\n    },\n    \"fr\": {\n      \"INFO\": {\n        \"heading\": \"Qu’est-ce que cela signifie ?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Les codes QR des certificats COVID ont une validité technique limitée\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Qu’est-ce que cela signifie ?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Les codes QR des certificats COVID ont une validité technique limitée.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"À noter:\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Remplacez également les certificats précédemment imprimés ou enregistrés par cette nouvelle version\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"La durée pendant laquelle une vaccination est reconnue dans un pays n’est pas définie dans le certificat, mais calculée au moment du contrôle selon les règles du pays examinateur. Le renouvellement du code QR garantit uniquement que celui-ci puisse être utilisé d’un point de vue technique. \"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      }\n    },\n    \"it\": {\n      \"INFO\": {\n        \"heading\": \"Cosa significa?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"I codici QR dei certificati COVID hanno una validità tecnica limitata\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Cosa significa?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"I codici QR dei certificati COVID hanno una validità tecnica limitata.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Importante!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Sostituisci anche i certificati stampati o salvati in precedenza con la presente versione aggiornata.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"La durata del riconoscimento di una vaccinazione in un Paese non è specificata nel certificato. Questo viene calcolato durante la verifica in base alle regole del Paese esaminatore. Il rinnovo del codice QR garantisce solo che tale codice possa continuare a essere tecnicamente utilizzato.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      }\n    },\n    \"rm\": {\n      \"INFO\": {\n        \"heading\": \"Tge vul quai dir?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Tge vul quai dir?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Impurtant!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Remplazzai per plaschair tras questa nova versiun er ils certificats che Vus avais arcunà u stampà pli baud.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"Quant ditg ch'ina vaccinaziun vegn renconuschida en in pajais, n'è betg fixà en il certificat. Quai vegn calculà a chaschun da la verificaziun tenor las reglas dal pajais che fa la verificaziun. La renovaziun dal code QR garantescha unicamain l'utilisaziun tecnica dal code QR\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      }\n    }\n  },\n  \"showValidityState\": false,\n  \"foreignRulesCheckEnabled\": false\n}"
  },
  {
    "path": "wallet/src/dev/java/ch/admin/bag/covidcertificate/wallet/debug/DebugCertificateItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.debug\n\nimport android.view.View\nimport android.widget.Button\nimport android.widget.TextView\nimport androidx.core.content.ContextCompat\nimport androidx.core.view.isVisible\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.util.getInvalidContentAlpha\n\ndata class DebugCertificateItem(val verifiedCertificate: StatefulWalletItem.VerifiedCertificate) {\n\n\tfun bindView(\n\t\titemView: View,\n\t\tonShareClickListener: ((String) -> Unit),\n\t) {\n\t\tval context = itemView.context\n\t\tval certificate = verifiedCertificate.certificateHolder\n\t\tval state = verifiedCertificate.state\n\t\tval certType = certificate?.certType\n\n\t\tvar typeBackgroundColor = R.color.blue\n\t\tvar typeTextColor = R.color.white\n\t\tvar typeLabelRes: Int? = null\n\t\twhen (certType) {\n\t\t\tCertType.RECOVERY -> {\n\t\t\t\ttypeLabelRes = R.string.certificate_reason_recovered\n\t\t\t}\n\t\t\tCertType.TEST -> {\n\t\t\t\ttypeLabelRes = R.string.certificate_reason_tested\n\t\t\t\ttypeBackgroundColor = R.color.blueish\n\t\t\t\ttypeTextColor = R.color.blue\n\t\t\t}\n\t\t\tCertType.VACCINATION -> {\n\t\t\t\ttypeLabelRes = R.string.certificate_reason_vaccinated\n\t\t\t}\n\t\t\telse -> {}\n\t\t}\n\n\t\tval isInvalid = state is VerificationState.INVALID\n\t\tif (isInvalid) {\n\t\t\ttypeBackgroundColor = R.color.greyish\n\t\t\ttypeTextColor = R.color.grey\n\t\t}\n\n\t\t// Name\n\t\tval name = certificate?.certificate?.getPersonName()?.prettyName() ?: verifiedCertificate.qrCodeData\n\t\tval qrAlpha = state.getInvalidContentAlpha()\n\t\titemView.findViewById<TextView>(R.id.item_certificate_list_name).apply {\n\t\t\ttext = name\n\t\t\talpha = qrAlpha\n\t\t}\n\n\t\t// Type\n\t\titemView.findViewById<TextView>(R.id.item_certificate_list_type).apply {\n\t\t\tbackgroundTintList = context.resources.getColorStateList(typeBackgroundColor, context.theme)\n\t\t\tsetTextColor(ContextCompat.getColor(context, typeTextColor))\n\t\t\ttypeLabelRes?.let { setText(it) }\n\t\t\tisVisible = certType != null\n\t\t}\n\n\t\t// Buttons\n\t\titemView.findViewById<Button>(R.id.button_share_string).setOnClickListener {\n\t\t\tonShareClickListener.invoke(verifiedCertificate.qrCodeData)\n\t\t}\n\n\t}\n}"
  },
  {
    "path": "wallet/src/dev/java/ch/admin/bag/covidcertificate/wallet/debug/DebugCertificatesListAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.debug\n\nimport android.view.LayoutInflater\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\n\nclass DebugCertificatesListAdapter(\n\tprivate val onShareClickListener: ((String) -> Unit),\n) :\n\tRecyclerView.Adapter<DebugCertificatesListViewHolder>() {\n\n\tprivate val items: MutableList<DebugCertificateItem> = mutableListOf()\n\n\toverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DebugCertificatesListViewHolder {\n\t\treturn DebugCertificatesListViewHolder.inflate(LayoutInflater.from(parent.context), parent)\n\t}\n\n\toverride fun onBindViewHolder(holder: DebugCertificatesListViewHolder, position: Int) {\n\t\tholder.bindItem(items[position], onShareClickListener)\n\t}\n\n\toverride fun getItemCount(): Int = items.size\n\n\tfun setItems(items: List<DebugCertificateItem>) {\n\t\tthis.items.clear()\n\t\tthis.items.addAll(items)\n\t\tnotifyDataSetChanged()\n\t}\n}"
  },
  {
    "path": "wallet/src/dev/java/ch/admin/bag/covidcertificate/wallet/debug/DebugCertificatesListViewHolder.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.debug\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.wallet.R\n\nclass DebugCertificatesListViewHolder(\n\titemView: View,\n) : RecyclerView.ViewHolder(itemView) {\n\n\tcompanion object {\n\t\tfun inflate(\n\t\t\tinflater: LayoutInflater,\n\t\t\tparent: ViewGroup,\n\t\t): DebugCertificatesListViewHolder {\n\t\t\tval itemView = inflater.inflate(R.layout.item_debug_certificate_list, parent, false)\n\t\t\treturn DebugCertificatesListViewHolder(itemView)\n\t\t}\n\t}\n\n\tfun bindItem(certItem: DebugCertificateItem, onCopyClickListener: ((String) -> Unit)) =\n\t\tcertItem.bindView(itemView, onCopyClickListener)\n}"
  },
  {
    "path": "wallet/src/dev/java/ch/admin/bag/covidcertificate/wallet/debug/WalletDebugFragment.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.debug\n/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport android.content.Intent\nimport android.os.Bundle\nimport android.view.View\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\n\nclass WalletDebugFragment : DebugFragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): DebugFragment = DebugFragment()\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tsetupRecyclerView()\n\t}\n\n\tprivate fun setupRecyclerView() {\n\t\tval recyclerView = binding.certificatesRecyclerView\n\n\t\tval adapter = DebugCertificatesListAdapter(::onShareClickListener)\n\t\trecyclerView.adapter = adapter\n\n\t\tcertificatesViewModel.statefulWalletItems.observe(viewLifecycleOwner) { items ->\n\t\t\tval adapterItems = items\n\t\t\t\t.filterIsInstance(StatefulWalletItem.VerifiedCertificate::class.java)\n\t\t\t\t.map { DebugCertificateItem(it) }\n\t\t\tadapter.setItems(adapterItems)\n\t\t}\n\n\t\tcertificatesViewModel.loadWalletData()\n\t}\n\n\tprivate fun onShareClickListener(qrCodeData: String) {\n\t\tval sendIntent = Intent().apply {\n\t\t\taction = Intent.ACTION_SEND\n\t\t\tputExtra(Intent.EXTRA_TEXT, qrCodeData)\n\t\t\ttype = \"text/plain\"\n\t\t}\n\t\tval shareIntent = Intent.createChooser(sendIntent, null)\n\t\tstartActivity(shareIntent)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tpackage=\"ch.admin.bag.covidcertificate.wallet\">\n\n\t<uses-permission android:name=\"android.permission.INTERNET\" />\n\t<uses-permission android:name=\"android.permission.CAMERA\" />\n\n\t<application\n\t\tandroid:name=\".MainApplication\"\n\t\tandroid:allowBackup=\"false\"\n\t\tandroid:fullBackupContent=\"false\"\n\t\tandroid:icon=\"@mipmap/ic_launcher\"\n\t\tandroid:label=\"@string/wallet_app_name\"\n\t\tandroid:networkSecurityConfig=\"@xml/network_security_config\"\n\t\tandroid:roundIcon=\"@mipmap/ic_launcher_round\"\n\t\tandroid:supportsRtl=\"true\"\n\t\tandroid:theme=\"@style/Theme.CovidCertificateWallet\">\n\n\t\t<activity\n\t\t\tandroid:name=\".MainActivity\"\n\t\t\tandroid:exported=\"true\"\n\t\t\tandroid:launchMode=\"singleInstance\"\n\t\t\tandroid:screenOrientation=\"portrait\">\n\n\t\t\t<intent-filter>\n\t\t\t\t<action android:name=\"android.intent.action.MAIN\" />\n\t\t\t\t<category android:name=\"android.intent.category.LAUNCHER\" />\n\t\t\t</intent-filter>\n\n\t\t\t<intent-filter>\n\t\t\t\t<action android:name=\"android.intent.action.SEND\" />\n\t\t\t\t<category android:name=\"android.intent.category.DEFAULT\" />\n\t\t\t\t<data android:mimeType=\"application/pdf\" />\n\t\t\t</intent-filter>\n\n\t\t\t<intent-filter>\n\t\t\t\t<action android:name=\"android.intent.action.VIEW\" />\n\n\t\t\t\t<category android:name=\"android.intent.category.DEFAULT\" />\n\t\t\t\t<category android:name=\"android.intent.category.BROWSABLE\" />\n\n\t\t\t\t<data android:scheme=\"covidcert\" />\n\t\t\t\t<data android:scheme=\"hcert\" />\n\t\t\t</intent-filter>\n\t\t</activity>\n\n\t\t<activity\n\t\t\tandroid:name=\".onboarding.OnboardingActivity\"\n\t\t\tandroid:exported=\"false\"\n\t\t\tandroid:launchMode=\"singleInstance\"\n\t\t\tandroid:screenOrientation=\"portrait\" />\n\n\t\t<provider\n\t\t\tandroid:name=\"androidx.core.content.FileProvider\"\n\t\t\tandroid:authorities=\"${applicationId}.fileprovider\"\n\t\t\tandroid:exported=\"false\"\n\t\t\tandroid:grantUriPermissions=\"true\">\n\t\t\t<meta-data\n\t\t\t\tandroid:name=\"android.support.FILE_PROVIDER_PATHS\"\n\t\t\t\tandroid:resource=\"@xml/filepaths\" />\n\t\t</provider>\n\n\t</application>\n\n\t<queries>\n\t\t<package android:name=\"ch.admin.bag.covidcertificate.verifier\" />\n\t\t<package android:name=\"ch.admin.bag.covidcertificate.verifier.abn\" />\n\t\t<package android:name=\"ch.admin.bag.covidcertificate.verifier.dev\" />\n\t</queries>\n\n</manifest>"
  },
  {
    "path": "wallet/src/main/assets/faq/config.json",
    "content": "{\n  \"forceUpdate\": false,\n  \"infoBox\": null,\n  \"questions\": {\n    \"de\": {\n      \"faqTitle\": \"Was sind Covid-Zertifikate?\",\n      \"faqSubTitle\": \"Das Covid-Zertifikat bietet die Möglichkeit, eine Covid-19-Impfung, eine durchgemachte Erkrankung oder ein negatives Testergebnis fälschungssicher zu dokumentieren.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wann und wo kann ich ein Covid-Zertifikat erhalten?\",\n          \"text\": \"Ein Covid-Zertifikat können Sie nach einer Covid-19-Impfung, nach einer durchgemachten Erkrankung oder nach einem negativen Testergebnis erhalten. Das Zertifikat stellt Ihnen in der Regel das Gesundheitsfachpersonal vor Ort auf Anfrage aus.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie erhalte ich nach einer durchgemachten Covid-19-Erkrankung ein Covid-Zertifikat?\",\n          \"text\": \"Je nach Kanton wird Ihnen das Covid-Zertifikat teilweise direkt von der Teststelle oder dem Labor ausgestellt, in dem Ihr positives Testresultat festgestellt wurde. Falls dies nicht der Fall ist, können Sie nachträglich online über die Webseite der «Nationale Antragsstelle Covid-Zertifikat» ein Covid-Zertifikat beantragen. Der Antrag wird dort von der zuständigen kantonalen Behörde bearbeitet. Die Webseite der «Nationale Antragsstelle Covid-Zertifikat» finden Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Nationale Antragsstelle Covid-Zertifikat (admin.ch)\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Wie kann ich ein Covid-Zertifikat vorweisen?\",\n          \"text\": \"Sie können Ihr Covid-Zertifikat in Papierform vorweisen oder Sie benutzen die «COVID Certificate»-App, um Zertifikate in der App zu speichern und direkt aus der App vorzuweisen. \\n\\nBeachten Sie, dass Sie in jedem Fall auch noch ein Ausweisdokument vorweisen müssen.\\nIn einigen Ländern wird eine ausgedruckte Version des Zertifikats verlangt und das elektronische Zertifikat nicht akzeptiert. Führen Sie auf Reisen daher stets auch die ausgedruckte Version mit.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie lange ist das Covid-Zertifikat gültig?\",\n          \"text\": \"In der Schweiz wurde die Zertifikatspflicht im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Im Ausland gelten jeweils die Gültigkeitsregeln des entsprechenden Landes. Informieren Sie sich kurz vor Ihrer Abreise auf der Webseite der Behörden Ihres Transit- oder Ziellandes, ob das Land noch zertifikatsbasierte Massnahmen hat und welche falls ja, welche Gültigkeitsdauern für Ihr Zielland festgelegt sind. Hilfreiche Webseite bei Auslandsreisen:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/de\"\n        },\n        {\n          \"title\": \"Wo sind meine Daten gespeichert?\",\n          \"text\": \"Ihre Zertifikatsdaten werden nicht in einem zentralen System des Bundes gespeichert, sondern befinden sich nur lokal auf Ihrem Mobilgerät, respektive auf dem Covid-Zertifikat in Papierform.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie werden Missbrauch und Fälschung verhindert?\",\n          \"text\": \"Der QR-Code auf dem Covid-Zertifikat enthält eine elektronische Signatur. Die Signatur ist ein wichtiges Sicherheitsmerkmal und macht das Covid-Zertifikat fälschungssicher. Das Covid-Zertifikat ist zudem nur in Kombination mit einem Ausweisdokument gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was passiert, wenn ich mein Covid-Zertifikat verliere?\",\n          \"text\": \"Ihr Covid-Zertifikat wird in keinem zentralen System des Bundes gespeichert. Bewahren Sie das Covid-Zertifikat auf Papier und/oder als PDF deshalb sorgfältig auf. Bei Verlust und Bedarf nach einem Einsatz kann für die Neuausstellung durch die Gesundheitseinrichtungen (z. B. der Test- oder Impf-stelle) eine Gebühr erhoben werden. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist das Zertifikat Light?\",\n          \"text\": \"Die «COVID Certificate»-App bietet Inhaberinnen und Inhabern von Covid-Zertifikaten die Möglichkeit, eine datenminimierte Zertifikatskopie zur Nutzung in der Schweiz zu generieren. Das «Zertifikat Light» bestätigt das Vorliegen eines gültigen Covid-Zertifikats, ohne selbst Gesundheitsdaten zu enthalten. \\n\\nDiese datenminimierte Alternative zum Covid-Zertifikat wurde auf Wunsch des Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) entwickelt, da Covid-Zertifikategewisse Gesundheitsdaten wie beispielsweise Impfstoff oder Datum der Impfung enthalten, die auch ausgelesen werden können. Mittels dem «Zertifikat Light» wird dies verhindert.\\n\\nDas «Zertifikat Light» ist lediglich elektronisch innerhalb der App verfügbar und wird nur in der Schweiz anerkannt. Aus Datenschutzgründen hat das «Zertifikat Light» eine maximale Gültigkeitsdauer von 24 Stunden und muss danach erneut aktiviert werden. Wird das normale Zertifikat vor Ablauf der 24 Stunden benötigt, kann das «Zertifikat Light» einfach deaktiviert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"What are COVID certificates?\",\n      \"faqSubTitle\": \"The COVID certificate makes it possible to document a COVID-19 vaccination, recovery from the virus or a negative test result in a forgery-proof manner.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"When and where can I get a COVID certificate?\",\n          \"text\": \"You can get a COVID certificate after a COVID-19 vaccination, after you have recovered from the virus, or after you have tested negative. The certificate is generally issued upon request by health care professionals on site.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How do I get a COVID certificate after I have recovered from COVID-19?\",\n          \"text\": \"Depending on the canton, the COVID certificate will, in some cases, be sent to you directly by the test centre or by the laboratory that determined your positive test result. If this is not the case, you can subsequently apply online for a COVID certificate via the “National COVID certificate application platform”. The application will be processed there by the competent cantonal authority. You will find the “National COVID certificate application platform” here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"National COVID certificate application platform\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"How can I present a COVID certificate?\",\n          \"text\": \"You can present your COVID certificate in paper form, or you can use the COVID Certificate app to save certificates in the dedicated app and present them directly from the app.\\n\\nPlease note that you will also need to show an identification document (passport or ID card) in either case. A number of countries require a printed version of the certificate and will not accept the electronic certificate. You should therefore always take the printed version with you when travelling.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How long is the COVID certificate valid?\",\n          \"text\": \"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. Abroad, the validity rules of the country in question apply. Shortly before departing you should check the authorities’ website for your transit or destination country to see whether certificate-based measures are still in force and, if so, which validity periods apply for your destination country. Helpful website for travel abroad:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/en/\"\n        },\n        {\n          \"title\": \"Where is my data stored?\",\n          \"text\": \"Your certificate data is not stored in a central government system, but only locally on your mobile device or on the paper COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How are misuse and forgery prevented?\",\n          \"text\": \"The COVID certificate QR code contains an electronic signature. This is an important security feature and makes the COVID certificate forgery-proof. Moreover, the COVID certificate is valid only in combination with an identification document (passport or ID card).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What happens if I lose my COVID certificate?\",\n          \"text\": \"Your COVID certificate is not stored in any central government system. Therefore, keep your paper and/or PDF COVID certificate in a safe place. If you lose your certificate and need to replace it, a fee may be charged for its reissue by a health care facility (e.g. the test or vaccination centre).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is the 'certificate light'\",\n          \"text\": \"The COVID Certificate app offers holders of COVID certificates the possibility of generating a copy of the certificate with minimised data. The 'certificate light' confirms that the holder has a valid COVID certificate but does not itself contain any health-related data. \\n\\nThis alternative to the COVID certificate which contains minimised data was developed at the wish of the Federal Data Protection and Information Commissioner (FDPIC) as COVID certificates contain certain health-related data such as the vaccine administered or the date of vaccination, which can also be seen. The 'certificate light' prevents this.\\n\\nThe 'certificate light' is only available electronically in the app and is only recognised in Switzerland. For data protection reasons, the 'certificate light' is only valid for 24 hours and must then be reactivated. If you need to use the normal certificate before the end of the 24-hour period, you can simply deactivate the 'certificate light'.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Le certificat COVID en bref\",\n      \"faqSubTitle\": \"Le certificat COVID atteste de manière infalsifiable une vaccination contre le COVID-19, une guérison ou un résultat de test négatif.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Quand et où puis-je obtenir un certificat COVID?\",\n          \"text\": \"Vous pouvez obtenir le certificat COVID si vous êtes vaccinés contre le COVID-19, si vous avez guéri de la maladie ou si vous présentez un résultat de test négatif. En général, le certificat est délivré sur demande, par les professionnels de la santé présents sur le site.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment puis-je obtenir un certificat COVID après avoir guéri?\",\n          \"text\": \"En fonction de votre canton, le certificat COVID vous sera délivré soit directement par le lieu de test soit par le laboratoire qui a confirmé votre résultat de test positif. Si tel n’est pas le cas, vous pouvez demander votre certificat après coup, en ligne via la « Plateforme nationale des demandes pour le certificat COVID ». Votre demande y sera traitée par les autorités cantonales compétentes. Lien :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Plateforme nationale de demandes pour le certificat COVID\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Par quel moyen puis-je présenter un certificat COVID?\",\n          \"text\": \"Vous pouvez présenter votre certificat COVID sur papier ou au moyen de l’app de stockage créée à cet effet. Vous êtes libre de choisir l’une ou l’autre solution.\\n\\nDans tous les cas, vous devez aussi présenter une pièce d’identité sur demande. Dans certains pays, une version imprimée du certificat est exigée, et le certificat électronique n’est pas accepté. Nous vous conseillons donc de vous munir de la version imprimée lorsque vous voyagez.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quelle est la durée de validité du certificat COVID ?\",\n          \"text\": \"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. À l’étranger, les règles de validité du pays concerné s’appliquent. Vérifiez peu avant votre départ sur le site Internet des autorités de votre pays de transit ou de destination si des mesures impliquant l’utilisation d’un certificat y sont appliquées et si c’est le cas, quelles règles de validité y sont appliquées.  Site Internet utile pour les voyages à l’étranger :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/fr/\"\n        },\n        {\n          \"title\": \"Où mes données sont-elles stockées?\",\n          \"text\": \"Les données de votre certificat ne sont pas stockées dans un système central de la Confédération, mais sont sauvegardées localement, sur votre appareil mobile ou sur le certificat papier.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment prévient-on les abus et les falsifications?\",\n          \"text\": \"Le code QR figurant sur le certificat COVID contient une signature électronique. Celle-ci est une caractéristique de sécurité importante qui rend le certificat infalsifiable. En outre, le certificat COVID n'est valable que sur présentation d'une pièce d'identité.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Et si je perds mon certificat COVID?\",\n          \"text\": \"Votre certificat COVID n'est pas stocké dans un système central de la Confédération. Par conséquent, nous vous recommandons de le conserver sur papier ou au format PDF dans un endroit sûr. En cas de perte ou de remplacement, le paiement d’un émolument peut être exigé pour l’établissement d’un nouveau document par les institutions sanitaires (lieu de test ou de vaccination).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu’est-ce que le certificat light ?\",\n          \"text\": \"L’application « COVID Certificate » propose aux titulaires de certificats COVID la possibilité de générer une copie du certificat ne contenant que les données strictement nécessaires. Le certificat « light » confirme que le certificat présenté est valide, sans contenir lui-même des données sur la santé.\\n\\nCette alternative permettant de limiter les données du certificat COVID au strict minimum a été suggérée par le Préposé fédéral à la protection des données et à la transparence (PFPDT) ; en effet, les certificats COVID contiennent certaines données sur la santé (p. ex. le type de vaccin et la date de la vaccination) qui peuvent être lues par des tiers. Le certificat « light » empêche tout abus de ce genre.\\n\\nLe certificat light, reconnu uniquement en Suisse, n’est disponible que sous forme électronique. Pour des raisons de protection des données, il n’est valide que pendant 24 heures et doit ensuite être réactivé. Si le certificat normal est à nouveau nécessaire avant la fin de ce délai, il suffit de désactiver le certificat light.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Cos'è il certificato COVID?\",\n      \"faqSubTitle\": \"Il certificato COVID offre la possibilità di provare in modo non falsificabile l'avvenuta vaccinazione, la guarigione o un risultato negativo al test.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Quando e dove posso ottenere un certificato COVID?\",\n          \"text\": \"Può ricevere un certificato COVID in seguito alla vaccinazione anti-COVID-19, all'avvenuta guarigione o a un risultato negativo al test. Normalmente, il certificato è rilasciato su richiesta dal personale medico specializzato presso le strutture sanitarie.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come posso ottenere un certificato COVID dopo essere guarito?\",\n          \"text\": \"A seconda del Cantone, il certificato COVID viene rilasciato in parte direttamente dalla struttura che ha effettuato il test o dal laboratorio in cui è stato accertato il risultato positivo al test. Qualora così non fosse, può richiedere a posteriori online un certificato COVID tramite il sito web dell’«organo nazionale per la richiesta di certificati COVID». La richiesta sarà evasa in tale sede dall’autorità cantonale competente. Il sito web dell’«organo nazionale per la richiesta di certificati COVID» si trova qui:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Organo nazionale per la richiesta di certificati COVID\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Come posso mostrare il certificato COVID?\",\n          \"text\": \"Può mostrare il Suo certificato COVID in formato cartaceo oppure salvarlo e presentarlo utilizzando l’app «COVID Certificate». \\nIn entrambi i casi, dovrà mostrare anche un documento di legittimazione.\\nIn alcuni Paesi si richiede la versione cartacea del certificato e non si accetta quello elettronico. Porti quindi sempre con sé anche la versione cartacea quando viaggia.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Fino a quando è valido il certificato COVID?\",\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. All’estero si applicano le regole di validità del rispettivo Paese. Pertanto, prima di partire, si informi consultando il sito web delle autorità del Paese di transito o di destinazione se nel Paese vigono ancora misure relative al certificato e, in caso affermativo, qual è la loro durata di validità. Sito web utile per viaggi all’estero:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/it/\"\n        },\n        {\n          \"title\": \"Dove vengono salvati i miei dati?\",\n          \"text\": \"I dati del Suo certificato non vengono salvati in un sistema centrale della Confederazione, ma si trovano solo localmente sul Suo dispositivo mobile, rispettivamente sul certificato COVID in formato cartaceo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come vengono impediti l'uso improprio e le falsificazioni?\",\n          \"text\": \"Il codice QR sul certificato COVID contiene una firma elettronica. Questa firma è un elemento di sicurezza importante e garantisce che il certificato non possa essere falsificato. Inoltre, il certificato COVID è valido solo con un documento di legittimazione.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa succede se perdo il mio certificato COVID su carta?\",\n          \"text\": \"Il Suo certificato COVID non è salvato su un sistema centrale della Confederazione Conservi quindi con cura il certificato COVID su carta e/o in formato PDF. In caso di smarrimento e sostituzione, per il nuovo rilascio da parte delle strutture sanitarie (p. es. la struttura in cui è stato effettuato il test o è stata somministrata la vaccinazione) potrà essere riscosso un emolumento.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Che cos'è il certificato light?\",\n          \"text\": \"L’app «COVID Certificate» offre ai possessori di certificati COVID la possibilità di generare una copia del certificato con dati ridotti al minimo da utilizzare in Svizzera. Il certificato light conferma l’esistenza di un certificato valido, senza contenere dati sanitari.\\n\\nQuesto certificato con dati ridotti al minimo è un’alternativa al certificato COVID ed è stato sviluppato su richiesta dell’Incaricato federale della protezione dei dati e della trasparenza (IFPDT), poiché i certificati COVID contengono determinati dati sanitari, come per esempio il vaccino somministrato o la data della vaccinazione, che possono anche essere visualizzati e dunque letti. Ciò può essere evitato mediante il certificato light.\\n\\nIl certificato light è disponibile unicamente in versione elettronica nell’app ed è riconosciuto solo in Svizzera. Per motivi legati alla protezione dei dati, il certificato light ha una validità massima di 24 ore e in seguito deve essere riattivato. Se si necessita del certificato normale prima che siano trascorse le 24 ore, il certificato light può essere disattivato semplicemente.\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Tge è il certificat COVID?\",\n      \"faqSubTitle\": \"Il certificat COVID permetta da documentar – en moda nunfalsifitgabla – ina vaccinaziun cunter COVID-19, ina infecziun u in resultat negativ dal test.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-faq-image\",\n      \"faqIconAndroid\": \"ic_faq_image\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Cura e co obtegn jau in certificat COVID?\",\n          \"text\": \"In certificat COVID survegnis Vus suenter ina vaccinaziun cumpletta cunter COVID-19, suenter ina infecziun u suenter in resultat negativ dal test. Il certificat vegn per il solit emess – sin dumonda – dal persunal spezialisà da sanadad al lieu. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co obtegn jau in certificat COVID suenter ina infecziun cun COVID-19?\",\n          \"text\": \"Tut tenor il chantun vegn il certificat COVID per part emess directamain dal post da test u dal labor, nua che Voss test positiv è vegnì constatà. Sche quai n'è betg il cas, pudais Vus dumandar pli tard online in certificat COVID sur la pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID». Là vegn la dumonda elavurada da l'autoritad chantunala cumpetenta. La pagina d'internet da la «Plattafurma naziunala da dumondas per il certificat COVID» chattais Vus qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Plattafurma naziunala da dumondas per il certificat COVID (admin.ch)\",\n          \"linkUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\"\n        },\n        {\n          \"title\": \"Co poss jau preschentar in certificat COVID?\",\n          \"text\": \"Vus pudais preschentar Voss certificat COVID sin palpiri u sur l'app «COVID Certificate». L'app permetta d'arcunar certificats e d'als preschentar directamain sin il telefonin. \\nResguardai per plaschair che Vus stuais en mintga cas preschentar er anc in document da legitimaziun.\\nEn intgins pajais vegn pretendida ina versiun stampada dal certificat ed il certificat electronic na vegn betg acceptà. Sin viadis duessas Vus perquai adina avair cun Vus er la versiun stampada.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quant ditg è il certificat COVID valaivel?\",\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. A l'exteriur valan mintgamai las reglas da valaivladad dal pajais respectiv. As infurmai curt avant Vossa partenza sur la pagina d'internet da las autoritads da Voss pajais da transit u da destinaziun, sch'i valan en il pajais anc mesiras sin basa dal certificat, e sche gea, tge duradas da valaivladad che Voss pajais da destinaziun ha fixà. Pagina d'internet utila per viadis a l'exteriur:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Re-open EU (europa.eu)\",\n          \"linkUrl\": \"https://reopen.europa.eu/de\"\n        },\n        {\n          \"title\": \"Nua vegnan arcunadas mias datas?\",\n          \"text\": \"Las datas da Voss certificat na vegnan betg arcunadas en in sistem central da la Confederaziun, mabain mo localmain sin Voss telefonin resp. sin il certificat COVID sin palpiri.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co vegnan impedids abus e falsificaziuns?\",\n          \"text\": \"Il code QR sin Voss certificat COVID cuntegna ina signatura digitala. La signatura è ina impurtanta caracteristica da segirezza che impedescha da falsifitgar il certificat COVID. Il certificat COVID è ultra da quai valaivel mo en cumbinaziun cun in document da legitimaziun.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge capita, sche jau perd mes certificat COVID?\",\n          \"text\": \"Voss certificat COVID na vegn betg arcunà en in sistem central da la Confederaziun. Tegnai perquai en salv cun quità il certificat COVID sin palpiri e/u sco PDF. Sche Vus avais pers il certificat u sche Vus duvrais in certificat substitutiv, po l'instituziun da sanadad (p.ex. il post da test u da vaccinaziun) pretender ina taxa per emetter in nov certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in certificat light?\",\n          \"text\": \"L'app «COVID Certificate» permetta a las possessuras ed als possessurs da certificats COVID da generar ina copia dal certificat COVID che cuntegna ina quantitad minimala da datas. Il «certificat light» conferma ch'igl è avant maun in certificat COVID valaivel, na cuntegna però naginas datas da sanadad. \\n\\nQuest certificat cun ina quantitad minimala da datas è vegnì sviluppà sco alternativa al certificat COVID sin giavisch da l'Incumbensà federal per la protecziun da datas e per la transparenza (IFPDT), perquai ch'ils certificats COVID cuntegnan tschertas datas da sanadad ch'èn visiblas, sco per exempel il vaccin u la data da la vaccinaziun. Cun agid dal «certificat light» vegn quai impedì.\\n\\nIl «certificat light» è disponibel mo en moda electronica entaifer l'app e vegn renconuschì mo en Svizra. Per motivs da la protecziun da datas ha il «certificat light» ina durada da valaivladad maximala da 24 uras e sto alura vegnir activà danovamain. Sch'il certificat normal vegn duvrà avant che las 24  uras èn passadas, po il «certificat light» simplamain vegnir deactivà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"works\": {\n    \"de\": {\n      \"faqTitle\": \"Wie funktioniert \\ndie App?\",\n      \"faqSubTitle\": \"Mit der COVID Certificate App können Sie Covid-Zertifikate einfach und sicher auf Ihrem Mobilgerät abspeichern und vorweisen.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie kann ich ein Covid-Zertifikat zur App hinzufügen?\",\n          \"text\": \"Um ein Covid-Zertifikat zur App hinzuzufügen, benötigen Sie das Ihnen ausgestellte Originalzertifikat auf Papier oder als PDF-Dokument. Den darauf abgebildeten QR-Code können Sie mit der COVID Certificate App scannen und hinzufügen. Anschliessend erscheint das Covid-Zertifikat direkt in der App.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können auch mehrere Covid-Zertifikate hinzugefügt werden?\",\n          \"text\": \"Ja das ist möglich. So können Sie z. B. alle Covid-Zertifikate von Familienangehörigen in Ihrer App speichern. Auch in diesem Fall gilt: Das Covid-Zertifikat ist nur in Kombination mit einem Ausweisdokument des Zertifikatsinhabers / der Zertifikatsinhaberin gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was ist ein Transfer-Code?\",\n          \"text\": \"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat, z. B. nach einem Covid-Test, direkt in die App geliefert.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wo sehe ich, ob mein Covid-Zertifikat gültig ist?\",\n          \"text\": \"Die Zertifikatspflicht in der Schweiz wurde im Februar 2022 aufgehoben. Die Schweizer Gültigkeitsdauern bestehen seitdem nur noch formal und haben praktisch im Inland keine Bedeutung mehr. Deshalb wird in der App das Feld «Gültigkeit in der Schweiz» nicht mehr dargestellt. Stattdessen zeigt sie den Zeitpunkt der Impfung bzw. des Tests an. \\n\\nEs wird auch angezeigt, wie viele Tage eine Impfung bzw. ein Test her ist. So können Sie einfacher feststellen, ob Ihr Zertifikat den Gültigkeitsregeln Ihres Ziellandes entspricht (falls das Land noch ein Covid-Zertifikat voraussetzt). Im Ausland gelten immer die Regeln des entsprechenden Landes.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Kann ich die App auch offline verwenden?\",\n          \"text\": \"Sie können die App ohne eine Internetverbindung verwenden. Auch im Offline-Modus können Zertifikate vorgewiesen und von den Prüfern gescannt und verifiziert werden.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Wie sind meine Daten geschützt?\",\n          \"text\": \"Ihre persönlichen Daten werden in keinem zentralen System gespeichert, sondern befinden sich ausschliesslich bei Ihnen lokal auf dem Mobilgerät, respektive im QR-Code auf dem Covid-Zertifikat in Papierform.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Welche Daten sind im QR-Code enthalten?\",\n          \"text\": \"Der QR-Code enthält alle Informationen, die Sie auf Ihrem Covid-Zertifikat in Papierform im Klartext finden. Weiter befindet sich im QR-Code eine elektronische Signatur, mit der sich die Echtheit des Covid-Zertifikats überprüfen lässt. Dadurch wird das Covid-Zertifikat fälschungssicher.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Ich habe das Covid-Zertifikat ausschliesslich elektronisch in der App. Wie komme ich zum Zertifikat als PDF oder auf Papier?\",\n          \"text\": \"In der «COVID Certificate»-App finden Sie in der Detailansicht des elektronischen Covid-Zertifikats die Funktion «Exportieren». Damit können Sie ein PDF erstellen, dieses speichern und ausdrucken.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was muss ich tun, wenn ich das Covid-Zertifikat oder die App lösche?\",\n          \"text\": \"Sie können Ihr Covid-Zertifikat einfach wieder auf Ihrem Mobilgerät speichern. Laden Sie dazu die App erneut herunter und scannen Sie anschliessend den QR-Code auf Ihrem Covid-Zertifikat auf Papier oder als PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How the app works\",\n      \"faqSubTitle\": \"With the COVID Certificate app, you can easily and securely store and present COVID certificates on your mobile device.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"How can I add a COVID certificate to the app?\",\n          \"text\": \"To add a COVID certificate to the app, you need the original certificate issued to you on paper or as a PDF document. You can use the COVID certificate app to scan the QR code on the original and add it to the app. The COVID certificate will then appear directly in the app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can several COVID certificates be added?\",\n          \"text\": \"Yes, that is possible. For example, you can save the COVID certificates of all family members in your app. Also in this case, each COVID certificate is valid only in combination with an identification document (passport or ID card) of the certificate holder.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What is a transfer code?\",\n          \"text\": \"The transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you receive your certificate (e.g. after a test) directly in the application.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Where can I see if my COVID certificate is valid?\",\n          \"text\": \"In Switzerland, the requirement for a certificate was lifted in February 2022. Since then, the Swiss validity periods have existed only in formal terms and no longer have any significance in practice in Switzerland. The “Validity in Switzerland” section is thus no longer displayed in the app. Instead, the time of the vaccination or test is shown. \\n\\nThe number of days that have elapsed since a vaccination or test is also shown. This makes it easier for you to determine whether your certificate complies with the validity rules of your destination country (if the country in question still requires a COVID certificate). When abroad, it is always the rules of the country in question that apply.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can I use the app offline?\",\n          \"text\": \"You can use the app without an internet connection, so you can still call up your certificates and present them for scanning and verification.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"How is my data protected?\",\n          \"text\": \"Your personal data is not stored in a central system; instead, it can be found solely locally on the mobile device or in the QR code in the case of the paper COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What data is contained in the QR code?\",\n          \"text\": \"The QR code contains all the information that is found in plain text on your paper COVID certificate. The QR code also contains an electronic signature that can be used to check the authenticity of the COVID certificate. This makes the COVID certificate forgery-proof.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I only have my COVID certificate electronically in the app. How can I get the certificate as a PDF or on paper?\",\n          \"text\": \"In the detailed view of the electronic COVID certificate in the COVID Certificate app you’ll find the Export function. You can use this to generate, save and print a PDF\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What do I need to do if I delete the COVID certificate or the app?\",\n          \"text\": \"You can easily restore your COVID certificate on your mobile device. To do so, download the app again and then scan the QR code on your paper or PDF COVID certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Comment l'app \\nfonctionne-t-elle?\",\n      \"faqSubTitle\": \"L'app vous permet de stocker des certificats COVID de manière simple et sûre sur votre appareil mobile et de les présenter au moyen de ce dernier.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment ajouter un certificat COVID à l'app?\",\n          \"text\": \"Pour ajouter un certificat COVID à l'app, vous avez besoin du certificat original qui vous a été délivré sur papier ou par voie électronique, au format PDF. Au moyen de l'app, vous pouvez scanner le code QR figurant sur ce document. Ensuite, le certificat COVID apparaît directement dans l'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je ajouter plusieurs certificats COVID?\",\n          \"text\": \"Oui. Vous pouvez par exemple stocker dans l'app les certificats COVID de tous les membres de votre famille. À noter également dans ce cas qu'un certificat COVID n'est valable que si son détenteur présente une pièce d'identité.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Qu'est-ce qu'un code de transfert ?\",\n          \"text\": \"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat (p. ex. après un test) directement dans l’application.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Où voir si mon certificat COVID est valable ?\",\n          \"text\": \"En Suisse, l’obligation de présenter un certificat a été levée en février 2022. Les durées de validité suisses sont donc devenues uniquement formelles et n’ont pratiquement plus aucune pertinence dans notre pays. C’est pourquoi le champ « Validité en Suisse » n’est plus représenté dans l’application, qui indique par contre le nombre de jours écoulés depuis une vaccination ou un test. \\n\\nL’application indique aussi le nombre de jours écoulés depuis une vaccination ou un test. Vous pouvez ainsi vérifier plus facilement si votre certificat correspond aux règles de validité de votre pays de destination (au cas où ce pays exige encore un certificat COVID). À l’étranger, les règles en vigueur varient d’un pays à l’autre.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je également utiliser l’application hors ligne ?\",\n          \"text\": \"Oui, vous pouvez utiliser l’application sans connexion Internet. Les certificats peuvent aussi être présentés, scannés et vérifiés en mode hors ligne.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Comment mes données sont-elles protégées?\",\n          \"text\": \"Vos données personnelles ne sont pas stockées dans un système central, mais ne sont sauvegardées que localement, sur votre appareil mobile ou dans le code QR figurant sur le certificat papier.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que contient le code QR?\",\n          \"text\": \"Le code QR contient toutes les informations qui apparaissent en clair sur le certificat papier. En outre, il renferme une signature électronique qui permet de vérifier l'authenticité du certificat COVID. Par conséquent, le certificat COVID est infalsifiable.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Mon certificat COVID n’est disponible qu’au format électronique dans l’application. Comment puis-je obtenir mon certificat en PDF ou sur papier ?\",\n          \"text\": \"Dans l’application « COVID Certificate », vous trouvez la fonction « Exporter » dans la vue détaillée du certificat. Vous pouvez ainsi générer un PDF afin de le sauvegarder et de l’imprimer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Et si je supprime le certificat COVID ou l'app?\",\n          \"text\": \"Vous pouvez réenregistrer facilement votre certificat COVID sur votre appareil mobile. Il vous suffit de télécharger de nouveau l'app, puis de scanner le code QR figurant sur le certificat original, établi sur papier ou au format PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Come funziona \\nl'app?\",\n      \"faqSubTitle\": \"Con l'app COVID Certificate può salvare e mostrare i certificati COVID in modo semplice e sicuro sul Suo dispositivo mobile.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Come posso inserire un certificato COVID sulla app?\",\n          \"text\": \"Per inserire sull'app un certificato COVID serve il certificato originale rilasciatole su carta o in formato PDF. Utilizzando l'app COVID Certificate può aggiungere il certificato inquadrando il codice QR raffigurato sul certificato. In questo modo, il certificato COVID appare direttamente sull'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"È possibile aggiungere più certificati COVID?\",\n          \"text\": \"Sì, è possibile. Ad esempio, può salvare nella Sua app i certificati COVID dei suoi familiari. Anche in questo caso, il certificato COVID è valido solo con un documento di legittimazione del titolare.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cos'è un codice di trasferimento?\",\n          \"text\": \"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app, ad esempio dopo aver fatto un test COVID.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Dove posso verificare se il mio certificato COVID è valido?\",\n          \"text\": \"In Svizzera l’obbligo di certificato è stato revocato nel febbraio 2022. Da allora, la durata di validità svizzera esiste solo formalmente e non ha più alcun valore pratico nel nostro Paese. Pertanto il campo «Validità in Svizzera» non è più visualizzato nell’app. Al suo posto si trova la data della vaccinazione o del test.\\n\\nViene anche visualizzato quanti giorni sono trascorsi da una vaccinazione o da un test. In tal modo può determinare più facilmente se il Suo certificato è conforme alle regole di validità del Paese di destinazione (qualora il Paese richiedesse ancora un certificato COVID). All’estero si applicano sempre le regole di validità del rispettivo Paese.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Posso utilizzare l’app anche offline?\",\n          \"text\": \"È possibile utilizzare l’app senza connessione Internet. I certificati possono essere presentati, nonché scansionati e verificati dagli addetti anche in modalità offline.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Come sono protetti i miei dati?\",\n          \"text\": \"I Suoi dati personali non sono salvati in un sistema centrale ma unicamente sul Suo dispositivo mobile oppure nel codice QR indicato sul certificato COVID in formato cartaceo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Quali dati contiene il codice QR?\",\n          \"text\": \"Il codice QR contiene tutte le informazioni che trova nel testo del Suo certificato COVID in formato cartaceo. Nel codice QR si trova anche una firma elettronica che consente di verificare la validità del certificato COVID. La firma elettronica impedisce la falsificazione del certificato COVID.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Ho il certificato COVID esclusivamente in formato elettronico nell’app. Come posso ottenerne uno in formato PDF o cartaceo?\",\n          \"text\": \"Nella vista di dettaglio del certificato COVID elettronico dell’app «COVID Certificate» è disponibile la funzione «Esporta», con la quale è possibile creare un PDF, salvarlo e stamparlo.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa devo fare se elimino il file contenente il certificato COVID o l'app?\",\n          \"text\": \"Può semplicemente risalvare il certificato COVID sul Suo dispositivo mobile. Per farlo, scarichi nuovamente l'app e poi scansioni il codice QR che trova sul Suo certificato COVID in formato cartaceo o PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Co funcziuna \\nl'app?\",\n      \"faqSubTitle\": \"Cun l'app COVID Certificate pudais Vus arcunar e preschentar en moda simpla e segira certificats COVID sin Voss telefonin.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"ic-how-it-works-image\",\n      \"faqIconAndroid\": \"illu_how_it_works\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Co poss jau agiuntar in certificat COVID a l'app?\",\n          \"text\": \"Per agiuntar in certificat COVID a l'app, duvrais Vus il certificat original ch'è vegnì emess per Vus sin palpiri u en furma da PDF. Cun l'app COVID Certificate pudais Vus alura scannar il code QR sin il certificat ed al agiuntar a l'app. Silsuenter cumpara il certificat COVID directamain en l'app.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon vegnir agiuntads er plirs certificats COVID?\",\n          \"text\": \"Gea, quai è pussaivel. Vus pudais p.ex. arcunar en Vossa app ils certificats COVID da tut Vossas confamigliaras e da tut Voss confamigliars. Er en quest cas vala: Il certificat COVID è valaivel mo en cumbinaziun cun in document da legitimaziun  da la possessura u dal possessur dal certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge è in code da transfer?\",\n          \"text\": \"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app, p.ex. suenter in test dal coronavirus.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Nua ves jau, sche mes certificat COVID è valaivel?\",\n          \"text\": \"En Svizra è l'obligatori dal certificat vegnì abolì il favrer 2022. Las duradas da valaivladad svizras existan dapi lura mo anc formalmain e n'han praticamain nagina impurtanza pli en Svizra. Sin il certificat COVID na vegn perquai betg pli mussà il champ «Valaivladad en Svizra». Empè da quai mussa l'app la data da la vaccinaziun resp. dal test. \\n\\nI vegn er mussà, avant quants dis ch'igl è vegnì fatg ina vaccinaziun resp. in test. Uschia èsi pli facil per Vus da constatar, sche Voss certificat correspunda a las reglas da valaivladad da Voss pajais da destinaziun (premess ch'il pajais pretenda anc in certificat Covid). A l'exteriur valan adina las reglas dal pajais respectiv. \",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Poss jau er duvrar l'app offline?\",\n          \"text\": \"Vus pudais duvrar l'app senza ina colliaziun cun l'internet. Er en il modus offline pon ils certificats vegnir preschentads sco er scannads e verifitgads da las controlladras e dals controlladers.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Co vegnan protegidas mias datas?\",\n          \"text\": \"Vossas datas persunalas na vegnan betg arcunadas en in sistem central, mabain mo localmain sin Voss telefonin resp. en il code QR sin Voss certificat COVID en furma da palpiri.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge datas cuntegna il code QR?\",\n          \"text\": \"Il code QR cuntegna tut las infurmaziuns che Vus chattais sin Voss certificat COVID en furma da palpiri en text betg criptà. Plinavant sa chatta ina signatura digitala en il code QR. Cun quella po vegnir verifitgada l'autenticitad da Voss certificat COVID. Uschia na po il certificat COVID betg vegnir falsifitgà.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Jau hai il certificat COVID mo en moda digitala en l'app. Co survegn jau il certificat sco PDF u sin palpiri?\",\n          \"text\": \"En la vista detagliada dal certificat COVID digital en l'app «COVID Certificate» chattais Vus la funcziun «Exportar». Uschia pudais Vus generar in PDF, l'arcunar ed al stampar.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge stoss jau far, sche jau stiz il certificat COVID u l'app?\",\n          \"text\": \"Vus pudais simplamain arcunar anc ina giada il certificat COVID sin Voss telefonin. Chargiai giu danovamain l’app e scannai alura il code QR sin Voss certificat COVID sin palpiri u en furma da PDF.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"androidTransferCheckIntervalMs\": 7200000,\n  \"androidTransferCheckBackoffMs\": 30000,\n  \"timeshiftDetectionEnabled\": true,\n  \"transferQuestions\": {\n    \"de\": {\n      \"faqTitle\": \"Covid-Zertifikate direkt in die App geliefert\",\n      \"faqSubTitle\": \"Mit Transfer-Codes können Covid-Zertifikate schnell und sicher übermittelt werden. Auf diesem Weg erhalten Sie das Covid-Zertifikat, z. B. nach einem Covid-Test, direkt in die App geliefert.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Wer bietet die Übermittlung per Transfer-Code an?\",\n          \"text\": \"Wenn Sie einen Covid-Test machen (PCR-Test oder Antigen-Schnelltest), kann der Transfer-Code zur schnellen Übermittlung von Covid-Zertifikaten zum Einsatz kommen.\\n\\nInformieren Sie sich bei Ihrem Testcenter, in der Apotheke oder bei Ihrem Arzt, ob die Übermittlung per Transfer-Code angeboten wird.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Können Transfer-Codes auch zur Übermittlung von Impfzertifikaten verwendet werden?\",\n          \"text\": \"Aktuell ist die Übermittlung per Transfer-Code auf Covid-Tests ausgelegt. Wie Sie ein Covid-Zertifikat nach einer Impfung erhalten erfahren Sie hier:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Weitere Informationen\",\n          \"linkUrl\": \"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"\n        },\n        {\n          \"title\": \"Wie funktioniert die Übermittlung per Transfer-Code?\",\n          \"text\": \"Falls die Stelle, die den Covid-Test durchführt, die Übermittlung per Transfer-Code anbietet, werden Sie bereits bei der Anmeldung oder der Testentnahme nach einem Transfer-Code gefragt.\\n\\nDen Transfer-Code können Sie in der «COVID Certificate»-App erstellen. Tippen Sie dazu auf dem Startbildschirm auf «Hinzufügen» resp. auf das «Plus»-Symbol unten rechts. Danach tippen Sie auf «Transfer-Code erstellen».\\n\\nDie App zeigt Ihnen einen 9-stelligen Code an. Diesen können Sie entweder bei der Anmeldung in ein Formular eintragen oder direkt bei der Testentnahme angeben.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Kann ich den Transfer-Code mehrmals benutzen?\",\n          \"text\": \"Nein, ein Transfer-Code kann nur einmal verwendet werden. Falls Sie mehrere Zertifikate z. B. von Familienangehörigen empfangen möchten, erstellen Sie bitte für jedes Zertifikat einen neuen Code.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"Receive COVID certificates directly in the app\",\n      \"faqSubTitle\": \"The transfer codes allow COVID certificates to be transmitted quickly and securely. In this way, you receive your certificate (e.g. after a test) directly in the application.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Who offers the transmission of the COVID certificate by transfer code?\",\n          \"text\": \"If you perform a COVID test (PCR test or rapid antigen test), the transfer code can be used to quickly transmit the COVID certificate.\\n\\nAsk your test centre, pharmacy or doctor if this option is available.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can the transfer codes also be used for the transmission of vaccination certificates?\",\n          \"text\": \"Currently, the transmission of the certificate by transfer code is reserved for COVID tests. To find out how to obtain a COVID certificate after vaccination, click here:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Further information\",\n          \"linkUrl\": \"https://foph-coronavirus.ch/certificate/how-do-i-get-a-covid-certificate-and-how-do-i-use-it/\"\n        },\n        {\n          \"title\": \"How does the transmission of the certificate by transfer code work?\",\n          \"text\": \"If the test centre offers to transmit the certificate by transfer code, you will be asked for a code at the time of registration or testing.\\n\\nYou can create the transfer code in the \\\"COVID Certificate\\\" application: press \\\"Add\\\" on the home screen or the \\\"More\\\" symbol at the bottom right, then \\\"Create a transfer code\\\".\\n\\nThe application will show you a 9-character code, which you can either enter in a form when you register or pass on directly during the test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Can I use the same transfer code more than once?\",\n          \"text\": \"No, a transfer code can only be used once. If you wish to obtain several certificates (e.g. for your relatives), please create a new code for each certificate.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Recevez les certificats COVID directement dans l'application\",\n      \"faqSubTitle\": \"Les codes de transfert permettent de transmettre les certificats COVID rapidement et en toute sécurité. De cette façon, vous recevez votre certificat (p. ex. après un test) directement dans l’application.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Qui propose la transmission du certificat COVID par code de transfert ?\",\n          \"text\": \"Si vous effectuez un test COVID (test PCR ou test rapide antigénique), le code de transfert peut être utilisé pour transmettre rapidement le certificat COVID.\\n\\nRenseignez-vous auprès de votre centre de test, de votre pharmacie ou de votre médecin pour savoir si cette option est proposée.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Les codes de transfert peuvent-ils aussi être utilisés pour la transmission de certificats de vaccination ?\",\n          \"text\": \"Actuellement, la transmission du certificat par code de transfert est réservée aux tests COVID. Pour savoir comment obtenir un certificat COVID après une vaccination, cliquez ici :\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Informations supplémentaires\",\n          \"linkUrl\": \"https://ofsp-coronavirus.ch/certificat/comment-obtenir-le-certificat-covid-et-comment-men-servir/\"\n        },\n        {\n          \"title\": \"Comment fonctionne la transmission du certificat par code de transfert ?\",\n          \"text\": \"Si le centre de test propose de transmettre le certificat par code de transfert, un code vous sera demandé au moment de l’inscription ou du test.\\n\\nVous pouvez créer le code de transfert dans l’application « COVID Certificate » : appuyez sur « Ajouter » sur l’écran d’accueil ou sur le symbole « Plus » en bas à droite, puis sur « Créer un code de transfert ».\\n\\nL’application vous montre un code à 9 caractères, que vous pouvez soit inscrire dans un formulaire lors de l’inscription, soit transmettre directement lors du test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Puis-je utiliser plusieurs fois le même code de transfert ?\",\n          \"text\": \"Non, un code de transfert ne peut être utilisé qu’une seule fois. Si vous souhaitez obtenir plusieurs certificats (p. ex. pour vos proches), veuillez créer un nouveau code pour chaque certificat.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Ricevere i certificati COVID direttamente nell’app\",\n      \"faqSubTitle\": \"Con i codici di trasferimento i certificati COVID possono essere trasmessi in modo rapido e sicuro. Tramite questo canale puoi ricevere il certificato COVID direttamente nell’app, ad esempio dopo aver fatto un test COVID.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Chi offre la trasmissione mediante codice di trasferimento?\",\n          \"text\": \"Quando fai un test COVID (test PCR o test antigenico rapido), è possibile impiegare il codice di trasferimento per la trasmissione rapida dei certificati COVID.\\n\\nChiedi al centro di test, alla farmacia o al medico se offrono la trasmissione mediante codice di trasferimento.\\n\\n\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"I codici di trasferimento possono essere impiegati anche per trasmettere i certificati di vaccinazione?\",\n          \"text\": \"Attualmente la trasmissione mediante codice di trasferimento funziona solo per i test COVID. Qui trovi maggiori informazioni su come ottenere un certificato COVID dopo una vaccinazione:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriori informazioni\",\n          \"linkUrl\": \"https://ufsp-coronavirus.ch/certificato/come-si-ottiene-il-certificato-covid-e-come-si-impiega/\"\n        },\n        {\n          \"title\": \"Come funziona la trasmissione mediante codice di trasferimento?\",\n          \"text\": \"Se il servizio che effettua il test COVID offre la trasmissione mediante codice di trasferimento, te ne chiede uno già al momento della prenotazione o dell’esecuzione del test.\\n\\nPuoi creare il codice di trasferimento nell’app «COVID Certificate» toccando il pulsante «Aggiungi» nella schermata iniziale o il simbolo «Più» in basso a destra. Poi tocca «Crea codice di trasferimento».\\n\\nL’app visualizza un codice a 9 cifre, che puoi inserire nel modulo di prenotazione o fornire direttamente al momento dell’esecuzione del test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Posso utilizzare lo stesso codice di trasferimento più volte?\",\n          \"text\": \"No, un codice di trasferimento può essere utilizzato una volta sola. Se desideri ricevere più di un certificato, per esempio i certificati dei tuoi familiari, crea un nuovo codice per ciascun certificato.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Certificats COVID furnids directamain en l'app\",\n      \"faqSubTitle\": \"Cun ils codes da transfer pon ils certificats COVID vegnir transmess en moda svelta e segira. Sin questa via vegn il certificat COVID furnì directamain en l'app, p.ex. suenter in test dal coronavirus.\",\n      \"faqIntroSections\": null,\n      \"faqIconIos\": \"illu-faq-transfer-code\",\n      \"faqIconAndroid\": \"illu_faq_transfer_code\",\n      \"faqEntries\": [\n        {\n          \"title\": \"Tgi porscha la transmissiun cun in code da transfer?\",\n          \"text\": \"Sche Vus faschais in test dal coronavirus (test da PCR u test svelt d'antigens), po il code da transfer vegnir en funcziun per transmetter sveltamain ils certificats COVID.\\n\\nAs infurmai tar Voss center da test, en l'apoteca u tar Vossa media u Voss medi, sche la transmissiun cun in code da transfer è pussaivla.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Pon ils codes da transfer vegnir duvrads er per transmetter certificats da vaccinaziun?\",\n          \"text\": \"Actualmain è la transmissiun cun in code da transfer concepì per tests dal coronavirus. Co che Vus survegnis in certificat COVID suenter ina vaccinaziun, vegnis Vus a savair qua:\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": \"Ulteriuras infurmaziuns\",\n          \"linkUrl\": \"https://bag-coronavirus.ch/zertifikat/wie-erhalte-ich-ein-covid-zertifikat-und-wie-verwende-ich-es/\"\n        },\n        {\n          \"title\": \"Co funcziuna la transmissiun cun in code da transfer?\",\n          \"text\": \"En cas ch'il post che fa il test dal coronavirus porscha la transmissiun cun in code da transfer, vegnis Vus supplitgà d'inditgar Voss code da transfer gia tar l'annunzia u a chaschun da la prelevaziun dal test.\\n\\nIl code da transfer pudais Vus crear en l'app «COVID Certificate». Smatgai sin la pagina iniziala sin «Agiuntar» resp. sin il simbol «+» sutvart a dretga. Smatgai alura sin «Crear in code da transfer».\\n\\nL'app As mussa in code da 9 cifras. Quest code pudais Vus u endatar tar l'annunzia en in formular u inditgar directamain a chaschun da la prelevaziun dal test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Poss jau duvrar pliras giadas il medem code da transfer?\",\n          \"text\": \"Na, in code da transfer po vegnir duvrà mo ina giada. En cas che Vus vulais retschaiver plirs certificats, per exempel da confamigliaras u confamigliars, creai per plaschair per mintga certificat in nov code.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"transferWorks\": {\n    \"de\": {\n      \"faqTitle\": \"So funktioniert der Transfer\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"Die App prüft regelmässig, ob ein Covid-Zertifikat für Ihren Transfer-Code verfügbar ist.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Sobald das Covid-Zertifikat verfügbar ist, erscheint es in der App. Wenn Sie Mitteilungen aktiviert haben, werden Sie von der App benachrichtigt.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Nach 30 Tagen läuft der Transfer-Code ab. Danach wartet die App noch für weitere 72h auf einen möglichen Transfer, bevor der Transfer-Code ungültig wird.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Wie sind meine Daten beim Transfer geschützt?\",\n          \"text\": \"Für den Transfer wird Ihr Covid-Zertifikat verschlüsselt bereitgestellt. Der Transfer-Code stellt sicher, dass nur Ihre App das Covid-Zertifikat empfangen kann. Unmittelbar nach dem Transfer werden die Daten wieder vom Server gelöscht.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was kann ich tun, wenn das Zertifikat nicht ankommt?\",\n          \"text\": \"Sobald das Zertifikat vom Labor oder Testcenter generiert wurde, steht es zum Transfer zur Verfügung. Stellen Sie sicher, dass Ihr Smartphone mit dem Internet verbunden ist, um Zertifikate empfangen zu können.\\n\\nSollte ihr Covid-Zertifikat dennoch nicht eintreffen, fragen Sie bei der Stelle nach, die den Test durchgeführt hat (Testcenter, Apotheke, Ärztin / Arzt).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Was passiert bei einem positiven Testresultat?\",\n          \"text\": \"Bei einem positiven Antigen-Schnelltest erhalten Sie vom Labor kein Covid-Zertifikat. \\n\\nBei einem positiven PCR-Test erhalten Sie ein Covid-Zertifikat für Genesene. Es ist ab dem 11. Tag nach der Testentnahme gültig.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"en\": {\n      \"faqTitle\": \"How does the transfer work?\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"The application regularly checks whether a COVID certificate is available for your transfer code.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"As soon as the COVID certificate is available, it appears in the application. If you have activated notifications, you will receive a message from the application.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"The transfer code expires after 30 days. After this period, the application waits for any further transfers for 72 hours. After that, the transfer code is no longer valid.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"How is my data secured during the transfer?\",\n          \"text\": \"For the transfer, your COVID certificate is delivered in encrypted form. The transfer code ensures that only your application can receive the certificate. The data is deleted from the server immediately after the transfer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What if my certificate does not arrive in the application?\",\n          \"text\": \"Once the certificate has been generated by the laboratory or test centre, it is available for transfer. Make sure that your smartphone is connected to the Internet to receive certificates.\\n\\nIf you still do not receive your certificate, contact the place where you performed the test (centre, pharmacy, doctor's practice).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"What happens if I test positive?\",\n          \"text\": \"In case of a positive rapid antigen test, you will not receive a COVID certificate from the laboratory.\\n\\nIn case of a positive PCR test, you will receive a COVID certificate for cured persons, valid from the 11th day after the test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"fr\": {\n      \"faqTitle\": \"Comment fonctionne le transfert ?\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L’application vérifie régulièrement si un certificat COVID est disponible pour votre code de transfert.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Dès que le certificat COVID est disponible, il apparaît dans l’application. Si vous avez activé les notifications, vous recevrez un message de l’application.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Le code de transfert expire après 30 jours. Une fois ce délai passé, l’application attend tout autre transfert pendant 72 h. Ensuite, le code de transfert n’est plus valable.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Comment mes données sont-elles sécurisées lors du transfert ?\",\n          \"text\": \"Pour le transfert, votre certificat COVID est fourni sous forme cryptée. Le code de transfert garantit que seule votre application peut recevoir le certificat. Les données sont supprimées du serveur immédiatement après le transfert.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que faire si mon certificat n’arrive pas dans l’application ?\",\n          \"text\": \"Dès que le certificat a été généré par le laboratoire ou le centre de test, il est disponible pour le transfert. Vérifiez que votre smartphone est connecté à Internet pour recevoir des certificats.\\n\\nSi malgré tout vous ne recevez pas votre certificat, adressez-vous au lieu où vous avez effectué le test (centre, pharmacie, cabinet médical).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Que se passe-t-il en cas de test positif ?\",\n          \"text\": \"En cas de test rapide antigénique positif, vous ne recevrez pas de certificat COVID du laboratoire.\\n\\nEn cas de test PCR positif, vous recevrez un certificat COVID pour personnes guéries, valable à partir du 11e jour suivant le test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"it\": {\n      \"faqTitle\": \"Il trasferimento funziona così\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L’app verifica periodicamente se è disponibile un certificato COVID per il tuo codice di trasferimento.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Non appena il certificato COVID è disponibile, viene visualizzato nell’app. Se hai attivato le notifiche, ne riceverai una dall’app.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Il codice di trasferimento scade dopo 30 giorni. Poi l’app attende un eventuale trasferimento per altre 72 ore prima di considerare scaduto il codice.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Come sono protetti i miei dati durante il trasferimento?\",\n          \"text\": \"Il tuo certificato COVID è messo a disposizione per il trasferimento in forma criptata. Il codice di trasferimento assicura che soltanto la tua app sia in grado di riceverlo. I dati sono eliminati dal server immediatamente dopo il trasferimento.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa posso fare se il certificato non arriva?\",\n          \"text\": \"Non appena il certificato è stato generato dal laboratorio o dal centro di test, è disponibile per il trasferimento. Accertati che il tuo smartphone sia connesso a Internet per poter ricevere i certificati.\\n\\nSe comunque non dovessi ricevere il tuo certificato COVID, rivolgiti al servizio che ha effettuato il test (centro di test, farmacia, medico).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Cosa accade in caso di risultato positivo del test?\",\n          \"text\": \"In caso di test antigenico positivo, non ricevi alcun certificato di test dal laboratorio. \\n\\nIn caso di test PCR positivo, ricevi un certificato COVID per persone guarite, valido a partire dall’undicesimo giorno dopo l’esecuzione del test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    },\n    \"rm\": {\n      \"faqTitle\": \"Uschia funcziuna il transfer\",\n      \"faqSubTitle\": null,\n      \"faqIntroSections\": [\n        {\n          \"iconAndroid\": \"ic_one\",\n          \"iconIos\": \"ic-one\",\n          \"text\": \"L'app verifitgescha regularmain, schebain in certificat COVID è disponibel per Voss code da transfer.\"\n        },\n        {\n          \"iconAndroid\": \"ic_two\",\n          \"iconIos\": \"ic-two\",\n          \"text\": \"Uschespert ch'il certificat COVID è disponibel, cumpara el en l'app. Sche Vus avais activà ils avis, vegnis Vus infurmada u infurmà da l'app.\"\n        },\n        {\n          \"iconAndroid\": \"ic_three\",\n          \"iconIos\": \"ic-three\",\n          \"text\": \"Suenter 30 dis scada il code da transfer. Silsuenter spetga l'app anc ulteriuras 72 uras, avant ch'il code da transfer daventa nunvalaivel.\"\n        }\n      ],\n      \"faqIconIos\": null,\n      \"faqIconAndroid\": null,\n      \"faqEntries\": [\n        {\n          \"title\": \"Co vegnan protegidas mias datas tar il transfer?\",\n          \"text\": \"Per il transfer vegn Voss certificat COVID mess a disposiziun en moda codifitgada. Il code da transfer garantescha che mo Vossa app po retschaiver il certificat COVID. Las datas vegnan puspè stizzadas dal server immediatamain suenter il transfer.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge poss jau far, sch'il certificat n'arriva betg?\",\n          \"text\": \"Uschespert ch'il certificat è vegnì generà dal labor u dal center da test, stat el a disposiziun per il transfer. Guardai che Voss smartphone saja collià cun l'internet per pudair retschaiver certificats.\\n\\nEn cas che Voss certificat COVID n'arriva tuttina betg, As drizzai al post che ha fatg il test (center da test, apoteca, media u medi).\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        },\n        {\n          \"title\": \"Tge capita en cas d'in test positiv?\",\n          \"text\": \"En cas d'in test svelt d'antigens positiv na survegnis Vus betg in certificat COVID dal labor.\\n\\nEn cas d'in test da PCR positiv survegnis Vus in certificat COVID per persunas guaridas. El è valaivel a partir dal 11. di suenter la prelevaziun dal test.\",\n          \"iconAndroid\": null,\n          \"iconIos\": null,\n          \"linkTitle\": null,\n          \"linkUrl\": null\n        }\n      ]\n    }\n  },\n  \"lightCertificateActive\": true,\n  \"pdfGenerationActive\": true,\n  \"vaccinationHints\": {\n    \"de\": [\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie unbeschwert in die meisten Länder reisen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie sich vor Erkrankung und einem allfälligen schweren Verlauf schützen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie auf sichere Art immun werden.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie mithelfen, die Krankheitslast zu reduzieren.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie helfen, die Auswirkungen der Pandemie zu bekämpfen.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie die Langzeitfolgen einer Covid-19-Erkrankung vermeiden.\"\n      },\n      {\n        \"title\": \"Jetzt impfen lassen!\",\n        \"text\": \"Mit der Covid-19-Impfung können Sie dazu beitragen, das Gesundheitswesen zu entlasten.\"\n      }\n    ],\n    \"en\": [\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means hassle-free travel to most countries. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means protection from infection and severe disease. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means immunity the safe way.\"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to reduce the disease burden. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to control the impact of the pandemic. \"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means preventing long COVID.\"\n      },\n      {\n        \"title\": \"Get vaccinated today!\",\n        \"text\": \"Being vaccinated against COVID-19 means helping to relieve the pressure on the health system.\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet de voyager sereinement dans la plupart des pays.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination vous protège contre le COVID-19 et, le cas échéant, contre une évolution grave de la maladie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet de vous immuniser en toute sécurité.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à réduire la charge de morbidité.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous contribuez à la lutte contre les conséquences de la pandémie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"La vaccination contre le COVID-19 vous permet d’éviter les effets à long terme de la maladie.\"\n      },\n      {\n        \"title\": \"Faites-vous vacciner sans plus attendre !\",\n        \"text\": \"Grâce à la vaccination contre le COVID-19, vous pouvez contribuer à décharger le système de santé.\"\n      }\n    ],\n    \"it\": [\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi viaggiare senza preoccupazioni nella maggior parte dei Paesi.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi proteggerti dalla malattia e da un eventuale decorso grave.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi immunizzarti in modo sicuro.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a ridurre il carico di malattia.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a combattere le ripercussioni della pandemia.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi evitare le conseguenze a lungo termine di una malattia COVID-19.\"\n      },\n      {\n        \"title\": \"Fatti vaccinare ora!\",\n        \"text\": \"Con la vaccinazione anti-COVID-19 puoi contribuire a sgravare il sistema sanitario.\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus viagiar libramain en la gronda part dals pajais.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus As proteger cunter ina infecziun e cunter in eventual grev decurs da la malsogna.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus As immunisar en moda segira.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a reducir la chargia da la malsogna.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a cumbatter cunter las consequenzas da la pandemia.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus evitar las consequenzas da lunga durada d'ina infecziun cun COVID-19.\"\n      },\n      {\n        \"title\": \"Sa laschar vaccinar ussa!\",\n        \"text\": \"Cun la vaccinaziun cunter COVID-19 pudais Vus gidar a distgargiar il sistem da sanadad.\"\n      }\n    ]\n  },\n  \"foreignRulesHints\": {\n    \"de\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"Für die Aktualität und Vollständigkeit der gegebenen Informationen übernimmt der Bund keine Haftung.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Die Einreiseregeln können sich ändern. Prüfen Sie daher die Gültigkeit kurz vor der Abreise und informieren Sie sich zusätzlich online über die aktuellen Einreiseregeln des Ziellandes.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Die oben genannten Angaben beziehen sich nur auf die Einreiseregeln des Ziellandes. Für allfällige zertifikatspflichtige Bereiche innerhalb des Landes können andere Regeln gelten.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Land nicht gefunden? Nicht alle Länder akzeptieren Covid-Zertifikate oder es wurden keine Einreiseregeln verfügbar gemacht.\"\n      }\n    ],\n    \"en\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"The federal government assumes no liability for the up-to-dateness or completeness of the information provided.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Entry rules can change. So check the validity shortly before you depart, and go online to make sure of the latest entry rules for your destination country.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"The above information relates only to the rules for entering your destination country. Different rules may apply to settings where a certificate is required within the country.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Couldn’t find the country you were looking for? Not all countries accept COVID certificates; it might also be that no entry rules have been made available.\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"La Confédération décline toute responsabilité en ce qui concerne l’actualité et l’exhaustivité des informations fournies.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Les dispositions d’entrée peuvent changer. Vérifiez donc la validité de votre certificat avant votre départ et renseignez-vous également en ligne sur les dispositions d’entrée en vigueur dans votre pays de destination.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Les informations ci-dessus ne concernent que les dispositions d’entrée du pays de destination. Dans le pays, d’autres règles peuvent s’appliquer aux éventuels domaines soumis à l’obligation de présenter un certificat.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Vous n’avez pas trouvé votre pays de destination ? Il se peut que certains pays ne reconnaissent pas le certificat COVID ou qu’aucune disposition d’entrée ne soit disponible.\"\n      }\n    ],\n    \"it\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"La Confederazione non si assume la responsabilità per l’attualità e la completezza delle informazioni fornite.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Le disposizioni d’entrata possono cambiare. Verificate poco prima della partenza se il vostro certificato è valido e informatevi ulteriormente online sulle disposizioni d’entrata attuali del Paese di destinazione.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Le informazioni sopra indicate si riferiscono solo alle disposizioni d’entrata del Paese di destinazione. Per eventuali settori soggetti all’obbligo di certificato all’interno del Paese possono vigere altre regole.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"Non avete trovato un Paese? Non tutti i Paesi accettano i certificati COVID o rendono disponibili le regole d’entrata.\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"iconIos\": \"ic-info-outline\",\n        \"iconAndroid\": \"ic_info_outline\",\n        \"text\": \"Per l'actualitad e la cumplettadad da las infurmaziuns na surpiglia la Confederaziun nagina responsabladad.\"\n      },\n      {\n        \"iconIos\": \"ic-timelapse\",\n        \"iconAndroid\": \"ic_timelapse\",\n        \"text\": \"Las reglas d'entrada pon sa midar. Verifitgai perquai la valaivladad curt avant che Vus partis ed As infurmai ultra da quai online davart las reglas d'entrada actualas dal pajais da destinaziun.\"\n      },\n      {\n        \"iconIos\": \"ic-travel\",\n        \"iconAndroid\": \"ic_travel\",\n        \"text\": \"Las infurmaziuns qua survart sa refereschan mo a las reglas d'entrada dal pajais da destinaziun. Per secturs che pretendan eventualmain in certificat entaifer il pajais pon valair autras reglas.\"\n      },\n      {\n        \"iconIos\": \"ic-question-outline\",\n        \"iconAndroid\": \"ic_question_outline\",\n        \"text\": \"N'avais Vus betg chattà Voss pajais da destinaziun? Betg tut ils pajais n'acceptan certificats COVID, u i n'èn vegnidas messas a disposiziun naginas infurmaziuns davart eventualas reglas d'entrada.\"\n      }\n    ]\n  },\n  \"foreignRulesLinkText\": {\n    \"de\": \"reopen.europa.eu\",\n    \"en\": \"reopen.europa.eu\",\n    \"fr\": \"reopen.europa.eu\",\n    \"it\": \"reopen.europa.eu\",\n    \"rm\": \"reopen.europa.eu\"\n  },\n  \"foreignRulesLinkUrl\": {\n    \"de\": \"https://reopen.europa.eu/\",\n    \"en\": \"https://reopen.europa.eu/\",\n    \"fr\": \"https://reopen.europa.eu/\",\n    \"it\": \"https://reopen.europa.eu/\",\n    \"rm\": \"https://reopen.europa.eu/\"\n  },\n  \"vaccinationBookingCantons\": {\n    \"de\": [\n      {\n        \"name\": \"Aargau\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Ausserrhoden\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Innerrhoden\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basel-Landschaft\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.bl.ch/impfen\"\n      },\n      {\n        \"name\": \"Basel-Stadt\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Bern\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Freiburg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/de/gesundheit/covid-19/covid-19-impfung-in-ihrer-naehe-durch-impfteams-in-den-impfzentren-in-der-apotheke-oder-bei-ihrem-arzt\"\n      },\n      {\n        \"name\": \"Genf\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glarus\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Graubünden\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Luzern\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuenburg\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwalden\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwalden\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"St. Gallen\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhausen\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Solothurn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgau\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Wallis\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Waadt\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zürich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"en\": [\n      {\n        \"name\": \"Aargau\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Ausserrhoden\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Innerrhoden\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basel-Country\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/englisch-english\"\n      },\n      {\n        \"name\": \"Basel-City\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berne\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Fribourg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Geneva\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/en/getting-vaccinated-against-covid-19\"\n      },\n      {\n        \"name\": \"Glarus\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Graubünden\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerne\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwalden\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwalden\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"St. Gallen\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhausen\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Solothurn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Ticino\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Valais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/en/\"\n      },\n      {\n        \"name\": \"Zürich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"fr\": [\n      {\n        \"name\": \"Argovie\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Rhodes-Extérieures\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Rhodes-Intérieures\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Bâle-Campagne\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/franzoesisch-francais\"\n      },\n      {\n        \"name\": \"Bâle-Ville\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berne\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"https://www.gsi.be.ch/fr/start/themen/coronavirus/impfen.html\"\n      },\n      {\n        \"name\": \"Fribourg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Genève\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glaris\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grisons\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/DE/institutionen/verwaltung/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Jura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerne\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidwald\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obwald\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"Saint-Gall\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffhouse\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Schwyz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soleure\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Thurgovie\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Valais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/web/coronavirus/#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zoug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zurich\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"it\": [\n      {\n        \"name\": \"Argovia\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzello Esterno\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzello Interno\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basilea Campagna\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.baselland.ch/politik-und-behorden/direktionen/volkswirtschafts-und-gesundheitsdirektion/amt-fur-gesundheit/medizinische-dienste/kantonsarztlicher-dienst/aktuelles/corona-impfung/italienisch-italiano\"\n      },\n      {\n        \"name\": \"Basilea Città\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berna\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Friburgo\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Ginevra\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glarona\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grigioni\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/IT/istituzioni/amministrazione/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Giura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerna\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Nidvaldo\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Obvaldo\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"San Gallo\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Sciaffusa\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Svitto\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soletta\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Turgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Ticino\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Vallese\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vaud\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zugo\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Zurigo\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ],\n    \"rm\": [\n      {\n        \"name\": \"Argovia\",\n        \"iconAndroid\": \"icon_ag\",\n        \"iconIos\": \"icon-ag\",\n        \"linkUrl\": \"https://www.ag.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Appenzell Dadora\",\n        \"iconAndroid\": \"icon_ar\",\n        \"iconIos\": \"icon-ar\",\n        \"linkUrl\": \"https://www.ar.ch/verwaltung/departement-gesundheit-und-soziales/amt-fuer-gesundheit/informationsseite-coronavirus/coronaimpfung/\"\n      },\n      {\n        \"name\": \"Appenzell Dadens\",\n        \"iconAndroid\": \"icon_ai\",\n        \"iconIos\": \"icon-ai\",\n        \"linkUrl\": \"https://www.ai.ch/coronavirus-impfung\"\n      },\n      {\n        \"name\": \"Basilea-Champagna\",\n        \"iconAndroid\": \"icon_bl\",\n        \"iconIos\": \"icon-bl\",\n        \"linkUrl\": \"https://www.bl.ch/impfen\"\n      },\n      {\n        \"name\": \"Basilea-Citad\",\n        \"iconAndroid\": \"icon_bs\",\n        \"iconIos\": \"icon-bs\",\n        \"linkUrl\": \"http://www.coronaimpfzentrumbasel.ch\"\n      },\n      {\n        \"name\": \"Berna\",\n        \"iconAndroid\": \"icon_be\",\n        \"iconIos\": \"icon-be\",\n        \"linkUrl\": \"http://www.be.ch/corona-impfung\"\n      },\n      {\n        \"name\": \"Friburg\",\n        \"iconAndroid\": \"icon_fr\",\n        \"iconIos\": \"icon-fr\",\n        \"linkUrl\": \"https://www.fr.ch/sante/covid-19/covid-19-vaccination\"\n      },\n      {\n        \"name\": \"Genevra\",\n        \"iconAndroid\": \"icon_ge\",\n        \"iconIos\": \"icon-ge\",\n        \"linkUrl\": \"https://www.ge.ch/se-faire-vacciner-contre-covid-19\"\n      },\n      {\n        \"name\": \"Glaruna\",\n        \"iconAndroid\": \"icon_gl\",\n        \"iconIos\": \"icon-gl\",\n        \"linkUrl\": \"https://www.gl.ch/verwaltung/finanzen-und-gesundheit/gesundheit/coronavirus.html/4817#Impfung\"\n      },\n      {\n        \"name\": \"Grischun\",\n        \"iconAndroid\": \"icon_gr\",\n        \"iconIos\": \"icon-gr\",\n        \"linkUrl\": \"https://www.gr.ch/RM/instituziuns/administraziun/djsg/ga/coronavirus/info/impfen/Seiten/impfen.aspx\"\n      },\n      {\n        \"name\": \"Giura\",\n        \"iconAndroid\": \"icon_ju\",\n        \"iconIos\": \"icon-ju\",\n        \"linkUrl\": \"https://www.jura.ch/fr/Autorites/Coronavirus/Vaccination.html\"\n      },\n      {\n        \"name\": \"Lucerna\",\n        \"iconAndroid\": \"icon_lu\",\n        \"iconIos\": \"icon-lu\",\n        \"linkUrl\": \"http://www.lu.ch/covid_impfung\"\n      },\n      {\n        \"name\": \"Neuchâtel\",\n        \"iconAndroid\": \"icon_ne\",\n        \"iconIos\": \"icon-ne\",\n        \"linkUrl\": \"https://www.ne.ch/autorites/DFS/SCSP/medecin-cantonal/maladies-vaccinations/covid-19-vaccination/Pages/accueil.aspx\"\n      },\n      {\n        \"name\": \"Sutsilvania\",\n        \"iconAndroid\": \"icon_nw\",\n        \"iconIos\": \"icon-nw\",\n        \"linkUrl\": \"https://www.nw.ch/gesundheitsamtdienste/6044#Impfung\"\n      },\n      {\n        \"name\": \"Sursilvania\",\n        \"iconAndroid\": \"icon_ow\",\n        \"iconIos\": \"icon-ow\",\n        \"linkUrl\": \"https://www.ow.ch/dienstleistungen/7129\"\n      },\n      {\n        \"name\": \"Son Gagl\",\n        \"iconAndroid\": \"icon_sg\",\n        \"iconIos\": \"icon-sg\",\n        \"linkUrl\": \"https://www.sg.ch/coronavirus/impfen\"\n      },\n      {\n        \"name\": \"Schaffusa\",\n        \"iconAndroid\": \"icon_sh\",\n        \"iconIos\": \"icon-sh\",\n        \"linkUrl\": \"https://sh.ch/CMS/Webseite/Kanton-Schaffhausen/Beh-rde/Verwaltung/Departement-des-Innern/Gesundheitsamt-7126057-DE.html\"\n      },\n      {\n        \"name\": \"Sviz\",\n        \"iconAndroid\": \"icon_sz\",\n        \"iconIos\": \"icon-sz\",\n        \"linkUrl\": \"https://www.sz.ch/corona-impfen\"\n      },\n      {\n        \"name\": \"Soloturn\",\n        \"iconAndroid\": \"icon_so\",\n        \"iconIos\": \"icon-so\",\n        \"linkUrl\": \"https://so.ch/coronaimpfung\"\n      },\n      {\n        \"name\": \"Turgovia\",\n        \"iconAndroid\": \"icon_tg\",\n        \"iconIos\": \"icon-tg\",\n        \"linkUrl\": \"https://gesundheit.tg.ch/aktuelles/impfung-fuer-covid-19.html/11590\"\n      },\n      {\n        \"name\": \"Tessin\",\n        \"iconAndroid\": \"icon_ti\",\n        \"iconIos\": \"icon-ti\",\n        \"linkUrl\": \"http://www.ti.ch/vaccinazione\"\n      },\n      {\n        \"name\": \"Uri\",\n        \"iconAndroid\": \"icon_ur\",\n        \"iconIos\": \"icon-ur\",\n        \"linkUrl\": \"https://www.ur.ch/themen/3673\"\n      },\n      {\n        \"name\": \"Vallais\",\n        \"iconAndroid\": \"icon_vs\",\n        \"iconIos\": \"icon-vs\",\n        \"linkUrl\": \"https://www.vs.ch/de/web/coronavirus#ancre_vaccination\"\n      },\n      {\n        \"name\": \"Vad\",\n        \"iconAndroid\": \"icon_vd\",\n        \"iconIos\": \"icon-vd\",\n        \"linkUrl\": \"https://vd.ch/coronavirus-vaccins\"\n      },\n      {\n        \"name\": \"Zug\",\n        \"iconAndroid\": \"icon_zg\",\n        \"iconIos\": \"icon-zg\",\n        \"linkUrl\": \"https://www.corona-impfung-zug.ch/\"\n      },\n      {\n        \"name\": \"Turitg\",\n        \"iconAndroid\": \"icon_zh\",\n        \"iconIos\": \"icon-zh\",\n        \"linkUrl\": \"http://www.zh.ch/coronaimpfung\"\n      }\n    ]\n  },\n  \"vaccinationBookingInfo\": {\n    \"de\": {\n      \"title\": \"Impftermin in Ihrer Nähe buchen\",\n      \"text\": \"Eine Impfung könnte zum Beispiel an diesen Orten in Ihrer Nähe stattfinden:\\n\\n- in spezifischen Impfzentren\\n- in Spitälern\\n- bei Ihrem Hausarzt oder Ihrer Hausärztin\\n- in Impfapotheken\\n\\nViele Orte bieten auch Walk-in-Impfungen ohne Termine an.\",\n      \"info\": \"Die Covid-19-Impfung ist für Personen ab 5 Jahren empfohlen.\",\n      \"impfcheckTitle\": \"Jetzt Termin buchen\",\n      \"impfcheckText\": \"Der Covid-19 Impf-Check gibt Auskunft über Erst- sowie Auffrischimpfungen und führt Sie zur entsprechenden Anlaufstelle in Ihrem Kanton.\",\n      \"impfcheckButton\": \"Zum Impf-Check\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    },\n    \"en\": {\n      \"title\": \"Book a vaccination appointment near you\",\n      \"text\": \"Vaccination may be performed at the following locations near you:\\n\\n- at specific vaccination centres\\n- in hospitals\\n- at your general practitioner's surgery\\n- at a vaccination pharmacy\\n\\nMany places also offer walk-in vaccinations without an appointment.\",\n      \"info\": \"The COVID-19 vaccination is recommended for those over 5. \",\n      \"impfcheckTitle\": \"Book an appointment now\",\n      \"impfcheckText\": \"The COVID-19 Vaccination Check provides information on initial and booster vaccinations and guides you to the relevant point of contact in your canton.\",\n      \"impfcheckButton\": \"To the Vaccination Check\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    },\n    \"fr\": {\n      \"title\": \"Prendre un rendez-vous de vaccination près de chez vous\",\n      \"text\": \"La vaccination pourrait, par exemple, être proposée dans les lieux suivants situés à proximité de chez vous :\\n\\n- dans des centres de vaccination désignés\\n- dans les hôpitaux\\n- chez votre médecin de famille\\n- dans les pharmacies\\n\\nIl est aussi possible de se faire vacciner sans rendez-vous dans de nombreux endroits.\",\n      \"info\": \"La vaccination contre le COVID-19 est recommandée pour les personnes dès 5 ans.\",\n      \"impfcheckTitle\": \"Prendre un rendez-vous maintenant\",\n      \"impfcheckText\": \"COVID-19 Vac-check fournit des renseignements sur la première vaccination ainsi que sur la vaccination de rappel et vous guide vers le service compétent de votre canton.\",\n      \"impfcheckButton\": \"Vers COVID-19 Vac-check\",\n      \"impfcheckUrl\": \"https://covid19-vac-check.ch/\"\n    },\n    \"it\": {\n      \"title\": \"Prendi appuntamento per la vaccinazione nelle tue vicinanze\",\n      \"text\": \"Per esempio potresti farti vaccinare in uno di questi luoghi nelle tue vicinanze:\\n\\n- in centri di vaccinazione specifici\\n- negli ospedali\\n- dal tuo medico di famiglia\\n- nelle farmacie che vaccinano\\n\\nMolti di essi offrono anche vaccinazioni libere senza appuntamento.\",\n      \"info\": \"La vaccinazione anti-COVID-19 è raccomandata per le persone a partire dai 5 anni.\",\n      \"impfcheckTitle\": \"Prendi appuntamento ora\",\n      \"impfcheckText\": \"Il COVID-19 Vac-Check fornisce informazioni sulle prime vaccinazioni, sulle vaccinazioni di richiamo e ti indirizza verso il punto di contatto del tuo Cantone.\",\n      \"impfcheckButton\": \"Vai al COVID-19 Vac-Check\",\n      \"impfcheckUrl\": \"https://covid19-vac-check.ch/\"\n    },\n    \"rm\": {\n      \"title\": \"Reservar in termin da vaccinaziun en Vossa vischinanza\",\n      \"text\": \"Ina vaccinaziun pudess per exempel vegnir fatga en quests lieus en Vossa vischinanza:\\n\\n- en centers da vaccinaziun specifics\\n- en ospitals\\n- tar Vossa media u tar Voss medi da chasa\\n- en apotecas da vaccinaziun\\n\\nBlers lieus porschan er vaccinaziuns «walk-in» senza termin.\",\n      \"info\": \"La vaccinaziun cunter COVID-19 è recumandada per persunas a partir da 5 onns.\",\n      \"impfcheckTitle\": \"Reservar in termin ussa\",\n      \"impfcheckText\": \"Il check da vaccinaziun COVID-19 As infurmescha davart las emprimas vaccinaziuns sco er davart las vaccinaziuns da rinfrestgament ed As maina al post da consultaziun correspundent da Voss chantun.  \",\n      \"impfcheckButton\": \"Al check da vaccinaziun\",\n      \"impfcheckUrl\": \"https://covid19.impf-check.ch/\"\n    }\n  },\n  \"checkModesInfo\": {\n    \"de\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für geimpfte, genesene oder negativ getestete Personen.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Kein Zutritt.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für geimpfte oder genesene Personen.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Kein Zutritt.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Zutritt zu Betrieben und Veranstaltungen für Personen, deren vollständige Impfung, Auffrischimpfung oder Genesung (basierend auf PCR-Test) nicht länger als 120 Tage zurückliegt. Sie benötigen kein zusätzliches Testzertifikat.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Für den Zutritt zu Betrieben und Veranstaltungen wird zusätzlich zum Covid-Zertifikat für geimpfte oder genesene Personen ein negatives Testresultat benötigt.\"\n          }\n        }\n      }\n    },\n    \"en\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Access to organisations and events permitted for people who have been vaccinated, or who have recovered or tested negative.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Access not permitted.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Access to organisations and events permitted for people who have been vaccinated or who have recovered.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Access not permitted.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Access to organisations and events permitted for people who have been fully vaccinated, have received a booster jab or have recovered (based on PCR test results) in the preceding 120 days; an additional test certificate is not required.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"To gain access to organisations and events, a negative test result is required in addition to the COVID certificate for people who have been vaccinated or have recovered.\"\n          }\n        }\n      }\n    },\n    \"fr\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées, guéries ou testées négatives.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Accès refusé.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Accès refusé.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes dont la vaccination complète, la vaccination de rappel ou la guérison (confirmée par un test PCR) ne date pas de plus de 120 jours. Vous n'avez pas besoin de présenter un certificat de test supplémentaire.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Accès aux établissements et aux manifestations réservé aux personnes vaccinées ou guéries qui présentent, en plus d'un certificat COVID, un résultat de test négatif.\"\n          }\n        }\n      }\n    },\n    \"it\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate, guarite o testate negative.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"L’accesso non è consentito.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone vaccinate o guarite.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"L’accesso non è consentito.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"L’accesso a strutture e manifestazioni è consentito alle persone per le quali sono trascorsi al massimo 120 giorni dal completamento del ciclo vaccinale, dalla somministrazione della dose di richiamo o dalla guarigione (sulla base di un test PCR). In questo caso non è necessario un ulteriore certificato di test.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Oltre al certificato di vaccinazione o di guarigione, per l’accesso a strutture e manifestazioni è necessario presentare anche il risultato di un test negativo.\"\n          }\n        }\n      }\n    },\n    \"rm\": {\n      \"title\": \"Info\",\n      \"modes\": {\n        \"THREE_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_3g\",\n            \"iconIos\": \"ic_3g\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas vaccinadas, guaridas u cun in test negativ.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no3g\",\n            \"iconIos\": \"ic_no3g\",\n            \"text\": \"Nagin access.\"\n          }\n        },\n        \"TWO_G\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g\",\n            \"iconIos\": \"ic_2g\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas vaccinadas u guaridas.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no2g\",\n            \"iconIos\": \"ic_no2g\",\n            \"text\": \"Nagin access.\"\n          }\n        },\n        \"TWO_G_PLUS\": {\n          \"ok\": {\n            \"iconAndroid\": \"ic_2g_plus\",\n            \"iconIos\": \"ic-2-g-plus\",\n            \"text\": \"Access a manaschis ed ad occurrenzas per persunas ch’èn vaccinadas cumplettamain, che han laschà rinfrestgar la vaccinaziun u ch’èn guaridas (sin basa d’in test da PCR) avant maximalmain 120 dis. Vus na duvrais nagin certificat da test supplementar.\"\n          },\n          \"notOk\": {\n            \"iconAndroid\": \"ic_no_2_g_plus_height\",\n            \"iconIos\": \"ic-no-2-g-plus-height\",\n            \"text\": \"Per l’access a manaschis ed ad occurrenzas dovri ultra dal certificat COVID per persunas vaccinadas u guaridas in test negativ.\"\n          }\n        }\n      }\n    }\n  },\n  \"lightCertDurationInHours\": 24,\n  \"showVaccinationHintHomescreen\": false,\n  \"showVaccinationHintDetail\": false,\n  \"showVaccinationHintTransfer\": false,\n  \"refreshButtonDisabled\": true,\n  \"refreshButtonInfo\": {\n    \"de\": {\n      \"title\": \"Info\",\n      \"text1\": \"Der «Refresh-Button» wurde entfernt.\",\n      \"text2\": \"Sollte Ihr Covid-Zertifikat abgelaufen oder technisch ungültig sein, wird Ihnen dies direkt auf dem Zertifikat angezeigt.\",\n      \"fatTitle\": \"Für Prüfende\",\n      \"text3\": \"Die Prüfung von Covid-Zertifikaten ist mit der App «COVID Certificate Check» vorzunehmen.\",\n      \"linkText\": \"Mehr erfahren\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"\n    },\n    \"en\": {\n      \"title\": \"Info\",\n      \"text1\": \"The \\\"Refresh button\\\" has been removed.\",\n      \"text2\": \"If your COVID certificate has expired or is technically invalid, this is indicated directly on the certificate.\",\n      \"fatTitle\": \"For verifiers\",\n      \"text3\": \"COVID certificates are to be verified with the \\\"COVID Certificate Check\\\" app.\",\n      \"linkText\": \"To find out more\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1851413288\"\n    },\n    \"fr\": {\n      \"title\": \"Information\",\n      \"text1\": \"Le bouton «rafraîchir» a été supprimé.\",\n      \"text2\": \"Si votre certificat COVID a expiré ou s'il n'est techniquement pas valable, cette information apparaît automatiquement sur le certificat.\",\n      \"fatTitle\": \"Pour les personnes chargées du contrôle\",\n      \"text3\": \"La vérification des certificats COVID doit s'effectuer au moyen de l'application «COVID Certificate Check».\",\n      \"linkText\": \"Pour en savoir plus\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#-1006172949\"\n    },\n    \"it\": {\n      \"title\": \"Informazione\",\n      \"text1\": \"Il pulsante «Aggiorna» è stato eliminato.\",\n      \"text2\": \"Se il certificato è scaduto o se non è valido per motivi tecnici, l’informazione compare direttamente nell’app. \",\n      \"fatTitle\": \"Per le persone incaricate della verifica\",\n      \"text3\": \"I certificati COVID devono essere verificati utilizzando l’app «COVID Certificate Check».\",\n      \"linkText\": \"Per saperne di più\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1358421103\"\n    },\n    \"rm\": {\n      \"title\": \"Infurmaziun\",\n      \"text1\": \"La «buttun da refresh» è vegnida stizzada.\",\n      \"text2\": \"Sche Voss certificat COVID è spirà u sch’el n’è tecnicamain betg valaivel, vegn quai inditgà directamain sin il certificat.\",\n      \"fatTitle\": \"Per las persunas che verifitgeschan\",\n      \"text3\": \"Ils certificats COVID ston vegnir verifitgads cun l’app «COVID Certificate Check».\",\n      \"linkText\": \"Dapli infurmaziuns\",\n      \"linkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/covid-zertifikat/covid-zertifikat-pruefer-aussteller-technische-informationen.html#1070048217\"\n    }\n  },\n  \"eolBannerInfo\": {\n    \"de\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Verkürzte Gültigkeitsdauer\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Verkürzte Gültigkeitsdauer\",\n        \"detailText\": \"Dieses Zertifikat wird bald ablaufen.\",\n        \"detailMoreInfo\": \"Mehr erfahren\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"Per 31. Jan. 2022 gelten in der Schweiz reduzierte Gültigkeitsdauern von 270 statt 365 Tagen für Covid-Zertifikate für Geimpfte oder Genesene. Dieses Zertifikat ist von der verkürzten Gültigkeitsdauer unmittelbar betroffen:\",\n        \"popupBoldText\": \"Dieses Covid-Zertifikat kann ab dem 31. Jan. 2022 nicht mehr verwendet werden, da die Gültigkeitsdauer dann bereits abgelaufen sein wird.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Mehr erfahren\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Bald abgelaufen\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Dieses Zertifikat läuft bald ab.\",\n        \"detailMoreInfo\": \"Mehr erfahren?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Dieses Covid-Zertifikat ist nur noch wenige Tage gültig. Bitte beachten Sie das auf dem Zertifikat ausgewiesene Ablaufdatum.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Und nun?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"\n      }\n    },\n    \"en\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Shortened period of validity\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Shortened period of validity\",\n        \"detailText\": \"This certificate will soon expire.\",\n        \"detailMoreInfo\": \"More information\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"As of 31 Jan 2022 a shortened period of validity of 270 instead of 365 days applies to COVID vaccination or recovery certificates in Switzerland. This certificate is directly affected by the shortened period of validity:\",\n        \"popupBoldText\": \"This COVID certificate can no longer be used after 31 Jan 2022 as the period of validity will already have expired.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"More information\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-period-validity-certificates-vaccination-or-recovery-being-shortened-365-270\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Imminent expiry\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"This certificate will soon expire.\",\n        \"detailMoreInfo\": \"More information?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"This COVID certificate is valid for only a few more days. Please note the expiry date shown on the certificate.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"And now?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/what-should-i-do-if-my-covid-certificate-about-expire-under-swiss-rules-validity\"\n      }\n    },\n    \"fr\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Durée de validité réduite\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Durée de validité réduite\",\n        \"detailText\": \"Ce certificat expirera bientôt.\",\n        \"detailMoreInfo\": \"En savoir plus\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"À partir du 31 janvier 2022, la durée de validité en Suisse des certificats COVID pour les personnes vaccinées ou guéries est réduite de 365 à 270 jours. Ce certificat est directement concerné:\",\n        \"popupBoldText\": \"Ce certificat COVID ne peut plus être utilisé à partir du 31 janvier 2022.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"En savoir plus\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-la-duree-de-validite-des-certificats-de-vaccination-ou-de-guerison-t-elle\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Expiration imminente\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Ce certificat expirera bientôt.\",\n        \"detailMoreInfo\": \"En savoir plus?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Ce certificat COVID expirera dans quelques jours. Nous attirons votre attention sur la date de fin de validité affichée.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Et maintenant ?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/que-dois-je-faire-si-mon-certificat-covid-est-sur-le-point-dexpirer-en-suisse\"\n      }\n    },\n    \"it\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Durata di validità abbreviata\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Durata di validità abbreviata\",\n        \"detailText\": \"Questo certificato sta per scadere.\",\n        \"detailMoreInfo\": \"Per saperne di più\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"Dal 31 gennaio 2022 in Svizzera vige una durata di validità del certificato COVID per persone vaccinate o guarite di 270 anziché di 365 giorni. Questo certificato è interessato direttamente dall’abbreviazione della durata di validità:\",\n        \"popupBoldText\": \"La scadenza della durata di validità di questo certificato COVID è il 31 gennaio 2022. Pertanto il certificato non è più utilizzabile dopo quella data.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Per saperne di più\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-la-durata-di-validita-dei-certificati-di-vaccinazione-o-di-guarigione-e\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Scadenza imminente\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Questo certificato sta per scadere.\",\n        \"detailMoreInfo\": \"Per saperne di più\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Questo certificato COVID è valido ancora per pochi giorni. Si prega di tenere conto della data di scadenza indicata sullo stesso.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"E ora?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/cosa-devo-fare-se-il-mio-certificato-covid-sta-scadere-secondo-le-regole-di\"\n      }\n    },\n    \"rm\": {\n      \"invalidFromFirstFebruary\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Valaivladad pli curta\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Valaivladad pli curta\",\n        \"detailText\": \"Quest certificat scada bainbaud.\",\n        \"detailMoreInfo\": \"Dapli infurmaziuns\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": \"A partir dals 31-01-2022 valan en Svizra duradas da valaivladad reducidas da 270 dis empè da 365 dis per certificats COVID per persunas vaccinadas u guaridas. Quest certificat è pertutgà directamain da la valaivladad pli curta:\",\n        \"popupBoldText\": \"Quest certificat COVID na po betg pli vegnir duvrà a partir dals 31-01-2022, perquai che la durada da valaivladad è lura gia scadida.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Dapli infurmaziuns\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/warum-wird-die-gueltigkeitsdauer-der-zertifikate-fuer-eine-impfung-oder-eine\"\n      },\n      \"invalidInThreeWeeks\": {\n        \"homescreenHexColor\": \"#ffde27\",\n        \"homescreenTitle\": \"Scada bainbaud\",\n        \"detailHexColor\": \"#ffde27\",\n        \"detailTitle\": \"Info\",\n        \"detailText\": \"Quest certificat scada bainbaud.\",\n        \"detailMoreInfo\": \"Dapli infurmaziuns?\",\n        \"popupTitle\": \"Info\",\n        \"popupText1\": null,\n        \"popupBoldText\": \"Quest certificat COVID è valaivel mo pli intgins dis. Resguardai per plaschair la data da scadenza inditgà sin il certificat.\",\n        \"popupText2\": null,\n        \"popupLinkText\": \"Ed uss?\",\n        \"popupLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/was-soll-ich-tun-wenn-mein-covid-zertifikat-nach-schweizer-gueltigkeitsregeln-bald\"\n      }\n    }\n  },\n  \"showRatConversionForm\": true,\n  \"ratConversionFormUrl\": \"https://covidcertificate-form.admin.ch/immunityrequest\",\n  \"certRenewalInfo\": {\n    \"de\": {\n      \"INFO\": {\n        \"heading\": \"Was bedeutet das?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Wieso Sie den QR-Code auch dann erneuern sollten, wenn Ihr Impf- oder Genesungszertifikat nach den Schweizer Gültigkeitsregeln bald abläuft oder bereits abgelaufen ist, lesen Sie in dieser FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Was bedeutet das?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Die QR-Codes der Covid-Zertifikate sind technisch nur begrenzt gültig.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Damit dieses Zertifikat (z. B. auf Reisen) weiterhin geprüft werden kann, muss der QR-Code erneuert werden.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Die Erneuerung können Sie hier in der App selbst durchführen (Internetverbindung nötig). Die Daten des aktuellen Zertifikats werden dazu verschlüsselt von der App an das System des Bundes zur Ausstellung von Covid-Zertifikaten übermittelt. Danach wird ein neuer QR-Code zurück an die App gesendet. Anschliessend werden die Daten gelöscht.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Erneuern Sie den QR-Code auch dann, wenn die Gültigkeit in der Schweiz bald abläuft oder bereits abgelaufen ist.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Wichtig!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Ersetzen Sie auch zuvor ausgedruckte oder gespeicherte Zertifikate durch diese erneuerte Version.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"Wie lange ein Covid-Zertifikat gültig ist wird in jedem Land gemäss den aktuell geltenden Regeln berechnet. Die Erneuerung des QR-Codes hat darauf keinen Einfluss.\"\n          }\n        ],\n        \"faqLinkText\": \"Zur FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      }\n    },\n    \"en\": {\n      \"INFO\": {\n        \"heading\": \"What does this mean?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"The QR codes used for COVID certificates have limited technical validity\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"What does this mean?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"The QR codes used for COVID certificates have limited technical validity.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"To enable this certificate to continue to be checked (e.g. when you’re travelling), you must renew the QR code.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"You can do this directly here in the app (provided you have an internet connection). The data in your current certificate will be encrypted and sent to the federal government’s COVID certificate issuing system for a new QR code to be issued. This QR code is then sent back to the app. Once the new QR code has been issued and the data sent, the data on the government system are deleted.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Check out this FAQ to find out why you should also renew the QR code if your vaccination or recovery certificate is about to expire or has already expired under the Swiss validity rules.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Important!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Also replace certificates you have previously printed out or stored with this renewed version.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"The length of time for which a vaccination is recognised in a particular country is not specified in the certificate. Instead, it is calculated in accordance with the specific rules of the country each time the certificate is checked. Renewing the QR code merely ensures that the QR code can be used from a technical point of view.\"\n          }\n        ],\n        \"faqLinkText\": \"To the FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/en/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/en/covid-certificate/why-should-i-renew-qr-code-my-covid-certificate-even-though-certificate-about\"\n      }\n    },\n    \"fr\": {\n      \"INFO\": {\n        \"heading\": \"Qu’est-ce que cela signifie ?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Les codes QR des certificats COVID ont une validité technique limitée\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Qu’est-ce que cela signifie ?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Les codes QR des certificats COVID ont une validité technique limitée.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Pour qu’il soit toujours possible de contrôler ce certificat (par exemple en voyage), le code QR doit être renouvelé.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Le renouvellement nécessaire peut être effectué ici directement dans l’application (connexion Internet requise). Les données du certificat actuel sont transmises sous forme cryptée depuis l’application vers le système de la Confédération établissant les certificats COVID. Ensuite, un nouveau code QR est ainsi établi, qui est renvoyé à l’application de stockage. Une fois établies et transmises. Enfin, les données sont effacées du système\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Cette FAQ vous explique pourquoi vous devriez renouveler le code QR même si votre certificat de vaccination ou de guérison est sur le point d’expirer ou a déjà expiré selon les règles de validité suisses.\"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"À noter:\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Remplacez également les certificats précédemment imprimés ou enregistrés par cette nouvelle version\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"La durée pendant laquelle une vaccination est reconnue dans un pays n’est pas définie dans le certificat, mais calculée au moment du contrôle selon les règles du pays examinateur. Le renouvellement du code QR garantit uniquement que celui-ci puisse être utilisé d’un point de vue technique. \"\n          }\n        ],\n        \"faqLinkText\": \"Vers la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/fr/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/fr/certificat-covid/pourquoi-dois-je-renouveler-le-code-qr-de-mon-certificat-covid-alors-que-selon-les\"\n      }\n    },\n    \"it\": {\n      \"INFO\": {\n        \"heading\": \"Cosa significa?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"I codici QR dei certificati COVID hanno una validità tecnica limitata\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Cosa significa?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"I codici QR dei certificati COVID hanno una validità tecnica limitata.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Affinché questo certificato possa continuare a essere verificato (p. es. durante i viaggi), è necessario rinnovare il codice QR.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"Puoi eseguire autonomamente il rinnovo richiesto qui nell’app (collegamento Internet necessario). A tale scopo i dati del certificato attuale saranno codificati e trasmessi dall’app al sistema della Confederazione per l’emissione di certificati COVID, il quale a sua volta creerà un nuovo codice QR che in seguito sarà rinviato all’app per la conservazione. Infine i dati saranno cancellati a emissione e trasmissione avvenute.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"In queste FAQ trovi i motivi per cui è necessario rinnovare il codice QR anche se il tuo certificato di vaccinazione o di guarigione dovesse giungere presto a scadenza o essere già scaduto secondo le regole di validità svizzere.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Importante!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Sostituisci anche i certificati stampati o salvati in precedenza con la presente versione aggiornata.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"La durata del riconoscimento di una vaccinazione in un Paese non è specificata nel certificato. Questo viene calcolato durante la verifica in base alle regole del Paese esaminatore. Il rinnovo del codice QR garantisce solo che tale codice possa continuare a essere tecnicamente utilizzato.\"\n          }\n        ],\n        \"faqLinkText\": \"Alle FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/it/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/it/certificato-covid/perche-devo-rinnovare-il-codice-qr-del-mio-certificato-covid-anche-se-secondo-le\"\n      }\n    },\n    \"rm\": {\n      \"INFO\": {\n        \"heading\": \"Tge vul quai dir?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"EXPIRED\": {\n        \"heading\": \"Tge vul quai dir?\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_timeerror\",\n            \"iconIos\": \"ic-timeerror\",\n            \"text\": \"Tecnicamain valan ils codes QR dals certificats COVID mo per ina tscherta durada.\"\n          },\n          {\n            \"iconAndroid\": \"ic_qr_certificate\",\n            \"iconIos\": \"ic-qr-certificate\",\n            \"text\": \"Per che quest certificat possia vegnir verifitgà er vinavant (p.ex. sin viadis) sto il code QR vegnir renovà.\"\n          },\n          {\n            \"iconAndroid\": \"ic_online\",\n            \"iconIos\": \"ic-online\",\n            \"text\": \"La renovaziun pudais Vus far sezza u sez qua en l'app (ina colliaziun d'internet è necessaria). Las datas dal certificat actual vegnan transmessas da l'app en moda codada al sistem federal per l'emissiun da certificats COVID. In nov code QR vegn alura tramess enavos a l'app. Silsuenter vegnan las datas stizzadas là.\"\n          },\n          {\n            \"iconAndroid\": \"ic_expire_i\",\n            \"iconIos\": \"ic-expire-i\",\n            \"text\": \"Pertge che Vus duessas renovar il code QR er, sche Voss certificat da vaccinaziun u da guariziun scada bainbaud u è gia scadì tenor las reglas da valaivladad en Svizra, pudais Vus leger en questa FAQ.\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      },\n      \"RENEWED\": {\n        \"heading\": \"Impurtant!\",\n        \"infos\": [\n          {\n            \"iconAndroid\": \"ic_pdf\",\n            \"iconIos\": \"ic-pdf\",\n            \"text\": \"Remplazzai per plaschair tras questa nova versiun er ils certificats che Vus avais arcunà u stampà pli baud.\"\n          },\n          {\n            \"iconAndroid\": \"ic_travel\",\n            \"iconIos\": \"ic-travel\",\n            \"text\": \"Quant ditg ch'ina vaccinaziun vegn renconuschida en in pajais, n'è betg fixà en il certificat. Quai vegn calculà a chaschun da la verificaziun tenor las reglas dal pajais che fa la verificaziun. La renovaziun dal code QR garantescha unicamain l'utilisaziun tecnica dal code QR\"\n          }\n        ],\n        \"faqLinkText\": \"A la FAQ\",\n        \"faqLinkUrl\": \"https://www.bag.admin.ch/bag/de/home/krankheiten/ausbrueche-epidemien-pandemien/aktuelle-ausbrueche-epidemien/novel-cov/haeufig-gestellte-fragen.html?faq-url=/covid/de/covid-zertifikat/wieso-soll-ich-den-qr-code-meines-covid-zertifikats-erneuern-obwohl-das-zertifikat\"\n      }\n    }\n  },\n  \"showValidityState\": false,\n  \"foreignRulesCheckEnabled\": false\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/CertificatesAndConfigViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.app.Application\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.common.config.ConfigViewModel\nimport ch.admin.bag.covidcertificate.common.exception.TimeDeviationException\nimport ch.admin.bag.covidcertificate.common.util.SingleLiveEvent\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataItem\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.WalletItem\nimport ch.admin.bag.covidcertificate.wallet.transfercode.TransferCodeErrorCodes\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.TransferCodeCrypto\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliverySpec\nimport kotlinx.coroutines.*\nimport kotlinx.coroutines.sync.withLock\nimport java.io.IOException\nimport java.time.Instant\nimport kotlin.collections.set\n\nclass CertificatesAndConfigViewModel(application: Application) : ConfigViewModel(application) {\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\tprivate val walletDataStorage: WalletDataSecureStorage by lazy { WalletDataSecureStorage.getInstance(application.applicationContext) }\n\tprivate val deliveryRepository =\n\t\tDeliveryRepository.getInstance(DeliverySpec(application.applicationContext, BuildConfig.BASE_URL_DELIVERY))\n\n\tprivate val walletItemsMutableLiveData = MutableLiveData<List<WalletItem>>()\n\tval walletItems = walletItemsMutableLiveData as LiveData<List<WalletItem>>\n\n\tprivate val statefulWalletItemsMutableLiveData = MutableLiveData<List<StatefulWalletItem>>()\n\tval statefulWalletItems: LiveData<List<StatefulWalletItem>> = statefulWalletItemsMutableLiveData\n\tprivate val verificationJobs = mutableMapOf<CertificateHolder, Job>()\n\n\tval onQrCodeClickedSingleLiveEvent = SingleLiveEvent<CertificateHolder>()\n\tval onCertificateLightClickedSingleLiveEvent = SingleLiveEvent<Pair<String, CertificateHolder>>()\n\tval onTransferCodeClickedSingleLiveEvent = SingleLiveEvent<TransferCodeModel>()\n\n\tinit {\n\t\twalletItems.observeForever { items ->\n\t\t\t// When the wallet items change, map the certificates and transfer codes with the existing verification/conversion state or LOADING\n\t\t\tval currentStatefulWalletItems = statefulWalletItems.value ?: emptyList()\n\t\t\tstatefulWalletItemsMutableLiveData.value = items.map { item ->\n\t\t\t\twhen (item) {\n\t\t\t\t\tis WalletItem.CertificateHolderItem -> {\n\t\t\t\t\t\tcurrentStatefulWalletItems.find {\n\t\t\t\t\t\t\tit is StatefulWalletItem.VerifiedCertificate && it.qrCodeData == item.qrCodeData\n\t\t\t\t\t\t} ?: StatefulWalletItem.VerifiedCertificate(\n\t\t\t\t\t\t\titem.qrCodeData,\n\t\t\t\t\t\t\titem.certificateHolder,\n\t\t\t\t\t\t\tVerificationState.LOADING\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tis WalletItem.TransferCodeHolderItem -> {\n\t\t\t\t\t\tcurrentStatefulWalletItems.find {\n\t\t\t\t\t\t\tit is StatefulWalletItem.TransferCodeConversionItem && it.transferCode.code == item.transferCode.code\n\t\t\t\t\t\t} ?: StatefulWalletItem.TransferCodeConversionItem(item.transferCode, TransferCodeConversionState.LOADING)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Re-)Verify certificates and try to convert transfer codes\n\t\t\titems.forEach { item ->\n\t\t\t\twhen (item) {\n\t\t\t\t\tis WalletItem.CertificateHolderItem -> item.certificateHolder?.let { startVerification(it) }\n\t\t\t\t\tis WalletItem.TransferCodeHolderItem -> convertTransferCode(item.transferCode)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfun loadWalletData() {\n\t\tviewModelScope.launch(Dispatchers.Default) {\n\t\t\tval pagerHolders = walletDataStorage.getWalletData().map { dataItem ->\n\t\t\t\twhen (dataItem) {\n\t\t\t\t\tis WalletDataItem.CertificateWalletData -> {\n\t\t\t\t\t\tvar holderItem: WalletItem.CertificateHolderItem? = null\n\t\t\t\t\t\tif (dataItem.certificateLightData != null && dataItem.certificateLightQrCode != null) {\n\t\t\t\t\t\t\t// If the wallet data item contains a certificate light, decode it to check it's expiration timestamp\n\t\t\t\t\t\t\tval certificateLightDecodeState = CovidCertificateSdk.Wallet.decode(dataItem.certificateLightData)\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcertificateLightDecodeState is DecodeState.SUCCESS\n\t\t\t\t\t\t\t\t&& certificateLightDecodeState.certificateHolder.expirationTime?.isAfter(Instant.now()) == true\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tholderItem = WalletItem.CertificateHolderItem(\n\t\t\t\t\t\t\t\t\tdataItem.certificateLightData.hashCode(),\n\t\t\t\t\t\t\t\t\tdataItem.certificateLightData,\n\t\t\t\t\t\t\t\t\tdataItem.certificateLightQrCode,\n\t\t\t\t\t\t\t\t\tcertificateLightDecodeState.certificateHolder\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Remove the certificate light data if it expired or could not be decoded\n\t\t\t\t\t\t\t\twalletDataStorage.deleteCertificateLight(dataItem.qrCodeData)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (holderItem == null) {\n\t\t\t\t\t\t\t// If the wallet data item didn't contain a certificate light or it already expired, decode the regular\n\t\t\t\t\t\t\t// certificate and map it to a pager holder item\n\t\t\t\t\t\t\tval decodeState = CovidCertificateSdk.Wallet.decode(dataItem.qrCodeData)\n\t\t\t\t\t\t\tif (decodeState is DecodeState.ERROR) {\n\t\t\t\t\t\t\t\tstatefulWalletItemsMutableLiveData.postValue(\n\t\t\t\t\t\t\t\t\t(statefulWalletItems.value?.toMutableList() ?: mutableListOf()).apply {\n\t\t\t\t\t\t\t\t\t\tadd(\n\t\t\t\t\t\t\t\t\t\t\tStatefulWalletItem.VerifiedCertificate(\n\t\t\t\t\t\t\t\t\t\t\t\tdataItem.qrCodeData,\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\tVerificationState.ERROR(decodeState.error, null)\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tholderItem = WalletItem.CertificateHolderItem(\n\t\t\t\t\t\t\t\tdataItem.qrCodeData.hashCode(),\n\t\t\t\t\t\t\t\tdataItem.qrCodeData,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t(decodeState as? DecodeState.SUCCESS?)?.certificateHolder\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tholderItem\n\t\t\t\t\t}\n\t\t\t\t\tis WalletDataItem.TransferCodeWalletData -> WalletItem.TransferCodeHolderItem(\n\t\t\t\t\t\tdataItem.transferCode.hashCode(),\n\t\t\t\t\t\tdataItem.transferCode\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twalletItemsMutableLiveData.postValue(pagerHolders)\n\t\t}\n\t}\n\n\tfun startVerification(certificateHolder: CertificateHolder, delayInMillis: Long = 0L, isForceVerification: Boolean = false) {\n\t\tif (isForceVerification) {\n\t\t\t// Manually show the loading state for this certificate. This would be done by the verification task,\n\t\t\t// but since we first load the trust list, that happens too late in the UI\n\t\t\tval updatedStatefulWalletItems = updateVerificationStateForDccHolder(certificateHolder, VerificationState.LOADING)\n\t\t\tstatefulWalletItemsMutableLiveData.value = updatedStatefulWalletItems\n\n\t\t\t// If this is a force verification (from the detail page), first refresh the trust list\n\t\t\tCovidCertificateSdk.refreshTrustList(\n\t\t\t\tviewModelScope,\n\t\t\t\tonCompletionCallback = {\n\t\t\t\t\tenqueueVerificationTask(certificateHolder, delayInMillis)\n\t\t\t\t},\n\t\t\t\tonErrorCallback = { errorCode ->\n\t\t\t\t\tif (errorCode.startsWith(ErrorCodes.GENERAL_NETWORK_FAILURE)) {\n\t\t\t\t\t\t// If the error is a general network failure (specific HTTP error are also prefixed with the GNF error code)\n\t\t\t\t\t\t// enqueue the verification task with the local trust list (which might or might not be valid)\n\t\t\t\t\t\tenqueueVerificationTask(certificateHolder, delayInMillis)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// In all other error cases (most notably timeshift and unknown host (aka offline) exceptions), set the\n\t\t\t\t\t\t// verification state to error\n\t\t\t\t\t\tstatefulWalletItemsMutableLiveData.value = updateVerificationStateForDccHolder(\n\t\t\t\t\t\t\tcertificateHolder,\n\t\t\t\t\t\t\tVerificationState.ERROR(StateError(errorCode), null)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t} else {\n\t\t\tenqueueVerificationTask(certificateHolder, delayInMillis)\n\t\t}\n\t}\n\n\tfun onQrCodeClicked(certificateHolder: CertificateHolder) {\n\t\tonQrCodeClickedSingleLiveEvent.postValue(certificateHolder)\n\t}\n\n\tfun onCertificateLightClicked(qrCodeImage: String, certificateHolder: CertificateHolder) {\n\t\tonCertificateLightClickedSingleLiveEvent.postValue(qrCodeImage to certificateHolder)\n\t}\n\n\tfun onTransferCodeClicked(transferCode: TransferCodeModel) {\n\t\tonTransferCodeClickedSingleLiveEvent.postValue(transferCode)\n\t}\n\n\tfun containsCertificate(certificate: String): Boolean {\n\t\treturn walletDataStorage.containsCertificate(certificate)\n\t}\n\n\tfun addCertificate(certificate: String) {\n\t\tval item = WalletDataItem.CertificateWalletData(certificate)\n\t\twalletDataStorage.saveWalletDataItem(item)\n\t}\n\n\tfun updateTransferCodeLastUpdated(transferCode: TransferCodeModel): TransferCodeModel {\n\t\treturn walletDataStorage.updateTransferCodeLastUpdated(transferCode)\n\t}\n\n\tfun moveWalletDataItem(from: Int, to: Int) {\n\t\twalletDataStorage.changeWalletDataItemPosition(from, to)\n\t}\n\n\tfun removeCertificate(certificate: String) {\n\t\twalletDataStorage.deleteCertificate(certificate)\n\t\tloadWalletData()\n\t}\n\n\tfun removeTransferCode(transferCode: TransferCodeModel) {\n\t\twalletDataStorage.deleteTransferCode(transferCode)\n\t\tloadWalletData()\n\t}\n\n\tfun getRawHcertForCertificateHolder(certificateHolder: CertificateHolder): String? {\n\t\treturn walletItems.value\n\t\t\t?.filterIsInstance<WalletItem.CertificateHolderItem>()\n\t\t\t?.firstOrNull { it.certificateHolder == certificateHolder }\n\t\t\t?.qrCodeData\n\t}\n\n\tfun wasCertificateRecentlyRenewed(certificateHolder: CertificateHolder): Boolean {\n\t\treturn walletDataStorage.wasCertificateRecentlyRenewed(certificateHolder)\n\t}\n\n\tfun dismissRecentlyRenewedBanner(certificateHolder: CertificateHolder) {\n\t\twalletDataStorage.dismissQrCodeRenewalBanner(certificateHolder)\n\t}\n\n\tprivate fun enqueueVerificationTask(\n\t\tcertificateHolder: CertificateHolder,\n\t\tdelayInMillis: Long\n\t) {\n\t\tverificationJobs[certificateHolder]?.cancel()\n\n\t\tviewModelScope.launch {\n\t\t\tif (delayInMillis > 0) delay(delayInMillis)\n\t\t\tval verificationIdentifier = CovidCertificateSdk.Wallet.getActiveModes().value.map { activeMode -> activeMode.id }.toSet()\n\t\t\tval verificationStateFlow =\n\t\t\t\tCovidCertificateSdk.Wallet.verify(certificateHolder, verificationIdentifier, viewModelScope)\n\t\t\tval job = viewModelScope.launch {\n\t\t\t\tverificationStateFlow.collect { state ->\n\t\t\t\t\t// Replace the verified certificate in the live data\n\t\t\t\t\tval updatedStatefulWalletItems = updateVerificationStateForDccHolder(certificateHolder, state)\n\n\t\t\t\t\t// Set the livedata value on the main dispatcher to prevent multiple posts overriding each other\n\t\t\t\t\twithContext(Dispatchers.Main.immediate) {\n\t\t\t\t\t\tstatefulWalletItemsMutableLiveData.value = updatedStatefulWalletItems\n\t\t\t\t\t}\n\n\t\t\t\t\t// Once the verification state is not loading anymore, cancel the flow collection job (otherwise the flow stays active without emitting anything)\n\t\t\t\t\tif (state !is VerificationState.LOADING) {\n\t\t\t\t\t\tverificationJobs[certificateHolder]?.cancel()\n\t\t\t\t\t\tverificationJobs.remove(certificateHolder)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tverificationJobs[certificateHolder] = job\n\t\t}\n\t}\n\n\tprivate fun convertTransferCode(transferCode: TransferCodeModel) {\n\t\tif (transferCode.isFailed()) {\n\t\t\t// If transfer code is failed, return early with the error code for a failed transfer code\n\t\t\tval conversionState = TransferCodeConversionState.ERROR(StateError(DeliveryRepository.ERROR_CODE_FAILED))\n\t\t\tval updatedStatefulWalletItems = updateConversionStateForTransferCode(transferCode, conversionState)\n\t\t\tstatefulWalletItemsMutableLiveData.value = updatedStatefulWalletItems\n\t\t\treturn\n\t\t}\n\n\t\tviewModelScope.launch(Dispatchers.IO) {\n\t\t\tTransferCodeCrypto.getMutex(transferCode.code).withLock {\n\t\t\t\tval keyPair = TransferCodeCrypto.loadKeyPair(transferCode.code, getApplication())\n\n\t\t\t\tvar conversionState: TransferCodeConversionState = TransferCodeConversionState.LOADING\n\t\t\t\tif (keyPair != null) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tval decryptedCertificates = deliveryRepository.download(transferCode.code, keyPair)\n\n\t\t\t\t\t\tif (decryptedCertificates.isNotEmpty()) {\n\t\t\t\t\t\t\tvar didReplaceTransferCode = false\n\n\t\t\t\t\t\t\tdecryptedCertificates.forEachIndexed { index, convertedCertificate ->\n\t\t\t\t\t\t\t\tval qrCodeData = convertedCertificate.qrCodeData\n\t\t\t\t\t\t\t\tval pdfData = convertedCertificate.pdfData\n\n\t\t\t\t\t\t\t\tif (index == 0) {\n\t\t\t\t\t\t\t\t\tdidReplaceTransferCode =\n\t\t\t\t\t\t\t\t\t\twalletDataStorage.replaceTransferCodeWithCertificate(transferCode, qrCodeData, pdfData)\n\t\t\t\t\t\t\t\t\tval decodeState = CovidCertificateSdk.Wallet.decode(qrCodeData)\n\t\t\t\t\t\t\t\t\tconversionState = if (decodeState is DecodeState.SUCCESS) {\n\t\t\t\t\t\t\t\t\t\tMainApplication.getTransferCodeConversionMapping(getApplication())\n\t\t\t\t\t\t\t\t\t\t\t?.put(transferCode.code, decodeState.certificateHolder)\n\t\t\t\t\t\t\t\t\t\tTransferCodeConversionState.CONVERTED(decodeState.certificateHolder)\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// The certificate returned from the server could not be decoded\n\t\t\t\t\t\t\t\t\t\tTransferCodeConversionState.NOT_CONVERTED\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\twalletDataStorage.saveWalletDataItem(WalletDataItem.CertificateWalletData(qrCodeData, pdfData))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Delete the transfer code on the backend and the key pair only if the certificate was stored (either by the above replace method or from another thread)\n\t\t\t\t\t\t\tval didStoreCertificate =\n\t\t\t\t\t\t\t\twalletDataStorage.containsCertificate(decryptedCertificates.first().qrCodeData)\n\t\t\t\t\t\t\tif (didReplaceTransferCode || didStoreCertificate) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tdeliveryRepository.complete(transferCode.code, keyPair)\n\t\t\t\t\t\t\t\t} catch (e: IOException) {\n\t\t\t\t\t\t\t\t\t// This request is best-effort, if it fails, ignore it and let the backend delete the transfer code and certificate\n\t\t\t\t\t\t\t\t\t// automatically after it expires\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tTransferCodeCrypto.deleteKeyEntry(transferCode.code, getApplication())\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconversionState = TransferCodeConversionState.NOT_CONVERTED\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e: TimeDeviationException) {\n\t\t\t\t\t\tconversionState = TransferCodeConversionState.ERROR(StateError(DeliveryRepository.ERROR_CODE_INVALID_TIME))\n\t\t\t\t\t} catch (e: IOException) {\n\t\t\t\t\t\tconversionState = if (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\t\t\t\t\tTransferCodeConversionState.ERROR(StateError(ErrorCodes.GENERAL_NETWORK_FAILURE))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tTransferCodeConversionState.ERROR(StateError(ErrorCodes.GENERAL_OFFLINE))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tval alreadyLoadedCertificate =\n\t\t\t\t\t\tMainApplication.getTransferCodeConversionMapping(getApplication())?.get(transferCode.code)\n\t\t\t\t\tif (alreadyLoadedCertificate != null) {\n\t\t\t\t\t\tconversionState = TransferCodeConversionState.CONVERTED(alreadyLoadedCertificate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconversionState =\n\t\t\t\t\t\t\tTransferCodeConversionState.ERROR(StateError(TransferCodeErrorCodes.INAPP_DELIVERY_KEYPAIR_GENERATION_FAILED))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tval updatedStatefulWalletItems = updateConversionStateForTransferCode(transferCode, conversionState)\n\n\t\t\t\t// Set the livedata value on the main dispatcher to prevent multiple posts overriding each other\n\t\t\t\twithContext(Dispatchers.Main.immediate) {\n\t\t\t\t\tstatefulWalletItemsMutableLiveData.value = updatedStatefulWalletItems\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun updateVerificationStateForDccHolder(\n\t\tcertificateHolder: CertificateHolder,\n\t\tnewVerificationState: VerificationState\n\t): List<StatefulWalletItem> {\n\t\tval newStatefulWalletItems = statefulWalletItems.value?.toMutableList() ?: mutableListOf()\n\t\tval index = newStatefulWalletItems.indexOfFirst {\n\t\t\tit is StatefulWalletItem.VerifiedCertificate && it.certificateHolder == certificateHolder\n\t\t}\n\n\t\tif (index >= 0) {\n\t\t\tnewStatefulWalletItems[index] =\n\t\t\t\tStatefulWalletItem.VerifiedCertificate(certificateHolder.qrCodeData, certificateHolder, newVerificationState)\n\t\t} else {\n\t\t\tnewStatefulWalletItems.add(\n\t\t\t\tStatefulWalletItem.VerifiedCertificate(\n\t\t\t\t\tcertificateHolder.qrCodeData,\n\t\t\t\t\tcertificateHolder,\n\t\t\t\t\tnewVerificationState\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\treturn newStatefulWalletItems\n\t}\n\n\tprivate fun updateConversionStateForTransferCode(\n\t\ttransferCode: TransferCodeModel,\n\t\tnewConversionState: TransferCodeConversionState\n\t): List<StatefulWalletItem> {\n\t\tval newStatefulWalletItems = statefulWalletItems.value?.toMutableList() ?: mutableListOf()\n\t\tval index = newStatefulWalletItems.indexOfFirst {\n\t\t\tit is StatefulWalletItem.TransferCodeConversionItem && it.transferCode.code == transferCode.code\n\t\t}\n\n\t\tif (index >= 0) {\n\t\t\tnewStatefulWalletItems[index] = StatefulWalletItem.TransferCodeConversionItem(transferCode, newConversionState)\n\t\t} else {\n\t\t\tnewStatefulWalletItems.add(StatefulWalletItem.TransferCodeConversionItem(transferCode, newConversionState))\n\t\t}\n\n\t\treturn newStatefulWalletItems\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/DeeplinkViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.app.Application\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\n\nclass DeeplinkViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val deeplinkImportMutableLiveData: MutableLiveData<DecodeState?> = MutableLiveData()\n\tval deeplinkImportLiveData: LiveData<DecodeState?> = deeplinkImportMutableLiveData\n\n\tfun importDeeplink(path: String) {\n\t\tdeeplinkImportMutableLiveData.postValue(CovidCertificateSdk.Wallet.decode(path))\n\t}\n\n\tfun clearDeeplink() {\n\t\tdeeplinkImportMutableLiveData.value = null\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/MainActivity.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet\n\nimport android.content.DialogInterface\nimport android.content.Intent\nimport android.os.Bundle\nimport androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult\nimport androidx.activity.viewModels\nimport androidx.appcompat.app.AlertDialog\nimport androidx.lifecycle.lifecycleScope\nimport ch.admin.bag.covidcertificate.common.BaseActivity\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.onboarding.BaseOnboardingActivity\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.repository.TimeShiftDetectionConfig\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.databinding.ActivityMainBinding\nimport ch.admin.bag.covidcertificate.wallet.homescreen.HomeFragment\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\nimport ch.admin.bag.covidcertificate.wallet.pdf.PdfViewModel\n\nclass MainActivity : BaseActivity() {\n\n\tcompanion object {\n\t\tprivate const val KEY_IS_INTENT_CONSUMED = \"KEY_IS_INTENT_CONSUMED\"\n\t}\n\n\tprivate val configViewModel by viewModels<CertificatesAndConfigViewModel>()\n\tprivate val deeplinkViewModel by viewModels<DeeplinkViewModel>()\n\tprivate val pdfViewModel by viewModels<PdfViewModel>()\n\n\tprivate lateinit var binding: ActivityMainBinding\n\tprivate val secureStorage by lazy { WalletSecureStorage.getInstance(this) }\n\n\tprivate var forceUpdateDialog: AlertDialog? = null\n\tprivate var isIntentConsumed = false\n\n\tprivate val onboardingLauncher = registerForActivityResult(StartActivityForResult()) { result ->\n\t\tif (result.resultCode == RESULT_OK) {\n\t\t\tsecureStorage.setOnboardingCompleted(true)\n\t\t\tsecureStorage.setCertificateLightUpdateboardingCompleted(true)\n\t\t\tsecureStorage.setAgbUpdateboardingCompleted(true)\n\t\t\tsecureStorage.setValidityUpdateboardingCompleted(true)\n\n\t\t\t// Load the config and trust list here because onStart ist called before the activity result and the onboarding\n\t\t\t// completion flags are therefore not yet set to true\n\t\t\tloadConfigAndTrustList()\n\t\t\tshowHomeFragment()\n\t\t} else {\n\t\t\tfinish()\n\t\t}\n\t}\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\n\t\tbinding = ActivityMainBinding.inflate(layoutInflater)\n\t\tval view = binding.root\n\t\tsetContentView(view)\n\n\t\tif (savedInstanceState == null) {\n\t\t\tval onboardingCompleted = secureStorage.getOnboardingCompleted()\n\t\t\tval certificateLightUpdateboardingCompleted = secureStorage.getCertificateLightUpdateboardingCompleted()\n\t\t\tval agbUpdateboardingCompleted = secureStorage.getAgbUpdateboardingCompleted()\n\t\t\tval validityUpdateboardingCompleted = secureStorage.getValidityUpdateboardingCompleted()\n\n\t\t\tval onboardingType = when {\n\t\t\t\t!onboardingCompleted -> OnboardingActivity.OnboardingType.FRESH_INSTALL\n\t\t\t\t!certificateLightUpdateboardingCompleted -> OnboardingActivity.OnboardingType.CERTIFICATE_LIGHT\n\t\t\t\t!agbUpdateboardingCompleted -> OnboardingActivity.OnboardingType.AGB_UPDATE\n\t\t\t\t!validityUpdateboardingCompleted -> OnboardingActivity.OnboardingType.VALIDITY\n\t\t\t\telse -> null\n\t\t\t}\n\n\t\t\tif (onboardingType != null) {\n\t\t\t\tval intent = Intent(this, OnboardingActivity::class.java).apply {\n\t\t\t\t\tputExtra(BaseOnboardingActivity.EXTRA_ONBOARDING_TYPE, onboardingType.name)\n\t\t\t\t}\n\t\t\t\tonboardingLauncher.launch(intent)\n\t\t\t} else {\n\t\t\t\tshowHomeFragment()\n\t\t\t}\n\t\t}\n\n\t\tconfigViewModel.configLiveData.observe(this) { config ->\n\t\t\tCovidCertificateSdk.setTimeShiftDetectingConfig(TimeShiftDetectionConfig(config.timeshiftDetectionEnabled ?: false))\n\t\t\thandleConfig(config)\n\t\t}\n\t\tpdfViewModel.clearPdfFiles()\n\n\t\tif (savedInstanceState != null) {\n\t\t\tisIntentConsumed = savedInstanceState.getBoolean(KEY_IS_INTENT_CONSUMED)\n\t\t}\n\t}\n\n\toverride fun onNewIntent(intent: Intent?) {\n\t\tsuper.onNewIntent(intent)\n\t\tsetIntent(intent)\n\t\tisIntentConsumed = false\n\t}\n\n\toverride fun onStart() {\n\t\tsuper.onStart()\n\n\t\t// Every time the app comes into the foreground and the onboarding was completed, reload the config and trust list\n\t\tif (secureStorage.getOnboardingCompleted() && secureStorage.getCertificateLightUpdateboardingCompleted()) {\n\t\t\tloadConfigAndTrustList()\n\t\t}\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\t\tcheckIntentForActions()\n\t}\n\n\toverride fun onSaveInstanceState(outState: Bundle) {\n\t\tsuper.onSaveInstanceState(outState)\n\t\toutState.putBoolean(KEY_IS_INTENT_CONSUMED, isIntentConsumed)\n\t}\n\n\toverride fun onDestroy() {\n\t\tsuper.onDestroy()\n\t\tCovidCertificateSdk.unregisterWithLifecycle(lifecycle)\n\t}\n\n\tprivate fun loadConfigAndTrustList() {\n\t\tconfigViewModel.loadConfig(BuildConfig.BASE_URL, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TIME.toString())\n\t\tCovidCertificateSdk.refreshTrustList(lifecycleScope)\n\t}\n\n\tprivate fun showHomeFragment() {\n\t\tCovidCertificateSdk.registerWithLifecycle(lifecycle)\n\n\t\tsupportFragmentManager.beginTransaction()\n\t\t\t.add(R.id.fragment_container, HomeFragment.newInstance())\n\t\t\t.commit()\n\t}\n\n\tprivate fun handleConfig(config: ConfigModel) {\n\t\tif (config.forceUpdate && forceUpdateDialog == null) {\n\t\t\tval forceUpdateDialog = AlertDialog.Builder(this, R.style.CovidCertificate_AlertDialogStyle)\n\t\t\t\t.setTitle(R.string.force_update_title)\n\t\t\t\t.setMessage(R.string.force_update_text)\n\t\t\t\t.setPositiveButton(R.string.force_update_button, null)\n\t\t\t\t.setCancelable(false)\n\t\t\t\t.create()\n\t\t\tforceUpdateDialog.setOnShowListener {\n\t\t\t\tforceUpdateDialog.getButton(DialogInterface.BUTTON_POSITIVE)\n\t\t\t\t\t.setOnClickListener {\n\t\t\t\t\t\tval packageName = packageName\n\t\t\t\t\t\tUrlUtil.openUrl(this@MainActivity, \"market://details?id=$packageName\")\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tthis.forceUpdateDialog = forceUpdateDialog\n\t\t\tforceUpdateDialog.show()\n\t\t}\n\t}\n\n\tprivate fun checkIntentForActions() {\n\t\tval launchedFromHistory = intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY != 0\n\t\tif (!launchedFromHistory && !isIntentConsumed) {\n\t\t\tisIntentConsumed = true\n\t\t\twhen (intent.action) {\n\t\t\t\tIntent.ACTION_SEND -> {\n\t\t\t\t\tif (\"application/pdf\" == intent.type) {\n\t\t\t\t\t\thandleCertificatePDF(intent)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tIntent.ACTION_VIEW -> {\n\t\t\t\t\thandleCertificateDeeplink(intent)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun handleCertificatePDF(intent: Intent) {\n\t\tif (secureStorage.getOnboardingCompleted()) {\n\t\t\tintent.clipData?.let { pdfViewModel.importPdf(clipData = it) }\n\t\t}\n\t}\n\n\t// Expect URIs of the form \"covidcert://hc1:<base45>\" and \"hcert://hc1:<base45>\"\n\tprivate fun handleCertificateDeeplink(intent: Intent) {\n\t\tval uri = intent.data ?: return\n\t\t// The base45 contains weird characters that confuse normal uri parsing (so we can't simply use uri.scheme and uri.path)\n\t\tval uriString = uri.toString()\n\n\t\tval prefixes = listOf(\"covidcert://\", \"hcert://\")\n\t\tfor (prefix in prefixes) {\n\t\t\tif (uriString.startsWith(prefix)) {\n\t\t\t\tval cert = uriString.substringAfter(prefix)\n\t\t\t\tdeeplinkViewModel.importDeeplink(cert)\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/MainApplication.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet\n\nimport android.app.Application\nimport android.content.Context\nimport android.os.Build\nimport androidx.lifecycle.Lifecycle\nimport androidx.lifecycle.LifecycleObserver\nimport androidx.lifecycle.OnLifecycleEvent\nimport androidx.lifecycle.ProcessLifecycleOwner\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.util.EnvironmentUtil\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.data.CertificateStorage\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataItem\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TRANSFER_CODE_DURATION_FAILS_AFTER_EXPIRES\nimport ch.admin.bag.covidcertificate.wallet.transfercode.worker.TransferWorker\nimport ch.admin.bag.covidcertificate.wallet.util.NotificationUtil\n\nclass MainApplication : Application() {\n\n\tcompanion object {\n\t\tfun getTransferCodeConversionMapping(context: Context): HashMap<String, CertificateHolder>? {\n\t\t\tval applicationContext = context.applicationContext\n\t\t\treturn if (applicationContext is MainApplication) {\n\t\t\t\tapplicationContext.getTransferCodeConversionMappingInternal()\n\t\t\t} else {\n\t\t\t\tnull\n\t\t\t}\n\t\t}\n\t}\n\n\tval transferCodeConversionMapping = HashMap<String, CertificateHolder>()\n\n\toverride fun onCreate() {\n\t\tsuper.onCreate()\n\n\t\tif (DebugFragment.EXISTS) {\n\t\t\tDebugFragment.initDebug(this)\n\t\t}\n\n\t\tConfig.appToken = BuildConfig.SDK_APP_TOKEN\n\t\tConfig.userAgent =\n\t\t\tUserAgentInterceptor.UserAgentGenerator { \"${this.packageName};${BuildConfig.VERSION_NAME};${BuildConfig.BUILD_TIME};Android;${Build.VERSION.SDK_INT}\" }\n\n\t\tCovidCertificateSdk.init(this, EnvironmentUtil.getSdkEnvironment())\n\n\t\tmigrateCertificatesToWalletData()\n\t\tmigrateTransferCodeValidity()\n\n\t\tsetupTransferWorker()\n\t}\n\n\t@Suppress(\"DEPRECATION\")\n\tprivate fun migrateCertificatesToWalletData() {\n\t\tval walletStorage = WalletSecureStorage.getInstance(this)\n\t\tif (!walletStorage.getMigratedCertificatesToWalletData()) {\n\t\t\tval certificateStorage = CertificateStorage.getInstance(this)\n\t\t\tval walletDataStorage = WalletDataSecureStorage.getInstance(this)\n\n\t\t\tval certificates = certificateStorage.getCertificateList()\n\t\t\tcertificates.reversed().map {\n\t\t\t\tval walletData = WalletDataItem.CertificateWalletData(it)\n\t\t\t\twalletDataStorage.saveWalletDataItem(walletData)\n\t\t\t}\n\n\t\t\twalletStorage.setMigratedCertificatesToWalletData(true)\n\t\t}\n\t}\n\n\tprivate fun migrateTransferCodeValidity() {\n\t\tval walletStorage = WalletSecureStorage.getInstance(this)\n\t\tif (!walletStorage.getMigratedTransferCodeValidity()) {\n\t\t\t// Reading the wallet data once from the storage and writing it again immediately is enough to migrate the validity.\n\t\t\t// The data class constructor defines the new fields with a default value, so it is automatically set when deserializing\n\t\t\tval walletDataStorage = WalletDataSecureStorage.getInstance(this)\n\t\t\tval walletDataItems = walletDataStorage.getWalletData()\n\t\t\twalletDataStorage.updateWalletData(walletDataItems)\n\n\t\t\twalletStorage.setMigratedTransferCodeValidity(true)\n\t\t}\n\t\tif (!walletStorage.getMigratedTransferCodeFailsAt()) {\n\t\t\t// In 2.7.0 there was a bug that set failsAt of transferCodes to now+72h (wrong) instead of expiredAt+72h = now+30d+72h (correct), this migration fixes this\n\t\t\tval walletDataStorage = WalletDataSecureStorage.getInstance(this)\n\t\t\tval walletDataItems = walletDataStorage.getWalletData()\n\t\t\tfor(walletItem in walletDataItems){\n\t\t\t\tif(walletItem is WalletDataItem.TransferCodeWalletData){\n\t\t\t\t\tif(walletItem.transferCode.failsAtTimestamp.isBefore(walletItem.transferCode.expiresAtTimestamp)){\n\t\t\t\t\t\twalletItem.transferCode.failsAtTimestamp = walletItem.transferCode.expiresAtTimestamp.plus(TRANSFER_CODE_DURATION_FAILS_AFTER_EXPIRES);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twalletDataStorage.updateWalletData(walletDataItems)\n\n\t\t\twalletStorage.setMigratedTransferCodeFailsAt(true)\n\t\t}\n\t}\n\n\tprivate fun setupTransferWorker() {\n\t\tProcessLifecycleOwner.get().lifecycle.addObserver(object : LifecycleObserver {\n\t\t\t@OnLifecycleEvent(Lifecycle.Event.ON_START)\n\t\t\tfun onAppStart() {\n\t\t\t\tTransferWorker.cancelScheduledTransferWorker(this@MainApplication)\n\t\t\t}\n\n\t\t\t@OnLifecycleEvent(Lifecycle.Event.ON_STOP)\n\t\t\tfun onAppStop() {\n\t\t\t\tval hasTransferCodes = WalletDataSecureStorage.getInstance(this@MainApplication).getWalletData()\n\t\t\t\t\t.filterIsInstance<WalletDataItem.TransferCodeWalletData>().isNotEmpty()\n\t\t\t\tif (hasTransferCodes) {\n\t\t\t\t\tTransferWorker.scheduleTransferWorker(\n\t\t\t\t\t\tthis@MainApplication, ConfigRepository.getCurrentConfig(this@MainApplication)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\tNotificationUtil.createTransferNotificationChannel(this)\n\t}\n\n\tprivate fun getTransferCodeConversionMappingInternal() = transferCodeConversionMapping\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/add/CertificateAddFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.add\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.recyclerview.widget.LinearLayoutManager\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificateAddBinding\nimport ch.admin.bag.covidcertificate.wallet.detail.CertificateDetailAdapter\nimport ch.admin.bag.covidcertificate.wallet.detail.CertificateDetailItemListBuilder\nimport ch.admin.bag.covidcertificate.wallet.qr.VerifierInfoDialogFragment\n\nclass CertificateAddFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate const val ARG_CERTIFICATE = \"ARG_CERTIFICATE\"\n\t\tprivate const val ARG_FROM_CAMERA = \"ARG_FROM_CAMERA\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder, fromCamera: Boolean): CertificateAddFragment =\n\t\t\tCertificateAddFragment().apply {\n\t\t\t\targuments = bundleOf(\n\t\t\t\t\tARG_CERTIFICATE to certificateHolder,\n\t\t\t\t\tARG_FROM_CAMERA to fromCamera,\n\t\t\t\t)\n\t\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\tprivate var _binding: FragmentCertificateAddBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\tprivate var openedFragmentFromCamera: Boolean = false\n\tprivate var isAlreadyAdded = false\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE) as? CertificateHolder)\n\t\t\t?: throw IllegalStateException(\"CertificateAddFragment created without Certificate!\")\n\t\topenedFragmentFromCamera = arguments?.getBoolean(ARG_FROM_CAMERA) ?: throw IllegalStateException(\"Missing fromCamera!\")\n\t\tisAlreadyAdded = certificatesViewModel.containsCertificate(certificateHolder.qrCodeData)\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificateAddBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsetupCertificateDetails()\n\n\t\tbinding.certificateAddToolbar.setNavigationOnClickListener {\n\t\t\tparentFragmentManager.popBackStack()\n\t\t}\n\t\tbinding.certificateAlreadyExistsInfo.isVisible = isAlreadyAdded\n\t\tbinding.certificateAddButton.apply {\n\t\t\tif (isAlreadyAdded) {\n\t\t\t\ttext = context.getString(R.string.ok_button)\n\t\t\t\tsetOnClickListener {\n\t\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttext = context.getString(R.string.wallet_add_certificate)\n\t\t\t\tsetOnClickListener {\n\t\t\t\t\tcertificatesViewModel.addCertificate(certificateHolder.qrCodeData)\n\t\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (openedFragmentFromCamera) {\n\t\t\tbinding.certificateAddRetry.isVisible = true\n\t\t\tbinding.certificateAddRetry.setOnClickListener {\n\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t}\n\t\t} else {\n\t\t\tbinding.certificateAddRetry.isVisible = false\n\t\t}\n\n\t}\n\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\n\t\tval walletSecureStorage = WalletSecureStorage.getInstance(requireContext())\n\t\tif (walletSecureStorage.has10OrMoreScansInLast24h()) {\n\t\t\tVerifierInfoDialogFragment.newInstance()\n\t\t\t\t.show(childFragmentManager, VerifierInfoDialogFragment::class.java.canonicalName)\n\t\t\twalletSecureStorage.resetScanCount()\n\t\t}\n\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupCertificateDetails() {\n\t\tval recyclerView = binding.certificateAddDataRecyclerView\n\t\tval layoutManager = LinearLayoutManager(recyclerView.context, LinearLayoutManager.VERTICAL, false)\n\t\trecyclerView.layoutManager = layoutManager\n\t\tval adapter = CertificateDetailAdapter()\n\t\trecyclerView.adapter = adapter\n\n\t\tbinding.certificateAddName.text = certificateHolder.certificate.getPersonName().prettyName()\n\t\tbinding.certificateAddStandardizedNameLabel.text = certificateHolder.certificate.getPersonName().prettyStandardizedName()\n\t\tbinding.certificateAddBirthdate.text = certificateHolder.certificate.getFormattedDateOfBirth()\n\n\t\tval detailItems = CertificateDetailItemListBuilder(\n\t\t\trecyclerView.context,\n\t\t\tcertificateHolder,\n\t\t\tisDetailScreen = false,\n\t\t\tshowEnglishVersion = false\n\t\t).buildAll()\n\t\tadapter.setItems(detailItems)\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/data/CertificateStorage.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.data\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport com.squareup.moshi.Moshi\nimport com.squareup.moshi.Types\n\n@Deprecated(\"With the addition of transfer codes, this storage has been deprecated in favor of the more generic WalletDataSecureStorage\")\nclass CertificateStorage private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<CertificateStorage, Context>(::CertificateStorage) {\n\t\tconst val SHARED_PREFERENCES_NAME: String = \"CertificateStorageName\"\n\t\tprivate const val SHARED_PREFERENCES_CERTIFICATES_KEY = \"CertificateStorageKey\"\n\n\t\tprivate val moshi = Moshi.Builder().build()\n\t\tprivate val certificatesAdapter =\n\t\t\tmoshi.adapter<MutableList<String>>(Types.newParameterizedType(MutableList::class.java, String::class.java))\n\t}\n\n\tprivate val prefs = EncryptedSharedPreferencesUtil.initializeSharedPreferences(context, SHARED_PREFERENCES_NAME)\n\n\tfun getCertificateList(): MutableList<String> {\n\t\tval json = prefs.getString(SHARED_PREFERENCES_CERTIFICATES_KEY, null)\n\t\tif (json == null || json.isEmpty()) {\n\t\t\treturn arrayListOf()\n\t\t}\n\t\treturn certificatesAdapter.fromJson(json) ?: arrayListOf()\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/data/WalletDataItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.data\n\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport com.squareup.moshi.JsonClass\n\nsealed class WalletDataItem {\n\t@JsonClass(generateAdapter = true)\n\tdata class CertificateWalletData(\n\t\tval qrCodeData: String,\n\t\tval pdfData: String? = null,\n\t\tval certificateLightData: String? = null,\n\t\tval certificateLightQrCode: String? = null,\n\t\tval language: String? = \"de\",\n\t\tval lastQrCodeRenewal: Long? = null,\n\t) : WalletDataItem()\n\n\t@JsonClass(generateAdapter = true)\n\tdata class TransferCodeWalletData(val transferCode: TransferCodeModel) : WalletDataItem()\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/data/WalletDataSecureStorage.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.data\n\nimport android.content.Context\nimport androidx.core.content.edit\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.data.adapter.InstantJsonAdapter\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport com.squareup.moshi.Moshi\nimport com.squareup.moshi.Types\nimport com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory\nimport java.time.Instant\nimport java.util.concurrent.TimeUnit\nimport java.util.concurrent.locks.ReentrantLock\n\nclass WalletDataSecureStorage private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<WalletDataSecureStorage, Context>(::WalletDataSecureStorage) {\n\t\tprivate const val SHARED_PREFERENCES_NAME: String = \"WalletDataSecureStorageName\"\n\t\tprivate const val KEY_WALLET_DATA_ITEMS = \"KEY_WALLET_DATA_ITEMS\"\n\n\t\tprivate val factory = PolymorphicJsonAdapterFactory.of(WalletDataItem::class.java, \"type\")\n\t\t\t.withSubtype(WalletDataItem.CertificateWalletData::class.java, \"certificate\")\n\t\t\t.withSubtype(WalletDataItem.TransferCodeWalletData::class.java, \"transferCode\")\n\t\tprivate val moshi = Moshi.Builder().add(factory).add(InstantJsonAdapter()).build()\n\t\tprivate val walletDataItemAdapter =\n\t\t\tmoshi.adapter<List<WalletDataItem>>(Types.newParameterizedType(List::class.java, WalletDataItem::class.java))\n\t}\n\n\tprivate val prefs = EncryptedSharedPreferencesUtil.initializeSharedPreferences(context, SHARED_PREFERENCES_NAME)\n\tprivate val reentrantLock = ReentrantLock()\n\n\tfun saveWalletDataItem(dataItem: WalletDataItem) {\n\t\tval walletData = getWalletData().toMutableList()\n\t\tif ((dataItem is WalletDataItem.CertificateWalletData && walletData.containsCertificate(dataItem.qrCodeData)\n\t\t\t\t\t|| walletData.contains(dataItem))\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\twalletData.add(0, dataItem)\n\t\tupdateWalletData(walletData)\n\t}\n\n\tfun containsCertificate(certificateQrCodeData: String): Boolean {\n\t\treturn getWalletData().filterIsInstance<WalletDataItem.CertificateWalletData>()\n\t\t\t.map { it.qrCodeData }\n\t\t\t.contains(certificateQrCodeData)\n\t}\n\n\tfun updateTransferCodeLastUpdated(transferCode: TransferCodeModel): TransferCodeModel {\n\t\tval walletData = getWalletData().toMutableList()\n\t\tval index =\n\t\t\twalletData.indexOfFirst { it is WalletDataItem.TransferCodeWalletData && it.transferCode.code == transferCode.code }\n\t\tif (index >= 0) {\n\t\t\tval updatedTransferCode = transferCode.copy(lastUpdatedTimestamp = Instant.now())\n\t\t\twalletData.removeAt(index)\n\t\t\twalletData.add(index, WalletDataItem.TransferCodeWalletData(updatedTransferCode))\n\t\t\tupdateWalletData(walletData)\n\t\t\treturn updatedTransferCode\n\t\t}\n\t\treturn transferCode\n\t}\n\n\tfun deleteCertificate(certificateQrCodeData: String) {\n\t\tval walletData = getWalletData().toMutableList()\n\t\twalletData.removeIf { it is WalletDataItem.CertificateWalletData && it.qrCodeData == certificateQrCodeData }\n\t\tupdateWalletData(walletData)\n\t}\n\n\tfun deleteTransferCode(transferCode: TransferCodeModel) {\n\t\tval walletData = getWalletData().toMutableList()\n\t\twalletData.removeIf { it is WalletDataItem.TransferCodeWalletData && it.transferCode.code == transferCode.code }\n\t\tupdateWalletData(walletData)\n\t}\n\n\t/**\n\t * @return True if a transfer code was replaced with a certificate, false otherwise\n\t */\n\tfun replaceTransferCodeWithCertificate(\n\t\ttransferCode: TransferCodeModel,\n\t\tcertificateQrCodeData: String,\n\t\tpdfData: String? = null\n\t): Boolean {\n\t\tval walletData = getWalletData().toMutableList()\n\t\tval index =\n\t\t\twalletData.indexOfFirst { it is WalletDataItem.TransferCodeWalletData && it.transferCode.code == transferCode.code }\n\t\tif (index >= 0) {\n\t\t\twalletData.removeAt(index)\n\t\t\tif (!walletData.containsCertificate(certificateQrCodeData)) {\n\t\t\t\twalletData.add(index, WalletDataItem.CertificateWalletData(certificateQrCodeData, pdfData))\n\t\t\t}\n\t\t\tupdateWalletData(walletData)\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\n\tfun changeWalletDataItemPosition(oldPosition: Int, newPosition: Int) {\n\t\tval walletData = getWalletData().toMutableList()\n\t\tif (newPosition < 0 || oldPosition < 0) {\n\t\t\treturn\n\t\t}\n\n\t\tval movedDataItem = walletData.removeAt(oldPosition)\n\t\twalletData.add(newPosition, movedDataItem)\n\t\tupdateWalletData(walletData)\n\t}\n\n\tfun getWalletData(): List<WalletDataItem> {\n\t\treentrantLock.lock()\n\n\t\ttry {\n\t\t\tval json = prefs.getString(KEY_WALLET_DATA_ITEMS, null)\n\t\t\tif (json == null || json.isEmpty()) {\n\t\t\t\treturn emptyList()\n\t\t\t}\n\t\t\treturn walletDataItemAdapter.fromJson(json) ?: emptyList()\n\t\t} finally {\n\t\t\treentrantLock.unlock()\n\t\t}\n\t}\n\n\tfun storeCertificateLight(fullCertificate: CertificateHolder, certificateLightData: String, certificateLightQrCode: String) {\n\t\tupdateCertificateWalletDataItem(fullCertificate) {\n\t\t\tit.copy(certificateLightData = certificateLightData, certificateLightQrCode = certificateLightQrCode)\n\t\t}\n\t}\n\n\tfun deleteCertificateLight(qrCodeData: String): WalletDataItem.CertificateWalletData? {\n\t\tval walletData = getWalletData().toMutableList()\n\t\tval index = walletData.indexOfFirst {\n\t\t\tit is WalletDataItem.CertificateWalletData && (it.qrCodeData == qrCodeData || it.certificateLightData == qrCodeData)\n\t\t}\n\n\t\tif (index >= 0) {\n\t\t\tval item = walletData.removeAt(index) as WalletDataItem.CertificateWalletData\n\t\t\tval updatedItem = item.copy(certificateLightData = null, certificateLightQrCode = null)\n\t\t\twalletData.add(index, updatedItem)\n\t\t\tupdateWalletData(walletData)\n\t\t\treturn updatedItem\n\t\t}\n\t\treturn null\n\t}\n\n\tfun getPdfForCertificate(certificateHolder: CertificateHolder, language: String): String? {\n\t\tval walletData = getWalletData()\n\t\treturn walletData.filterIsInstance(WalletDataItem.CertificateWalletData::class.java)\n\t\t\t.firstOrNull { it.qrCodeData == certificateHolder.qrCodeData  && it.language == language}\n\t\t\t?.pdfData\n\t}\n\n\tfun storePdfForCertificate(certificateHolder: CertificateHolder, pdfData: String, language: String) {\n\t\tupdateCertificateWalletDataItem(certificateHolder) {\n\t\t\tit.copy(pdfData = pdfData, language = language)\n\t\t}\n\t}\n\n\tfun updateWalletData(walletData: List<WalletDataItem>) {\n\t\treentrantLock.lock()\n\t\ttry {\n\t\t\tval json = walletDataItemAdapter.toJson(walletData)\n\t\t\tprefs.edit { putString(KEY_WALLET_DATA_ITEMS, json) }\n\t\t} finally {\n\t\t\treentrantLock.unlock()\n\t\t}\n\t}\n\n\tfun wasCertificateRecentlyRenewed(certificateHolder: CertificateHolder): Boolean {\n\t\tval lastQrCodeRenewal = getWalletData()\n\t\t\t.filterIsInstance<WalletDataItem.CertificateWalletData>()\n\t\t\t.singleOrNull { it.qrCodeData == certificateHolder.qrCodeData }\n\t\t\t?.lastQrCodeRenewal\n\n\t\treturn lastQrCodeRenewal?.let {\n\t\t\tSystem.currentTimeMillis() - it <= TimeUnit.DAYS.toMillis(14)\n\t\t} ?: false\n\t}\n\n\tfun updateCertificateQrCodeData(certificateHolder: CertificateHolder, newQrCodeData: String) {\n\t\tupdateCertificateWalletDataItem(certificateHolder) {\n\t\t\tit.copy(qrCodeData = newQrCodeData, lastQrCodeRenewal = System.currentTimeMillis())\n\t\t}\n\t}\n\n\tfun dismissQrCodeRenewalBanner(certificateHolder: CertificateHolder) {\n\t\tupdateCertificateWalletDataItem(certificateHolder) { it.copy(lastQrCodeRenewal = null) }\n\t}\n\n\tprivate fun List<WalletDataItem>.containsCertificate(qrCodeData: String) =\n\t\tthis.filterIsInstance<WalletDataItem.CertificateWalletData>().find { it.qrCodeData == qrCodeData } != null\n\n\t/**\n\t * Helper function to update the [WalletDataItem] of a specific [CertificateHolder] in the preferences by applying the [transformation] lambda to it\n\t * @return True if the item was updated, false if it was not found\n\t */\n\tprivate fun updateCertificateWalletDataItem(\n\t\tcertificateHolder: CertificateHolder,\n\t\ttransformation: (WalletDataItem.CertificateWalletData) -> WalletDataItem.CertificateWalletData\n\t): Boolean {\n\t\tval walletData = getWalletData().toMutableList()\n\t\tval index = walletData.indexOfFirst {\n\t\t\tit is WalletDataItem.CertificateWalletData && (it.qrCodeData == certificateHolder.qrCodeData)\n\t\t}\n\n\t\tif (index >= 0) {\n\t\t\tval item = walletData.removeAt(index) as WalletDataItem.CertificateWalletData\n\t\t\tval updatedItem = transformation.invoke(item)\n\t\t\twalletData.add(index, updatedItem)\n\t\t\tupdateWalletData(walletData)\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/data/WalletSecureStorage.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.data\n\nimport android.content.Context\nimport androidx.core.content.edit\nimport ch.admin.bag.covidcertificate.sdk.android.utils.EncryptedSharedPreferencesUtil\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport com.squareup.moshi.Moshi\nimport com.squareup.moshi.Types\nimport java.time.Duration\nimport java.time.Instant\n\nclass WalletSecureStorage private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<WalletSecureStorage, Context>(::WalletSecureStorage) {\n\t\tprivate const val PREFERENCES = \"SecureStorage\"\n\n\t\tprivate const val KEY_ONBOARDING_COMPLETED = \"onboarding_completed\"\n\t\tprivate const val KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED = \"KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED\"\n\t\tprivate const val KEY_AGB_UPDATEBOARDING_COMPLETED = \"KEY_AGB_UPDATEBOARDIN_COMPLETED\"\n\t\tprivate const val KEY_VALIDITY_UPDATEBOARDING_COMPLETED = \"KEY_VALIDITY_UPDATEBOARDING_COMPLETED\"\n\n\t\tprivate const val KEY_MIGRATED_CERTIFICATES_TO_WALLET_DATA = \"KEY_MIGRATED_CERTIFICATES_TO_WALLET_DATA\"\n\t\tprivate const val KEY_MIGRATED_TRANSFER_CODE_VALIDITY = \"KEY_MIGRATED_TRANSFER_CODE_VALIDITY\"\n\t\tprivate const val KEY_MIGRATED_TRANSFER_CODE_FAILS_AT = \"KEY_MIGRATED_TRANSFER_CODE_FAILS_AT\"\n\t\tprivate const val KEY_TRANSFER_CODE_PUBLIC_KEY_PREFIX = \"TRANSFER_CODE_PUBLIC_KEY_\"\n\t\tprivate const val KEY_TRANSFER_CODE_PRIVATE_KEY_PREFIX = \"TRANSFER_CODE_PRIVATE_KEY_\"\n\t\tprivate const val KEY_VACCINATION_HINT_DISMISS_TIMESTAMP = \"KEY_VACCINATION_HINT_DISMISS_TIMESTAMP\"\n\t\tprivate const val KEY_LAST_SCAN_TIMES = \"KEY_LAST_SCAN_TIMES\"\n\t\tprivate const val KEY_DISMISSED_EOL_BANNERS = \"KEY_DISMISSED_EOL_BANNERS\"\n\t\tprivate const val KEY_FOREIGN_RULES_CHECK_SELECTED_COUNTRY = \"KEY_FOREIGN_RULES_CHECK_SELECTED_COUNTRY\"\n\t\tprivate const val KEY_FOREIGN_RULES_CHECK_SELECTED_DATE = \"KEY_FOREIGN_RULES_CHECK_SELECTED_DATE\"\n\t\tprivate val moshi = Moshi.Builder().build()\n\t\tprivate val longListAdapter =\n\t\t\tmoshi.adapter<List<Long>>(Types.newParameterizedType(List::class.java, Long::class.javaObjectType))\n\t}\n\n\tprivate val prefs = EncryptedSharedPreferencesUtil.initializeSharedPreferences(context, PREFERENCES)\n\n\tfun getOnboardingCompleted(): Boolean = prefs.getBoolean(KEY_ONBOARDING_COMPLETED, false)\n\n\tfun setOnboardingCompleted(completed: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_ONBOARDING_COMPLETED, completed)\n\t}\n\n\tfun getCertificateLightUpdateboardingCompleted() = prefs.getBoolean(KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED, false)\n\n\tfun setCertificateLightUpdateboardingCompleted(completed: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_CERTIFICATE_LIGHT_UPDATEBOARDING_COMPLETED, completed)\n\t}\n\n\tfun getAgbUpdateboardingCompleted() = prefs.getBoolean(KEY_AGB_UPDATEBOARDING_COMPLETED, false)\n\n\tfun setAgbUpdateboardingCompleted(completed: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_AGB_UPDATEBOARDING_COMPLETED, completed)\n\t}\n\n\tfun getValidityUpdateboardingCompleted() = prefs.getBoolean(KEY_VALIDITY_UPDATEBOARDING_COMPLETED, false)\n\n\tfun setValidityUpdateboardingCompleted(completed: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_VALIDITY_UPDATEBOARDING_COMPLETED, completed)\n\t}\n\n\tfun getMigratedCertificatesToWalletData() = prefs.getBoolean(KEY_MIGRATED_CERTIFICATES_TO_WALLET_DATA, false)\n\n\tfun setMigratedCertificatesToWalletData(migrated: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_MIGRATED_CERTIFICATES_TO_WALLET_DATA, migrated)\n\t}\n\n\tfun getMigratedTransferCodeValidity() = prefs.getBoolean(KEY_MIGRATED_TRANSFER_CODE_VALIDITY, false)\n\n\tfun setMigratedTransferCodeValidity(migrated: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_MIGRATED_TRANSFER_CODE_VALIDITY, migrated)\n\t}\n\n\tfun getMigratedTransferCodeFailsAt() = prefs.getBoolean(KEY_MIGRATED_TRANSFER_CODE_FAILS_AT, false)\n\n\tfun setMigratedTransferCodeFailsAt(migrated: Boolean) = prefs.edit {\n\t\tputBoolean(KEY_MIGRATED_TRANSFER_CODE_FAILS_AT, migrated)\n\t}\n\n\tfun getVaccinationHintDismissTimestamp() = prefs.getLong(KEY_VACCINATION_HINT_DISMISS_TIMESTAMP, 0L)\n\n\tfun setVaccinationHintDismissTimestamp(timestamp: Long) = prefs.edit {\n\t\tputLong(KEY_VACCINATION_HINT_DISMISS_TIMESTAMP, timestamp)\n\t}\n\n\t/*\n\t * The following methods are only used on Android 6 as a workaround to the AndroidKeyStore not properly working with the\n\t * signing and decrypting functionality of the In-App Delivery feature. On later Android versions, the key pairs are directly\n\t * stored in the AndroidKeyStore.\n\t */\n\tfun getTransferCodePublicKey(keyAlias: String) = prefs.getString(KEY_TRANSFER_CODE_PUBLIC_KEY_PREFIX + keyAlias, null)\n\n\tfun setTransferCodePublicKey(keyAlias: String, encodedKey: String?) = prefs.edit {\n\t\tputString(KEY_TRANSFER_CODE_PUBLIC_KEY_PREFIX + keyAlias, encodedKey)\n\t}\n\n\tfun getTransferCodePrivateKey(keyAlias: String) = prefs.getString(KEY_TRANSFER_CODE_PRIVATE_KEY_PREFIX + keyAlias, null)\n\n\tfun setTransferCodePrivateKey(keyAlias: String, encodedKey: String?) = prefs.edit {\n\t\tputString(KEY_TRANSFER_CODE_PRIVATE_KEY_PREFIX + keyAlias, encodedKey)\n\t}\n\n\tfun addLastScanTimes(time: Long) {\n\t\tval times = getLastScanTimes().toMutableList()\n\t\ttimes.add(time)\n\t\tprefs.edit {\n\t\t\tputString(KEY_LAST_SCAN_TIMES, longListAdapter.toJson(times))\n\t\t}\n\t}\n\n\tprivate fun getLastScanTimes(): List<Long> {\n\t\tval times = longListAdapter.fromJson(prefs.getString(KEY_LAST_SCAN_TIMES, \"[]\")) ?: emptyList()\n\t\treturn times.sortedDescending().filterIndexed { index, _ -> index < 10 }\n\t}\n\n\tfun has10OrMoreScansInLast24h(): Boolean {\n\t\treturn getLastScanTimes().filter { time ->\n\t\t\tInstant.ofEpochMilli(time).isAfter(Instant.now().minus(Duration.ofDays(1)))\n\t\t}.size >= 10\n\t}\n\n\tfun resetScanCount() {\n\t\tprefs.edit {\n\t\t\tputString(KEY_LAST_SCAN_TIMES, longListAdapter.toJson(emptyList()))\n\t\t}\n\t}\n\n\tfun getDismissedEolBanners(): Set<String> {\n\t\treturn prefs.getStringSet(KEY_DISMISSED_EOL_BANNERS, emptySet()) ?: emptySet()\n\t}\n\n\tfun addDismissedEolBanner(qrCodeData: String) {\n\t\tval dismissedEolBanners = getDismissedEolBanners() + qrCodeData\n\t\tprefs.edit { putStringSet(KEY_DISMISSED_EOL_BANNERS, dismissedEolBanners) }\n\t}\n\n\tfun getForeignRulesCheckSelectedCountry(): String? {\n\t\treturn prefs.getString(KEY_FOREIGN_RULES_CHECK_SELECTED_COUNTRY, null)\n\t}\n\n\tfun setForeignRulesCheckSelectedCountry(countryCode: String?) {\n\t\tprefs.edit {\n\t\t\tputString(KEY_FOREIGN_RULES_CHECK_SELECTED_COUNTRY, countryCode)\n\t\t}\n\t}\n\n\tfun getForeignRulesCheckSelectedDate(): Long {\n\t\treturn prefs.getLong(KEY_FOREIGN_RULES_CHECK_SELECTED_DATE, 0L)\n\t}\n\n\tfun setForeignRulesCheckSelectedDate(timestamp: Long) {\n\t\tprefs.edit {\n\t\t\tputLong(KEY_FOREIGN_RULES_CHECK_SELECTED_DATE, timestamp)\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/data/adapter/InstantJsonAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.data.adapter\n\nimport com.squareup.moshi.FromJson\nimport com.squareup.moshi.ToJson\nimport java.time.Instant\n\nclass InstantJsonAdapter {\n\n\t@FromJson\n\tfun fromJson(json: String) = json.toLongOrNull()?.let { Instant.ofEpochMilli(it) }\n\n\t@ToJson\n\tfun toJson(value: Instant?) = value?.toEpochMilli()?.toString()\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/detail/CertificateDetailAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.detail\n\nimport android.view.LayoutInflater\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\n\nclass CertificateDetailAdapter : RecyclerView.Adapter<CertificateDetailViewHolder>() {\n\n\tprivate val items = mutableListOf<CertificateDetailItem>()\n\n\toverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CertificateDetailViewHolder {\n\t\tval inflater = LayoutInflater.from(parent.context)\n\t\treturn when (viewType) {\n\t\t\t0 -> CertificateDetailViewHolder(inflater.inflate(DividerItem.layoutResource, parent, false))\n\t\t\t1 -> CertificateDetailViewHolder(inflater.inflate(TitleItem.layoutResource, parent, false))\n\t\t\t2 -> CertificateDetailViewHolder(inflater.inflate(ValueItem.layoutResource, parent, false))\n\t\t\t3 -> CertificateDetailViewHolder(inflater.inflate(ValueItemWithoutLabel.layoutResource, parent, false))\n\t\t\t4 -> CertificateDetailViewHolder(inflater.inflate(UvciItem.layoutResource, parent, false))\n\t\t\telse -> throw IllegalStateException(\"Unknown viewType $viewType in CertificateDetailAdapter\")\n\t\t}\n\t}\n\n\toverride fun onBindViewHolder(holder: CertificateDetailViewHolder, position: Int) {\n\t\tholder.bindItem(items[position])\n\t}\n\n\toverride fun getItemCount(): Int = items.size\n\n\toverride fun getItemViewType(position: Int): Int {\n\t\treturn when (items[position]) {\n\t\t\tDividerItem -> 0\n\t\t\tis TitleItem -> 1\n\t\t\tis ValueItem -> 2\n\t\t\tis ValueItemWithoutLabel -> 3\n\t\t\tis UvciItem -> 4\n\t\t}\n\t}\n\n\tfun setItems(items: List<CertificateDetailItem>) {\n\t\tthis.items.clear()\n\t\tthis.items.addAll(items)\n\t\tnotifyDataSetChanged()\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/detail/CertificateDetailFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.detail\n\nimport android.content.Context\nimport android.content.res.ColorStateList\nimport android.graphics.Color\nimport android.graphics.drawable.BitmapDrawable\nimport android.net.Uri\nimport android.os.Bundle\nimport android.text.SpannableString\nimport android.text.method.LinkMovementMethod\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.annotation.ColorRes\nimport androidx.annotation.DrawableRes\nimport androidx.appcompat.app.AlertDialog\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.text.HtmlCompat\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.setFragmentResultListener\nimport androidx.lifecycle.lifecycleScope\nimport androidx.transition.TransitionManager\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.config.EolBannerInfoModel\nimport ch.admin.bag.covidcertificate.common.config.WalletModeModel\nimport ch.admin.bag.covidcertificate.common.extensions.getDate\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.common.extensions.overrideScreenBrightness\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.util.getInvalidErrorCode\nimport ch.admin.bag.covidcertificate.common.util.makeBold\nimport ch.admin.bag.covidcertificate.common.views.animateBackgroundTintColor\nimport ch.admin.bag.covidcertificate.common.views.hideAnimated\nimport ch.admin.bag.covidcertificate.common.views.showAnimated\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isChAusnahmeTest\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isNotFullyProtected\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isPositiveRatTest\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.DccCert\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.*\nimport ch.admin.bag.covidcertificate.sdk.core.verifier.nationalrules.ValidityRange\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificateDetailBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemDetailModeBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemDetailModeRefreshBinding\nimport ch.admin.bag.covidcertificate.wallet.dialog.CertificateBannerInfoDialogFragment\nimport ch.admin.bag.covidcertificate.wallet.dialog.ModeInfoDialogFragment\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.light.CertificateLightConversionFragment\nimport ch.admin.bag.covidcertificate.wallet.pdf.export.PdfExportFragment\nimport ch.admin.bag.covidcertificate.wallet.pdf.export.PdfExportShareContract\nimport ch.admin.bag.covidcertificate.wallet.ratconversion.RatConversionFragment\nimport ch.admin.bag.covidcertificate.wallet.renewal.QrCodeRenewalFragment\nimport ch.admin.bag.covidcertificate.wallet.travel.ForeignValidityFragment\nimport ch.admin.bag.covidcertificate.wallet.util.*\nimport ch.admin.bag.covidcertificate.wallet.util.BitmapUtil.getHumanReadableName\nimport ch.admin.bag.covidcertificate.wallet.util.BitmapUtil.textAsBitmap\nimport ch.admin.bag.covidcertificate.wallet.vaccination.appointment.VaccinationAppointmentFragment\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport java.time.Duration\nimport java.time.LocalDateTime\n\nclass CertificateDetailFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate const val STATUS_HIDE_DELAY = 2000L\n\n\t\tprivate const val ARG_CERTIFICATE = \"ARG_CERTIFICATE\"\n\n\t\tprivate val ISSUER_SWITZERLAND = listOf(\"CH\", \"CH BAG\")\n\n\t\tfun newInstance(certificateHolder: CertificateHolder): CertificateDetailFragment = CertificateDetailFragment().apply {\n\t\t\targuments = bundleOf(ARG_CERTIFICATE to certificateHolder)\n\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\tprivate var _binding: FragmentCertificateDetailBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\n\tprivate var hideDelayedJob: Job? = null\n\tprivate var eolBannerInfo: EolBannerInfoModel? = null\n\n\tprivate var isForceValidate = false\n\tprivate val pdfExportShareLauncher = registerForActivityResult(PdfExportShareContract()) { uri ->\n\t\t// Delete the cached pdf file when returning from the share intent\n\t\turi?.let {\n\t\t\trequireContext().contentResolver.delete(it, null, null)\n\t\t}\n\t}\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE) as? CertificateHolder)\n\t\t\t?: throw IllegalStateException(\"Certificate detail fragment created without Certificate!\")\n\n\t\tsetFragmentResultListener(PdfExportFragment.REQUEST_KEY_PDF_EXPORT) { _, bundle ->\n\t\t\tbundle.getParcelable<Uri>(PdfExportFragment.RESULT_KEY_PDF_URI)?.let { uri ->\n\t\t\t\tpdfExportShareLauncher.launch(uri)\n\t\t\t}\n\t\t}\n\n\t\tsetFragmentResultListener(QrCodeRenewalFragment.REQUEST_KEY_CERTIFICATE) { _, bundle ->\n\t\t\tval certificate = bundle.getSerializable(QrCodeRenewalFragment.ARG_CERTIFICATE) as? CertificateHolder\n\t\t\tif (certificate != null) {\n\t\t\t\t// Update the certificate holder and re-display the certificate when the fragment result is triggered by the renewal\n\t\t\t\tcertificateHolder = certificate\n\t\t\t\tdisplayCertificateData()\n\t\t\t}\n\t\t}\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificateDetailBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.certificateDetailToolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tdisplayCertificateData()\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\t\trequireActivity().window.overrideScreenBrightness(true)\n\t}\n\n\toverride fun onPause() {\n\t\tsuper.onPause()\n\t\trequireActivity().window.overrideScreenBrightness(false)\n\t}\n\n\tprivate fun displayCertificateData() {\n\t\tdisplayQrCode()\n\t\tupdateToolbarTitle()\n\t\tsetupCertificateDetails()\n\t\tsetupStatusInfo()\n\t\tsetupDetailNote()\n\t\tsetupConversionButtons()\n\t\tsetupVaccinationAppointmentButton()\n\t\tsetupQrCodeRenewalBanner()\n\t\tsetupEolBanner()\n\t\tsetupRatRecoveryConversionBanner()\n\t\tsetupForeignValidityButton()\n\t\tsetupCertificateDeleteButton()\n\t}\n\n\tprivate fun updateToolbarTitle() {\n\t\tval dccCert = certificateHolder.certificate as? DccCert\n\n\t\tval vaccinationEntry = dccCert?.vaccinations?.firstOrNull()\n\t\tif (vaccinationEntry?.isNotFullyProtected() == true) {\n\t\t\tbinding.certificateDetailToolbar.setTitle(R.string.wallet_certificate_evidence_title)\n\t\t} else {\n\t\t\tbinding.certificateDetailToolbar.setTitle(R.string.covid_certificate_title)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun displayQrCode() {\n\t\tval qrCodeBitmap = QrCode.renderToBitmap(certificateHolder.qrCodeData)\n\t\tval qrCodeDrawable = BitmapDrawable(resources, qrCodeBitmap).apply { isFilterBitmap = false }\n\t\tbinding.certificateDetailQrCode.setImageDrawable(qrCodeDrawable)\n\t}\n\n\tprivate fun setupCertificateDetails() {\n\t\tval recyclerView = binding.certificateDetailDataRecyclerView\n\t\tval adapter = CertificateDetailAdapter()\n\t\trecyclerView.adapter = adapter\n\n\t\tbinding.certificateDetailName.text = certificateHolder.certificate.getPersonName().prettyName()\n\t\tbinding.certificateDetailStandardizedNameLabel.text = certificateHolder.certificate.getPersonName().prettyStandardizedName()\n\t\tbinding.certificateDetailBirthdate.text = certificateHolder.certificate.getFormattedDateOfBirth()\n\n\t\tbinding.certificateDetailInfo.setText(R.string.verifier_verify_success_info)\n\n\t\tval detailItems =\n\t\t\tCertificateDetailItemListBuilder(recyclerView.context, certificateHolder, isDetailScreen = true).buildAll()\n\t\tadapter.setItems(detailItems)\n\t}\n\n\tprivate fun setupStatusInfo() {\n\t\tcertificatesViewModel.statefulWalletItems.observe(viewLifecycleOwner) { items ->\n\t\t\titems.filterIsInstance(StatefulWalletItem.VerifiedCertificate::class.java)\n\t\t\t\t.find { it.certificateHolder?.qrCodeData == certificateHolder.qrCodeData }?.let {\n\t\t\t\t\tval currentConfig = ConfigRepository.getCurrentConfig(requireContext())\n\n\t\t\t\t\tval isFeatureEnabled = currentConfig?.foreignRulesCheckEnabled == true\n\t\t\t\t\tval isNotInvalid = it.state is VerificationState.SUCCESS || it.state.isOnlyNationalRulesInvalid()\n\t\t\t\t\tval isValidOnlyInSwitzerland = it.state.isValidOnlyInSwitzerland()\n\t\t\t\t\tbinding.certificateForeignValidityButton.isVisible =\n\t\t\t\t\t\tisFeatureEnabled && isNotInvalid && !isValidOnlyInSwitzerland\n\n\t\t\t\t\tupdateStatusInfo(it.state)\n\t\t\t\t}\n\t\t}\n\n\t\tcertificatesViewModel.startVerification(certificateHolder)\n\t}\n\n\tprivate fun setupDetailNote() {\n\t\tval dccCert = certificateHolder.certificate as? DccCert\n\t\tval stringId = when {\n\t\t\tdccCert?.tests?.firstOrNull()?.isChAusnahmeTest() == true -> R.string.wallet_certificate_detail_note_ausnahme\n\t\t\tdccCert?.tests?.firstOrNull()?.isPositiveRatTest() == true -> R.string.wallet_certificate_detail_note_positive_antigen\n\t\t\telse -> R.string.wallet_certificate_detail_note\n\t\t}\n\n\t\tbinding.certificateDetailNote.text = HtmlCompat.fromHtml(getString(stringId), HtmlCompat.FROM_HTML_MODE_LEGACY)\n\t\tbinding.certificateDetailNote.movementMethod = LinkMovementMethod.getInstance()\n\t}\n\n\tprivate fun setupConversionButtons() {\n\t\tbinding.certificateDetailConvertLightButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, CertificateLightConversionFragment.newInstance(certificateHolder))\n\t\t\t\t.addToBackStack(CertificateLightConversionFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tbinding.certificateDetailConvertPdfButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, PdfExportFragment.newInstance(certificateHolder))\n\t\t\t\t.addToBackStack(PdfExportFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\tprivate fun setupVaccinationAppointmentButton() {\n\t\tval showVaccinationAppointmentButton =\n\t\t\tConfigRepository.getCurrentConfig(requireContext())?.showVaccinationHintDetail ?: false\n\t\tbinding.certificateDetailVaccinationAppointmentButton.isVisible = showVaccinationAppointmentButton\n\n\t\tbinding.certificateDetailVaccinationAppointmentButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, VaccinationAppointmentFragment.newInstance())\n\t\t\t\t.addToBackStack(VaccinationAppointmentFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\tprivate fun setupCertificateDeleteButton() {\n\t\tbinding.certificateDetailButtonDelete.setOnClickListener {\n\t\t\tAlertDialog.Builder(requireContext(), R.style.CovidCertificate_AlertDialogStyle)\n\t\t\t\t.setTitle(R.string.delete_button)\n\t\t\t\t.setMessage(R.string.wallet_certificate_delete_confirm_text)\n\t\t\t\t.setPositiveButton(R.string.delete_button) { _, _ ->\n\t\t\t\t\tcertificatesViewModel.removeCertificate(certificateHolder.qrCodeData)\n\t\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t\t}\n\t\t\t\t.setNegativeButton(R.string.cancel_button) { dialog, _ ->\n\t\t\t\t\tdialog.dismiss()\n\t\t\t\t}\n\t\t\t\t.setCancelable(true)\n\t\t\t\t.create()\n\t\t\t\t.show()\n\t\t}\n\t}\n\n\tprivate fun setupQrCodeRenewalBanner() {\n\t\tbinding.certificateDetailBanners.apply {\n\t\t\tqrCodeRenewalBanner.setOnClickListener {\n\t\t\t\tval fragment = QrCodeRenewalFragment.newInstance(certificateHolder)\n\t\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t\t.replace(R.id.fragment_container, fragment)\n\t\t\t\t\t.addToBackStack(QrCodeRenewalFragment::class.java.canonicalName)\n\t\t\t\t\t.commit()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupEolBanner() {\n\t\tbinding.certificateDetailBanners.certificateDetailBanner.setOnClickListener {\n\t\t\teolBannerInfo?.let {\n\t\t\t\tCertificateBannerInfoDialogFragment.newInstance(it)\n\t\t\t\t\t.show(childFragmentManager, CertificateBannerInfoDialogFragment::class.java.canonicalName)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupRatRecoveryConversionBanner() {\n\t\tbinding.certificateDetailBanners.ratConversionBanner.setOnClickListener {\n\t\t\tval fragment = RatConversionFragment.newInstance(certificateHolder)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, fragment)\n\t\t\t\t.addToBackStack(RatConversionFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\tprivate fun setupForeignValidityButton() {\n\t\tbinding.certificateForeignValidityButton.setOnClickListener {\n\t\t\tval fragment = ForeignValidityFragment.newInstance(certificateHolder)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, fragment)\n\t\t\t\t.addToBackStack(ForeignValidityFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\tprivate fun updateStatusInfo(verificationState: VerificationState?) {\n\t\tval originalState = verificationState ?: return\n\n\t\tval currentConfig = ConfigRepository.getCurrentConfig(requireContext())\n\t\tval expiryHiddenState = hideExpiryInSwitzerland(currentConfig, originalState)\n\t\tval isNotValidAnymore = originalState is VerificationState.INVALID && expiryHiddenState is VerificationState.SUCCESS\n\n\t\tchangeAlpha(expiryHiddenState)\n\t\tsetCertificateDetailTextColor(expiryHiddenState.getNameDobColor())\n\n\t\twhen (expiryHiddenState) {\n\t\t\tis VerificationState.LOADING -> displayLoadingState()\n\t\t\tis VerificationState.SUCCESS -> displaySuccessState(expiryHiddenState, isNotValidAnymore)\n\t\t\tis VerificationState.INVALID -> displayInvalidState(expiryHiddenState)\n\t\t\tis VerificationState.ERROR -> displayErrorState(expiryHiddenState)\n\t\t}\n\t}\n\n\tprivate fun displayLoadingState() {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(true)\n\t\tbinding.certificateDetailInfoDescriptionGroup.isVisible = false\n\t\tbinding.certificateDetailInfoValidityGroup.isVisible = false\n\t\tbinding.certificateDetailErrorCode.isVisible = false\n\t\tsetInfoBubbleBackgrounds(R.color.greyish, R.color.greyish)\n\t\tupdateConversionButtons(isLightCertificateEnabled = false, isPdfExportEnabled = false)\n\n\t\tval info = SpannableString(context.getString(R.string.wallet_certificate_verifying))\n\t\tif (isForceValidate) {\n\t\t\tshowStatusInfoAndDescription(null, info, 0)\n\t\t\tshowForceValidation(R.color.grey, 0, 0, info, emptyList())\n\t\t} else {\n\t\t\tshowStatusInfoAndDescription(null, info, 0)\n\t\t}\n\t}\n\n\tprivate fun displaySuccessState(\n\t\tstate: VerificationState.SUCCESS,\n\t\tisNotValidAnymore: Boolean,\n\t) {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(false)\n\t\tbinding.certificateDetailInfoDescriptionGroup.isVisible = false\n\t\tbinding.certificateDetailInfoValidityGroup.isVisible = true\n\t\tbinding.certificateDetailErrorCode.isVisible = false\n\t\tval walletState = state.successState as SuccessState.WalletSuccessState\n\n\t\tsetupValidityGroup(context, state)\n\n\t\tsetInfoBubbleBackgrounds(R.color.blueish, R.color.greenish)\n\n\t\tval isIssuedInSwitzerland = ISSUER_SWITZERLAND.contains(certificateHolder.issuer)\n\t\tif (isNotValidAnymore) {\n\t\t\t// Certificate Light is disabled for invalid certificates, PDF export is enabled if the signature is valid and the certificate was issued in Switzerland\n\t\t\tupdateConversionButtons(\n\t\t\t\tisLightCertificateEnabled = false,\n\t\t\t\tisPdfExportEnabled = isIssuedInSwitzerland // signature is assumed to be valid, since we only hide expiry for well-signed certs\n\t\t\t)\n\t\t} else {\n\t\t\t// Certificate Light and PDF export is enabled for a valid certificate that was issued in Switzerland\n\t\t\tupdateConversionButtons(isLightCertificateEnabled = isIssuedInSwitzerland, isPdfExportEnabled = isIssuedInSwitzerland)\n\t\t}\n\n\t\tval statusInfo: SpannableString\n\t\tval iconId: Int\n\t\tval showRedBorder: Boolean\n\t\tif (walletState.isValidOnlyInSwitzerland) {\n\t\t\tstatusInfo = SpannableString(context.getString(R.string.wallet_only_valid_in_switzerland))\n\t\t\ticonId = R.drawable.ic_flag_ch\n\t\t\tshowRedBorder = true\n\t\t} else {\n\t\t\tstatusInfo = SpannableString(context.getString(R.string.verifier_verify_success_info))\n\t\t\ticonId = R.drawable.ic_info_blue\n\t\t\tshowRedBorder = false\n\t\t}\n\t\tval forceValidationInfo = context.getString(R.string.wallet_certificate_verify_success).makeBold()\n\t\tif (isForceValidate) {\n\t\t\tshowStatusInfoAndDescription(null, forceValidationInfo, R.drawable.ic_check_green)\n\t\t\tshowForceValidation(\n\t\t\t\tR.color.green,\n\t\t\t\tR.drawable.ic_check_green,\n\t\t\t\tR.drawable.ic_check_large,\n\t\t\t\tforceValidationInfo,\n\t\t\t\twalletState.modeValidity\n\t\t\t)\n\t\t\treadjustStatusDelayed(R.color.blueish, iconId, statusInfo, showRedBorder)\n\t\t} else {\n\t\t\tshowStatusInfoAndDescription(null, statusInfo, iconId, showRedBorder)\n\t\t}\n\n\t\tshowModes(walletState.modeValidity)\n\t\tsetupModesButton(walletState.modeValidity)\n\n\t\tdisplayQrCodeRenewalBannerIfNecessary(walletState.showRenewBanner)\n\n\t\teolBannerInfo = ConfigRepository.getCurrentConfig(requireContext())\n\t\t\t?.getEolBannerInfo(getString(R.string.language_key))\n\t\t\t?.get(walletState.eolBannerIdentifier)\n\n\t\tbinding.certificateDetailBanners.certificateDetailBanner.isVisible = eolBannerInfo != null\n\n\t\teolBannerInfo?.let { info ->\n\t\t\tval backgroundColor = try {\n\t\t\t\tColor.parseColor(info.homescreenHexColor)\n\t\t\t} catch (e: IllegalArgumentException) {\n\t\t\t\tContextCompat.getColor(requireContext(), R.color.yellow)\n\t\t\t}\n\n\t\t\tbinding.certificateDetailBanners.apply {\n\t\t\t\tcertificateDetailBanner.backgroundTintList = ColorStateList.valueOf(backgroundColor)\n\t\t\t\tcertificateDetailBannerTitle.text = info.detailTitle\n\t\t\t\tcertificateDetailBannerText.text = info.detailText\n\t\t\t\tcertificateDetailBannerMoreInfo.text = info.detailMoreInfo\n\t\t\t}\n\t\t}\n\n\t\t// Show the RAT recovery certificate conversion banner if the feature flag is enabled and the certificate has the correct type\n\t\tval showRatRecoveryConversionBanner = ConfigRepository.getCurrentConfig(requireContext())?.showRatConversionForm == true\n\t\tval isPositiveRatTest = (certificateHolder.certificate as? DccCert)?.tests?.firstOrNull()?.isPositiveRatTest() ?: false\n\t\tbinding.certificateDetailBanners.ratConversionBanner.isVisible = showRatRecoveryConversionBanner && isPositiveRatTest\n\t}\n\n\tprivate fun setupModesButton(modeValidities: List<ModeValidity>) {\n\t\tval arrayList = arrayListOf<ModeValidity>()\n\t\tarrayList.addAll(modeValidities)\n\t\tbinding.certificateDetailInfoModes.certificateDetailInfoModesList.setOnClickListener {\n\t\t\tModeInfoDialogFragment.newInstance(arrayList)\n\t\t\t\t.show(childFragmentManager, ModeInfoDialogFragment::class.java.canonicalName)\n\t\t}\n\t}\n\n\tprivate fun showModes(modeValidities: List<ModeValidity>) {\n\t\tif (modeValidities.size <= 1) return\n\t\tbinding.certificateDetailInfoModes.certificateDetailInfoModesList.removeAllViews()\n\t\tval configLiveData: ConfigModel? = certificatesViewModel.configLiveData.value\n\t\tval checkedModes = configLiveData?.getCheckModes(getString(R.string.language_key))\n\n\t\tfor (modeValidity in modeValidities) {\n\t\t\tval modeValidityState = modeValidity.modeValidityState\n\t\t\tif (modeValidityState.isLight() || modeValidityState.isUnknown()) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tval itemBinding = ItemDetailModeBinding.inflate(\n\t\t\t\tlayoutInflater,\n\t\t\t\tbinding.certificateDetailInfoModes.certificateDetailInfoModesList,\n\t\t\t\ttrue\n\t\t\t)\n\t\t\tval imageView = itemBinding.root\n\t\t\tval walletModeModel: WalletModeModel? = checkedModes?.get(modeValidity.mode)\n\t\t\tval resOk = requireContext().getDrawableIdentifier(walletModeModel?.ok?.iconAndroid ?: \"\")\n\t\t\tval resNotOk = requireContext().getDrawableIdentifier(walletModeModel?.notOk?.iconAndroid ?: \"\")\n\n\t\t\tif (modeValidity.modeValidityState == ModeValidityState.SUCCESS) {\n\t\t\t\tif (resOk != 0) {\n\t\t\t\t\timageView.setImageResource(resOk)\n\t\t\t\t} else {\n\t\t\t\t\tval bitmap =\n\t\t\t\t\t\ttextAsBitmap(\n\t\t\t\t\t\t\trequireContext(),\n\t\t\t\t\t\t\tgetHumanReadableName(modeValidity.mode),\n\t\t\t\t\t\t\tresources.getDimensionPixelSize(R.dimen.text_size_small),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.blue),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), android.R.color.white)\n\t\t\t\t\t\t)\n\t\t\t\t\timageView.setImageBitmap(bitmap)\n\t\t\t\t}\n\t\t\t\timageView.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.blue))\n\t\t\t} else if (modeValidityState.isPartiallyValid() || modeValidityState.isInvalid()) {\n\t\t\t\tval colorStateList = ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.grey))\n\t\t\t\tif (resNotOk != 0) {\n\t\t\t\t\timageView.setImageResource(resNotOk)\n\t\t\t\t\timageView.imageTintList = colorStateList\n\t\t\t\t} else {\n\t\t\t\t\tval bitmap =\n\t\t\t\t\t\ttextAsBitmap(\n\t\t\t\t\t\t\trequireContext(),\n\t\t\t\t\t\t\tgetHumanReadableName(modeValidity.mode),\n\t\t\t\t\t\t\tresources.getDimensionPixelSize(R.dimen.text_size_small),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.grey),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), android.R.color.white),\n\t\t\t\t\t\t\tisNotOK = true\n\t\t\t\t\t\t)\n\t\t\t\t\timageView.setImageBitmap(bitmap)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun showModesForRefresh(modeValidities: List<ModeValidity>) {\n\t\tif (modeValidities.size <= 1) return\n\t\tval configLiveData: ConfigModel? = certificatesViewModel.configLiveData.value\n\t\tval checkedModes = configLiveData?.getCheckModes(getString(R.string.language_key))\n\n\t\tfor (modeValidity in modeValidities) {\n\t\t\tval modeValidityState = modeValidity.modeValidityState\n\t\t\tif (modeValidityState.isLight() || modeValidityState.isUnknown()) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tval itemBinding =\n\t\t\t\tItemDetailModeRefreshBinding.inflate(layoutInflater, binding.certificateDetailRefreshModeValidity, true)\n\t\t\tval imageView = itemBinding.root\n\t\t\tval walletModeModel: WalletModeModel? = checkedModes?.get(modeValidity.mode)\n\t\t\tval resOk = requireContext().getDrawableIdentifier(walletModeModel?.ok?.iconAndroid ?: \"\")\n\t\t\tval resNotOk = requireContext().getDrawableIdentifier(walletModeModel?.notOk?.iconAndroid ?: \"\")\n\n\t\t\tif (modeValidityState.isValid()) {\n\t\t\t\tif (resOk != 0) {\n\t\t\t\t\timageView.setImageResource(resOk)\n\t\t\t\t} else {\n\t\t\t\t\tval bitmap =\n\t\t\t\t\t\ttextAsBitmap(\n\t\t\t\t\t\t\trequireContext(),\n\t\t\t\t\t\t\tgetHumanReadableName(modeValidity.mode),\n\t\t\t\t\t\t\tresources.getDimensionPixelSize(R.dimen.text_size_small),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.white),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.green),\n\t\t\t\t\t\t)\n\t\t\t\t\timageView.setImageBitmap(bitmap)\n\t\t\t\t}\n\t\t\t\timageView.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.white))\n\t\t\t} else if (modeValidityState.isPartiallyValid() || modeValidityState.isInvalid()) {\n\t\t\t\tval colorStateList = ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.black))\n\t\t\t\tif (resNotOk != 0) {\n\t\t\t\t\timageView.setImageResource(resNotOk)\n\t\t\t\t\timageView.imageTintList = colorStateList\n\t\t\t\t} else {\n\t\t\t\t\tval bitmap =\n\t\t\t\t\t\ttextAsBitmap(\n\t\t\t\t\t\t\trequireContext(),\n\t\t\t\t\t\t\tgetHumanReadableName(modeValidity.mode),\n\t\t\t\t\t\t\tresources.getDimensionPixelSize(R.dimen.text_size_small),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.black),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.green),\n\t\t\t\t\t\t\tisNotOK = true\n\t\t\t\t\t\t)\n\t\t\t\t\timageView.setImageBitmap(bitmap)\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun displayInvalidState(state: VerificationState.INVALID) {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(false)\n\t\tbinding.certificateDetailInfoDescriptionGroup.isVisible = false\n\n\t\tbinding.certificateDetailInfoValidityGroup.isVisible = state.signatureState == CheckSignatureState.SUCCESS\n\t\tsetupValidityGroup(context, state)\n\n\t\t// Certificate Light is disabled for invalid certificates, PDF export is enabled if the signature is valid and the certificate was issued in Switzerland\n\t\tval isSignatureValid = state.signatureState is CheckSignatureState.SUCCESS\n\t\tval isIssuedInSwitzerland = ISSUER_SWITZERLAND.contains(certificateHolder.issuer)\n\t\tupdateConversionButtons(isLightCertificateEnabled = false, isPdfExportEnabled = isSignatureValid && isIssuedInSwitzerland)\n\n\t\tval signatureState = state.signatureState\n\t\tval revocationState = state.revocationState\n\t\tval nationalRulesState = state.nationalRulesState\n\n\t\tval info = state.getValidationStatusString(context)\n\t\tval infoBubbleColorId = when {\n\t\t\tsignatureState is CheckSignatureState.INVALID -> {\n\t\t\t\tif (signatureState.signatureErrorCode == ErrorCodes.SIGNATURE_TIMESTAMP_EXPIRED) {\n\t\t\t\t\tR.color.blueish\n\t\t\t\t} else {\n\t\t\t\t\tR.color.greyish\n\t\t\t\t}\n\t\t\t}\n\t\t\trevocationState is CheckRevocationState.INVALID -> R.color.greyish\n\t\t\tnationalRulesState is CheckNationalRulesState.NOT_VALID_ANYMORE -> R.color.blueish\n\t\t\tnationalRulesState is CheckNationalRulesState.NOT_YET_VALID -> R.color.blueish\n\t\t\tnationalRulesState is CheckNationalRulesState.INVALID -> R.color.greyish\n\t\t\telse -> R.color.greyish\n\t\t}\n\n\t\tsetInfoBubbleBackgrounds(infoBubbleColorId, R.color.redish)\n\n\t\tval icon: Int\n\t\tval forceValidationIcon: Int\n\n\t\twhen {\n\t\t\tsignatureState is CheckSignatureState.INVALID -> {\n\t\t\t\tif (signatureState.signatureErrorCode == ErrorCodes.SIGNATURE_TIMESTAMP_EXPIRED) {\n\t\t\t\t\ticon = R.drawable.ic_invalid_grey\n\t\t\t\t\tforceValidationIcon = R.drawable.ic_invalid_red\n\t\t\t\t} else {\n\t\t\t\t\ticon = R.drawable.ic_error_grey\n\t\t\t\t\tforceValidationIcon = R.drawable.ic_error\n\t\t\t\t}\n\t\t\t}\n\t\t\trevocationState is CheckRevocationState.INVALID -> {\n\t\t\t\ticon = R.drawable.ic_error_grey\n\t\t\t\tforceValidationIcon = R.drawable.ic_error\n\t\t\t}\n\t\t\tnationalRulesState is CheckNationalRulesState.NOT_VALID_ANYMORE -> {\n\t\t\t\ticon = R.drawable.ic_error_grey\n\t\t\t\tforceValidationIcon = R.drawable.ic_error\n\t\t\t}\n\t\t\tnationalRulesState is CheckNationalRulesState.NOT_YET_VALID -> {\n\t\t\t\ticon = R.drawable.ic_timelapse\n\t\t\t\tforceValidationIcon = R.drawable.ic_timelapse_red\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\ticon = R.drawable.ic_error_grey\n\t\t\t\tforceValidationIcon = R.drawable.ic_error\n\t\t\t}\n\t\t}\n\n\t\tif (isForceValidate) {\n\t\t\tshowStatusInfoAndDescription(null, info, forceValidationIcon)\n\t\t\tshowForceValidation(R.color.red, forceValidationIcon, R.drawable.ic_error_large, info, emptyList())\n\t\t\treadjustStatusDelayed(infoBubbleColorId, icon, info)\n\t\t} else {\n\t\t\tshowStatusInfoAndDescription(null, info, icon)\n\t\t}\n\n\t\tbinding.certificateDetailErrorCode.apply {\n\t\t\tval errorCode = state.getInvalidErrorCode(showNationalErrors = true)\n\t\t\tif (errorCode.isNotEmpty()) {\n\t\t\t\tisVisible = true\n\t\t\t\ttext = errorCode\n\t\t\t} else {\n\t\t\t\tisVisible = false\n\t\t\t}\n\t\t}\n\n\t\tdisplayQrCodeRenewalBannerIfNecessary(state.showRenewBanner)\n\t}\n\n\tprivate fun displayErrorState(state: VerificationState.ERROR) {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(false)\n\t\tbinding.certificateDetailInfoDescriptionGroup.isVisible = true\n\t\tbinding.certificateDetailInfoValidityGroup.isVisible = false\n\t\tsetInfoBubbleBackgrounds(R.color.greyish, R.color.orangeish)\n\t\tupdateConversionButtons(isLightCertificateEnabled = false, isPdfExportEnabled = false)\n\n\t\tval info: SpannableString\n\t\tval forceValidationInfo: SpannableString\n\t\tval description: SpannableString\n\t\tval icon: Int\n\t\tval forceValidationIcon: Int\n\t\tval forceValidationIconLarge: Int\n\t\tif (state.isOfflineMode()) {\n\t\t\tinfo = context.getString(R.string.wallet_homescreen_offline).makeBold()\n\t\t\tforceValidationInfo = context.getString(R.string.wallet_detail_offline_retry_title).makeBold()\n\t\t\tdescription = SpannableString(context.getString(R.string.wallet_offline_description))\n\t\t\ticon = R.drawable.ic_offline\n\t\t\tforceValidationIcon = R.drawable.ic_offline_orange\n\t\t\tforceValidationIconLarge = R.drawable.ic_offline_large\n\t\t} else if (state.isTimeInconsistency()) {\n\t\t\tinfo = context.getString(R.string.wallet_time_inconsistency_error_title).makeBold()\n\t\t\tforceValidationInfo = context.getString(R.string.wallet_time_inconsistency_error_title).makeBold()\n\t\t\tdescription = SpannableString(context.getString(R.string.wallet_time_inconsistency_error_text))\n\t\t\ticon = R.drawable.ic_timeerror\n\t\t\tforceValidationIcon = R.drawable.ic_timeerror_orange\n\t\t\tforceValidationIconLarge = R.drawable.ic_timeerror_large\n\t\t} else {\n\t\t\tinfo = SpannableString(context.getString(R.string.wallet_homescreen_network_error))\n\t\t\tforceValidationInfo = context.getString(R.string.wallet_detail_network_error_title).makeBold()\n\t\t\tdescription = SpannableString(context.getString(R.string.wallet_detail_network_error_text))\n\t\t\ticon = R.drawable.ic_process_error_grey\n\t\t\tforceValidationIcon = R.drawable.ic_process_error\n\t\t\tforceValidationIconLarge = R.drawable.ic_process_error_large\n\t\t}\n\n\t\tif (isForceValidate) {\n\t\t\tshowStatusInfoAndDescription(description, forceValidationInfo, icon)\n\t\t\tshowForceValidation(R.color.orange, forceValidationIcon, forceValidationIconLarge, forceValidationInfo, emptyList())\n\t\t\treadjustStatusDelayed(R.color.greyish, icon, info)\n\t\t} else {\n\t\t\tshowStatusInfoAndDescription(description, info, icon)\n\t\t}\n\n\t\tbinding.certificateDetailErrorCode.apply {\n\t\t\tisVisible = true\n\t\t\ttext = state.error.code\n\t\t}\n\t}\n\n\tprivate fun updateConversionButtons(isLightCertificateEnabled: Boolean, isPdfExportEnabled: Boolean) {\n\t\tval currentConfig = ConfigRepository.getCurrentConfig(requireContext())\n\n\t\tif (currentConfig?.lightCertificateActive == true) {\n\t\t\tbinding.certificateDetailConvertLightButton.isVisible = true\n\t\t\tbinding.certificateDetailConvertLightButton.isEnabled = isLightCertificateEnabled\n\t\t\tbinding.certificateDetailConvertLightArrow.isVisible = isLightCertificateEnabled\n\t\t} else {\n\t\t\tbinding.certificateDetailConvertLightButton.isVisible = false\n\t\t}\n\n\t\tif (currentConfig?.pdfGenerationActive == true) {\n\t\t\tbinding.certificateDetailConvertPdfButton.isVisible = true\n\t\t\tbinding.certificateDetailConvertPdfButton.isEnabled = isPdfExportEnabled\n\t\t\tbinding.certificateDetailConvertPdfArrow.isVisible = isPdfExportEnabled\n\t\t} else {\n\t\t\tbinding.certificateDetailConvertPdfButton.isVisible = false\n\t\t}\n\t}\n\n\t/**\n\t * Show or hide the loading indicators and status icons in the QR code and the info bubble\n\t */\n\tprivate fun showLoadingIndicator(isLoading: Boolean) {\n\t\tbinding.certificateDetailStatusLoading.isVisible = isLoading\n\t\tbinding.certificateDetailStatusIcon.isVisible = !isLoading\n\n\t\tbinding.certificateDetailQrCodeLoading.isVisible = isLoading\n\t\tbinding.certificateDetailQrCodeStatusIcon.isVisible = !isLoading\n\t}\n\n\tprivate fun setupValidityGroup(context: Context, state: VerificationState) {\n\t\tval covidCertificate: DccCert = certificateHolder.certificate as DccCert\n\t\tval currentConfig = ConfigRepository.getCurrentConfig(requireContext())\n\t\tval validityRange: ValidityRange? = when (state) {\n\t\t\tis VerificationState.SUCCESS -> (state.successState as SuccessState.WalletSuccessState).validityRange\n\t\t\tis VerificationState.INVALID -> state.validityRange\n\t\t\telse -> throw IllegalArgumentException(\"Unsupported state: ${state::class.java.simpleName}\")\n\t\t}\n\n\t\tif (currentConfig?.showValidityState == false) {\n\t\t\tval leftLabelStringId = if (certificateHolder.certType == CertType.VACCINATION) {\n\t\t\t\tR.string.wallet_validity_since_vaccination_date\n\t\t\t} else if (certificateHolder.certType == CertType.TEST) {\n\t\t\t\tR.string.wallet_validity_since_test_date\n\t\t\t} else {\n\t\t\t\tR.string.wallet_validity_since_recovery_date\n\t\t\t}\n\t\t\tbinding.certificateDetailInfoValidityLeftText.text = context.getString(leftLabelStringId)\n\t\t\tbinding.certificateDetailInfoValidityLeftBold.text =\n\t\t\t\tgetFormattedValidityDate(covidCertificate.getDate(), certificateHolder.certType, state)\n\t\t\tbinding.certificateDetailInfoValidityLeftBold.visibility = View.VISIBLE\n\t\t\tbinding.certificateDetailInfoValidityRightText.text =\n\t\t\t\tgetPrefix(context, covidCertificate.getDate(), certificateHolder.certType)\n\t\t\tbinding.certificateDetailInfoValidityRightBold.text =\n\t\t\t\tgetFormattedValiditySince(context, covidCertificate.getDate(), certificateHolder.certType)\n\t\t} else {\n\t\t\tbinding.certificateDetailInfoValidityLeftText.text = context.getString(R.string.wallet_certificate_validity)\n\t\t\tbinding.certificateDetailInfoValidityLeftBold.visibility = View.GONE\n\t\t\tbinding.certificateDetailInfoValidityRightText.text = context.getString(R.string.wallet_certificate_valid_until)\n\t\t\tbinding.certificateDetailInfoValidityRightBold.text =\n\t\t\t\tgetFormattedValidityDate(validityRange?.validUntil, certificateHolder.certType, state)\n\t\t}\n\t}\n\n\t/**\n\t * Change the alpha value of the QR code, validity date and certificate content\n\t */\n\tprivate fun changeAlpha(state: VerificationState) {\n\t\tbinding.certificateDetailQrCode.alpha = state.getInvalidQrCodeAlpha(certificateHolder.certType == CertType.TEST)\n\t\tval contentAlpha = state.getInvalidContentAlpha()\n\t\tbinding.certificateDetailInfoValidityLeftGroup.alpha = contentAlpha\n\t\tbinding.certificateDetailInfoValidityRightGroup.alpha = contentAlpha\n\t\tbinding.certificateDetailDataRecyclerView.alpha = contentAlpha\n\t}\n\n\t/**\n\t * Format validity date of the vaccine or test\n\t */\n\tprivate fun getFormattedValidityDate(\n\t\tvalidUntil: LocalDateTime?,\n\t\tcertificateType: CertType?,\n\t\tverificationState: VerificationState,\n\t): String? {\n\t\tval formatter = when (certificateType) {\n\t\t\tnull -> null\n\t\t\tCertType.TEST -> DEFAULT_DISPLAY_DATE_TIME_FORMATTER\n\t\t\telse -> DEFAULT_DISPLAY_DATE_FORMATTER\n\t\t}\n\t\tval isCertificateRevoked = verificationState is VerificationState.INVALID &&\n\t\t\t\tverificationState.revocationState is CheckRevocationState.INVALID\n\t\tval formattedDate = if (isCertificateRevoked || validUntil == null) {\n\t\t\t\"-\"\n\t\t} else {\n\t\t\tformatter?.format(validUntil)\n\t\t}\n\t\treturn formattedDate\n\t}\n\n\tprivate fun getPrefix(context: Context, validFrom: LocalDateTime?, certificateType: CertType?): String {\n\t\tif (validFrom == null) {\n\t\t\treturn \"-\"\n\t\t}\n\n\t\tval duration = Duration.between(validFrom, LocalDateTime.now())\n\t\tval hours = duration.toHours()\n\t\treturn if (certificateType == CertType.TEST && hours > 72) {\n\t\t\tcontext.getString(R.string.wallet_validity_since_more_hours_prefix)\n\t\t} else {\n\t\t\tcontext.getString(R.string.wallet_validity_since_prefix)\n\t\t}\n\t}\n\n\t/**\n\t * Format the validitySince, e.g. \"21 hours\", \"1 day\"\n\t */\n\tprivate fun getFormattedValiditySince(context: Context, validFrom: LocalDateTime?, certificateType: CertType?): String {\n\t\tif (validFrom == null) {\n\t\t\treturn \"-\"\n\t\t}\n\n\t\tval duration = Duration.between(validFrom, LocalDateTime.now())\n\t\tval days = duration.toDays()\n\t\tval hours = duration.toHours()\n\n\t\treturn if (certificateType == CertType.TEST) {\n\t\t\tif (hours == 1L) {\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_hours_singular)\n\t\t\t} else if (hours <= 72L) {\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_hours_plural).replace(\"{HOURS}\", hours.toString())\n\t\t\t} else {\n\t\t\t\t//to be grammatically correct the ago is removed for the english case\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_hours_plural).replace(\"{HOURS}\", \"72\").replace(\" ago\", \"\")\n\t\t\t}\n\t\t} else if (days == 0L) {\n\t\t\tif (hours == 1L) {\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_hours_singular)\n\t\t\t} else {\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_hours_plural).replace(\"{HOURS}\", hours.toString())\n\t\t\t}\n\t\t} else {\n\t\t\tif (days == 1L) {\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_days_singular)\n\t\t\t} else {\n\t\t\t\tcontext.getString(R.string.wallet_validity_since_days_plural).replace(\"{DAYS}\", days.toString())\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Set the text color of the certificate details (person name and date of birth)\n\t */\n\tprivate fun setCertificateDetailTextColor(@ColorRes colorId: Int) {\n\t\tval textColor = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificateDetailName.setTextColor(textColor)\n\t\tbinding.certificateDetailBirthdate.setTextColor(textColor)\n\t}\n\n\t/**\n\t * Set the info bubble backgrounds, depending if a force validation is running or not\n\t */\n\tprivate fun setInfoBubbleBackgrounds(@ColorRes infoBubbleColorId: Int, @ColorRes infoBubbleValidationColorId: Int) {\n\t\tval infoBubbleColor = ContextCompat.getColor(requireContext(), infoBubbleColorId)\n\t\tval infoBubbleValidationColor = ContextCompat.getColor(requireContext(), infoBubbleValidationColorId)\n\n\t\tif (isForceValidate) {\n\t\t\tbinding.certificateDetailInfo.animateBackgroundTintColor(infoBubbleColor)\n\t\t\tbinding.certificateDetailInfoVerificationStatus.animateBackgroundTintColor(infoBubbleValidationColor)\n\t\t\tbinding.certificateDetailInfoDescriptionGroup.animateBackgroundTintColor(infoBubbleValidationColor)\n\t\t\tbinding.certificateDetailInfoValidityGroup.animateBackgroundTintColor(infoBubbleValidationColor)\n\t\t} else {\n\t\t\tval infoBubbleColorTintList = ColorStateList.valueOf(infoBubbleColor)\n\t\t\tbinding.certificateDetailInfo.backgroundTintList = infoBubbleColorTintList\n\t\t\tbinding.certificateDetailInfoVerificationStatus.backgroundTintList = ColorStateList.valueOf(infoBubbleValidationColor)\n\t\t\tbinding.certificateDetailInfoDescriptionGroup.backgroundTintList = infoBubbleColorTintList\n\t\t\tbinding.certificateDetailInfoValidityGroup.backgroundTintList = infoBubbleColorTintList\n\t\t}\n\t}\n\n\t/**\n\t * Display the correct QR code background, icons and text when a force validation is running\n\t */\n\tprivate fun showForceValidation(\n\t\t@ColorRes solidValidationColorId: Int,\n\t\t@DrawableRes validationIconId: Int,\n\t\t@DrawableRes validationIconLargeId: Int,\n\t\tinfo: SpannableString?,\n\t\tmodeValidities: List<ModeValidity>,\n\t) {\n\t\tbinding.certificateDetailRefreshModeValidity.removeAllViews()\n\t\tbinding.certificateDetailQrCodeColor.animateBackgroundTintColor(\n\t\t\tContextCompat.getColor(\n\t\t\t\trequireContext(),\n\t\t\t\tsolidValidationColorId\n\t\t\t)\n\t\t)\n\t\tbinding.certificateDetailQrCodeStatusIcon.setImageResource(validationIconLargeId)\n\t\tbinding.certificateDetailStatusIcon.setImageResource(validationIconId)\n\n\t\tif (!binding.certificateDetailQrCodeStatusGroup.isVisible) binding.certificateDetailQrCodeStatusGroup.showAnimated()\n\n\t\tbinding.certificateDetailInfoVerificationStatus.apply {\n\t\t\ttext = info\n\t\t\tif (!isVisible) showAnimated()\n\t\t}\n\t\tshowModesForRefresh(modeValidities)\n\t}\n\n\t/**\n\t * Display the verification status info and description\n\t */\n\tprivate fun showStatusInfoAndDescription(\n\t\tdescription: SpannableString?,\n\t\tinfo: SpannableString?,\n\t\t@DrawableRes iconId: Int,\n\t\tshowRedBorder: Boolean = false,\n\t) {\n\t\tbinding.certificateDetailInfoDescription.text = description\n\t\tbinding.certificateDetailInfo.text = info\n\t\tbinding.certificateDetailStatusIcon.setImageResource(iconId)\n\t\tbinding.certificateDetailInfoRedBorder.visibility = if (showRedBorder) View.VISIBLE else View.GONE\n\t}\n\n\t/**\n\t * Reset the view after a delay from the force validation verification state to the regular verification state\n\t */\n\tprivate fun readjustStatusDelayed(\n\t\t@ColorRes infoBubbleColorId: Int,\n\t\t@DrawableRes statusIconId: Int,\n\t\tinfo: SpannableString?,\n\t\tshowRedBorder: Boolean = false,\n\t) {\n\t\thideDelayedJob?.cancel()\n\t\thideDelayedJob = viewLifecycleOwner.lifecycleScope.launch {\n\t\t\tdelay(STATUS_HIDE_DELAY)\n\t\t\tif (!isActive || !isVisible) return@launch\n\n\t\t\tval context = binding.root.context\n\n\t\t\tbinding.certificateDetailQrCodeStatusGroup.hideAnimated()\n\t\t\tbinding.certificateDetailQrCodeColor.animateBackgroundTintColor(\n\t\t\t\tContextCompat.getColor(context, android.R.color.transparent)\n\t\t\t)\n\n\t\t\tbinding.certificateDetailInfo.text = info\n\t\t\tbinding.certificateDetailInfoDescriptionGroup.animateBackgroundTintColor(\n\t\t\t\tContextCompat.getColor(context, infoBubbleColorId)\n\t\t\t)\n\t\t\tbinding.certificateDetailInfoRedBorder.visibility = if (showRedBorder) View.VISIBLE else View.GONE\n\n\t\t\tbinding.certificateDetailInfoVerificationStatus.hideAnimated()\n\t\t\tbinding.certificateDetailInfoValidityGroup.animateBackgroundTintColor(\n\t\t\t\tContextCompat.getColor(context, infoBubbleColorId)\n\t\t\t)\n\n\t\t\tbinding.certificateDetailStatusIcon.setImageResource(statusIconId)\n\n\t\t\tisForceValidate = false\n\t\t}\n\t}\n\n\tprivate fun displayQrCodeRenewalBannerIfNecessary(showRenewBanner: String?) {\n\t\tval wasRecentlyRenewed = certificatesViewModel.wasCertificateRecentlyRenewed(certificateHolder)\n\n\t\twhen {\n\t\t\twasRecentlyRenewed -> {\n\t\t\t\tbinding.certificateDetailBanners.apply {\n\t\t\t\t\tqrCodeRenewalBanner.isVisible = true\n\t\t\t\t\tqrCodeRenewalBannerDismiss.isVisible = true\n\n\t\t\t\t\tqrCodeRenewalBannerTitle.setText(R.string.wallet_certificate_renewal_successful_bubble_title)\n\t\t\t\t\tqrCodeRenewalBannerText.setText(R.string.wallet_certificate_renewal_successful_bubble_text)\n\t\t\t\t\tqrCodeRenewalBannerMoreInfo.setText(R.string.wallet_certificate_renewal_successful_bubble_button)\n\t\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.greenish)\n\t\t\t\t\tqrCodeRenewalBanner.backgroundTintList = ColorStateList.valueOf(backgroundColor)\n\n\t\t\t\t\tqrCodeRenewalBannerDismiss.setOnClickListener {\n\t\t\t\t\t\tcertificatesViewModel.dismissRecentlyRenewedBanner(certificateHolder)\n\t\t\t\t\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\t\t\t\t\tqrCodeRenewalBanner.isVisible = false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tshowRenewBanner != null -> {\n\t\t\t\tbinding.certificateDetailBanners.apply {\n\t\t\t\t\tqrCodeRenewalBanner.isVisible = true\n\t\t\t\t\tqrCodeRenewalBannerDismiss.isVisible = false\n\n\t\t\t\t\tqrCodeRenewalBannerTitle.setText(R.string.wallet_certificate_renewal_required_bubble_title)\n\t\t\t\t\tqrCodeRenewalBannerText.setText(R.string.wallet_certificate_renewal_required_bubble_text)\n\t\t\t\t\tqrCodeRenewalBannerMoreInfo.setText(R.string.wallet_certificate_renewal_required_bubble_button)\n\t\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.redish)\n\t\t\t\t\tqrCodeRenewalBanner.backgroundTintList = ColorStateList.valueOf(backgroundColor)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tbinding.certificateDetailBanners.qrCodeRenewalBanner.isVisible = false\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/detail/CertificateDetailItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.detail\n\nimport android.content.ClipData\nimport android.content.ClipboardManager\nimport android.content.Context\nimport android.content.res.Configuration\nimport android.view.View\nimport android.widget.TextView\nimport android.widget.Toast\nimport androidx.annotation.StringRes\nimport androidx.core.view.isVisible\nimport ch.admin.bag.covidcertificate.wallet.R\nimport java.util.*\n\nsealed class CertificateDetailItem {\n\tabstract fun bindView(view: View)\n}\n\ndata class TitleItem(@StringRes val titleResource: Int, val showEnglishVersionForLabels: Boolean) : CertificateDetailItem() {\n\tcompanion object {\n\t\tconst val layoutResource = R.layout.item_detail_title\n\t}\n\n\toverride fun bindView(view: View) {\n\t\tview.findViewById<TextView>(R.id.item_title).setText(titleResource)\n\t\tval englishLabel = view.findViewById<TextView>(R.id.item_title_english)\n\t\tenglishLabel.isVisible = showEnglishVersionForLabels\n\t\tenglishLabel.text = getEnglishTranslation(view.context, titleResource)\n\t}\n}\n\ndata class ValueItem(@StringRes val labelResource: Int, val value: String, val showEnglishVersionForLabels: Boolean) :\n\tCertificateDetailItem() {\n\tcompanion object {\n\t\tconst val layoutResource = R.layout.item_detail_value\n\t}\n\n\toverride fun bindView(view: View) {\n\t\tview.findViewById<TextView>(R.id.item_value_label).setText(labelResource)\n\t\tview.findViewById<TextView>(R.id.item_value_value).text = value\n\t\tval englishLabel = view.findViewById<TextView>(R.id.item_value_label_english)\n\t\tenglishLabel.isVisible = showEnglishVersionForLabels\n\t\tenglishLabel.text = getEnglishTranslation(view.context, labelResource)\n\t}\n}\n\ndata class UvciItem(val uvci: String, val showEnglishVersionForLabels: Boolean) : CertificateDetailItem() {\n\tcompanion object {\n\t\tconst val layoutResource = R.layout.item_detail_value\n\t}\n\n\toverride fun bindView(view: View) {\n\t\tval labelResource = R.string.wallet_certificate_identifier\n\t\tview.findViewById<TextView>(R.id.item_value_label).setText(labelResource)\n\t\tview.findViewById<TextView>(R.id.item_value_value).text = uvci\n\t\tval englishLabel = view.findViewById<TextView>(R.id.item_value_label_english)\n\t\tenglishLabel.isVisible = showEnglishVersionForLabels\n\t\tenglishLabel.text = getEnglishTranslation(view.context, labelResource)\n\n\t\tview.setOnClickListener {\n\t\t\tval context = view.context\n\t\t\tval clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager\n\t\t\tval clip = ClipData.newPlainText(context.getString(R.string.wallet_certificate_identifier), uvci)\n\t\t\tclipboardManager.setPrimaryClip(clip)\n\t\t\tToast.makeText(context, R.string.wallet_uvci_copied, Toast.LENGTH_SHORT).show()\n\t\t}\n\t}\n}\n\ndata class ValueItemWithoutLabel(val value: String, val isGrey: Boolean = false) : CertificateDetailItem() {\n\tcompanion object {\n\t\tconst val layoutResource = R.layout.item_detail_value_without_label\n\t}\n\n\toverride fun bindView(view: View) {\n\t\tval valueText = view.findViewById<TextView>(R.id.item_value_text)\n\t\tif (isGrey) {\n\t\t\tvalueText.setTextColor(view.context.getColor(R.color.grey))\n\t\t} else {\n\t\t\tvalueText.setTextColor(view.context.getColor(R.color.black))\n\t\t}\n\t\tvalueText.text = value\n\t}\n}\n\nobject DividerItem : CertificateDetailItem() {\n\tconst val layoutResource = R.layout.item_detail_divider\n\toverride fun bindView(view: View) {}\n}\n\nfun getEnglishTranslation(context: Context, @StringRes res: Int): String {\n\tval config = Configuration(context.resources.configuration)\n\tconfig.setLocale(Locale.ENGLISH)\n\treturn context.createConfigurationContext(config).getText(res).toString()\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/detail/CertificateDetailItemListBuilder.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.detail\n\nimport android.content.Context\nimport androidx.annotation.StringRes\nimport ch.admin.bag.covidcertificate.common.util.LocaleUtil\nimport ch.admin.bag.covidcertificate.sdk.android.data.AcceptedTestProvider\nimport ch.admin.bag.covidcertificate.sdk.android.data.AcceptedVaccineProvider\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.prettyPrint\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.prettyPrintIsoDateTime\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.*\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.DccCert\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.TestEntry\nimport ch.admin.bag.covidcertificate.wallet.R\n\nclass CertificateDetailItemListBuilder(\n\tval context: Context,\n\tval certificateHolder: CertificateHolder,\n\tval isDetailScreen: Boolean,\n\tval showEnglishVersion: Boolean = true\n) {\n\tprivate val showEnglishVersionForLabels = showEnglishVersion && LocaleUtil.isSystemLangNotEnglish(context)\n\n\tfun buildAll(): List<CertificateDetailItem> {\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tdetailItems.addAll(buildVaccinationEntries())\n\t\tdetailItems.addAll(buildRecoveryEntries())\n\t\tdetailItems.addAll(buildTestEntries())\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildVaccinationEntries(): List<CertificateDetailItem> {\n\t\tval dccCert = certificateHolder.certificate as? DccCert ?: return emptyList()\n\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tval vaccinations = dccCert.vaccinations\n\n\t\tif (vaccinations.isNullOrEmpty()) {\n\t\t\treturn detailItems\n\t\t}\n\n\t\tval firstVaccine = vaccinations.first()\n\t\tif (firstVaccine.isNotFullyProtected()) {\n\t\t\tdetailItems.add(TitleItem(R.string.wallet_certificate_type_incomplete_vaccine, showEnglishVersionForLabels))\n\t\t} else {\n\t\t\tdetailItems.add(TitleItem(R.string.covid_certificate_vaccination_title, showEnglishVersionForLabels))\n\t\t}\n\n\t\tfor (vaccinationEntry in vaccinations) {\n\t\t\tdetailItems.add(DividerItem)\n\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_impfdosis_title, vaccinationEntry.getNumberOverTotalDose(),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\n\t\t\t// Vaccine data\n\t\t\tif (vaccinationEntry.isTargetDiseaseCorrect()) {\n\t\t\t\tdetailItems.add(\n\t\t\t\t\tValueItem(\n\t\t\t\t\t\tR.string.wallet_certificate_target_disease_title,\n\t\t\t\t\t\tcontext.getString(R.string.target_disease_name),\n\t\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t}\n\t\t\tval acceptedTestProvider = AcceptedVaccineProvider.getInstance(context)\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_vaccine_prophylaxis,\n\t\t\t\t\tacceptedTestProvider.getProphylaxis(vaccinationEntry), showEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_impfstoff_product_name_title,\n\t\t\t\t\tacceptedTestProvider.getVaccineName(vaccinationEntry), showEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_impfstoff_holder,\n\t\t\t\t\tacceptedTestProvider.getAuthHolder(vaccinationEntry), showEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\n\t\t\t// Vaccination date + country\n\t\t\tdetailItems.add(DividerItem)\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_vaccination_date_title,\n\t\t\t\t\tvaccinationEntry.vaccinationDate.prettyPrintIsoDateTime(DEFAULT_DISPLAY_DATE_FORMATTER),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_vaccination_country_title,\n\t\t\t\t\tvaccinationEntry.getVaccinationCountry(showEnglishVersionForLabels),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\n\t\t\t// Issuer\n\t\t\tdetailItems.add(DividerItem)\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_vaccination_issuer_title,\n\t\t\t\t\tvaccinationEntry.getIssuer(), showEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t\tdetailItems.add(\n\t\t\t\tUvciItem(\n\t\t\t\t\tvaccinationEntry.getCertificateIdentifier(),\n\t\t\t\t\tfalse\n\t\t\t\t)\n\t\t\t)\n\n\t\t\tcertificateHolder.issuedAt?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\t\tval issuerTextId = if (vaccinationEntry.isNotFullyProtected()) {\n\t\t\t\t\tR.string.wallet_certificate_evidence_creation_date\n\t\t\t\t} else {\n\t\t\t\t\tR.string.wallet_certificate_date\n\t\t\t\t}\n\t\t\t\tdetailItems.addAll(getIssuedAtLabels(issuerTextId, dateString))\n\t\t\t}\n\n\t\t\tcertificateHolder.expirationTime?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\t\tdetailItems.addAll(getExpiresAtLabels(R.string.wallet_certificate_qr_code_expiration_date, dateString))\n\t\t\t}\n\n\t\t\tif (isDetailScreen) {\n\t\t\t\tdetailItems.add(\n\t\t\t\t\tValueItemWithoutLabel(context.getString(R.string.wallet_certificate_detail_date_format_info), true)\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildRecoveryEntries(): List<CertificateDetailItem> {\n\t\tval dccCert = certificateHolder.certificate as? DccCert ?: return emptyList()\n\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tval recoveries = dccCert.pastInfections\n\n\t\tif (recoveries.isNullOrEmpty()) {\n\t\t\treturn detailItems\n\t\t}\n\n\t\tdetailItems.add(TitleItem(R.string.covid_certificate_recovery_title, showEnglishVersionForLabels))\n\n\t\tfor (recoveryEntry in recoveries) {\n\t\t\tdetailItems.add(DividerItem)\n\t\t\tif (recoveryEntry.isTargetDiseaseCorrect()) {\n\t\t\t\tdetailItems.add(\n\t\t\t\t\tValueItem(\n\t\t\t\t\t\tR.string.wallet_certificate_target_disease_title,\n\t\t\t\t\t\tcontext.getString(R.string.target_disease_name),\n\t\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// Recovery dates + country\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_recovery_first_positiv_result,\n\t\t\t\t\trecoveryEntry.dateFirstPositiveTest.prettyPrintIsoDateTime(DEFAULT_DISPLAY_DATE_FORMATTER),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_test_land,\n\t\t\t\t\trecoveryEntry.getRecoveryCountry(showEnglishVersionForLabels), showEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\n\t\t\t// Issuer\n\t\t\tdetailItems.add(DividerItem)\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_vaccination_issuer_title,\n\t\t\t\t\trecoveryEntry.getIssuer(),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t\tdetailItems.add(\n\t\t\t\tUvciItem(\n\t\t\t\t\trecoveryEntry.getCertificateIdentifier(),\n\t\t\t\t\tfalse\n\t\t\t\t)\n\t\t\t)\n\n\t\t\tcertificateHolder.issuedAt?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\t\tdetailItems.addAll(getIssuedAtLabels(R.string.wallet_certificate_date, dateString))\n\t\t\t}\n\n\t\t\tcertificateHolder.expirationTime?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\t\tdetailItems.addAll(getExpiresAtLabels(R.string.wallet_certificate_qr_code_expiration_date, dateString))\n\t\t\t}\n\n\t\t\tif (isDetailScreen) {\n\t\t\t\tdetailItems.add(\n\t\t\t\t\tValueItemWithoutLabel(context.getString(R.string.wallet_certificate_detail_date_format_info), true)\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildTestEntries(): List<CertificateDetailItem> {\n\t\tval dccCert = certificateHolder.certificate as? DccCert ?: return emptyList()\n\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tval tests = dccCert.tests\n\n\t\tif (tests.isNullOrEmpty()) {\n\t\t\treturn detailItems\n\t\t}\n\n\t\twhen {\n\t\t\ttests[0].isSerologicalTest() -> {\n\t\t\t\tdetailItems.add(TitleItem(R.string.covid_certificate_sero_positiv_test_title, showEnglishVersionForLabels))\n\t\t\t}\n\t\t\ttests[0].isPositiveRatTest() -> {\n\t\t\t\tdetailItems.add(TitleItem(R.string.covid_certificate_antigen_positive_test, showEnglishVersionForLabels))\n\t\t\t}\n\t\t\ttests[0].isChAusnahmeTest() -> {\n\t\t\t\tdetailItems.add(TitleItem(R.string.covid_certificate_ch_ausnahme_test_title, showEnglishVersionForLabels))\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tdetailItems.add(TitleItem(R.string.covid_certificate_test_title, showEnglishVersionForLabels))\n\t\t\t}\n\t\t}\n\n\t\tfor (testEntry in tests) {\n\t\t\tdetailItems.add(DividerItem)\n\t\t\twhen {\n\t\t\t\ttestEntry.isSerologicalTest() -> {\n\t\t\t\t\tdetailItems.addAll(buildTestEntriesForSeroPositiv(testEntry = testEntry))\n\t\t\t\t}\n\t\t\t\ttestEntry.isPositiveRatTest() -> {\n\t\t\t\t\tdetailItems.addAll(buildTestEntriesForPositiveRatTest(testEntry))\n\t\t\t\t}\n\t\t\t\ttestEntry.isChAusnahmeTest() -> {\n\t\t\t\t\tdetailItems.addAll(buildTestEntriesForChAusnahmeTest(testEntry))\n\t\t\t\t}\n\t\t\t\telse -> {\n\t\t\t\t\tdetailItems.addAll(buildTestEntriesForPCRAndNegativeRAT(testEntry = testEntry))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildTestEntriesForChAusnahmeTest(testEntry: TestEntry): Collection<CertificateDetailItem> {\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tif (testEntry.isTargetDiseaseCorrect()) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_target_disease_title,\n\t\t\t\t\tcontext.getString(R.string.target_disease_name),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\ttestEntry.getFormattedSampleDate(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { sampleDate ->\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_ausnahme_test_attest_start_date,\n\t\t\t\t\tsampleDate,\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\ttestEntry.getTestCenter()?.let { testCenter ->\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_ausnahme_responsible_issuer,\n\t\t\t\t\ttestCenter,\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_ausnahme_issued_country,\n\t\t\t\ttestEntry.getTestCountry(showEnglishVersionForLabels), showEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\t\t// Issuer\n\t\tdetailItems.add(DividerItem)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_vaccination_issuer_title,\n\t\t\t\ttestEntry.getIssuer(),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\t\tdetailItems.add(\n\t\t\tUvciItem(\n\t\t\t\ttestEntry.getCertificateIdentifier(),\n\t\t\t\tfalse\n\t\t\t)\n\t\t)\n\n\t\tcertificateHolder.issuedAt?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\tdetailItems.addAll(getIssuedAtLabels(R.string.wallet_certificate_date, dateString))\n\t\t}\n\n\t\tif (isDetailScreen) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItemWithoutLabel(context.getString(R.string.wallet_certificate_detail_date_format_info), true)\n\t\t\t)\n\t\t}\n\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildTestEntriesForSeroPositiv(testEntry: TestEntry): Collection<CertificateDetailItem> {\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tif (testEntry.isTargetDiseaseCorrect()) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_target_disease_title,\n\t\t\t\t\tcontext.getString(R.string.target_disease_name),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\tval resultStringId =\n\t\t\tif (testEntry.isNegative()) R.string.wallet_certificate_test_result_negativ else R.string.covid_certificate_sero_positiv_test_befund_value\n\t\tvar value = context.getString(resultStringId)\n\t\tif (showEnglishVersionForLabels) {\n\t\t\tvalue = \"$value\\n${getEnglishTranslation(context, resultStringId)}\"\n\t\t}\n\t\tdetailItems.add(ValueItem(R.string.covid_certificate_sero_positiv_test_befund_label, value, showEnglishVersionForLabels))\n\n\t\tval acceptedTestProvider = AcceptedTestProvider.getInstance(context)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_test_type,\n\t\t\t\tacceptedTestProvider.getTestType(testEntry),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\n\t\tdetailItems.add(DividerItem)\n\t\ttestEntry.getFormattedSampleDate(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { sampleDate ->\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_test_sample_date_title,\n\t\t\t\t\tsampleDate,\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\ttestEntry.getTestCenter()?.let { testCenter ->\n\t\t\tdetailItems.add(ValueItem(R.string.wallet_certificate_test_done_by, testCenter, showEnglishVersionForLabels))\n\t\t}\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_test_land,\n\t\t\t\ttestEntry.getTestCountry(showEnglishVersionForLabels), showEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\t\t// Issuer\n\t\tdetailItems.add(DividerItem)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_vaccination_issuer_title,\n\t\t\t\ttestEntry.getIssuer(),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\t\tdetailItems.add(\n\t\t\tUvciItem(\n\t\t\t\ttestEntry.getCertificateIdentifier(),\n\t\t\t\tfalse\n\t\t\t)\n\t\t)\n\n\t\tcertificateHolder.issuedAt?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\tdetailItems.addAll(getIssuedAtLabels(R.string.wallet_certificate_date, dateString))\n\t\t}\n\n\t\tif (isDetailScreen) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItemWithoutLabel(context.getString(R.string.wallet_certificate_detail_date_format_info), true)\n\t\t\t)\n\t\t}\n\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildTestEntriesForPositiveRatTest(testEntry: TestEntry): Collection<CertificateDetailItem> {\n\t\t// Test result\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tif (testEntry.isTargetDiseaseCorrect()) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_target_disease_title,\n\t\t\t\t\tcontext.getString(R.string.target_disease_name),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\n\t\t// Test details\n\t\tval acceptedTestProvider = AcceptedTestProvider.getInstance(context)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_test_type,\n\t\t\t\tacceptedTestProvider.getTestType(testEntry),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\t\tacceptedTestProvider.getManufacturesAndNameLabelIfExists(testEntry)?.let {\n\t\t\tdetailItems.add(ValueItem(R.string.wallet_certificate_test_holder_and_name, it, showEnglishVersionForLabels))\n\t\t}\n\n\t\t// Test dates + country\n\t\tdetailItems.add(DividerItem)\n\t\ttestEntry.getFormattedSampleDate(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { sampleDate ->\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_antigen_positive_date,\n\t\t\t\t\tsampleDate,\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\ttestEntry.getTestCenter()?.let { testCenter ->\n\t\t\tdetailItems.add(ValueItem(R.string.wallet_certificate_test_done_by, testCenter, showEnglishVersionForLabels))\n\t\t}\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_test_land,\n\t\t\t\ttestEntry.getTestCountry(showEnglishVersionForLabels), showEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\t\t// Issuer\n\t\tdetailItems.add(DividerItem)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_vaccination_issuer_title,\n\t\t\t\ttestEntry.getIssuer(),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\t\tdetailItems.add(\n\t\t\tUvciItem(\n\t\t\t\ttestEntry.getCertificateIdentifier(),\n\t\t\t\tfalse\n\t\t\t)\n\t\t)\n\n\t\tcertificateHolder.issuedAt?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\tdetailItems.addAll(getIssuedAtLabels(R.string.wallet_certificate_date, dateString))\n\t\t}\n\n\t\tif (isDetailScreen) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItemWithoutLabel(context.getString(R.string.wallet_certificate_detail_date_format_info), true)\n\t\t\t)\n\t\t}\n\n\t\treturn detailItems\n\t}\n\n\tprivate fun buildTestEntriesForPCRAndNegativeRAT(testEntry: TestEntry): Collection<CertificateDetailItem> {\n\t\t// Test result\n\t\tval detailItems = ArrayList<CertificateDetailItem>()\n\t\tif (testEntry.isTargetDiseaseCorrect()) {\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_target_disease_title,\n\t\t\t\t\tcontext.getString(R.string.target_disease_name),\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\tval resultStringId =\n\t\t\tif (testEntry.isNegative()) R.string.wallet_certificate_test_result_negativ else R.string.wallet_certificate_test_result_positiv\n\t\tvar value = context.getString(resultStringId)\n\t\tif (showEnglishVersionForLabels) {\n\t\t\tvalue = \"$value\\n${getEnglishTranslation(context, resultStringId)}\"\n\t\t}\n\t\tdetailItems.add(ValueItem(R.string.wallet_certificate_test_result_title, value, showEnglishVersionForLabels))\n\n\t\t// Test details\n\t\tval acceptedTestProvider = AcceptedTestProvider.getInstance(context)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_test_type,\n\t\t\t\tacceptedTestProvider.getTestType(testEntry),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\t\tacceptedTestProvider.getManufacturesAndNameLabelIfExists(testEntry)?.let {\n\t\t\tdetailItems.add(ValueItem(R.string.wallet_certificate_test_holder_and_name, it, showEnglishVersionForLabels))\n\t\t}\n\n\t\t// Test dates + country\n\t\tdetailItems.add(DividerItem)\n\t\ttestEntry.getFormattedSampleDate(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { sampleDate ->\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_test_sample_date_title,\n\t\t\t\t\tsampleDate,\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\t\ttestEntry.getFormattedResultDate(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { resultDate ->\n\t\t\tdetailItems.add(\n\t\t\t\tValueItem(\n\t\t\t\t\tR.string.wallet_certificate_test_result_date_title,\n\t\t\t\t\tresultDate,\n\t\t\t\t\tshowEnglishVersionForLabels\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\ttestEntry.getTestCenter()?.let { testCenter ->\n\t\t\tdetailItems.add(ValueItem(R.string.wallet_certificate_test_done_by, testCenter, showEnglishVersionForLabels))\n\t\t}\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_test_land,\n\t\t\t\ttestEntry.getTestCountry(showEnglishVersionForLabels), showEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\n\t\t// Issuer\n\t\tdetailItems.add(DividerItem)\n\t\tdetailItems.add(\n\t\t\tValueItem(\n\t\t\t\tR.string.wallet_certificate_vaccination_issuer_title,\n\t\t\t\ttestEntry.getIssuer(),\n\t\t\t\tshowEnglishVersionForLabels\n\t\t\t)\n\t\t)\n\t\tdetailItems.add(\n\t\t\tUvciItem(\n\t\t\t\ttestEntry.getCertificateIdentifier(),\n\t\t\t\tfalse\n\t\t\t)\n\t\t)\n\n\t\tcertificateHolder.issuedAt?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)?.let { dateString ->\n\t\t\tdetailItems.addAll(getIssuedAtLabels(R.string.wallet_certificate_date, dateString))\n\t\t}\n\t\treturn detailItems\n\t}\n\n\tprivate fun getIssuedAtLabels(@StringRes issuerText: Int, dateString: String): List<ValueItemWithoutLabel> {\n\t\tval items = mutableListOf<ValueItemWithoutLabel>()\n\t\tval dateText = context.getString(issuerText).replace(\"{DATE}\", dateString)\n\t\titems.add(ValueItemWithoutLabel(dateText))\n\t\tif (showEnglishVersionForLabels) {\n\t\t\tval dateTextEnglish = getEnglishTranslation(context, issuerText).replace(\"{DATE}\", dateString)\n\t\t\titems.add(ValueItemWithoutLabel(dateTextEnglish, true))\n\t\t}\n\t\treturn items\n\t}\n\n\tprivate fun getExpiresAtLabels(@StringRes expiresTextId: Int, dateString: String): List<ValueItemWithoutLabel> {\n\t\tval dateTextEnglish = getEnglishTranslation(context, expiresTextId).replace(\"{DATE}\", dateString)\n\t\treturn listOf(ValueItemWithoutLabel(dateTextEnglish, true))\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/detail/CertificateDetailViewHolder.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.detail\n\nimport android.view.View\nimport androidx.recyclerview.widget.RecyclerView\n\nclass CertificateDetailViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {\n\tfun bindItem(item: CertificateDetailItem) = item.bindView(itemView)\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/dialog/CertificateBannerInfoDialogFragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.dialog\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.DialogFragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.config.EolBannerInfoModel\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.databinding.DialogFragmentCertificateBannerInfoBinding\n\nclass CertificateBannerInfoDialogFragment : DialogFragment() {\n\n\tcompanion object {\n\t\tprivate const val ARG_EOL_BANNER_INFO = \"ARG_EOL_BANNER_INFO\"\n\n\t\tfun newInstance(info: EolBannerInfoModel) = CertificateBannerInfoDialogFragment().apply {\n\t\t\targuments = bundleOf(ARG_EOL_BANNER_INFO to info)\n\t\t}\n\t}\n\n\tprivate var _binding: DialogFragmentCertificateBannerInfoBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var info: EolBannerInfoModel\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_ChooseModeDialog)\n\t\tinfo = requireArguments().getSerializable(ARG_EOL_BANNER_INFO) as EolBannerInfoModel\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = DialogFragmentCertificateBannerInfoBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tbinding.apply {\n\t\t\ttitle.text = info.popupTitle\n\t\t\ttext1.isVisible = info.popupText1 != null\n\t\t\ttext1.text = info.popupText1\n\t\t\tfatText.isVisible = info.popupBoldText != null\n\t\t\tfatText.text = info.popupBoldText\n\t\t\ttext2.isVisible = info.popupText2 != null\n\t\t\ttext2.text = info.popupText2\n\t\t\tlearnMoreButton.text = info.popupLinkText\n\n\t\t\tlearnMoreButton.setOnClickListener {\n\t\t\t\tUrlUtil.openUrl(requireContext(), info.popupLinkUrl)\n\t\t\t}\n\n\t\t\tdialogCloseButton.setOnClickListener {\n\t\t\t\tif (this@CertificateBannerInfoDialogFragment.isVisible) dismiss()\n\t\t\t}\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/dialog/ModeInfoDialogFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.dialog\n\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.content.ContextCompat\nimport androidx.fragment.app.DialogFragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.config.WalletModeModel\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.ModeValidity\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.DialogFragmentModeInfoBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemModeListInfoBinding\nimport ch.admin.bag.covidcertificate.wallet.util.BitmapUtil.getHumanReadableName\nimport ch.admin.bag.covidcertificate.wallet.util.BitmapUtil.textAsBitmap\nimport ch.admin.bag.covidcertificate.wallet.util.isInvalid\nimport ch.admin.bag.covidcertificate.wallet.util.isPartiallyValid\nimport ch.admin.bag.covidcertificate.wallet.util.isValid\n\nclass ModeInfoDialogFragment : DialogFragment() {\n\n\tcompanion object {\n\n\t\tprivate const val ARG_MODE_VALIDITIES = \"ARG_MODE_VALIDITIES\"\n\n\t\tfun newInstance(modeValidities: ArrayList<ModeValidity>): ModeInfoDialogFragment {\n\t\t\tval fragment = ModeInfoDialogFragment()\n\t\t\tval arguments = Bundle()\n\t\t\targuments.putSerializable(ARG_MODE_VALIDITIES, modeValidities)\n\t\t\tfragment.arguments = arguments\n\t\t\treturn fragment\n\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate lateinit var modeValidities: List<ModeValidity>\n\tprivate var _binding: DialogFragmentModeInfoBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_InfoDialog)\n\t\tmodeValidities = requireArguments().getSerializable(ARG_MODE_VALIDITIES) as ArrayList<ModeValidity>\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = DialogFragmentModeInfoBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsetupInfo()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupInfo() {\n\t\tval configLiveData: ConfigModel? = certificatesViewModel.configLiveData.value\n\t\tval checkedModes: Map<String, WalletModeModel>? = configLiveData?.getCheckModes(getString(R.string.language_key))\n\t\tbinding.modeInfoTitle.text = configLiveData?.getInfoModeTitle(getString(R.string.language_key))\n\t\tbinding.modeInfoList.removeAllViews()\n\n\t\tfor (modeValidity in modeValidities) {\n\t\t\tval modeValidityState = modeValidity.modeValidityState\n\t\t\tval itemBinding = ItemModeListInfoBinding.inflate(layoutInflater, binding.modeInfoList, true)\n\t\t\tval imageView = itemBinding.modeListInfoImage\n\t\t\tval walletModeModel: WalletModeModel? = checkedModes?.get(modeValidity.mode)\n\t\t\tval resOk = requireContext().getDrawableIdentifier(walletModeModel?.ok?.iconAndroid ?: \"\")\n\t\t\tval resNotOk = requireContext().getDrawableIdentifier(walletModeModel?.notOk?.iconAndroid ?: \"\")\n\n\t\t\tif (modeValidityState.isValid()) {\n\t\t\t\tif (resOk != 0) {\n\t\t\t\t\timageView.setImageResource(resOk)\n\t\t\t\t\timageView.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.blue))\n\t\t\t\t} else {\n\t\t\t\t\tval bitmap =\n\t\t\t\t\t\ttextAsBitmap(\n\t\t\t\t\t\t\trequireContext(),\n\t\t\t\t\t\t\tgetHumanReadableName(modeValidity.mode),\n\t\t\t\t\t\t\tresources.getDimensionPixelSize(ch.admin.bag.covidcertificate.wallet.R.dimen.text_size_small),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.blue),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.white)\n\t\t\t\t\t\t)\n\t\t\t\t\timageView.setImageBitmap(bitmap)\n\t\t\t\t}\n\t\t\t\titemBinding.modeListInfoText.text = walletModeModel?.ok?.text\n\t\t\t} else if (modeValidityState.isPartiallyValid() || modeValidityState.isInvalid()) {\n\t\t\t\tif (resNotOk != 0) {\n\t\t\t\t\timageView.setImageResource(resNotOk)\n\t\t\t\t\timageView.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.grey))\n\t\t\t\t} else {\n\t\t\t\t\tval bitmap =\n\t\t\t\t\t\ttextAsBitmap(\n\t\t\t\t\t\t\trequireContext(),\n\t\t\t\t\t\t\tgetHumanReadableName(modeValidity.mode),\n\t\t\t\t\t\t\tresources.getDimensionPixelSize(ch.admin.bag.covidcertificate.wallet.R.dimen.text_size_small),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.blue),\n\t\t\t\t\t\t\tContextCompat.getColor(requireContext(), R.color.white),\n\t\t\t\t\t\t\tisNotOK = true\n\t\t\t\t\t\t)\n\t\t\t\t\timageView.setImageBitmap(bitmap)\n\t\t\t\t}\n\t\t\t\titemBinding.modeListInfoText.text = walletModeModel?.notOk?.text\n\t\t\t}\n\t\t}\n\n\t\tbinding.infoDialogCloseButton.setOnClickListener {\n\t\t\tif (this@ModeInfoDialogFragment.isVisible) dismiss()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/dialog/RefreshButtonInfoDialogFragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.dialog\n\nimport android.content.Intent\nimport android.content.pm.PackageManager\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.os.bundleOf\nimport androidx.fragment.app.DialogFragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.config.RefreshButtonInfoModel\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.databinding.DialogFragmentRefreshButtonInfoBinding\n\nclass RefreshButtonInfoDialogFragment : DialogFragment() {\n\n\tcompanion object {\n\t\tprivate const val ARG_REFRESH_BUTTON_INFO = \"ARG_REFRESH_BUTTON_INFO\"\n\n\t\tfun newInstance(info: RefreshButtonInfoModel) = RefreshButtonInfoDialogFragment().apply {\n\t\t\targuments = bundleOf(ARG_REFRESH_BUTTON_INFO to info)\n\t\t}\n\t}\n\n\tprivate var _binding: DialogFragmentRefreshButtonInfoBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var info: RefreshButtonInfoModel\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_ChooseModeDialog)\n\t\tinfo = requireArguments().getSerializable(ARG_REFRESH_BUTTON_INFO) as RefreshButtonInfoModel\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = DialogFragmentRefreshButtonInfoBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tbinding.apply {\n\t\t\ttitle.text = info.title\n\t\t\ttext1.text = info.text1\n\t\t\ttext2.text = info.text2\n\t\t\tfatTitle.text = info.fatTitle\n\t\t\ttext3.text = info.text3\n\t\t\tlearnMoreButton.text = info.linkText\n\n\t\t\tcovidCheckAppButton.setOnClickListener {\n\t\t\t\tval checkAppIntent = getCheckAppIntent()\n\t\t\t\tif (checkAppIntent != null) {\n\t\t\t\t\tstartActivity(checkAppIntent)\n\t\t\t\t} else {\n\t\t\t\t\tUrlUtil.openUrl(requireContext(), getString(R.string.verifier_android_app_google_play_store_url))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlearnMoreButton.setOnClickListener {\n\t\t\t\tUrlUtil.openUrl(requireContext(), info.linkUrl)\n\t\t\t}\n\n\t\t\tdialogCloseButton.setOnClickListener {\n\t\t\t\tif (this@RefreshButtonInfoDialogFragment.isVisible) dismiss()\n\t\t\t}\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun getCheckAppIntent(): Intent? {\n\t\tvar checkAppPackageName = \"ch.admin.bag.covidcertificate.verifier\"\n\t\tif (BuildConfig.FLAVOR == \"dev\" || BuildConfig.FLAVOR == \"abn\") {\n\t\t\tcheckAppPackageName += \".${BuildConfig.FLAVOR}\"\n\t\t}\n\n\t\tval packageManager = requireContext().packageManager\n\t\tval intent = packageManager.getLaunchIntentForPackage(checkAppPackageName) ?: return null\n\t\tval list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)\n\t\treturn if (list.isNotEmpty()) {\n\t\t\treturn intent\n\t\t} else {\n\t\t\tnull\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/faq/WalletFaqFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.faq\n\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.config.ConfigViewModel\nimport ch.admin.bag.covidcertificate.common.faq.FaqFragment\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\n\nclass WalletFaqFragment : FaqFragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): WalletFaqFragment = WalletFaqFragment()\n\t}\n\n\tprivate val configViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\toverride fun setupFaqProvider() {\n\t\ttoolbar.setTitle(R.string.wallet_faq_header)\n\t\tconfigViewModel.configLiveData.observe(viewLifecycleOwner, { config ->\n\t\t\tval languageKey = getString(R.string.language_key)\n\t\t\tsetupFaqList(config.generateFaqItems(languageKey))\n\t\t})\n\t\tconfigViewModel.loadConfig(BuildConfig.BASE_URL, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TIME.toString())\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/HomeFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen\n\nimport android.content.ActivityNotFoundException\nimport android.content.Intent\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport android.widget.Toast\nimport androidx.activity.result.ActivityResult\nimport androidx.activity.result.contract.ActivityResultContracts\nimport androidx.appcompat.app.AlertDialog\nimport androidx.appcompat.app.AppCompatActivity\nimport androidx.core.view.isVisible\nimport androidx.core.view.postDelayed\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.recyclerview.widget.RecyclerView\nimport androidx.viewpager2.widget.ViewPager2\nimport ch.admin.bag.covidcertificate.common.config.InfoBoxModel\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\nimport ch.admin.bag.covidcertificate.common.dialog.InfoDialogFragment\nimport ch.admin.bag.covidcertificate.common.html.BuildInfo\nimport ch.admin.bag.covidcertificate.common.html.ImprintFragment\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.util.HorizontalMarginItemDecoration\nimport ch.admin.bag.covidcertificate.common.views.hideAnimated\nimport ch.admin.bag.covidcertificate.common.views.rotate\nimport ch.admin.bag.covidcertificate.common.views.showAnimated\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.DeeplinkViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.add.CertificateAddFragment\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentHomeBinding\nimport ch.admin.bag.covidcertificate.wallet.debug.WalletDebugFragment\nimport ch.admin.bag.covidcertificate.wallet.detail.CertificateDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.faq.WalletFaqFragment\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.CertificatesPagerAdapter\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.WalletItem\nimport ch.admin.bag.covidcertificate.wallet.light.CertificateLightDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.list.CertificatesListFragment\nimport ch.admin.bag.covidcertificate.wallet.pdf.PdfImportState\nimport ch.admin.bag.covidcertificate.wallet.pdf.PdfViewModel\nimport ch.admin.bag.covidcertificate.wallet.qr.WalletQrScanFragment\nimport ch.admin.bag.covidcertificate.wallet.transfercode.TransferCodeDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.transfercode.TransferCodeIntroFragment\nimport ch.admin.bag.covidcertificate.wallet.vaccination.appointment.VaccinationAppointmentFragment\nimport com.google.android.material.tabs.TabLayoutMediator\nimport java.util.concurrent.atomic.AtomicLong\n\nclass HomeFragment : Fragment() {\n\n\tcompanion object {\n\n\t\tfun newInstance(): HomeFragment {\n\t\t\treturn HomeFragment()\n\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val deeplinkViewModel by activityViewModels<DeeplinkViewModel>()\n\tprivate val pdfViewModel by activityViewModels<PdfViewModel>()\n\n\tprivate var _binding: FragmentHomeBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificatesAdapter: CertificatesPagerAdapter\n\n\tprivate var isAddOptionsShowing = false\n\n\tprivate val filePickerLauncher =\n\t\tregisterForActivityResult(ActivityResultContracts.StartActivityForResult()) { activityResult: ActivityResult ->\n\t\t\tif (activityResult.resultCode == AppCompatActivity.RESULT_OK) {\n\t\t\t\tactivityResult.data?.data?.let { uri ->\n\t\t\t\t\tpdfViewModel.importPdf(uri)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentHomeBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsetupButtons()\n\t\tsetupPager()\n\t\tsetupInfoBox()\n\t\tsetupPagerClickListeners()\n\t\tsetupImportObservers()\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\t\treloadCertificates()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupButtons() {\n\t\tsetupAddCertificateOptions()\n\t\tbinding.homescreenSupportButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, WalletFaqFragment.newInstance())\n\t\t\t\t.addToBackStack(WalletFaqFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t\tbinding.homescreenListButton.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, CertificatesListFragment.newInstance())\n\t\t\t\t.addToBackStack(CertificatesListFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t\tval impressumClickListener = View.OnClickListener {\n\t\t\tval buildInfo = BuildInfo(\n\t\t\t\tgetString(R.string.wallet_onboarding_app_title),\n\t\t\t\tBuildConfig.VERSION_NAME,\n\t\t\t\tBuildConfig.BUILD_TIME,\n\t\t\t\tBuildConfig.FLAVOR,\n\t\t\t\tgetString(R.string.wallet_terms_privacy_link),\n\t\t\t\t\"covidCert\",\n\t\t\t)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(\n\t\t\t\t\tR.id.fragment_container, ImprintFragment.newInstance(\n\t\t\t\t\t\tR.string.impressum_title,\n\t\t\t\t\t\tbuildInfo\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addToBackStack(ImprintFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t\tbinding.homescreenHeaderEmpty.headerImpressum.setOnClickListener(impressumClickListener)\n\t\tbinding.homescreenHeaderNotEmpty.headerImpressum.setOnClickListener(impressumClickListener)\n\n\t\tif (DebugFragment.EXISTS) {\n\t\t\tval lastClick = AtomicLong(0)\n\t\t\tval debugButtonClickListener = View.OnClickListener {\n\t\t\t\tval now = System.currentTimeMillis()\n\t\t\t\tif (lastClick.get() > now - 1000L) {\n\t\t\t\t\tlastClick.set(0)\n\t\t\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t\t\t.replace(R.id.fragment_container, WalletDebugFragment.newInstance())\n\t\t\t\t\t\t.addToBackStack(WalletDebugFragment::class.java.canonicalName)\n\t\t\t\t\t\t.commit()\n\t\t\t\t} else {\n\t\t\t\t\tlastClick.set(now)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbinding.homescreenHeaderEmpty.schwiizerchruez.setOnClickListener(debugButtonClickListener)\n\t\t\tbinding.homescreenHeaderNotEmpty.schwiizerchruez.setOnClickListener(debugButtonClickListener)\n\t\t}\n\t}\n\n\tprivate fun setupPager() {\n\t\tval viewPager = binding.homescreenCertificatesViewPager\n\n\t\tval marginPagerHorizontal = resources.getDimensionPixelSize(R.dimen.certificates_padding)\n\t\tval pageTransformer = ViewPager2.PageTransformer { page: View, position: Float ->\n\t\t\tpage.translationX = -2 * marginPagerHorizontal * position\n\t\t}\n\t\tviewPager.setPageTransformer(pageTransformer)\n\t\tviewPager.addItemDecoration(HorizontalMarginItemDecoration(requireContext(), marginPagerHorizontal))\n\t\tviewPager.apply { (getChildAt(0) as? RecyclerView)?.overScrollMode = RecyclerView.OVER_SCROLL_NEVER }\n\n\t\tcertificatesAdapter = CertificatesPagerAdapter(this)\n\t\tviewPager.offscreenPageLimit = 1\n\t\tviewPager.adapter = certificatesAdapter\n\t\tTabLayoutMediator(binding.homescreenCertificatesTabLayout, viewPager) { _, _ -> }.attach()\n\n\t\tcertificatesViewModel.walletItems.observe(viewLifecycleOwner) {\n\t\t\tit ?: return@observe\n\t\t\tbinding.homescreenLoadingIndicator.isVisible = false\n\t\t\tupdateHomescreen(it)\n\t\t}\n\t}\n\n\tprivate fun setupPagerClickListeners() {\n\t\tcertificatesViewModel.onQrCodeClickedSingleLiveEvent.observe(viewLifecycleOwner) { certificate ->\n\t\t\tval fragment = CertificateDetailFragment.newInstance(certificate)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, fragment)\n\t\t\t\t.addToBackStack(CertificateDetailFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tcertificatesViewModel.onCertificateLightClickedSingleLiveEvent.observe(viewLifecycleOwner) { certificateLight ->\n\t\t\tval fragment = CertificateLightDetailFragment.newInstance(certificateLight.second, certificateLight.first)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, fragment)\n\t\t\t\t.addToBackStack(CertificateLightDetailFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tcertificatesViewModel.onTransferCodeClickedSingleLiveEvent.observe(viewLifecycleOwner) { transferCode ->\n\t\t\tval fragment = TransferCodeDetailFragment.newInstance(transferCode)\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, fragment)\n\t\t\t\t.addToBackStack(TransferCodeDetailFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\tprivate fun setupImportObservers() {\n\t\tdeeplinkViewModel.deeplinkImportLiveData.observe(viewLifecycleOwner) { decodeState ->\n\t\t\twhen (decodeState) {\n\t\t\t\tis DecodeState.SUCCESS -> {\n\t\t\t\t\tshowCertificationAddFragment(decodeState.certificateHolder)\n\t\t\t\t\tdeeplinkViewModel.clearDeeplink()\n\t\t\t\t}\n\t\t\t\tis DecodeState.ERROR -> {\n\t\t\t\t\tshowImportError(decodeState.error.code)\n\t\t\t\t}\n\t\t\t\telse -> {}\n\t\t\t}\n\t\t}\n\n\t\tpdfViewModel.pdfImportState.observe(viewLifecycleOwner) { importState ->\n\t\t\twhen (importState) {\n\t\t\t\tis PdfImportState.LOADING -> {\n\t\t\t\t\tbinding.loadingSpinner.showAnimated()\n\t\t\t\t}\n\t\t\t\tis PdfImportState.DONE -> {\n\t\t\t\t\tbinding.loadingSpinner.hideAnimated()\n\t\t\t\t\twhen (importState.decodeState) {\n\t\t\t\t\t\tis DecodeState.SUCCESS -> {\n\t\t\t\t\t\t\tisAddOptionsShowing = false\n\t\t\t\t\t\t\tshowCertificationAddFragment(importState.decodeState.certificateHolder)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tis DecodeState.ERROR -> {\n\t\t\t\t\t\t\tshowImportError(importState.decodeState.error.code)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpdfViewModel.clearPdfImport()\n\t\t\t\t}\n\t\t\t\telse -> {}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupAddCertificateOptions() {\n\t\tbinding.homescreenScanButtonSmall.setOnClickListener {\n\t\t\tshowAddCertificateOptionsOverlay(!isAddOptionsShowing)\n\t\t}\n\n\t\tbinding.backgroundDimmed.setOnClickListener {\n\t\t\tshowAddCertificateOptionsOverlay(!isAddOptionsShowing)\n\t\t}\n\n\t\tbinding.homescreenAddCertificateOptionsEmpty.optionScanCertificate.setOnClickListener { showQrScanFragment() }\n\t\tbinding.homescreenAddCertificateOptionsNotEmpty.optionScanCertificate.setOnClickListener {\n\t\t\tisAddOptionsShowing = false\n\t\t\tshowQrScanFragment()\n\t\t}\n\n\t\tbinding.homescreenAddCertificateOptionsEmpty.optionImportPdf.setOnClickListener { launchPdfFilePicker() }\n\t\tbinding.homescreenAddCertificateOptionsNotEmpty.optionImportPdf.setOnClickListener {\n\t\t\tisAddOptionsShowing = false\n\t\t\tlaunchPdfFilePicker()\n\t\t}\n\n\t\tbinding.homescreenAddCertificateOptionsEmpty.optionTransferCode.setOnClickListener { showTransferCodeIntroFragment() }\n\t\tbinding.homescreenAddCertificateOptionsNotEmpty.optionTransferCode.setOnClickListener {\n\t\t\tisAddOptionsShowing = false\n\t\t\tshowTransferCodeIntroFragment()\n\t\t}\n\n\t\tval showVaccinationAppointmentButton =\n\t\t\tConfigRepository.getCurrentConfig(requireContext())?.showVaccinationHintHomescreen ?: false\n\t\tbinding.homescreenAddCertificateOptionsEmpty.optionVaccinationAppointment.isVisible = showVaccinationAppointmentButton\n\t\tbinding.homescreenAddCertificateOptionsNotEmpty.optionVaccinationAppointment.isVisible = showVaccinationAppointmentButton\n\t\tbinding.homescreenAddCertificateOptionsEmpty.optionVaccinationAppointment.setOnClickListener { showVaccinationAppointmentDetails() }\n\t\tbinding.homescreenAddCertificateOptionsNotEmpty.optionVaccinationAppointment.setOnClickListener { showVaccinationAppointmentDetails() }\n\t}\n\n\tprivate fun showQrScanFragment() {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, WalletQrScanFragment.newInstance())\n\t\t\t.addToBackStack(WalletQrScanFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n\tprivate fun launchPdfFilePicker() {\n\t\tval intent = Intent(Intent.ACTION_GET_CONTENT).apply {\n\t\t\ttype = \"application/pdf\"\n\t\t}\n\t\ttry {\n\t\t\tfilePickerLauncher.launch(intent)\n\t\t} catch (e: ActivityNotFoundException) {\n\t\t\tToast.makeText(context, \"No file picker found\", Toast.LENGTH_LONG).show()\n\t\t}\n\t}\n\n\tprivate fun showTransferCodeIntroFragment() {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, TransferCodeIntroFragment.newInstance())\n\t\t\t.addToBackStack(TransferCodeIntroFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n\tprivate fun showVaccinationAppointmentDetails() {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, VaccinationAppointmentFragment.newInstance())\n\t\t\t.addToBackStack(VaccinationAppointmentFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n\tprivate fun showAddCertificateOptionsOverlay(show: Boolean) {\n\t\tif (show) {\n\t\t\tbinding.homescreenScanButtonSmall.rotate(45f)\n\t\t\tbinding.backgroundDimmed.showAnimated()\n\t\t\tbinding.homescreenOptionsOverlay.showAnimated()\n\t\t} else {\n\t\t\tbinding.homescreenScanButtonSmall.rotate(0f)\n\t\t\tbinding.backgroundDimmed.hideAnimated()\n\t\t\tbinding.homescreenOptionsOverlay.hideAnimated()\n\t\t}\n\n\t\tisAddOptionsShowing = show\n\t}\n\n\tprivate fun showCertificationAddFragment(certificateHolder: CertificateHolder) {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, CertificateAddFragment.newInstance(certificateHolder, false))\n\t\t\t.addToBackStack(CertificateAddFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n\tprivate fun showImportError(errorCode: String) {\n\t\tval message = getString(R.string.error_file_import_text) + \" ($errorCode)\"\n\t\tAlertDialog.Builder(requireContext(), R.style.CovidCertificate_AlertDialogStyle)\n\t\t\t.setTitle(R.string.error_file_import_title)\n\t\t\t.setMessage(message)\n\t\t\t.setPositiveButton(R.string.ok_button) { dialog, _ ->\n\t\t\t\tdialog.dismiss()\n\t\t\t}\n\t\t\t.setCancelable(true)\n\t\t\t.create()\n\t\t\t.show()\n\t}\n\n\tprivate fun reloadCertificates() {\n\t\tbinding.homescreenLoadingIndicator.isVisible = true\n\t\tcertificatesViewModel.loadWalletData()\n\t}\n\n\tprivate fun updateHomescreen(pagerItems: List<WalletItem>) {\n\t\tval hasData = pagerItems.isNotEmpty()\n\n\t\tbinding.homescreenEmptyContent.isVisible = !hasData\n\t\tbinding.homescreenScanButtonSmall.isVisible = hasData\n\t\tbinding.homescreenListButton.isVisible = hasData\n\t\tbinding.homescreenCertificatesViewPager.isVisible = hasData\n\t\tbinding.homescreenCertificatesTabLayout.isVisible = pagerItems.size > 1\n\t\tbinding.homescreenHeaderEmpty.root.isVisible = !hasData\n\t\tbinding.homescreenHeaderNotEmpty.root.isVisible = hasData\n\t\tbinding.homescreenListButton.isVisible = pagerItems.size > 1\n\n\t\tcertificatesAdapter.setData(pagerItems)\n\n\t\tif (hasData) {\n\t\t\tbinding.homescreenCertificatesViewPager.postDelayed(250) {\n\t\t\t\tif (isAdded) {\n\t\t\t\t\tbinding.homescreenCertificatesViewPager.setCurrentItem(0, true)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupInfoBox() {\n\t\tcertificatesViewModel.configLiveData.observe(viewLifecycleOwner) { config ->\n\t\t\tval buttonHeaderEmpty = binding.homescreenHeaderEmpty.headerNotification\n\t\t\tval buttonHeaderNotEmpty = binding.homescreenHeaderNotEmpty.headerNotification\n\t\t\tval localizedInfo = config.getInfoBox(getString(R.string.language_key))\n\t\t\tval hasInfoBox = localizedInfo != null\n\n\t\t\tval onClickListener = localizedInfo?.let { infoBox ->\n\t\t\t\tval secureStorage = ConfigSecureStorage.getInstance(buttonHeaderEmpty.context)\n\t\t\t\tif (secureStorage.getLastShownInfoBoxId() != infoBox.infoId) {\n\t\t\t\t\tcloseCurrentInfoDialog()\n\t\t\t\t\tshowInfoDialog(infoBox)\n\t\t\t\t\tsecureStorage.setLastShownInfoBoxId(infoBox.infoId)\n\t\t\t\t}\n\n\t\t\t\treturn@let View.OnClickListener {\n\t\t\t\t\tcloseCurrentInfoDialog()\n\t\t\t\t\tshowInfoDialog(infoBox)\n\t\t\t\t\tsecureStorage.setLastShownInfoBoxId(infoBox.infoId)\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbuttonHeaderEmpty.isVisible = hasInfoBox\n\t\t\tbuttonHeaderEmpty.setOnClickListener(onClickListener)\n\t\t\tbuttonHeaderNotEmpty.isVisible = hasInfoBox\n\t\t\tbuttonHeaderNotEmpty.setOnClickListener(onClickListener)\n\t\t}\n\t}\n\n\tprivate fun closeCurrentInfoDialog() {\n\t\t(childFragmentManager.findFragmentByTag(InfoDialogFragment::class.java.canonicalName) as? InfoDialogFragment)?.dismiss()\n\t}\n\n\tprivate fun showInfoDialog(infoBox: InfoBoxModel) {\n\t\tInfoDialogFragment.newInstance(infoBox).show(childFragmentManager, InfoDialogFragment::class.java.canonicalName)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/pager/CertificatePagerFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen.pager\n\nimport android.content.res.ColorStateList\nimport android.graphics.Color\nimport android.graphics.drawable.BitmapDrawable\nimport android.os.Bundle\nimport android.text.SpannableString\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.annotation.ColorRes\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.transition.TransitionManager\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.util.makeBold\nimport ch.admin.bag.covidcertificate.common.views.setCutOutCardBackground\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isNotFullyProtected\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.DccCert\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.VaccinationEntry\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.*\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificatePagerBinding\nimport ch.admin.bag.covidcertificate.wallet.util.*\n\nclass CertificatePagerFragment : Fragment() {\n\n\tcompanion object {\n\t\tprivate const val ARG_QR_CODE_DATA = \"ARG_QR_CODE_DATA\"\n\t\tprivate const val ARG_CERTIFICATE = \"ARG_CERTIFICATE\"\n\n\t\tfun newInstance(qrCodeData: String, certificateHolder: CertificateHolder?) = CertificatePagerFragment().apply {\n\t\t\targuments = bundleOf(ARG_QR_CODE_DATA to qrCodeData, ARG_CERTIFICATE to certificateHolder)\n\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\tprivate var _binding: FragmentCertificatePagerBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var qrCodeData: String\n\tprivate var certificateHolder: CertificateHolder? = null\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\targuments?.let { args ->\n\t\t\tqrCodeData = args.getString(ARG_QR_CODE_DATA)\n\t\t\t\t?: throw IllegalStateException(\"Certificate pager fragment created without QrCode!\")\n\t\t\tcertificateHolder = args.getSerializable(ARG_CERTIFICATE) as? CertificateHolder?\n\t\t}\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificatePagerBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tval qrCodeBitmap = QrCode.renderToBitmap(qrCodeData)\n\t\tval qrCodeDrawable = BitmapDrawable(resources, qrCodeBitmap).apply { isFilterBitmap = false }\n\t\tbinding.certificatePageQrCode.setImageDrawable(qrCodeDrawable)\n\n\t\tval name = certificateHolder?.certificate?.getPersonName()?.prettyName() ?: \"\"\n\t\tbinding.certificatePageName.text = name\n\t\tbinding.certificatePageBirthdate.text = certificateHolder?.certificate?.getFormattedDateOfBirth()\n\t\tbinding.certificatePageCard.setCutOutCardBackground()\n\t\tupdateTitle()\n\t\tsetupStatusInfo()\n\n\t\tcertificateHolder?.let { certificate ->\n\t\t\tbinding.certificatePageCard.setOnClickListener { certificatesViewModel.onQrCodeClicked(certificate) }\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun updateTitle() {\n\t\tval dccCert = certificateHolder?.certificate as? DccCert\n\n\t\tval vaccinationEntry: VaccinationEntry? = dccCert?.vaccinations?.firstOrNull()\n\t\tif (vaccinationEntry?.isNotFullyProtected() == true) {\n\t\t\tbinding.certificatePageTitle.setText(R.string.wallet_certificate_evidence_title)\n\t\t} else {\n\t\t\tbinding.certificatePageTitle.setText(R.string.covid_certificate_title)\n\t\t}\n\t}\n\n\tprivate fun setupStatusInfo() {\n\t\tcertificatesViewModel.statefulWalletItems.observe(viewLifecycleOwner) { items ->\n\t\t\titems.filterIsInstance(StatefulWalletItem.VerifiedCertificate::class.java)\n\t\t\t\t.find { it.qrCodeData == qrCodeData }?.let { verifiedCert ->\n\t\t\t\t\tval currentConfig = ConfigRepository.getCurrentConfig(requireContext())\n\t\t\t\t\tval state = hideExpiryInSwitzerland(currentConfig, verifiedCert.state)\n\t\t\t\t\tupdateStatusInfo(state)\n\t\t\t\t}\n\t\t}\n\n\t\tcertificateHolder?.let { certificatesViewModel.startVerification(it) }\n\t}\n\n\tprivate fun updateStatusInfo(verificationState: VerificationState?) {\n\t\tval state = verificationState ?: return\n\n\t\twhen (state) {\n\t\t\tis VerificationState.LOADING -> displayLoadingState()\n\t\t\tis VerificationState.SUCCESS -> displaySuccessState(state)\n\t\t\tis VerificationState.INVALID -> displayInvalidState(state)\n\t\t\tis VerificationState.ERROR -> displayErrorState(state)\n\t\t}\n\n\t\tsetCertificateDetailTextColor(state.getNameDobColor())\n\t\tbinding.certificatePageQrCode.alpha = state.getInvalidQrCodeAlpha(certificateHolder?.certType == CertType.TEST)\n\t}\n\n\tprivate fun displayLoadingState() {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(true)\n\t\tsetInfoBubbleBackground(R.color.greyish)\n\t\tbinding.certificatePageStatusIcon.setImageResource(0)\n\t\tbinding.certificatePageInfoRedBorder.visibility = View.GONE\n\t\tbinding.certificatePageInfo.text = SpannableString(context.getString(R.string.wallet_certificate_verifying))\n\t}\n\n\tprivate fun displaySuccessState(state: VerificationState.SUCCESS) {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(false)\n\t\tsetInfoBubbleBackground(R.color.blueish)\n\t\tval walletState = state.successState as SuccessState.WalletSuccessState\n\t\tif (walletState.isValidOnlyInSwitzerland) {\n\t\t\tbinding.certificatePageStatusIcon.setImageResource(R.drawable.ic_flag_ch)\n\t\t\tbinding.certificatePageInfoRedBorder.visibility = View.VISIBLE\n\t\t\tbinding.certificatePageInfo.text = SpannableString(context.getString(R.string.wallet_only_valid_in_switzerland))\n\t\t} else {\n\t\t\tbinding.certificatePageStatusIcon.setImageResource(R.drawable.ic_info_blue)\n\t\t\tbinding.certificatePageInfoRedBorder.visibility = View.GONE\n\t\t\tbinding.certificatePageInfo.text = SpannableString(context.getString(R.string.verifier_verify_success_info))\n\t\t}\n\n\t\tbinding.certificatePageBanner.isVisible = false\n\t\tbinding.certificatePageRenewalBanner.isVisible = false\n\t\tval isRenewalBannerDisplayed = displayQrCodeRenewalBannerIfNecessary(walletState.showRenewBanner)\n\t\tif (!isRenewalBannerDisplayed) {\n\t\t\tdisplayEolBannerIfNecessary(walletState)\n\t\t}\n\t}\n\n\tprivate fun displayInvalidState(state: VerificationState.INVALID) {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(false)\n\n\t\tval infoBubbleColorId: Int\n\t\tval statusIconId: Int\n\t\tval signatureState = state.signatureState\n\t\tval revocationState = state.revocationState\n\t\tval nationalRulesState = state.nationalRulesState\n\n\t\twhen {\n\t\t\tsignatureState is CheckSignatureState.INVALID -> {\n\t\t\t\tif (signatureState.signatureErrorCode == ErrorCodes.SIGNATURE_TIMESTAMP_EXPIRED) {\n\t\t\t\t\tinfoBubbleColorId = R.color.blueish\n\t\t\t\t\tstatusIconId = R.drawable.ic_invalid_grey\n\t\t\t\t} else {\n\t\t\t\t\tinfoBubbleColorId = R.color.greyish\n\t\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t\t}\n\t\t\t}\n\t\t\trevocationState is CheckRevocationState.INVALID -> {\n\t\t\t\tinfoBubbleColorId = R.color.greyish\n\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t}\n\t\t\tnationalRulesState is CheckNationalRulesState.NOT_VALID_ANYMORE -> {\n\t\t\t\tinfoBubbleColorId = R.color.blueish\n\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t}\n\t\t\tnationalRulesState is CheckNationalRulesState.NOT_YET_VALID -> {\n\t\t\t\tinfoBubbleColorId = R.color.blueish\n\t\t\t\tstatusIconId = R.drawable.ic_timelapse\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tinfoBubbleColorId = R.color.greyish\n\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t}\n\t\t}\n\n\t\tsetInfoBubbleBackground(infoBubbleColorId)\n\t\tbinding.certificatePageStatusIcon.setImageResource(statusIconId)\n\t\tbinding.certificatePageInfoRedBorder.visibility = View.GONE\n\t\tbinding.certificatePageInfo.text = state.getValidationStatusString(context)\n\n\t\tdisplayQrCodeRenewalBannerIfNecessary(state.showRenewBanner)\n\t}\n\n\tprivate fun displayErrorState(state: VerificationState.ERROR) {\n\t\tval context = context ?: return\n\t\tshowLoadingIndicator(false)\n\t\tsetInfoBubbleBackground(R.color.greyish)\n\n\t\tval statusIconId = if (state.isOfflineMode()) R.drawable.ic_offline else R.drawable.ic_process_error_grey\n\t\tbinding.certificatePageStatusIcon.setImageResource(statusIconId)\n\t\tbinding.certificatePageInfoRedBorder.visibility = View.GONE\n\n\t\tbinding.certificatePageInfo.text = if (state.isOfflineMode()) {\n\t\t\tcontext.getString(R.string.wallet_homescreen_offline).makeBold()\n\t\t} else {\n\t\t\tSpannableString(context.getString(R.string.wallet_homescreen_network_error))\n\t\t}\n\t}\n\n\tprivate fun showLoadingIndicator(isLoading: Boolean) {\n\t\tbinding.certificatePageStatusLoading.isVisible = isLoading\n\t\tbinding.certificatePageStatusIcon.isVisible = !isLoading\n\t}\n\n\tprivate fun setInfoBubbleBackground(@ColorRes infoBubbleColorId: Int) {\n\t\tval infoBubbleColor = ContextCompat.getColor(requireContext(), infoBubbleColorId)\n\t\tbinding.certificatePageInfo.backgroundTintList = ColorStateList.valueOf(infoBubbleColor)\n\t}\n\n\tprivate fun setCertificateDetailTextColor(@ColorRes colorId: Int) {\n\t\tval textColor = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificatePageName.setTextColor(textColor)\n\t\tbinding.certificatePageBirthdate.setTextColor(textColor)\n\t}\n\n\tprivate fun displayQrCodeRenewalBannerIfNecessary(showRenewBanner: String?): Boolean {\n\t\tval wasRecentlyRenewed = certificateHolder?.let { certificatesViewModel.wasCertificateRecentlyRenewed(it) } ?: false\n\n\t\twhen {\n\t\t\twasRecentlyRenewed -> {\n\t\t\t\tbinding.certificatePageRenewalBanner.isVisible = true\n\t\t\t\tbinding.certificatePageRenewalBannerDismiss.isVisible = true\n\t\t\t\tbinding.certificatePageRenewalBannerTitle.setText(R.string.wallet_certificate_renewal_successful_bubble_title)\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.greenish)\n\t\t\t\tbinding.certificatePageRenewalBanner.backgroundTintList = ColorStateList.valueOf(backgroundColor)\n\n\t\t\t\tbinding.certificatePageRenewalBannerDismiss.setOnClickListener {\n\t\t\t\t\tcertificateHolder?.let { certificate -> certificatesViewModel.dismissRecentlyRenewedBanner(certificate) }\n\t\t\t\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\t\t\t\tbinding.certificatePageRenewalBanner.isVisible = false\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tshowRenewBanner != null -> {\n\t\t\t\tbinding.certificatePageRenewalBanner.isVisible = true\n\t\t\t\tbinding.certificatePageRenewalBannerDismiss.isVisible = false\n\t\t\t\tbinding.certificatePageRenewalBannerTitle.setText(R.string.wallet_certificate_renewal_required_bubble_title)\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.redish)\n\t\t\t\tbinding.certificatePageRenewalBanner.backgroundTintList = ColorStateList.valueOf(backgroundColor)\n\n\t\t\t\treturn true\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tbinding.certificatePageRenewalBanner.isVisible = false\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun displayEolBannerIfNecessary(walletState: SuccessState.WalletSuccessState) {\n\t\tval isAlreadyDismissed = WalletSecureStorage.getInstance(requireContext()).getDismissedEolBanners().contains(qrCodeData)\n\t\tval eolBannerInfo = ConfigRepository.getCurrentConfig(requireContext())\n\t\t\t?.getEolBannerInfo(getString(R.string.language_key))\n\t\t\t?.get(walletState.eolBannerIdentifier)\n\n\t\tbinding.certificatePageBanner.isVisible = eolBannerInfo != null && !isAlreadyDismissed\n\n\t\teolBannerInfo?.let {\n\t\t\tval backgroundColor = try {\n\t\t\t\tColor.parseColor(it.homescreenHexColor)\n\t\t\t} catch (e: IllegalArgumentException) {\n\t\t\t\tContextCompat.getColor(requireContext(), R.color.yellow)\n\t\t\t}\n\n\t\t\tbinding.certificatePageBanner.backgroundTintList = ColorStateList.valueOf(backgroundColor)\n\t\t\tbinding.certificatePageBannerTitle.text = it.homescreenTitle\n\t\t\tbinding.certificatePageBannerDismiss.setOnClickListener {\n\t\t\t\tWalletSecureStorage.getInstance(requireContext()).addDismissedEolBanner(qrCodeData)\n\t\t\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\t\t\tbinding.certificatePageBanner.isVisible = false\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/pager/CertificatesPagerAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen.pager\n\nimport androidx.fragment.app.Fragment\nimport androidx.recyclerview.widget.DiffUtil\nimport androidx.viewpager2.adapter.FragmentStateAdapter\nimport ch.admin.bag.covidcertificate.wallet.light.CertificateLightPagerFragment\n\nclass CertificatesPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {\n\n\tprivate var items: MutableList<WalletItem> = mutableListOf()\n\n\toverride fun getItemCount(): Int = items.size\n\n\toverride fun createFragment(position: Int): Fragment = when (val item = items[position]) {\n\t\tis WalletItem.CertificateHolderItem -> {\n\t\t\tif (item.qrCodeImage != null && item.certificateHolder?.containsChLightCert() == true) {\n\t\t\t\tCertificateLightPagerFragment.newInstance(item.qrCodeImage, item.certificateHolder)\n\t\t\t} else  {\n\t\t\t\tCertificatePagerFragment.newInstance(item.qrCodeData, item.certificateHolder)\n\t\t\t}\n\t\t}\n\t\tis WalletItem.TransferCodeHolderItem -> TransferCodePagerFragment.newInstance(item.transferCode)\n\t}\n\n\toverride fun getItemId(position: Int): Long {\n\t\treturn items[position].id.toLong()\n\t}\n\n\toverride fun containsItem(itemId: Long): Boolean {\n\t\treturn items.any { it.id.toLong() == itemId }\n\t}\n\n\tfun setData(newItems: List<WalletItem>) {\n\t\tval callback = PagerDiffUtil(items, newItems)\n\t\tval diff = DiffUtil.calculateDiff(callback)\n\t\titems.clear()\n\t\titems.addAll(newItems)\n\t\tdiff.dispatchUpdatesTo(this)\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/pager/PagerDiffUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen.pager\n\nimport androidx.recyclerview.widget.DiffUtil\n\nclass PagerDiffUtil(private val oldList: List<WalletItem>, private val newList: List<WalletItem>) : DiffUtil.Callback() {\n\n\tenum class PayloadKey {\n\t\tVALUE\n\t}\n\n\toverride fun getOldListSize() = oldList.size\n\n\toverride fun getNewListSize() = newList.size\n\n\toverride fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {\n\t\treturn oldList[oldItemPosition].id == newList[newItemPosition].id\n\t}\n\n\toverride fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {\n\t\tval oldItem = oldList[oldItemPosition]\n\t\tval newItem = newList[newItemPosition]\n\n\t\tval isSameDccContent = oldItem is WalletItem.CertificateHolderItem\n\t\t\t\t&& newItem is WalletItem.CertificateHolderItem\n\t\t\t\t&& oldItem.qrCodeData == newItem.qrCodeData\n\t\t\t\t&& oldItem.certificateHolder?.qrCodeData == newItem.certificateHolder?.qrCodeData\n\n\t\tval isSameTransferCodeContent = oldItem is WalletItem.TransferCodeHolderItem\n\t\t\t\t&& newItem is WalletItem.TransferCodeHolderItem\n\t\t\t\t&& oldItem.transferCode == newItem.transferCode\n\n\t\treturn isSameDccContent || isSameTransferCodeContent\n\t}\n\n\toverride fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {\n\t\treturn listOf(PayloadKey.VALUE)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/pager/StatefulWalletItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen.pager\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\n\nsealed class StatefulWalletItem {\n\tdata class VerifiedCertificate(\n\t\tval qrCodeData: String,\n\t\tval certificateHolder: CertificateHolder?,\n\t\tval state: VerificationState\n\t) : StatefulWalletItem()\n\n\tdata class TransferCodeConversionItem(\n\t\tval transferCode: TransferCodeModel,\n\t\tval conversionState: TransferCodeConversionState\n\t) : StatefulWalletItem()\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/pager/TransferCodePagerFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen.pager\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport android.view.ViewTreeObserver\nimport androidx.core.os.bundleOf\nimport androidx.core.view.doOnLayout\nimport androidx.core.view.isVisible\nimport androidx.core.view.marginBottom\nimport androidx.core.view.marginTop\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.viewModels\nimport androidx.transition.TransitionManager\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.views.setCutOutCardBackground\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentTransferCodePagerBinding\nimport ch.admin.bag.covidcertificate.wallet.transfercode.TransferCodeViewModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeBubbleView\nimport ch.admin.bag.covidcertificate.wallet.vaccination.appointment.VaccinationAppointmentFragment\nimport ch.admin.bag.covidcertificate.wallet.vaccination.hint.VaccinationHintViewModel\n\nclass TransferCodePagerFragment : Fragment(R.layout.fragment_transfer_code_pager) {\n\n\tcompanion object {\n\t\tprivate const val ARG_TRANSFER_CODE = \"ARG_TRANSFER_CODE\"\n\n\t\tfun newInstance(transferCode: TransferCodeModel) = TransferCodePagerFragment().apply {\n\t\t\targuments = bundleOf(ARG_TRANSFER_CODE to transferCode)\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentTransferCodePagerBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val vaccinationHintViewModel by activityViewModels<VaccinationHintViewModel>()\n\tprivate val transferCodeViewModel by viewModels<TransferCodeViewModel>()\n\tprivate var transferCode: TransferCodeModel? = null\n\tprivate var displayWaitingImage = true\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\ttransferCode = (arguments?.getSerializable(ARG_TRANSFER_CODE) as? TransferCodeModel)\n\t\t\t?: throw IllegalStateException(\"${this::class.java.simpleName} created without a transfer code argument!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentTransferCodePagerBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tval transferCode = transferCode ?: return\n\n\t\tbinding.transferCodePageCard.setCutOutCardBackground()\n\t\tbinding.transferCodePageBubble.setTransferCode(transferCode)\n\t\tsetTransferCodeViewState(false)\n\n\t\tbinding.transferCodePageCard.setOnClickListener { certificatesViewModel.onTransferCodeClicked(transferCode) }\n\n\t\ttransferCodeViewModel.conversionState.observe(viewLifecycleOwner) { onConversionStateChanged(it) }\n\n\t\ttransferCodeViewModel.downloadCertificateForTransferCode(transferCode)\n\n\t\t// Wait for a global layouting call before observing the vaccination hint display flag\n\t\t// Before that call, the fragment root will be measured with the entire screen size and not the reduced viewpager size\n\t\tview.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {\n\t\t\toverride fun onGlobalLayout() {\n\t\t\t\tif (isAdded) {\n\t\t\t\t\tvaccinationHintViewModel.displayVaccinationHint.observe(viewLifecycleOwner) { shouldDisplayVaccinationHint ->\n\t\t\t\t\t\tdisplayVaccinationHint(shouldDisplayVaccinationHint)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tview.viewTreeObserver.removeOnGlobalLayoutListener(this)\n\t\t\t}\n\t\t})\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setTransferCodeViewState(isRefreshing: Boolean, error: StateError? = null) {\n\t\tval transferCode = transferCode ?: return\n\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\twhen {\n\t\t\ttransferCode.isFailed() -> {\n\t\t\t\tbinding.transferCodePageWaitingImage.isVisible = false\n\t\t\t\tbinding.transferCodePageImage.isVisible = true\n\t\t\t\tbinding.transferCodePageImage.setImageResource(R.drawable.illu_transfer_code_failed)\n\t\t\t\tbinding.transferCodePageStatusLabel.text = requireContext().getString(R.string.wallet_transfer_code_state_expired)\n\t\t\t\tbinding.transferCodePageBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Expired(true, error))\n\t\t\t}\n\t\t\ttransferCode.isExpired() -> {\n\t\t\t\tbinding.transferCodePageWaitingImage.isVisible = displayWaitingImage\n\t\t\t\tbinding.transferCodePageImage.isVisible = false\n\t\t\t\tbinding.transferCodePageStatusLabel.text = requireContext().getString(R.string.wallet_transfer_code_state_waiting)\n\t\t\t\tbinding.transferCodePageBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Expired(false, error))\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tif (error == null\n\t\t\t\t\t|| error.code == ErrorCodes.GENERAL_OFFLINE\n\t\t\t\t\t|| error.code == DeliveryRepository.ERROR_CODE_INVALID_TIME\n\t\t\t\t) {\n\t\t\t\t\tbinding.transferCodePageWaitingImage.isVisible = displayWaitingImage\n\t\t\t\t\tbinding.transferCodePageImage.isVisible = false\n\t\t\t\t\tbinding.transferCodePageStatusLabel.text =\n\t\t\t\t\t\trequireContext().getString(R.string.wallet_transfer_code_state_waiting)\n\t\t\t\t\tbinding.transferCodePageBubble.setState(\n\t\t\t\t\t\tTransferCodeBubbleView.TransferCodeBubbleState.Valid(isRefreshing, error)\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tbinding.transferCodePageWaitingImage.isVisible = false\n\t\t\t\t\tbinding.transferCodePageImage.isVisible = true\n\t\t\t\t\tbinding.transferCodePageImage.setImageResource(R.drawable.illu_transfer_code_failed)\n\t\t\t\t\tbinding.transferCodePageStatusLabel.text =\n\t\t\t\t\t\trequireContext().getString(R.string.wallet_transfer_code_state_expired)\n\t\t\t\t\tbinding.transferCodePageBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Error(error))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun onConversionStateChanged(state: TransferCodeConversionState) {\n\t\twhen (state) {\n\t\t\tis TransferCodeConversionState.LOADING -> {\n\t\t\t\tsetTransferCodeViewState(true)\n\t\t\t}\n\t\t\tis TransferCodeConversionState.CONVERTED -> {\n\t\t\t\t// Reload the wallet data to make sure the homescreen gets updated\n\t\t\t\tcertificatesViewModel.loadWalletData()\n\t\t\t}\n\t\t\tis TransferCodeConversionState.NOT_CONVERTED -> {\n\t\t\t\ttransferCode = transferCode?.let {\n\t\t\t\t\tcertificatesViewModel.updateTransferCodeLastUpdated(it)\n\t\t\t\t}\n\t\t\t\tsetTransferCodeViewState(false)\n\t\t\t}\n\t\t\tis TransferCodeConversionState.ERROR -> {\n\t\t\t\tsetTransferCodeViewState(false, state.error)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun displayVaccinationHint(display: Boolean) {\n\t\tbinding.root.doOnLayout {\n\t\t\tval vaccinationHint = ConfigRepository.getCurrentConfig(requireContext())\n\t\t\t\t?.getVaccinationHints(getString(R.string.language_key))\n\t\t\t\t?.randomOrNull()\n\n\t\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\t\tbinding.vaccinationHintTitle.text = vaccinationHint?.title\n\t\t\tbinding.vaccinationHintText.text = vaccinationHint?.text\n\n\t\t\tif (display) {\n\t\t\t\twhen (calculateViewState()) {\n\t\t\t\t\tTransferCodePagerCardViewState.SHOW_HINT_AND_IMAGE -> {\n\t\t\t\t\t\tdisplayWaitingImage = true\n\t\t\t\t\t\tbinding.transferCodePageVaccinationHint.isVisible = true\n\t\t\t\t\t\tbinding.vaccinationHintText.isVisible = true\n\t\t\t\t\t}\n\t\t\t\t\tTransferCodePagerCardViewState.SHOW_HINT_ONLY -> {\n\t\t\t\t\t\tdisplayWaitingImage = false\n\t\t\t\t\t\tbinding.transferCodePageVaccinationHint.isVisible = true\n\t\t\t\t\t\tbinding.vaccinationHintText.isVisible = true\n\t\t\t\t\t}\n\t\t\t\t\tTransferCodePagerCardViewState.SHOW_MINI_HINT_ONLY -> {\n\t\t\t\t\t\tdisplayWaitingImage = false\n\t\t\t\t\t\tbinding.transferCodePageVaccinationHint.isVisible = true\n\t\t\t\t\t\tbinding.vaccinationHintText.isVisible = false\n\t\t\t\t\t\t// The layout was measured with the text visible and wouldn't layout correctly now that it is hidden again\n\t\t\t\t\t\tbinding.transferCodePageVaccinationHint.doOnLayout { it.requestLayout() }\n\t\t\t\t\t}\n\t\t\t\t\tTransferCodePagerCardViewState.SHOW_NONE -> {\n\t\t\t\t\t\tdisplayWaitingImage = false\n\t\t\t\t\t\tbinding.transferCodePageVaccinationHint.isVisible = false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbinding.transferCodePageVaccinationHint.isVisible = false\n\t\t\t\tdisplayWaitingImage = true\n\t\t\t}\n\n\t\t\tbinding.transferCodePageWaitingImage.isVisible = displayWaitingImage\n\n\t\t\tbinding.vaccinationHintDismiss.setOnClickListener { vaccinationHintViewModel.dismissVaccinationHint() }\n\n\t\t\tbinding.vaccinationHintBookNow.setOnClickListener { showVaccinationHintDetails() }\n\t\t}\n\t}\n\n\tprivate fun showVaccinationHintDetails() {\n\t\trequireParentFragment().parentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, VaccinationAppointmentFragment.newInstance())\n\t\t\t.addToBackStack(VaccinationAppointmentFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n\tprivate fun calculateViewState(): TransferCodePagerCardViewState {\n\t\tbinding.apply {\n\t\t\tval fullHeight = transferCodePageCard.height - transferCodePageCard.paddingTop - transferCodePageCard.paddingBottom\n\t\t\tval statusLabelHeight = transferCodePageStatusLabel.height + transferCodePageStatusLabel.marginTop + transferCodePageStatusLabel.marginBottom\n\t\t\tval statusBubbleHeight = transferCodePageBubble.height + transferCodePageBubble.marginTop + transferCodePageBubble.marginBottom\n\t\t\tval availableHeight = fullHeight - statusLabelHeight - statusBubbleHeight\n\n\t\t\t// Measure the (possibly hidden) vaccination hint and check if it fits in the available height\n\t\t\ttransferCodePageVaccinationHint.measure(\n\t\t\t\tView.MeasureSpec.makeMeasureSpec(transferCodePageCard.width, View.MeasureSpec.EXACTLY),\n\t\t\t\tView.MeasureSpec.makeMeasureSpec(transferCodePageCard.height, View.MeasureSpec.AT_MOST)\n\t\t\t)\n\t\t\tval measuredHintHeight = transferCodePageVaccinationHint.measuredHeight +\n\t\t\t\t\ttransferCodePageVaccinationHint.marginTop +\n\t\t\t\t\ttransferCodePageVaccinationHint.marginBottom\n\t\t\tval hasEnoughSpaceForHint = measuredHintHeight <= availableHeight\n\n\t\t\t// Measure the height of the mini vaccination hint (without text) and check if it fits in the available height\n\t\t\tval hintTextHeight = vaccinationHintText.measuredHeight + vaccinationHintText.marginTop\n\t\t\tval measuredMiniHintHeight = measuredHintHeight - hintTextHeight\n\t\t\tval hasEnoughSpaceForMiniHint = measuredMiniHintHeight <= availableHeight\n\n\t\t\t// The waiting image resizes itself in the height, but it should be at least half as tall as the status bubble\n\t\t\tval hasEnoughSpaceForHintAndImage = (availableHeight - measuredHintHeight) >= (statusBubbleHeight * 0.5)\n\n\t\t\treturn when {\n\t\t\t\thasEnoughSpaceForHintAndImage -> TransferCodePagerCardViewState.SHOW_HINT_AND_IMAGE\n\t\t\t\thasEnoughSpaceForHint -> TransferCodePagerCardViewState.SHOW_HINT_ONLY\n\t\t\t\thasEnoughSpaceForMiniHint -> TransferCodePagerCardViewState.SHOW_MINI_HINT_ONLY\n\t\t\t\telse -> TransferCodePagerCardViewState.SHOW_NONE\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enum class TransferCodePagerCardViewState {\n\t\tSHOW_HINT_AND_IMAGE,\n\t\tSHOW_HINT_ONLY,\n\t\tSHOW_MINI_HINT_ONLY,\n\t\tSHOW_NONE\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/homescreen/pager/WalletItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.homescreen.pager\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\n\nsealed class WalletItem(open val id: Int) {\n\tdata class CertificateHolderItem(\n\t\toverride val id: Int,\n\t\tval qrCodeData: String,\n\t\tval qrCodeImage: String?,\n\t\tval certificateHolder: CertificateHolder?\n\t) : WalletItem(id)\n\n\tdata class TransferCodeHolderItem(\n\t\toverride val id: Int,\n\t\tval transferCode: TransferCodeModel\n\t) : WalletItem(id)\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/howto/HowToScanFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.howto\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.annotation.StringRes\nimport androidx.core.view.doOnLayout\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.databinding.ItemFaqQuestionBinding\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentHowToScanBinding\n\nclass HowToScanFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): HowToScanFragment = HowToScanFragment()\n\t}\n\n\tprivate var _binding: FragmentHowToScanBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentHowToScanBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tbinding.howToScanToolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\t\tsetupExpandableItem(\n\t\t\tbinding.howToScanQuestionBubble,\n\t\t\tR.string.wallet_scanner_howitworks_question1,\n\t\t\tR.string.wallet_scanner_howitworks_answer1\n\t\t)\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupExpandableItem(\n\t\tview: ItemFaqQuestionBinding,\n\t\t@StringRes question: Int,\n\t\t@StringRes answer: Int,\n\t\tisSelected: Boolean = false\n\t) {\n\t\tview.root.setOnClickListener {\n\t\t\tsetupExpandableItem(view, question, answer, !isSelected)\n\t\t\tview.root.doOnLayout {\n\t\t\t\tbinding.howToScanScrollView.smoothScrollTo(0, view.root.top)\n\t\t\t}\n\t\t}\n\t\tview.itemFaqQuestionTitle.setText(question)\n\t\tview.itemFaqQuestionAnswer.apply {\n\t\t\tsetText(answer)\n\t\t\tisVisible = isSelected\n\t\t}\n\n\t\tview.itemFaqQuestionLink.isVisible = isSelected\n\t\tview.itemFaqQuestionLink.setOnClickListener {\n\t\t\tval url = requireContext().getString(R.string.wallet_scanner_howitworks_external_link)\n\t\t\tUrlUtil.openUrl(requireContext(), url)\n\t\t}\n\n\t\tview.itemFaqQuestionChevron.setImageResource(if (isSelected) R.drawable.ic_arrow_contract else R.drawable.ic_arrow_expand)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/CertificateLightConversionFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light\n\nimport android.annotation.SuppressLint\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.annotation.ColorRes\nimport androidx.annotation.DrawableRes\nimport androidx.annotation.StringRes\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.FragmentManager\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.viewModels\nimport ch.admin.bag.covidcertificate.common.util.makeSubStringBold\nimport ch.admin.bag.covidcertificate.common.util.makeSubStringsBold\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificateLightConversionBinding\nimport ch.admin.bag.covidcertificate.wallet.light.model.CertificateLightConversionState\n\nclass CertificateLightConversionFragment : Fragment(R.layout.fragment_certificate_light_conversion) {\n\n\tcompanion object {\n\t\tprivate const val ARG_DCC_HOLDER = \"ARG_DCC_HOLDER\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder) = CertificateLightConversionFragment().apply {\n\t\t\targuments = bundleOf(ARG_DCC_HOLDER to certificateHolder)\n\t\t}\n\t}\n\n\tprivate val viewModel by viewModels<CertificateLightViewModel>()\n\tprivate val certificatesAndConfigViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate var _binding: FragmentCertificateLightConversionBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_DCC_HOLDER) as? CertificateHolder)\n\t\t\t?: throw IllegalArgumentException(\"Certificate light fragment created without a DccHolder!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificateLightConversionBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tsetConversionInfo()\n\n\t\tviewModel.conversionState.observe(viewLifecycleOwner) { onConversionStateChanged(it) }\n\n\t\tbinding.certificateLightConversionActivateButton.setOnClickListener { viewModel.convert(certificateHolder) }\n\t\tbinding.certificateLightConversionRetryButton.setOnClickListener { viewModel.convert(certificateHolder) }\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setConversionInfo() {\n\t\tvar text = getString(R.string.wallet_certificate_light_detail_text_2)\n\t\tval lightCertDurationInHours = certificatesAndConfigViewModel.configLiveData.value?.lightCertDurationInHours ?: 24\n\t\ttext = text.replace(\"{LIGHT_CERT_VALIDITY_IN_H}\", lightCertDurationInHours.toString())\n\t\tval boldParts = getString(R.string.wallet_certificate_light_detail_text_2_bold)\n\t\tbinding.certificateLightConversionInfo.text = text.makeSubStringsBold(boldParts.split(\" \"))\n\n\t\tvar hourInfoText = getString(R.string.wallet_certificate_light_detail_summary_3)\n\t\thourInfoText = hourInfoText.replace(\"{LIGHT_CERT_VALIDITY_IN_H}\", lightCertDurationInHours.toString())\n\t\tbinding.certificateLightConversionHourInfo.text = hourInfoText\n\t}\n\n\tprivate fun onConversionStateChanged(state: CertificateLightConversionState) {\n\t\twhen (state) {\n\t\t\tis CertificateLightConversionState.LOADING -> {\n\t\t\t\tbinding.certificateLightConversionLoadingIndicator.isVisible = true\n\t\t\t\tbinding.certificateLightConversionContent.isVisible = false\n\t\t\t}\n\t\t\tis CertificateLightConversionState.SUCCESS -> {\n\t\t\t\t// When the certificate is converted successfully, pop the backstack back to the home screen and open the\n\t\t\t\t// certificate light detail fragment without an animation\n\t\t\t\tparentFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)\n\t\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t\t.setCustomAnimations(0, R.anim.slide_exit, 0, R.anim.slide_pop_exit)\n\t\t\t\t\t.replace(\n\t\t\t\t\t\tR.id.fragment_container,\n\t\t\t\t\t\tCertificateLightDetailFragment.newInstance(state.certificateHolder, state.qrCodeImage)\n\t\t\t\t\t)\n\t\t\t\t\t.addToBackStack(CertificateLightDetailFragment::class.java.canonicalName)\n\t\t\t\t\t.commit()\n\t\t\t}\n\t\t\tis CertificateLightConversionState.RATE_LIMIT_EXCEEDED -> {\n\t\t\t\tbinding.certificateLightConversionLoadingIndicator.isVisible = false\n\t\t\t\tbinding.certificateLightConversionContent.isVisible = true\n\t\t\t\tbinding.certificateLightConversionIntroLayout.isVisible = false\n\t\t\t\tbinding.certificateLightConversionErrorLayout.isVisible = true\n\t\t\t\tbinding.certificateLightConversionErrorCode.text = CertificateLightErrorCodes.RATE_LIMIT_EXCEEDED\n\n\t\t\t\tsetStatusIconAndTint(R.drawable.ic_error)\n\t\t\t\tsetStatusText(R.string.wallet_certificate_light_rate_limit_title, R.string.wallet_certificate_light_rate_limit_text)\n\t\t\t}\n\t\t\tis CertificateLightConversionState.ERROR -> {\n\t\t\t\tbinding.certificateLightConversionLoadingIndicator.isVisible = false\n\t\t\t\tbinding.certificateLightConversionContent.isVisible = true\n\t\t\t\tbinding.certificateLightConversionIntroLayout.isVisible = false\n\t\t\t\tbinding.certificateLightConversionErrorLayout.isVisible = true\n\t\t\t\tbinding.certificateLightConversionErrorCode.text = state.error.code\n\n\t\t\t\tif (state.error.code == ErrorCodes.GENERAL_OFFLINE) {\n\t\t\t\t\tsetStatusIconAndTint(R.drawable.ic_no_connection)\n\t\t\t\t\tsetStatusText(\n\t\t\t\t\t\tR.string.wallet_certificate_light_detail_activation_network_error_title,\n\t\t\t\t\t\tR.string.wallet_certificate_light_detail_activation_network_error_text\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tsetStatusIconAndTint(R.drawable.ic_process_error)\n\t\t\t\t\tsetStatusText(\n\t\t\t\t\t\tR.string.wallet_certificate_light_detail_activation_general_error_title,\n\t\t\t\t\t\tR.string.wallet_certificate_light_detail_activation_general_error_text\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setStatusIconAndTint(@DrawableRes iconId: Int, @ColorRes colorId: Int = R.color.orange) {\n\t\tval color = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificateLightConversionStatusIcon.setImageResource(iconId)\n\t\tbinding.certificateLightConversionStatusIcon.imageTintList = ColorStateList.valueOf(color)\n\t}\n\n\t@SuppressLint(\"SetTextI18n\")\n\tprivate fun setStatusText(@StringRes titleId: Int, @StringRes textId: Int) {\n\t\tval title = getString(titleId)\n\t\tval text = getString(textId)\n\t\tbinding.certificateLightConversionStatusText.text = \"$title\\n$text\".makeSubStringBold(title)\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/CertificateLightDetailFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light\n\nimport android.annotation.SuppressLint\nimport android.graphics.BitmapFactory\nimport android.graphics.drawable.BitmapDrawable\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.annotation.ColorRes\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.viewModels\nimport ch.admin.bag.covidcertificate.common.extensions.overrideScreenBrightness\nimport ch.admin.bag.covidcertificate.common.util.makeBold\nimport ch.admin.bag.covidcertificate.common.views.animateBackgroundTintColor\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.prettyPrintIsoDateTime\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.fromBase64\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.light.ChLightCert\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificateLightDetailBinding\nimport ch.admin.bag.covidcertificate.wallet.detail.CertificateDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.util.*\nimport java.time.Instant\nimport java.util.*\nimport java.util.concurrent.TimeUnit\nimport kotlin.concurrent.fixedRateTimer\n\nclass CertificateLightDetailFragment : Fragment(R.layout.fragment_certificate_light_detail) {\n\n\tcompanion object {\n\t\tprivate const val ARG_CERTIFICATE_HOLDER = \"ARG_CERTIFICATE_HOLDER\"\n\t\tprivate const val ARG_QR_CODE_IMAGE = \"ARG_QR_CODE_IMAGE\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder, qrCodeImage: String) = CertificateLightDetailFragment().apply {\n\t\t\targuments = bundleOf(\n\t\t\t\tARG_CERTIFICATE_HOLDER to certificateHolder,\n\t\t\t\tARG_QR_CODE_IMAGE to qrCodeImage\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val certificateLightViewModel by viewModels<CertificateLightViewModel>()\n\n\tprivate var _binding: FragmentCertificateLightDetailBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\tprivate lateinit var qrCodeImage: String\n\n\tprivate var validityTimer: Timer? = null\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE_HOLDER) as? CertificateHolder)\n\t\t\t?: throw IllegalArgumentException(\"Certificate light detail fragment created without a DccHolder!\")\n\t\tqrCodeImage = arguments?.getString(ARG_QR_CODE_IMAGE, null)\n\t\t\t?: throw IllegalArgumentException(\"Certificate light detail fragment created without a qr code image!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificateLightDetailBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tdisplayQrCode()\n\t\tdisplayCertificateDetails()\n\t\tsetupStatusInfo()\n\n\t\tbinding.certificateLightDetailDeactivateButton.setOnClickListener { deleteCertificateLightAndShowOriginal() }\n\n\t\tval lightCertDurationInHours = certificatesViewModel.configLiveData.value?.lightCertDurationInHours ?: 24\n\t\tvar hourInfoText = getString(R.string.wallet_certificate_light_detail_summary_3)\n\t\thourInfoText = hourInfoText.replace(\"{LIGHT_CERT_VALIDITY_IN_H}\", lightCertDurationInHours.toString())\n\t\tbinding.certificateLightDetailHourInfo.text = hourInfoText\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\t\trequireActivity().window.overrideScreenBrightness(true)\n\t\tstartValidityTimer()\n\t}\n\n\toverride fun onPause() {\n\t\tsuper.onPause()\n\t\trequireActivity().window.overrideScreenBrightness(false)\n\t\tcancelValidityTimer()\n\t}\n\n\tprivate fun displayQrCode() {\n\t\tval decoded = qrCodeImage.fromBase64()\n\t\tval qrCodeBitmap = BitmapFactory.decodeByteArray(decoded, 0, decoded.size)\n\t\tval qrCodeDrawable = BitmapDrawable(resources, qrCodeBitmap)\n\t\tbinding.certificateLightDetailQrCode.setImageDrawable(qrCodeDrawable)\n\t}\n\n\t@SuppressLint(\"SetTextI18n\")\n\tprivate fun startValidityTimer() {\n\t\tval expirationTime = certificateHolder.expirationTime ?: return\n\n\t\tcancelValidityTimer()\n\t\tvalidityTimer = fixedRateTimer(period = TimeUnit.SECONDS.toMillis(1L)) {\n\t\t\tval now = Instant.now()\n\t\t\tval remainingTimeInSeconds = expirationTime.epochSecond - now.epochSecond\n\t\t\tval hours = remainingTimeInSeconds / 3600\n\t\t\tval minutes = remainingTimeInSeconds / 60 % 60\n\t\t\tval seconds = remainingTimeInSeconds % 60\n\n\t\t\tview?.post {\n\t\t\t\tif (isAdded) {\n\t\t\t\t\tbinding.certificateLightDetailValidity.text = \"%02d:%02d:%02d\".format(hours, minutes, seconds)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (remainingTimeInSeconds <= 0) {\n\t\t\t\tcancelValidityTimer()\n\t\t\t\tdeleteCertificateLightAndShowOriginal()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun cancelValidityTimer() {\n\t\tvalidityTimer?.cancel()\n\t\tvalidityTimer = null\n\t}\n\n\tprivate fun displayCertificateDetails() {\n\t\tval chLightCert = certificateHolder.certificate as? ChLightCert ?: return\n\n\t\tbinding.certificateLightDetailName.text = chLightCert.person.prettyName()\n\t\tval dateOfBirth = chLightCert.dateOfBirth.prettyPrintIsoDateTime(DEFAULT_DISPLAY_DATE_FORMATTER)\n\t\tbinding.certificateLightDetailBirthdate.text = dateOfBirth\n\t}\n\n\tprivate fun setupStatusInfo() {\n\t\tcertificatesViewModel.statefulWalletItems.observe(viewLifecycleOwner) { items ->\n\t\t\titems.filterIsInstance(StatefulWalletItem.VerifiedCertificate::class.java)\n\t\t\t\t.find { it.certificateHolder?.qrCodeData == certificateHolder.qrCodeData }?.let {\n\t\t\t\t\tupdateStatusInfo(it.state)\n\t\t\t\t}\n\t\t}\n\n\t\tcertificatesViewModel.startVerification(certificateHolder)\n\t}\n\n\tprivate fun updateStatusInfo(verificationState: VerificationState?) {\n\t\tval state = verificationState ?: return\n\t\twhen (state) {\n\t\t\tis VerificationState.LOADING -> displayLoadingState()\n\t\t\tis VerificationState.SUCCESS -> displaySuccessState()\n\t\t\tis VerificationState.INVALID -> displayInvalidState(state)\n\t\t\tis VerificationState.ERROR -> displayErrorState(state)\n\t\t}\n\n\t\tchangeAlpha(state)\n\t\tsetCertificateDetailTextColor(state.getNameDobColor())\n\t}\n\n\tprivate fun displayLoadingState() {\n\t\tshowLoadingIndicator(true)\n\t\tsetVerificationStateBubbleColor(R.color.greyish)\n\t\tbinding.certificateLightDetailVerificationStatus.setText(R.string.wallet_certificate_verifying)\n\t}\n\n\tprivate fun displaySuccessState() {\n\t\tshowLoadingIndicator(false)\n\t\tsetVerificationStateBubbleColor(R.color.blueish)\n\t\tbinding.certificateLightDetailStatusIcon.setImageResource(R.drawable.ic_flag_ch)\n\t\tbinding.certificateLightDetailVerificationStatus.setText(R.string.wallet_only_valid_in_switzerland)\n\t}\n\n\tprivate fun displayInvalidState(state: VerificationState.INVALID) {\n\t\tshowLoadingIndicator(false)\n\t\tsetVerificationStateBubbleColor(R.color.greyish)\n\t\tbinding.certificateLightDetailStatusIcon.setImageResource(R.drawable.ic_error_grey)\n\t\tbinding.certificateLightDetailVerificationStatus.text = state.getValidationStatusString(requireContext())\n\t}\n\n\tprivate fun displayErrorState(state: VerificationState.ERROR) {\n\t\tshowLoadingIndicator(false)\n\t\tsetVerificationStateBubbleColor(R.color.greyish)\n\t\tif (state.isOfflineMode()) {\n\t\t\tbinding.certificateLightDetailStatusIcon.setImageResource(R.drawable.ic_offline)\n\t\t\tbinding.certificateLightDetailVerificationStatus.text = getString(R.string.wallet_homescreen_offline).makeBold()\n\t\t} else {\n\t\t\tbinding.certificateLightDetailStatusIcon.setImageResource(R.drawable.ic_process_error_grey)\n\t\t\tbinding.certificateLightDetailVerificationStatus.text = getString(R.string.wallet_homescreen_network_error).makeBold()\n\t\t}\n\t}\n\n\tprivate fun showLoadingIndicator(isLoading: Boolean) {\n\t\tbinding.certificateLightDetailStatusLoading.isVisible = isLoading\n\t\tbinding.certificateLightDetailStatusIcon.isVisible = !isLoading\n\t}\n\n\tprivate fun setVerificationStateBubbleColor(@ColorRes colorId: Int) {\n\t\tval color = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificateLightDetailVerificationStatus.animateBackgroundTintColor(color)\n\t}\n\n\tprivate fun changeAlpha(state: VerificationState) {\n\t\tbinding.certificateLightDetailQrCode.alpha = state.getInvalidQrCodeAlpha(certificateHolder.certType == CertType.TEST)\n\t\tbinding.certificateLightDetailValidity.alpha = state.getInvalidContentAlpha()\n\t}\n\n\tprivate fun setCertificateDetailTextColor(@ColorRes colorId: Int) {\n\t\tval textColor = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificateLightDetailName.setTextColor(textColor)\n\t\tbinding.certificateLightDetailBirthdate.setTextColor(textColor)\n\t}\n\n\tprivate fun deleteCertificateLightAndShowOriginal() {\n\t\tparentFragmentManager.popBackStack()\n\t\tval originalCertificateHolder = certificateLightViewModel.deleteCertificateLight(certificateHolder)\n\t\tif (originalCertificateHolder != null) {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(0, R.anim.slide_exit, 0, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, CertificateDetailFragment.newInstance(originalCertificateHolder))\n\t\t\t\t.addToBackStack(CertificateDetailFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/CertificateLightErrorCodes.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.light\n\nobject CertificateLightErrorCodes {\n\n\tconst val RATE_LIMIT_EXCEEDED = \"CI|RL\"\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/CertificateLightPagerFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light\n\nimport android.annotation.SuppressLint\nimport android.graphics.BitmapFactory\nimport android.graphics.drawable.BitmapDrawable\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.annotation.ColorRes\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.viewModels\nimport ch.admin.bag.covidcertificate.common.util.makeBold\nimport ch.admin.bag.covidcertificate.common.views.animateBackgroundTintColor\nimport ch.admin.bag.covidcertificate.common.views.setCutOutCardBackground\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.fromBase64\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificateLightPagerBinding\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.util.*\nimport java.time.Instant\nimport java.util.*\nimport java.util.concurrent.TimeUnit\nimport kotlin.concurrent.fixedRateTimer\n\nclass CertificateLightPagerFragment : Fragment(R.layout.fragment_certificate_light_pager) {\n\n\tcompanion object {\n\t\tprivate const val ARG_QR_CODE_IMAGE = \"ARG_QR_CODE_IMAGE\"\n\t\tprivate const val ARG_CERTIFICATE_HOLDER = \"ARG_CERTIFICATE_HOLDER\"\n\n\t\tfun newInstance(qrCodeImage: String, certificateHolder: CertificateHolder) =\n\t\t\tCertificateLightPagerFragment().apply {\n\t\t\t\targuments = bundleOf(\n\t\t\t\t\tARG_QR_CODE_IMAGE to qrCodeImage,\n\t\t\t\t\tARG_CERTIFICATE_HOLDER to certificateHolder\n\t\t\t\t)\n\t\t\t}\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val certificateLightViewModel by viewModels<CertificateLightViewModel>()\n\n\tprivate var _binding: FragmentCertificateLightPagerBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var qrCodeImage: String\n\tprivate lateinit var certificateHolder: CertificateHolder\n\n\tprivate var validityTimer: Timer? = null\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\n\t\tqrCodeImage = arguments?.getString(ARG_QR_CODE_IMAGE)\n\t\t\t?: throw IllegalArgumentException(\"CertificateLightPagerFragment called without QR code image\")\n\t\tcertificateHolder = arguments?.getSerializable(ARG_CERTIFICATE_HOLDER) as? CertificateHolder\n\t\t\t?: throw IllegalArgumentException(\"CertificateLightPagerFragment called without certificate holder\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificateLightPagerBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.certificatePageCard.setCutOutCardBackground()\n\n\t\tdisplayQrCode()\n\t\tdisplayCertificateDetails()\n\t\tdisplayValidity()\n\n\t\tsetupStatusInfo()\n\n\t\tbinding.certificatePageCard.setOnClickListener {\n\t\t\tcertificatesViewModel.onCertificateLightClicked(qrCodeImage, certificateHolder)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t\tvalidityTimer?.cancel()\n\t\tvalidityTimer = null\n\t}\n\n\tprivate fun displayQrCode() {\n\t\tval decoded = qrCodeImage.fromBase64()\n\t\tval qrCodeBitmap = BitmapFactory.decodeByteArray(decoded, 0, decoded.size)\n\t\tval qrCodeDrawable = BitmapDrawable(resources, qrCodeBitmap)\n\t\tbinding.certificatePageQrCode.setImageDrawable(qrCodeDrawable)\n\t}\n\n\tprivate fun displayCertificateDetails() {\n\t\tbinding.certificatePageName.text = certificateHolder.certificate.getPersonName().prettyName()\n\t\tbinding.certificatePageBirthdate.text = certificateHolder.certificate.getFormattedDateOfBirth()\n\t}\n\n\t@SuppressLint(\"SetTextI18n\")\n\tprivate fun displayValidity() {\n\t\tval expirationTime = certificateHolder.expirationTime ?: return\n\n\t\tvalidityTimer?.cancel()\n\t\tvalidityTimer = fixedRateTimer(period = TimeUnit.SECONDS.toMillis(1L)) {\n\t\t\tval now = Instant.now()\n\t\t\tval remainingTimeInSeconds = expirationTime.epochSecond - now.epochSecond\n\t\t\tval hours = remainingTimeInSeconds / 3600\n\t\t\tval minutes = remainingTimeInSeconds / 60 % 60\n\t\t\tval seconds = remainingTimeInSeconds % 60\n\n\t\t\tview?.post {\n\t\t\t\tif (isAdded) {\n\t\t\t\t\tbinding.certificateLightPageValidity.text = \"%02d:%02d:%02d\".format(hours, minutes, seconds)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (remainingTimeInSeconds <= 0) {\n\t\t\t\tvalidityTimer?.cancel()\n\t\t\t\tvalidityTimer = null\n\t\t\t\tdeleteCertificateLightAndReloadWalletData()\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupStatusInfo() {\n\t\tcertificatesViewModel.statefulWalletItems.observe(viewLifecycleOwner) { items ->\n\t\t\titems.filterIsInstance(StatefulWalletItem.VerifiedCertificate::class.java)\n\t\t\t\t.find { it.certificateHolder?.qrCodeData == certificateHolder.qrCodeData }?.let {\n\t\t\t\t\tupdateStatusInfo(it.state)\n\t\t\t\t}\n\t\t}\n\n\t\tcertificatesViewModel.startVerification(certificateHolder)\n\t}\n\n\tprivate fun updateStatusInfo(verificationState: VerificationState?) {\n\t\tval state = verificationState ?: return\n\t\twhen (state) {\n\t\t\tis VerificationState.LOADING -> displayLoadingState()\n\t\t\tis VerificationState.SUCCESS -> displaySuccessState()\n\t\t\tis VerificationState.INVALID -> displayInvalidState(state)\n\t\t\tis VerificationState.ERROR -> displayErrorState(state)\n\t\t}\n\n\t\tchangeAlpha(state)\n\t\tsetCertificateDetailTextColor(state.getNameDobColor())\n\t}\n\n\tprivate fun displayLoadingState() {\n\t\tshowLoadingIndicator(true)\n\t\tsetVerificationStateBubbleColor(R.color.greyish)\n\t\tbinding.certificatePageStatusInfo.setText(R.string.wallet_certificate_verifying)\n\t\tbinding.certificatePageStatusInfoRedBorder.visibility = View.GONE\n\t}\n\n\tprivate fun displaySuccessState() {\n\t\tshowLoadingIndicator(false)\n\t\tsetVerificationStateBubbleColor(R.color.blueish)\n\t\tbinding.certificatePageStatusIcon.setImageResource(R.drawable.ic_flag_ch)\n\t\tbinding.certificatePageStatusInfoRedBorder.visibility = View.VISIBLE\n\t\tbinding.certificatePageStatusInfo.setText(R.string.verifier_verify_success_certificate_light_info)\n\t}\n\n\tprivate fun displayInvalidState(state: VerificationState.INVALID) {\n\t\tshowLoadingIndicator(false)\n\t\tsetVerificationStateBubbleColor(R.color.greyish)\n\t\tbinding.certificatePageStatusIcon.setImageResource(R.drawable.ic_error_grey)\n\t\tbinding.certificatePageStatusInfoRedBorder.visibility = View.GONE\n\t\tbinding.certificatePageStatusInfo.text = state.getValidationStatusString(requireContext())\n\t}\n\n\tprivate fun displayErrorState(state: VerificationState.ERROR) {\n\t\tshowLoadingIndicator(false)\n\t\tsetVerificationStateBubbleColor(R.color.greyish)\n\t\tbinding.certificatePageStatusInfoRedBorder.visibility = View.GONE\n\t\tif (state.isOfflineMode()) {\n\t\t\tbinding.certificatePageStatusIcon.setImageResource(R.drawable.ic_offline)\n\t\t\tbinding.certificatePageStatusInfo.text = getString(R.string.wallet_homescreen_offline).makeBold()\n\t\t} else {\n\t\t\tbinding.certificatePageStatusIcon.setImageResource(R.drawable.ic_process_error_grey)\n\t\t\tbinding.certificatePageStatusInfo.text = getString(R.string.wallet_homescreen_network_error).makeBold()\n\t\t}\n\t}\n\n\tprivate fun showLoadingIndicator(isLoading: Boolean) {\n\t\tbinding.certificatePageStatusLoading.isVisible = isLoading\n\t\tbinding.certificatePageStatusIcon.isVisible = !isLoading\n\t}\n\n\tprivate fun setVerificationStateBubbleColor(@ColorRes colorId: Int) {\n\t\tval color = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificatePageStatusInfo.animateBackgroundTintColor(color)\n\t}\n\n\tprivate fun changeAlpha(state: VerificationState) {\n\t\tbinding.certificatePageQrCode.alpha = state.getInvalidQrCodeAlpha(certificateHolder.certType == CertType.TEST)\n\t\tbinding.certificateLightPageValidity.alpha = state.getInvalidContentAlpha()\n\t}\n\n\tprivate fun setCertificateDetailTextColor(@ColorRes colorId: Int) {\n\t\tval textColor = ContextCompat.getColor(requireContext(), colorId)\n\t\tbinding.certificatePageName.setTextColor(textColor)\n\t\tbinding.certificatePageBirthdate.setTextColor(textColor)\n\t}\n\n\tprivate fun deleteCertificateLightAndReloadWalletData() {\n\t\tcertificateLightViewModel.deleteCertificateLight(certificateHolder)\n\t\tcertificatesViewModel.loadWalletData()\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/CertificateLightViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light\n\nimport android.app.Application\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.light.model.CertificateLightConversionResponse\nimport ch.admin.bag.covidcertificate.wallet.light.model.CertificateLightConversionState\nimport ch.admin.bag.covidcertificate.wallet.light.net.CertificateLightRepository\nimport ch.admin.bag.covidcertificate.wallet.light.net.CertificateLightResponse\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.launch\nimport java.io.IOException\n\nclass CertificateLightViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\tprivate val walletDataStorage = WalletDataSecureStorage.getInstance(application.applicationContext)\n\tprivate val repository = CertificateLightRepository.getInstance(application.applicationContext)\n\n\tprivate val conversionStateMutableLiveData = MutableLiveData<CertificateLightConversionState>()\n\tval conversionState = conversionStateMutableLiveData as LiveData<CertificateLightConversionState>\n\n\tprivate var conversionJob: Job? = null\n\n\tfun convert(certificateHolder: CertificateHolder) {\n\t\tconversionJob?.cancel()\n\n\t\tconversionStateMutableLiveData.value = CertificateLightConversionState.LOADING\n\t\tconversionJob = viewModelScope.launch(Dispatchers.IO) {\n\t\t\ttry {\n\t\t\t\tval response = repository.convert(certificateHolder)\n\t\t\t\twhen (response) {\n\t\t\t\t\tis CertificateLightConversionResponse.SUCCESS -> {\n\t\t\t\t\t\tdecodeAndStoreCertificateLight(certificateHolder, response.content)\n\t\t\t\t\t}\n\t\t\t\t\tis CertificateLightConversionResponse.RATE_LIMIT_EXCEEDED -> {\n\t\t\t\t\t\tconversionStateMutableLiveData.postValue(CertificateLightConversionState.RATE_LIMIT_EXCEEDED)\n\t\t\t\t\t}\n\t\t\t\t\tis CertificateLightConversionResponse.FAILED -> checkIfOffline()\n\t\t\t\t}\n\t\t\t} catch (e: IOException) {\n\t\t\t\tcheckIfOffline()\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Delete the certificate light in the storage and return the original certificate\n\t * @return The original certificate to which this certificate light belonged, or null if it didn't exist in the storage or\n\t * \t\t\tcould not be decoded (both should never be the case)\n\t */\n\tfun deleteCertificateLight(certificateHolder: CertificateHolder): CertificateHolder? {\n\t\tval regularCertificate = walletDataStorage.deleteCertificateLight(certificateHolder.qrCodeData)\n\t\treturn regularCertificate?.let {\n\t\t\tval decodeState = CovidCertificateSdk.Wallet.decode(it.qrCodeData)\n\t\t\tif (decodeState is DecodeState.SUCCESS) {\n\t\t\t\tdecodeState.certificateHolder\n\t\t\t} else {\n\t\t\t\tnull\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun decodeAndStoreCertificateLight(certificateHolder: CertificateHolder, response: CertificateLightResponse) {\n\t\tval decodeState = CovidCertificateSdk.Wallet.decode(response.payload)\n\t\twhen (decodeState) {\n\t\t\tis DecodeState.SUCCESS -> {\n\t\t\t\twalletDataStorage.storeCertificateLight(\n\t\t\t\t\tcertificateHolder,\n\t\t\t\t\tdecodeState.certificateHolder.qrCodeData,\n\t\t\t\t\tresponse.qrCode\n\t\t\t\t)\n\n\t\t\t\tconversionStateMutableLiveData.postValue(\n\t\t\t\t\tCertificateLightConversionState.SUCCESS(\n\t\t\t\t\t\tdecodeState.certificateHolder,\n\t\t\t\t\t\tresponse.qrCode\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t}\n\t\t\tis DecodeState.ERROR -> {\n\t\t\t\tconversionStateMutableLiveData.postValue(CertificateLightConversionState.ERROR(decodeState.error))\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun checkIfOffline() {\n\t\tval error = if (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\tStateError(ErrorCodes.GENERAL_NETWORK_FAILURE)\n\t\t} else {\n\t\t\tStateError(ErrorCodes.GENERAL_OFFLINE)\n\t\t}\n\t\tconversionStateMutableLiveData.postValue(CertificateLightConversionState.ERROR(error))\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/model/CertificateLightConversionResponse.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light.model\n\nimport ch.admin.bag.covidcertificate.wallet.light.net.CertificateLightResponse\n\nsealed class CertificateLightConversionResponse {\n\tdata class SUCCESS(val content: CertificateLightResponse) : CertificateLightConversionResponse()\n\tobject RATE_LIMIT_EXCEEDED : CertificateLightConversionResponse()\n\tobject FAILED : CertificateLightConversionResponse()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/model/CertificateLightConversionState.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light.model\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\n\nsealed class CertificateLightConversionState {\n\tobject LOADING : CertificateLightConversionState()\n\tdata class SUCCESS(val certificateHolder: CertificateHolder, val qrCodeImage: String) : CertificateLightConversionState()\n\tobject RATE_LIMIT_EXCEEDED : CertificateLightConversionState()\n\n\tdata class ERROR(val error: StateError) : CertificateLightConversionState()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/net/CertificateLightRepository.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light.net\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.common.extensions.setTimeouts\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.JwsInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.light.model.CertificateLightConversionResponse\nimport okhttp3.Cache\nimport okhttp3.OkHttpClient\nimport okhttp3.logging.HttpLoggingInterceptor\nimport retrofit2.Retrofit\nimport retrofit2.converter.moshi.MoshiConverterFactory\nimport java.util.concurrent.TimeUnit\n\nclass CertificateLightRepository private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<CertificateLightRepository, Context>(::CertificateLightRepository) {\n\t\tprivate const val STATUS_CODE_TOO_MANY_REQUESTS = 429\n\t}\n\n\tprivate val certificateLightService: CertificateLightService\n\n\tinit {\n\t\tval rootCa = CovidCertificateSdk.getRootCa(context)\n\t\tval expectedCommonName = CovidCertificateSdk.getExpectedCommonName()\n\t\tval okHttpBuilder = OkHttpClient.Builder()\n\t\t\t.certificatePinner(CertificatePinning.pinner)\n\t\t\t.addInterceptor(JwsInterceptor(rootCa, expectedCommonName))\n\t\t\t.addInterceptor(UserAgentInterceptor(Config.userAgent))\n\t\t\t.setTimeouts()\n\n\t\tval cacheSize = 5 * 1024 * 1024 // 5 MB\n\t\tval cache = Cache(context.cacheDir, cacheSize.toLong())\n\t\tokHttpBuilder.cache(cache)\n\n\t\tif (BuildConfig.DEBUG) {\n\t\t\tval httpInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)\n\t\t\tokHttpBuilder.addInterceptor(httpInterceptor)\n\t\t}\n\n\t\tcertificateLightService = Retrofit.Builder()\n\t\t\t.baseUrl(BuildConfig.BASE_URL_TRANSFORMATION)\n\t\t\t.client(okHttpBuilder.build())\n\t\t\t.addConverterFactory(MoshiConverterFactory.create())\n\t\t\t.build()\n\t\t\t.create(CertificateLightService::class.java)\n\t}\n\n\tsuspend fun convert(certificateHolder: CertificateHolder): CertificateLightConversionResponse {\n\t\tif (certificateHolder.containsChLightCert()) return CertificateLightConversionResponse.FAILED\n\n\t\tval body = CertificateLightRequestBody(certificateHolder.qrCodeData)\n\t\tval response = certificateLightService.convert(body)\n\n\t\treturn when {\n\t\t\tresponse.isSuccessful -> response.body()?.let {\n\t\t\t\tCertificateLightConversionResponse.SUCCESS(it)\n\t\t\t} ?: CertificateLightConversionResponse.FAILED\n\t\t\tresponse.code() == STATUS_CODE_TOO_MANY_REQUESTS -> CertificateLightConversionResponse.RATE_LIMIT_EXCEEDED\n\t\t\telse -> CertificateLightConversionResponse.FAILED\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/net/CertificateLightRequestBody.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class CertificateLightRequestBody(\n\tval hcert: String\n)\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/net/CertificateLightResponse.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class CertificateLightResponse(\n\tval payload: String,\n\tval qrCode: String\n)\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/light/net/CertificateLightService.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.light.net\n\nimport retrofit2.Response\nimport retrofit2.http.Body\nimport retrofit2.http.Headers\nimport retrofit2.http.POST\nimport retrofit2.http.Url\n\ninterface CertificateLightService {\n\n\t@Headers(\"Accept: application/json\")\n\t@POST(\"certificateLight\")\n\tsuspend fun convert(@Body body: CertificateLightRequestBody): Response<CertificateLightResponse>\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/list/CertificatesListFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.list\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.views.hideAnimated\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentCertificatesListBinding\nimport ch.admin.bag.covidcertificate.wallet.detail.CertificateDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.WalletItem\nimport ch.admin.bag.covidcertificate.wallet.light.CertificateLightDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.transfercode.TransferCodeDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\n\nclass CertificatesListFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): CertificatesListFragment = CertificatesListFragment()\n\t}\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\tprivate var _binding: FragmentCertificatesListBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentCertificatesListBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.certificatesOverviewToolbar.setNavigationOnClickListener { v: View? ->\n\t\t\tparentFragmentManager.popBackStack()\n\t\t}\n\t\tsetupRecyclerView()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupRecyclerView() {\n\t\tval recyclerView = binding.certificatesOverviewRecyclerView\n\n\t\tval itemTouchHelper = CertificatesListTouchHelper()\n\t\titemTouchHelper.attachToRecyclerView(recyclerView)\n\n\t\tval adapter = WalletDataListAdapter(\n\t\t\tonCertificateClicked = { openCertificateDetails(it.first, it.second) },\n\t\t\tonTransferCodeClicked = { openTransferCodeDetails(it) },\n\t\t\tonWalletItemMovedListener = { from, to -> certificatesViewModel.moveWalletDataItem(from, to) },\n\t\t\tonDragStartListener = { itemTouchHelper.startDrag(it) }\n\t\t)\n\n\t\trecyclerView.adapter = adapter\n\n\t\tbinding.certificatesOverviewLoadingGroup.isVisible = true\n\n\t\tcertificatesViewModel.walletItems.observe(viewLifecycleOwner) { walletItems ->\n\t\t\tif (walletItems.isEmpty()) {\n\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t}\n\t\t\tbinding.certificatesOverviewLoadingGroup.hideAnimated()\n\n\t\t\tval adapterItems = walletItems.map {\n\t\t\t\twhen (it) {\n\t\t\t\t\tis WalletItem.CertificateHolderItem -> WalletDataListItem.VerifiedCeritificateItem(\n\t\t\t\t\t\tStatefulWalletItem.VerifiedCertificate(it.qrCodeData, it.certificateHolder, VerificationState.LOADING),\n\t\t\t\t\t\tit.qrCodeImage\n\t\t\t\t\t)\n\t\t\t\t\tis WalletItem.TransferCodeHolderItem -> WalletDataListItem.TransferCodeItem(\n\t\t\t\t\t\tStatefulWalletItem.TransferCodeConversionItem(it.transferCode, TransferCodeConversionState.LOADING)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t\tadapter.setItems(adapterItems)\n\t\t}\n\n\t\tcertificatesViewModel.statefulWalletItems.observe(viewLifecycleOwner) { statefulWalletItems ->\n\t\t\tval adapterItems = adapter.getItems()\n\t\t\tval updatedAdapterItems = adapterItems.map { item ->\n\t\t\t\twhen (item) {\n\t\t\t\t\tis WalletDataListItem.VerifiedCeritificateItem -> {\n\t\t\t\t\t\tstatefulWalletItems\n\t\t\t\t\t\t\t.filterIsInstance(StatefulWalletItem.VerifiedCertificate::class.java)\n\t\t\t\t\t\t\t.find { cert -> cert.qrCodeData == item.verifiedCertificate.qrCodeData }\n\t\t\t\t\t\t\t?.let { cert -> item.copy(cert) }\n\t\t\t\t\t\t\t?: item\n\t\t\t\t\t}\n\t\t\t\t\tis WalletDataListItem.TransferCodeItem -> {\n\t\t\t\t\t\tstatefulWalletItems.filterIsInstance(StatefulWalletItem.TransferCodeConversionItem::class.java)\n\t\t\t\t\t\t\t.find {\n\t\t\t\t\t\t\t\tit.transferCode == item.conversionItem.transferCode\n\t\t\t\t\t\t\t}?.let {\n\t\t\t\t\t\t\t\titem.copy(conversionItem = it)\n\t\t\t\t\t\t\t} ?: item\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tadapter.setItems(updatedAdapterItems)\n\t\t}\n\n\t\tcertificatesViewModel.loadWalletData()\n\t}\n\n\tprivate fun openCertificateDetails(certificateHolder: CertificateHolder, qrCodeImage: String?) {\n\t\tif (certificateHolder.containsChLightCert() && qrCodeImage != null) {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, CertificateLightDetailFragment.newInstance(certificateHolder, qrCodeImage))\n\t\t\t\t.addToBackStack(CertificateLightDetailFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t} else {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, CertificateDetailFragment.newInstance(certificateHolder))\n\t\t\t\t.addToBackStack(CertificateDetailFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\tprivate fun openTransferCodeDetails(transferCode: TransferCodeModel) {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, TransferCodeDetailFragment.newInstance(transferCode))\n\t\t\t.addToBackStack(TransferCodeDetailFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/list/CertificatesListTouchHelper.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.list\n\nimport android.graphics.Canvas\nimport androidx.recyclerview.widget.ItemTouchHelper\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.wallet.R\n\nclass CertificatesListTouchHelper : ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(UP or DOWN, 0) {\n\n\toverride fun onMove(\n\t\trecyclerView: RecyclerView,\n\t\tviewHolder: RecyclerView.ViewHolder,\n\t\ttarget: RecyclerView.ViewHolder\n\t): Boolean {\n\t\tval adapter = recyclerView.adapter as WalletDataListAdapter\n\t\tval from = viewHolder.adapterPosition\n\t\tval to = target.adapterPosition\n\n\t\tadapter.notifyItemMoved(from, to)\n\t\tadapter.itemMoved(from, to)\n\n\t\treturn true\n\t}\n\n\toverride fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {\n\t\t// not used\n\t}\n\n\toverride fun onChildDraw(\n\t\tc: Canvas,\n\t\trecyclerView: RecyclerView,\n\t\tviewHolder: RecyclerView.ViewHolder,\n\t\tdX: Float,\n\t\tdY: Float,\n\t\tactionState: Int,\n\t\tisCurrentlyActive: Boolean\n\t) {\n\t\tsuper.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)\n\t\tif (isCurrentlyActive) {\n\t\t\tval itemView = viewHolder.itemView\n\t\t\titemView.elevation = itemView.context.resources.getDimension(R.dimen.default_elevation)\n\t\t}\n\t}\n\n\toverride fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {\n\t\tsuper.clearView(recyclerView, viewHolder)\n\t\tviewHolder.itemView.elevation = 0f\n\t}\n})"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/list/WalletDataListAdapter.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.list\n\nimport android.view.LayoutInflater\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\n\nclass WalletDataListAdapter(\n\tprivate val onCertificateClicked: ((Pair<CertificateHolder, String?>) -> Unit)? = null,\n\tprivate val onTransferCodeClicked: ((TransferCodeModel) -> Unit)? = null,\n\tprivate val onWalletItemMovedListener: ((from: Int, to: Int) -> Unit)? = null,\n\tprivate val onDragStartListener: ((RecyclerView.ViewHolder) -> Unit)? = null\n) : RecyclerView.Adapter<WalletDataListViewHolder>() {\n\n\tprivate val items = mutableListOf<WalletDataListItem>()\n\n\toverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WalletDataListViewHolder {\n\t\treturn if (viewType == 1) {\n\t\t\tWalletDataListViewHolder.TransferCodeListViewHolder.inflate(\n\t\t\t\tLayoutInflater.from(parent.context),\n\t\t\t\tparent,\n\t\t\t\tonDragStartListener\n\t\t\t)\n\t\t} else {\n\t\t\tWalletDataListViewHolder.CertificatesListViewHolder.inflate(\n\t\t\t\tLayoutInflater.from(parent.context),\n\t\t\t\tparent,\n\t\t\t\tonDragStartListener\n\t\t\t)\n\t\t}\n\t}\n\n\toverride fun getItemViewType(position: Int): Int {\n\t\treturn when (items[position]) {\n\t\t\tis WalletDataListItem.VerifiedCeritificateItem -> 0\n\t\t\tis WalletDataListItem.TransferCodeItem -> 1\n\t\t}\n\t}\n\n\toverride fun onBindViewHolder(holder: WalletDataListViewHolder, position: Int) {\n\t\twhen (holder) {\n\t\t\tis WalletDataListViewHolder.CertificatesListViewHolder -> holder.bindItem(\n\t\t\t\titems[position] as WalletDataListItem.VerifiedCeritificateItem,\n\t\t\t\tonCertificateClicked\n\t\t\t)\n\t\t\tis WalletDataListViewHolder.TransferCodeListViewHolder -> holder.bindItem(\n\t\t\t\titems[position] as WalletDataListItem.TransferCodeItem,\n\t\t\t\tonTransferCodeClicked\n\t\t\t)\n\t\t}\n\t}\n\n\toverride fun getItemCount(): Int = items.size\n\n\tfun getItems() = items.toList()\n\n\tfun setItems(newItems: List<WalletDataListItem>) {\n\t\titems.clear()\n\t\titems.addAll(newItems)\n\t\tnotifyDataSetChanged()\n\t}\n\n\tfun itemMoved(from: Int, to: Int) {\n\t\tval certificate = items.removeAt(from)\n\t\titems.add(to, certificate)\n\t\tonWalletItemMovedListener?.invoke(from, to)\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/list/WalletDataListItem.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.list\n\nimport android.view.View\nimport android.widget.TextView\nimport androidx.core.content.ContextCompat\nimport androidx.core.view.isVisible\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isChAusnahmeTest\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isPositiveRatTest\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isSerologicalTest\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.DccCert\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckNationalRulesState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckRevocationState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckSignatureState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemCertificateListBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemTransferCodeListBinding\nimport ch.admin.bag.covidcertificate.wallet.homescreen.pager.StatefulWalletItem\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.util.getInvalidContentAlpha\nimport ch.admin.bag.covidcertificate.wallet.util.getInvalidQrCodeAlpha\nimport ch.admin.bag.covidcertificate.wallet.util.hideExpiryInSwitzerland\nimport ch.admin.bag.covidcertificate.wallet.util.isOfflineMode\n\nsealed class WalletDataListItem {\n\tdata class VerifiedCeritificateItem(\n\t\tval verifiedCertificate: StatefulWalletItem.VerifiedCertificate,\n\t\tval qrCodeImage: String?,\n\t) : WalletDataListItem() {\n\n\t\tfun bindView(itemView: View, onCertificateClickListener: ((Pair<CertificateHolder, String?>) -> Unit)? = null) {\n\t\t\tval binding = ItemCertificateListBinding.bind(itemView)\n\n\t\t\tval currentConfig = ConfigRepository.getCurrentConfig(itemView.context)\n\t\t\tval state = hideExpiryInSwitzerland(currentConfig, verifiedCertificate.state)\n\n\t\t\tval certificate = verifiedCertificate.certificateHolder\n\t\t\tval certType = certificate?.certType\n\n\t\t\tval name = certificate?.certificate?.getPersonName()?.prettyName() ?: \"\"\n\t\t\tbinding.itemCertificateListName.text = name\n\t\t\tbinding.itemCertificateListName.alpha = state.getInvalidContentAlpha()\n\t\t\tbinding.itemCertificateListIconQr.alpha = state.getInvalidQrCodeAlpha(verifiedCertificate.certificateHolder?.certType == CertType.TEST)\n\n\t\t\tsetCertificateType(binding.itemCertificateListType, certificate, state, certType)\n\t\t\tbinding.itemCertificateListType.isVisible = certType != null\n\n\t\t\twhen (state) {\n\t\t\t\tis VerificationState.LOADING -> {\n\t\t\t\t\tbinding.itemCertificateListIconLoadingView.isVisible = true\n\t\t\t\t\tbinding.itemCertificateListIconStatusGroup.isVisible = true\n\t\t\t\t\tbinding.itemCertificateListIconStatus.isVisible = false\n\t\t\t\t\tbinding.itemCertificateListIconStatus.setImageResource(0)\n\t\t\t\t}\n\t\t\t\tis VerificationState.SUCCESS -> {\n\t\t\t\t\tbinding.itemCertificateListIconLoadingView.isVisible = false\n\t\t\t\t\tbinding.itemCertificateListIconStatusGroup.isVisible = false\n\t\t\t\t\tbinding.itemCertificateListIconStatus.isVisible = true\n\t\t\t\t\tbinding.itemCertificateListIconStatus.setImageResource(R.drawable.ic_info_blue)\n\t\t\t\t}\n\t\t\t\tis VerificationState.INVALID -> {\n\t\t\t\t\tbinding.itemCertificateListIconLoadingView.isVisible = false\n\t\t\t\t\tbinding.itemCertificateListIconStatusGroup.isVisible = true\n\t\t\t\t\tbinding.itemCertificateListIconStatus.isVisible = true\n\n\t\t\t\t\tval signatureState = state.signatureState\n\t\t\t\t\tval revocationState = state.revocationState\n\t\t\t\t\tval nationalRulesState = state.nationalRulesState\n\t\t\t\t\tval statusIconId: Int\n\t\t\t\t\twhen {\n\t\t\t\t\t\tsignatureState is CheckSignatureState.INVALID -> {\n\t\t\t\t\t\t\tif (signatureState.signatureErrorCode == ErrorCodes.SIGNATURE_TIMESTAMP_EXPIRED) {\n\t\t\t\t\t\t\t\tstatusIconId = R.drawable.ic_invalid_grey\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trevocationState is CheckRevocationState.INVALID -> {\n\t\t\t\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnationalRulesState is CheckNationalRulesState.NOT_VALID_ANYMORE -> {\n\t\t\t\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnationalRulesState is CheckNationalRulesState.NOT_YET_VALID -> {\n\t\t\t\t\t\t\tstatusIconId = R.drawable.ic_timelapse\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse -> {\n\t\t\t\t\t\t\tstatusIconId = R.drawable.ic_error_grey\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbinding.itemCertificateListIconStatus.setImageResource(statusIconId)\n\t\t\t\t}\n\t\t\t\tis VerificationState.ERROR -> {\n\t\t\t\t\tbinding.itemCertificateListIconLoadingView.isVisible = false\n\t\t\t\t\tbinding.itemCertificateListIconStatusGroup.isVisible = true\n\t\t\t\t\tbinding.itemCertificateListIconStatus.isVisible = true\n\n\t\t\t\t\tval statusIconId = if (state.isOfflineMode()) R.drawable.ic_offline else R.drawable.ic_process_error_grey\n\t\t\t\t\tbinding.itemCertificateListIconStatus.setImageResource(statusIconId)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (certificate != null) {\n\t\t\t\tbinding.root.setOnClickListener {\n\t\t\t\t\tonCertificateClickListener?.invoke(certificate to qrCodeImage)\n\t\t\t\t}\n\t\t\t\tbinding.root.isClickable = true\n\t\t\t} else {\n\t\t\t\tbinding.root.setOnClickListener(null)\n\t\t\t\tbinding.root.isClickable = false\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Set the text, text color and background of the certificate type, depending on the verification state and the certificate type\n\t\t */\n\t\tprivate fun setCertificateType(\n\t\t\tview: TextView,\n\t\t\tcertificate: CertificateHolder?,\n\t\t\tstate: VerificationState,\n\t\t\tcertType: CertType?,\n\t\t) {\n\t\t\tval isSerologicalTest = (certificate?.certificate as? DccCert)?.tests?.firstOrNull()?.isSerologicalTest() ?: false\n\t\t\tval isChAusnahmeTest = (certificate?.certificate as? DccCert)?.tests?.firstOrNull()?.isChAusnahmeTest() ?: false\n\t\t\tval isPositiveRatTest = (certificate?.certificate as? DccCert)?.tests?.firstOrNull()?.isPositiveRatTest() ?: false\n\n\t\t\tval backgroundColorId: Int\n\t\t\tval textColorId: Int\n\t\t\twhen {\n\t\t\t\tstate is VerificationState.INVALID -> {\n\t\t\t\t\tbackgroundColorId = R.color.greyish\n\t\t\t\t\ttextColorId = R.color.grey\n\t\t\t\t}\n\t\t\t\tcertType == CertType.TEST -> {\n\t\t\t\t\twhen {\n\t\t\t\t\t\tisSerologicalTest || isChAusnahmeTest || isPositiveRatTest -> {\n\t\t\t\t\t\t\tbackgroundColorId = R.color.blue\n\t\t\t\t\t\t\ttextColorId = R.color.white\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse -> {\n\t\t\t\t\t\t\tbackgroundColorId = R.color.blueish\n\t\t\t\t\t\t\ttextColorId = R.color.blue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcertType == CertType.LIGHT -> {\n\t\t\t\t\tbackgroundColorId = R.color.blueish\n\t\t\t\t\ttextColorId = R.color.blue\n\t\t\t\t}\n\t\t\t\telse -> {\n\t\t\t\t\tbackgroundColorId = R.color.blue\n\t\t\t\t\ttextColorId = R.color.white\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tval context = view.context\n\t\t\tval colorStateList = context.resources.getColorStateList(backgroundColorId, context.theme)\n\t\t\tview.backgroundTintList = colorStateList\n\t\t\tview.setTextColor(ContextCompat.getColor(context, textColorId))\n\n\t\t\tval typeLabelRes: Int = when (certType) {\n\t\t\t\tCertType.LIGHT -> R.string.wallet_certificate_list_light_certificate_badge\n\t\t\t\tCertType.RECOVERY -> R.string.certificate_reason_recovered\n\t\t\t\tCertType.TEST -> {\n\t\t\t\t\twhen {\n\t\t\t\t\t\tisSerologicalTest -> R.string.certificate_reason_recovered\n\t\t\t\t\t\tisChAusnahmeTest -> R.string.covid_certificate_ch_ausnahme_list_label\n\t\t\t\t\t\tisPositiveRatTest -> R.string.certificate_reason_recovered\n\t\t\t\t\t\telse -> R.string.certificate_reason_tested\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse -> R.string.certificate_reason_vaccinated\n\t\t\t}\n\t\t\tview.setText(typeLabelRes)\n\t\t}\n\t}\n\n\tdata class TransferCodeItem(\n\t\tval conversionItem: StatefulWalletItem.TransferCodeConversionItem\n\t) : WalletDataListItem() {\n\t\tfun bindView(itemView: View, onTransferCodeClickListener: ((TransferCodeModel) -> Unit)? = null) {\n\t\t\tval binding = ItemTransferCodeListBinding.bind(itemView)\n\n\t\t\twhen {\n\t\t\t\tconversionItem.transferCode.isFailed() -> {\n\t\t\t\t\tbinding.itemTransferCodeListIcon.setImageResource(R.drawable.ic_transfer_code_list_failed)\n\t\t\t\t\tbinding.itemTransferCodeListTitle.setText(R.string.wallet_transfer_code_state_expired)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.setText(R.string.wallet_transfer_code_old_code)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.setTextColor(ContextCompat.getColor(itemView.context, R.color.red))\n\t\t\t\t\tbinding.itemTransferCodeListInfo.isVisible = true\n\t\t\t\t\tbinding.itemTransferCodeListCode.isVisible = false\n\t\t\t\t}\n\t\t\t\tconversionItem.transferCode.isExpired() -> {\n\t\t\t\t\tbinding.itemTransferCodeListIcon.setImageResource(R.drawable.ic_transfer_code_list_valid)\n\t\t\t\t\tbinding.itemTransferCodeListTitle.setText(R.string.wallet_transfer_code_state_waiting)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.setText(R.string.wallet_transfer_code_old_code)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.setTextColor(ContextCompat.getColor(itemView.context, R.color.blue))\n\t\t\t\t\tbinding.itemTransferCodeListInfo.isVisible = true\n\t\t\t\t\tbinding.itemTransferCodeListCode.isVisible = false\n\t\t\t\t}\n\t\t\t\tconversionItem.conversionState is TransferCodeConversionState.ERROR\n\t\t\t\t\t\t&& conversionItem.conversionState.error.code != ErrorCodes.GENERAL_OFFLINE\n\t\t\t\t\t\t&& conversionItem.conversionState.error.code != DeliveryRepository.ERROR_CODE_INVALID_TIME -> {\n\t\t\t\t\tbinding.itemTransferCodeListIcon.setImageResource(R.drawable.ic_scanner_alert)\n\t\t\t\t\tbinding.itemTransferCodeListTitle.setText(R.string.wallet_transfer_code_state_expired)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.setText(R.string.wallet_transfer_code_unexpected_error_title)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.setTextColor(ContextCompat.getColor(itemView.context, R.color.red))\n\t\t\t\t\tbinding.itemTransferCodeListInfo.isVisible = true\n\t\t\t\t\tbinding.itemTransferCodeListCode.isVisible = false\n\t\t\t\t}\n\t\t\t\telse -> {\n\t\t\t\t\tbinding.itemTransferCodeListIcon.setImageResource(R.drawable.ic_transfer_code_list_valid)\n\t\t\t\t\tbinding.itemTransferCodeListTitle.setText(R.string.wallet_transfer_code_state_waiting)\n\t\t\t\t\tbinding.itemTransferCodeListCode.text = formatTransferCode(conversionItem.transferCode.code)\n\t\t\t\t\tbinding.itemTransferCodeListInfo.isVisible = false\n\t\t\t\t\tbinding.itemTransferCodeListCode.isVisible = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbinding.root.setOnClickListener {\n\t\t\t\tonTransferCodeClickListener?.invoke(conversionItem.transferCode)\n\t\t\t}\n\t\t}\n\n\t\tprivate fun formatTransferCode(code: String): String {\n\t\t\treturn code.chunked(3).joinToString(\" \")\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/list/WalletDataListViewHolder.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.list\n\nimport android.annotation.SuppressLint\nimport android.view.LayoutInflater\nimport android.view.MotionEvent\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.recyclerview.widget.RecyclerView\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\n\nsealed class WalletDataListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {\n\n\tclass CertificatesListViewHolder(itemView: View) : WalletDataListViewHolder(itemView) {\n\n\t\tcompanion object {\n\t\t\t@SuppressLint(\"ClickableViewAccessibility\")\n\t\t\tfun inflate(\n\t\t\t\tinflater: LayoutInflater,\n\t\t\t\tparent: ViewGroup,\n\t\t\t\tonStartDragListener: ((CertificatesListViewHolder) -> Unit)? = null\n\t\t\t): CertificatesListViewHolder {\n\t\t\t\tval itemView = inflater.inflate(R.layout.item_certificate_list, parent, false)\n\t\t\t\tval viewHolder = CertificatesListViewHolder(itemView)\n\t\t\t\titemView.findViewById<View>(R.id.item_certificate_list_drag_handle).setOnTouchListener { _, event ->\n\t\t\t\t\tif (event.actionMasked == MotionEvent.ACTION_DOWN) {\n\t\t\t\t\t\tonStartDragListener?.invoke(viewHolder)\n\t\t\t\t\t}\n\t\t\t\t\treturn@setOnTouchListener false\n\t\t\t\t}\n\t\t\t\treturn viewHolder\n\t\t\t}\n\t\t}\n\n\t\tfun bindItem(\n\t\t\titem: WalletDataListItem.VerifiedCeritificateItem,\n\t\t\tonCertificateClickListener: ((Pair<CertificateHolder, String?>) -> Unit)? = null\n\t\t) = item.bindView(itemView, onCertificateClickListener)\n\t}\n\n\tclass TransferCodeListViewHolder(itemView: View) : WalletDataListViewHolder(itemView) {\n\n\t\tcompanion object {\n\t\t\t@SuppressLint(\"ClickableViewAccessibility\")\n\t\t\tfun inflate(\n\t\t\t\tinflater: LayoutInflater,\n\t\t\t\tparent: ViewGroup,\n\t\t\t\tonStartDragListener: ((TransferCodeListViewHolder) -> Unit)? = null\n\t\t\t): TransferCodeListViewHolder {\n\t\t\t\tval itemView = inflater.inflate(R.layout.item_transfer_code_list, parent, false)\n\t\t\t\tval viewHolder = TransferCodeListViewHolder(itemView)\n\t\t\t\titemView.findViewById<View>(R.id.item_transfer_code_list_drag_handle).setOnTouchListener { _, event ->\n\t\t\t\t\tif (event.actionMasked == MotionEvent.ACTION_DOWN) {\n\t\t\t\t\t\tonStartDragListener?.invoke(viewHolder)\n\t\t\t\t\t}\n\t\t\t\t\treturn@setOnTouchListener false\n\t\t\t\t}\n\t\t\t\treturn viewHolder\n\t\t\t}\n\t\t}\n\n\t\tfun bindItem(\n\t\t\titem: WalletDataListItem.TransferCodeItem,\n\t\t\tonTransferCodeClickListener: ((TransferCodeModel) -> Unit)? = null\n\t\t) = item.bindView(itemView, onTransferCodeClickListener)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/networking/interceptor/AcceptLanguageHeaderInterceptor.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.networking.interceptor\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.extensions.updateLocale\nimport ch.admin.bag.covidcertificate.wallet.R\nimport okhttp3.Interceptor\nimport okhttp3.Request\nimport okhttp3.Response\nimport java.io.IOException\n\nclass AcceptLanguageHeaderInterceptor(val applicationContext: Context) : Interceptor {\n\n\tprivate val configSecureStorage = ConfigSecureStorage.getInstance(applicationContext)\n\t@Throws(IOException::class)\n\toverride fun intercept(chain: Interceptor.Chain): Response {\n\t\t val localeAdjustedContext = applicationContext.updateLocale(configSecureStorage.getUserLanguage())\n\t\t val languageKey = localeAdjustedContext.getString(R.string.language_key)\n\n\t\tval request: Request = chain.request()\n\t\t\t.newBuilder()\n\t\t\t.header(\"Accept-Language\", languageKey)\n\t\t\t.build()\n\t\treturn chain.proceed(request)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/OnboardingActivity.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding\n\nimport androidx.viewpager2.adapter.FragmentStateAdapter\nimport ch.admin.bag.covidcertificate.common.onboarding.BaseOnboardingActivity\nimport ch.admin.bag.covidcertificate.common.onboarding.SimpleOnboardingPagerAdapter\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.onboarding.agbupdate.UpdateboardingAgbFragment\nimport ch.admin.bag.covidcertificate.wallet.onboarding.certificatelight.UpdateboardingCertificateLightFragment\nimport ch.admin.bag.covidcertificate.wallet.onboarding.validity.UpdateboardingValidity1Fragment\nimport ch.admin.bag.covidcertificate.wallet.onboarding.validity.UpdateboardingValidity2Fragment\nimport ch.admin.bag.covidcertificate.wallet.onboarding.validity.UpdateboardingValidity3Fragment\nimport ch.admin.bag.covidcertificate.wallet.onboarding.validity.UpdateboardingValidity4Fragment\n\nclass OnboardingActivity : BaseOnboardingActivity() {\n\n\toverride fun getPagerAdapter(): FragmentStateAdapter {\n\n\t\treturn when (OnboardingType.valueOf(intent.getStringExtra(EXTRA_ONBOARDING_TYPE) ?: OnboardingType.FRESH_INSTALL.name)) {\n\t\t\tOnboardingType.FRESH_INSTALL -> SimpleOnboardingPagerAdapter(\n\t\t\t\tthis,\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { OnboardingPreInfoFragment.newInstance() },\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { OnboardingIntroFragment.newInstance() },\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider {\n\t\t\t\t\tOnboardingContentFragment.newInstance(\n\t\t\t\t\t\tR.string.wallet_onboarding_store_title,\n\t\t\t\t\t\tR.string.wallet_onboarding_store_header,\n\t\t\t\t\t\tR.drawable.illu_onboarding_privacy,\n\t\t\t\t\t\tR.string.wallet_onboarding_store_text1,\n\t\t\t\t\t\tR.drawable.ic_privacy,\n\t\t\t\t\t\tR.string.wallet_onboarding_store_text2,\n\t\t\t\t\t\tR.drawable.ic_validation\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider {\n\t\t\t\t\tOnboardingContentFragment.newInstance(\n\t\t\t\t\t\tR.string.wallet_onboarding_show_title,\n\t\t\t\t\t\tR.string.wallet_onboarding_show_header,\n\t\t\t\t\t\tR.drawable.illu_onboarding_covid_certificate,\n\t\t\t\t\t\tR.string.wallet_onboarding_show_text1,\n\t\t\t\t\t\tR.drawable.ic_qr_certificate,\n\t\t\t\t\t\tR.string.wallet_onboarding_show_text2,\n\t\t\t\t\t\tR.drawable.ic_check_mark\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { OnboardingAgbFragment.newInstance() },\n\t\t\t)\n\t\t\tOnboardingType.CERTIFICATE_LIGHT -> SimpleOnboardingPagerAdapter(\n\t\t\t\tthis,\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingCertificateLightFragment.newInstance() }\n\t\t\t)\n\t\t\tOnboardingType.AGB_UPDATE -> SimpleOnboardingPagerAdapter(\n\t\t\t\tthis,\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingAgbFragment.newInstance() }\n\t\t\t)\n\t\t\tOnboardingType.VALIDITY -> SimpleOnboardingPagerAdapter(\n\t\t\t\tthis,\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingValidity1Fragment.newInstance() },\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingValidity2Fragment.newInstance() },\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingValidity3Fragment.newInstance() },\n\t\t\t\tSimpleOnboardingPagerAdapter.FragmentProvider { UpdateboardingValidity4Fragment.newInstance() },\n\t\t\t)\n\t\t}\n\t}\n\n\tenum class OnboardingType {\n\t\tFRESH_INSTALL,\n\t\tCERTIFICATE_LIGHT,\n\t\tAGB_UPDATE,\n\t\tVALIDITY,\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/OnboardingAgbFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentHomeBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentOnboardingAgbBinding\n\nclass OnboardingAgbFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): OnboardingAgbFragment {\n\t\t\treturn OnboardingAgbFragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentOnboardingAgbBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentOnboardingAgbBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\n\t\tbinding.itemAgbLink.setOnClickListener { v ->\n\t\t\tval url = v.context.getString(R.string.wallet_terms_privacy_link)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/OnboardingContentFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding\n\nimport android.os.Bundle\nimport android.view.View\nimport android.widget.Button\nimport android.widget.ImageView\nimport android.widget.TextView\nimport androidx.annotation.DrawableRes\nimport androidx.annotation.StringRes\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.R\n\nclass OnboardingContentFragment : Fragment(R.layout.fragment_onboarding_content) {\n\n\tcompanion object {\n\t\tprivate const val ARG_RES_TITLE = \"RES_TITLE\"\n\t\tprivate const val ARG_RES_SUBTITLE = \"RES_SUBTITLE\"\n\t\tprivate const val ARG_RES_DESCRIPTION_1 = \"RES_DESCRIPTION_1\"\n\t\tprivate const val ARG_RES_DESCRIPTION_2 = \"RES_DESCRIPTION_2\"\n\t\tprivate const val ARG_RES_DESCR_ICON_1 = \"ARG_RES_DESCR_ICON_1\"\n\t\tprivate const val ARG_RES_DESCR_ICON_2 = \"ARG_RES_DESCR_ICON_2\"\n\t\tprivate const val ARG_RES_ILLUSTRATION = \"RES_ILLUSTRATION\"\n\n\t\tfun newInstance(\n\t\t\t@StringRes title: Int, @StringRes subtitle: Int,\n\t\t\t@DrawableRes illustration: Int, @StringRes description1: Int, @DrawableRes iconDescription1: Int,\n\t\t\t@StringRes description2: Int, @DrawableRes iconDescription2: Int\n\t\t): OnboardingContentFragment {\n\t\t\tval args = Bundle()\n\t\t\targs.putInt(ARG_RES_TITLE, title)\n\t\t\targs.putInt(ARG_RES_SUBTITLE, subtitle)\n\t\t\targs.putInt(ARG_RES_ILLUSTRATION, illustration)\n\t\t\targs.putInt(ARG_RES_DESCR_ICON_1, iconDescription1)\n\t\t\targs.putInt(ARG_RES_DESCRIPTION_1, description1)\n\t\t\targs.putInt(ARG_RES_DESCR_ICON_2, iconDescription2)\n\t\t\targs.putInt(ARG_RES_DESCRIPTION_2, description2)\n\n\t\t\tval fragment = OnboardingContentFragment()\n\t\t\tfragment.arguments = args\n\t\t\treturn fragment\n\t\t}\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tval args = requireArguments()\n\t\t(view.findViewById<View>(R.id.onboarding_title) as TextView).setText(args.getInt(ARG_RES_TITLE))\n\t\tval subtitle = view.findViewById<TextView>(R.id.onboarding_subtitle)\n\t\tsubtitle.setText(args.getInt(ARG_RES_SUBTITLE))\n\t\t(view.findViewById<View>(R.id.onboarding_illustration) as ImageView).setImageResource(args.getInt(ARG_RES_ILLUSTRATION))\n\t\tval icon1 = view.findViewById<ImageView>(R.id.onboarding_description_1_icon)\n\t\ticon1.setImageResource(args.getInt(ARG_RES_DESCR_ICON_1))\n\t\t(view.findViewById<View>(R.id.onboarding_description_1) as TextView).setText(args.getInt(ARG_RES_DESCRIPTION_1))\n\t\tval icon2 = view.findViewById<ImageView>(R.id.onboarding_description_2_icon)\n\t\ticon2.setImageResource(args.getInt(ARG_RES_DESCR_ICON_2))\n\t\t(view.findViewById<View>(R.id.onboarding_description_2) as TextView).setText(args.getInt(ARG_RES_DESCRIPTION_2))\n\t\tval continueButton = view.findViewById<Button>(R.id.onboarding_continue_button)\n\t\tcontinueButton.setOnClickListener { v: View? -> (activity as OnboardingActivity?)!!.continueToNextPage() }\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/OnboardingIntroFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentHomeBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentOnboardingIntroBinding\n\nclass OnboardingIntroFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): OnboardingIntroFragment {\n\t\t\treturn OnboardingIntroFragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentOnboardingIntroBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentOnboardingIntroBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener(View.OnClickListener { v: View? -> (activity as OnboardingActivity?)!!.continueToNextPage() })\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/OnboardingPreInfoFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentHomeBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentOnboardingIntroBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentOnboardingPreInfoBinding\n\nclass OnboardingPreInfoFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): OnboardingPreInfoFragment {\n\t\t\treturn OnboardingPreInfoFragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentOnboardingPreInfoBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentOnboardingPreInfoBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener { (activity as OnboardingActivity?)!!.continueToNextPage() }\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/agbupdate/UpdateboardingAgbFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding.agbupdate\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentUpdateboardingAgbBinding\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\n\nclass UpdateboardingAgbFragment : Fragment(R.layout.fragment_updateboarding_agb) {\n\n\tcompanion object {\n\t\tfun newInstance() = UpdateboardingAgbFragment()\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingAgbBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentUpdateboardingAgbBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\n\t\tbinding.itemAgbLink.setOnClickListener { v ->\n\t\t\tval url = getString(R.string.wallet_terms_privacy_link)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/certificatelight/UpdateboardingCertificateLightFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding.certificatelight\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentUpdateboardingCertificateLightBinding\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\n\nclass UpdateboardingCertificateLightFragment : Fragment(R.layout.fragment_updateboarding_certificate_light) {\n\n\tcompanion object {\n\t\tfun newInstance() = UpdateboardingCertificateLightFragment()\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingCertificateLightBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentUpdateboardingCertificateLightBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\n\t\tbinding.itemAgbLink.setOnClickListener { v ->\n\t\t\tval url = getString(R.string.wallet_terms_privacy_link)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/validity/UpdateboardingValidity1Fragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding.validity\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentUpdateboardingValidity1Binding\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\n\nclass UpdateboardingValidity1Fragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): UpdateboardingValidity1Fragment {\n\t\t\treturn UpdateboardingValidity1Fragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingValidity1Binding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentUpdateboardingValidity1Binding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/validity/UpdateboardingValidity2Fragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding.validity\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentUpdateboardingValidity2Binding\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\n\nclass UpdateboardingValidity2Fragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): UpdateboardingValidity2Fragment {\n\t\t\treturn UpdateboardingValidity2Fragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingValidity2Binding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentUpdateboardingValidity2Binding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/validity/UpdateboardingValidity3Fragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding.validity\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentUpdateboardingValidity3Binding\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\n\nclass UpdateboardingValidity3Fragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): UpdateboardingValidity3Fragment {\n\t\t\treturn UpdateboardingValidity3Fragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingValidity3Binding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentUpdateboardingValidity3Binding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/onboarding/validity/UpdateboardingValidity4Fragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.onboarding.validity\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentUpdateboardingValidity4Binding\nimport ch.admin.bag.covidcertificate.wallet.onboarding.OnboardingActivity\n\nclass UpdateboardingValidity4Fragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance(): UpdateboardingValidity4Fragment {\n\t\t\treturn UpdateboardingValidity4Fragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentUpdateboardingValidity4Binding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = FragmentUpdateboardingValidity4Binding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tbinding.onboardingContinueButton.setOnClickListener {\n\t\t\t(requireActivity() as OnboardingActivity).continueToNextPage()\n\t\t}\n\n\t\tbinding.link1.setOnClickListener { v ->\n\t\t\tval url = getString(R.string.wallet_update_boarding_page_4_link_1_url)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t\tbinding.link2.setOnClickListener { v ->\n\t\t\tval url = getString(R.string.wallet_update_boarding_page_4_link_2_url)\n\t\t\tUrlUtil.openUrl(v.context, url)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/PdfViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf\n\nimport android.app.Application\nimport android.content.ClipData\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport android.net.Uri\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.common.qr.QRCodeReaderHelper\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.pdf.export.PdfExportState\nimport ch.admin.bag.covidcertificate.wallet.pdf.net.PdfExportRepository\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.launch\nimport java.io.File\nimport java.io.IOException\nimport java.io.InputStream\n\nclass PdfViewModel(application: Application) : AndroidViewModel(application) {\n\n\tcompanion object {\n\t\tconst val PDF_EXPORT_FILE_PATH = \"certificate-pdfs\"\n\t\tconst val PDF_FILE_EXTENSION = \".pdf\"\n\t}\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\tprivate val walletDataStorage = WalletDataSecureStorage.getInstance(application.applicationContext)\n\tprivate val pdfExportRepository = PdfExportRepository.getInstance(application.applicationContext)\n\n\tprivate val pdfImportMutableLiveData: MutableLiveData<PdfImportState?> = MutableLiveData()\n\tval pdfImportState: LiveData<PdfImportState?> = pdfImportMutableLiveData\n\n\tprivate val pdfExportMutableLiveData: MutableLiveData<PdfExportState> = MutableLiveData()\n\tval pdfExportState: LiveData<PdfExportState> = pdfExportMutableLiveData\n\n\tprivate var exportJob: Job? = null\n\n\tfun importPdf(clipData: ClipData) {\n\t\tif (clipData.itemCount != 1 || clipData.getItemAt(0) == null || clipData.getItemAt(0).uri == null) {\n\t\t\tpdfImportMutableLiveData.postValue(\n\t\t\t\tPdfImportState.DONE(DecodeState.ERROR(StateError(PdfErrorCodes.FAILED_TO_READ, \"The PDF was not imported\")))\n\t\t\t)\n\t\t\treturn\n\t\t}\n\t\tval uri = clipData.getItemAt(0).uri\n\t\timportPdf(uri)\n\t}\n\n\tfun importPdf(uri: Uri) {\n\t\tpdfImportMutableLiveData.value = PdfImportState.LOADING\n\t\tviewModelScope.launch(Dispatchers.IO) {\n\t\t\ttry {\n\t\t\t\tval inputStream: InputStream? = getApplication<Application>().contentResolver.openInputStream(uri)\n\t\t\t\tval outputFile: File =\n\t\t\t\t\tFile.createTempFile(\"certificate\", PDF_FILE_EXTENSION, getApplication<Application>().cacheDir)\n\t\t\t\tinputStream?.copyTo(outputFile.outputStream())\n\n\t\t\t\tval bitmaps = QRCodeReaderHelper.pdfToBitmaps(getApplication<Application>(), outputFile)\n\n\t\t\t\tfor (bitmap in bitmaps) {\n\t\t\t\t\tval decode = QRCodeReaderHelper.decodeQrCode(bitmap)\n\t\t\t\t\tif (decode != null) {\n\t\t\t\t\t\tpdfImportMutableLiveData.postValue(PdfImportState.DONE(CovidCertificateSdk.Wallet.decode(decode)))\n\t\t\t\t\t\toutputFile.delete()\n\n\t\t\t\t\t\t// Stop as soon as we found the first QR code in the PDF\n\t\t\t\t\t\treturn@launch\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutputFile.delete()\n\t\t\t} catch (e: Exception) {\n\t\t\t\te.printStackTrace()\n\t\t\t}\n\n\t\t\tpdfImportMutableLiveData.postValue(\n\t\t\t\tPdfImportState.DONE(DecodeState.ERROR(StateError(PdfErrorCodes.NO_QR_CODE_FOUND, \"No QR found in the PDF\")))\n\t\t\t)\n\t\t}\n\t}\n\n\tfun exportPdf(certificateHolder: CertificateHolder, language: String) {\n\t\texportJob?.cancel()\n\n\t\tpdfExportMutableLiveData.value = PdfExportState.LOADING\n\t\texportJob = viewModelScope.launch(Dispatchers.IO) {\n\t\t\tval pdfData = walletDataStorage.getPdfForCertificate(certificateHolder, language)\n\n\t\t\tif (pdfData != null) {\n\t\t\t\t// Directly post the pdf data if it was already stored once\n\t\t\t\tpdfExportMutableLiveData.postValue(PdfExportState.SUCCESS(pdfData))\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\t// Convert the certificate to a pdf by calling the backend and storing the response\n\t\t\t\t\tval response = pdfExportRepository.convert(certificateHolder)\n\n\t\t\t\t\tif (response != null) {\n\t\t\t\t\t\twalletDataStorage.storePdfForCertificate(certificateHolder, response.pdf, language = language)\n\t\t\t\t\t\tpdfExportMutableLiveData.postValue(PdfExportState.SUCCESS(response.pdf))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval error = checkIfOffline()\n\t\t\t\t\t\tpdfExportMutableLiveData.postValue(PdfExportState.ERROR(error))\n\t\t\t\t\t}\n\t\t\t\t} catch (e: IOException) {\n\t\t\t\t\tval error = checkIfOffline()\n\t\t\t\t\tpdfExportMutableLiveData.postValue(PdfExportState.ERROR(error))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfun clearPdfImport() {\n\t\tpdfImportMutableLiveData.value = null\n\t}\n\n\t/**\n\t * Delete all temporary/cached PDF files from imports or exports\n\t */\n\tfun clearPdfFiles() {\n\t\t// Delete all imported pdfs\n\t\tval cacheDirectory = getApplication<Application>().cacheDir\n\t\tval importedPdfs = cacheDirectory.listFiles { _, name -> name.endsWith(PDF_FILE_EXTENSION) }\n\t\timportedPdfs?.forEach { it.delete() }\n\n\t\t// Delete all exported pdfs\n\t\tval exportedPdfDirectory = File(cacheDirectory, PDF_EXPORT_FILE_PATH)\n\t\tval exportedPdfs = exportedPdfDirectory.listFiles { _, name -> name.endsWith(PDF_FILE_EXTENSION) }\n\t\texportedPdfs?.forEach { it.delete() }\n\t}\n\n\tprivate fun checkIfOffline(): StateError {\n\t\treturn if (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\tStateError(ErrorCodes.GENERAL_NETWORK_FAILURE)\n\t\t} else {\n\t\t\tStateError(ErrorCodes.GENERAL_OFFLINE)\n\t\t}\n\t}\n}\n\nsealed class PdfImportState {\n\tdata class DONE(val decodeState: DecodeState) : PdfImportState()\n\tobject LOADING : PdfImportState()\n}\n\nobject PdfErrorCodes {\n\tconst val FAILED_TO_READ = \"PDF|FTR\"\n\tconst val NO_QR_CODE_FOUND = \"PDF|NCF\"\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/export/PdfExportFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.export\n\nimport android.annotation.SuppressLint\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.content.FileProvider\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.setFragmentResult\nimport androidx.fragment.app.viewModels\nimport ch.admin.bag.covidcertificate.common.util.makeSubStringBold\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.fromBase64\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentPdfExportBinding\nimport ch.admin.bag.covidcertificate.wallet.pdf.PdfViewModel\nimport java.io.File\n\nclass PdfExportFragment : Fragment(R.layout.fragment_pdf_export) {\n\n\tcompanion object {\n\t\tconst val REQUEST_KEY_PDF_EXPORT = \"REQUEST_KEY_PDF_EXPORT\"\n\t\tconst val RESULT_KEY_PDF_URI = \"RESULT_KEY_PDF_URI\"\n\t\tprivate const val ARG_CERTIFICATE_HOLDER = \"ARG_CERTIFICATE_HOLDER\"\n\t\tprivate const val PDF_EXPORT_FILE_SUFFIX = \"certificate\"\n\t\tprivate const val FILE_PROVIDER_AUTHORITY = BuildConfig.APPLICATION_ID + \".fileprovider\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder) = PdfExportFragment().apply {\n\t\t\targuments = bundleOf(\n\t\t\t\tARG_CERTIFICATE_HOLDER to certificateHolder\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate val viewModel by viewModels<PdfViewModel>()\n\n\tprivate var _binding: FragmentPdfExportBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE_HOLDER) as? CertificateHolder)\n\t\t\t?: throw IllegalArgumentException(\"PDF export fragment created without a CertificateHolder!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentPdfExportBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tbinding.certificatePdfExportButton.setOnClickListener { viewModel.exportPdf(certificateHolder, requireContext().getString(R.string.language_key)) }\n\t\tbinding.certificatePdfExportRetryButton.setOnClickListener { viewModel.exportPdf(certificateHolder,  requireContext().getString(R.string.language_key)) }\n\n\t\tviewModel.pdfExportState.observe(viewLifecycleOwner) { onExportStateChanged(it) }\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\t@SuppressLint(\"SetTextI18n\")\n\tprivate fun onExportStateChanged(state: PdfExportState) {\n\t\twhen (state) {\n\t\t\tis PdfExportState.LOADING -> {\n\t\t\t\tbinding.certificatePdfExportLoadingIndicator.isVisible = true\n\t\t\t\tbinding.certificatePdfExportContent.isVisible = false\n\t\t\t}\n\t\t\tis PdfExportState.ERROR -> {\n\t\t\t\tbinding.certificatePdfExportLoadingIndicator.isVisible = false\n\t\t\t\tbinding.certificatePdfExportContent.isVisible = true\n\t\t\t\tbinding.certificatePdfExportIntroLayout.isVisible = false\n\t\t\t\tbinding.certificatePdfExportErrorLayout.isVisible = true\n\t\t\t\tbinding.certificatePdfExportTitle.setText(R.string.wallet_certificate_export_detail_error_title)\n\t\t\t\tbinding.certificatePdfExportErrorCode.text = state.error.code\n\n\t\t\t\tif (state.error.code == ErrorCodes.GENERAL_OFFLINE) {\n\t\t\t\t\tbinding.certificatePdfExportStatusIcon.setImageResource(R.drawable.ic_no_connection)\n\t\t\t\t\tval title = getString(R.string.wallet_certificate_export_detail_network_error_title)\n\t\t\t\t\tval text = getString(R.string.wallet_certificate_export_detail_network_error_text)\n\t\t\t\t\tbinding.certificatePdfExportStatusText.text = \"$title\\n$text\".makeSubStringBold(title)\n\t\t\t\t} else {\n\t\t\t\t\tbinding.certificatePdfExportStatusIcon.setImageResource(R.drawable.ic_process_error)\n\t\t\t\t\tval title = getString(R.string.wallet_certificate_export_detail_general_error_title)\n\t\t\t\t\tval text = getString(R.string.wallet_certificate_export_detail_general_error_text)\n\t\t\t\t\tbinding.certificatePdfExportStatusText.text = \"$title\\n$text\".makeSubStringBold(title)\n\t\t\t\t}\n\t\t\t}\n\t\t\tis PdfExportState.SUCCESS -> {\n\t\t\t\tval folder = File(requireContext().cacheDir, PdfViewModel.PDF_EXPORT_FILE_PATH)\n\t\t\t\tif (!folder.exists()) folder.mkdirs()\n\n\t\t\t\tval pdfFile = File.createTempFile(\"${System.currentTimeMillis()}-$PDF_EXPORT_FILE_SUFFIX\", PdfViewModel.PDF_FILE_EXTENSION, folder)\n\t\t\t\tpdfFile.writeBytes(state.pdfData.fromBase64())\n\t\t\t\tval uri = FileProvider.getUriForFile(requireContext(), FILE_PROVIDER_AUTHORITY, pdfFile)\n\n\t\t\t\tsetFragmentResult(REQUEST_KEY_PDF_EXPORT, bundleOf(RESULT_KEY_PDF_URI to uri))\n\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/export/PdfExportShareContract.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.export\n\nimport android.content.Context\nimport android.content.Intent\nimport android.net.Uri\nimport androidx.activity.result.contract.ActivityResultContract\nimport ch.admin.bag.covidcertificate.wallet.R\n\nclass PdfExportShareContract : ActivityResultContract<Uri, Uri>() {\n\n\tprivate var uri: Uri? = null\n\n\toverride fun createIntent(context: Context, input: Uri?): Intent {\n\t\tthis.uri = input\n\t\tval intent = Intent(Intent.ACTION_SEND).apply {\n\t\t\ttype = \"application/pdf\"\n\t\t\tputExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.wallet_certificate))\n\t\t\tputExtra(Intent.EXTRA_STREAM, input)\n\t\t}\n\t\treturn Intent.createChooser(intent, null)\n\t}\n\n\toverride fun parseResult(resultCode: Int, intent: Intent?): Uri? {\n\t\treturn uri\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/export/PdfExportState.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.export\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\n\nsealed class PdfExportState {\n\tobject LOADING : PdfExportState()\n\tdata class SUCCESS(val pdfData: String) : PdfExportState()\n\tdata class ERROR(val error: StateError) : PdfExportState()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/net/PdfExportRepository.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.net\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.common.data.ConfigSecureStorage\nimport ch.admin.bag.covidcertificate.common.extensions.setTimeouts\nimport ch.admin.bag.covidcertificate.common.extensions.updateLocale\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.JwsInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.networking.interceptor.AcceptLanguageHeaderInterceptor\nimport okhttp3.Cache\nimport okhttp3.OkHttpClient\nimport okhttp3.logging.HttpLoggingInterceptor\nimport retrofit2.Retrofit\nimport retrofit2.converter.moshi.MoshiConverterFactory\nimport java.util.concurrent.TimeUnit\n\nclass PdfExportRepository private constructor(applicationContext: Context) {\n\n\tcompanion object : SingletonHolder<PdfExportRepository, Context>(::PdfExportRepository)\n\n\tprivate val pdfExportService: PdfExportService\n\n\tinit {\n\t\tval rootCa = CovidCertificateSdk.getRootCa(applicationContext)\n\t\tval expectedCommonName = CovidCertificateSdk.getExpectedCommonName()\n\t\tval okHttpBuilder = OkHttpClient.Builder()\n\t\t\t.certificatePinner(CertificatePinning.pinner)\n\t\t\t.addInterceptor(JwsInterceptor(rootCa, expectedCommonName))\n\t\t\t.addInterceptor(UserAgentInterceptor(Config.userAgent))\n\t\t\t.addInterceptor(AcceptLanguageHeaderInterceptor(applicationContext))\n\t\t\t.setTimeouts()\n\n\t\tval cacheSize = 5 * 1024 * 1024 // 5 MB\n\t\tval cache = Cache(applicationContext.cacheDir, cacheSize.toLong())\n\t\tokHttpBuilder.cache(cache)\n\n\t\tif (BuildConfig.DEBUG) {\n\t\t\tval httpInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)\n\t\t\tokHttpBuilder.addInterceptor(httpInterceptor)\n\t\t}\n\n\t\tpdfExportService = Retrofit.Builder()\n\t\t\t.baseUrl(BuildConfig.BASE_URL_TRANSFORMATION)\n\t\t\t.client(okHttpBuilder.build())\n\t\t\t.addConverterFactory(MoshiConverterFactory.create())\n\t\t\t.build()\n\t\t\t.create(PdfExportService::class.java)\n\t}\n\n\tsuspend fun convert(certificateHolder: CertificateHolder): PdfExportResponse? {\n\t\tif (certificateHolder.containsChLightCert()) return null\n\n\t\tval body = PdfExportRequestBody(certificateHolder.qrCodeData)\n\t\tval response = pdfExportService.convert(body)\n\n\t\treturn if (response.isSuccessful) response.body() else null\n\t}\n\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/net/PdfExportRequestBody.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class PdfExportRequestBody(\n\tval hcert: String\n)\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/net/PdfExportResponse.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class PdfExportResponse(\n\tval pdf: String\n)\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/pdf/net/PdfExportService.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.pdf.net\n\nimport retrofit2.Response\nimport retrofit2.http.Body\nimport retrofit2.http.Headers\nimport retrofit2.http.POST\n\ninterface PdfExportService {\n\n\t@Headers(\"Accept: application/json\")\n\t@POST(\"pdf\")\n\tsuspend fun   convert(@Body body: PdfExportRequestBody): Response<PdfExportResponse>\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/qr/VerifierInfoDialogFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.qr\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.DialogFragment\nimport ch.admin.bag.covidcertificate.common.R\nimport ch.admin.bag.covidcertificate.common.databinding.DialogFragmentInfoBoxBinding\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\n\nclass VerifierInfoDialogFragment : DialogFragment() {\n\n\tcompanion object {\n\t\tfun newInstance() = VerifierInfoDialogFragment()\n\t}\n\n\tprivate var _binding: DialogFragmentInfoBoxBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetStyle(STYLE_NO_TITLE, R.style.CovidCertificate_InfoDialog)\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {\n\t\t_binding = DialogFragmentInfoBoxBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsetupInfo()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setupInfo() {\n\t\tbinding.infoDialogTitle.setText(ch.admin.bag.covidcertificate.wallet.R.string.wallet_info_box_certificate_scan_title)\n\t\tbinding.infoDialogText.setText(ch.admin.bag.covidcertificate.wallet.R.string.wallet_info_box_certificate_scan_text)\n\n\t\tbinding.infoDialogUrlButton.apply {\n\t\t\tsetText(ch.admin.bag.covidcertificate.wallet.R.string.wallet_info_box_certificate_scan_button_check_app)\n\t\t\tisVisible = true\n\t\t\tsetOnClickListener {\n\t\t\t\tUrlUtil.openUrl(context, \"market://details?id=ch.admin.bag.covidcertificate.verifier\")\n\t\t\t\tdismiss()\n\t\t\t}\n\t\t}\n\t\tbinding.infoDialogCloseButton.apply {\n\t\t\ttext = getString(ch.admin.bag.covidcertificate.wallet.R.string.wallet_info_box_certificate_scan_close)\n\t\t\tsetOnClickListener { dismiss() }\n\t\t}\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/qr/WalletQrScanFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.qr\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport ch.admin.bag.covidcertificate.common.qr.QrScanFragment\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.add.CertificateAddFragment\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentQrScanBinding\nimport ch.admin.bag.covidcertificate.wallet.howto.HowToScanFragment\n\n\nclass WalletQrScanFragment : QrScanFragment() {\n\n\tcompanion object {\n\t\tval TAG = WalletQrScanFragment::class.java.canonicalName\n\n\t\tfun newInstance(): WalletQrScanFragment {\n\t\t\treturn WalletQrScanFragment()\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentQrScanBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride val viewFinderErrorColor: Int = R.color.red_error_qr_wallet\n\toverride val viewFinderColor: Int = R.color.blue\n\toverride val torchOnDrawable: Int = R.drawable.ic_light_on\n\toverride val torchOffDrawable: Int = R.drawable.ic_light_off_blue\n\toverride val zoomOnDrawable: Int = R.drawable.ic_zoom_on\n\toverride val zoomOffDrawable: Int = R.drawable.ic_zoom_off\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\tsuper.onCreateView(inflater, container, savedInstanceState)\n\n\t\t_binding = FragmentQrScanBinding.inflate(inflater, container, false)\n\n\t\ttoolbar = binding.fragmentQrScannerToolbar\n\t\tqrCodeScanner = binding.qrCodeScanner\n\t\tflashButton = binding.fragmentQrScannerFlashButton\n\t\terrorView = binding.fragmentQrScannerErrorView\n\t\terrorCodeView = binding.qrCodeScannerErrorCode\n\t\tzoomButton = binding.fragmentQrZoom\n\n\t\tinvalidCodeText = binding.qrCodeScannerInvalidCodeText\n\t\tcutOut = binding.cameraPreviewContainer\n\t\tviewFinderTopLeftIndicator = binding.qrCodeScannerTopLeftIndicator\n\t\tviewFinderTopRightIndicator = binding.qrCodeScannerTopRightIndicator\n\t\tviewFinderBottomLeftIndicator = binding.qrCodeScannerBottomLeftIndicator\n\t\tviewFinderBottomRightIndicator = binding.qrCodeScannerBottomRightIndicator\n\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tqrCodeScanner.post {\n\t\t\tactivateCamera()\n\t\t}\n\n\t\tbinding.qrCodeScannerButtonHow.setOnClickListener { showHowToScanFragment() }\n\t}\n\n\toverride fun decodeQrCodeData(qrCodeData: String, onDecodeSuccess: () -> Unit, onDecodeError: (StateError) -> Unit) {\n\t\twhen (val decodeState = CovidCertificateSdk.Wallet.decode(qrCodeData)) {\n\t\t\tis DecodeState.SUCCESS -> {\n\t\t\t\tval certificateHolder = decodeState.certificateHolder\n\n\t\t\t\t// If a certificate light was decoded, treat it as a prefix decode error to prevent a certificate light being added\n\t\t\t\tif (certificateHolder.containsChLightCert()) {\n\t\t\t\t\tonDecodeError.invoke(StateError(ErrorCodes.DECODE_PREFIX))\n\t\t\t\t} else {\n\t\t\t\t\tonDecodeSuccess.invoke()\n\t\t\t\t\tWalletSecureStorage.getInstance(requireContext()).addLastScanTimes(System.currentTimeMillis())\n\t\t\t\t\tshowCertificationAddFragment(decodeState.certificateHolder)\n\t\t\t\t}\n\t\t\t}\n\t\t\tis DecodeState.ERROR -> onDecodeError.invoke(decodeState.error)\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun showCertificationAddFragment(certificateHolder: CertificateHolder) {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, CertificateAddFragment.newInstance(certificateHolder, true))\n\t\t\t.addToBackStack(CertificateAddFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n\tprivate fun showHowToScanFragment() {\n\t\tparentFragmentManager.beginTransaction()\n\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t.replace(R.id.fragment_container, HowToScanFragment.newInstance())\n\t\t\t.addToBackStack(HowToScanFragment::class.java.canonicalName)\n\t\t\t.commit()\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/ratconversion/RatConversionFragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.ratconversion\n\nimport android.content.res.ColorStateList\nimport android.net.Uri\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.os.bundleOf\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentRatConversionBinding\n\nclass RatConversionFragment : Fragment(R.layout.fragment_rat_conversion) {\n\n\tcompanion object {\n\t\tprivate const val ARG_CERTIFICATE = \"ARG_CERTIFICATE\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder) = RatConversionFragment().apply {\n\t\t\targuments = bundleOf(ARG_CERTIFICATE to certificateHolder)\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentRatConversionBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\tprivate var isFormDataTransferChecked = false\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE) as? CertificateHolder)\n\t\t\t?: throw IllegalStateException(\"RatConversionFragment created without Certificate!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentRatConversionBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tsetupForm()\n\t\tupdateForm()\n\t}\n\n\tprivate fun setupForm() {\n\t\tbinding.ratConversionFormCheckbox.setOnClickListener {\n\t\t\tisFormDataTransferChecked = !isFormDataTransferChecked\n\t\t\tupdateForm()\n\t\t}\n\n\t\tbinding.ratConversionFormSubmit.setOnClickListener {\n\t\t\tval url = ConfigRepository.getCurrentConfig(requireContext())?.ratConversionFormUrl ?: return@setOnClickListener\n\t\t\tval hcert = certificatesViewModel.getRawHcertForCertificateHolder(certificateHolder) ?: return@setOnClickListener\n\t\t\tval encodedHcert = Uri.encode(hcert, Charsets.UTF_8.name())\n\t\t\tval finalUrl = \"$url#hcert=$encodedHcert\"\n\t\t\tUrlUtil.openUrl(requireContext(), finalUrl)\n\t\t}\n\n\t\tbinding.openWebsiteButton.setOnClickListener {\n\t\t\tval url = ConfigRepository.getCurrentConfig(requireContext())?.ratConversionFormUrl ?: return@setOnClickListener\n\t\t\tUrlUtil.openUrl(requireContext(), url)\n\t\t}\n\t}\n\n\tprivate fun updateForm() {\n\t\tif (isFormDataTransferChecked) {\n\t\t\tbinding.ratConversionFormCheckboxIcon.setImageResource(R.drawable.ic_checkbox_filled)\n\t\t\tbinding.ratConversionFormCheckboxIcon.imageTintList = ColorStateList.valueOf(resources.getColor(R.color.blue, null))\n\t\t} else {\n\t\t\tbinding.ratConversionFormCheckboxIcon.setImageResource(R.drawable.ic_checkbox_empty)\n\t\t\tbinding.ratConversionFormCheckboxIcon.imageTintList = ColorStateList.valueOf(resources.getColor(R.color.grey, null))\n\t\t}\n\t\tbinding.ratConversionFormSubmit.isEnabled = isFormDataTransferChecked\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/QrCodeRenewalErrorCodes.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.renewal\n\nobject QrCodeRenewalErrorCodes {\n\tconst val RATE_LIMIT_EXCEEDED = \"QR|RL\"\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/QrCodeRenewalFragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.renewal\n\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.text.bold\nimport androidx.core.text.buildSpannedString\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.setFragmentResult\nimport androidx.fragment.app.viewModels\nimport ch.admin.bag.covidcertificate.common.config.CertificateRenewalType\nimport ch.admin.bag.covidcertificate.common.extensions.collectWhenStarted\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.views.animateBackgroundTintColor\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.prettyPrint\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.decoder.CertificateDecoder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentQrCodeRenewalBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemIconTextInfoBinding\nimport ch.admin.bag.covidcertificate.wallet.renewal.model.QrCodeRenewalViewState\nimport java.time.Instant\n\nclass QrCodeRenewalFragment : Fragment() {\n\n\tcompanion object {\n\t\tconst val REQUEST_KEY_CERTIFICATE = \"REQUEST_KEY_CERTIFICATE\"\n\t\tconst val ARG_CERTIFICATE = \"ARG_CERTIFICATE\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder) = QrCodeRenewalFragment().apply {\n\t\t\targuments = bundleOf(ARG_CERTIFICATE to certificateHolder)\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentQrCodeRenewalBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val viewModel by viewModels<QrCodeRenewalViewModel>()\n\n\tprivate var renewalType: CertificateRenewalType? = null\n\tprivate var hasUserRenewedCertificate = false\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE) as? CertificateHolder)\n\t\t\t?: throw IllegalStateException(\"QR Code Renewal fragment created without Certificate!\")\n\n\t\tviewModel.setCertificate(certificateHolder)\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentQrCodeRenewalBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tshowCertificateExpirationDate(certificateHolder.expirationTime)\n\n\t\tbinding.qrCodeRenewalButton.setOnClickListener {\n\t\t\thasUserRenewedCertificate = true\n\t\t\tviewModel.renewCertificate(certificateHolder)\n\t\t}\n\n\t\tbinding.qrCodeRenewalFaqButton.setOnClickListener {\n\t\t\tval infos = ConfigRepository.getCurrentConfig(requireContext())\n\t\t\t\t?.getCertRenewalInfo(getString(R.string.language_key))\n\t\t\t\t?.get(renewalType)\n\n\t\t\tif (infos != null) {\n\t\t\t\tval url = infos.faqLinkUrl\n\t\t\t\tUrlUtil.openUrl(requireContext(), url)\n\t\t\t}\n\t\t}\n\n\t\tviewLifecycleOwner.collectWhenStarted(viewModel.viewState) {\n\t\t\twhen (it) {\n\t\t\t\tis QrCodeRenewalViewState.RenewalRequired -> showRenewalRequired()\n\t\t\t\tis QrCodeRenewalViewState.RenewalInProgress -> showRenewalInProgress()\n\t\t\t\tis QrCodeRenewalViewState.RenewalSuccessful -> showRenewalSuccessful(it)\n\t\t\t\tis QrCodeRenewalViewState.RenewalFailed -> showRenewalFailed(it)\n\t\t\t}\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun showCertificateExpirationDate(expirationTime: Instant?) {\n\t\tval expirationDateTime = expirationTime?.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)\n\t\tbinding.qrCodeExpirationDate.text = expirationDateTime\n\t}\n\n\tprivate fun showInfoList(renewalType: CertificateRenewalType) {\n\t\tthis.renewalType = renewalType\n\n\t\tval infos = ConfigRepository.getCurrentConfig(requireContext())\n\t\t\t?.getCertRenewalInfo(getString(R.string.language_key))\n\t\t\t?.get(renewalType)\n\n\t\tif (infos != null) {\n\t\t\tbinding.qrCodeRenewalInfoTitle.isVisible = true\n\t\t\tbinding.qrCodeRenewalInfoTitle.text = infos.heading\n\t\t\tbinding.qrCodeRenewalInfos.isVisible = true\n\t\t\tbinding.qrCodeRenewalInfos.removeAllViews()\n\t\t\tbinding.qrCodeRenewalFaqButton.isVisible = true\n\t\t\tbinding.qrCodeRenewalFaqButtonText.text = infos.faqLinkText\n\n\t\t\tval inflater = LayoutInflater.from(requireContext())\n\t\t\tinfos.infos.forEach { info ->\n\t\t\t\tval item = ItemIconTextInfoBinding.inflate(inflater, binding.qrCodeRenewalInfos, true)\n\t\t\t\tval iconId = requireContext().getDrawableIdentifier(info.iconAndroid)\n\t\t\t\titem.hintIcon.setImageResource(iconId)\n\t\t\t\titem.hintText.text = info.text\n\t\t\t}\n\t\t} else {\n\t\t\tbinding.qrCodeRenewalInfos.isVisible = false\n\t\t\tbinding.qrCodeRenewalInfoTitle.isVisible = false\n\t\t\tbinding.qrCodeRenewalFaqButton.isVisible = false\n\t\t}\n\t}\n\n\tprivate fun showRenewalRequired() {\n\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.redish)\n\t\tbinding.qrCodeExpirationBubble.animateBackgroundTintColor(backgroundColor)\n\t\tbinding.qrCodeRenewalStateInfo.animateBackgroundTintColor(backgroundColor)\n\t\tbinding.qrCodeRenewalStateIcon.setImageResource(R.drawable.ic_error)\n\t\tbinding.qrCodeRenewalStateIcon.isVisible = true\n\t\tbinding.qrCodeRenewalStateInfo.setText(R.string.wallet_certificate_renewal_required_info)\n\t\tbinding.qrCodeRenewalLoadingIndicator.isVisible = false\n\t\tbinding.qrCodeRenewalButton.isVisible = true\n\t\tbinding.qrCodeRenewalButton.isEnabled = true\n\t\tbinding.qrCodeRenewalButton.setText(R.string.wallet_certificate_renew_now_button)\n\t\tbinding.certificateDetailErrorCode.isVisible = false\n\t\tshowInfoList(CertificateRenewalType.EXPIRED)\n\t}\n\n\tprivate fun showRenewalInProgress() {\n\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.greyish)\n\t\tbinding.qrCodeExpirationBubble.animateBackgroundTintColor(backgroundColor)\n\t\tbinding.qrCodeRenewalStateInfo.animateBackgroundTintColor(backgroundColor)\n\t\tbinding.qrCodeRenewalStateInfo.setText(R.string.wallet_certificate_renewal_in_progress_info)\n\t\tbinding.qrCodeRenewalStateIcon.isVisible = false\n\t\tbinding.qrCodeRenewalLoadingIndicator.isVisible = true\n\t\tbinding.qrCodeRenewalButton.isVisible = true\n\t\tbinding.qrCodeRenewalButton.isEnabled = false\n\t\tbinding.certificateDetailErrorCode.isVisible = false\n\t\tshowInfoList(CertificateRenewalType.EXPIRED)\n\t}\n\n\tprivate fun showRenewalSuccessful(state: QrCodeRenewalViewState.RenewalSuccessful) {\n\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.greenish)\n\t\tval iconColor = ContextCompat.getColor(requireContext(), R.color.green)\n\t\tbinding.qrCodeExpirationBubble.animateBackgroundTintColor(backgroundColor)\n\t\tbinding.qrCodeRenewalStateInfo.animateBackgroundTintColor(backgroundColor)\n\t\tbinding.qrCodeRenewalStateIcon.setImageResource(R.drawable.ic_check_filled)\n\t\tbinding.qrCodeRenewalStateIcon.imageTintList = ColorStateList.valueOf(iconColor)\n\t\tbinding.qrCodeRenewalStateIcon.isVisible = true\n\t\tbinding.qrCodeRenewalStateInfo.setText(R.string.wallet_certificate_renewal_successful_info)\n\t\tbinding.qrCodeRenewalLoadingIndicator.isVisible = false\n\t\tbinding.qrCodeRenewalButton.isVisible = false\n\t\tbinding.certificateDetailErrorCode.isVisible = false\n\t\tshowInfoList(CertificateRenewalType.RENEWED)\n\n\t\tif (hasUserRenewedCertificate) {\n\t\t\t// If the user has actually renewed the certificate, reload the wallet data (because the certificate has become\n\t\t\t// effectively a new certificate due to the new QR code data), decode the new qr code data and set it as the fragment result\n\t\t\tcertificatesViewModel.loadWalletData()\n\t\t\thasUserRenewedCertificate = false\n\n\t\t\tval decodeState = CertificateDecoder.decode(state.newQrCodeData)\n\t\t\tif (decodeState is DecodeState.SUCCESS) {\n\t\t\t\tval newCertificateHolder = decodeState.certificateHolder\n\t\t\t\tshowCertificateExpirationDate(newCertificateHolder.expirationTime)\n\t\t\t\tsetFragmentResult(REQUEST_KEY_CERTIFICATE, bundleOf(ARG_CERTIFICATE to newCertificateHolder))\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun showRenewalFailed(state: QrCodeRenewalViewState.RenewalFailed) {\n\t\tval expirationColor = ContextCompat.getColor(requireContext(), R.color.greyish)\n\t\tval stateColor = ContextCompat.getColor(requireContext(), R.color.orangeish)\n\t\tbinding.qrCodeExpirationBubble.animateBackgroundTintColor(expirationColor)\n\t\tbinding.qrCodeRenewalStateInfo.animateBackgroundTintColor(stateColor)\n\t\tbinding.qrCodeRenewalStateIcon.isVisible = true\n\t\tbinding.qrCodeRenewalLoadingIndicator.isVisible = false\n\t\tbinding.qrCodeRenewalButton.isVisible = true\n\t\tbinding.qrCodeRenewalButton.isEnabled = true\n\t\tbinding.qrCodeRenewalButton.setText(R.string.error_action_retry)\n\t\tbinding.certificateDetailErrorCode.isVisible = true\n\t\tbinding.certificateDetailErrorCode.text = state.error.code\n\n\t\twhen (state.error.code) {\n\t\t\tErrorCodes.GENERAL_OFFLINE -> {\n\t\t\t\tbinding.qrCodeRenewalStateIcon.setImageResource(R.drawable.ic_no_connection)\n\t\t\t\tbinding.qrCodeRenewalStateInfo.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappend(getString(R.string.wallet_certificate_renewal_offline_error_title))\n\t\t\t\t\t}\n\t\t\t\t\tappendLine()\n\t\t\t\t\tappend(getString(R.string.wallet_certificate_renewal_offline_error_text))\n\t\t\t\t}\n\t\t\t}\n\t\t\tQrCodeRenewalErrorCodes.RATE_LIMIT_EXCEEDED -> {\n\t\t\t\tbinding.qrCodeRenewalStateIcon.setImageResource(R.drawable.ic_error_orange)\n\t\t\t\tbinding.qrCodeRenewalStateInfo.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappend(getString(R.string.wallet_certificate_renewal_rate_limit_error_title))\n\t\t\t\t\t}\n\t\t\t\t\tappendLine()\n\t\t\t\t\tappend(getString(R.string.wallet_certificate_renewal_rate_limit_error_text))\n\t\t\t\t}\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tbinding.qrCodeRenewalStateIcon.setImageResource(R.drawable.ic_process_error)\n\t\t\t\tbinding.qrCodeRenewalStateInfo.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappend(getString(R.string.wallet_certificate_renewal_general_error_title))\n\t\t\t\t\t}\n\t\t\t\t\tappendLine()\n\t\t\t\t\tappend(getString(R.string.wallet_certificate_renewal_general_error_text))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tshowInfoList(CertificateRenewalType.EXPIRED)\n\n\t\thasUserRenewedCertificate = false\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/QrCodeRenewalViewModel.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.renewal\n\nimport android.app.Application\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.renewal.model.QrCodeRenewalResponse\nimport ch.admin.bag.covidcertificate.wallet.renewal.model.QrCodeRenewalViewState\nimport ch.admin.bag.covidcertificate.wallet.renewal.net.QrCodeRenewalRepository\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.flow.MutableStateFlow\nimport kotlinx.coroutines.flow.asStateFlow\nimport kotlinx.coroutines.launch\nimport java.io.IOException\n\nclass QrCodeRenewalViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\tprivate val walletDataStorage = WalletDataSecureStorage.getInstance(application.applicationContext)\n\tprivate val repository = QrCodeRenewalRepository.getInstance(application.applicationContext)\n\n\tprivate val viewStateMutable = MutableStateFlow<QrCodeRenewalViewState>(QrCodeRenewalViewState.RenewalRequired)\n\tval viewState = viewStateMutable.asStateFlow()\n\n\tfun setCertificate(certificateHolder: CertificateHolder) {\n\t\tval wasRenewedRecently = walletDataStorage.wasCertificateRecentlyRenewed(certificateHolder)\n\t\tviewStateMutable.value = if (wasRenewedRecently) {\n\t\t\tQrCodeRenewalViewState.RenewalSuccessful(certificateHolder.qrCodeData)\n\t\t} else {\n\t\t\tQrCodeRenewalViewState.RenewalRequired\n\t\t}\n\t}\n\n\tfun renewCertificate(certificateHolder: CertificateHolder) {\n\t\tviewStateMutable.value = QrCodeRenewalViewState.RenewalInProgress\n\n\t\tviewModelScope.launch(Dispatchers.IO) {\n\t\t\ttry {\n\t\t\t\tval renewalResponse = repository.renew(certificateHolder)\n\t\t\t\tviewStateMutable.value = when (renewalResponse) {\n\t\t\t\t\tis QrCodeRenewalResponse.Success -> {\n\t\t\t\t\t\tval newQrCodeData = renewalResponse.hcert\n\t\t\t\t\t\twalletDataStorage.updateCertificateQrCodeData(certificateHolder, newQrCodeData)\n\n\t\t\t\t\t\tQrCodeRenewalViewState.RenewalSuccessful(newQrCodeData)\n\t\t\t\t\t}\n\t\t\t\t\tis QrCodeRenewalResponse.RateLimitExceeded -> {\n\t\t\t\t\t\tQrCodeRenewalViewState.RenewalFailed(StateError(QrCodeRenewalErrorCodes.RATE_LIMIT_EXCEEDED))\n\t\t\t\t\t}\n\t\t\t\t\tis QrCodeRenewalResponse.Failed -> {\n\t\t\t\t\t\tval error = getNetworkStateError()\n\t\t\t\t\t\tQrCodeRenewalViewState.RenewalFailed(error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e: IOException) {\n\t\t\t\tval error = getNetworkStateError()\n\t\t\t\tviewStateMutable.value = QrCodeRenewalViewState.RenewalFailed(error)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun getNetworkStateError(): StateError {\n\t\treturn if (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\tStateError(ErrorCodes.GENERAL_NETWORK_FAILURE)\n\t\t} else {\n\t\t\tStateError(ErrorCodes.GENERAL_OFFLINE)\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/model/QrCodeRenewalResponse.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.renewal.model\n\nsealed class QrCodeRenewalResponse {\n\tdata class Success(val hcert: String) : QrCodeRenewalResponse()\n\tobject RateLimitExceeded : QrCodeRenewalResponse()\n\tobject Failed : QrCodeRenewalResponse()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/model/QrCodeRenewalViewState.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.renewal.model\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\n\nsealed class QrCodeRenewalViewState {\n\tobject RenewalRequired : QrCodeRenewalViewState()\n\tobject RenewalInProgress : QrCodeRenewalViewState()\n\tdata class RenewalSuccessful(val newQrCodeData: String) : QrCodeRenewalViewState()\n\tdata class RenewalFailed(val error: StateError) : QrCodeRenewalViewState()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/net/QrCodeRenewalBody.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.renewal.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class QrCodeRenewalBody(val hcert: String)\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/net/QrCodeRenewalRepository.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.renewal.net\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.common.extensions.setTimeouts\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.JwsInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.renewal.model.QrCodeRenewalResponse\nimport okhttp3.Cache\nimport okhttp3.OkHttpClient\nimport okhttp3.logging.HttpLoggingInterceptor\nimport retrofit2.Retrofit\nimport retrofit2.converter.moshi.MoshiConverterFactory\n\nclass QrCodeRenewalRepository private constructor(context: Context) {\n\n\tcompanion object : SingletonHolder<QrCodeRenewalRepository, Context>(::QrCodeRenewalRepository) {\n\t\tprivate const val STATUS_CODE_TOO_MANY_REQUESTS = 429\n\t}\n\n\tprivate val renewalService: QrCodeRenewalService\n\n\tinit {\n\t\tval rootCa = CovidCertificateSdk.getRootCa(context)\n\t\tval expectedCommonName = CovidCertificateSdk.getExpectedCommonName()\n\t\tval okHttpBuilder = OkHttpClient.Builder()\n\t\t\t.certificatePinner(CertificatePinning.pinner)\n\t\t\t.addInterceptor(JwsInterceptor(rootCa, expectedCommonName))\n\t\t\t.addInterceptor(UserAgentInterceptor(Config.userAgent))\n\t\t\t.setTimeouts()\n\n\t\tval cacheSize = 5 * 1024 * 1024 // 5 MB\n\t\tval cache = Cache(context.cacheDir, cacheSize.toLong())\n\t\tokHttpBuilder.cache(cache)\n\n\t\tif (BuildConfig.DEBUG) {\n\t\t\tval httpInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)\n\t\t\tokHttpBuilder.addInterceptor(httpInterceptor)\n\t\t}\n\n\t\trenewalService = Retrofit.Builder()\n\t\t\t.baseUrl(BuildConfig.BASE_URL_TRANSFORMATION)\n\t\t\t.client(okHttpBuilder.build())\n\t\t\t.addConverterFactory(MoshiConverterFactory.create())\n\t\t\t.build()\n\t\t\t.create(QrCodeRenewalService::class.java)\n\t}\n\n\tsuspend fun renew(certificateHolder: CertificateHolder): QrCodeRenewalResponse {\n\t\tif (certificateHolder.containsChLightCert()) return QrCodeRenewalResponse.Failed\n\n\t\tval body = QrCodeRenewalBody(certificateHolder.qrCodeData)\n\t\tval response = renewalService.renew(body)\n\n\t\treturn when {\n\t\t\tresponse.isSuccessful -> {\n\t\t\t\tresponse.body()?.let { QrCodeRenewalResponse.Success(it.hcert) } ?: QrCodeRenewalResponse.Failed\n\t\t\t}\n\t\t\tresponse.code() == STATUS_CODE_TOO_MANY_REQUESTS -> QrCodeRenewalResponse.RateLimitExceeded\n\t\t\telse -> QrCodeRenewalResponse.Failed\n\t\t}\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/renewal/net/QrCodeRenewalService.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.renewal.net\n\nimport retrofit2.Response\nimport retrofit2.http.Body\nimport retrofit2.http.Headers\nimport retrofit2.http.POST\n\ninterface QrCodeRenewalService {\n\n\t@Headers(\"Accept: application/json\")\n\t@POST(\"renew\")\n\tsuspend fun renew(@Body body: QrCodeRenewalBody): Response<QrCodeRenewalBody>\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeCreationFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.viewModels\nimport androidx.transition.TransitionManager\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentTransferCodeCreationBinding\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeCreationState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeBubbleView\n\nclass TransferCodeCreationFragment : Fragment(R.layout.fragment_transfer_code_creation) {\n\n\tcompanion object {\n\t\tprivate const val MAX_DURATION_IN_BACKGROUND_FOR_AUTO_CLOSE_ON_SUCCESS = 2 * 60 * 1000L // 2 min\n\n\t\tfun newInstance() = TransferCodeCreationFragment()\n\t}\n\n\tprivate var _binding: FragmentTransferCodeCreationBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val viewModel by viewModels<TransferCodeCreationViewModel>()\n\n\tprivate var lastOpened = 0L\n\tprivate var transferCodeCreated = false\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentTransferCodeCreationBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\t\tbinding.transferCodeCreationDoneButton.setOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tviewModel.creationState.observe(viewLifecycleOwner) { onViewStateChanged(it) }\n\t\tviewModel.createAndRegisterTransferCode()\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\toverride fun onResume() {\n\t\tsuper.onResume()\n\n\t\tif (transferCodeCreated && System.currentTimeMillis() - lastOpened > MAX_DURATION_IN_BACKGROUND_FOR_AUTO_CLOSE_ON_SUCCESS) {\n\t\t\tparentFragmentManager.popBackStack()\n\t\t}\n\t}\n\n\toverride fun onPause() {\n\t\tsuper.onPause()\n\t\tlastOpened = System.currentTimeMillis()\n\t}\n\n\tprivate fun onViewStateChanged(state: TransferCodeCreationState) {\n\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\twhen (state) {\n\t\t\tTransferCodeCreationState.LOADING -> {\n\t\t\t\tbinding.transferCodeLoadingIndicator.isVisible = true\n\t\t\t\tbinding.transferCodeContent.isVisible = false\n\t\t\t}\n\t\t\tis TransferCodeCreationState.SUCCESS -> {\n\t\t\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\t\t\tbinding.transferCodeContent.isVisible = true\n\t\t\t\tbinding.transferCodeNextSteps.isVisible = true\n\t\t\t\tbinding.transferCodeErrorLayout.isVisible = false\n\t\t\t\tbinding.transferCodeCreationDoneLayout.isVisible = true\n\n\t\t\t\tbinding.transferCodeCreationTitle.setText(R.string.wallet_transfer_code_code_created_title)\n\t\t\t\tbinding.transferCodeBubble.setTransferCode(state.transferCode)\n\t\t\t\tbinding.transferCodeBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Created)\n\n\t\t\t\ttransferCodeCreated = true\n\t\t\t}\n\t\t\tis TransferCodeCreationState.ERROR -> {\n\t\t\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\t\t\tbinding.transferCodeContent.isVisible = true\n\t\t\t\tbinding.transferCodeNextSteps.isVisible = false\n\t\t\t\tbinding.transferCodeErrorLayout.isVisible = true\n\t\t\t\tbinding.transferCodeCreationDoneLayout.isVisible = false\n\n\t\t\t\tbinding.transferCodeCreationTitle.setText(R.string.wallet_transfer_code_error_title)\n\t\t\t\tbinding.transferCodeBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Error(state.error))\n\t\t\t\tbinding.transferCodeErrorCode.text = state.error.code\n\t\t\t\tbinding.transferCodeCreationRetryButton.setOnClickListener {\n\t\t\t\t\tviewModel.createAndRegisterTransferCode()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeCreationViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport android.app.Application\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataItem\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.Luhn\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.TransferCodeCrypto\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.*\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliverySpec\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.launch\nimport kotlinx.coroutines.withContext\nimport java.io.IOException\nimport java.security.KeyPair\nimport java.time.Instant\nimport java.time.temporal.ChronoUnit\n\nclass TransferCodeCreationViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\tprivate val deliveryRepository = DeliveryRepository.getInstance(DeliverySpec(application.applicationContext, BuildConfig.BASE_URL_DELIVERY))\n\tprivate val walletDataStorage = WalletDataSecureStorage.getInstance(application.applicationContext)\n\n\tprivate val creationStateMutableLiveData = MutableLiveData<TransferCodeCreationState>()\n\tval creationState = creationStateMutableLiveData as LiveData<TransferCodeCreationState>\n\n\tprivate var transferCodeCreationJob: Job? = null\n\n\tfun createAndRegisterTransferCode() {\n\t\tif (transferCodeCreationJob != null && transferCodeCreationJob?.isActive == true) return\n\n\t\tcreationStateMutableLiveData.value = TransferCodeCreationState.LOADING\n\t\ttransferCodeCreationJob = viewModelScope.launch(Dispatchers.Default) {\n\t\t\tval transferCode = Luhn.generateNewTransferCode()\n\t\t\tval keyPair = TransferCodeCrypto.createKeyPair(transferCode, getApplication())\n\n\t\t\tif (keyPair != null) {\n\t\t\t\tregisterTransferCode(transferCode, keyPair)\n\t\t\t} else {\n\t\t\t\tcreationStateMutableLiveData.postValue(TransferCodeCreationState.ERROR(StateError(TransferCodeErrorCodes.INAPP_DELIVERY_KEYPAIR_GENERATION_FAILED)))\n\t\t\t}\n\n\t\t\ttransferCodeCreationJob = null\n\t\t}\n\t}\n\n\tprivate suspend fun registerTransferCode(transferCode: String, keyPair: KeyPair) = withContext(Dispatchers.IO) {\n\t\ttry {\n\t\t\tval registrationResponse = deliveryRepository.register(transferCode, keyPair)\n\t\t\twhen (registrationResponse) {\n\t\t\t\tTransferCodeCreationResponse.SUCCESSFUL -> {\n\t\t\t\t\tval now = Instant.now()\n\t\t\t\t\tval expiresAt = now.plus(TRANSFER_CODE_VALIDITY_DURATION)\n\t\t\t\t\tval failsAt = expiresAt.plus(TRANSFER_CODE_DURATION_FAILS_AFTER_EXPIRES)\n\t\t\t\t\tval transferCodeModel = TransferCodeModel(transferCode, now, now, expiresAt, failsAt)\n\t\t\t\t\twalletDataStorage.saveWalletDataItem(WalletDataItem.TransferCodeWalletData(transferCodeModel))\n\t\t\t\t\tcreationStateMutableLiveData.postValue(TransferCodeCreationState.SUCCESS(transferCodeModel))\n\t\t\t\t}\n\t\t\t\tTransferCodeCreationResponse.INVALID_TIME -> {\n\t\t\t\t\tcreationStateMutableLiveData.postValue(TransferCodeCreationState.ERROR(StateError(DeliveryRepository.ERROR_CODE_INVALID_TIME)))\n\t\t\t\t}\n\t\t\t\telse -> {\n\t\t\t\t\tcreationStateMutableLiveData.postValue(TransferCodeCreationState.ERROR(StateError(TransferCodeErrorCodes.INAPP_DELIVERY_REGISTRATION_FAILED)))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e: IOException) {\n\t\t\tif (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\t\tcreationStateMutableLiveData.postValue(TransferCodeCreationState.ERROR(StateError(ErrorCodes.GENERAL_NETWORK_FAILURE)))\n\t\t\t} else {\n\t\t\t\tcreationStateMutableLiveData.postValue(TransferCodeCreationState.ERROR(StateError(ErrorCodes.GENERAL_OFFLINE)))\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeDetailFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport android.annotation.SuppressLint\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.appcompat.app.AlertDialog\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.viewModels\nimport androidx.transition.TransitionManager\nimport ch.admin.bag.covidcertificate.common.config.ConfigViewModel\nimport ch.admin.bag.covidcertificate.common.config.FaqModel\nimport ch.admin.bag.covidcertificate.common.faq.FaqAdapter\nimport ch.admin.bag.covidcertificate.common.faq.model.Faq\nimport ch.admin.bag.covidcertificate.common.faq.model.Header\nimport ch.admin.bag.covidcertificate.common.faq.model.IntroSection\nimport ch.admin.bag.covidcertificate.common.faq.model.Question\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.util.makeSubStringBold\nimport ch.admin.bag.covidcertificate.common.views.rotate\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.prettyPrint\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentTransferCodeDetailBinding\nimport ch.admin.bag.covidcertificate.wallet.detail.CertificateDetailFragment\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeBubbleView\n\nclass TransferCodeDetailFragment : Fragment(R.layout.fragment_transfer_code_detail) {\n\n\tcompanion object {\n\t\tprivate const val ARG_TRANSFER_CODE = \"ARG_TRANSFER_CODE\"\n\t\tprivate const val DATE_REPLACEMENT_STRING = \"{DATE}\"\n\t\tprivate const val FORCE_RELOAD_DELAY = 1000L\n\n\t\tfun newInstance(transferCode: TransferCodeModel) = TransferCodeDetailFragment().apply {\n\t\t\targuments = bundleOf(ARG_TRANSFER_CODE to transferCode)\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentTransferCodeDetailBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val certificatesViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val transferCodeViewModel by viewModels<TransferCodeViewModel>()\n\tprivate val faqAdapter = FaqAdapter { url: String -> context?.let { UrlUtil.openUrl(it, url) } }\n\tprivate var transferCode: TransferCodeModel? = null\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\ttransferCode = (arguments?.getSerializable(ARG_TRANSFER_CODE) as? TransferCodeModel)\n\t\t\t?: throw IllegalStateException(\"${this::class.java.simpleName} created without a transfer code argument!\")\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentTransferCodeDetailBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tval transferCode = transferCode ?: return\n\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\t\tbinding.transferCodeDetailFaqList.adapter = faqAdapter\n\n\t\tbinding.transferCodeDetailBubble.setTransferCode(transferCode)\n\t\tsetTransferCodeViewState(false)\n\n\t\tbinding.transferCodeRefreshButton.setOnClickListener { onRefreshButtonClicked() }\n\t\tbinding.transferCodeDetailDeleteButton.setOnClickListener { onDeleteButtonClicked() }\n\n\t\tcertificatesViewModel.configLiveData.observe(viewLifecycleOwner) { config ->\n\t\t\tval languageKey = getString(R.string.language_key)\n\t\t\tconfig.getTransferWorksFaqs(languageKey)?.let {\n\t\t\t\tshowTransferCodeFaqItems(it)\n\t\t\t}\n\t\t}\n\n\t\ttransferCodeViewModel.conversionState.observe(viewLifecycleOwner) { onConversionStateChanged(it) }\n\n\t\ttransferCodeViewModel.downloadCertificateForTransferCode(transferCode)\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun setTransferCodeViewState(isRefreshing: Boolean, error: StateError? = null) {\n\t\tval transferCode = transferCode ?: return\n\t\tTransitionManager.beginDelayedTransition(binding.root)\n\t\twhen {\n\t\t\ttransferCode.isFailed() -> {\n\t\t\t\tbinding.transferCodeDetailWaitingImage.isVisible = false\n\t\t\t\tbinding.transferCodeDetailImage.isVisible = true\n\t\t\t\tbinding.transferCodeDetailImage.setImageResource(R.drawable.illu_transfer_code_failed)\n\t\t\t\tbinding.transferCodeDetailTitle.setText(R.string.wallet_transfer_code_state_expired)\n\t\t\t\tbinding.transferCodeDetailBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Expired(true, error))\n\t\t\t\tbinding.transferCodeDetailRefreshLayout.backgroundTintList =\n\t\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.redish))\n\t\t\t\tbinding.transferCodeRefreshButton.isVisible = false\n\t\t\t\tbinding.transferCodeErrorCode.isVisible = false\n\t\t\t\tbinding.transferCodeLastUpdate.setText(R.string.wallet_transfer_code_state_no_certificate)\n\t\t\t}\n\t\t\ttransferCode.isExpired() -> {\n\t\t\t\tbinding.transferCodeDetailWaitingImage.isVisible = true\n\t\t\t\tbinding.transferCodeDetailImage.isVisible = false\n\t\t\t\tbinding.transferCodeDetailTitle.setText(R.string.wallet_transfer_code_state_waiting)\n\t\t\t\tbinding.transferCodeDetailBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Expired(false, error))\n\t\t\t\tbinding.transferCodeRefreshButton.isVisible = true\n\t\t\t\tbinding.transferCodeErrorCode.isVisible = false\n\t\t\t\tshowErrorOrLastUpdated(error)\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tif (error == null\n\t\t\t\t\t|| error.code == ErrorCodes.GENERAL_OFFLINE\n\t\t\t\t\t|| error.code == DeliveryRepository.ERROR_CODE_INVALID_TIME\n\t\t\t\t) {\n\t\t\t\t\tbinding.transferCodeDetailWaitingImage.isVisible = true\n\t\t\t\t\tbinding.transferCodeDetailImage.isVisible = false\n\t\t\t\t\tbinding.transferCodeDetailTitle.setText(R.string.wallet_transfer_code_state_waiting)\n\t\t\t\t\tbinding.transferCodeDetailBubble.setState(\n\t\t\t\t\t\tTransferCodeBubbleView.TransferCodeBubbleState.Valid(isRefreshing, error)\n\t\t\t\t\t)\n\t\t\t\t\tbinding.transferCodeRefreshButton.isVisible = true\n\t\t\t\t\tbinding.transferCodeErrorCode.isVisible = error != null\n\t\t\t\t\tbinding.transferCodeErrorCode.text = error?.code\n\t\t\t\t} else {\n\t\t\t\t\tbinding.transferCodeDetailWaitingImage.isVisible = false\n\t\t\t\t\tbinding.transferCodeDetailImage.isVisible = true\n\t\t\t\t\tbinding.transferCodeDetailImage.setImageResource(R.drawable.illu_transfer_code_failed)\n\t\t\t\t\tbinding.transferCodeDetailTitle.setText(R.string.wallet_transfer_code_state_expired)\n\t\t\t\t\tbinding.transferCodeDetailBubble.setState(TransferCodeBubbleView.TransferCodeBubbleState.Error(error))\n\t\t\t\t\tbinding.transferCodeRefreshButton.isVisible = false\n\t\t\t\t\tbinding.transferCodeErrorCode.isVisible = false\n\t\t\t\t}\n\t\t\t\tshowErrorOrLastUpdated(error)\n\t\t\t}\n\t\t}\n\t}\n\n\t@SuppressLint(\"SetTextI18n\")\n\tprivate fun showErrorOrLastUpdated(error: StateError?) {\n\t\tval transferCode = transferCode ?: return\n\t\tif (error != null) {\n\t\t\tbinding.transferCodeDetailRefreshLayout.backgroundTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.orangeish))\n\t\t\tbinding.transferCodeRefreshButton.backgroundTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.orange))\n\t\t\tbinding.transferCodeRefreshButton.setImageResource(R.drawable.ic_retry)\n\n\t\t\twhen (error.code) {\n\t\t\t\tDeliveryRepository.ERROR_CODE_INVALID_TIME -> {\n\t\t\t\t\tval errorTitle = getString(R.string.wallet_transfer_code_time_inconsistency_title)\n\t\t\t\t\tval errorText = getString(R.string.wallet_transfer_code_time_inconsistency_text)\n\t\t\t\t\tbinding.transferCodeLastUpdate.text = \"$errorTitle\\n$errorText\".makeSubStringBold(errorTitle)\n\t\t\t\t}\n\t\t\t\tErrorCodes.GENERAL_OFFLINE -> {\n\t\t\t\t\tval errorTitle = getString(R.string.wallet_transfer_code_no_internet_title)\n\t\t\t\t\tval errorText = getString(R.string.wallet_transfer_code_update_no_internet_error_text)\n\t\t\t\t\tbinding.transferCodeLastUpdate.text = \"$errorTitle\\n$errorText\".makeSubStringBold(errorTitle)\n\t\t\t\t}\n\t\t\t\telse -> {\n\t\t\t\t\tbinding.transferCodeDetailRefreshLayout.isVisible = false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbinding.transferCodeDetailRefreshLayout.backgroundTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.blueish))\n\t\t\tbinding.transferCodeRefreshButton.backgroundTintList =\n\t\t\t\tColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.blue))\n\t\t\tbinding.transferCodeRefreshButton.setImageResource(R.drawable.ic_load)\n\t\t\tval lastUpdated = transferCode.lastUpdatedTimestamp.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER)\n\t\t\tbinding.transferCodeLastUpdate.text = getString(R.string.wallet_transfer_code_state_updated)\n\t\t\t\t.replace(DATE_REPLACEMENT_STRING, lastUpdated).makeSubStringBold(lastUpdated)\n\t\t}\n\t}\n\n\tprivate fun onConversionStateChanged(state: TransferCodeConversionState) {\n\t\twhen (state) {\n\t\t\tis TransferCodeConversionState.LOADING -> {\n\t\t\t\tbinding.transferCodeLoadingIndicator.isVisible = true\n\t\t\t\tbinding.transferCodeContent.isVisible = false\n\t\t\t}\n\t\t\tis TransferCodeConversionState.CONVERTED -> {\n\t\t\t\tparentFragmentManager.popBackStack()\n\n\t\t\t\t// If the transfer code was converted to a certificate, open the certificate detail without an animation\n\t\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t\t.replace(R.id.fragment_container, CertificateDetailFragment.newInstance(state.certificateHolder))\n\t\t\t\t\t.addToBackStack(CertificateDetailFragment::class.java.canonicalName)\n\t\t\t\t\t.commit()\n\t\t\t}\n\t\t\tis TransferCodeConversionState.NOT_CONVERTED -> {\n\t\t\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\t\t\tbinding.transferCodeContent.isVisible = true\n\n\t\t\t\ttransferCode = transferCode?.let {\n\t\t\t\t\tcertificatesViewModel.updateTransferCodeLastUpdated(it)\n\t\t\t\t}\n\t\t\t\tsetTransferCodeViewState(false)\n\t\t\t}\n\t\t\tis TransferCodeConversionState.ERROR -> {\n\t\t\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\t\t\tbinding.transferCodeContent.isVisible = true\n\t\t\t\tsetTransferCodeViewState(false, state.error)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun onRefreshButtonClicked() {\n\t\ttransferCode?.let {\n\t\t\tbinding.transferCodeRefreshButton.rotate(360f, 300L, 0f)\n\t\t\ttransferCodeViewModel.downloadCertificateForTransferCode(it, FORCE_RELOAD_DELAY)\n\t\t}\n\t}\n\n\tprivate fun onDeleteButtonClicked() {\n\t\tAlertDialog.Builder(requireContext(), R.style.CovidCertificate_AlertDialogStyle)\n\t\t\t.setTitle(R.string.delete_button)\n\t\t\t.setMessage(R.string.wallet_transfer_delete_confirm_text)\n\t\t\t.setPositiveButton(R.string.delete_button) { _, _ ->\n\t\t\t\ttransferCode?.let {\n\t\t\t\t\ttransferCodeViewModel.removeTransferCode(it)\n\t\t\t\t\tcertificatesViewModel.removeTransferCode(it)\n\t\t\t\t\tparentFragmentManager.popBackStack()\n\t\t\t\t}\n\t\t\t}\n\t\t\t.setNegativeButton(R.string.cancel_button) { dialog, _ ->\n\t\t\t\tdialog.dismiss()\n\t\t\t}\n\t\t\t.setCancelable(true)\n\t\t\t.create()\n\t\t\t.show()\n\t}\n\n\tprivate fun showTransferCodeFaqItems(faqModel: FaqModel) {\n\t\tval header = listOf(Header(faqModel.faqIconAndroid, faqModel.faqTitle, faqModel.faqSubTitle))\n\t\tval introSections = faqModel.faqIntroSections?.map { IntroSection(it.iconAndroid, it.text) } ?: emptyList()\n\t\tval questions = faqModel.faqEntries?.map { Question(it.title, it.text, false, it.linkTitle, it.linkUrl) } ?: emptyList()\n\t\tval adapterItems: List<Faq> = listOf(header, introSections, questions).flatten()\n\t\tfaqAdapter.setItems(adapterItems)\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeErrorCodes.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nobject TransferCodeErrorCodes {\n\n\tconst val INAPP_DELIVERY_KEYPAIR_GENERATION_FAILED = \"I|KPG\"\n\tconst val INAPP_DELIVERY_REGISTRATION_FAILED = \"I|REG\"\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeHowToFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.config.ConfigViewModel\nimport ch.admin.bag.covidcertificate.common.config.FaqModel\nimport ch.admin.bag.covidcertificate.common.faq.FaqAdapter\nimport ch.admin.bag.covidcertificate.common.faq.model.Faq\nimport ch.admin.bag.covidcertificate.common.faq.model.Header\nimport ch.admin.bag.covidcertificate.common.faq.model.Question\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentTransferCodeHowtoBinding\n\nclass TransferCodeHowToFragment : Fragment(R.layout.fragment_transfer_code_howto) {\n\n\tcompanion object {\n\t\tfun newInstance() = TransferCodeHowToFragment()\n\t}\n\n\tprivate var _binding: FragmentTransferCodeHowtoBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val configViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\tprivate val faqAdapter = FaqAdapter { url: String -> context?.let { UrlUtil.openUrl(it, url) } }\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentTransferCodeHowtoBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\t\tbinding.transferCodeHowtoList.adapter = faqAdapter\n\n\t\tconfigViewModel.configLiveData.observe(viewLifecycleOwner) { config ->\n\t\t\tval languageKey = getString(R.string.language_key)\n\t\t\tconfig.getTransferQuestionsFaqs(languageKey)?.let {\n\t\t\t\tshowTransferCodeFaqItems(it)\n\t\t\t}\n\t\t}\n\t\tconfigViewModel.loadConfig(BuildConfig.BASE_URL, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TIME.toString())\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun showTransferCodeFaqItems(faqModel: FaqModel) {\n\t\tval header = listOf(Header(faqModel.faqIconAndroid, faqModel.faqTitle, faqModel.faqSubTitle))\n\t\tval questions = faqModel.faqEntries?.map { Question(it.title, it.text, false, it.linkTitle, it.linkUrl) } ?: emptyList()\n\t\tval adapterItems: List<Faq> = listOf(header, questions).flatten()\n\t\tfaqAdapter.setItems(adapterItems)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeIntroFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.fragment.app.Fragment\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentTransferCodeIntroBinding\n\nclass TransferCodeIntroFragment : Fragment(R.layout.fragment_transfer_code_intro) {\n\n\tcompanion object {\n\t\tfun newInstance() = TransferCodeIntroFragment()\n\t}\n\n\tprivate var _binding: FragmentTransferCodeIntroBinding? = null\n\tprivate val binding get() = _binding!!\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentTransferCodeIntroBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\n\t\tbinding.transferCodeIntroCreate.setOnClickListener {\n\t\t\tparentFragmentManager.popBackStack()\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, TransferCodeCreationFragment.newInstance())\n\t\t\t\t.addToBackStack(TransferCodeCreationFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\n\t\tbinding.transferCodeIntroHowto.setOnClickListener {\n\t\t\tparentFragmentManager.beginTransaction()\n\t\t\t\t.setCustomAnimations(R.anim.slide_enter, R.anim.slide_exit, R.anim.slide_pop_enter, R.anim.slide_pop_exit)\n\t\t\t\t.replace(R.id.fragment_container, TransferCodeHowToFragment.newInstance())\n\t\t\t\t.addToBackStack(TransferCodeHowToFragment::class.java.canonicalName)\n\t\t\t\t.commit()\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/TransferCodeViewModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport android.app.Application\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.common.exception.TimeDeviationException\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.MainApplication\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataItem\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.TransferCodeCrypto\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeConversionState\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliverySpec\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.GlobalScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.launch\nimport kotlinx.coroutines.sync.withLock\nimport java.io.IOException\nimport java.security.KeyPair\n\nclass TransferCodeViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\tprivate val walletDataStorage = WalletDataSecureStorage.getInstance(application.applicationContext)\n\tprivate val deliveryRepository =\n\t\tDeliveryRepository.getInstance(DeliverySpec(application.applicationContext, BuildConfig.BASE_URL_DELIVERY))\n\n\tprivate val conversionStateMutableLiveData = MutableLiveData<TransferCodeConversionState>(TransferCodeConversionState.LOADING)\n\tval conversionState = conversionStateMutableLiveData as LiveData<TransferCodeConversionState>\n\n\tprivate var downloadJob: Job? = null\n\n\tfun downloadCertificateForTransferCode(transferCode: TransferCodeModel, delayInMillis: Long = 0L) {\n\t\tdownloadJob?.cancel()\n\n\t\tif (transferCode.isFailed()) {\n\t\t\t// If transfer code is failed, return early with the error code for a failed transfer code\n\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.ERROR(StateError(DeliveryRepository.ERROR_CODE_FAILED)))\n\t\t\tdownloadJob = null\n\t\t\treturn\n\t\t}\n\n\t\tconversionStateMutableLiveData.value = TransferCodeConversionState.LOADING\n\t\tdownloadJob = viewModelScope.launch(Dispatchers.IO) {\n\t\t\tTransferCodeCrypto.getMutex(transferCode.code).withLock {\n\t\t\t\tval keyPair = TransferCodeCrypto.loadKeyPair(transferCode.code, getApplication())\n\n\t\t\t\tif (keyPair != null) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (delayInMillis > 0) delay(delayInMillis)\n\n\t\t\t\t\t\tval decryptedCertificates = deliveryRepository.download(transferCode.code, keyPair)\n\n\t\t\t\t\t\tif (decryptedCertificates.isNotEmpty()) {\n\t\t\t\t\t\t\tvar didReplaceTransferCode = false\n\n\t\t\t\t\t\t\tdecryptedCertificates.forEachIndexed { index, convertedCertificate ->\n\t\t\t\t\t\t\t\tval qrCodeData = convertedCertificate.qrCodeData\n\t\t\t\t\t\t\t\tval pdfData = convertedCertificate.pdfData\n\t\t\t\t\t\t\t\tif (index == 0) {\n\t\t\t\t\t\t\t\t\tdidReplaceTransferCode =\n\t\t\t\t\t\t\t\t\t\twalletDataStorage.replaceTransferCodeWithCertificate(transferCode, qrCodeData, pdfData)\n\t\t\t\t\t\t\t\t\tval decodeState = CovidCertificateSdk.Wallet.decode(qrCodeData)\n\t\t\t\t\t\t\t\t\tif (decodeState is DecodeState.SUCCESS) {\n\t\t\t\t\t\t\t\t\t\tMainApplication.getTransferCodeConversionMapping(getApplication())\n\t\t\t\t\t\t\t\t\t\t\t?.put(transferCode.code, decodeState.certificateHolder)\n\t\t\t\t\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.CONVERTED(decodeState.certificateHolder))\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// The certificate returned from the server could not be decoded\n\t\t\t\t\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.NOT_CONVERTED)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\twalletDataStorage.saveWalletDataItem(WalletDataItem.CertificateWalletData(qrCodeData, pdfData))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Delete the transfer code on the backend and the key pair only if the certificate was stored (either by the above replace method or from another thread)\n\t\t\t\t\t\t\tval didStoreCertificate =\n\t\t\t\t\t\t\t\twalletDataStorage.containsCertificate(decryptedCertificates.first().qrCodeData)\n\t\t\t\t\t\t\tif (didReplaceTransferCode || didStoreCertificate) {\n\t\t\t\t\t\t\t\tdeleteTransferCodeOnServer(transferCode, keyPair)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// The server returned no certificate\n\t\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.NOT_CONVERTED)\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e: TimeDeviationException) {\n\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.ERROR(StateError(DeliveryRepository.ERROR_CODE_INVALID_TIME)))\n\t\t\t\t\t} catch (e: IOException) {\n\t\t\t\t\t\t// A request failed, check if the device has network connectivity or not\n\t\t\t\t\t\tif (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.ERROR(StateError(ErrorCodes.GENERAL_NETWORK_FAILURE)))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.ERROR(StateError(ErrorCodes.GENERAL_OFFLINE)))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tval alreadyLoadedCertificate =\n\t\t\t\t\t\tMainApplication.getTransferCodeConversionMapping(getApplication())?.get(transferCode.code)\n\t\t\t\t\tif (alreadyLoadedCertificate != null) {\n\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.CONVERTED(alreadyLoadedCertificate))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconversionStateMutableLiveData.postValue(TransferCodeConversionState.ERROR(StateError(TransferCodeErrorCodes.INAPP_DELIVERY_KEYPAIR_GENERATION_FAILED)))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdownloadJob = null\n\t\t\t}\n\t\t}\n\t}\n\n\tfun removeTransferCode(transferCode: TransferCodeModel) {\n\t\t// Since the user shouldn't wait for this request to finish, the popBackStack is called shortly after calling this method.\n\t\t// In that case, the viewModelScope wouldn't make sense because it is cleared when the fragment is popped.\n\t\t// For this kind of fire-and-forget coroutine, the GlobalScope is therefore fine.\n\t\tGlobalScope.launch(Dispatchers.IO) {\n\t\t\tTransferCodeCrypto.getMutex(transferCode.code).withLock {\n\t\t\t\tval keyPair = TransferCodeCrypto.loadKeyPair(transferCode.code, getApplication())\n\t\t\t\tif (keyPair != null) {\n\t\t\t\t\tdeleteTransferCodeOnServer(transferCode, keyPair)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate suspend fun deleteTransferCodeOnServer(transferCode: TransferCodeModel, keyPair: KeyPair) {\n\t\ttry {\n\t\t\tdeliveryRepository.complete(transferCode.code, keyPair)\n\t\t} catch (e: IOException) {\n\t\t\t// This request is best-effort, if it fails, ignore it and let the backend delete the transfer code and certificate\n\t\t\t// automatically after it expires\n\t\t}\n\t\tTransferCodeCrypto.deleteKeyEntry(transferCode.code, getApplication())\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/logic/Luhn.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.wallet.transfercode.logic\n\n\nobject Luhn {\n\n\t// Missing: G, I, J, L, O, Q, V\n\tinternal val ALPHABET = \"1234567890ABCDEFHKMNPRSTUWXYZ\".toCharArray()\n\tprivate val N = ALPHABET.size\n\tinternal const val TRANSFER_CODE_LEN = 9\n\n\t/**\n\t* Computes the check character for the given transfer code.\n\t*\n\t* If the code is of wrong format then a generic char is returned.\n\t*/\n\tinternal fun computeCheckCharacter(code: CharArray): Char {\n\t\tval reversed = code.reversedArray()\n\t\tvar sum = 0\n\t\tvar factor = 2\n\n\t\tfor (char in reversed) {\n\t\t\tval idx: Int = ALPHABET.indexOf(char)\n\t\t\tif (idx < 0) {\n\t\t\t\treturn '0'\n\t\t\t}\n\t\t\tval toAdd = factor * idx\n\n\t\t\tsum += (toAdd / N) + (toAdd % N)\n\t\t\tfactor = if (factor == 1) 2 else 1\n\t\t}\n\n\t\t// The check digit is the smallest number that makes the sum add up to a multiple of N\n\t\tvar checkChar = N - (sum % N)\n\t\tif (checkChar == N) {\n\t\t\tcheckChar = 0\n\t\t}\n\n\t\treturn ALPHABET[checkChar]\n\t}\n\n\t/**\n\t * Generates a fresh 9-character transfer code.\n\t *\n\t * The first 8 chars are chosen at random, the last character is the check character computed using Luhn mod N.\n\t */\n\tfun generateNewTransferCode(): String {\n\t\tval code = CharArray(TRANSFER_CODE_LEN)\n\n\t\t// Generate the first 8 chars at random\n\t\tfor (i in 0 until TRANSFER_CODE_LEN - 1) {\n\t\t\tcode[i] = ALPHABET.random()\n\t\t}\n\n\t\t// Append the check character\n\t\tval range = 0 until TRANSFER_CODE_LEN - 1 // inclusive to inclusive!\n\t\tcode[TRANSFER_CODE_LEN - 1] = computeCheckCharacter(code.sliceArray(range))\n\n\t\treturn code.concatToString()\n\t}\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/logic/TransferCodeCrypto.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.wallet.transfercode.logic\n\nimport android.content.Context\nimport android.content.pm.PackageManager\nimport android.os.Build\nimport android.security.keystore.KeyGenParameterSpec\nimport android.security.keystore.KeyInfo\nimport android.security.keystore.KeyProperties\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.fromBase64\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.toBase64\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport kotlinx.coroutines.sync.Mutex\nimport org.bouncycastle.jce.provider.BouncyCastleProvider\nimport java.security.KeyFactory\nimport java.security.KeyPair\nimport java.security.KeyPairGenerator\nimport java.security.KeyStore\nimport java.security.Security\nimport java.security.Signature\nimport java.security.spec.MGF1ParameterSpec\nimport java.security.spec.PKCS8EncodedKeySpec\nimport java.security.spec.RSAKeyGenParameterSpec\nimport java.security.spec.X509EncodedKeySpec\nimport java.time.Instant\nimport javax.crypto.Cipher\nimport javax.crypto.spec.GCMParameterSpec\nimport javax.crypto.spec.OAEPParameterSpec\nimport javax.crypto.spec.PSource.PSpecified\nimport javax.crypto.spec.SecretKeySpec\n\n\nobject TransferCodeCrypto {\n\n\tconst val ANDROID_KEYSTORE_NAME = \"AndroidKeyStore\"\n\tconst val BOUNCY_CASTLE_PROVIDER = \"BC\"\n\n\tinit {\n\t\tif (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {\n\t\t\t// Remove platform provided bouncy castle provider and add updated one from library on Android 23 and lower\n\t\t\tSecurity.removeProvider(BOUNCY_CASTLE_PROVIDER)\n\t\t\tSecurity.addProvider(BouncyCastleProvider())\n\t\t}\n\t}\n\n\tprivate val mutexMap = HashMap<String, Mutex>()\n\n\t@Synchronized fun getMutex(alias: String): Mutex {\n\t\tvar mutex = mutexMap.get(alias)\n\t\tif(mutex == null){\n\t\t\tmutex = Mutex()\n\t\t\tmutexMap.put(alias, mutex)\n\t\t\treturn mutex\n\t\t}else{\n\t\t\treturn mutex\n\t\t}\n\t}\n\n\tfun createKeyPair(keyAlias: String, context: Context): KeyPair? {\n\t\tval keyPurpose =\n\t\t\tKeyProperties.PURPOSE_DECRYPT or KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_VERIFY\n\n\t\tval keyGenParameterSpec = KeyGenParameterSpec\n\t\t\t.Builder(keyAlias, keyPurpose)\n\t\t\t.apply {\n\t\t\t\t// 2048 bit with public exponent 65537\n\t\t\t\tsetAlgorithmParameterSpec(RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4))\n\t\t\t\tsetDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA1)\n\t\t\t\tsetEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)\n\t\t\t\tsetSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS)\n\n\t\t\t\t// Encourage storing the key in strongbox (the TPM)\n\t\t\t\tval hasStrongBox = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {\n\t\t\t\t\tcontext.packageManager.hasSystemFeature(PackageManager.FEATURE_STRONGBOX_KEYSTORE)\n\t\t\t\t} else false\n\t\t\t\tif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && hasStrongBox) {\n\t\t\t\t\tsetIsStrongBoxBacked(true)\n\t\t\t\t}\n\t\t\t}.build()\n\n\t\ttry {\n\t\t\treturn if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {\n\t\t\t\tval kpg = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, BOUNCY_CASTLE_PROVIDER).apply {\n\t\t\t\t\tinitialize(RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4))\n\t\t\t\t}\n\n\t\t\t\tval kp = kpg.generateKeyPair()\n\n\t\t\t\tval storage = WalletSecureStorage.getInstance(context)\n\t\t\t\tstorage.setTransferCodePublicKey(keyAlias, kp.public.encoded.toBase64())\n\t\t\t\tstorage.setTransferCodePrivateKey(keyAlias, kp.private.encoded.toBase64())\n\n\t\t\t\tkp\n\t\t\t} else {\n\t\t\t\tval kpg = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, ANDROID_KEYSTORE_NAME).apply {\n\t\t\t\t\tinitialize(keyGenParameterSpec)\n\t\t\t\t}\n\n\t\t\t\tkpg.generateKeyPair()\n\t\t\t}\n\t\t} catch (e: Throwable) {\n\t\t\te.printStackTrace()\n\t\t\treturn null\n\t\t}\n\t}\n\n\tfun loadKeyPair(keyAlias: String, context: Context): KeyPair? {\n\t\tif (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {\n\t\t\tval storage = WalletSecureStorage.getInstance(context)\n\t\t\tval encodedPublicKey = storage.getTransferCodePublicKey(keyAlias)?.fromBase64()\n\t\t\tval encodedPrivateKey = storage.getTransferCodePrivateKey(keyAlias)?.fromBase64()\n\n\t\t\treturn if (encodedPublicKey != null && encodedPrivateKey != null) {\n\t\t\t\tval kf = KeyFactory.getInstance(\"RSA\", BOUNCY_CASTLE_PROVIDER)\n\n\t\t\t\tval publicKeySpec = X509EncodedKeySpec(encodedPublicKey)\n\t\t\t\tval publicKey = kf.generatePublic(publicKeySpec)\n\n\t\t\t\tval privateKeySpec = PKCS8EncodedKeySpec(encodedPrivateKey)\n\t\t\t\tval privateKey = kf.generatePrivate(privateKeySpec)\n\n\t\t\t\tKeyPair(publicKey, privateKey)\n\t\t\t} else {\n\t\t\t\tnull\n\t\t\t}\n\t\t} else {\n\t\t\tval keystore = KeyStore.getInstance(ANDROID_KEYSTORE_NAME).apply {\n\t\t\t\tload(null)\n\t\t\t}\n\t\t\tif (!keystore.containsAlias(keyAlias)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tval entry = keystore.getEntry(keyAlias, null) as? KeyStore.PrivateKeyEntry ?: return null\n\n\t\t\treturn KeyPair(entry.certificate.publicKey, entry.privateKey)\n\t\t}\n\t}\n\n\tfun deleteKeyEntry(keyAlias: String, context: Context) {\n\t\tif (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {\n\t\t\tval storage = WalletSecureStorage.getInstance(context)\n\t\t\tstorage.setTransferCodePublicKey(keyAlias, null)\n\t\t\tstorage.setTransferCodePrivateKey(keyAlias, null)\n\t\t} else {\n\t\t\tval keystore = KeyStore.getInstance(ANDROID_KEYSTORE_NAME).apply {\n\t\t\t\tload(null)\n\t\t\t}\n\n\t\t\tif (keystore.containsAlias(keyAlias)) {\n\t\t\t\tkeystore.deleteEntry(keyAlias)\n\t\t\t}\n\t\t}\n\t}\n\n\tfun decrypt(keyPair: KeyPair, ciphertextBase64: String): String? {\n\t\t/*\n\t\t * This is somewhat like a KEM:\n\t\t * ciphertext = RSA-OAEP( aesIV || aesKey ) || AES-GCM(healthcert)\n\t\t *\n\t\t * Also note that all indices below are inclusive to inclusive!\n\t\t */\n\t\tval ciphertext = ciphertextBase64.fromBase64()\n\n\t\tval ciphertextWrappedAesKeyAndIv = ciphertext.sliceArray(0..255) // 256 bytes = 2048 bits => one RSA-OAEP \"block\"\n\t\tval ciphertextCertificate = ciphertext.sliceArray(256..ciphertext.lastIndex)\n\n\t\ttry {\n\t\t\t// Decrypt the symmetric AES that was encapsulated under RSA-OAEP\n\t\t\tval rsaPlaintext = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {\n\t\t\t\tval oaepParams = OAEPParameterSpec(\"SHA-256\", \"MGF1\", MGF1ParameterSpec(\"SHA-1\"), PSpecified.DEFAULT)\n\t\t\t\tval cipher = Cipher.getInstance(\"RSA/ECB/OAEPPadding\", BOUNCY_CASTLE_PROVIDER)\n\t\t\t\tcipher.init(Cipher.DECRYPT_MODE, keyPair.private, oaepParams)\n\t\t\t\tcipher.doFinal(ciphertextWrappedAesKeyAndIv)\n\t\t\t} else {\n\t\t\t\tval cipher = Cipher.getInstance(\"RSA/ECB/OAEPWithSHA-256AndMGF1Padding\")\n\t\t\t\tcipher.init(Cipher.DECRYPT_MODE, keyPair.private)\n\t\t\t\tcipher.doFinal(ciphertextWrappedAesKeyAndIv)\n\t\t\t}\n\n\t\t\tval aesIv = rsaPlaintext.sliceArray(0..11) // 12 byte IV\n\t\t\tval aesKey = rsaPlaintext.sliceArray(12..43) // 32 byte = 256 bit key\n\n\t\t\tval AES_GCM_TAG_LEN = 128 // one AES block\n\t\t\tval gcmSpec = GCMParameterSpec(AES_GCM_TAG_LEN, aesIv) // algorithm\n\t\t\tval secretKeySpec = SecretKeySpec(aesKey, \"AES\") // key\n\n\t\t\t// Decrypt the health certificate encrypted under AES-GCM\n\t\t\tval aesPlaintext = Cipher.getInstance(\"AES/GCM/NoPadding\").run {\n\t\t\t\tinit(Cipher.DECRYPT_MODE, secretKeySpec, gcmSpec)\n\t\t\t\tdoFinal(ciphertextCertificate)\n\t\t\t}\n\t\t\treturn aesPlaintext.decodeToString()\n\t\t} catch (e: Throwable) {\n\t\t\te.printStackTrace()\n\t\t\treturn null\n\t\t}\n\t}\n\n\tfun sign(keyPair: KeyPair, message: String): String? {\n\t\tval msg = message.encodeToByteArray()\n\t\treturn try {\n\t\t\tval signature = Signature.getInstance(\"SHA256withRSA/PSS\").run {\n\t\t\t\tinitSign(keyPair.private)\n\t\t\t\tupdate(msg)\n\t\t\t\tsign()\n\t\t\t}\n\t\t\tsignature.toBase64()\n\t\t} catch (e: Throwable) {\n\t\t\te.printStackTrace()\n\t\t\tnull\n\t\t}\n\t}\n\n\t/**\n\t * Creates a message to sign over for the delivery requsts.\n\t *\n\t * `action` should be one of: register, get, delete.\n\t * This binds the context for which the signature is intended.\n\t */\n\tfun buildMessage(action: String, transferCode: String): String {\n\t\tval timestamp = Instant.now().toEpochMilli()\n\t\treturn \"$action:$transferCode:$timestamp\"\n\t}\n\n}\n\nfun KeyPair.isInsideSecureHardware(): Boolean {\n\tval factory: KeyFactory = KeyFactory.getInstance(private.algorithm, TransferCodeCrypto.ANDROID_KEYSTORE_NAME)\n\tval keyInfo: KeyInfo = factory.getKeySpec(private, KeyInfo::class.java) as KeyInfo\n\treturn keyInfo.isInsideSecureHardware\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/model/ConvertedCertificate.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.model\n\ndata class ConvertedCertificate(val qrCodeData: String, val pdfData: String)\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/model/TransferCodeConversionState.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.model\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\n\nsealed class TransferCodeConversionState {\n\tobject LOADING : TransferCodeConversionState()\n\tdata class CONVERTED(val certificateHolder: CertificateHolder) : TransferCodeConversionState()\n\tobject NOT_CONVERTED : TransferCodeConversionState()\n\tdata class ERROR(val error: StateError) : TransferCodeConversionState()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/model/TransferCodeCreationResponse.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.model\n\nenum class TransferCodeCreationResponse {\n\tSUCCESSFUL,\n\tINVALID_TIME,\n\tSIGNING_FAILED,\n\tFAILED,\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/model/TransferCodeCreationState.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.model\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\n\nsealed class TransferCodeCreationState {\n\tobject LOADING : TransferCodeCreationState()\n\tdata class SUCCESS(val transferCode: TransferCodeModel) : TransferCodeCreationState()\n\tdata class ERROR(val error: StateError) : TransferCodeCreationState()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/model/TransferCodeModel.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.model\n\nimport com.squareup.moshi.JsonClass\nimport java.io.Serializable\nimport java.time.Duration\nimport java.time.Instant\nimport java.util.concurrent.TimeUnit\nimport kotlin.math.roundToInt\n\nval TRANSFER_CODE_VALIDITY_DURATION = Duration.ofDays(30)\nval TRANSFER_CODE_DURATION_FAILS_AFTER_EXPIRES = Duration.ofHours(72)\nval PRE_V2_6_0_TRANSFER_CODE_VALIDITY_DURATION = Duration.ofDays(7)\n\n/**\n * The expiresAt and failsAt default values are set to 7d/72h due to the extended validity starting with the 2.7.0 release.\n * Existing transfer codes should automatically be migrated with these default values, while newer codes should set the correct\n * validity range based on the server configuration.\n */\n@JsonClass(generateAdapter = true)\ndata class TransferCodeModel(\n\tval code: String,\n\tval creationTimestamp: Instant,\n\tval lastUpdatedTimestamp: Instant,\n\tval expiresAtTimestamp: Instant = creationTimestamp.plus(PRE_V2_6_0_TRANSFER_CODE_VALIDITY_DURATION),\n\tvar failsAtTimestamp: Instant = expiresAtTimestamp.plus(TRANSFER_CODE_DURATION_FAILS_AFTER_EXPIRES),\n) : Serializable {\n\n\tfun isExpired() = expiresAtTimestamp.isBefore(Instant.now())\n\n\tfun isFailed() = failsAtTimestamp.isBefore(Instant.now())\n\n\tfun getDaysUntilExpiration(): Int {\n\t\tval now = Instant.now().toEpochMilli()\n\t\tval diff = expiresAtTimestamp.toEpochMilli() - now\n\t\treturn (diff.toDouble() / TimeUnit.DAYS.toMillis(1)).roundToInt()\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/net/CovidCert.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.wallet.transfercode.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class CovidCert(\n\tval encryptedHcert: String, // base64\n\tval encryptedPdf: String, // base64\n)\n\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/net/CovidCertDelivery.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.wallet.transfercode.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class CovidCertDelivery(\n\tval covidCerts: List<CovidCert>,\n)\n\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/net/DeliveryRegistration.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.wallet.transfercode.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class DeliveryRegistration(\n\tval code: String,\n\tval publicKey: String, // base64\n\tval algorithm: String, // EC256, RSA2048\n\tval signaturePayload: String,\n\tval signature: String, // base64\n)\n\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/net/DeliveryRepository.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.net\n\nimport android.content.Context\nimport ch.admin.bag.covidcertificate.common.BuildConfig\nimport ch.admin.bag.covidcertificate.common.exception.HttpIOException\nimport ch.admin.bag.covidcertificate.common.exception.TimeDeviationException\nimport ch.admin.bag.covidcertificate.common.extensions.setTimeouts\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.data.Config\nimport ch.admin.bag.covidcertificate.sdk.android.net.CertificatePinning\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.JwsInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.net.interceptor.UserAgentInterceptor\nimport ch.admin.bag.covidcertificate.sdk.android.utils.SingletonHolder\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.toBase64\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.TransferCodeCrypto\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.ConvertedCertificate\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeCreationResponse\nimport okhttp3.Cache\nimport okhttp3.OkHttpClient\nimport okhttp3.logging.HttpLoggingInterceptor\nimport retrofit2.Retrofit\nimport retrofit2.converter.moshi.MoshiConverterFactory\nimport java.security.KeyPair\n\ninternal class DeliveryRepository private constructor(deliverySpec: DeliverySpec) {\n\n\tcompanion object : SingletonHolder<DeliveryRepository, DeliverySpec>(::DeliveryRepository) {\n\t\tconst val ERROR_CODE_INVALID_TIME = \"I|TIME425\"\n\t\tconst val ERROR_CODE_FAILED = \"I|FAI\"\n\t\tprivate const val KEY_PAIR_ALGORITHM = \"RSA2048\"\n\t}\n\n\tprivate val deliveryService: DeliveryService\n\n\tinit {\n\t\tval rootCa = CovidCertificateSdk.getRootCa(deliverySpec.context)\n\t\tval expectedCommonName = CovidCertificateSdk.getExpectedCommonName()\n\t\tval okHttpBuilder = OkHttpClient.Builder()\n\t\t\t.certificatePinner(CertificatePinning.pinner)\n\t\t\t.addInterceptor(JwsInterceptor(rootCa, expectedCommonName))\n\t\t\t.addInterceptor(UserAgentInterceptor(Config.userAgent))\n\t\t\t.setTimeouts()\n\n\t\tval cacheSize = 5 * 1024 * 1024 // 5 MB\n\t\tval cache = Cache(deliverySpec.context.cacheDir, cacheSize.toLong())\n\t\tokHttpBuilder.cache(cache)\n\n\t\tif (BuildConfig.DEBUG) {\n\t\t\tval httpInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)\n\t\t\tokHttpBuilder.addInterceptor(httpInterceptor)\n\t\t}\n\n\t\tdeliveryService = Retrofit.Builder()\n\t\t\t.baseUrl(deliverySpec.baseUrl)\n\t\t\t.client(okHttpBuilder.build())\n\t\t\t.addConverterFactory(MoshiConverterFactory.create())\n\t\t\t.build()\n\t\t\t.create(DeliveryService::class.java)\n\t}\n\n\tsuspend fun register(transferCode: String, keyPair: KeyPair): TransferCodeCreationResponse {\n\t\tval signaturePayload = TransferCodeCrypto.buildMessage(\"register\", transferCode)\n\t\tval signature = TransferCodeCrypto.sign(keyPair, signaturePayload) ?: return TransferCodeCreationResponse.SIGNING_FAILED\n\t\tval deliveryRegistration = DeliveryRegistration(\n\t\t\ttransferCode,\n\t\t\tkeyPair.public.encoded.toBase64(),\n\t\t\tKEY_PAIR_ALGORITHM,\n\t\t\tsignaturePayload,\n\t\t\tsignature\n\t\t)\n\n\t\tval response = deliveryService.register(deliveryRegistration)\n\n\t\treturn when {\n\t\t\tresponse.isSuccessful -> TransferCodeCreationResponse.SUCCESSFUL\n\t\t\tresponse.code() == 425 -> TransferCodeCreationResponse.INVALID_TIME\n\t\t\telse -> TransferCodeCreationResponse.FAILED\n\t\t}\n\t}\n\n\t@Throws(HttpIOException::class, TimeDeviationException::class)\n\tsuspend fun download(transferCode: String, keyPair: KeyPair): List<ConvertedCertificate> {\n\t\tval signaturePayload = TransferCodeCrypto.buildMessage(\"get\", transferCode)\n\t\tval signature = TransferCodeCrypto.sign(keyPair, signaturePayload) ?: return emptyList()\n\t\tval requestDeliveryPayload = RequestDeliveryPayload(transferCode, signaturePayload, signature)\n\n\t\tval response = deliveryService.get(requestDeliveryPayload)\n\t\twhen {\n\t\t\tresponse.code() == 425 -> {\n\t\t\t\t// A 425 indicates that the client device time deviates too much from the server time\n\t\t\t\tthrow TimeDeviationException()\n\t\t\t}\n\t\t\tresponse.code() == 404 -> {\n\t\t\t\t// A 404 indicates that the transfer code was not found on the server, so it was either already delivered or is expired\n\t\t\t\treturn emptyList()\n\t\t\t}\n\t\t\t!response.isSuccessful -> {\n\t\t\t\t// Any other non-successful status code is considered an error and should be handled by the caller in a try-catch\n\t\t\t\tthrow HttpIOException(response)\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tval covidCertDelivery = response.body() ?: return emptyList()\n\t\t\t\tif (covidCertDelivery.covidCerts.isEmpty()) {\n\t\t\t\t\treturn emptyList()\n\t\t\t\t}\n\n\t\t\t\treturn covidCertDelivery.covidCerts.mapNotNull {\n\t\t\t\t\tval hcert = TransferCodeCrypto.decrypt(keyPair, it.encryptedHcert)\n\t\t\t\t\tval pdf = TransferCodeCrypto.decrypt(keyPair, it.encryptedPdf)\n\t\t\t\t\tif (hcert != null && pdf != null) {\n\t\t\t\t\t\tConvertedCertificate(hcert, pdf)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnull\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tsuspend fun complete(transferCode: String, keyPair: KeyPair): Boolean {\n\t\tval signaturePayload = TransferCodeCrypto.buildMessage(\"delete\", transferCode)\n\t\tval signature = TransferCodeCrypto.sign(keyPair, signaturePayload) ?: return false\n\t\tval requestDeliveryPayload = RequestDeliveryPayload(transferCode, signaturePayload, signature)\n\n\t\tval response = deliveryService.complete(requestDeliveryPayload)\n\t\treturn response.isSuccessful\n\t}\n\n}\n\nclass DeliverySpec(val context: Context, val baseUrl: String)"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/net/DeliveryService.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.net\n\nimport retrofit2.Response\nimport retrofit2.http.Body\nimport retrofit2.http.Headers\nimport retrofit2.http.POST\n\ninterface DeliveryService {\n\n\t@Headers(\"Accept: application/json\")\n\t@POST(\"covidcert/register\")\n\tsuspend fun register(@Body deliveryRegistration: DeliveryRegistration): Response<Unit>\n\n\t@Headers(\"Accept: application/json+jws\")\n\t@POST(\"covidcert\")\n\tsuspend fun get(@Body requestDeliveryPayload: RequestDeliveryPayload): Response<CovidCertDelivery>\n\n\t@Headers(\"Accept: application/json\")\n\t@POST(\"covidcert/complete\")\n\tsuspend fun complete(@Body requestDeliveryPayload: RequestDeliveryPayload): Response<Unit>\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/net/RequestDeliveryPayload.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\npackage ch.admin.bag.covidcertificate.wallet.transfercode.net\n\nimport com.squareup.moshi.JsonClass\n\n@JsonClass(generateAdapter = true)\ndata class RequestDeliveryPayload(\n\tval code: String,\n\tval signaturePayload: String,\n\tval signature: String, // base64\n)\n\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/view/TransferCodeBubbleView.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.view\n\nimport android.content.Context\nimport android.content.res.ColorStateList\nimport android.graphics.Typeface\nimport android.util.AttributeSet\nimport android.view.LayoutInflater\nimport androidx.annotation.ColorRes\nimport androidx.constraintlayout.widget.ConstraintLayout\nimport androidx.core.content.ContextCompat\nimport androidx.core.view.isVisible\nimport ch.admin.bag.covidcertificate.common.util.makeSubStringBold\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.prettyPrint\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.ViewTransferCodeBubbleBinding\nimport ch.admin.bag.covidcertificate.wallet.transfercode.TransferCodeErrorCodes\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport java.time.Instant\nimport kotlin.math.roundToInt\n\nclass TransferCodeBubbleView @JvmOverloads constructor(\n\tcontext: Context,\n\tattrs: AttributeSet? = null,\n\tdefStyleAttr: Int = 0,\n) : ConstraintLayout(context, attrs, defStyleAttr) {\n\n\tcompanion object {\n\t\tprivate const val DATE_REPLACEMENT_STRING = \"{DATE}\"\n\t\tprivate const val DAYS_REPLACEMENT_STRING = \"{DAYS}\"\n\t}\n\n\tprivate val binding = ViewTransferCodeBubbleBinding.inflate(LayoutInflater.from(context), this)\n\tprivate val validityIcons = arrayOf(\n\t\tR.drawable.ic_expire_1,\n\t\tR.drawable.ic_expire_2,\n\t\tR.drawable.ic_expire_3,\n\t\tR.drawable.ic_expire_4,\n\t\tR.drawable.ic_expire_5,\n\t\tR.drawable.ic_expire_6,\n\t\tR.drawable.ic_expire_7,\n\t)\n\n\tprivate var viewState: TransferCodeBubbleState? = null\n\tprivate var transferCode: TransferCodeModel? = null\n\n\tinit {\n\t\tclipToPadding = false\n\t\tclipToOutline = false\n\t\tsetPaddingRelative(0, context.resources.getDimensionPixelSize(R.dimen.spacing_medium_large), 0, 0)\n\n\t\tif (isInEditMode) {\n\t\t\tsetTransferCode(TransferCodeModel(\"A2X56K7WP\", Instant.now(), Instant.now()))\n\t\t\tsetState(TransferCodeBubbleState.Valid(false))\n\t\t}\n\t}\n\n\tfun setTransferCode(transferCode: TransferCodeModel) {\n\t\tthis.transferCode = transferCode\n\t\tupdateView()\n\t}\n\n\tfun setState(newState: TransferCodeBubbleState) {\n\t\tviewState = newState\n\t\tupdateView()\n\t}\n\n\tprivate fun updateView() {\n\t\twhen (val viewState = viewState) {\n\t\t\tis TransferCodeBubbleState.Created -> showCreatedState()\n\t\t\tis TransferCodeBubbleState.Valid -> showValidState(viewState)\n\t\t\tis TransferCodeBubbleState.Expired -> showExpiredState(viewState)\n\t\t\tis TransferCodeBubbleState.Error -> showErrorState(viewState)\n\t\t\telse -> {}\n\t\t}\n\t}\n\n\tprivate fun showCreatedState() {\n\t\tval transferCode = transferCode ?: return\n\n\t\tbinding.transferCodeErrorIcon.isVisible = false\n\t\tbinding.transferCodeStatusIcon.isVisible = true\n\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\tbinding.transferCodeValidity.isVisible = false\n\t\tbinding.transferCodeTitle.isVisible = true\n\t\tbinding.transferCodeValue.isVisible = true\n\t\tbinding.transferCodeExpired.isVisible = false\n\t\tbinding.transferCodeCreationDatetime.isVisible = true\n\t\tbinding.transferCodeErrorTitle.isVisible = false\n\t\tbinding.transferCodeErrorDescription.isVisible = false\n\n\t\tbinding.transferCodeStatusIcon.setImageResource(R.drawable.ic_check_mark)\n\t\tbinding.transferCodeValue.setTransferCode(transferCode.code)\n\n\t\tsetIconAndTextColor(R.color.blue)\n\t\tsetBubbleBackgroundColor(R.color.blueish)\n\t\tshowCreationTimestamp()\n\t}\n\n\tprivate fun showValidState(state: TransferCodeBubbleState.Valid) {\n\t\tval transferCode = transferCode ?: return\n\n\t\tbinding.transferCodeStatusIcon.isVisible = !state.isRefreshing\n\t\tbinding.transferCodeLoadingIndicator.isVisible = state.isRefreshing\n\t\tbinding.transferCodeValidity.isVisible = true\n\t\tbinding.transferCodeTitle.isVisible = false\n\t\tbinding.transferCodeValue.isVisible = true\n\t\tbinding.transferCodeExpired.isVisible = false\n\t\tbinding.transferCodeCreationDatetime.isVisible = true\n\t\tbinding.transferCodeErrorTitle.isVisible = false\n\t\tbinding.transferCodeErrorDescription.isVisible = false\n\n\t\tval daysUntilExpiration = transferCode.getDaysUntilExpiration()\n\t\tif (daysUntilExpiration > 1) {\n\t\t\tval boldPart = context.getString(R.string.wallet_transfer_code_expire_plural_bold)\n\t\t\t\t.replace(DAYS_REPLACEMENT_STRING, daysUntilExpiration.toString())\n\t\t\tbinding.transferCodeValidity.text = context.getString(R.string.wallet_transfer_code_expire_plural)\n\t\t\t\t.replace(DAYS_REPLACEMENT_STRING, daysUntilExpiration.toString())\n\t\t\t\t.makeSubStringBold(boldPart)\n\t\t} else {\n\t\t\tbinding.transferCodeValidity.text = context.getString(R.string.wallet_transfer_code_expire_singular)\n\t\t\t\t.makeSubStringBold(context.getString(R.string.wallet_transfer_code_expire_singular_bold))\n\t\t}\n\n\t\tif (!state.isRefreshing) {\n\t\t\tval maxIndex = validityIcons.size - 1\n\t\t\tval imageIndex = ((daysUntilExpiration - 1f) / 30 * maxIndex).roundToInt().coerceIn(0, maxIndex)\n\t\t\tbinding.transferCodeStatusIcon.setImageResource(validityIcons[imageIndex])\n\t\t}\n\n\t\tstate.error?.let {\n\t\t\tif (it.code == ErrorCodes.GENERAL_OFFLINE) {\n\t\t\t\tbinding.transferCodeErrorIcon.setImageResource(R.drawable.ic_corner_offline)\n\t\t\t} else {\n\t\t\t\tbinding.transferCodeErrorIcon.setImageResource(R.drawable.ic_corner_process_error)\n\t\t\t}\n\t\t}\n\t\tbinding.transferCodeErrorIcon.isVisible = state.error != null\n\n\t\tbinding.transferCodeValue.setTransferCode(transferCode.code)\n\n\t\tsetIconAndTextColor(R.color.blue)\n\t\tsetBubbleBackgroundColor(R.color.blueish)\n\t\tshowCreationTimestamp()\n\t}\n\n\tprivate fun showExpiredState(state: TransferCodeBubbleState.Expired) {\n\t\tbinding.transferCodeErrorIcon.isVisible = false\n\t\tbinding.transferCodeStatusIcon.isVisible = true\n\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\tbinding.transferCodeValidity.isVisible = false\n\t\tbinding.transferCodeTitle.isVisible = false\n\t\tbinding.transferCodeValue.isVisible = false\n\t\tbinding.transferCodeExpired.isVisible = true\n\t\tbinding.transferCodeCreationDatetime.isVisible = true\n\t\tbinding.transferCodeErrorTitle.isVisible = false\n\t\tbinding.transferCodeErrorDescription.isVisible = false\n\n\t\tbinding.transferCodeStatusIcon.setImageResource(R.drawable.ic_info_outline)\n\n\t\tif (!state.isHighlighted) {\n\t\t\t// Show errors if the transfer code is not highlighted (failed)\n\t\t\tstate.error?.let {\n\t\t\t\tbinding.transferCodeErrorIcon.isVisible = true\n\t\t\t\tif (it.code == ErrorCodes.GENERAL_OFFLINE) {\n\t\t\t\t\tbinding.transferCodeErrorIcon.setImageResource(R.drawable.ic_corner_offline)\n\t\t\t\t} else {\n\t\t\t\t\tbinding.transferCodeErrorIcon.setImageResource(R.drawable.ic_corner_process_error)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsetIconAndTextColor(if (state.isHighlighted) R.color.red else R.color.blue)\n\t\tsetBubbleBackgroundColor(if (state.isHighlighted) R.color.redish else R.color.blueish)\n\t\tshowCreationTimestamp()\n\t}\n\n\tprivate fun showErrorState(state: TransferCodeBubbleState.Error) {\n\t\tbinding.transferCodeErrorIcon.isVisible = false\n\t\tbinding.transferCodeStatusIcon.isVisible = true\n\t\tbinding.transferCodeLoadingIndicator.isVisible = false\n\t\tbinding.transferCodeValidity.isVisible = false\n\t\tbinding.transferCodeTitle.isVisible = false\n\t\tbinding.transferCodeValue.isVisible = false\n\t\tbinding.transferCodeExpired.isVisible = false\n\t\tbinding.transferCodeCreationDatetime.isVisible = false\n\t\tbinding.transferCodeErrorTitle.isVisible = true\n\t\tbinding.transferCodeErrorDescription.isVisible = true\n\t\tbinding.transferCodeTransferCode.isVisible = false\n\t\tbinding.transferBubbleCodeErrorCode.isVisible = false\n\n\t\twhen (state.error.code) {\n\t\t\tErrorCodes.GENERAL_OFFLINE -> {\n\t\t\t\tbinding.transferCodeStatusIcon.setImageResource(R.drawable.ic_no_connection)\n\t\t\t\tbinding.transferCodeErrorTitle.setText(R.string.wallet_transfer_code_no_internet_title)\n\t\t\t\tbinding.transferCodeErrorDescription.setText(R.string.wallet_transfer_code_generate_no_internet_error_text)\n\t\t\t\tsetIconAndTextColor(R.color.orange)\n\t\t\t\tsetBubbleBackgroundColor(R.color.orangeish)\n\t\t\t}\n\t\t\tTransferCodeErrorCodes.INAPP_DELIVERY_KEYPAIR_GENERATION_FAILED -> {\n\t\t\t\tbinding.transferCodeStatusIcon.setImageResource(R.drawable.ic_scanner_alert)\n\t\t\t\tbinding.transferCodeErrorTitle.setText(R.string.wallet_transfer_code_unexpected_error_text)\n\t\t\t\tbinding.transferCodeErrorDescription.setText(R.string.wallet_transfer_code_unexpected_error_phone_number)\n\t\t\t\tbinding.transferCodeErrorDescription.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_call, 0, 0, 0)\n\t\t\t\tbinding.transferCodeErrorDescription.setTypeface(binding.transferCodeErrorDescription.typeface,Typeface.BOLD)\n\t\t\t\tbinding.transferCodeErrorDescription.setTextColor(context.getColor(R.color.red))\n\t\t\t\ttransferCode?.let { code ->\n\t\t\t\t\tval text = context.getString(R.string.wallet_transfer_code_title) + \": ${code.code}\"\n\t\t\t\t\tbinding.transferCodeTransferCode.text = text\n\t\t\t\t\tbinding.transferCodeTransferCode.isVisible = true\n\t\t\t\t}\n\t\t\t\tbinding.transferBubbleCodeErrorCode.text = state.error.code\n\t\t\t\tbinding.transferBubbleCodeErrorCode.isVisible = true\n\t\t\t\tsetIconAndTextColor(R.color.red)\n\t\t\t\tsetBubbleBackgroundColor(R.color.redish)\n\n\t\t\t}\n\t\t\tDeliveryRepository.ERROR_CODE_INVALID_TIME -> {\n\t\t\t\tbinding.transferCodeStatusIcon.setImageResource(R.drawable.ic_no_connection)\n\t\t\t\tbinding.transferCodeErrorTitle.setText(R.string.wallet_transfer_code_time_inconsistency_title)\n\t\t\t\tbinding.transferCodeErrorDescription.setText(R.string.wallet_transfer_code_time_inconsistency_text)\n\t\t\t\tsetIconAndTextColor(R.color.orange)\n\t\t\t\tsetBubbleBackgroundColor(R.color.orangeish)\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tbinding.transferCodeStatusIcon.setImageResource(R.drawable.ic_process_error)\n\t\t\t\tbinding.transferCodeErrorTitle.setText(R.string.verifier_network_error_text)\n\t\t\t\tbinding.transferCodeErrorDescription.setText(R.string.wallet_detail_network_error_text)\n\t\t\t\tsetIconAndTextColor(R.color.orange)\n\t\t\t\tsetBubbleBackgroundColor(R.color.orangeish)\n\t\t\t}\n\t\t}\n\n\n\t}\n\n\tprivate fun setIconAndTextColor(@ColorRes colorId: Int) {\n\t\tval color = ContextCompat.getColor(context, colorId)\n\t\tbinding.transferCodeStatusIcon.imageTintList = ColorStateList.valueOf(color)\n\t\tbinding.transferCodeExpired.setTextColor(color)\n\t}\n\n\tprivate fun setBubbleBackgroundColor(@ColorRes colorId: Int) {\n\t\tval color = ContextCompat.getColor(context, colorId)\n\t\tbinding.background.backgroundTintList = ColorStateList.valueOf(color)\n\t}\n\n\tprivate fun showCreationTimestamp() {\n\t\ttransferCode?.let {\n\t\t\tbinding.transferCodeCreationDatetime.text = context.getString(R.string.wallet_transfer_code_createdat)\n\t\t\t\t.replace(DATE_REPLACEMENT_STRING, it.creationTimestamp.prettyPrint(DEFAULT_DISPLAY_DATE_TIME_FORMATTER))\n\t\t}\n\t}\n\n\tsealed class TransferCodeBubbleState {\n\t\tobject Created : TransferCodeBubbleState()\n\t\tdata class Valid(\n\t\t\tval isRefreshing: Boolean,\n\t\t\tval error: StateError? = null,\n\t\t) : TransferCodeBubbleState()\n\n\t\tdata class Expired(\n\t\t\tval isHighlighted: Boolean,\n\t\t\tval error: StateError? = null,\n\t\t) : TransferCodeBubbleState()\n\n\t\tdata class Error(val error: StateError) : TransferCodeBubbleState()\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/view/TransferCodeView.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.view\n\nimport android.content.ClipData\nimport android.content.ClipboardManager\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.util.TypedValue\nimport android.view.Gravity\nimport android.view.LayoutInflater\nimport android.widget.LinearLayout\nimport android.widget.Toast\nimport androidx.core.content.ContextCompat\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.ViewTransferCodeBinding\n\nclass TransferCodeView @JvmOverloads constructor(\n\tcontext: Context,\n\tattrs: AttributeSet? = null,\n\tdefStyleAttr: Int = 0\n) : LinearLayout(context, attrs, defStyleAttr) {\n\n\tcompanion object {\n\t\tprivate const val TRANSFER_CODE_SECTION_COUNT = 3\n\t\tprivate const val TRANSFER_CODE_SECTION_LENGTH = 3\n\t}\n\n\tprivate val binding = ViewTransferCodeBinding.inflate(LayoutInflater.from(context), this)\n\tprivate var transferCode: String? = null\n\n\tinit {\n\t\torientation = HORIZONTAL\n\t\tgravity = Gravity.CENTER\n\n\t\tif (isInEditMode) {\n\t\t\tsetTransferCode(\"A2X56K7WP\")\n\t\t}\n\t}\n\n\toverride fun onFinishInflate() {\n\t\tsuper.onFinishInflate()\n\t\tsetupClickToCopy()\n\t}\n\n\tfun setTransferCode(code: String) {\n\t\tthis.transferCode = code\n\t\tval sections = code.chunked(TRANSFER_CODE_SECTION_LENGTH)\n\t\t\t.take(TRANSFER_CODE_SECTION_COUNT)\n\n\t\tbinding.transferCodeSection1.text = sections[0]\n\t\tbinding.transferCodeSection2.text = sections[1]\n\t\tbinding.transferCodeSection3.text = sections[2]\n\t}\n\n\tprivate fun setupClickToCopy() {\n\t\t// Set the selectable item ripple drawable as this views foreground\n\t\tval outValue = TypedValue()\n\t\tcontext.theme.resolveAttribute(android.R.attr.selectableItemBackground, outValue, true)\n\t\tval selectableItemDrawable = ContextCompat.getDrawable(context, outValue.resourceId)\n\t\tforeground = selectableItemDrawable\n\n\t\tsetOnClickListener {\n\t\t\ttransferCode?.let {\n\t\t\t\tval clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager\n\t\t\t\tval clip = ClipData.newPlainText(context.getString(R.string.wallet_transfer_code_title), it)\n\t\t\t\tclipboardManager.setPrimaryClip(clip)\n\t\t\t\tToast.makeText(context, R.string.wallet_transfer_code_copied, Toast.LENGTH_SHORT).show()\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/view/TransferCodeWaitingView.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.view\n\nimport android.animation.ObjectAnimator\nimport android.animation.PropertyValuesHolder\nimport android.animation.ValueAnimator\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.LayoutInflater\nimport android.view.animation.AccelerateDecelerateInterpolator\nimport android.view.animation.AccelerateInterpolator\nimport androidx.constraintlayout.widget.ConstraintLayout\nimport androidx.core.animation.addListener\nimport ch.admin.bag.covidcertificate.wallet.databinding.ViewTransferCodeWaitingBinding\n\nclass TransferCodeWaitingView @JvmOverloads constructor(\n\tcontext: Context,\n\tattrs: AttributeSet? = null,\n\tdefStyleAttr: Int = 0\n) : ConstraintLayout(context, attrs, defStyleAttr) {\n\n\tprivate val binding = ViewTransferCodeWaitingBinding.inflate(LayoutInflater.from(context), this)\n\n\tinit {\n\t\tclipToPadding = false\n\t\tclipChildren = false\n\t}\n\n\toverride fun onFinishInflate() {\n\t\tsuper.onFinishInflate()\n\n\t\t// Animate ripple\n\t\tval rippleScaleX = PropertyValuesHolder.ofFloat(SCALE_X, 1f, 3f)\n\t\tval rippleScaleY = PropertyValuesHolder.ofFloat(SCALE_Y, 1f, 3f)\n\t\tval rippleAlpha = PropertyValuesHolder.ofFloat(ALPHA, 1f, 0f)\n\t\tval rippleAnimation = ObjectAnimator.ofPropertyValuesHolder(binding.illuTransferCodeWaitingRipple, rippleScaleX, rippleScaleY, rippleAlpha).apply {\n\t\t\tduration = 1000L\n\t\t\tstartDelay = 8000L\n\t\t\tinterpolator = AccelerateInterpolator()\n\t\t\taddListener(\n\t\t\t\t// startDelay is ignored in repeat, so do a manual repeat\n\t\t\t\tonEnd = { start() }\n\t\t\t)\n\t\t}\n\t\trippleAnimation.start()\n\n\t\t// Animate phone\n\t\tObjectAnimator.ofFloat(binding.illuTransferCodeWaitingPhone, TRANSLATION_Y, 0f, -15f).apply {\n\t\t\trepeatCount = ValueAnimator.INFINITE\n\t\t\trepeatMode = ValueAnimator.REVERSE\n\t\t\tinterpolator = AccelerateDecelerateInterpolator()\n\t\t\tduration = 1500L\n\t\t}.start()\n\n\t\t// Animate shadow\n\t\tval shadowScaleX = PropertyValuesHolder.ofFloat(SCALE_X, 1f, 0.85f)\n\t\tval shadowScaleY = PropertyValuesHolder.ofFloat(SCALE_Y, 1f, 0.85f)\n\t\tObjectAnimator.ofPropertyValuesHolder(binding.illuTransferCodeWaitingShadow, shadowScaleX, shadowScaleY).apply {\n\t\t\trepeatCount = ValueAnimator.INFINITE\n\t\t\trepeatMode = ValueAnimator.REVERSE\n\t\t\tinterpolator = AccelerateDecelerateInterpolator()\n\t\t\tduration = 1500L\n\t\t}.start()\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/transfercode/worker/TransferWorker.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.transfercode.worker\n\nimport android.content.Context\nimport androidx.work.*\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.exception.TimeDeviationException\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.DecodeState\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.MainApplication\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataItem\nimport ch.admin.bag.covidcertificate.wallet.data.WalletDataSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.TransferCodeCrypto\nimport ch.admin.bag.covidcertificate.wallet.transfercode.model.TransferCodeModel\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliveryRepository\nimport ch.admin.bag.covidcertificate.wallet.transfercode.net.DeliverySpec\nimport ch.admin.bag.covidcertificate.wallet.util.NotificationUtil\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.sync.withLock\nimport kotlinx.coroutines.withContext\nimport java.io.IOException\nimport java.util.concurrent.TimeUnit\nimport kotlin.math.max\n\nclass TransferWorker(context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams) {\n\n\tcompanion object {\n\t\tval WORKER_NAME = TransferWorker::class.java.canonicalName\n\n\t\tprivate const val DEFAULT_REPEAT_INTERVAL = 120 * 60 * 1000L\n\t\tprivate const val DEFAULT_FLEX_INTERVAL = 10 * 60 * 1000L\n\t\tprivate const val MIN_FLEX_INTERVAL = 5 * 60 * 1000L\n\t\tprivate const val DEFAULT_BACKOFF_DELAY = 30 * 1000L\n\n\t\tfun scheduleTransferWorker(context: Context, config: ConfigModel? = null) {\n\t\t\tval checkIntervalConfig = config?.androidTransferCheckIntervalMs\n\t\t\tval transferWorkRequest = PeriodicWorkRequest.Builder(\n\t\t\t\tTransferWorker::class.java,\n\t\t\t\tcheckIntervalConfig ?: DEFAULT_REPEAT_INTERVAL,\n\t\t\t\tTimeUnit.MILLISECONDS,\n\t\t\t\tmax(checkIntervalConfig?.let { it / 20 } ?: DEFAULT_FLEX_INTERVAL, MIN_FLEX_INTERVAL),\n\t\t\t\tTimeUnit.MILLISECONDS\n\t\t\t)\n\t\t\t\t.setBackoffCriteria(\n\t\t\t\t\tBackoffPolicy.EXPONENTIAL,\n\t\t\t\t\tconfig?.androidTransferCheckBackoffMs ?: DEFAULT_BACKOFF_DELAY,\n\t\t\t\t\tTimeUnit.MILLISECONDS\n\t\t\t\t)\n\t\t\t\t.build()\n\n\t\t\tWorkManager.getInstance(context)\n\t\t\t\t.enqueueUniquePeriodicWork(WORKER_NAME, ExistingPeriodicWorkPolicy.KEEP, transferWorkRequest)\n\t\t}\n\n\t\tfun cancelScheduledTransferWorker(context: Context) {\n\t\t\tWorkManager.getInstance(context).cancelUniqueWork(WORKER_NAME)\n\t\t}\n\t}\n\n\tprivate val walletDataStorage = WalletDataSecureStorage.getInstance(context)\n\tprivate val deliveryRepository = DeliveryRepository.getInstance(DeliverySpec(context, BuildConfig.BASE_URL_DELIVERY))\n\n\tprivate val workManager = WorkManager.getInstance(context)\n\n\toverride suspend fun doWork(): Result {\n\t\treturn withContext(Dispatchers.IO) {\n\t\t\tval transferStates = walletDataStorage.getWalletData()\n\t\t\t\t.filterIsInstance<WalletDataItem.TransferCodeWalletData>()\n\t\t\t\t.map { transferCodeItem -> downloadTransferCertificate(transferCodeItem.transferCode) }\n\t\t\t\t.toSet()\n\n\t\t\tif (transferStates.contains(TransferState.ERROR)) {\n\t\t\t\treturn@withContext Result.retry()\n\t\t\t} else if (!transferStates.contains(TransferState.NOT_AVAILABLE)) {\n\t\t\t\tworkManager.cancelUniqueWork(WORKER_NAME)\n\t\t\t}\n\n\t\t\tif (transferStates.contains(TransferState.SUCCESS)) {\n\t\t\t\tNotificationUtil.showTransferSuccessNotification(applicationContext)\n\t\t\t}\n\t\t\tResult.success()\n\t\t}\n\t}\n\n\tprivate suspend fun downloadTransferCertificate(transferCode: TransferCodeModel): TransferState {\n\t\tif (transferCode.isFailed()) {\n\t\t\t//if transfercode is expired plus TRANSFER_CODE_DURATION_FAILS_AFTER_EXPIRES is over, we stop the request and return an NOT_AVAILABLE\n\t\t\treturn TransferState.NOT_AVAILABLE\n\t\t}\n\n\t\tTransferCodeCrypto.getMutex(transferCode.code).withLock {\n\t\t\tval keyPair = TransferCodeCrypto.loadKeyPair(transferCode.code, applicationContext)\n\n\t\t\tif (keyPair != null) {\n\t\t\t\ttry {\n\t\t\t\t\tval decryptedCertificates = deliveryRepository.download(transferCode.code, keyPair)\n\n\t\t\t\t\treturn if (decryptedCertificates.isNotEmpty()) {\n\t\t\t\t\t\tvar didReplaceTransferCode = false\n\n\t\t\t\t\t\tdecryptedCertificates.forEachIndexed { index, convertedCertificate ->\n\t\t\t\t\t\t\tval qrCodeData = convertedCertificate.qrCodeData\n\t\t\t\t\t\t\tval pdfData = convertedCertificate.pdfData\n\t\t\t\t\t\t\tif (index == 0) {\n\t\t\t\t\t\t\t\tdidReplaceTransferCode =\n\t\t\t\t\t\t\t\t\twalletDataStorage.replaceTransferCodeWithCertificate(transferCode, qrCodeData, pdfData)\n\t\t\t\t\t\t\t\tval decodeState = CovidCertificateSdk.Wallet.decode(qrCodeData)\n\t\t\t\t\t\t\t\tif (decodeState is DecodeState.SUCCESS) {\n\t\t\t\t\t\t\t\t\tMainApplication.getTransferCodeConversionMapping(applicationContext)\n\t\t\t\t\t\t\t\t\t\t?.put(transferCode.code, decodeState.certificateHolder)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twalletDataStorage.saveWalletDataItem(WalletDataItem.CertificateWalletData(qrCodeData, pdfData))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Delete the transfer code on the backend and the key pair only if the certificate was stored (either by the above replace method or from another thread)\n\t\t\t\t\t\tval didStoreCertificate = walletDataStorage.containsCertificate(decryptedCertificates.first().qrCodeData)\n\t\t\t\t\t\tif (didReplaceTransferCode || didStoreCertificate) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tdeliveryRepository.complete(transferCode.code, keyPair)\n\t\t\t\t\t\t\t} catch (e: IOException) {\n\t\t\t\t\t\t\t\t// Best effort only\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tTransferCodeCrypto.deleteKeyEntry(transferCode.code, applicationContext)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tTransferState.SUCCESS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tTransferState.NOT_AVAILABLE\n\t\t\t\t\t}\n\t\t\t\t} catch (e: TimeDeviationException) {\n\t\t\t\t\treturn TransferState.ERROR\n\t\t\t\t} catch (e: IOException) {\n\t\t\t\t\treturn TransferState.ERROR\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn TransferState.ERROR\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enum class TransferState {\n\t\tSUCCESS,\n\t\tNOT_AVAILABLE,\n\t\tERROR\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/travel/ForeignValidityFragment.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.travel\n\nimport android.content.res.ColorStateList\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.content.ContextCompat\nimport androidx.core.os.bundleOf\nimport androidx.core.text.bold\nimport androidx.core.text.buildSpannedString\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport androidx.fragment.app.viewModels\nimport androidx.transition.TransitionManager\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.extensions.collectWhenStarted\nimport ch.admin.bag.covidcertificate.common.extensions.getDrawableIdentifier\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.common.views.animateBackgroundTintColor\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.android.extensions.DEFAULT_DISPLAY_DATE_TIME_FORMATTER\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.extensions.isPositiveRatTest\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertType\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.eu.DccCert\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.CheckNationalRulesState\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentForeignValidityBinding\nimport ch.admin.bag.covidcertificate.wallet.databinding.ItemForeignRulesCheckHintBinding\nimport com.google.android.material.datepicker.CalendarConstraints\nimport com.google.android.material.datepicker.DateValidatorPointForward\nimport com.google.android.material.datepicker.MaterialDatePicker\nimport com.google.android.material.dialog.MaterialAlertDialogBuilder\nimport com.google.android.material.timepicker.MaterialTimePicker\nimport com.google.android.material.timepicker.TimeFormat\nimport java.time.*\nimport java.time.format.DateTimeFormatter\nimport java.util.*\n\nclass ForeignValidityFragment : Fragment(R.layout.fragment_foreign_validity) {\n\n\tcompanion object {\n\n\t\tprivate const val ARG_CERTIFICATE = \"ARG_CERTIFICATE\"\n\n\t\tfun newInstance(certificateHolder: CertificateHolder) = ForeignValidityFragment().apply {\n\t\t\targuments = bundleOf(ARG_CERTIFICATE to certificateHolder)\n\t\t}\n\t}\n\n\tprivate var _binding: FragmentForeignValidityBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val viewModel by viewModels<ForeignValidityViewModel>()\n\tprivate val configViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\tprivate lateinit var certificateHolder: CertificateHolder\n\tprivate var useDateTime = false\n\tprivate lateinit var formatter: DateTimeFormatter\n\n\tprivate lateinit var walletStorage: WalletSecureStorage\n\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tcertificateHolder = (arguments?.getSerializable(ARG_CERTIFICATE) as? CertificateHolder)\n\t\t\t?: throw IllegalStateException(\"ForeignValidityFragment created without Certificate!\")\n\t\tuseDateTime = certificateHolder.certType == CertType.TEST && (certificateHolder.certificate as? DccCert)?.tests?.firstOrNull()?.isPositiveRatTest() != true\n\t\tformatter = if (useDateTime) DEFAULT_DISPLAY_DATE_TIME_FORMATTER else DEFAULT_DISPLAY_DATE_FORMATTER\n\t\tviewModel.certificateHolder = certificateHolder\n\n\t\twalletStorage = WalletSecureStorage.getInstance(requireContext())\n\t\trestoreLastSelection()\n\n\t\tif (!useDateTime) {\n\t\t\tviewModel.setSelectedTime(LocalTime.MAX)\n\t\t}\n\t}\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentForeignValidityBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\n\t\tsetupCountrySelection()\n\t\tsetupCheckDateSelection()\n\t\tsetupVerificationState()\n\n\t\tbinding.toolbar.setNavigationOnClickListener {\n\t\t\tparentFragmentManager.popBackStack()\n\t\t}\n\n\t\tconfigViewModel.configLiveData.observe(viewLifecycleOwner) { onConfigChanged(it) }\n\t\tviewLifecycleOwner.collectWhenStarted(viewModel.viewState) { onViewStateChanged(it) }\n\t\tviewLifecycleOwner.collectWhenStarted(viewModel.verificationState) { onVerificationStateChanged(it) }\n\n\t\tviewLifecycleOwner.collectWhenStarted(viewModel.selectedCountryCode) { countryCode ->\n\t\t\tval textColor = ContextCompat.getColor(requireContext(), if (countryCode != null) R.color.black else R.color.grey)\n\t\t\tbinding.foreignValidityCountry.setTextColor(textColor)\n\t\t\tbinding.foreignValidityCountry.text = countryCode?.let {\n\t\t\t\tgetCountryNameFromCode(it) ?: it\n\t\t\t} ?: getString(R.string.wallet_foreign_rules_check_country_empty_label)\n\t\t\twalletStorage.setForeignRulesCheckSelectedCountry(countryCode)\n\t\t}\n\n\t\tviewLifecycleOwner.collectWhenStarted(viewModel.selectedDateTime) { dateTime ->\n\t\t\tbinding.foreignValidityDateTime.text = dateTime.format(formatter)\n\t\t\tbinding.foreignValidityDateTimeError.isVisible = dateTime < LocalDateTime.now().minusMinutes(5)\n\t\t\twalletStorage.setForeignRulesCheckSelectedDate(dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli())\n\t\t}\n\t}\n\n\toverride fun onDestroyView() {\n\t\tsuper.onDestroyView()\n\t\t_binding = null\n\t}\n\n\tprivate fun restoreLastSelection() {\n\t\twalletStorage.getForeignRulesCheckSelectedCountry()?.let {\n\t\t\tviewModel.setSelectedCountry(it)\n\t\t}\n\n\t\twalletStorage.getForeignRulesCheckSelectedDate().takeIf { it > 0 }?.let {\n\t\t\tval dateTime = Instant.ofEpochMilli(it).atZone(ZoneId.systemDefault())\n\t\t\tif (dateTime > ZonedDateTime.now()) {\n\t\t\t\tviewModel.setSelectedDate(dateTime.toLocalDate())\n\t\t\t\tviewModel.setSelectedTime(dateTime.toLocalTime())\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun onConfigChanged(config: ConfigModel) {\n\t\tval languageKey = getString(R.string.language_key)\n\t\tval linkText = config.getForeignRulesLinkText(languageKey)\n\t\tval linkUrl = config.getForeignRulesLinkUrl(languageKey)\n\t\tval foreignValidityHints = config.getForeignRulesHints(languageKey)\n\n\t\tbinding.foreignValidityHintsGroup.isVisible = foreignValidityHints?.isNotEmpty() == true\n\t\tbinding.foreignValidityHintsContainer.removeAllViews()\n\t\tforeignValidityHints?.forEach { hint ->\n\t\t\tval itemBinding = ItemForeignRulesCheckHintBinding.inflate(layoutInflater, binding.foreignValidityHintsContainer, true)\n\t\t\tval iconId = requireContext().getDrawableIdentifier(hint.iconAndroid)\n\t\t\titemBinding.icon.setImageResource(iconId)\n\t\t\titemBinding.hintText.text = hint.text\n\t\t}\n\n\t\tbinding.foreignValidityMoreInfosGroup.isVisible = !linkText.isNullOrEmpty() && !linkUrl.isNullOrEmpty()\n\t\tbinding.foreignValidityMoreInfosText.text = linkText\n\t\tbinding.foreignValidityMoreInfosButton.setOnClickListener {\n\t\t\tlinkUrl?.let { UrlUtil.openUrl(requireContext(), it) }\n\t\t}\n\t}\n\n\tprivate fun onViewStateChanged(state: ForeignValidityViewState) {\n\t\tbinding.apply {\n\t\t\tloadingIndicator.isVisible = state is ForeignValidityViewState.LOADING\n\t\t\tcontent.isVisible = state is ForeignValidityViewState.SUCCESS\n\t\t\terrorContainer.isVisible = state is ForeignValidityViewState.ERROR\n\n\t\t\tif (state is ForeignValidityViewState.ERROR) {\n\t\t\t\tif (state.error.code == ErrorCodes.GENERAL_OFFLINE) {\n\t\t\t\t\terrorStatusMessage.text = buildSpannedString {\n\t\t\t\t\t\tbold {\n\t\t\t\t\t\t\tappendLine(getString(R.string.wallet_transfer_code_no_internet_title))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tappend(getString(R.string.wallet_foreign_rules_check_network_error_text))\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\terrorStatusMessage.text = buildSpannedString {\n\t\t\t\t\t\tbold {\n\t\t\t\t\t\t\tappendLine(getString(R.string.verifier_network_error_text))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tappend(getString(R.string.wallet_detail_network_error_text))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\terrorCode.text = state.error.code\n\n\t\t\t\terrorRetryButton.setOnClickListener {\n\t\t\t\t\tviewModel.loadAvailableCountryCodes()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun onVerificationStateChanged(state: VerificationState?) {\n\t\tTransitionManager.beginDelayedTransition(binding.root)\n\n\t\tval countryName = viewModel.selectedCountryCode.value?.let { getCountryNameFromCode(it) } ?: \"\"\n\t\tval checkDate = viewModel.selectedDateTime.value.format(formatter)\n\t\twhen (state) {\n\t\t\tnull -> {\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.blueish)\n\t\t\t\tval iconColor = ContextCompat.getColor(requireContext(), R.color.blue)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.isVisible = true\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.setImageResource(R.drawable.ic_info_blue)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.imageTintList = ColorStateList.valueOf(iconColor)\n\t\t\t\tbinding.foreignValidityVerificationStateProgress.isVisible = false\n\t\t\t\tbinding.foreignValidityVerificationState.animateBackgroundTintColor(backgroundColor)\n\t\t\t\tbinding.foreignValidityVerificationState.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappend(getString(R.string.wallet_foreign_rules_check_state_empty))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbinding.foreignValidityErrorCode.isVisible = false\n\t\t\t}\n\t\t\tis VerificationState.LOADING -> {\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.greyish)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.isVisible = false\n\t\t\t\tbinding.foreignValidityVerificationStateProgress.isVisible = true\n\t\t\t\tbinding.foreignValidityVerificationState.animateBackgroundTintColor(backgroundColor)\n\t\t\t\tbinding.foreignValidityVerificationState.setText(R.string.wallet_certificate_verifying)\n\t\t\t\tbinding.foreignValidityErrorCode.isVisible = false\n\t\t\t}\n\t\t\tis VerificationState.SUCCESS -> {\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.greenish)\n\t\t\t\tval iconColor = ContextCompat.getColor(requireContext(), R.color.green)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.isVisible = true\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.setImageResource(R.drawable.ic_check_filled)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.imageTintList = ColorStateList.valueOf(iconColor)\n\t\t\t\tbinding.foreignValidityVerificationStateProgress.isVisible = false\n\t\t\t\tbinding.foreignValidityVerificationState.animateBackgroundTintColor(backgroundColor)\n\t\t\t\tbinding.foreignValidityVerificationState.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappendLine(getString(R.string.wallet_foreign_rules_check_state_valid))\n\t\t\t\t\t}\n\t\t\t\t\tappend(\n\t\t\t\t\t\tgetString(R.string.wallet_foreign_rules_check_state_country_and_date)\n\t\t\t\t\t\t\t.replace(\"{COUNTRY}\", countryName)\n\t\t\t\t\t\t\t.replace(\"{DATE}\", checkDate)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tbinding.foreignValidityErrorCode.isVisible = false\n\t\t\t}\n\t\t\tis VerificationState.INVALID -> {\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.redish)\n\t\t\t\tval iconColor = ContextCompat.getColor(requireContext(), R.color.red)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.isVisible = true\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.setImageResource(R.drawable.ic_error)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.imageTintList = ColorStateList.valueOf(iconColor)\n\t\t\t\tbinding.foreignValidityVerificationStateProgress.isVisible = false\n\t\t\t\tbinding.foreignValidityVerificationState.animateBackgroundTintColor(backgroundColor)\n\t\t\t\tbinding.foreignValidityVerificationState.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappendLine(getString(R.string.wallet_foreign_rules_check_state_invalid))\n\t\t\t\t\t}\n\t\t\t\t\tappend(\n\t\t\t\t\t\tgetString(R.string.wallet_foreign_rules_check_state_country_and_date)\n\t\t\t\t\t\t\t.replace(\"{COUNTRY}\", countryName)\n\t\t\t\t\t\t\t.replace(\"{DATE}\", checkDate)\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tval nationalRulesState = state.nationalRulesState\n\t\t\t\tif (nationalRulesState is CheckNationalRulesState.INVALID && nationalRulesState.ruleId != null) {\n\t\t\t\t\tbinding.foreignValidityErrorCode.isVisible = true\n\t\t\t\t\tbinding.foreignValidityErrorCode.text = nationalRulesState.ruleId\n\t\t\t\t} else {\n\t\t\t\t\tbinding.foreignValidityErrorCode.isVisible = false\n\t\t\t\t}\n\t\t\t}\n\t\t\tis VerificationState.ERROR -> {\n\t\t\t\tval backgroundColor = ContextCompat.getColor(requireContext(), R.color.orangeish)\n\t\t\t\tval iconColor = ContextCompat.getColor(requireContext(), R.color.orange)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.isVisible = true\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.setImageResource(R.drawable.ic_process_error)\n\t\t\t\tbinding.foreignValidityVerificationStateIcon.imageTintList = ColorStateList.valueOf(iconColor)\n\t\t\t\tbinding.foreignValidityVerificationStateProgress.isVisible = false\n\t\t\t\tbinding.foreignValidityVerificationState.animateBackgroundTintColor(backgroundColor)\n\t\t\t\tbinding.foreignValidityVerificationState.text = buildSpannedString {\n\t\t\t\t\tbold {\n\t\t\t\t\t\tappend(getString(R.string.wallet_detail_network_error_title))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbinding.foreignValidityErrorCode.isVisible = true\n\t\t\t\tbinding.foreignValidityErrorCode.text = state.error.code\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fun setupCountrySelection() {\n\t\tbinding.foreignValidityCountryContainer.setOnClickListener {\n\t\t\tval availableCountryCodes = viewModel.availableCountryCodes.value\n\t\t\tval availableCountries = availableCountryCodes.associateWith { getCountryNameFromCode(it) ?: it }\n\t\t\tval countryNames = availableCountries.values.sorted().toTypedArray()\n\n\t\t\tval currentlySelectedCountryCode = viewModel.selectedCountryCode.value\n\t\t\tvar selection = currentlySelectedCountryCode?.let { countryNames.indexOf(availableCountries[it]) } ?: -1\n\n\t\t\tMaterialAlertDialogBuilder(requireContext())\n\t\t\t\t.setTitle(R.string.wallet_foreign_rules_check_country_picker_title)\n\t\t\t\t.setSingleChoiceItems(countryNames, selection) { dialog, which ->\n\t\t\t\t\tselection = which\n\t\t\t\t\tval selectedCountryName = countryNames[selection]\n\t\t\t\t\tval selectedCountryCode = availableCountries.filterValues { it == selectedCountryName }.keys.single()\n\t\t\t\t\tviewModel.setSelectedCountry(selectedCountryCode)\n\t\t\t\t\tdialog.dismiss()\n\t\t\t\t}.show()\n\t\t}\n\t}\n\n\tprivate fun setupCheckDateSelection() {\n\t\tbinding.foreignValidityDateContainer.setOnClickListener {\n\t\t\tshowDatePicker()\n\t\t}\n\t}\n\n\tprivate fun setupVerificationState() {\n\t\tbinding.foreignValidityVerificationState.setOnClickListener {\n\t\t\tviewModel.reverify()\n\t\t}\n\t}\n\n\tprivate fun showDatePicker() {\n\t\tval constraints = CalendarConstraints.Builder()\n\t\t\t.setValidator(DateValidatorPointForward.now())\n\t\t\t.build()\n\n\t\tval selectionTimestamp = viewModel.selectedDateTime.value\n\t\t\t.atZone(ZoneId.systemDefault())\n\t\t\t.toInstant()\n\t\t\t.toEpochMilli()\n\n\t\tval datePicker = MaterialDatePicker.Builder.datePicker()\n\t\t\t.setCalendarConstraints(constraints)\n\t\t\t.setSelection(selectionTimestamp)\n\t\t\t.build()\n\n\t\tdatePicker.addOnPositiveButtonClickListener { date ->\n\t\t\tval pickedDate = Instant.ofEpochMilli(date).atZone(ZoneOffset.UTC).toLocalDate()\n\t\t\tviewModel.setSelectedDate(pickedDate)\n\n\t\t\tif (useDateTime) {\n\t\t\t\tshowTimePicker()\n\t\t\t} else {\n\t\t\t\tviewModel.setSelectedTime(LocalTime.MAX)\n\t\t\t}\n\t\t}\n\n\t\tdatePicker.show(parentFragmentManager, null)\n\t}\n\n\tprivate fun showTimePicker() {\n\t\tval timePicker = MaterialTimePicker.Builder()\n\t\t\t.setTimeFormat(TimeFormat.CLOCK_24H)\n\t\t\t.setHour(viewModel.selectedDateTime.value.hour)\n\t\t\t.setMinute(viewModel.selectedDateTime.value.minute)\n\t\t\t.build()\n\n\t\ttimePicker.addOnPositiveButtonClickListener {\n\t\t\tval pickedTime = LocalTime.of(timePicker.hour, timePicker.minute)\n\t\t\tviewModel.setSelectedTime(pickedTime)\n\t\t}\n\n\t\ttimePicker.show(parentFragmentManager, null)\n\t}\n\n\tprivate fun getCountryNameFromCode(countryCode: String): String? {\n\t\tval actualCountryCode = when (countryCode) {\n\t\t\t\"EL\" -> \"GR\" // EL is the ISO 639-1 code for Greece\n\t\t\telse -> countryCode\n\t\t}\n\n\t\treturn Locale(\"\", actualCountryCode).getDisplayCountry(Locale((getString(R.string.language_key)))).takeIf { it.isNotEmpty() }\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/travel/ForeignValidityViewModel.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.travel\n\nimport android.app.Application\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.viewModelScope\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.android.utils.NetworkUtil\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.healthcert.CertificateHolder\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.VerificationState\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.flow.MutableStateFlow\nimport kotlinx.coroutines.flow.asStateFlow\nimport kotlinx.coroutines.flow.combine\nimport kotlinx.coroutines.flow.update\nimport kotlinx.coroutines.launch\nimport java.time.LocalDate\nimport java.time.LocalDateTime\nimport java.time.LocalTime\n\nclass ForeignValidityViewModel(application: Application) : AndroidViewModel(application) {\n\n\tprivate val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\n\tvar certificateHolder: CertificateHolder? = null\n\n\tprivate val availableCountryCodesMutable = MutableStateFlow<List<String>>(emptyList())\n\tval availableCountryCodes = availableCountryCodesMutable.asStateFlow()\n\n\tprivate val selectedCountryCodeMutable = MutableStateFlow<String?>(null)\n\tval selectedCountryCode = selectedCountryCodeMutable.asStateFlow()\n\n\tprivate val selectedDateTimeMutable = MutableStateFlow(LocalDateTime.now())\n\tval selectedDateTime = selectedDateTimeMutable.asStateFlow()\n\n\tprivate val foreignValidityFormState = combine(selectedCountryCode, selectedDateTime) { countryCode, checkDate ->\n\t\tcountryCode to checkDate\n\t}\n\n\tprivate val verificationStateMutable = MutableStateFlow<VerificationState?>(null)\n\tval verificationState = verificationStateMutable.asStateFlow()\n\n\tprivate var verificationJob: Job? = null\n\n\tprivate val viewStateMutable = MutableStateFlow<ForeignValidityViewState>(ForeignValidityViewState.LOADING)\n\tval viewState = viewStateMutable.asStateFlow()\n\n\tinit {\n\t\tloadAvailableCountryCodes()\n\n\t\tviewModelScope.launch(Dispatchers.IO) {\n\t\t\tforeignValidityFormState.collect { (countryCode, checkDate) ->\n\t\t\t\tstartVerification(countryCode, checkDate)\n\t\t\t}\n\t\t}\n\t}\n\n\tfun loadAvailableCountryCodes() {\n\t\tviewModelScope.launch(Dispatchers.IO) {\n\t\t\tviewStateMutable.value = ForeignValidityViewState.LOADING\n\t\t\ttry {\n\t\t\t\tavailableCountryCodesMutable.value = CovidCertificateSdk.Wallet.getForeignRulesCountryCodes().toList()\n\t\t\t\tviewStateMutable.value = ForeignValidityViewState.SUCCESS\n\t\t\t} catch (e: Exception) {\n\t\t\t\tif (NetworkUtil.isNetworkAvailable(connectivityManager)) {\n\t\t\t\t\tviewStateMutable.value = ForeignValidityViewState.ERROR(StateError(ErrorCodes.GENERAL_NETWORK_FAILURE))\n\t\t\t\t} else {\n\t\t\t\t\tviewStateMutable.value = ForeignValidityViewState.ERROR(StateError(ErrorCodes.GENERAL_OFFLINE))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfun setSelectedCountry(countryCode: String) {\n\t\tselectedCountryCodeMutable.value = countryCode\n\t}\n\n\tfun setSelectedDate(date: LocalDate) {\n\t\tselectedDateTimeMutable.update {\n\t\t\tit.withYear(date.year).withMonth(date.monthValue).withDayOfMonth(date.dayOfMonth)\n\t\t}\n\t}\n\n\tfun setSelectedTime(time: LocalTime) {\n\t\tselectedDateTimeMutable.update {\n\t\t\tit.withHour(time.hour).withMinute(time.minute)\n\t\t}\n\t}\n\n\tfun reverify() {\n\t\tstartVerification(selectedCountryCode.value, selectedDateTime.value)\n\t}\n\n\tprivate fun startVerification(countryCode: String?, checkDate: LocalDateTime) {\n\t\tval certificate = certificateHolder ?: return\n\n\t\tif (countryCode == null || checkDate < LocalDateTime.now().minusMinutes(5)) {\n\t\t\tverificationStateMutable.value = null\n\t\t\treturn\n\t\t}\n\n\t\tverificationJob?.cancel()\n\t\tverificationJob = viewModelScope.launch {\n\t\t\t// Add an artificial delay because changing the date only would not really show a loading indication to the user\n\t\t\tverificationStateMutable.value = VerificationState.LOADING\n\t\t\tdelay(1000L)\n\n\t\t\tval verificationStateFlow = CovidCertificateSdk.Wallet.verify(certificate, emptySet(), countryCode, checkDate, viewModelScope)\n\t\t\tverificationStateFlow.collect { state ->\n\t\t\t\tverificationStateMutable.value = state\n\n\t\t\t\t// Once the verification state is not loading anymore, cancel the flow collection job (otherwise the flow stays active without emitting anything)\n\t\t\t\tif (state !is VerificationState.LOADING) {\n\t\t\t\t\tverificationJob?.cancel()\n\t\t\t\t\tverificationJob = null\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/travel/ForeignValidityViewState.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.travel\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.StateError\n\nsealed class ForeignValidityViewState {\n\tobject LOADING : ForeignValidityViewState()\n\tobject SUCCESS : ForeignValidityViewState()\n\tdata class ERROR(val error: StateError) : ForeignValidityViewState()\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/util/BitmapUtil.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.util\n\nimport android.content.Context\nimport android.graphics.Bitmap\nimport android.graphics.Canvas\nimport android.graphics.Paint\nimport androidx.annotation.ColorInt\nimport androidx.core.content.res.ResourcesCompat\nimport ch.admin.bag.covidcertificate.sdk.android.CovidCertificateSdk\nimport ch.admin.bag.covidcertificate.sdk.core.models.trustlist.ActiveModes\nimport ch.admin.bag.covidcertificate.wallet.R\n\nobject BitmapUtil {\n\tfun getHumanReadableName(mode: String): String {\n\t\tval activeModes: List<ActiveModes> = CovidCertificateSdk.Wallet.getActiveModes().value\n\t\treturn activeModes.find { activeMode -> activeMode.id == mode }?.displayName ?: mode\n\t}\n\n\tfun textAsBitmap(\n\t\tcontext: Context,\n\t\ttext: String,\n\t\ttextSize: Int,\n\t\t@ColorInt textColor: Int,\n\t\t@ColorInt backgroundColor: Int,\n\t\tisNotOK: Boolean = false\n\t): Bitmap? {\n\t\tval customTypeface = ResourcesCompat.getFont(context, R.font.inter_bold)\n\t\tval paint = Paint(Paint.ANTI_ALIAS_FLAG)\n\t\tpaint.textSize = textSize.toFloat()\n\t\tpaint.color = textColor\n\t\tpaint.textAlign = Paint.Align.LEFT\n\t\tpaint.typeface = customTypeface\n\t\tval baseline: Float = -paint.ascent()\n\t\tval width = (paint.measureText(text) + 0.5f).toInt()\n\t\tval height = (baseline + paint.descent() + 0.5f).toInt()\n\t\tval image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)\n\t\tval canvas = Canvas(image)\n\t\tcanvas.drawText(text, 0.0f, baseline, paint)\n\t\tif (isNotOK) {\n\t\t\tpaint.strokeWidth = 5.0f\n\t\t\tcanvas.drawLine(10.0f, 3.0f, width.toFloat() - 12.0f, height.toFloat() - 3.0f, paint)\n\t\t\tpaint.color = backgroundColor\n\t\t\tcanvas.drawLine(14.0f, 0.0f, width.toFloat() - 8.0f, height.toFloat() - 6.0f, paint)\n\t\t}\n\t\treturn image\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/util/ModeValidityStateUtil.kt",
    "content": "/*\n * Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.util\n\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.ModeValidityState\n\nfun ModeValidityState.isValid() = this == ModeValidityState.SUCCESS\nfun ModeValidityState.isInvalid() = this == ModeValidityState.INVALID\nfun ModeValidityState.isPartiallyValid() = this in setOf(ModeValidityState.SUCCESS_2G, ModeValidityState.SUCCESS_2G_PLUS)\nfun ModeValidityState.isLight() = this == ModeValidityState.IS_LIGHT\nfun ModeValidityState.isUnknown() = this in setOf(ModeValidityState.UNKNOWN_MODE, ModeValidityState.UNKNOWN)"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/util/NotificationUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.util\n\nimport android.app.NotificationChannel\nimport android.app.NotificationManager\nimport android.app.PendingIntent\nimport android.content.Context\nimport android.content.Intent\nimport android.os.Build\nimport androidx.core.app.NotificationCompat\nimport androidx.core.app.NotificationManagerCompat\nimport androidx.core.content.ContextCompat\nimport ch.admin.bag.covidcertificate.wallet.MainActivity\nimport ch.admin.bag.covidcertificate.wallet.R\n\nobject NotificationUtil {\n\n\tprivate const val WALLET_TRANSFER_NOTIFICATION_ID = 0\n\tprivate const val WALLET_TRANSFER_NOTIFICATION_CHANNEL_ID = \"wallet_transfer_notification_channel\"\n\n\tfun createTransferNotificationChannel(context: Context) {\n\t\tif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n\t\t\tval name = context.getString(R.string.wallet_transfer_code_title)\n\t\t\tval importance = NotificationManager.IMPORTANCE_DEFAULT\n\t\t\tval channel = NotificationChannel(WALLET_TRANSFER_NOTIFICATION_CHANNEL_ID, name, importance)\n\t\t\tval notificationManager: NotificationManager =\n\t\t\t\tcontext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager\n\t\t\tnotificationManager.createNotificationChannel(channel)\n\t\t}\n\t}\n\n\tfun showTransferSuccessNotification(context: Context) {\n\t\tval intent = Intent(context, MainActivity::class.java).apply {\n\t\t\tflags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK\n\t\t}\n\t\tval pendingIntent: PendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)\n\n\t\tval notificationText = context.getString(R.string.wallet_notification_transfer_text)\n\t\tval notificationBuilder = NotificationCompat.Builder(context, WALLET_TRANSFER_NOTIFICATION_CHANNEL_ID)\n\t\t\t.setSmallIcon(R.drawable.ic_transfer_notification)\n\t\t\t.setColor(ContextCompat.getColor(context, R.color.blue))\n\t\t\t.setContentTitle(context.getString(R.string.wallet_notification_transfer_title))\n\t\t\t.setContentText(notificationText)\n\t\t\t.setStyle(NotificationCompat.BigTextStyle().bigText(notificationText))\n\t\t\t.setContentIntent(pendingIntent)\n\t\t\t.setAutoCancel(true)\n\t\t\t.setPriority(NotificationCompat.PRIORITY_DEFAULT)\n\n\t\twith(NotificationManagerCompat.from(context)) {\n\t\t\tnotify(WALLET_TRANSFER_NOTIFICATION_ID, notificationBuilder.build())\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/util/QrCode.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.util\n\nimport android.graphics.Bitmap\nimport android.graphics.Color\nimport android.os.Parcel\nimport com.google.zxing.BarcodeFormat\nimport com.google.zxing.EncodeHintType\nimport com.google.zxing.MultiFormatWriter\nimport com.google.zxing.qrcode.decoder.ErrorCorrectionLevel\n\nclass QrCode private constructor(val data: String, val size: Int) {\n\n\tcompanion object {\n\t\tconst val DEFAULT_BITMAP_SIZE = 1024\n\t\tprivate val DEFAULT_ECC = ErrorCorrectionLevel.M\n\t\tprivate val DEFAULT_CHARSET = \"ISO-8859-1\"\n\n\t\tfun create(value: String): QrCode {\n\t\t\treturn QrCode(value, encode(value, 0).width)\n\t\t}\n\n\t\tprivate fun encode(value: String, size: Int) = MultiFormatWriter().encode(\n\t\t\tvalue,\n\t\t\tBarcodeFormat.QR_CODE,\n\t\t\tsize,\n\t\t\tsize,\n\t\t\tmapOf(EncodeHintType.ERROR_CORRECTION to DEFAULT_ECC, EncodeHintType.CHARACTER_SET to DEFAULT_CHARSET)\n\t\t)\n\n\t\tfun renderToBitmap(data: String, outSize: Int = 0): Bitmap {\n\t\t\tval bitMatrix = encode(data, outSize)\n\t\t\tval bitmap = Bitmap.createBitmap(bitMatrix.width, bitMatrix.height, Bitmap.Config.RGB_565)\n\t\t\tfor (x in 0 until bitMatrix.width) {\n\t\t\t\tfor (y in 0 until bitMatrix.height) {\n\t\t\t\t\tbitmap.setPixel(x, y, if (bitMatrix[x, y]) Color.BLACK else Color.WHITE)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn bitmap\n\t\t}\n\t}\n\n\n\tconstructor(parcel: Parcel) : this(\n\t\tparcel.readString() ?: throw IllegalArgumentException(\"No data string in QrCode parcel!\"),\n\t\tparcel.readInt()\n\t)\n\n\tfun renderToBitmap(outSize: Int = 0): Bitmap {\n\t\treturn renderToBitmap(data, outSize)\n\t}\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/util/VerificationStateUtil.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.util\n\nimport android.content.Context\nimport android.text.SpannableString\nimport androidx.annotation.ColorRes\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.util.addBoldDate\nimport ch.admin.bag.covidcertificate.common.util.makeSubStringBold\nimport ch.admin.bag.covidcertificate.sdk.core.data.ErrorCodes\nimport ch.admin.bag.covidcertificate.sdk.core.models.state.*\nimport ch.admin.bag.covidcertificate.sdk.core.verifier.nationalrules.NationalRulesError\nimport ch.admin.bag.covidcertificate.wallet.R\n\nconst val DATE_REPLACEMENT_STRING = \"{DATE}\"\n\n/**\n * The verification state indicates an offline mode if it is an ERROR and the error code is set to GENERAL_OFFLINE (G|OFF)\n */\nfun VerificationState.isOfflineMode() = this is VerificationState.ERROR && this.error.code == ErrorCodes.GENERAL_OFFLINE\nfun VerificationState.isTimeInconsistency() = this is VerificationState.ERROR && this.error.code == ErrorCodes.TIME_INCONSISTENCY\n\nfun VerificationState.INVALID.getValidationStatusString(context: Context) = when {\n\tsignatureState is CheckSignatureState.INVALID -> {\n\t\tval invalidSignatureState = signatureState as CheckSignatureState.INVALID\n\t\twhen (invalidSignatureState.signatureErrorCode) {\n\t\t\tErrorCodes.SIGNATURE_TYPE_INVALID -> {\n\t\t\t\tcontext.getString(R.string.wallet_error_invalid_format)\n\t\t\t\t\t.makeSubStringBold(context.getString(R.string.wallet_error_invalid_format_bold))\n\t\t\t}\n\t\t\tErrorCodes.SIGNATURE_TIMESTAMP_EXPIRED -> {\n\t\t\t\tSpannableString(context.getString(R.string.wallet_error_qr_code_expired))\n\t\t\t}\n\t\t\telse -> {\n\t\t\t\tcontext.getString(R.string.wallet_error_invalid_signature)\n\t\t\t\t\t.makeSubStringBold(context.getString(R.string.wallet_error_invalid_signature_bold))\n\t\t\t}\n\t\t}\n\t}\n\trevocationState is CheckRevocationState.INVALID -> {\n\t\tcontext.getString(R.string.wallet_error_revocation)\n\t\t\t.makeSubStringBold(context.getString(R.string.wallet_error_revocation_bold))\n\t}\n\tnationalRulesState is CheckNationalRulesState.NOT_VALID_ANYMORE -> {\n\t\tSpannableString(context.getString(R.string.wallet_error_expired))\n\t}\n\tnationalRulesState is CheckNationalRulesState.NOT_YET_VALID -> {\n\t\tcontext.getString(R.string.wallet_error_valid_from).addBoldDate(\n\t\t\tDATE_REPLACEMENT_STRING,\n\t\t\t(nationalRulesState as CheckNationalRulesState.NOT_YET_VALID).validityRange?.validFrom!!\n\t\t)\n\t}\n\tnationalRulesState is CheckNationalRulesState.INVALID -> {\n\t\tif ((nationalRulesState as CheckNationalRulesState.INVALID).nationalRulesError == NationalRulesError.NOT_FULLY_PROTECTED) {\n\t\t\tSpannableString(context.getString(R.string.wallet_error_not_fully_protected_national_rules))\n\t\t} else {\n\t\t\tSpannableString(context.getString(R.string.wallet_error_national_rules))\n\t\t}\n\t}\n\telse -> SpannableString(context.getString(R.string.unknown_error))\n}\n\n@ColorRes\nfun VerificationState.getNameDobColor(): Int {\n\treturn when (this) {\n\t\tis VerificationState.INVALID -> R.color.grey\n\t\telse -> R.color.black\n\t}\n}\n\n/**\n * @return True if this is a successful (wallet) verification state and the certificate is only valid in switzerland\n */\nfun VerificationState.isValidOnlyInSwitzerland(): Boolean {\n\treturn when (this) {\n\t\tis VerificationState.SUCCESS -> {\n\t\t\tval walletSuccessState = this.successState as? SuccessState.WalletSuccessState\n\t\t\twalletSuccessState?.isValidOnlyInSwitzerland ?: false\n\t\t}\n\t\tis VerificationState.INVALID -> {\n\t\t\tval nationalRulesState = this.nationalRulesState\n\t\t\twhen (nationalRulesState) {\n\t\t\t\tis CheckNationalRulesState.NOT_YET_VALID -> nationalRulesState.isOnlyValidInCH\n\t\t\t\tis CheckNationalRulesState.NOT_VALID_ANYMORE -> nationalRulesState.isOnlyValidInCH\n\t\t\t\tis CheckNationalRulesState.INVALID -> nationalRulesState.isOnlyValidInCH\n\t\t\t\telse -> false\n\t\t\t}\n\t\t}\n\t\telse -> false\n\t}\n}\n\n/**\n * @return True if this is an invalid verification state and only the national rules check failed (signature and revocation must be valid)\n */\nfun VerificationState.isOnlyNationalRulesInvalid(): Boolean {\n\treturn when (this) {\n\t\tis VerificationState.INVALID -> signatureState is CheckSignatureState.SUCCESS\n\t\t\t\t&& (revocationState is CheckRevocationState.SUCCESS || revocationState is CheckRevocationState.SKIPPED)\n\t\telse -> false\n\t}\n}\n\nfun VerificationState.getInvalidQrCodeAlpha(isTestCertificate: Boolean): Float {\n\treturn when (this) {\n\t\tis VerificationState.INVALID -> if (!isTestCertificate && isOnlyNationalRulesInvalid()) 1f else 0.55f\n\t\telse -> 1f\n\t}\n}\n\nfun VerificationState.getInvalidContentAlpha(): Float {\n\treturn when (this) {\n\t\tis VerificationState.INVALID -> 0.55f\n\t\telse -> 1f\n\t}\n}\n\n/**\n * Hide expiry info of certificates that are expired in Switzerland BUT have a valid signature and are NOT revoked.\n * Don't show a grey expired state, but a blue success state.\n */\nfun hideExpiryInSwitzerland(currentConfig: ConfigModel?, inState: VerificationState): VerificationState {\n\tvar outState = inState\n\n\tif (currentConfig?.showValidityState == false\n\t\t&& inState is VerificationState.INVALID\n\t\t&& inState.signatureState == CheckSignatureState.SUCCESS\n\t\t&& inState.revocationState !is CheckRevocationState.INVALID\n\t\t&& (inState.nationalRulesState is CheckNationalRulesState.NOT_VALID_ANYMORE\n\t\t\t\t|| inState.nationalRulesState is CheckNationalRulesState.NOT_YET_VALID)\n\t) {\n\n\t\tval dummySuccessState = SuccessState.WalletSuccessState(\n\t\t\tisValidOnlyInSwitzerland = false,\n\t\t\tvalidityRange = inState.validityRange,\n\t\t\tmodeValidity = emptyList(), // not valid in any mode (3G/2G...) => empty\n\t\t\teolBannerIdentifier = null,\n\t\t\tshowRenewBanner = inState.showRenewBanner,\n\t\t)\n\t\toutState = VerificationState.SUCCESS(\n\t\t\tdummySuccessState,\n\t\t\tisLightCertificate = false, // light certs automatically go back to normal certs => they should never be INVALID in the wallet\n\t\t)\n\t}\n\n\treturn outState\n}\n"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/vaccination/appointment/VaccinationAppointmentFragment.kt",
    "content": "/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\npackage ch.admin.bag.covidcertificate.wallet.vaccination.appointment\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport androidx.core.view.isVisible\nimport androidx.fragment.app.Fragment\nimport androidx.fragment.app.activityViewModels\nimport ch.admin.bag.covidcertificate.common.config.ConfigModel\nimport ch.admin.bag.covidcertificate.common.util.UrlUtil\nimport ch.admin.bag.covidcertificate.wallet.BuildConfig\nimport ch.admin.bag.covidcertificate.wallet.CertificatesAndConfigViewModel\nimport ch.admin.bag.covidcertificate.wallet.R\nimport ch.admin.bag.covidcertificate.wallet.databinding.FragmentVaccinationAppointmentBinding\n\nclass VaccinationAppointmentFragment : Fragment() {\n\n\tcompanion object {\n\t\tfun newInstance() = VaccinationAppointmentFragment()\n\t}\n\n\tprivate var _binding: FragmentVaccinationAppointmentBinding? = null\n\tprivate val binding get() = _binding!!\n\n\tprivate val configViewModel by activityViewModels<CertificatesAndConfigViewModel>()\n\n\toverride fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {\n\t\t_binding = FragmentVaccinationAppointmentBinding.inflate(inflater, container, false)\n\t\treturn binding.root\n\t}\n\n\toverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n\t\tsuper.onViewCreated(view, savedInstanceState)\n\t\tbinding.toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }\n\t\tsetupMoreInformationButton()\n\n\t\tconfigViewModel.configLiveData.observe(viewLifecycleOwner) { config ->\n\t\t\tsetupVaccinationBookingInfo(config)\n\t\t}\n\t\tconfigViewModel.loadConfig(BuildConfig.BASE_URL, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TIME.toString())\n\t}\n\n\tprivate fun setupVaccinationBookingInfo(config: ConfigModel) {\n\t\tval languageKey = getString(R.string.language_key)\n\t\tval vaccinationBookingInfo = config.getVaccinationBookingInfo(languageKey)\n\t\tbinding.vaccinationBookingTitle.text = vaccinationBookingInfo?.title\n\t\tbinding.vaccinationBookingText.text = vaccinationBookingInfo?.text\n\t\tbinding.vaccinationBookingInfoFrame.isVisible = !vaccinationBookingInfo?.info.isNullOrEmpty()\n\t\tbinding.vaccinationBookingInfo.text = vaccinationBookingInfo?.info\n\n\n\t\tif (vaccinationBookingInfo?.impfcheckTitle != null && vaccinationBookingInfo.impfcheckText != null && vaccinationBookingInfo.impfcheckButton != null && vaccinationBookingInfo.impfcheckUrl != null) {\n\t\t\tbinding.impfcheckTitle.text = vaccinationBookingInfo.impfcheckTitle\n\t\t\tbinding.impfcheckInfoText.text = vaccinationBookingInfo.impfcheckText\n\t\t\tbinding.impfcheckAction.text = vaccinationBookingInfo.impfcheckButton\n\t\t\tbinding.impfcheckAction.setOnClickListener {\n\t\t\t\tUrlUtil.openUrl(it.context, vaccinationBookingInfo.impfcheckUrl)\n\t\t\t}\n\t\t} else {\n\t\t\tbinding.impfcheckTitle.visibility = View.GONE\n\t\t\tbinding.impfcheckInfoText.visibility = View.GONE\n\t\t\tbinding.impfcheckAction.visibility = View.GONE\n\t\t}\n\t}\n\n\tprivate fun setupMoreInformationButton() {\n\t\tbinding.vaccinationMoreInfoButton.setOnClickListener {\n\t\t\tval url = getString(R.string.vaccination_booking_info_url)\n\t\t\tUrlUtil.openUrl(requireContext(), url)\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/java/ch/admin/bag/covidcertificate/wallet/vaccination/hint/VaccinationHintViewModel.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.vaccination.hint\n\nimport android.app.Application\nimport androidx.lifecycle.AndroidViewModel\nimport androidx.lifecycle.LiveData\nimport androidx.lifecycle.MutableLiveData\nimport ch.admin.bag.covidcertificate.common.net.ConfigRepository\nimport ch.admin.bag.covidcertificate.wallet.data.WalletSecureStorage\nimport java.time.Instant\nimport java.time.temporal.ChronoUnit\nimport java.util.concurrent.TimeUnit\n\nclass VaccinationHintViewModel(application: Application) : AndroidViewModel(application) {\n\n\tcompanion object {\n\t\tprivate val VACCINATION_HINT_DISMISS_THRESHOLD = TimeUnit.DAYS.toMillis(30)\n\t}\n\n\tprivate val walletSecureStorage = WalletSecureStorage.getInstance(application.applicationContext)\n\n\tprivate val displayVaccinationHintMutable = MutableLiveData(false)\n\tval displayVaccinationHint = displayVaccinationHintMutable as LiveData<Boolean>\n\n\tinit {\n\t\tval now = Instant.now()\n\t\tval lastDismiss = Instant.ofEpochMilli(walletSecureStorage.getVaccinationHintDismissTimestamp())\n\t\tval displayHint = ConfigRepository.getCurrentConfig(application.applicationContext)?.showVaccinationHintHomescreen ?: false\n\n\t\t// Show the vaccination hints if the last dismiss was more than 7 days ago\n\t\tif (displayHint && lastDismiss.until(now, ChronoUnit.MILLIS) > VACCINATION_HINT_DISMISS_THRESHOLD) {\n\t\t\tdisplayVaccinationHintMutable.value = true\n\t\t}\n\t}\n\n\tfun dismissVaccinationHint() {\n\t\twalletSecureStorage.setVaccinationHintDismissTimestamp(Instant.now().toEpochMilli())\n\t\tdisplayVaccinationHintMutable.value = false\n\t}\n\n}"
  },
  {
    "path": "wallet/src/main/play/listings/de-DE/full-description.txt",
    "content": "<b>Schweizer Covid-Zertifikate einfach und sicher auf dem Mobiltelefon aufbewahren</b>\n\nCOVID Certificate ist die offizielle App für die Aufbewahrung und das Vorweisen von Covid-Zertifikaten der Schweiz. Sie wird durch das Bundesamt für Informatik und Telekommunikation BIT im Auftrag des Bundesamtes für Gesundheit betrieben.\n\nIn der Schweiz können geimpfte, negativ getestete und von einer Covid-Erkrankung genesene Personen ein Covid-Zertifikat beantragen.\n\nCovid-Zertifikate werden in Papierform oder in elektronischer Form ausgestellt und dienen als Nachweis:\n\n1. einer gegen Covid-19 durchgeführten Impfung\n2. einer Genesung nach einer Ansteckung mit Sars-CoV-2\n3. eines negativen Ergebnisses einer Analyse eines Tests auf Sars-CoV-2\n\n<b>So funktioniert die App</b>\n\nBeim ersten Start nach der Installation auf dem Mobilgerät gibt eine kurze Einführung Auskunft, wie die App verwendet und wie ein Covid-Zertifikat von der Papierversion eingescannt werden kann.\n\nIn der App kann das gewünschte Covid-Zertifikat ausgewählt und auf Wunsch vorgezeigt werden. Die App zeigt an, ob, ab wann und wie lange das Covid-Zertifikat gültig ist. Auch können alle Daten die im QR-Code eines Zertifikates enthalten sind angezeigt werden.\n\nEs ist möglich, mehrere Covid-Zertifikate in der App zu hinterlegen, z. B. für Familienmitglieder oder mehrere Covid-Testzertifikate.\n\nDie Nutzung der COVID Certificate App ist freiwillig und kostenlos.\n\n<b>Covid-Zertifikat selbst überprüfen</b>\n\nEs ist in der App möglich, ein gespeichertes Covid-Zertifikat selber zu prüfen. Bei diesem Prüfvorgang wird die elektronische Signatur des Zertifikates geprüft und die Gültigkeitsdauer des Zertifikates mit dem aktuellen Datum verglichen. Es sind die gleichen Prüfungen, die auch in der COVID Certificate Check App für die Verifikation von Zertifikaten eingesetzt werden.\n\n<b>Datenschutz ist zentral</b>\n\nDie Daten des Covid-Zertifikats werden ausschliesslich auf dem Mobilgerät gespeichert.Das Covid-Zertifikat ist durch ein digitales Siegel (Signatur) geschützt und dadurch fälschungssicher.\n\nCovid-Zertifikate werden durch das BIT generiert, jedoch nicht auf einem zentralen System abgelegt. Darum ist es auch nicht möglich, eine Kopie eines ausgestellten Zertifikates zu bekommen.\n\nDie Anwendung der App ist auf die Schweiz beschränkt und unterliegt Schweizer Recht."
  },
  {
    "path": "wallet/src/main/play/listings/de-DE/short-description.txt",
    "content": "Covid-Zertifikat Schweiz"
  },
  {
    "path": "wallet/src/main/play/listings/de-DE/title.txt",
    "content": "COVID Certificate"
  },
  {
    "path": "wallet/src/main/play/listings/en-US/full-description.txt",
    "content": "<b>Keep Swiss COVID certificates easily and securely on your mobile phone</b>\n\nCOVID Certificate is the official app for storing and presenting Swiss COVID certificates. It is developed by the Federal Office of Information Technology, Systems and Telecommunication FOITT on behalf of the Federal Office of Public Health.\n\nIn Switzerland, people who have been vaccinated, or who have tested negative or recovered from COVID can apply for a COVID certificate.\n\nCOVID certificates are issued in hard copy or electronic format serve as proof of: \n\n1. Vaccination against COVID-19\n2. Recovery from Sars-CoV-2 infection\n3. A negative result following Sars-CoV-2 test analysis\n\n<b>How the app works</b>\n\nWhen the app is first launched after installation on the mobile device, a brief introduction provides information on how to use it and how to scan a hard-copy COVID certificate.\n\nIn the app, the required COVID certificate can be selected, and presented if desired. The app shows whether, from when and for how long the COVID certificate is valid. All data contained in a certificate's QR code can also be displayed.\n\nIt is possible to store several COVID certificates in the app, e.g. for family members, or several COVID test certificates.\n\nUse of the COVID Certificate app is voluntary and free of charge.\n\n<b>Check a COVID certificate yourself</b>\n\nYou can use the app to check a saved COVID certificate yourself. This verification process checks the electronic signature of the certificate and compares the certificate's validity period with the current date. These are the same checks that are used for the verification of certificates in the COVID Certificate Check app.\n\n<b>Data protection is a top priority</b>\n\nCOVID certificate data is stored solely on the mobile device. COVID certificates are protected by a digital seal (signature) and are thus forgery-proof.\n\nCOVID certificates are generated by the FOITT, but are not stored in a central system. That is why it is not possible to obtain a copy of an issued certificate.\n\nThe use of the app is limited to Switzerland and is subject to Swiss law."
  },
  {
    "path": "wallet/src/main/play/listings/en-US/short-description.txt",
    "content": "Swiss COVID certificate"
  },
  {
    "path": "wallet/src/main/play/listings/en-US/title.txt",
    "content": "COVID Certificate"
  },
  {
    "path": "wallet/src/main/play/listings/fr-FR/full-description.txt",
    "content": "<b>Stocker le certificat COVID suisse sur le smartphone: c’est simple et sûr</b>\n\nCOVID Certificate est l'application officielle pour le stockage et la présentation des certificats COVID en Suisse. Elle a été développée par l’Office fédéral de l’informatique et de la télécommunication sur mandant de l’Office fédéral de la santé publique (OFSP).\n\nEn Suisse, les personnes vaccinées, testées négatives ou guéries du COVID ont le droit de demander un certificat COVID.\n\nLes certificats sont délivrés sur format papier ou numérique. Ils permettent d’attester:\n\n1. une vaccination contre la COVID-19\n2. une guérison après avoir contracté le SARS-CoV-2\n3. un test négatif au SARS-CoV-2\n\n<b>Fonctionnement de l’application</b>\n\nLors du premier lancement de l’application, une brève introduction fournit des informations sur la manière d'utiliser l'application et de scanner un certificat COVID à partir de la version papier.\n\nL’application permet de sélectionner le certificat COVID souhaité et de l’afficher sur demande. Elle indique la validité du certificat ainsi que la naissance et l’expiration de celle-ci. L’application permet en outre d’afficher toutes les données contenues dans le code QR d'un certificat.\n\nIl est possible de stocker plusieurs certificats COVID dans l'application, par exemple pour les membres d'une même famille ou pour plusieurs certificats de test COVID-19.\n\nL’utilisation de COVID Certificate se fait sur une base volontaire et est gratuite.\n\n<b>Vérifier soi-même le certificat COVID</b>\n\nL'application permet de vérifier soi-même un certificat COVID. La procédure de vérification consiste à contrôler la signature électronique du certificat et à comparer la période de validité du certificat avec la date du jour. Il s’agit des mêmes contrôles que ceux effectués par l'application COVID Certificate Check pour la vérification des certificats.\n\n<b>Respect absolu de la protection des données</b>\n\nLes données du certificat COVID sont stockées sur l’appareil mobile exclusivement.Le certificat COVID est protégé par une signature numérique et ne peut donc pas être falsifié.Les certificats COVID sont générés par l’OFIT, mais ne sont pas stockés sur un système central. Il n'est donc pas possible d'obtenir une copie d'un certificat lorsqu’il a été délivré.\n\nL'utilisation de l'application est limitée à la Suisse et est soumise au droit suisse."
  },
  {
    "path": "wallet/src/main/play/listings/fr-FR/short-description.txt",
    "content": "Certificat COVID suisse"
  },
  {
    "path": "wallet/src/main/play/listings/fr-FR/title.txt",
    "content": "COVID Certificate"
  },
  {
    "path": "wallet/src/main/play/listings/it-IT/full-description.txt",
    "content": "<b>Salvare i certificati COVID svizzeri in modo semplice e sicuro sul dispositivo mobile</b>\n\nL’applicazione COVID Certificate è l’app ufficiale che permette di salvare e mostrare i certificati COVID emessi in Svizzera. È stato sviluppato dall’Ufficio federale dell’informatica e della telecomunicazione (UFIT) su mandato dell’Ufficio federale della sanità pubblica (UFSP).\n\nIn Svizzera possono richiedere un certificato COVID le persone vaccinate, guarite dalla COVID-19 o risultate negative a un test.\n\nI certificati COVID sono emessi in forma cartacea o elettronica e servono come prova: \n\n1. dell’avvenuta vaccinazione anti-COVID-19\n2. della guarigione da un’infezione da SARS-CoV-2\n3. di un risultato negativo dell’analisi di un test per il rilevamento del SARS-CoV-2.\n\n<b>Come funziona l’app?</b>\n\nAl primo avvio dopo l’installazione sul dispositivo mobile, una breve guida introduttiva fornisce informazioni su come utilizzare l’app e su come scansionare il certificato COVID a partire dalla copia cartacea.\n\nNell’app è possibile selezionare e, su richiesta, mostrare il certificato COVID. L’app indica se il certificato COVID è valido, a partire da quando e per quanto tempo. Inoltre, permette di visualizzare tutti i dati presenti nel codice QR del certificato.\n\nNell’app si possono salvare più certificati COVID, ad esempio quelli dei familiari, o più certificati che attestino il risultato negativo a un test. \n\nL’uso dell’app COVID Certificate è facoltativo e gratuito.\n\n<b>Verificare autonomamente il certificato COVID</b>\n\nL’app permette di verificare autonomamente un certificato COVID salvato sul dispositivo mobile. In questo caso l’app controlla la firma elettronica del certificato e confronta la durata di validità dello stesso con la data corrente. Si tratta delle stesse verifiche che vengono effettuate nell’applicazione COVID Certificate Check per la verifica dei certificati.\n\n<b>La protezione dei dati è fondamentale</b>\n\nI dati del certificato COVID vengono salvati esclusivamente sul dispositivo mobile. I certificati COVID recano una firma elettronica e quindi non sono falsificabili.\n\nSono generati dall’UFIT ma non vengono salvati in un sistema centrale. Per questo motivo non è possibile ottenere la copia di un certificato già emesso.\n\nL'applicazione dell'app è limitata alla Svizzera ed è soggetta al diritto svizzero."
  },
  {
    "path": "wallet/src/main/play/listings/it-IT/short-description.txt",
    "content": "Certificato COVID svizzero"
  },
  {
    "path": "wallet/src/main/play/listings/it-IT/title.txt",
    "content": "COVID Certificate"
  },
  {
    "path": "wallet/src/main/play/release-notes/en-US/default.txt",
    "content": "See https://github.com/admin-ch/CovidCertificate-App-Android/releases (or click Links > Changelog)\n"
  },
  {
    "path": "wallet/src/main/res/color/text_color_button.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:color=\"@color/blue\" android:state_enabled=\"true\" />\n\t<item android:color=\"@color/grey\" />\n</selector>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_add_certificate_option.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet\" />\n\t\t</shape>\n\t</item>\n\n\t<item android:id=\"@android:id/background\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_border.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\">\n\n\t<stroke\n\t\tandroid:width=\"1dp\"\n\t\tandroid:color=\"@color/greyish\" />\n\t<padding\n\t\tandroid:bottom=\"1dp\"\n\t\tandroid:left=\"1dp\"\n\t\tandroid:right=\"1dp\"\n\t\tandroid:top=\"1dp\" />\n\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_bordered_button.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet\" />\n\t\t</shape>\n\t</item>\n\n\t<item android:id=\"@android:id/background\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<stroke\n\t\t\t\tandroid:width=\"2dp\"\n\t\t\t\tandroid:color=\"@color/blue_dark\" />\n\t\t\t<solid android:color=\"@color/white\" />\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet\" />\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_bubble_bottom_left.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"110dp\"\n\tandroid:height=\"110dp\"\n\tandroid:viewportWidth=\"110\"\n\tandroid:viewportHeight=\"110\">\n\t<path\n\t\tandroid:fillColor=\"@color/blue_dark\"\n\t\tandroid:pathData=\"M110,110C110,49.249 60.751,0 0,0v110\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_certificate_bottom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<solid android:color=\"@color/white\" />\n\t<corners\n\t\tandroid:bottomLeftRadius=\"@dimen/corner_radius_sheet\"\n\t\tandroid:bottomRightRadius=\"@dimen/corner_radius_sheet\" />\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_certificate_bubble.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"rectangle\">\n\t<solid android:color=\"@color/blueish\"/>\n\t<corners android:radius=\"@dimen/corner_radius_sheet_inner\"/>\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_certificate_bubble_bundesrot.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<stroke\n\t\tandroid:width=\"2dp\"\n\t\tandroid:color=\"@color/bundesrot\" />\n\t<corners android:radius=\"@dimen/corner_radius_sheet_inner\" />\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_certificate_bubble_ripple.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:color=\"?attr/colorControlHighlight\">\n\n\t<item android:id=\"@android:id/mask\">\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet_inner\"/>\n\t\t\t<solid android:color=\"@android:color/white\" />\n\t\t</shape>\n\t</item>\n\n\t<item>\n\t\t<shape android:shape=\"rectangle\">\n\t\t\t<solid android:color=\"@color/blueish\"/>\n\t\t\t<corners android:radius=\"@dimen/corner_radius_sheet_inner\"/>\n\t\t</shape>\n\t</item>\n</ripple>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_certificate_detail_note.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<solid android:color=\"@color/blueish\" />\n\t<corners android:radius=\"@dimen/corner_radius_small\" />\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_certificate_top.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<solid android:color=\"@color/white\" />\n\t<corners\n\t\tandroid:topLeftRadius=\"@dimen/corner_radius_sheet\"\n\t\tandroid:topRightRadius=\"@dimen/corner_radius_sheet\" />\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_info_banner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<corners android:radius=\"@dimen/card_cutout_radius\" />\n\t<solid android:color=\"@color/yellow\" />\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/bg_type_bubble_small.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"rectangle\">\n\t<corners android:radius=\"@dimen/corner_radius_very_small\"/>\n\t<solid android:color=\"@color/blue\"/>\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/circle_white.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"oval\">\n\t<solid android:color=\"@color/white\"/>\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable/cutout_left.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"11dp\"\n    android:height=\"20dp\"\n    android:viewportWidth=\"11\"\n    android:viewportHeight=\"20\">\n  <path\n      android:pathData=\"M0,0A10,10 45,0 1,9.9999 9.9999,10 10,135 0,1 0,19.9998L10.9998,19.9998L10.9998,0Z\"\n      android:fillColor=\"@color/white\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/cutout_right.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"11dp\"\n    android:height=\"20dp\"\n    android:viewportWidth=\"11\"\n    android:viewportHeight=\"20\">\n  <path\n      android:pathData=\"M10.9998,0A10,10 0,0 0,0.9999 9.9999,10 10,0 0,0 10.9998,19.9998H0V0Z\"\n      android:fillColor=\"@color/white\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_add_certificate.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"40dp\"\n    android:height=\"40dp\"\n    android:viewportWidth=\"40\"\n    android:viewportHeight=\"40\">\n  <path\n      android:pathData=\"M20,0c11.046,0 20,8.954 20,20s-8.954,20 -20,20S0,31.046 0,20 8.954,0 20,0zM20,11c-1.105,0 -2,0.895 -2,2v5h-5c-1.105,0 -2,0.895 -2,2s0.895,2 2,2h5v5c0,1.105 0.895,2 2,2s2,-0.895 2,-2v-5h5c1.105,0 2,-0.895 2,-2s-0.895,-2 -2,-2h-5v-5c0,-1.105 -0.895,-2 -2,-2z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_arrow_right.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M5,11h10l-3.5,-3.5L13,6l6,6 -6,6 -1.5,-1.5L15,13H5z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_calendar.xml",
    "content": "<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <group>\n    <clip-path\n        android:pathData=\"M345,-298v812L-30,514L-30,-298h375z\"/>\n    <group>\n      <clip-path\n          android:pathData=\"M17,1a1,1 0,0 1,1 1v1h3a1,1 0,0 1,0.993 0.883L22,4v16a1,1 0,0 1,-1 1L3,21a1,1 0,0 1,-1 -1L2,4a1,1 0,0 1,1 -1h3L6,2a1,1 0,1 1,2 0v1h8L16,2a1,1 0,0 1,1 -1zM20,7L4,7v12h16L20,7z\"/>\n      <path\n          android:pathData=\"M2,1h20v20L2,21L2,1z\"\n          android:fillColor=\"#1E3788\"/>\n    </group>\n  </group>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_certificate_light.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M6,13c2.761,0 5,2.239 5,5s-2.239,5 -5,5 -5,-2.239 -5,-5 2.239,-5 5,-5zM21.5,20c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5 -1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5zM14.5,20c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5 -1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5zM6,15c-1.657,0 -3,1.343 -3,3s1.343,3 3,3 3,-1.343 3,-3 -1.343,-3 -3,-3zM6,16.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5 -1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5zM21.5,16.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5S20,18.828 20,18s0.672,-1.5 1.5,-1.5zM18,16.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5 -1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5zM18,13c0.828,0 1.5,0.672 1.5,1.5S18.828,16 18,16s-1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5zM14.5,13c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5 -1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5zM6,1c2.761,0 5,2.239 5,5s-2.239,5 -5,5 -5,-2.239 -5,-5 2.239,-5 5,-5zM18,1c2.761,0 5,2.239 5,5s-2.239,5 -5,5 -5,-2.239 -5,-5 2.239,-5 5,-5zM6,3C4.343,3 3,4.343 3,6s1.343,3 3,3 3,-1.343 3,-3 -1.343,-3 -3,-3zM18,3c-1.657,0 -3,1.343 -3,3s1.343,3 3,3 3,-1.343 3,-3 -1.343,-3 -3,-3zM6,4.5c0.828,0 1.5,0.672 1.5,1.5S6.828,7.5 6,7.5 4.5,6.828 4.5,6 5.172,4.5 6,4.5zM18,4.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5 -1.5,-0.672 -1.5,-1.5 0.672,-1.5 1.5,-1.5z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_check_mark.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,2C6.477,2 2,6.477 2,12s4.477,10 10,10 10,-4.477 10,-10S17.523,2 12,2zM17.2,7.384l0.092,0.072c0.384,0.34 0.446,0.909 0.16,1.32l-0.072,0.092 -6.628,7.513c-0.356,0.404 -0.961,0.45 -1.372,0.122l-0.085,-0.076 -2.871,-2.871c-0.391,-0.39 -0.391,-1.024 0,-1.415 0.362,-0.362 0.934,-0.388 1.327,-0.077l0.087,0.077 2.118,2.118 5.924,-6.714c0.34,-0.385 0.909,-0.447 1.32,-0.16z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_cloud.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"@color/blue\"\n\t\tandroid:pathData=\"M19.35,10.04C18.67,6.59 15.64,4 12,4 9.11,4 6.6,5.64 5.35,8.04 2.34,8.36 0,10.91 0,14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5 0,-2.64 -2.05,-4.78 -4.65,-4.96zM19,18L6,18c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4h0.71C7.37,7.69 9.48,6 12,6c3.04,0 5.5,2.46 5.5,5.5L17.5,12L19,12c1.66,0 3,1.34 3,3s-1.34,3 -3,3z\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_corner_offline.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"48dp\"\n    android:height=\"48dp\"\n    android:viewportWidth=\"48\"\n    android:viewportHeight=\"48\">\n  <path\n      android:pathData=\"M10,0h38L0,48V10C0,4.477 4.477,0 10,0z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M14.9,18.895c0.41,0 0.77,0.185 1.018,0.472 0.203,0.235 0.33,0.538 0.33,0.873 0,0.743 -0.603,1.345 -1.347,1.345s-1.348,-0.602 -1.348,-1.345c0,-0.335 0.128,-0.638 0.331,-0.873 0.247,-0.287 0.609,-0.472 1.017,-0.472zM15.703,8.379c0.295,0 0.53,0.294 0.51,0.642l-0.445,8.105c-0.017,0.317 -0.24,0.564 -0.51,0.564h-0.715c-0.269,0 -0.492,-0.247 -0.51,-0.564L13.59,9.02c-0.02,-0.348 0.215,-0.642 0.51,-0.642zM17.463,14.205c0.926,0.393 1.76,0.984 2.422,1.752l0.167,0.193 -1.163,1 -0.166,-0.194c-0.378,-0.438 -0.839,-0.809 -1.35,-1.096zM12.338,14.205l0.09,1.655c-0.51,0.288 -0.97,0.659 -1.349,1.096l-0.166,0.194 -1.163,-1 0.167,-0.193c0.663,-0.768 1.496,-1.359 2.42,-1.751zM12.131,10.435l0.087,1.579c-1.508,0.49 -2.844,1.373 -3.887,2.58l-0.167,0.193 -1.164,-1 0.167,-0.194c1.326,-1.535 3.036,-2.615 4.964,-3.157zM17.671,10.435c1.928,0.543 3.639,1.623 4.964,3.159l0.167,0.193 -1.164,1 -0.167,-0.193c-1.043,-1.207 -2.379,-2.09 -3.887,-2.58z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_corner_process_error.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"48dp\"\n    android:height=\"48dp\"\n    android:viewportWidth=\"48\"\n    android:viewportHeight=\"48\">\n  <path\n      android:pathData=\"M10,0h38L0,48V10C0,4.477 4.477,0 10,0z\"\n      android:fillColor=\"#ED6100\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M15,19c0.552,0 1,0.448 1,1s-0.448,1 -1,1 -1,-0.448 -1,-1 0.448,-1 1,-1zM14.971,9C16.918,9 18.5,10.567 18.5,12.504c0,1.18 -0.785,2.268 -2.263,3.35l-0.267,0.189 0.001,0.957c0,0.513 -0.386,0.936 -0.883,0.993L14.97,18c-0.513,0 -0.936,-0.386 -0.993,-0.883L13.97,17v-1.49c0,-0.341 0.173,-0.659 0.46,-0.842 1.426,-0.915 2.069,-1.679 2.069,-2.164C16.5,11.676 15.818,11 14.971,11c-0.39,0 -0.754,0.143 -1.035,0.397 -0.152,0.137 -0.274,0.303 -0.359,0.487 -0.044,0.096 -0.078,0.196 -0.1,0.3 -0.12,0.539 -0.653,0.88 -1.192,0.76 -0.54,-0.118 -0.88,-0.652 -0.762,-1.19 0.054,-0.245 0.134,-0.48 0.238,-0.706 0.198,-0.43 0.482,-0.816 0.833,-1.134C13.239,9.33 14.08,9 14.97,9z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_covid_check_app.xml",
    "content": "<!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"195dp\"\n    android:height=\"50dp\"\n    android:viewportWidth=\"195\"\n    android:viewportHeight=\"50\">\n  <path\n      android:pathData=\"M66.277,13.436h-2.486a2.494,2.494 0,0 0,-0.281 -0.86,2.219 2.219,0 0,0 -0.539,-0.646 2.33,2.33 0,0 0,-0.756 -0.408,2.981 2.981,0 0,0 -0.933,-0.14c-0.6,0 -1.124,0.148 -1.571,0.445 -0.448,0.297 -0.795,0.729 -1.041,1.295 -0.247,0.565 -0.37,1.252 -0.37,2.06 0,0.83 0.124,1.528 0.373,2.092 0.25,0.565 0.597,0.991 1.043,1.278 0.446,0.287 0.964,0.43 1.552,0.43 0.33,0 0.635,-0.043 0.916,-0.13 0.281,-0.087 0.532,-0.214 0.751,-0.383 0.22,-0.168 0.403,-0.373 0.55,-0.616 0.148,-0.243 0.25,-0.52 0.306,-0.83l2.486,0.013a4.525,4.525 0,0 1,-0.48 1.54,4.682 4.682,0 0,1 -1.027,1.325c-0.43,0.389 -0.94,0.696 -1.534,0.92 -0.593,0.226 -1.263,0.338 -2.009,0.338 -1.038,0 -1.965,-0.234 -2.782,-0.703 -0.817,-0.47 -1.462,-1.15 -1.933,-2.041 -0.472,-0.892 -0.707,-1.97 -0.707,-3.233 0,-1.268 0.238,-2.348 0.715,-3.238 0.478,-0.89 1.125,-1.57 1.944,-2.038 0.818,-0.468 1.739,-0.701 2.763,-0.701a6.02,6.02 0,0 1,1.88 0.282,4.76 4.76,0 0,1 1.535,0.826c0.446,0.362 0.81,0.804 1.093,1.328 0.283,0.523 0.463,1.122 0.542,1.795zM78.736,15.182c0,1.268 -0.24,2.347 -0.719,3.238 -0.48,0.89 -1.13,1.57 -1.953,2.037 -0.823,0.468 -1.749,0.702 -2.778,0.702 -1.033,0 -1.96,-0.235 -2.782,-0.705 -0.822,-0.47 -1.472,-1.15 -1.95,-2.041 -0.478,-0.89 -0.718,-1.968 -0.718,-3.231 0,-1.268 0.24,-2.348 0.718,-3.238 0.478,-0.89 1.128,-1.57 1.95,-2.038 0.822,-0.468 1.749,-0.701 2.782,-0.701 1.03,0 1.955,0.233 2.778,0.701 0.822,0.468 1.473,1.147 1.953,2.038 0.48,0.89 0.72,1.97 0.72,3.238zM76.241,15.182c0,-0.821 -0.122,-1.514 -0.367,-2.08 -0.244,-0.564 -0.587,-0.992 -1.03,-1.283 -0.443,-0.292 -0.962,-0.437 -1.558,-0.437 -0.595,0 -1.114,0.145 -1.557,0.437 -0.443,0.291 -0.786,0.72 -1.03,1.284 -0.245,0.565 -0.367,1.258 -0.367,2.079 0,0.821 0.122,1.514 0.366,2.079 0.245,0.565 0.588,0.993 1.03,1.284 0.444,0.291 0.963,0.437 1.558,0.437 0.596,0 1.115,-0.146 1.558,-0.437 0.443,-0.291 0.786,-0.72 1.03,-1.284 0.245,-0.565 0.367,-1.258 0.367,-2.08zM82,9.364l2.814,8.84h0.109l2.813,-8.84h2.732L86.454,21h-3.172L79.268,9.364zM94.323,9.364L94.323,21h-2.46L91.863,9.364zM100.473,21L96.35,21L96.35,9.364h4.159c1.17,0 2.177,0.232 3.022,0.696a4.747,4.747 0,0 1,1.952 1.997c0.457,0.868 0.685,1.907 0.685,3.116 0,1.212 -0.228,2.253 -0.685,3.124a4.746,4.746 0,0 1,-1.961 2.005c-0.851,0.465 -1.868,0.698 -3.05,0.698zM98.809,18.891h1.56c0.73,0 1.343,-0.13 1.84,-0.39 0.498,-0.26 0.873,-0.663 1.126,-1.21 0.252,-0.547 0.379,-1.253 0.379,-2.118 0,-0.862 -0.127,-1.566 -0.38,-2.11 -0.254,-0.545 -0.628,-0.946 -1.123,-1.204s-1.107,-0.386 -1.834,-0.386L98.81,11.473v7.418zM121.959,13.436h-2.486a2.494,2.494 0,0 0,-0.282 -0.86,2.219 2.219,0 0,0 -0.538,-0.646 2.33,2.33 0,0 0,-0.756 -0.408,2.981 2.981,0 0,0 -0.933,-0.14c-0.6,0 -1.124,0.148 -1.571,0.445 -0.448,0.297 -0.795,0.729 -1.041,1.295 -0.247,0.565 -0.37,1.252 -0.37,2.06 0,0.83 0.124,1.528 0.373,2.092 0.249,0.565 0.596,0.991 1.043,1.278 0.446,0.287 0.963,0.43 1.552,0.43 0.33,0 0.635,-0.043 0.916,-0.13 0.28,-0.087 0.531,-0.214 0.751,-0.383 0.22,-0.168 0.403,-0.373 0.55,-0.616 0.148,-0.243 0.25,-0.52 0.306,-0.83l2.486,0.013a4.525,4.525 0,0 1,-0.48 1.54,4.682 4.682,0 0,1 -1.027,1.325c-0.43,0.389 -0.94,0.696 -1.534,0.92 -0.593,0.226 -1.263,0.338 -2.009,0.338 -1.038,0 -1.965,-0.234 -2.782,-0.703 -0.817,-0.47 -1.462,-1.15 -1.933,-2.041 -0.472,-0.892 -0.708,-1.97 -0.708,-3.233 0,-1.268 0.239,-2.348 0.716,-3.238 0.477,-0.89 1.125,-1.57 1.943,-2.038 0.819,-0.468 1.74,-0.701 2.764,-0.701a6.02,6.02 0,0 1,1.88 0.282,4.76 4.76,0 0,1 1.535,0.826c0.446,0.362 0.81,0.804 1.093,1.328 0.283,0.523 0.463,1.122 0.542,1.795zM127.654,21.168c-0.895,0 -1.666,-0.182 -2.313,-0.546a3.689,3.689 0,0 1,-1.492 -1.554c-0.348,-0.673 -0.522,-1.47 -0.522,-2.39 0,-0.9 0.175,-1.687 0.524,-2.365a3.87,3.87 0,0 1,1.474 -1.586c0.633,-0.379 1.378,-0.568 2.234,-0.568a4.63,4.63 0,0 1,1.613 0.275c0.497,0.183 0.932,0.46 1.305,0.828a3.8,3.8 0,0 1,0.873 1.385c0.209,0.554 0.314,1.202 0.314,1.944v0.664h-7.369v-1.5h5.091a1.875,1.875 0,0 0,-0.23 -0.925,1.665 1.665,0 0,0 -0.63,-0.635 1.82,1.82 0,0 0,-0.926 -0.231c-0.366,0 -0.69,0.085 -0.973,0.255 -0.282,0.17 -0.503,0.396 -0.663,0.678 -0.16,0.281 -0.241,0.595 -0.246,0.94v1.427c0,0.431 0.081,0.805 0.243,1.119 0.162,0.314 0.391,0.556 0.687,0.726 0.295,0.17 0.644,0.255 1.047,0.255 0.27,0 0.517,-0.039 0.74,-0.115a1.58,1.58 0,0 0,0.574 -0.34c0.16,-0.15 0.282,-0.335 0.364,-0.554l2.236,0.145a3.06,3.06 0,0 1,-0.694 1.409c-0.35,0.4 -0.8,0.709 -1.352,0.93 -0.552,0.22 -1.188,0.33 -1.909,0.33zM133.245,21v-8.727h2.346v1.522h0.09c0.16,-0.54 0.427,-0.95 0.801,-1.228a2.115,2.115 0,0 1,1.295 -0.417c0.121,0 0.252,0.007 0.392,0.021 0.14,0.014 0.262,0.034 0.367,0.06v2.15a2.684,2.684 0,0 0,-0.468 -0.092,4.384 4.384,0 0,0 -0.554,-0.039c-0.354,0 -0.67,0.077 -0.95,0.23 -0.28,0.154 -0.499,0.366 -0.66,0.639 -0.16,0.272 -0.24,0.587 -0.24,0.945L135.664,21h-2.419zM144.864,12.273v1.818h-5.26v-1.818h5.26zM140.8,10.182h2.418v8.134c0,0.224 0.035,0.398 0.105,0.522 0.07,0.124 0.165,0.21 0.288,0.26 0.123,0.048 0.265,0.072 0.425,0.072 0.116,0 0.231,-0.01 0.345,-0.03 0.114,-0.02 0.2,-0.038 0.26,-0.051l0.382,1.804c-0.12,0.039 -0.292,0.084 -0.512,0.134 -0.221,0.051 -0.488,0.082 -0.802,0.093 -0.583,0.023 -1.094,-0.054 -1.532,-0.232a2.131,2.131 0,0 1,-1.02 -0.831c-0.243,-0.377 -0.362,-0.85 -0.357,-1.418v-8.457zM146.434,21v-8.727h2.42L148.854,21h-2.42zM147.656,11.148c-0.36,0 -0.669,-0.12 -0.927,-0.361a1.144,1.144 0,0 1,-0.386 -0.867c0,-0.333 0.129,-0.62 0.386,-0.86 0.258,-0.24 0.565,-0.361 0.92,-0.361 0.365,0 0.674,0.12 0.93,0.36 0.256,0.241 0.383,0.528 0.383,0.861 0,0.338 -0.127,0.626 -0.383,0.867a1.3,1.3 0,0 1,-0.923 0.36zM155.482,12.273v1.818h-5.387v-1.818h5.387zM151.327,21v-9.36c0,-0.63 0.124,-1.156 0.373,-1.573a2.35,2.35 0,0 1,1.02 -0.937,3.353 3.353,0 0,1 1.47,-0.312c0.371,0 0.711,0.029 1.02,0.087 0.31,0.057 0.54,0.109 0.69,0.154l-0.427,1.814a3.239,3.239 0,0 0,-0.352 -0.084,2.296 2.296,0 0,0 -0.426,-0.039c-0.354,0 -0.601,0.082 -0.74,0.247 -0.14,0.164 -0.21,0.394 -0.21,0.69L153.745,21h-2.418zM156.957,21v-8.727h2.42L159.377,21h-2.42zM158.178,11.148c-0.36,0 -0.668,-0.12 -0.926,-0.361a1.144,1.144 0,0 1,-0.386 -0.867c0,-0.333 0.129,-0.62 0.386,-0.86 0.258,-0.24 0.565,-0.361 0.92,-0.361 0.364,0 0.674,0.12 0.93,0.36 0.255,0.241 0.383,0.528 0.383,0.861 0,0.338 -0.128,0.626 -0.383,0.867a1.3,1.3 0,0 1,-0.924 0.36zM165.254,21.168c-0.895,0 -1.663,-0.19 -2.304,-0.57a3.808,3.808 0,0 1,-1.476 -1.587c-0.343,-0.677 -0.515,-1.458 -0.515,-2.343 0,-0.89 0.173,-1.675 0.52,-2.353a3.838,3.838 0,0 1,1.481 -1.586c0.64,-0.38 1.402,-0.57 2.285,-0.57 0.76,0 1.425,0.138 1.999,0.414a3.324,3.324 0,0 1,1.358 1.166c0.333,0.501 0.515,1.088 0.548,1.761h-2.282c-0.066,-0.434 -0.235,-0.785 -0.508,-1.053 -0.274,-0.268 -0.633,-0.402 -1.078,-0.402 -0.373,0 -0.7,0.102 -0.979,0.304 -0.28,0.203 -0.497,0.497 -0.652,0.883 -0.155,0.386 -0.233,0.854 -0.233,1.404 0,0.556 0.077,1.03 0.23,1.42 0.154,0.389 0.371,0.686 0.65,0.891 0.28,0.205 0.608,0.308 0.984,0.308 0.278,0 0.527,-0.057 0.747,-0.17a1.46,1.46 0,0 0,0.55 -0.496,1.91 1.91,0 0,0 0.289,-0.789h2.282c-0.037,0.667 -0.218,1.254 -0.541,1.76 -0.324,0.507 -0.77,0.902 -1.338,1.184 -0.569,0.283 -1.24,0.424 -2.017,0.424zM173.195,21.164c-0.555,0 -1.05,-0.098 -1.487,-0.292a2.34,2.34 0,0 1,-1.03 -0.869c-0.252,-0.384 -0.378,-0.864 -0.378,-1.44 0,-0.486 0.088,-0.893 0.265,-1.222 0.176,-0.328 0.418,-0.592 0.725,-0.793 0.306,-0.201 0.656,-0.353 1.049,-0.457a7.745,7.745 0,0 1,1.238 -0.218c0.505,-0.05 0.914,-0.099 1.225,-0.146 0.31,-0.048 0.536,-0.119 0.677,-0.214a0.476,0.476 0,0 0,0.212 -0.422v-0.032c0,-0.36 -0.114,-0.64 -0.34,-0.836 -0.227,-0.197 -0.545,-0.296 -0.956,-0.296 -0.435,0 -0.782,0.096 -1.04,0.286 -0.258,0.19 -0.428,0.43 -0.51,0.719l-2.24,-0.182c0.113,-0.53 0.336,-0.99 0.67,-1.378a3.247,3.247 0,0 1,1.292 -0.898c0.529,-0.21 1.141,-0.315 1.837,-0.315 0.487,0 0.953,0.057 1.397,0.171 0.444,0.114 0.839,0.29 1.185,0.527 0.346,0.238 0.62,0.543 0.821,0.916 0.201,0.373 0.302,0.82 0.302,1.34L178.109,21h-2.296v-1.21h-0.068c-0.14,0.272 -0.328,0.511 -0.562,0.718a2.502,2.502 0,0 1,-0.846 0.483c-0.33,0.115 -0.711,0.173 -1.142,0.173zM173.891,19.495c0.355,0 0.669,-0.07 0.941,-0.213 0.273,-0.143 0.486,-0.335 0.64,-0.579a1.5,1.5 0,0 0,0.232 -0.821v-0.927a1.217,1.217 0,0 1,-0.307 0.131c-0.132,0.04 -0.28,0.076 -0.44,0.108 -0.163,0.032 -0.325,0.06 -0.487,0.086 -0.163,0.025 -0.31,0.046 -0.443,0.065 -0.285,0.041 -0.533,0.107 -0.746,0.199a1.21,1.21 0,0 0,-0.495 0.367,0.91 0.91,0 0,0 -0.177,0.57c0,0.333 0.12,0.585 0.361,0.757 0.241,0.171 0.548,0.257 0.92,0.257zM184.632,12.273v1.818h-5.26v-1.818h5.26zM180.568,10.182h2.418v8.134c0,0.224 0.035,0.398 0.105,0.522 0.07,0.124 0.166,0.21 0.288,0.26 0.123,0.048 0.265,0.072 0.425,0.072 0.116,0 0.231,-0.01 0.345,-0.03 0.114,-0.02 0.2,-0.038 0.26,-0.051l0.382,1.804c-0.12,0.039 -0.291,0.084 -0.512,0.134 -0.221,0.051 -0.488,0.082 -0.802,0.093 -0.583,0.023 -1.094,-0.054 -1.532,-0.232a2.131,2.131 0,0 1,-1.02 -0.831c-0.243,-0.377 -0.362,-0.85 -0.357,-1.418v-8.457zM190.086,21.168c-0.895,0 -1.666,-0.182 -2.313,-0.546a3.689,3.689 0,0 1,-1.492 -1.554c-0.348,-0.673 -0.522,-1.47 -0.522,-2.39 0,-0.9 0.174,-1.687 0.524,-2.365a3.87,3.87 0,0 1,1.474 -1.586c0.633,-0.379 1.378,-0.568 2.234,-0.568a4.63,4.63 0,0 1,1.612 0.275c0.498,0.183 0.933,0.46 1.306,0.828a3.8,3.8 0,0 1,0.873 1.385c0.209,0.554 0.313,1.202 0.313,1.944v0.664h-7.368v-1.5h5.091a1.875,1.875 0,0 0,-0.231 -0.925,1.665 1.665,0 0,0 -0.629,-0.635 1.82,1.82 0,0 0,-0.926 -0.231c-0.366,0 -0.69,0.085 -0.973,0.255 -0.283,0.17 -0.504,0.396 -0.663,0.678 -0.16,0.281 -0.242,0.595 -0.246,0.94v1.427c0,0.431 0.08,0.805 0.243,1.119 0.162,0.314 0.39,0.556 0.686,0.726 0.296,0.17 0.645,0.255 1.048,0.255 0.27,0 0.517,-0.039 0.74,-0.115a1.58,1.58 0,0 0,0.574 -0.34c0.16,-0.15 0.282,-0.335 0.363,-0.554l2.237,0.145a3.06,3.06 0,0 1,-0.695 1.409c-0.349,0.4 -0.8,0.709 -1.351,0.93 -0.552,0.22 -1.188,0.33 -1.909,0.33zM66.277,32.436h-2.486a2.494,2.494 0,0 0,-0.281 -0.86,2.219 2.219,0 0,0 -0.539,-0.646 2.33,2.33 0,0 0,-0.756 -0.408,2.981 2.981,0 0,0 -0.933,-0.14c-0.6,0 -1.124,0.148 -1.571,0.445 -0.448,0.297 -0.795,0.729 -1.041,1.295 -0.247,0.565 -0.37,1.252 -0.37,2.06 0,0.83 0.124,1.528 0.373,2.092 0.25,0.565 0.597,0.991 1.043,1.278 0.446,0.287 0.964,0.43 1.552,0.43 0.33,0 0.635,-0.043 0.916,-0.13 0.281,-0.087 0.532,-0.214 0.751,-0.383 0.22,-0.168 0.403,-0.373 0.55,-0.616 0.148,-0.243 0.25,-0.52 0.306,-0.83l2.486,0.013a4.525,4.525 0,0 1,-0.48 1.54,4.682 4.682,0 0,1 -1.027,1.325c-0.43,0.389 -0.94,0.696 -1.534,0.92 -0.593,0.226 -1.263,0.338 -2.009,0.338 -1.038,0 -1.965,-0.234 -2.782,-0.703 -0.817,-0.47 -1.462,-1.15 -1.933,-2.041 -0.472,-0.892 -0.707,-1.97 -0.707,-3.233 0,-1.268 0.238,-2.348 0.715,-3.238 0.478,-0.89 1.125,-1.57 1.944,-2.038 0.818,-0.468 1.739,-0.701 2.763,-0.701a6.02,6.02 0,0 1,1.88 0.282,4.76 4.76,0 0,1 1.535,0.826c0.446,0.362 0.81,0.804 1.093,1.328 0.283,0.523 0.463,1.122 0.542,1.795zM70.418,34.955L70.418,40L68,40L68,28.364h2.35v4.45h0.1c0.2,-0.515 0.52,-0.92 0.959,-1.213 0.44,-0.295 0.99,-0.442 1.65,-0.442 0.608,0 1.139,0.132 1.591,0.394 0.453,0.263 0.805,0.64 1.055,1.13 0.25,0.49 0.375,1.076 0.372,1.758L76.077,40L73.66,40v-5.127c0.002,-0.537 -0.133,-0.955 -0.407,-1.255 -0.274,-0.3 -0.658,-0.45 -1.152,-0.45 -0.328,0 -0.619,0.07 -0.872,0.212a1.48,1.48 0,0 0,-0.593 0.611c-0.142,0.267 -0.215,0.588 -0.217,0.964zM81.959,40.168c-0.895,0 -1.666,-0.182 -2.313,-0.546a3.689,3.689 0,0 1,-1.492 -1.554c-0.348,-0.673 -0.522,-1.47 -0.522,-2.39 0,-0.9 0.174,-1.687 0.524,-2.365a3.87,3.87 0,0 1,1.474 -1.586c0.633,-0.379 1.378,-0.568 2.234,-0.568a4.63,4.63 0,0 1,1.612 0.275c0.498,0.183 0.933,0.46 1.306,0.828a3.8,3.8 0,0 1,0.873 1.385c0.209,0.554 0.313,1.202 0.313,1.944v0.664L78.6,36.255v-1.5h5.09a1.875,1.875 0,0 0,-0.23 -0.925,1.665 1.665,0 0,0 -0.629,-0.635 1.82,1.82 0,0 0,-0.926 -0.231c-0.366,0 -0.69,0.085 -0.973,0.255 -0.283,0.17 -0.504,0.396 -0.663,0.678 -0.16,0.281 -0.242,0.595 -0.246,0.94v1.427c0,0.431 0.08,0.805 0.243,1.119 0.162,0.314 0.39,0.556 0.686,0.726 0.296,0.17 0.645,0.255 1.048,0.255 0.27,0 0.517,-0.039 0.74,-0.115a1.58,1.58 0,0 0,0.574 -0.34c0.16,-0.15 0.281,-0.335 0.363,-0.554l2.237,0.145a3.06,3.06 0,0 1,-0.695 1.409c-0.349,0.4 -0.8,0.709 -1.351,0.93 -0.552,0.22 -1.189,0.33 -1.909,0.33zM91.49,40.168c-0.895,0 -1.663,-0.19 -2.304,-0.57a3.808,3.808 0,0 1,-1.476 -1.587c-0.343,-0.677 -0.515,-1.458 -0.515,-2.343 0,-0.89 0.174,-1.675 0.52,-2.353a3.838,3.838 0,0 1,1.482 -1.586c0.64,-0.38 1.401,-0.57 2.285,-0.57 0.759,0 1.425,0.138 1.998,0.414a3.324,3.324 0,0 1,1.359 1.166c0.332,0.501 0.515,1.088 0.547,1.761h-2.282c-0.065,-0.434 -0.235,-0.785 -0.508,-1.053 -0.273,-0.268 -0.632,-0.402 -1.078,-0.402 -0.373,0 -0.699,0.102 -0.978,0.304 -0.28,0.203 -0.497,0.497 -0.653,0.883 -0.155,0.386 -0.233,0.854 -0.233,1.404 0,0.556 0.077,1.03 0.231,1.42 0.154,0.389 0.37,0.686 0.65,0.891 0.28,0.205 0.607,0.308 0.983,0.308 0.278,0 0.527,-0.057 0.748,-0.17a1.46,1.46 0,0 0,0.55 -0.496,1.91 1.91,0 0,0 0.288,-0.789h2.282c-0.037,0.667 -0.217,1.254 -0.54,1.76 -0.324,0.507 -0.77,0.902 -1.339,1.184 -0.568,0.283 -1.24,0.424 -2.016,0.424zM99.136,37.486l0.005,-2.9h0.354l2.796,-3.313h2.777l-3.755,4.386h-0.577l-1.6,1.827zM96.946,40L96.946,28.364h2.418L99.364,40h-2.419zM102.396,40 L99.832,36.2 101.441,34.49 105.231,40h-2.836z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n  <group>\n    <clip-path\n        android:pathData=\"M13.537,3L36.463,3A10.537,10.537 0,0 1,47 13.537L47,36.463A10.537,10.537 0,0 1,36.463 47L13.537,47A10.537,10.537 0,0 1,3 36.463L3,13.537A10.537,10.537 0,0 1,13.537 3z\"/>\n    <path\n        android:pathData=\"M-7.924,-8h65.847v66h-65.847z\"\n        android:fillColor=\"#00B59D\"\n        android:fillType=\"evenOdd\"/>\n    <path\n        android:pathData=\"M37.299,31.358v3.656a2.285,2.285 0,0 1,-2.248 2.284h-3.767v-1.91h3.73c0.201,0 0.366,-0.158 0.375,-0.358v-3.672h1.91zM14.685,31.284v3.73c0,0.201 0.16,0.366 0.359,0.375L18.716,35.389v1.91h-3.655a2.285,2.285 0,0 1,-2.285 -2.248v-3.767h1.91zM18.716,12.776v1.91h-3.655a0.375,0.375 0,0 0,-0.375 0.358L14.686,18.716h-1.91v-3.655a2.285,2.285 0,0 1,2.247 -2.285L18.716,12.776zM35.014,12.776a2.285,2.285 0,0 1,2.284 2.247L37.298,18.716h-1.91v-3.655a0.375,0.375 0,0 0,-0.358 -0.375h-3.746v-1.91h3.73z\"\n        android:strokeAlpha=\"0.53\"\n        android:fillColor=\"#FFF\"\n        android:fillType=\"nonZero\"\n        android:fillAlpha=\"0.53\"/>\n    <path\n        android:pathData=\"M38.75,31.302v4.82a2.629,2.629 0,0 1,-2.585 2.628L31.302,38.75v-2.292h4.82c0.18,0 0.327,-0.142 0.336,-0.32v-4.836h2.292zM13.542,31.302v4.82c0,0.18 0.142,0.327 0.32,0.336h4.836v2.292h-4.82a2.629,2.629 0,0 1,-2.628 -2.585L11.25,31.302h2.292zM18.698,11.25v2.292h-4.82a0.337,0.337 0,0 0,-0.336 0.32v4.836L11.25,18.698v-4.82a2.629,2.629 0,0 1,2.585 -2.628L18.698,11.25zM36.121,11.25a2.629,2.629 0,0 1,2.629 2.585L38.75,18.698h-2.292v-4.82a0.337,0.337 0,0 0,-0.32 -0.336h-4.836L31.302,11.25h4.82zM29.81,20.873a1.299,1.299 0,0 1,1.857 1.817l-0.02,0.02 -6.875,6.875c-0.5,0.5 -1.307,0.507 -1.816,0.02l-0.02,-0.02 -3.056,-3.056a1.299,1.299 0,0 1,1.817 -1.856l0.02,0.02 2.137,2.137 5.957,-5.957z\"\n        android:fillColor=\"#FFF\"\n        android:fillType=\"nonZero\"/>\n    <path\n        android:pathData=\"M-11.437,50.641L-11.437,-11.437h62.078z\"\n        android:fillColor=\"#000\"\n        android:fillType=\"evenOdd\"/>\n    <path\n        android:pathData=\"M-11.437,50.641L-11.437,-11.437h62.078z\"\n        android:fillColor=\"#FFF\"\n        android:fillType=\"evenOdd\"/>\n    <path\n        android:pathData=\"M17.924,8.64s-1.953,-0.856 -5.224,-0.856h-0.001c-3.27,0 -5.225,0.856 -5.225,0.856s-0.175,3.789 0.567,5.93c1.31,3.767 4.657,4.825 4.657,4.825L12.7,19.395s3.348,-1.058 4.658,-4.824c0.742,-2.142 0.566,-5.93 0.566,-5.93\"\n        android:fillColor=\"#ff0000\"\n        android:fillType=\"evenOdd\"/>\n    <path\n        android:pathData=\"M16.172,11.906v2.088h-2.436v2.435L11.65,16.429v-2.435L9.214,13.994L9.214,11.906h2.435L11.649,9.471h2.087v2.435z\"\n        android:fillColor=\"#FFF\"\n        android:fillType=\"evenOdd\"/>\n  </group>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_data_protection.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12.048,0.001l0.096,0.01 8,1.168c0.454,0.066 0.8,0.43 0.85,0.876l0.006,0.113v10.416c0,3.884 -2.867,7.617 -8.454,11.254 -0.332,0.216 -0.76,0.216 -1.092,0 -5.46,-3.555 -8.322,-7.2 -8.45,-10.99L3,12.585L3,2.168c0,-0.458 0.31,-0.852 0.745,-0.967l0.11,-0.022 8,-1.169c0.064,-0.009 0.129,-0.012 0.193,-0.009zM12,2.01L5,3.032v9.552c0,2.834 2.116,5.798 6.464,8.847l0.357,0.248 0.179,0.12 0.18,-0.12c4.346,-2.971 6.578,-5.863 6.801,-8.634l0.015,-0.237 0.004,-0.224L19,3.032L12,2.01zM16.232,7.647l0.092,0.072c0.385,0.34 0.446,0.908 0.16,1.32l-0.071,0.091 -4.64,5.26c-0.356,0.404 -0.962,0.449 -1.372,0.122l-0.085,-0.076 -2.01,-2.01c-0.39,-0.39 -0.39,-1.024 0,-1.415 0.362,-0.362 0.934,-0.388 1.327,-0.077l0.087,0.077 1.257,1.256 3.936,-4.46c0.339,-0.384 0.908,-0.446 1.32,-0.16z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_drag.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:pathData=\"M0,8.5H24\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"@color/grey\" />\n\t<path\n\t\tandroid:pathData=\"M0,15.5H24\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"@color/grey\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_exchange.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"24dp\"\n\tandroid:height=\"24dp\"\n\tandroid:viewportWidth=\"24\"\n\tandroid:viewportHeight=\"24\">\n\t<path\n\t\tandroid:fillColor=\"@color/blue\"\n\t\tandroid:pathData=\"M6.433,10.857L2,15.43 6.433,20v-3.429h7.79v-2.285h-7.79v-3.429zM22,8.571L17.567,4v3.429h-7.79v2.285h7.79v3.429L22,8.57z\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_1.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c2.21,0 4.21,0.896 5.658,2.344L12,12L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_2.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c4.335,0 7.865,3.448 7.996,7.75L20,12h-8L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_3.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c4.418,0 8,3.582 8,8 0,2.21 -0.895,4.21 -2.343,5.657L12,12L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_4.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c4.418,0 8,3.582 8,8 0,4.335 -3.448,7.865 -7.75,7.996L12,20L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_5.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c4.418,0 8,3.582 8,8s-3.582,8 -8,8c-2.21,0 -4.21,-0.895 -5.657,-2.343L12,12L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_6.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c4.418,0 8,3.582 8,8s-3.582,8 -8,8c-4.335,0 -7.865,-3.448 -7.996,-7.75L4,12h8L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_expire_7.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M12,0c6.627,0 12,5.373 12,12s-5.373,12 -12,12S0,18.627 0,12 5.373,0 12,0zM12,1.8C6.367,1.8 1.8,6.367 1.8,12c0,5.633 4.567,10.2 10.2,10.2 5.633,0 10.2,-4.567 10.2,-10.2 0,-5.633 -4.567,-10.2 -10.2,-10.2zM12,4c4.418,0 8,3.582 8,8s-3.582,8 -8,8 -8,-3.582 -8,-8c0,-2.21 0.895,-4.21 2.343,-5.657L12,12L12,4z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_faq_image.xml",
    "content": "<!--\r\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\r\n  ~\r\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\r\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\r\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\r\n  ~\r\n  ~ SPDX-License-Identifier: MPL-2.0\r\n  -->\r\n\r\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:width=\"315dp\"\r\n    android:height=\"200dp\"\r\n    android:viewportWidth=\"315\"\r\n    android:viewportHeight=\"200\">\r\n  <path\r\n      android:pathData=\"M157.5,100.5m-90.5,0a90.5,90.5 0,1 1,181 0a90.5,90.5 0,1 1,-181 0\"\r\n      android:fillColor=\"#F4F5F9\"\r\n      android:fillType=\"nonZero\"/>\r\n  <path\r\n      android:pathData=\"M205,42.823L164.406,42.823 144.109,42.823 139.035,42.823 136.802,42.812 123.812,59.05 123.812,62.613 123.812,69.209 123.812,95.596 123.812,148.368 205,148.368z\"\r\n      android:strokeLineJoin=\"round\"\r\n      android:strokeWidth=\"2\"\r\n      android:fillColor=\"#F4F5F9\"\r\n      android:strokeColor=\"#203176\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M199,46.823L158.406,46.823 138.109,46.823 133.035,46.823 130.802,46.812 117.812,63.05 117.812,66.613 117.812,73.209 117.812,99.596 117.812,152.368 199,152.368z\"\r\n      android:strokeLineJoin=\"round\"\r\n      android:strokeWidth=\"2\"\r\n      android:fillColor=\"#F4F5F9\"\r\n      android:strokeColor=\"#203176\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M193,50.823L152.406,50.823 132.109,50.823 127.035,50.823 124.802,50.812 111.812,67.05 111.812,70.613 111.812,77.209 111.812,103.596 111.812,156.368 193,156.368z\"\r\n      android:strokeLineJoin=\"round\"\r\n      android:strokeWidth=\"2\"\r\n      android:fillColor=\"#F4F5F9\"\r\n      android:strokeColor=\"#203176\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M125.614,50.812l-0,15.05c-0,1.104 -0.895,2 -2,2l-11.396,0\"\r\n      android:strokeWidth=\"2\"\r\n      android:fillColor=\"#FFF\"\r\n      android:strokeColor=\"#203176\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M142.647,62.914S140.983,62.178 138.198,62.178h-0.001C135.412,62.178 133.747,62.914 133.747,62.914s-0.149,3.26 0.483,5.102C135.346,71.256 138.197,72.168 138.197,72.168h0.001s2.85,-0.91 3.967,-4.15c0.632,-1.844 0.482,-5.103 0.482,-5.103\"\r\n      android:fillColor=\"#E20008\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M141.155,67.52L139.08,67.52 139.08,69.615 137.303,69.615 137.303,67.52 135.229,67.52 135.229,65.724 137.303,65.724 137.303,63.629 139.08,63.629 139.08,65.724 141.155,65.724z\"\r\n      android:fillColor=\"#FFF\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M153.218,67.05L171.891,67.05A0.812,0.812 0,0 1,172.703 67.862L172.703,67.862A0.812,0.812 0,0 1,171.891 68.674L153.218,68.674A0.812,0.812 0,0 1,152.406 67.862L152.406,67.862A0.812,0.812 0,0 1,153.218 67.05z\"\r\n      android:fillColor=\"#BDC3DA\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M141.852,143.366c0.448,0 0.811,0.364 0.811,0.812 0,0.449 -0.363,0.812 -0.811,0.812L123.178,144.99c-0.448,0 -0.812,-0.363 -0.812,-0.812 0,-0.448 0.364,-0.812 0.812,-0.812L141.852,143.366zM141.852,139.307c0.448,0 0.811,0.364 0.811,0.812 0,0.448 -0.363,0.812 -0.811,0.812L123.178,140.931c-0.448,0 -0.812,-0.364 -0.812,-0.812 0,-0.448 0.364,-0.812 0.812,-0.812L141.852,139.307zM180.822,102.772c0.448,0 0.812,0.364 0.812,0.812 0,0.449 -0.364,0.812 -0.812,0.812L153.218,104.396c-0.448,0 -0.812,-0.363 -0.812,-0.812 0,-0.448 0.364,-0.812 0.812,-0.812L180.822,102.772zM180.822,97.902c0.448,0 0.812,0.363 0.812,0.811 0,0.448 -0.364,0.812 -0.812,0.812L153.218,99.525c-0.448,0 -0.812,-0.364 -0.812,-0.812 0,-0.448 0.364,-0.812 0.812,-0.812L180.822,97.901zM180.822,93.03c0.448,0 0.812,0.363 0.812,0.812 0,0.448 -0.364,0.812 -0.812,0.812L153.218,94.654c-0.448,0 -0.812,-0.364 -0.812,-0.812 0,-0.449 0.364,-0.812 0.812,-0.812L180.822,93.03zM180.822,88.159c0.448,0 0.812,0.363 0.812,0.811 0,0.449 -0.364,0.812 -0.812,0.812L153.218,89.782c-0.448,0 -0.812,-0.363 -0.812,-0.812 0,-0.448 0.364,-0.811 0.812,-0.811L180.822,88.159zM180.822,83.287c0.448,0 0.812,0.364 0.812,0.812 0,0.449 -0.364,0.812 -0.812,0.812L153.218,84.911c-0.448,0 -0.812,-0.363 -0.812,-0.812 0,-0.448 0.364,-0.812 0.812,-0.812L180.822,83.287z\"\r\n      android:fillColor=\"#BDC3DA\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M153.218,62.99L175.95,62.99A0.812,0.812 0,0 1,176.762 63.802L176.762,63.802A0.812,0.812 0,0 1,175.95 64.614L153.218,64.614A0.812,0.812 0,0 1,152.406 63.802L152.406,63.802A0.812,0.812 0,0 1,153.218 62.99z\"\r\n      android:fillColor=\"#ff0000\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M123.178,84.099L130.601,84.099L130.601,91.522L123.178,91.522zM134.312,84.099L141.735,84.099L141.735,91.522L134.312,91.522zM123.178,95.233L130.601,95.233L130.601,102.656L123.178,102.656zM142.663,102.656L134.776,102.656 134.776,99.873M141.735,100.042L141.735,95.233 138.024,95.233 138.024,98.017 134.776,98.017 134.776,94.306\"\r\n      android:strokeLineJoin=\"round\"\r\n      android:strokeWidth=\"2\"\r\n      android:fillColor=\"#00000000\"\r\n      android:strokeColor=\"#243784\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M125.498,97.553L128.282,97.553L128.282,100.337L125.498,100.337zM125.498,86.419L128.282,86.419L128.282,89.203L125.498,89.203zM136.632,86.419L139.416,86.419L139.416,89.203L136.632,89.203z\"\r\n      android:fillColor=\"#243784\"\r\n      android:fillType=\"evenOdd\"/>\r\n</vector>\r\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_flag_ch.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M5,1L19,1A4,4 0,0 1,23 5L23,19A4,4 0,0 1,19 23L5,23A4,4 0,0 1,1 19L1,5A4,4 0,0 1,5 1z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#ff0000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M18,13.8h-4.2v4.201h-3.6v-4.2H6V10.2h4.2V6h3.6v4.2H18z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_header_slim.xml",
    "content": "<!--\r\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\r\n  ~\r\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\r\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\r\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\r\n  ~\r\n  ~ SPDX-License-Identifier: MPL-2.0\r\n  -->\r\n\r\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:width=\"375.164dp\"\r\n    android:height=\"20dp\"\r\n    android:viewportWidth=\"375.164\"\r\n    android:viewportHeight=\"20\">\r\n  <path\r\n      android:pathData=\"M0.083,2.708C60.85,14.063 123.523,20 187.582,20 251.642,20 314.314,14.063 375.079,2.708L375.079,2L0.083,2ZM0,0h375.164v2L0,2Z\"\r\n      android:fillColor=\"#ffffff\"\r\n      android:fillType=\"evenOdd\"/>\r\n</vector>\r\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_launcher_background.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportWidth=\"108\"\n    android:viewportHeight=\"108\">\n  <path\n      android:pathData=\"M0,0h108v108h-108z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M67.5,57.5C73.023,57.5 77.5,61.977 77.5,67.5C77.5,73.023 73.023,77.5 67.5,77.5C61.977,77.5 57.5,73.023 57.5,67.5C57.5,61.977 61.977,57.5 67.5,57.5ZM65.25,34C67.321,34 69,35.679 69,37.75L69.001,55.089C68.509,55.03 68.008,55 67.5,55C63.41,55 59.78,56.964 57.499,60L46.5,60C45.987,60 45.564,60.386 45.507,60.883L45.5,61L45.5,61.5C45.5,62.013 45.886,62.436 46.383,62.493L46.5,62.5L56.04,62.5C55.693,63.294 55.427,64.131 55.25,65L48.75,65C48.237,65 47.814,65.386 47.757,65.883L47.75,66L47.75,66.5C47.75,67.013 48.136,67.436 48.633,67.493L48.75,67.5L55,67.5C55,69.881 55.666,72.106 56.821,74L42.75,74C40.679,74 39,72.321 39,70.25L39,37.75C39,35.679 40.679,34 42.75,34L65.25,34ZM71.218,63.024L71.117,63.116L64.99,69.233L62.758,67.004L62.731,66.978C62.241,66.517 61.469,66.526 60.991,67.006C60.535,67.462 60.505,68.181 60.901,68.672L60.992,68.773L64.107,71.884L64.134,71.911C64.591,72.341 65.293,72.362 65.774,71.974L65.874,71.884L72.883,64.884L72.909,64.858C73.372,64.368 73.363,63.596 72.884,63.117C72.429,62.661 71.709,62.63 71.218,63.024ZM51.845,48.75L46.655,48.75C46.06,48.75 45.569,49.2 45.507,49.779L45.5,49.905L45.5,55.095C45.5,55.69 45.95,56.181 46.529,56.243L46.655,56.25L51.845,56.25C52.44,56.25 52.931,55.8 52.993,55.221L53,55.095L53,49.905C53,49.267 52.483,48.75 51.845,48.75ZM61.5,48.75L56,48.75C55.487,48.75 55.064,49.136 55.007,49.633L55,49.75L55,55.25C55,55.763 55.386,56.186 55.883,56.243L56,56.25L56.5,56.25C57.013,56.25 57.436,55.864 57.493,55.367L57.5,55.25L57.5,51.25L61.5,51.25C62.013,51.25 62.436,50.864 62.493,50.367L62.5,50.25L62.5,49.75C62.5,49.198 62.052,48.75 61.5,48.75ZM50.5,51.25L50.5,53.75L48,53.75L48,51.25L50.5,51.25ZM51.845,39.25L46.655,39.25C46.06,39.25 45.569,39.7 45.507,40.279L45.5,40.405L45.5,45.595C45.5,46.19 45.95,46.681 46.529,46.743L46.655,46.75L51.845,46.75C52.44,46.75 52.931,46.3 52.993,45.721L53,45.595L53,40.405C53,39.767 52.483,39.25 51.845,39.25ZM61.345,39.25L56.155,39.25C55.56,39.25 55.069,39.7 55.007,40.279L55,40.405L55,45.595C55,46.19 55.45,46.681 56.029,46.743L56.155,46.75L61.345,46.75C61.94,46.75 62.431,46.3 62.493,45.721L62.5,45.595L62.5,40.405C62.5,39.767 61.983,39.25 61.345,39.25ZM50.5,41.75L50.5,44.25L48,44.25L48,41.75L50.5,41.75ZM60,41.75L60,44.25L57.5,44.25L57.5,41.75L60,41.75Z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FFFFFF\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_launcher_foreground.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportWidth=\"108\"\n    android:viewportHeight=\"108\">\n  <path\n      android:pathData=\"M0,92l0,-92l92,0z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#000000\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M0,92l0,-92l92,0z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FFFFFF\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M46.514,30.755C46.514,30.755 43.619,29.486 38.771,29.486L38.77,29.486C33.923,29.486 31.027,30.755 31.027,30.755C31.027,30.755 30.767,36.369 31.866,39.544C33.808,45.126 38.769,46.694 38.769,46.694L38.77,46.694L38.772,46.694C38.772,46.694 43.733,45.126 45.675,39.544C46.774,36.369 46.514,30.755 46.514,30.755\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FF0000\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M43.916,35.595l0,3.094l-3.609,0l0,3.609l-3.093,0l0,-3.609l-3.609,0l0,-3.094l3.609,0l0,-3.608l3.093,0l0,3.608z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#FFFFFF\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_list.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"40dp\"\n    android:height=\"40dp\"\n    android:viewportWidth=\"40\"\n    android:viewportHeight=\"40\">\n  <path\n      android:pathData=\"M30.5,25.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5h-16c-0.828,0 -1.5,-0.672 -1.5,-1.5s0.672,-1.5 1.5,-1.5h16zM9.5,25.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5S8,27.828 8,27s0.672,-1.5 1.5,-1.5zM30.5,18.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5h-16c-0.828,0 -1.5,-0.672 -1.5,-1.5s0.672,-1.5 1.5,-1.5h16zM9.5,18.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5S8,20.828 8,20s0.672,-1.5 1.5,-1.5zM30.5,11.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5h-16c-0.828,0 -1.5,-0.672 -1.5,-1.5s0.672,-1.5 1.5,-1.5h16zM9.5,11.5c0.828,0 1.5,0.672 1.5,1.5s-0.672,1.5 -1.5,1.5S8,13.828 8,13s0.672,-1.5 1.5,-1.5z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_online.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M19.35,10.04A7.49,7.49 0,0 0,12 4C9.11,4 6.6,5.64 5.35,8.04A5.994,5.994 0,0 0,0 14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5 0,-2.64 -2.05,-4.78 -4.65,-4.96zM19,18L6,18c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4h0.71C7.37,7.69 9.48,6 12,6c3.04,0 5.5,2.46 5.5,5.5L17.5,12L19,12c1.66,0 3,1.34 3,3s-1.34,3 -3,3z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_pdf.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M23,8.9h-1.543L21.457,0L8.875,0L3.543,5.355L3.543,8.9L2,8.9v11.55h1.543L3.543,24h17.914v-3.55L23,20.45L23,8.9zM8.65,2.215v2.909L5.752,5.124l2.896,-2.909zM4.942,6.531L10.05,6.531L10.05,1.406h10.007L20.057,8.9L4.943,8.9L4.943,6.531zM20.056,22.594L4.943,22.594v-2.145h15.114v2.145zM21.599,19.043L3.4,19.043v-8.738h18.2v8.738z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M6.492,15.766h0.828c1.132,0 2.053,-0.925 2.053,-2.062 0,-1.137 -0.921,-2.061 -2.053,-2.061L5.092,11.643v6.136h1.4v-2.013zM6.492,13.049h0.828c0.36,0 0.653,0.294 0.653,0.655 0,0.361 -0.293,0.655 -0.653,0.655h-0.828v-1.31zM17.39,15.766L19.318,15.766 19.318,14.359 17.39,14.359 17.39,13.049 19.816,13.049 19.816,11.643 15.99,11.643 15.99,17.779 17.39,17.779zM14.75,15.694v-1.986c0,-1.139 -0.923,-2.065 -2.057,-2.065L10.47,11.643v6.117h2.224c1.134,0 2.057,-0.927 2.057,-2.066zM11.87,13.05h0.823c0.362,0 0.657,0.296 0.657,0.66v1.985c0,0.364 -0.295,0.66 -0.657,0.66L11.87,16.355v-3.305z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_pen_write.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M3,14.25v3.75h3.75l11.06,-11.06 -3.75,-3.75L3,14.251zM20.71,4.04c0.39,-0.39 0.39,-1.02 0,-1.41L18.37,0.29c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M2,20.001L22,20.001A2,2 0,0 1,24 22.001L24,22.001A2,2 0,0 1,22 24.001L2,24.001A2,2 0,0 1,0 22.001L0,22.001A2,2 0,0 1,2 20.001z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_qr_certificate.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M10,13c0.513,0 0.936,0.386 0.993,0.883L11,14v8c0,0.513 -0.386,0.936 -0.883,0.993L10,23L2,23c-0.513,0 -0.936,-0.386 -0.993,-0.883L1,22v-8c0,-0.513 0.386,-0.936 0.883,-0.993L2,13h8zM15.5,19v2L23,21v2h-8.5c-0.513,0 -0.936,-0.386 -0.993,-0.883L13.5,22v-3h2zM9,15L3,15v6h6v-6zM7.5,16.5v3h-3v-3h3zM15.5,13v3L17,16v-2c0,-0.513 0.386,-0.936 0.883,-0.993L18,13h4c0.513,0 0.936,0.386 0.993,0.883L23,14v5.182h-2L21,15h-2v2c0,0.513 -0.386,0.936 -0.883,0.993L18,18h-3.5c-0.513,0 -0.936,-0.386 -0.993,-0.883L13.5,17v-4h2zM10,1c0.513,0 0.936,0.386 0.993,0.883L11,2v8c0,0.513 -0.386,0.936 -0.883,0.993L10,11L2,11c-0.513,0 -0.936,-0.386 -0.993,-0.883L1,10L1,2c0,-0.513 0.386,-0.936 0.883,-0.993L2,1h8zM22,1c0.513,0 0.936,0.386 0.993,0.883L23,2v8c0,0.513 -0.386,0.936 -0.883,0.993L22,11h-8c-0.513,0 -0.936,-0.386 -0.993,-0.883L13,10L13,2c0,-0.513 0.386,-0.936 0.883,-0.993L14,1h8zM9,3L3,3v6h6L9,3zM21,3h-6v6h6L21,3zM7.5,4.5v3h-3v-3h3zM19.5,4.5v3h-3v-3h3z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_qrcode.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"68dp\"\n    android:height=\"68dp\"\n    android:viewportWidth=\"68\"\n    android:viewportHeight=\"68\">\n  <path\n      android:pathData=\"M14.8,50.8v2.4h2.4v2.4L12.4,55.6v-4.8h2.4zM19.6,53.2v2.4L17.2,55.6v-2.4h2.4zM26.8,53.2v2.4L22,55.6v-2.4h4.8zM31.6,48.4v4.8L34,53.2v2.4h-4.8v-2.4h-2.4v-2.4h2.4v-2.4h2.4zM48.4,50.8v2.4h4.8v-2.4h2.4v4.8L46,55.6v-4.8h2.4zM41.2,50.8v2.4h2.4v2.4h-4.8v-4.8h2.4zM36.4,53.2v2.4L34,55.6v-2.4h2.4zM22,43.6v7.2L17.2,50.8v-2.4h2.4v-4.8L22,43.6zM46,43.6h-2.4v-7.2h7.2v4.8h2.4v-2.4h2.4v2.4h-2.4L53.2,46h2.4v2.4h-2.4v2.4h-4.8v-2.4h2.4v-7.2h-2.4v-2.4L46,38.8v4.8zM26.8,46v4.8h-2.4v-2.4L22,48.4L22,46h4.8zM43.6,43.6v4.8L46,48.4v2.4h-4.8L41.2,46h-2.4v2.4h-2.4v2.4L34,50.8L34,46h2.4v-2.4h7.2zM17.2,24.4v4.8L14.8,29.2L14.8,34h2.4v2.4L14.8,36.4v4.8h2.4L17.2,46L14.8,46v2.4L12.4,48.4v-4.8h2.4v-2.4L12.4,41.2v-4.8h2.4L14.8,34L12.4,34v-4.8h2.4l-0.001,-2.399L12.4,26.8v-2.4h4.8zM34,43.6L34,46h-4.8v-2.4L34,43.6zM48.4,43.6L48.4,46L46,46v-2.4h2.4zM24.4,41.2v2.4L22,43.6v-2.4h2.4zM41.2,26.8v14.4L26.8,41.2L26.8,26.8h14.4zM19.6,38.8v2.4L17.2,41.2v-2.4h2.4zM22,38.8v2.4L19.6,41.2v-2.4L22,38.8zM38.8,29.2h-9.6v9.6h9.6v-9.6zM24.4,34v2.4L19.6,36.4L19.6,34h4.8zM55.6,34v2.4h-4.8L50.8,34h4.8zM36.4,31.6v4.8h-4.8v-4.8h4.8zM55.6,29.2v2.4h-4.8L50.8,34h-2.4v-4.8h7.2zM19.6,31.6L19.6,34L17.2,34v-2.4h2.4zM50.8,24.4v2.4h-2.4l-2.4,0.001L46,34h-2.4v-7.2h2.399L46,24.4h4.8zM26.8,22v2.4h-2.4v7.2L19.6,31.6v-2.4L22,29.2v-2.399L19.6,26.8v-2.4L22,24.4L22,22h4.8zM55.6,24.4v2.4h-2.4v-2.4h2.4zM48.4,19.6L48.4,22L46,22v2.4h-2.4L43.6,19.6h4.8zM41.2,22v2.4h-2.4L38.8,22h2.4zM34,19.6v4.8h-4.8L29.2,22h2.4L31.6,19.6L34,19.6zM38.8,19.6L38.8,22h-2.4L36.4,19.6h2.4zM14.8,19.6L14.8,22L12.4,22L12.4,19.6h2.4zM53.2,17.2v2.4h2.4L55.6,22h-4.8L50.8,17.2h2.4zM22,19.6L22,22L17.2,22L17.2,19.6L22,19.6zM24.4,12.4v4.8h2.4v2.4L22,19.6L22,12.4h2.4zM43.6,17.2v2.4h-7.2L36.4,17.2h7.2zM31.6,17.2v2.4h-4.8L26.8,17.2h4.8zM17.2,12.4v2.4L14.8,14.8v2.4L12.4,17.2L12.4,12.4h4.8zM19.6,12.4l-0.001,2.399L22,14.8v2.4L19.6,17.2l-0.001,-2.4L17.2,14.8L17.2,12.4h2.4zM36.4,12.4v4.8h-4.8L31.6,14.8L34,14.8L34,12.4h2.4zM41.2,14.8v2.4h-2.4L38.8,14.8h2.4zM46,12.4v2.399l2.4,0.001L48.4,12.4h7.2v4.8h-2.4L53.2,14.8h-4.8v2.4h-4.8L43.6,12.4L46,12.4zM29.2,12.4v2.4h-2.4L26.8,12.4h2.4z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_qrcode_add.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"80dp\"\n    android:height=\"80dp\"\n    android:viewportWidth=\"80\"\n    android:viewportHeight=\"80\">\n  <path\n      android:pathData=\"M8,68v4h8v4L4,76v-8h4zM36,64v8h8v4L32,76v-4h-4v4h-8v-4h8v-4h4v-4h4zM64,68v4h8v-4h4v8L60,76v-8h4zM52,68v4h4v4h-8v-8h4zM20,56v4h8v8h-4v-4h-4v4h-8v-4h4v-8h4zM72,52v8h4v4h-4v4h-8v-4h4L68,52h4zM56,56v8h4v4h-8v-8h-4v4h-4v4h-4v-8h4v-4h12zM12,52v8L8,60v4L4,64v-8h4v-4h4zM64,56v4h-4v-4h4zM40,56v4h-8v-4h8zM24,52v4h-4v-4h4zM56,44h12v8h-4v-4h-4v8h-4L56,44zM52,28v24L28,52L28,28h24zM8,44v8L4,52v-8h4zM20,48v4h-8v-4h8zM76,48v4h-4v-4h4zM48,32L32,32v16h16L48,32zM24,40v4h-8v-4h8zM44,36v8h-8v-8h8zM76,40v4h-8v-4h8zM12,40v4L8,44v-4h4zM76,32v4h-8v4h-4v-8h12zM8,32v8L4,40v-8h4zM16,36v4h-4v-4h4zM60,28v12h-4L56,28h4zM28,20v4h-4v12h-8v-4h4v-4h-4v-4h4v-4h8zM12,24v8L8,32v-4L4,28v-4h8zM68,24v4h-8v-4h8zM76,24v4h-4v-4h4zM52,20v4h-4v-4h4zM40,16v8h-8v-4h4v-4h4zM64,16v4h-4v4h-4v-8h8zM8,16v4L4,20v-4h4zM20,16v4h-8v-4h8zM52,8v4h4v4h-8v4h-4v-8h4L48,8h4zM72,12v4h4v4h-8v-8h4zM24,4v8h12v4L20,16v-4h-4L16,8h4L20,4h4zM16,4v4L8,8v4L4,12L4,4h12zM44,4v8h-8L36,8h4L40,4h4zM60,4v4h4v4h-8L56,4h4zM76,4v8h-4L72,8h-8L64,4h12zM32,4v4h-4L28,4h4z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_qrcode_icon_placeholder.xml",
    "content": "<!--\r\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\r\n  ~\r\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\r\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\r\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\r\n  ~\r\n  ~ SPDX-License-Identifier: MPL-2.0\r\n  -->\r\n\r\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:width=\"68dp\"\r\n    android:height=\"68dp\"\r\n    android:viewportWidth=\"68\"\r\n    android:viewportHeight=\"68\">\r\n  <path\r\n      android:pathData=\"M14.8,50.8v2.4h2.4v2.4L12.4,55.6v-4.8h2.4zM19.6,53.2v2.4L17.2,55.6v-2.4h2.4zM26.8,53.2v2.4L22,55.6v-2.4h4.8zM31.6,48.4v4.8L34,53.2v2.4h-4.8v-2.4h-2.4v-2.4h2.4v-2.4h2.4zM48.4,50.8v2.4h4.8v-2.4h2.4v4.8L46,55.6v-4.8h2.4zM41.2,50.8v2.4h2.4v2.4h-4.8v-4.8h2.4zM36.4,53.2v2.4L34,55.6v-2.4h2.4zM22,43.6v7.2L17.2,50.8v-2.4h2.4v-4.8L22,43.6zM46,43.6h-2.4v-7.2h7.2v4.8h2.4v-2.4h2.4v2.4h-2.4L53.2,46h2.4v2.4h-2.4v2.4h-4.8v-2.4h2.4v-7.2h-2.4v-2.4L46,38.8v4.8zM26.8,46v4.8h-2.4v-2.4L22,48.4L22,46h4.8zM43.6,43.6v4.8L46,48.4v2.4h-4.8L41.2,46h-2.4v2.4h-2.4v2.4L34,50.8L34,46h2.4v-2.4h7.2zM17.2,24.4v4.8L14.8,29.2L14.8,34h2.4v2.4L14.8,36.4v4.8h2.4L17.2,46L14.8,46v2.4L12.4,48.4v-4.8h2.4v-2.4L12.4,41.2v-4.8h2.4L14.8,34L12.4,34v-4.8h2.4l-0.001,-2.399L12.4,26.8v-2.4h4.8zM34,43.6L34,46h-4.8v-2.4L34,43.6zM48.4,43.6L48.4,46L46,46v-2.4h2.4zM24.4,41.2v2.4L22,43.6v-2.4h2.4zM41.2,26.8v14.4L26.8,41.2L26.8,26.8h14.4zM19.6,38.8v2.4L17.2,41.2v-2.4h2.4zM22,38.8v2.4L19.6,41.2v-2.4L22,38.8zM38.8,29.2h-9.6v9.6h9.6v-9.6zM24.4,34v2.4L19.6,36.4L19.6,34h4.8zM55.6,34v2.4h-4.8L50.8,34h4.8zM36.4,31.6v4.8h-4.8v-4.8h4.8zM55.6,29.2v2.4h-4.8L50.8,34h-2.4v-4.8h7.2zM19.6,31.6L19.6,34L17.2,34v-2.4h2.4zM50.8,24.4v2.4h-2.4l-2.4,0.001L46,34h-2.4v-7.2h2.399L46,24.4h4.8zM26.8,22v2.4h-2.4v7.2L19.6,31.6v-2.4L22,29.2v-2.399L19.6,26.8v-2.4L22,24.4L22,22h4.8zM55.6,24.4v2.4h-2.4v-2.4h2.4zM48.4,19.6L48.4,22L46,22v2.4h-2.4L43.6,19.6h4.8zM41.2,22v2.4h-2.4L38.8,22h2.4zM34,19.6v4.8h-4.8L29.2,22h2.4L31.6,19.6L34,19.6zM38.8,19.6L38.8,22h-2.4L36.4,19.6h2.4zM14.8,19.6L14.8,22L12.4,22L12.4,19.6h2.4zM53.2,17.2v2.4h2.4L55.6,22h-4.8L50.8,17.2h2.4zM22,19.6L22,22L17.2,22L17.2,19.6L22,19.6zM24.4,12.4v4.8h2.4v2.4L22,19.6L22,12.4h2.4zM43.6,17.2v2.4h-7.2L36.4,17.2h7.2zM31.6,17.2v2.4h-4.8L26.8,17.2h4.8zM17.2,12.4v2.4L14.8,14.8v2.4L12.4,17.2L12.4,12.4h4.8zM19.6,12.4l-0.001,2.399L22,14.8v2.4L19.6,17.2l-0.001,-2.4L17.2,14.8L17.2,12.4h2.4zM36.4,12.4v4.8h-4.8L31.6,14.8L34,14.8L34,12.4h2.4zM41.2,14.8v2.4h-2.4L38.8,14.8h2.4zM46,12.4v2.399l2.4,0.001L48.4,12.4h7.2v4.8h-2.4L53.2,14.8h-4.8v2.4h-4.8L43.6,12.4L46,12.4zM29.2,12.4v2.4h-2.4L26.8,12.4h2.4z\"\r\n      android:fillColor=\"#000\"\r\n      android:fillType=\"evenOdd\"/>\r\n  <path\r\n      android:pathData=\"M51,51m-14,0a14,14 0,1 1,28 0a14,14 0,1 1,-28 0\"\r\n      android:fillColor=\"#FFF\"\r\n      android:fillType=\"evenOdd\"/>\r\n</vector>\r\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_qrcode_scan.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M11.2727,12.7277v8L3.2727,20.7277v-8h8zM14.9087,17.8177L14.9087,19.2727l5.819,0.001v1.455h-7.273v-2.91h1.454zM9.8177,14.1827h-5.09v5.09h5.09v-5.09zM14.9087,12.7287v2.181h1.454L16.3627,12.7277h4.365v5.09L19.2727,17.8177L19.2727,14.1827h-1.455v2.182h-4.363L13.4547,12.7277h1.454zM8.3637,15.6377v2.181L6.1817,17.8187v-2.181h2.182zM11.2727,3.2727v8L3.2727,11.2727L3.2727,3.2727h8zM20.7277,3.2727v8h-8L12.7277,3.2727h8zM9.8177,4.7267h-5.09v5.09h5.09v-5.09zM19.2717,4.7267h-5.09v5.09h5.09v-5.09zM8.3637,6.1827v2.182L6.1817,8.3647L6.1817,6.1817h2.182zM17.8177,6.1827v2.182h-2.181L15.6367,6.1817h2.181z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M4.364,0L4.364,1.091 1.091,1.091 1.091,4.364 0,4.364 0,0z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M4.364,24.0004L4.364,22.9094 1.091,22.9094 1.091,19.6364 0,19.6364 0,24.0004z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M19.6364,0L19.6364,1.091 22.9094,1.091 22.9094,4.364 24.0004,4.364 24.0004,0z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M19.6364,24.0004L19.6364,22.9094 22.9094,22.9094 22.9094,19.6364 24.0004,19.6364 24.0004,24.0004z\"\n      android:fillColor=\"#000\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_scan_code.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"45dp\"\n    android:height=\"44dp\"\n    android:viewportWidth=\"45\"\n    android:viewportHeight=\"44\">\n  <path\n      android:pathData=\"M6.493,15.583v-4.5c0,-2.577 2.089,-4.666 4.666,-4.666h4.504M6.493,28.417v4.5c0,2.577 2.089,4.666 4.666,4.666h4.504M37.673,15.583v-4.5c0,-2.577 -2.09,-4.666 -4.667,-4.666L28.503,6.417h0M37.673,28.417v4.5c0,2.577 -2.09,4.666 -4.667,4.666L28.503,37.583h0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M15.329,15.25L28.836,15.25L28.836,28.75L15.329,28.75z\"\n      android:strokeWidth=\"3\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M20.331,20.25L23.833,20.25L23.833,23.75L20.331,23.75z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_transfer_code_list_failed.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"48dp\"\n    android:height=\"48dp\"\n    android:viewportWidth=\"48\"\n    android:viewportHeight=\"48\">\n  <path\n      android:pathData=\"M24,0L24,0A24,24 0,0 1,48 24L48,24A24,24 0,0 1,24 48L24,48A24,24 0,0 1,0 24L0,24A24,24 0,0 1,24 0z\"\n      android:fillColor=\"#FAE2EA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M24,13C17.928,13 13,17.928 13,24s4.928,11 11,11 11,-4.928 11,-11S30.072,13 24,13zM24,32.8c-4.862,0 -8.8,-3.938 -8.8,-8.8 0,-2.035 0.693,-3.905 1.859,-5.39L29.39,30.941C27.905,32.107 26.035,32.8 24,32.8zM30.941,29.39L18.61,17.059C20.095,15.893 21.965,15.2 24,15.2c4.862,0 8.8,3.938 8.8,8.8 0,2.035 -0.693,3.905 -1.859,5.39z\"\n      android:fillColor=\"#D81F5B\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_transfer_code_list_valid.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"48dp\"\n    android:height=\"48dp\"\n    android:viewportWidth=\"48\"\n    android:viewportHeight=\"48\">\n  <path\n      android:pathData=\"M24,0L24,0A24,24 0,0 1,48 24L48,24A24,24 0,0 1,24 48L24,48A24,24 0,0 1,0 24L0,24A24,24 0,0 1,24 0z\"\n      android:fillColor=\"#EFF5F9\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M31.057,22.998v4.195l6.85,-7.001 -6.842,-6.878v4.202l-11.214,-0.003c-0.552,0 -1,-0.448 -1,-1 0,-0.513 0.386,-0.935 0.883,-0.993l0.117,-0.007 9.214,0.002L29.065,12.774c0,-0.932 0.72,-1.694 1.633,-1.768L30.843,11c0.435,0 0.853,0.159 1.164,0.43l0.112,0.108 7.396,7.435c0.609,0.643 0.644,1.627 0.098,2.32l-0.11,0.127 -7.375,7.54c-0.673,0.71 -1.795,0.744 -2.51,0.075 -0.318,-0.297 -0.514,-0.7 -0.553,-1.13l-0.008,-0.163v-2.745L16.933,25L16.933,20.8l-6.841,6.877 6.85,7.002v-4.196h11.206l0.116,0.007c0.46,0.054 0.823,0.418 0.877,0.877l0.007,0.116 -0.007,0.117c-0.054,0.46 -0.418,0.823 -0.877,0.877l-0.117,0.006 -9.205,-0.001v2.745l-0.008,0.163c-0.04,0.43 -0.236,0.833 -0.554,1.13 -0.675,0.632 -1.713,0.637 -2.393,0.037l-0.116,-0.112 -7.376,-7.54 -0.11,-0.126c-0.512,-0.65 -0.512,-1.556 -0.009,-2.196l0.108,-0.125L15.88,19.022l0.111,-0.107c0.273,-0.238 0.627,-0.39 1.002,-0.423l0.162,-0.008 0.146,0.006c0.862,0.07 1.551,0.754 1.625,1.614l0.007,0.154v2.741l12.124,-0.001z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_transfer_notification.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M18.75,0C19.9926,-0 21,1.0074 21,2.25L21,21.75C21,22.9926 19.9926,24 18.75,24L5.25,24C4.0074,24 3,22.9926 3,21.75L3,2.25C3,1.0074 4.0074,0 5.25,0L18.75,0ZM15.15,18.6L8.85,18.6C8.5186,18.6 8.25,18.8686 8.25,19.2L8.25,19.2L8.25,19.5C8.25,19.8314 8.5186,20.1 8.85,20.1L8.85,20.1L15.15,20.1C15.4814,20.1 15.75,19.8314 15.75,19.5L15.75,19.5L15.75,19.2C15.75,18.8686 15.4814,18.6 15.15,18.6L15.15,18.6ZM16.5,15.6L7.5,15.6C7.2018,15.6 6.9544,15.8176 6.9079,16.1027L6.9,16.2L6.9,16.5C6.9,16.7982 7.1176,17.0456 7.4027,17.0921L7.5,17.1L16.5,17.1C16.7982,17.1 17.0456,16.8824 17.0921,16.5973L17.1,16.5L17.1,16.2C17.1,15.8686 16.8314,15.6 16.5,15.6ZM10.707,8.85L7.593,8.85C7.2422,8.85 6.9522,9.1107 6.9063,9.449L6.9,9.543L6.9,12.657C6.9,13.0078 7.1607,13.2978 7.499,13.3437L7.593,13.35L10.707,13.35C11.0578,13.35 11.3478,13.0893 11.3937,12.751L11.4,12.657L11.4,9.543C11.4,9.1603 11.0897,8.85 10.707,8.85ZM16.5,8.85L13.2,8.85C12.9018,8.85 12.6544,9.0676 12.6079,9.3527L12.6,9.45L12.6,12.75C12.6,13.0482 12.8176,13.2956 13.1027,13.3421L13.2,13.35L13.5,13.35C13.7982,13.35 14.0456,13.1324 14.0921,12.8473L14.1,12.75L14.1,10.35L16.5,10.35C16.7982,10.35 17.0456,10.1324 17.0921,9.8473L17.1,9.75L17.1,9.45C17.1,9.1186 16.8314,8.85 16.5,8.85ZM9.9,10.35L9.9,11.85L8.4,11.85L8.4,10.35L9.9,10.35ZM16.407,3.15L13.293,3.15C12.9422,3.15 12.6522,3.4107 12.6063,3.749L12.6,3.843L12.6,6.957C12.6,7.3078 12.8607,7.5978 13.199,7.6437L13.293,7.65L16.407,7.65C16.7578,7.65 17.0478,7.3893 17.0937,7.051L17.1,6.957L17.1,3.843C17.1,3.4603 16.7897,3.15 16.407,3.15ZM10.707,3.15L7.593,3.15C7.2422,3.15 6.9522,3.4107 6.9063,3.749L6.9,3.843L6.9,6.957C6.9,7.3078 7.1607,7.5978 7.499,7.6437L7.593,7.65L10.707,7.65C11.0578,7.65 11.3478,7.3893 11.3937,7.051L11.4,6.957L11.4,3.843C11.4,3.4603 11.0897,3.15 10.707,3.15ZM15.6,4.65L15.6,6.15L14.1,6.15L14.1,4.65L15.6,4.65ZM9.9,4.65L9.9,6.15L8.4,6.15L8.4,4.65L9.9,4.65Z\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/ic_validation.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\">\n  <path\n      android:pathData=\"M13.647,0.839c0.835,-0.398 1.826,-0.17 2.404,0.534l0.103,0.137 1.035,1.503 1.818,0.144c0.925,0.074 1.67,0.772 1.816,1.674l0.02,0.162 0.144,1.818 1.503,1.035c0.762,0.524 1.059,1.496 0.739,2.349l-0.068,0.158L22.377,12l0.784,1.647c0.398,0.835 0.17,1.826 -0.534,2.404l-0.137,0.103 -1.503,1.035 -0.144,1.818c-0.074,0.925 -0.772,1.67 -1.674,1.816l-0.162,0.02 -1.818,0.144 -1.035,1.503c-0.524,0.762 -1.496,1.059 -2.349,0.739l-0.158,-0.068L12,22.377l-1.647,0.784c-0.835,0.398 -1.826,0.17 -2.404,-0.534l-0.103,-0.137 -1.035,-1.503 -1.818,-0.144c-0.925,-0.074 -1.67,-0.772 -1.816,-1.674l-0.02,-0.162 -0.144,-1.818 -1.503,-1.035C0.748,15.63 0.451,14.658 0.771,13.805l0.068,-0.158L1.623,12l-0.784,-1.647c-0.398,-0.835 -0.17,-1.826 0.534,-2.404l0.137,-0.103L3.013,6.81l0.144,-1.818c0.074,-0.925 0.772,-1.67 1.674,-1.816l0.162,-0.02 1.818,-0.144L7.846,1.51C8.37,0.748 9.342,0.451 10.195,0.771l0.158,0.068L12,1.623l1.647,-0.784zM14.507,2.644l-1.647,0.784c-0.49,0.234 -1.05,0.257 -1.554,0.07l-0.166,-0.07 -1.647,-0.784L8.46,4.147c-0.308,0.447 -0.781,0.747 -1.31,0.837l-0.18,0.023 -1.818,0.144 -0.144,1.819c-0.043,0.54 -0.303,1.037 -0.717,1.38l-0.143,0.109 -1.503,1.034 0.784,1.647c0.234,0.49 0.257,1.05 0.07,1.554l-0.07,0.166 -0.784,1.647 1.503,1.034c0.447,0.308 0.747,0.781 0.837,1.31l0.023,0.18 0.144,1.818 1.819,0.144c0.54,0.043 1.037,0.303 1.38,0.717l0.109,0.143 1.034,1.503 1.647,-0.784c0.49,-0.234 1.05,-0.257 1.554,-0.07l0.166,0.07 1.647,0.784 1.034,-1.503c0.308,-0.447 0.781,-0.747 1.31,-0.837l0.18,-0.023 1.818,-0.144 0.144,-1.819c0.043,-0.54 0.303,-1.037 0.717,-1.38l0.143,-0.109 1.503,-1.034 -0.784,-1.647c-0.234,-0.49 -0.257,-1.05 -0.07,-1.554l0.07,-0.166 0.784,-1.647 -1.503,-1.034c-0.447,-0.308 -0.747,-0.781 -0.837,-1.31l-0.023,-0.18 -0.144,-1.818 -1.819,-0.144c-0.54,-0.043 -1.037,-0.303 -1.38,-0.717l-0.109,-0.143 -1.034,-1.503zM12,5c3.866,0 7,3.134 7,7s-3.134,7 -7,7 -7,-3.134 -7,-7 3.134,-7 7,-7zM12,7c-2.761,0 -5,2.239 -5,5s2.239,5 5,5 5,-2.239 5,-5 -2.239,-5 -5,-5zM15.325,9.441l0.092,0.072c0.388,0.336 0.454,0.904 0.172,1.318l-0.071,0.092 -3.283,3.788c-0.355,0.41 -0.964,0.458 -1.378,0.129l-0.085,-0.076L9.3,13.29c-0.39,-0.39 -0.39,-1.023 0,-1.414 0.363,-0.362 0.934,-0.388 1.327,-0.078l0.087,0.078 0.714,0.714 2.58,-2.977c0.335,-0.387 0.904,-0.454 1.318,-0.172z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ag.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"471.982\"\n    android:viewportHeight=\"473.556\">\n  <path\n      android:pathData=\"M0,0h471.979v473.556h-471.979z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.985,0h235.997v473.556h-235.997z\"\n      android:fillColor=\"#268bcc\"/>\n  <path\n      android:pathData=\"M407.121,201.36l-31.656,20.379l10.984,-34.875l-28.421,-19.039l35.671,0l13.422,-36.473l13.422,36.473l35.655,0l-28.17,19.32l10.734,34.594z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M296.887,201.36l-31.391,20.379l10.719,-34.875l-28.422,-19.039l35.688,0l13.406,-36.473l13.422,36.473l35.672,0l-28.157,19.32l10.719,34.594z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M352.137,297.914l-31.656,20.102l10.718,-34.586l-28.14,-19.312l35.656,0l13.422,-36.208l13.406,36.465l35.656,0l-28.406,19.055l11,34.859z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m233.184,215.664c-11.457,-2.144 -13.328,-9.918 -30.887,-9.918 -20.402,0 -17.297,10.797 -41.672,10.797 -24.375,0 -21.871,-10.797 -42.273,-10.797 -20.406,0 -18.895,10.797 -42.359,10.797 -23.473,0 -21.184,-10.797 -41.586,-10.797 -18.973,0 -19.637,9.047 -33.797,10.328v-34.395c14.16,-1.277 14.824,-10.328 33.797,-10.328 20.402,0 18.113,10.793 41.586,10.793 23.465,0 21.953,-10.793 42.359,-10.793 20.402,0 17.898,10.793 42.273,10.793 24.375,0 21.27,-10.793 41.672,-10.793 17.559,0 19.438,7.762 30.887,9.938v34.375z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m233.184,261.602c-11.457,-2.141 -13.328,-9.922 -30.887,-9.922 -20.402,0 -17.297,10.797 -41.672,10.797 -24.375,0 -21.871,-10.797 -42.273,-10.797 -20.406,0 -18.895,10.797 -42.359,10.797 -23.473,0 -21.184,-10.797 -41.586,-10.797 -18.973,0 -19.637,9.047 -33.797,10.328v-34.39c14.16,-1.281 14.824,-10.328 33.797,-10.328 20.402,0 18.113,10.801 41.586,10.801 23.465,0 21.953,-10.801 42.359,-10.801 20.402,0 17.898,10.801 42.273,10.801 24.375,0 21.27,-10.801 41.672,-10.801 17.559,0 19.438,7.766 30.887,9.918v34.394l0,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m233.184,307.539c-11.457,-2.164 -13.328,-9.922 -30.887,-9.922 -20.402,0 -17.297,10.781 -41.672,10.781 -24.375,0 -21.871,-10.781 -42.273,-10.781 -20.406,0 -18.895,10.781 -42.359,10.781 -23.473,0 -21.184,-10.781 -41.586,-10.781 -18.973,0 -19.637,9.047 -33.797,10.313L0.61,273.539c14.16,-1.266 14.824,-10.313 33.797,-10.313 20.402,0 18.113,10.781 41.586,10.781 23.465,0 21.953,-10.781 42.359,-10.781 20.402,0 17.898,10.781 42.273,10.781 24.375,0 21.27,-10.781 41.672,-10.781 17.559,0 19.438,7.766 30.887,9.922L233.184,307.539l0,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m352.137,227.91 l13.406,36.473h35.656l-28.406,19.047 11,34.859 -31.656,-20.375 -31.656,20.109 10.719,-34.594 -28.141,-19.311h35.656l13.422,-36.208zM296.887,131.352 L310.309,167.817h35.672l-28.156,19.328 10.719,34.594 -31.657,-20.379 -31.391,20.379 10.719,-34.875 -28.422,-19.039h35.688l13.406,-36.473zM407.121,131.352 L420.543,167.817h35.655l-28.171,19.328 10.742,34.594 -31.64,-20.379 -31.656,20.379 10.984,-34.875 -28.43,-19.039h35.672l13.422,-36.473z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ai.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.773\"\n    android:viewportHeight=\"471.352\">\n  <path\n      android:pathData=\"M-0,0h469.773v471.352h-469.773z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m188.91,97.418c19.442,8.598 40.641,18.359 45.313,22.781 1.344,1.266 -13.754,14.594 -14.938,41.625 -10.375,4.426 -13.168,-0.734 -13.168,-0.734 0,0 -2.816,0.391 -3.703,2.406 -7.391,-4.969 -5.574,-11.422 -10.953,-7.604 -1.262,0.895 -6.078,-9.922 -8.359,-5.195 -5.344,-1.512 -4.664,-7.965 -6.121,-8.352 -1.453,-0.383 -4.598,2.137 -5.383,0.371 -1.32,-3 -2.824,-6.523 -3.344,-7.051 -0.52,-0.528 -1.254,1.602 -3.527,0.746 -2.258,-0.859 -3.398,-6.883 -5.375,-7.801 -4.152,1.496 -6.09,-5.32 -6.313,-6.25 -0.703,1.848 -6.266,2.348 -5.375,-0.797 3.07,-10.93 -11.816,-13.738 -9.898,-24.258 -21.336,-4.246 -14.977,-42.559 -19.16,-43.488 -7.711,-1.695 -13.063,-1.297 -13.063,-1.297 0,0 0.984,-6.191 11.816,-6.672 -5.48,-4.16 -12.938,-5.391 -12.938,-5.391 0,0 3.305,-4.793 16.703,-1.848 -2.629,-7.113 -9.656,-10.77 -9.656,-10.77 0,0 8.336,-1.895 16.465,5.93 -0.246,-8.809 -6.625,-16.137 -6.625,-16.137 0,0 8.121,-0.91 15.219,13.168 2.23,-8.313 -0.371,-17.25 -0.371,-17.25 0,0 8.641,1.465 10.34,18.922 6.871,10.578 1.176,25.906 8.039,43.977 3.817,10.078 18.16,13.801 34.375,20.969\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m214.574,334.008c6.297,-22.172 27.605,-35.953 49.246,-34.109 1.156,-4.578 2.109,-9.641 1.75,-10.422 -12.703,-27.82 -20.227,-29.672 -20.227,-29.672 0,0 -27.984,-6.492 -44.875,1.656 -3.39,1.641 -28.62,17.141 -23.663,18.281 8.168,1.867 -3.254,7.328 -5.063,11.883 -1.816,4.539 2.672,3.461 2.879,4.016 0.496,1.359 -11.305,13.227 -8.367,13.836 10.945,2.211 -4.938,13.5 -1.543,14.328 9.438,2.313 -2.113,12.125 1.238,12.625 1.199,0.18 3.496,0.766 5.352,1.047 -1.047,1.938 -3.824,7.508 -3.23,13.25 0.273,2.656 3.289,-2.43 4.84,1.078 -7.77,6.523 6.742,25.164 7.762,36.266 -5.273,0.617 -4.371,-6.266 -8.93,-8.25 -2.465,4.594 -7.457,4.578 -13.426,3.047 -5.973,-1.508 -12.91,-4.531 -19.27,-4.594 -14,-3.656 -19.809,1.313 -21.09,2.953 0.418,0.141 5.328,1.328 12.359,4.422 -11.887,0.906 -13.98,8.344 -13.98,8.344 0,0 6.102,-0.391 13.711,1.188 -12.336,6.422 -10.625,13.547 -10.625,13.547 0,0 6.824,-4.164 13.855,-4.758 -3.809,2.953 -6.934,9.344 -4.613,13.953 2.781,-2.742 8.176,-5.281 10.117,-6.117 -2.605,6.133 -2.207,10.609 0.656,13.875 7.688,-10.844 10.441,-10.203 12.672,-10.016 1.227,0.094 4.543,1.203 9.402,1.719 4.07,0.438 9.215,0.297 15.102,0.641 14.113,0.844 30.488,1.328 41.281,-9.922 -3.32,-24.986 -9.367,-52.783 -3.32,-74.095\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m238.43,90.777c0,0 -0.641,7.473 4.656,7.918 1.703,0.16 7.969,-0.445 16.125,0.684 17.094,2.359 36.508,8.688 50.672,-5.656 12.219,-12.379 2.641,-30.715 13.578,-38.539 9.047,-6.477 18.969,-0.633 19.375,1.867 -13.5,-5.098 -16.328,-0.602 -17.875,0.492 -10.852,7.578 5.367,46.121 -35.898,47.258 -14.375,0.398 -29.508,1.207 -36.086,7.77 -3.703,3.719 -7.422,3.512 -12.797,8.52 -14.621,13.597 -15.125,30.733 -16.637,39.151 -0.609,3.309 1.031,2.246 1.031,2.246 0,0 9.23,-2.422 14.902,-3.137 1,-0.125 1.125,0.496 1.125,0.496 0,0 0.328,1.16 -0.969,1.234 -18.852,1.16 -68.883,23.848 -91.324,24.078 -1.398,-0.328 -14.496,-3.375 -16.117,-10.68 1.816,-2.246 10.184,11.121 18.031,7.039 -9.215,-7.879 -14.906,-26.535 -25.391,-32.125 -6.777,-20.066 -15.426,-20.418 -15.426,-20.418 0,0 4.938,16.832 3.359,20.207 -13.598,-13.543 -21.184,-9.68 -21.184,-9.68l12.145,15.84c0,0 -14.023,-6.621 -20.543,-0.84 8.16,2.906 15.629,8.32 15.422,10.098 -1.008,0.168 -12.719,-0.938 -15.152,5.887 4.664,0.594 12.816,2.969 14.168,5.328 -4.848,2.258 -13.75,5.496 -12.535,13.176 6.047,-1.23 10.77,-4.766 16.176,-3.918 7.352,-2.297 13.641,5.734 22,14.344 9.863,10.168 24.297,19.781 31.082,16.934 1.629,-0.688 0.688,-2.246 1.895,-2.453 1.215,-0.203 9.543,7.262 10.168,5.109 2.078,-7.063 2.383,-3.215 6.105,-1.512 1.902,0.871 4.926,0.219 7.504,2.219 1.613,-7.578 12.215,3.828 14.59,-2.738 5.297,0.816 10.922,4.543 10.098,-1.816 6.816,4.391 7.453,2.129 10.871,3.785 0.328,-6.488 7.266,-1.23 9.871,-1.297 27.188,-0.543 33.875,-8.688 39.063,-19.734 2.094,-4.473 4.438,-4.16 3.719,-1.543 -3.852,14.063 -13.594,24.262 -36.422,23.141 -1.262,-0.063 -1.855,0.488 -2.406,1.266 -0.512,0.801 -0.504,1.457 -0.359,4.297 0.23,5.84 16.109,24.668 24.859,37.621 11.438,16.953 15.781,25.672 14.391,29.469 -2.438,6.688 -7.25,42.266 -7,43.414 0.234,1.133 2.094,2.148 3.922,0.539 2.195,2.391 -2.07,11.547 0.703,11.789 2.063,-1.344 4.625,-2.523 4.625,-2.523 0,0 -4.297,10.289 1.883,15.211 0.805,-2.836 3.227,-4.969 3.227,-4.969 0,0 -1.211,9.969 4.758,12.773 0.133,-0.625 0.016,-1.07 0.703,-4.203 3.609,12.047 5.297,13.141 6.25,12.313 0.945,-0.82 -1.742,-5.047 1.406,-4.109 1.102,10.508 4.266,10.359 4.266,10.359 0,0 0.375,-0.43 1.898,-2.875 3.594,8.953 23.531,17.859 19.984,39.344 -0.75,0.453 -2.391,0.406 -2.867,-1.25 -0.508,-1.672 -1.742,-6.578 -2.313,-7.25 -0.594,-0.656 -2.297,-2.813 -15.641,-4.266 -13.359,-1.453 -19.984,4.859 -19.984,4.859 0,0 -14.766,-4.563 -22.656,5.109 4.672,-1.047 16.195,4.688 16.195,4.688 0,0 -11.852,2.641 -13.672,13.875 8.43,-4.016 17.055,-2.938 17.055,-2.938 0,0 -10.477,7.438 -8.359,17.954 7.375,-7.172 15.078,-9.046 15.078,-9.046 0,0 -7.078,11.093 -1.18,18.455 2.852,-3.854 8.109,-11.984 12.063,-11.375 1.625,11 8.328,14.875 9.266,14.094 0.898,-0.75 -1.836,-10.143 4.969,-15.883 11.602,-2.625 40.18,-7.711 51.242,-32.494 -1.258,-7.672 -24.672,-43.609 -24.18,-69.484 0.141,-7.234 1.18,-35.844 1.18,-35.844 0,0 0.867,-15.156 -5.523,-26.297 3.984,0.313 5.5,7.641 7.781,8.984 2.281,1.343 4.078,-2.031 4.078,-2.031l-0.844,-6.328 4.547,5.148c0,0 3.922,-8.023 0.625,-17.969 -3.297,-9.922 -18.625,-28.578 -20.75,-35.129 -1.469,-4.559 -4.234,-23.922 -5.328,-31 -1.078,-7.063 -0.703,-29.863 -0.703,-29.863 0,0 3.234,0.48 5.328,2.246 1.688,-1.902 -0.836,-8.328 -0.063,-9.262 0.719,1.23 3.625,1.359 5.328,3.016 2.797,-5.266 0.375,-10.395 0.063,-11.074 4.703,1.859 8.984,1.465 9.688,-0.215 -1.797,-1.68 -4.25,-11.711 -4.141,-12.969 1.797,-0.824 6.93,3.426 7.852,1.891 -2.805,-4.082 -1.281,-10.336 -5.688,-17.313 1.641,-1.207 3.344,0.992 5.328,-1.969 -8.609,-12.617 1.984,-24.063 1.047,-33.449 -1.477,-14.992 -10.297,-17.527 -10.297,-17.527 0,0 23.266,-0.105 18.375,-17.527 -4.898,-17.434 -17,-6.32 -24.883,-10.801 -7.906,-4.504 -7.719,-16.391 -19.922,-17.047 -17.234,-0.93 -40.266,11.223 -53.641,11.223 -4.156,-0.039 -3.641,0.656 -13.547,-2.039 -2.574,13.039 2.547,14.414 1.066,17.465 -2.785,5.695 -1.754,7.16 -1.754,7.16l1.488,0.023c-0.406,2 -0.574,5.871 2.473,10.246 3.641,-5.23 4.867,-8.543 5.266,-10.102l1.016,0.023c-0.164,2.391 -0.047,6.801 2.406,10.078 3.688,-3.461 5,-7.832 5.445,-9.926h0.211c0,0 8.43,-0.594 13.82,2.176 5.39,2.77 5.18,12.48 5.18,12.48 0,0 -14.656,-4.547 -20.969,-4.418 -8.898,0.184 -22.75,3.68 -31.16,1.855 -8.406,-1.833 -16.031,-13.009 -16.031,-13.009 0,0 -13.23,19.418 16.344,24.016 6.578,1.027 12.785,0.656 18.168,-0.148 0,0 14.078,-2.859 17.094,-3.25 3.016,-0.398 15.297,1.258 15.297,1.258 0,0 -0.703,4.141 -6.734,4.141 -2.033,0 -26.017,-0.422 -26.017,-0.422\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m309.055,31.512c6.5,-8.168 31.703,-2.773 20.125,16.602 -9.953,2.581 -10.953,-15.098 -20.125,-16.602\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m203.23,74.586c0,1.367 0.246,2.641 0.75,3.801 1.953,4.5 7.656,7.5 16.938,8.949 5.426,0.848 11.184,0.801 17.594,-0.152 0.109,-0.031 13.996,-2.848 17.137,-3.254 2.695,-0.352 11.117,0.656 14.594,1.102 0,0 1.117,0.16 1.508,0.211 0.148,-0.691 0.445,-1.938 0.555,-2.602 -0.422,-0.146 -1.602,-0.441 -1.602,-0.441 -3.234,-0.949 -14.219,-4.086 -19.18,-3.973 -3.164,0.07 -7,0.559 -11.086,1.094 -7.313,0.961 -14.871,1.945 -20.527,0.723 -6.61,-1.442 -12.544,-7.892 -15.329,-11.349 -0.68,1.586 -1.352,3.649 -1.352,5.891\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m238.43,270.149c0,0 7.266,-2.063 17.969,1.844 1.406,2.453 4.188,6.688 6.203,11.25 -4.125,-4.501 -24.172,-13.094 -24.172,-13.094\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m86.887,154.328c4.465,1.984 9.777,5.074 12.086,7.785 0.824,-1.922 2.707,-4.68 3.387,-5.641 -2.266,-0.929 -10.083,-3.878 -15.473,-2.144\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m86.031,169.352c3.254,0.641 8.633,2.129 11.438,4.184 -0.055,-0.75 -0.102,-1.504 -0.102,-2.23 0,-1.754 0.16,-3.457 0.473,-5.113 -1.594,-0.017 -9.434,0.112 -11.809,3.159\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m94.406,140.617c0.664,0.855 10.008,13.063 10.352,13.512 1.656,-1.313 5.383,-3.441 6.578,-4.113 -8.211,-8.055 -13.938,-9.43 -16.93,-9.399\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m86.629,186.953c1.305,-0.375 2.672,-0.832 4.258,-1.426 2.816,-1.063 5.727,-2.168 8.887,-2.109 -0.785,-1.875 -1.406,-3.891 -1.816,-6.016 -1.802,0.719 -10.978,4.688 -11.329,9.551\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m114.621,147.106c0,0.961 -0.117,1.664 -0.285,2.246 1.438,-0.168 6,-0.637 8.672,-0.336 -4.027,-11.414 -8.539,-15.758 -11.242,-17.406 1.144,4.269 2.855,11.296 2.855,15.496\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m255.43,415.008c5.406,1 12.172,4.281 12.953,4.672 0,0 0.688,0.359 1.109,0.563 -0.016,-0.172 -0.031,-0.328 -0.031,-0.484 0,-3.07 0.938,-5.508 2.719,-7.344 -4.141,-0.751 -11.375,-1.266 -16.75,2.593\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m271.977,433.367 l0,0c-0.094,0.047 -7.578,5.563 -7.906,13.345 5.906,-4.938 11.484,-6.796 12.891,-7.188 -0.859,-0.93 -1.688,-2.031 -2.406,-3.289 0,0.016 0,0 -1.164,-2.234 0,0 -0.445,-0.867 -0.641,-1.211 -0.134,0.116 -0.368,0.28 -0.774,0.577\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m268.008,422.695 l0,0c-0.078,0.016 -8.625,2.094 -11.547,9.781 7.625,-2.797 14.484,-2.047 14.766,-2.016 0,0 0.359,0.047 0.656,0.102 -1.25,-2.836 -2.031,-5.594 -2.328,-8.234 -0.25,0.055 -0.688,0.18 -1.547,0.367\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m290.211,447.711c0,0.047 0.016,0.094 0.016,0.094 1.031,7 4.25,10.844 6.266,12.234 -0.016,-0.563 -0.031,-1.578 -0.031,-1.578 0,-2.922 0.406,-7.156 3.141,-10.898 -2.642,0.914 -5.923,1 -9.392,0.148\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m279.086,441.805c-0.031,0.063 -3.266,5.235 -3.266,10.532 0,1.578 0.313,2.983 0.906,4.267 2.656,-3.781 6.5,-9.031 10.344,-9.953 -2.922,-1.057 -5.656,-2.713 -7.984,-4.846\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m144.789,31.785c0.008,0 0.008,-0.008 0.023,-0.016 -1.055,-9.184 -4.141,-13.391 -6.406,-15.242 0.313,1.816 0.602,4.195 0.602,6.867 0,2.477 -0.258,5.168 -0.961,7.832l-0.215,0.789c2.535,-0.687 4.918,-0.765 6.957,-0.23\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m135.109,31.527c-3.598,-7.176 -7.406,-10.141 -10.094,-11.398 1.949,3.145 4.336,8.039 4.496,13.602l0.047,1.504c2.055,-1.129 4.137,-1.977 6.152,-2.539l-0.601,-1.169z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m120.781,40.137c-6.191,-1.352 -10,-0.969 -12.238,-0.273 2.766,0.832 6.543,2.273 9.75,4.73l0.52,0.383c0.922,-1.465 2.09,-2.918 3.465,-4.305l-1.497,-0.535z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m117.422,47.41c-5.566,0.246 -8.129,2.055 -9.32,3.52 1.617,0.031 4.938,0.285 8.297,0.766 0.098,-1.375 0.488,-2.824 1.129,-4.293l-0.106,0.007z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m128.078,36.098 l-1.238,-1.176c-3.801,-3.68 -7.609,-5.051 -10.441,-5.504 4.719,3.598 6.848,9.336 7.121,10.07 0.488,-0.504 2.535,-2.102 3.992,-3.047 0.183,-0.128 0.367,-0.226 0.566,-0.343\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m136.262,403.664 l-2.039,1.578c-2.672,2.047 -4.801,5.813 -4.801,9.125 0,0.281 0.055,0.563 0.082,0.813 3.316,-2.438 7.652,-4.375 8.637,-4.797l2.715,-1.172c-1.786,-1.617 -3.387,-3.5 -4.594,-5.547\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m133.43,395.18 l-2.672,1.398c-6.793,3.523 -8.945,7.148 -9.59,9.422 2.711,-1.344 7.246,-3.18 11.965,-3.57l2.379,-0.188c-0.098,-0.203 -0.219,-0.422 -0.313,-0.625 -0.898,-2.078 -1.457,-4.265 -1.769,-6.437\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m133.543,386.992 l-3.121,0.234c-6.75,0.5 -9.969,3.203 -11.434,5.172 2.555,0.016 6.625,0.242 11.363,1.211l2.957,0.602c-0.261,-2.484 -0.167,-4.945 0.235,-7.219\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m140.23,412.445c-1.082,2.531 -1.625,4.766 -1.625,6.703 0,1.43 0.313,2.688 0.898,3.836 4.352,-5.836 7.191,-7.984 9.504,-8.656 -2.602,-1.047 -5.266,-2.602 -7.609,-4.617l-1.168,2.734z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m121.254,380.563c2.23,0.703 5.586,1.836 9.68,3.648l2.914,1.297c0.59,-2.453 1.527,-4.57 2.766,-6.164 -8.208,-1.735 -12.942,-0.227 -15.36,1.219\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m326.57,70.274c0,0 -1.594,0.168 -1.508,1.184 0.094,1.023 1.281,1.191 1.281,1.191 0,0 6.422,1.824 8.063,-5.543 -1.101,3.527 -7.836,3.168 -7.836,3.168\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m327.336,64.899c-0.547,-0.129 -2.25,0.816 -2.188,1.832 0.016,0.574 0.625,0.598 1.188,0.688 2.594,0.391 8.422,-4.387 5.844,-5.266 -1.094,-0.368 -1.282,2.96 -4.844,2.746\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m297.461,41.313c-0.641,-0.672 -21.016,7.008 -21.438,10.785 -0.047,0.313 0.391,1.289 1.438,1.047 0.766,-0.168 10.875,-1.246 18.609,-0.816 3,0.176 5.641,0.848 7.25,1.496 2.094,0.84 5.016,0.512 5.109,-0.43 0.109,-0.945 -7.375,-3.152 -10.672,-3.449 -5.969,-0.527 -17.828,1.039 -17.828,1.039 0,0 18.469,-8.68 17.532,-9.672\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m237.957,68.024c0,1.363 0.281,3.09 1.199,5.02 2.023,-3.172 3.07,-5.664 3.516,-7.012 -1.641,-0.109 -3.266,0.043 -4.504,-0.047 -0.098,0.511 -0.211,1.206 -0.211,2.039\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m246.898,67.418c0,1.727 0.25,3.961 1.172,5.961 2.109,-2.586 3.094,-5.633 3.516,-7.348 -1.563,0 -3.188,0 -4.609,-0.117 -0.032,0.43 -0.079,0.926 -0.079,1.504\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m143.414,82.633c4.375,-16.262 -5.75,-32.023 -5.297,-44.672 -3.574,9.504 1.313,19.855 2.938,30.098 1.766,11.176 0.961,20.336 -5.914,20.086 -1.246,0 -1.191,1.426 -0.461,1.426 6.031,-0.137 7.527,-3.075 8.734,-6.938\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m295.555,54.816c0.773,0.563 1.266,1.465 1.266,2.488 0,1.695 -1.375,3.074 -3.063,3.074 -1.703,0 -3.063,-1.379 -3.063,-3.074 0,-1.113 0.578,-2.078 1.484,-2.617 -2.797,0.602 -5.266,2.578 -5.266,3.641 0,1.258 3.43,3.879 6.734,4 3.172,0.113 6.281,-2.832 6.281,-3.832 0.002,-0.789 -1.967,-2.871 -4.373,-3.68\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m240.352,84.801c-0.656,1.223 -1.422,3.137 -1.422,5.258 0,2.344 0.867,4.359 2.539,5.828l0.367,0.313h6.945l-1.453,-1.992c-0.906,-1.254 -1.531,-2.828 -2.203,-4.598 -0.781,-2.105 -1.539,-3.938 -2.797,-5.137l-1.203,-1.146 -0.773,1.474z\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m249.289,84.434c-0.656,1.359 -1.422,3.625 -1.422,6.68 0,1.168 0.125,2.449 0.406,3.801l0.234,1.055 3.523,-0.168 3.195,-0.094 2.266,-0.066 -1.266,-1.887c-0.719,-1.098 -1.344,-2.563 -2,-4.121 -0.836,-2 -1.703,-3.918 -2.813,-5.406l-1.234,-1.676 -0.889,1.882z\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m243.961,90.051c-0.719,-1.875 -1.422,-3.633 -2.508,-4.656 -0.688,1.313 -1.258,2.949 -1.258,4.664 0,0.254 0.016,0.504 0.031,0.75 1.031,0.016 2.438,0.047 4.047,0.078 -0.093,-0.278 -0.203,-0.559 -0.312,-0.836\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m253.07,90.129c-0.781,-1.855 -1.609,-3.742 -2.656,-5.152 -0.5,1.047 -1.266,3.113 -1.297,5.984 1.438,0.023 2.906,0.047 4.344,0.07 -0.125,-0.293 -0.25,-0.597 -0.391,-0.902\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M255.195,94.449l-0.015,0l0.015,0\"\n      android:fillColor=\"#ffffff\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ar.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.862\"\n    android:viewportHeight=\"471.422\">\n  <path\n      android:pathData=\"M0,0h469.862v471.422h-469.862z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,0h469.862v471.422h-469.862z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m169.695,98.504c17.816,5.535 46.434,15.871 51.52,19.082 -2.055,2.605 -11.375,15.344 -13.863,41.832 -8.641,5.184 -11.59,0.406 -11.59,0.406 0,0 -3.449,0.434 -4.043,2.473 -6.918,-4.199 -5.941,-10.656 -10.277,-6.465 -1.035,0.977 -6.594,-8.832 -8.121,-4.031 -4.824,-1.016 -4.848,-7.352 -6.152,-7.602 -1.32,-0.246 -3.824,2.48 -4.672,0.824 -1.441,-2.809 -3.098,-6.121 -3.594,-6.574 -0.512,-0.465 -1.895,1.031 -3.965,0.391 -2.059,-0.641 -3.633,-6.414 -5.449,-7.129 -3.488,1.816 -5.84,-4.656 -6.113,-5.543 -0.438,1.855 -5.246,2.824 -4.793,-0.313 1.648,-10.91 -13.191,-9.551 -12.52,-19.969 -19.055,-2.293 -17.246,-42.254 -21,-42.781 -6.887,-0.992 -11.535,-0.137 -11.535,-0.137 0,0 0.266,-6.129 9.688,-7.535 -5.191,-3.57 -11.824,-4.121 -11.824,-4.121 0,0 2.426,-4.953 14.418,-3.258 -2.984,-6.695 -9.473,-9.645 -9.473,-9.645 0,0 7.105,-2.578 14.953,4.359 -1.066,-8.563 -7.344,-15.152 -7.344,-15.152 0,0 7.008,-1.594 14.566,11.52 1.16,-8.289 -1.984,-16.785 -1.984,-16.785 0,0 7.695,0.688 10.855,17.543 7.031,9.723 3.527,25.152 11.266,42.16 4.304,9.473 15.871,11.747 31.046,16.45\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m203.535,330.351c5.77,-22.18 25.281,-36.898 45.102,-35.063 1.047,-4.578 1.914,-8.695 1.578,-9.492 -11.625,-27.813 -18.52,-30.922 -18.52,-30.922 0,0 -25.609,-6.164 -41.055,1.969 -3.121,1.641 -26.184,18.102 -21.664,19.219 7.48,1.844 -2.969,7.328 -4.625,11.875 -1.656,4.563 2.441,3.469 2.633,4.047 0.465,1.359 -10.344,13.219 -7.664,13.828 10.023,2.219 -4.504,13.492 -1.383,14.328 8.613,2.328 -1.961,12.133 1.117,12.641 1.098,0.164 3.199,0.75 4.891,1.031 -0.961,1.938 -3.488,7.516 -2.961,13.266 0.254,2.641 3.023,-2.438 4.43,1.063 -7.102,6.531 6.18,25.172 7.098,36.266 -4.809,0.625 -3.984,-6.234 -8.16,-8.25 -2.254,4.594 -6.824,4.578 -12.281,3.047 -5.453,-1.5 -11.816,-4.508 -17.629,-4.586 -12.801,-3.656 -18.121,1.313 -19.289,2.945 0.383,0.148 4.871,1.328 11.297,4.43 -10.855,0.898 -12.777,8.344 -12.777,8.344 0,0 5.582,-0.375 12.535,1.164 -11.27,6.445 -9.711,13.563 -9.711,13.563 0,0 6.23,-4.156 12.672,-4.734 -3.48,2.922 -6.359,9.328 -4.223,13.953 2.543,-2.719 7.469,-5.266 9.254,-6.109 -2.383,6.141 -2.023,10.625 0.602,13.891 7.039,-10.875 9.551,-10.203 11.59,-10.039 1.113,0.102 4.152,1.18 8.609,1.727 3.719,0.422 8.422,0.273 13.809,0.617 12.918,0.836 27.879,1.328 37.758,-9.898C203.535,379.484 198.008,351.664 203.535,330.351\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m129.223,199.039c5.137,-0.816 12.082,7.344 17.449,1.344 -10.238,-4.637 -20.855,-20.278 -31.488,-22.461 -11.977,-16.617 -19.406,-14.473 -19.406,-14.473 0,0 9.406,14.152 9.117,17.711 -15.719,-8.641 -20.934,-2.91 -20.934,-2.91l15.191,11.191c0,0 -13.938,-2.129 -17.656,5.07 7.816,0.367 15.824,3.227 16.199,4.945 -0.801,0.453 -11.055,2.758 -11,9.758 4.129,-0.773 11.785,-0.896 13.656,0.883 -3.398,3.477 -9.945,8.984 -6.52,15.758 4.742,-2.848 7.633,-7.48 12.488,-8.223 5.512,-4.23 20.672,6.854 22.145,7.953 1.48,1.109 29.078,16.078 33.781,3.957 0.32,-0.832 9.664,4.105 10.242,1.969 1.895,-7.063 1.863,-4.809 5.262,-3.102 1.746,0.871 4.516,-2.313 6.875,-0.313 1.488,-7.57 10.527,-0.906 12.711,-7.473 4.84,0.824 8.098,2.344 7.344,-4.016 6.223,4.391 7.449,-1.043 10.566,0.613 0.305,-6.477 6.563,-4.063 8.93,-4.168 20.985,-0.853 24.063,-16.435 25.079,-18.829 1.906,-4.477 4.055,-4.148 3.414,-1.535 -3.531,14.081 -11.187,25.847 -32.109,24.722 -1.168,-0.066 -1.688,0.477 -2.176,1.277 -0.488,0.793 -0.473,1.449 -0.344,4.281 0.199,5.848 14.137,23.109 22.137,36.063 10.461,16.938 13.82,25.672 12.539,29.453 -2.227,6.703 -6.945,41.656 -6.719,42.789 0.203,1.148 1.906,2.164 3.578,0.57 2.016,2.391 -1.859,11.547 0.641,11.789 1.898,-1.344 4.234,-2.523 4.234,-2.523 0,0 -3.938,10.297 1.734,15.211 0.727,-2.867 2.961,-4.969 2.961,-4.969 0,0 -1.117,9.953 4.359,12.758 0.117,-0.625 0,-1.055 0.633,-4.203 3.297,12.047 4.844,13.156 5.711,12.328 0.867,-0.828 -1.594,-5.047 1.281,-4.125 1.008,10.523 3.898,10.375 3.898,10.375 0,0 0.344,-0.43 1.75,-2.875 3.266,8.953 21.828,18.484 18.578,39.984 -0.672,0.438 -2.164,0.391 -2.625,-1.266 -0.453,-1.672 -1.57,-6.547 -2.109,-7.234 -0.523,-0.672 -2.094,-2.813 -14.313,-4.281 -12.203,-1.438 -18.281,4.859 -18.281,4.859 0,0 -13.5,-4.563 -20.715,5.094 4.27,-1.016 14.824,4.719 14.824,4.719 0,0 -10.844,2.625 -12.5,13.875 7.719,-4.031 15.586,-2.938 15.586,-2.938 0,0 -9.57,7.422 -7.648,17.953 6.75,-7.188 13.813,-9.047 13.813,-9.047 0,0 -6.492,11.077 -1.094,18.438 2.602,-3.859 7.406,-11.953 11.031,-11.359 1.492,10.984 7.625,14.875 8.469,14.094 0.844,-0.766 -1.672,-10.141 4.547,-15.914 10.641,-2.578 36.773,-7.68 46.891,-32.477 -1.172,-7.672 -22.563,-43.609 -22.125,-69.5 0.125,-7.219 1.086,-35.828 1.086,-35.828 0,0 0.789,-16.758 -5.063,-27.875 3.641,0.313 5.023,7.641 7.109,8.984 2.102,1.328 3.742,-2.047 3.742,-2.047l-0.789,-6.313 4.164,5.125c0,0 3.594,-8.031 0.578,-17.953 -3.016,-9.938 -17.063,-29.223 -18.984,-35.781 -1.359,-4.563 -3.875,-21.715 -4.875,-28.793 -1,-7.074 -0.633,-28.609 -0.633,-28.609 0,0 2.93,0.496 4.867,2.242 1.539,-1.898 -0.781,-8.328 -0.07,-9.258 0.656,1.242 3.32,1.359 4.883,3.016 2.547,-5.262 0.328,-10.398 0.055,-11.086 4.289,1.871 8.211,1.488 8.852,-0.203 -1.641,-1.688 -3.883,-11.719 -3.789,-12.973 1.648,-0.824 6.367,3.422 7.18,1.895 -2.555,-4.078 -1.164,-10.336 -5.195,-17.32 1.508,-1.215 3.07,0.992 4.875,-1.969 -7.875,-12.613 1.813,-25.328 0.945,-34.711 -1.344,-15 -9.406,-17.535 -9.406,-17.535 0,0 21.281,-0.105 16.797,-17.527 -4.484,-17.434 -15.539,-6.313 -22.766,-10.801 -7.227,-4.496 -7.063,-16.395 -18.219,-17.051 -15.766,-0.918 -36.828,11.229 -49.074,11.229 -3.824,-0.031 -3.328,0.664 -12.406,-2.031 -2.379,13.031 2.328,14.406 0.969,17.461 -2.563,5.691 -1.609,7.152 -1.609,7.152l1.359,0.027c-0.375,2 -0.535,5.879 2.266,10.246 3.344,-5.229 4.461,-8.535 4.832,-10.104l0.934,0.021c-0.16,2.402 -0.063,6.809 2.199,10.082 3.379,-3.457 4.57,-7.84 4.961,-9.938l0.211,0.012c0,0 7.703,-0.594 12.641,2.172 4.938,2.77 4.742,13.434 4.742,13.434 0,0 -13.398,-4.543 -19.176,-4.426 -8.168,0.195 -20.84,3.691 -28.527,1.859 -7.691,-1.824 -14.656,-13.008 -14.656,-13.008 0,0 -12.115,18.476 14.932,23.078 6.016,1.023 11.703,0.648 16.641,-0.145 0,0 12.879,-2.863 15.652,-3.254 2.766,-0.395 13.984,1.262 13.984,1.262 0,0 -0.641,4.137 -6.164,4.137 -1.852,0 -23.824,-0.414 -23.824,-0.414 0,0 -0.566,7.461 4.266,7.918 1.574,0.145 7.328,-0.449 14.77,0.672 15.641,2.367 33.406,8.688 46.359,-5.656 11.18,-12.375 2.414,-30.711 12.438,-38.551 8.25,-6.465 17.336,-0.625 17.711,1.879 -12.359,-5.094 -14.945,-0.598 -16.359,0.488 -9.93,7.586 4.922,46.129 -32.852,47.273 -13.133,0.391 -26.984,1.207 -32.984,7.758 -3.402,3.723 -6.805,3.523 -11.746,8.531 -13.379,13.598 -13.824,32 -15.219,40.414 -0.543,3.313 0.938,2.242 0.938,2.242 0,0 7.113,-2.57 12.297,-3.297 0.918,-0.113 1.031,0.504 1.031,0.504 0,0 0.016,0.719 -0.887,1.238 -45.587,11.376 -71.724,61.931 -95.876,40.536\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m289.996,27.801c5.953,-8.152 29,-2.77 18.422,16.617 -9.094,2.582 -10.031,-15.106 -18.422,-16.617\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m240.731,90.754h-0.016,0.016z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m193.152,70.879c0,1.371 0.23,2.648 0.695,3.801 1.801,4.504 7.008,7.512 15.488,8.953 4.984,0.848 10.238,0.801 16.121,-0.152 0.086,-0.016 12.82,-2.848 15.688,-3.25 2.461,-0.352 10.164,0.656 13.367,1.105 0,0 1.008,0.152 1.367,0.207 0.133,-0.695 0.398,-1.941 0.523,-2.605 -0.406,-0.129 -1.492,-0.441 -1.492,-0.441 -2.945,-0.953 -13,-4.07 -17.559,-3.969 -2.887,0.066 -6.406,0.57 -10.137,1.098 -6.703,0.949 -13.633,1.934 -18.809,0.711 -6.047,-1.441 -11.469,-7.887 -14.016,-11.336 -0.618,1.573 -1.236,3.655 -1.236,5.878\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m225.36,266.484c0,0 6.656,-2.078 16.473,1.836 1.297,2.461 3.836,6.688 5.664,11.242 -3.782,-4.484 -22.137,-13.078 -22.137,-13.078\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m83.68,193.312c4.512,0.52 10.105,1.84 13,3.719 0.082,-2.078 0.793,-5.246 1.07,-6.344 -2.262,-0.23 -9.988,-0.664 -14.07,2.625\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m88.375,207.586c3.031,-0.371 8.16,-0.57 11.266,0.52 -0.297,-0.688 -0.586,-1.375 -0.824,-2.066 -0.578,-1.672 -0.992,-3.328 -1.273,-4.984 -1.392,0.471 -8.095,2.936 -9.169,6.53\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m86.215,178.266c0.855,0.629 12.832,9.473 13.281,9.801 1.016,-1.723 3.574,-4.836 4.391,-5.816 -9.688,-5.259 -15.094,-4.884 -17.672,-3.985\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m94.328,223.992c1.008,-0.762 2.023,-1.609 3.184,-2.672 2.039,-1.887 4.168,-3.832 6.914,-4.777 -1.328,-1.52 -2.563,-3.207 -3.641,-5.086 -1.297,1.254 -7.808,7.863 -6.457,12.535\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m105.289,177.777c0.336,0.887 0.488,1.59 0.543,2.184 1.184,-0.625 4.91,-2.527 7.313,-3.105 -7.465,-9.391 -12.863,-12.008 -15.754,-12.68 2.488,3.633 6.41,9.648 7.898,13.601\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m240.949,411.367c4.938,0.984 11.141,4.281 11.844,4.656 0,0 0.609,0.344 1.016,0.563 -0.008,-0.164 -0.008,-0.328 -0.008,-0.492 0,-3.031 0.836,-5.484 2.477,-7.344 -3.797,-0.742 -10.415,-1.234 -15.329,2.617\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m256.059,429.711 l0,0c-0.078,0.086 -6.906,5.578 -7.211,13.383 5.43,-4.984 10.508,-6.805 11.805,-7.219 -0.805,-0.922 -1.539,-2.031 -2.203,-3.297 0.008,0.016 0,0.016 -1.047,-2.203 0,0 -0.422,-0.891 -0.586,-1.25 -0.149,0.141 -0.36,0.297 -0.758,0.586\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m252.457,419.039 l0,0c-0.086,0.016 -7.883,2.133 -10.57,9.789 6.984,-2.805 13.242,-2.047 13.5,-2.016 0,0 0.328,0.047 0.594,0.094 -1.141,-2.828 -1.844,-5.578 -2.117,-8.219 -0.212,0.047 -0.618,0.172 -1.407,0.352\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m272.762,444.078c0,0.031 0.016,0.094 0.016,0.094 0.938,7.016 3.891,10.852 5.734,12.234 -0.016,-0.547 -0.023,-1.594 -0.023,-1.594 0,-2.906 0.352,-7.148 2.852,-10.893 -2.392,0.909 -5.392,0.987 -8.579,0.159\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m262.582,438.156c-0.023,0.078 -2.992,5.25 -2.992,10.539 0,1.578 0.305,2.984 0.836,4.234 2.438,-3.773 5.93,-9 9.453,-9.922 -2.656,-1.08 -5.164,-2.721 -7.273,-4.854l-0.024,0.003 0,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m126,38.457c0.008,0 0.008,-0.008 0.023,-0.016 -2.16,-8.992 -5.52,-12.785 -7.809,-14.352 0.52,1.758 1.105,4.086 1.449,6.734 0.32,2.457 0.449,5.152 0.152,7.871l-0.098,0.816c2.201,-0.975 4.361,-1.35 6.283,-1.053\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m117.106,39.082c-4.082,-6.738 -7.883,-9.297 -10.457,-10.273 2.113,2.91 4.84,7.543 5.617,13.055l0.191,1.488c1.75,-1.336 3.551,-2.391 5.32,-3.168l-0.671,-1.102z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m104.953,49.23c-5.793,-0.605 -9.191,0.227 -11.145,1.172 2.625,0.492 6.23,1.484 9.473,3.527l0.52,0.328c0.633,-1.57 1.504,-3.146 2.574,-4.691l-1.422,-0.336z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m103.16,56.848c-4.992,0.938 -7.074,3.055 -7.961,4.641 1.465,-0.168 4.52,-0.328 7.625,-0.273 -0.105,-1.367 0.063,-2.855 0.441,-4.383l-0.105,0.015z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m111.152,44.543 l-1.25,-1.055c-3.871,-3.266 -7.477,-4.223 -10.102,-4.391 4.695,3.086 7.254,8.574 7.605,9.277 0.379,-0.559 2.059,-2.359 3.281,-3.438 0.154,-0.143 0.314,-0.264 0.466,-0.393\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m131.902,400.008 l-1.855,1.578c-2.438,2.063 -4.398,5.82 -4.398,9.148 0,0.273 0.047,0.539 0.086,0.813 3.027,-2.453 6.992,-4.391 7.898,-4.813l2.48,-1.172c-1.64,-1.625 -3.097,-3.484 -4.211,-5.554\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m129.32,391.516 l-2.441,1.391c-6.223,3.547 -8.191,7.156 -8.773,9.438 2.477,-1.313 6.621,-3.188 10.941,-3.578l2.176,-0.18c-0.086,-0.203 -0.207,-0.414 -0.285,-0.609 -0.825,-2.087 -1.344,-4.283 -1.618,-6.462\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m129.426,383.336 l-2.859,0.227c-6.176,0.5 -9.109,3.219 -10.461,5.172 2.336,0.016 6.055,0.25 10.391,1.219l2.703,0.609c-0.231,-2.485 -0.153,-4.954 0.226,-7.227\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m135.527,408.797c-0.984,2.539 -1.48,4.766 -1.48,6.703 0,1.438 0.289,2.688 0.816,3.828 3.984,-5.828 6.586,-7.969 8.695,-8.641 -2.383,-1.063 -4.809,-2.625 -6.957,-4.641l-1.074,2.751z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m118.184,376.906c2.031,0.695 5.113,1.844 8.855,3.656l2.656,1.297c0.543,-2.438 1.402,-4.578 2.535,-6.172 -7.519,-1.734 -11.855,-0.203 -14.046,1.219\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m306.012,66.566c0,0 -1.461,0.172 -1.375,1.195 0.078,1.023 1.172,1.191 1.172,1.191 0,0 5.875,1.832 7.367,-5.543 -0.984,3.528 -7.164,3.157 -7.164,3.157\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m306.715,61.184c-0.5,-0.109 -2.063,0.824 -2.016,1.848 0.031,0.578 0.578,0.602 1.109,0.688 2.367,0.395 7.711,-4.383 5.344,-5.262 -1,-0.368 -1.171,2.96 -4.437,2.726\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m279.371,37.617c-0.563,-0.68 -19.188,7.008 -19.594,10.785 -0.047,0.309 0.367,1.285 1.328,1.047 0.688,-0.168 9.922,-1.258 17.008,-0.816 2.75,0.176 5.18,0.848 6.648,1.496 1.906,0.832 4.578,0.512 4.672,-0.434 0.094,-0.941 -6.766,-3.16 -9.781,-3.445 -5.453,-0.539 -16.313,1.039 -16.313,1.039 0,0 16.915,-8.68 16.032,-9.672\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m129.527,89.023c2.266,-16.223 -8.102,-30.703 -8.945,-43.055 -2.207,9.559 3.082,19.238 5.473,29.063 2.625,10.738 2.801,19.73 -3.223,20.082 -1.098,0.109 -0.902,1.48 -0.281,1.414 5.266,-0.64 6.281,-3.625 6.976,-7.504\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m277.668,51.121c0.688,0.559 1.148,1.453 1.148,2.48 0,1.695 -1.258,3.07 -2.805,3.07 -1.555,0 -2.82,-1.375 -2.82,-3.07 0,-1.113 0.539,-2.074 1.359,-2.617 -2.539,0.602 -4.805,2.574 -4.805,3.641 0,1.254 3.117,3.879 6.156,4 2.914,0.113 5.766,-2.832 5.766,-3.824 0.001,-0.793 -1.819,-2.879 -3.999,-3.68\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m227.121,81.105c-0.586,1.223 -1.289,3.125 -1.289,5.262 0,2.344 0.816,4.352 2.336,5.824l0.32,0.32h6.375l-1.32,-2c-0.832,-1.254 -1.414,-2.824 -2.023,-4.59 -0.727,-2.105 -1.422,-3.945 -2.559,-5.137l-1.121,-1.145 -0.719,1.466z\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m235.32,80.746c-0.594,1.359 -1.297,3.613 -1.297,6.68 0,1.16 0.129,2.43 0.375,3.789l0.195,1.059 3.262,-0.168c-0.016,0 2.914,-0.098 2.914,-0.098l2.07,-0.063 -1.156,-1.898c-0.672,-1.094 -1.227,-2.559 -1.828,-4.117 -0.781,-1.992 -1.547,-3.914 -2.566,-5.41l-1.145,-1.672 -0.824,1.898z\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m224.945,64.328c0,1.359 0.246,3.09 1.094,5.016 1.848,-3.16 2.824,-5.664 3.234,-7 -1.504,-0.121 -3.02,0.031 -4.129,-0.055 -0.113,0.512 -0.199,1.199 -0.199,2.039\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m233.137,63.719c0,1.73 0.223,3.961 1.063,5.961 1.938,-2.582 2.848,-5.633 3.227,-7.336 -1.441,0 -2.922,-0.008 -4.234,-0.129 -0.033,0.441 -0.056,0.922 -0.056,1.504\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m230.442,86.359c-0.656,-1.887 -1.305,-3.629 -2.289,-4.664 -0.633,1.313 -1.168,2.953 -1.168,4.672 0,0.25 0.016,0.496 0.031,0.746 0.953,0.016 2.215,0.039 3.703,0.07 -0.086,-0.273 -0.184,-0.55 -0.277,-0.824\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m238.793,86.434c-0.734,-1.867 -1.48,-3.746 -2.434,-5.145 -0.473,1.047 -1.168,3.105 -1.191,5.984 1.32,0.023 2.664,0.039 3.984,0.063 -0.125,-0.297 -0.234,-0.598 -0.359,-0.902\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m10.945,244.812v1.328c0,0 14.566,1.883 20.551,11.211 5.985,9.328 55.969,120.984 55.254,124.688 0.801,0.055 1.348,-0.273 1.348,-0.273L142.559,259.5c0,0 5.258,-12.359 18.152,-12.297 3.281,-0.25 4.809,-0.516 4.809,-0.516v-1.344l-49.664,0.266v1.344h5.344c0,0 14.695,-0.047 9.344,15.484 -5.352,15.516 -34.711,92.109 -34.711,92.109 0,0 -38.273,-86.656 -39.777,-97.453 -1.504,-10.82 13.625,-10.688 13.625,-10.688h3.465v-1.328l-62.201,-0.265z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m384.699,376.695c0,0 -10.914,-1.852 -12.266,-8.539 -1.359,-6.703 -0.539,-56.063 -0.539,-56.063 0,0 1.164,-1.172 1.867,-0.82 0.727,0.359 1.859,2.148 1.859,2.148 0,0 39.563,60.828 71.829,63.539 2.72,-0.414 8.563,-1.344 10.938,-1.852 -35.258,-23.742 -56.266,-54.164 -59.258,-58.758 -3.008,-4.57 0.992,-5.555 2.406,-5.602 36.586,-1.148 38.82,-29.117 38.977,-32.313 0.813,-15.531 -12.5,-23.297 -21.109,-26.164 -8.57,-2.852 -27.5,-3.195 -27.5,-3.195l-25.891,1.063h-7.477l-18.648,-2.445c0,0 -0.797,0.102 -0.875,0.383 -0.063,0.258 0.164,0.555 0.266,0.766 0.922,2.031 11.93,3.719 12.852,6.906 1.836,6.305 -0.266,109.195 -0.266,109.195 0,0 -2.07,10.656 -15.477,11.75 0.125,0.164 0,1.344 0,1.344h48.313l-0.001,-1.343 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m418.34,277.656c0,0 1.859,4.844 -1.859,14.938 -3.734,10.109 -21.094,13.094 -21.094,13.094 0,0 -17.531,2.281 -22.953,1.063 -2.852,-5.891 -0.539,-50.453 -0.539,-50.453 0,0 5.383,-3.297 18.43,-3.75 24.257,-0.837 28.015,25.108 28.015,25.108\"\n      android:fillColor=\"#ffffff\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_be.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"468.625\"\n    android:viewportHeight=\"470.20398\">\n  <path\n      android:pathData=\"M-0,0h468.625v470.188h-468.625z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M468.625,190.641l-279.703,-190.633l279.703,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M478.49,-8.683l0,203.935l-299.22,-203.935z\"\n      android:strokeWidth=\"3.5520003\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"/>\n  <path\n      android:pathData=\"M-0,247.094l326.719,223.11l-326.719,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M-6.867,477.387l0,-233.178l341.463,233.178z\"\n      android:strokeWidth=\"3.552\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m424.422,218.121c-3.656,-7.766 -31.953,-39.465 -67.984,-61.742 -15.867,-9.809 -64.953,-39.73 -105.781,-49.25 -4.422,-1.031 -8.219,-3.184 -12.734,-2.305 -1.871,0.359 -4.559,-2.512 -1.266,-4.277 1.797,-0.984 3.625,-1.793 12.734,-1.227 -7.539,-5.918 -10.141,-5.184 -22.484,-5.445 2.816,-5.09 17.219,-4.496 17.219,-4.496 0,0 -6.477,-4.48 -26.234,-3.852 4.109,-3.215 11.887,-4.469 11.887,-4.469 0,0 -10.559,-5.016 -23.168,0.289 -1.016,0.422 -2.199,1.375 -4.641,1.422 -2.406,0.055 -8.344,-1.078 -9.297,-1.352 -0.949,-0.258 -4.719,-1.121 -4.156,-4.656 0.527,-3.527 3.527,-3.496 4.262,-3.543 0.77,-0.074 9.641,1.008 12.129,-3.32 1.703,-2.922 5.113,-14.527 -2.801,-18.234 -11.344,-5.301 -17.246,-1.566 -19,-1.238 -1.727,0.344 -4.023,-1.578 -4.023,-1.578 0,0 -8.504,-9.672 -11.281,-12.008 -2.766,-2.32 -10.902,-6.664 -17.152,-8.031 -1.367,-0.305 -3.824,-1.094 -4.191,-1.453 -1.375,-1.273 -6.07,-2.188 -7.773,-2.113 -2.082,0.094 -6.609,-0.832 -9.227,2.895 -1.648,2.367 -2.871,2.367 -6.023,2.77 -3.152,0.383 -11.359,-0.457 -11.359,-0.457 0,0 -10.648,-0.496 -13.977,-3.055 -1.551,-1.176 -6.32,-5.992 -7.594,-7.723 -1.27,-1.711 -3.391,-0.789 -3.254,-0.152 0.688,3.09 -0.145,8.664 -3.48,12.164 -3.793,3.973 -8.063,7.688 -8.816,8.574 -0.773,0.863 -2.102,5.223 0.367,6.977 2.473,1.766 4.402,3.07 4.402,3.07 0,0 -2.066,10.801 -1.832,14.082 -2.367,-1.152 -6.434,-3.656 -8.863,-5.832 -15.922,-14.297 -16.699,-29.57 -20.066,-30.281 -3.359,-0.719 -8.758,16.961 0.137,29.641 10.281,14.656 30.945,18.848 30.945,18.848 0,0 -3.594,4.305 -3.434,10.414 -3.68,1.715 -4.223,2.93 -4.223,2.93 0,0 -0.402,2.434 1.824,4.434 64.184,1.152 108.008,66.063 94.445,137.91 -1.965,10.441 -10.367,27.543 -13.727,35.051 -3.359,7.492 -4.77,19.836 -4.77,19.836 0,0 -1.16,3.82 -2.992,3.477 -1.832,-0.359 -1.895,-1.891 -1.781,-2.844 0.375,-1.43 -0.648,-7.172 0,-10.656 0.656,-3.516 -1.234,-6.125 -1.234,-6.125 0,0 5.387,-11.109 -6.973,-21.453 1.758,12.914 -2.441,15.609 -2.441,15.609 0,0 -4.602,-17.297 -21.199,-17.438 6.895,6.609 7.648,15.734 7.879,16.398 -1.895,-4.211 -17.922,-16.148 -28.16,-1.258 16.23,1.688 18.695,8.141 18.695,8.141 0,0 -19.102,-8.203 -28.184,10.656 9.359,-2.094 18.992,0.219 18.992,0.219 0,0 -11.641,2.203 -12.199,12.602 6.457,-2.914 16.238,-0.344 16.238,-0.344 0,0 -0.313,0 -0.246,0.992 1.543,0.57 8.254,11.906 14.086,15.047 5.84,3.156 40.504,4.57 55.25,-1.703 3.758,-1.594 3.949,-0.891 5.504,-5.5 5.102,-15.188 21.605,-48.914 35.121,-74.156 9.045,-16.944 17.435,-30.058 17.525,-31.155 0.16,-2.125 -7.922,-12.949 -9.051,-14.391 -1.125,-1.422 1.113,-2.078 1.113,-2.078 0,0 9.344,5.191 12.379,10.039 3.031,4.855 1.734,6.168 0.969,8.656 -0.789,2.504 -7.348,20.367 -7.348,20.367 0,0 70.504,2.953 86.988,10.664 -18,1.07 -25.609,2.359 -33.234,3.703 -13.109,2.297 -25.813,16.957 -24.719,21.535 4.563,19.047 4.234,63.047 4.523,66.641 0.313,3.586 4.859,5.57 6.625,5.766 1.773,0.164 11.148,0.625 11.922,2.164 0.82,1.602 -0.523,2.102 -0.523,2.102 0,0 -2.148,1.5 -5.891,1 -3.719,-0.5 -22.219,-6.594 -25.594,-10.773 -3.391,-4.211 -5.063,-6.344 -5.063,-6.344 0,0 2.828,-18.133 -14.188,-16.836 5.75,9.047 1,12.75 1,12.75 0,0 -6.262,-13.703 -27.574,-8.078C220.377,310.946 220.623,315.157 220.623,315.157c0,0 -11.504,-5.906 -23.902,5 15.766,0.836 17.641,7.219 17.641,7.219 0,0 -18.641,-3.75 -23.035,15.672 13.02,-7.508 20.707,-2.797 20.707,-2.797 0,0 -19.875,5.453 -15.184,23.516 7.965,-7.5 17.75,-9.063 17.75,-9.063l0.25,0.828c0,0 4.574,2.234 8.797,2.469 4.234,0.234 5.266,-0.414 4.801,-2.828 -0.457,-2.406 0.543,-5.094 0.609,-6 0.078,-0.906 1.605,-1.094 1.605,-1.094 0,0 0.953,-0.234 1.219,1.195 0.559,3.195 -1.816,5.664 1.016,9.391 2.84,3.727 7.492,3.102 8.914,3.727 1.414,0.594 9.445,2.516 9.445,2.516 0,0 20.734,3.008 28.047,0.172 5.133,-1.984 20.414,-11.266 24.742,-17.969 2.109,-3.242 3.125,-7.484 3.781,-12.156 2.484,-17.922 8.344,-37.352 21.391,-47.031 1,-0.766 3.078,-1.273 4.188,-1.891 1.227,-0.719 2.313,-0.953 2.836,-2.164 0.461,-2.836 -4.148,-32.039 -4.414,-42.258 -0.484,-18.48 -13,-36.137 -13,-36.137 0,0 0.086,-1.207 1.531,-1.465 1.438,-0.262 3.75,1.211 3.75,1.211 0,0 7.477,3.598 12.375,37.727 4.891,34.148 2.641,62.729 8.711,75.836 1.82,3.922 10.406,19.609 17.211,34.844 5.625,12.578 9.547,24.875 11.82,30.063 5,11.5 -0.492,25.898 -2.703,27.305 -2.219,1.43 -2.313,0.055 -3.086,-0.453 -0.734,-0.539 0.508,-5.906 0.508,-5.906 0,0 2.234,-2.508 -0.508,-7.328 -2.734,-4.789 -15.891,-8.719 -15.891,-8.719 0,0 -1.922,-1.539 -3.188,-2.336 1.906,-13.617 -18.75,-16.906 -18.75,-16.906 0,0 6.047,9.625 4.781,18.617 -15.484,-12.742 -28.891,-1.227 -28.891,-1.227 0,0 11.969,2.719 17.039,12.781 -20.953,-6.5 -23.891,9.516 -23.891,9.516 0,0 8.742,-3.656 17.625,4.047 -19.984,0.703 -17.539,17.078 -17.539,17.078 0,0 5.5,-6.875 20.734,-0.883 -0.344,0.445 -13.109,9.43 -6,25.211 1.953,-3.914 6.852,-10.203 12.484,-12.359 0.516,0.768 0.641,0.721 0.797,0.875 0,0 12.516,-4.904 18.82,-4.813 6.281,0.094 11.461,-0.094 19.586,-0.602 8.172,-0.523 13.023,-4.273 16.891,-6.352 3.906,-2.094 20.453,-18.063 24.391,-21.328 3.938,-3.258 5.164,-9.063 5.164,-9.063 0,0 3.414,-11.328 5.625,-30.266 2.18,-18.945 5.242,-49.859 5.508,-66.484 0.328,-22.719 -12.625,-75.852 -12.625,-75.852 0,0 0,-1.715 1.234,-2.082 1.203,-0.359 1.156,0.059 2.688,2.816 1.516,2.754 3.219,16.414 5.75,18.625 1,0.867 2.281,2.984 6.508,1.836 4.234,-1.172 4.398,-6.906 5.281,-11.395 0.824,-4.441 -4.473,-12.137 -8.145,-19.922M90.203,55.387c0.469,0.199 1,0.512 1,0.512 0,0 -1.48,9.641 -0.266,14.055 -5.734,-2.52 -10.383,-4.465 -10.383,-4.465 0,0 5.896,-8.575 9.649,-10.102m-1.074,32.816c-0.23,0 -0.902,-0.145 -1.84,-0.266 -4.129,-3.84 -4.262,-10.199 -4.262,-10.199 0,0 9.422,2.801 11,3.609 -0.847,2.032 -4.327,4.528 -4.898,6.856m11.594,2.422c-1.152,-0.441 -3.754,-3.063 -3.777,-4.688 -0.039,-2.238 -0.496,-3.672 -0.496,-3.672 0,0 13.762,4.512 17.496,11.801 -5.575,-1.671 -12.063,-3.007 -13.223,-3.441m-8.352,-19.984c0,0 4.84,-7.246 8.848,-8.992 12.781,7.586 18.574,20.008 20.48,28.699 -6.914,-9.739 -29.328,-19.707 -29.328,-19.707\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m88.18,190.145c17.07,-4.207 35.238,-22.094 47.895,-33.695 7.207,-6.566 12.359,-9.922 13.785,-10.961 1.957,1.746 10.262,16.617 13.965,30.848 2.859,11 2.113,22.211 1.809,25.457 -0.895,9.793 -7.527,11.473 -7.527,11.473 0,0 -40.336,11.359 -47.168,10.902 -3.168,-0.207 -27.727,4.586 -34.77,3.625 -18.477,-2.504 -22.59,-11.48 -22.59,-11.48l-8.625,-16.328c0,0 -1.023,-3.758 2.336,-2.504 3.359,1.281 3.793,1.395 6.816,2.336 3.008,0.953 0.727,-2.152 0.727,-2.152 0,0 -2.957,-1.801 -5.582,-3.047 -8.359,-4.07 -8.77,-16.512 -8.77,-16.512 0,0 -0.008,-10.25 0.715,-17.742 0.727,-7.5 -16.848,-7.707 -16.848,-7.707 0,0 7.27,-13.465 27.605,-4.672 0.48,-7.359 -17.398,-13.621 -17.398,-13.621 0,0 11.598,-11.203 31.375,5.91 1.559,-11.824 -8.414,-21.688 -8.414,-21.688 0,0 16.469,-2.266 22.223,20.617 7.199,-5.266 3.59,-20.617 3.59,-20.617 0,0 15.473,9.359 9.867,25.105 8.293,-1.105 11.84,-11.656 11.84,-11.656 0,0 5.895,11.367 -4.84,21.871 -4.043,3.934 -4.848,2.695 -4.848,2.695 0,0 -17.305,20.59 -7.891,48.039 1.207,3.551 3.578,1.023 3.945,-0.535 0.36,-1.528 -0.273,-7.329 -3.222,-13.961\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m168.946,34.312c0,0 11.641,11.695 12.746,13.176 0.918,1.234 8.367,-2.527 12.102,-1.461 2.297,0.656 -0.969,-6.785 -2.328,-8.938 -1.375,-2.168 -6,-7.633 -11.863,-6.871 -5.009,0.657 -10.657,4.094 -10.657,4.094\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"m114.762,90.539c-5.879,-7.953 -19.152,-11.746 -34.457,-16.418 -11.039,-3.383 -22.926,-8.879 -28.621,-18.031 -2.977,-4.785 -4.281,-9.945 -4.281,-14.504 0,-3.449 0.598,-6.449 1.297,-8.375 0.27,0.621 0.535,1.262 0.789,1.887 2.488,6.016 6.504,16.297 17.441,25.793 5.207,4.527 14.688,7.871 23.895,11.91 9.883,3.969 20.418,9.703 26.691,16.816 0,0 3.973,4.922 4.285,6.52 -0.941,-0.223 -2.406,-0.641 -4.199,-1.039 -0.574,-1.719 -2.84,-4.559 -2.84,-4.559\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m78.762,87.258c1.617,0.047 3.664,-0.055 5.273,0.191 -2.211,-1.734 -2.93,-8.238 -2.93,-8.238 0,0 -2.413,3.559 -2.343,8.047\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m91.289,88.641c1.563,0.152 2.711,0.551 5.32,1.145 -2.273,-1.719 -1.168,-4.672 -2.031,-6.031 -1.753,2.686 -2.761,2.929 -3.289,4.886\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m92.7,66.586c2.605,-3.922 6.07,-6.223 6.254,-6.273 -1.129,-0.598 -5.766,-3.27 -5.766,-3.27 0,0 -0.738,9.16 -0.488,9.543\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m80.106,62.465c0,0 5.512,-7.145 7.824,-8.145 -3.496,-1.23 -4.961,-2.16 -6.105,-2.895 -1.239,5.641 -1.719,11.04 -1.719,11.04\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m310.719,243.781c0,0 14.148,-1.508 21.672,5.656 -0.047,-1.359 -0.656,-9.063 -0.656,-9.063 0,0 -13.5,-5.565 -21.016,3.407\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m139.723,32.898c0,0 3.832,0.488 5.023,4.375 1.152,3.777 1.535,9.328 -1.641,20.527 -0.297,1.031 -2.273,0.738 -2.273,-0.559 0,-1.289 1.504,-6.863 1.977,-10.137 0.473,-3.258 0.211,-7.313 -0.816,-8.336 -0.855,-0.848 -2.453,-1.578 -2.789,-1.664 -0.352,-0.086 -2.234,-0.559 -1.77,-2.422 0.473,-1.834 2.289,-1.784 2.289,-1.784\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m140.188,44.02c1.934,-0.492 1.16,-2.547 -1.16,-3.531 -2.328,-0.984 -7.77,0.219 -9.656,5.375 -1.73,4.699 5.598,8.979 7.168,8.979 2.664,0 3.48,-3.613 1.934,-4.438 -1.551,-0.809 -4.039,-1.191 -3.742,-3.297 0.303,-2.108 3.518,-2.62 5.456,-3.088\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m94.305,146.73c0,0 4.457,0.336 9.113,-6.031 -0.617,5.855 -5.535,10.621 -5.535,10.621l-3.578,-4.59z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m31.571,150.25c6.648,-4.914 19.344,0.777 19.344,0.777l-6.809,5.391c-0.008,-0.008 -2.442,-5.809 -12.535,-6.168\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m42.641,134.371c9.418,-2.539 22.008,9.238 22.008,9.238 0,0 -7.039,3.223 -9.125,4.152 0.183,-0.753 -0.625,-9.07 -12.883,-13.39\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m64.426,122.656c9.008,3.449 11.945,18.527 11.945,18.527l-7.387,1.152c0.001,0.001 2.473,-9.413 -4.558,-19.679\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m82.563,141.41c3.566,-3.391 6.047,-8.824 4.84,-15.418 2.32,2.281 4.977,11.441 2.063,17.898 -1.056,-0.609 -2.321,-2.081 -6.903,-2.48\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m141.571,269.062c-1.234,-0.852 -3.199,-1.313 -4.563,-1.375 3.945,-3.609 3.328,-9.297 3.328,-9.297 0,0 3.387,6.063 1.235,10.672\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m131.801,267.594c-3.613,0.172 -6.176,0.891 -6.887,1.266 -0.113,-10.734 -3.602,-15.797 -3.602,-15.797 0,0 8.282,5.359 10.489,14.531\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m121.532,270.016c-1.898,1.289 -1.547,0.75 -4.531,2.875 -3.199,-5.875 -6.68,-10.875 -18.68,-11.664 9.418,-6.368 20.777,2.195 23.211,8.789\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m90.571,277.797c3.598,-6.391 17.254,-6.18 23.785,-2.148 -2.137,2.414 -2.648,3.492 -3.523,6.18 -5.919,-4.196 -16.965,-4.227 -20.262,-4.032\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m95.356,290.25c4.773,-6.031 13.965,-5.664 14.094,-5.391 -0.328,0.406 -2.094,5.484 -2.121,6.156 -0.454,-0.328 -5.415,-1.874 -11.973,-0.765\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m243.844,316.016c-2.031,-0.547 -4.797,-1.188 -6.707,-1.609 0.816,-0.719 3.27,-6.688 0.816,-11.297 1.829,0.593 6.172,2.406 5.891,12.906\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m224.563,315.898c2.656,-1.555 4.375,-1.664 6.391,-1.492 -2.129,-5.969 -13.375,-8.742 -15.344,-8.156 1.215,0.609 8.824,4.859 8.953,9.648\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m204.825,318.359c7.754,-3.477 14.785,-0.313 15.328,0.094 -0.887,0.797 -3.215,3.188 -4.246,5.484 -1.512,-4.14 -11.082,-5.578 -11.082,-5.578\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m196.891,336.914c0.672,-1.508 8.145,-8.539 16.129,-5.836 -1.363,2.25 -1.594,3.547 -1.066,5.516 -7.735,-3.617 -14.801,0.25 -15.063,0.32\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m199.235,357.891c2.246,-9.75 9.344,-12.281 12.816,-13.797 -0.16,1.531 0.215,5.922 0.918,7.156 -0.918,-0.242 -9.605,1.859 -13.734,6.641\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m346.141,385.937c-2.438,0.578 -6.078,1.945 -7.391,2.75 0.672,-5.922 -0.891,-11.789 -2.508,-14.453 2.79,0.547 10.93,4.43 9.899,11.703\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m327.235,398.992c-0.672,-2.602 -7.375,-11.094 -13.625,-12.648 4.953,-2.547 13.422,-1.875 20.953,5.141 -3.172,1.968 -6.594,6.171 -7.328,7.507\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m304.703,405.422c4.281,-7.25 16.688,-3.734 20.172,-2.164 -1.594,1.664 -3.094,4.625 -3.625,9.297 -2.89,-5.836 -12.515,-8 -16.547,-7.133\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m303.313,424.453c-0.281,0.703 2.203,-9.172 17.266,-7.789 -0.625,3.742 -0.703,5.336 -0.328,9.07 -9.594,-4.609 -16.938,-1.281 -16.938,-1.281\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m315.563,447.094c0,0 -1.047,-8 5.75,-13.906 0.531,3.438 1.453,5.477 2.75,6.859 -4.094,1.187 -8.5,7.047 -8.5,7.047\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m84.496,148.707c-3.375,2.848 -6.773,2.141 -9.84,5.352 -2.223,2.32 -8.301,10.344 -5.824,23.934 1.625,8.863 2.867,24.371 3.801,29.41 1.258,6.773 -2.934,12.945 -5.656,12.945\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"3.32800007\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_bl.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"472.175\"\n    android:viewportHeight=\"472.727\">\n  <path\n      android:pathData=\"M0,0h472.175v472.727h-472.175z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m384.754,112.199c-0.055,-2.359 -0.25,-4.734 -0.539,-7.094 -0.891,-6.535 -2.984,-13.535 -6.25,-20.551 4.656,-2.379 7.867,-7.203 7.867,-12.801 0,-7.93 -6.445,-14.367 -14.398,-14.367 -3.641,0 -6.953,1.375 -9.5,3.598 -7.172,-7.719 -15.938,-14.598 -26.172,-19.824 0.922,-1.871 1.43,-3.977 1.43,-6.215 0,-7.93 -6.438,-14.367 -14.375,-14.367 -7.07,0 -12.93,5.102 -14.164,11.824 -10.234,-1.617 -21.359,-1.656 -33.328,0.383 -1.492,-6.336 -7.188,-11.078 -13.984,-11.078 -7.984,0 -14.391,6.422 -14.391,14.367 0,1.641 0.273,3.215 0.766,4.695 -1.031,0.414 -2.063,0.848 -3.125,1.297 -8.66,3.734 -17.484,8.871 -25.879,15.414 -2.641,-2.801 -6.344,-4.527 -10.504,-4.527 -7.941,0 -14.414,6.418 -14.414,14.344 0,4.039 1.688,7.672 4.375,10.273 -7.09,8.672 -13.406,18.672 -18.512,30.016 -1.809,-0.793 -3.777,-1.227 -5.855,-1.227 -8.047,0 -14.617,6.531 -14.617,14.555 0,6.902 4.848,12.68 11.289,14.176 -2.535,11.023 -3.977,22.992 -4.098,35.879h79.145c-0.375,-32.762 6.938,-57.008 19.789,-70.48 14.922,-15.574 36.781,-17.273 54.281,-9.633 18.406,8.008 26.406,27.152 19.273,41.73 -5.539,11.336 -20.977,19.902 -42.898,18.313 13.453,16.918 27.867,23.637 41.125,23.309 1,6.953 6.969,12.313 14.25,12.313 7.938,0 14.359,-6.422 14.359,-14.359 0,-3.125 -0.984,-6.016 -2.703,-8.375 7.031,-5.922 12.781,-14.055 16.578,-23.391 1.078,0.246 2.195,0.383 3.313,0.383 7.977,0 14.406,-6.426 14.406,-14.344 -0.001,-7.33 -5.477,-13.33 -12.54,-14.236\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m384.754,112.199c-0.055,-2.359 -0.25,-4.734 -0.539,-7.094 -0.891,-6.535 -2.984,-13.535 -6.25,-20.551 4.656,-2.379 7.867,-7.203 7.867,-12.801 0,-7.93 -6.445,-14.367 -14.398,-14.367 -3.641,0 -6.953,1.375 -9.5,3.598 -7.172,-7.719 -15.938,-14.598 -26.172,-19.824 0.922,-1.871 1.43,-3.977 1.43,-6.215 0,-7.93 -6.438,-14.367 -14.375,-14.367 -7.07,0 -12.93,5.102 -14.164,11.824 -10.234,-1.617 -21.359,-1.656 -33.328,0.383 -1.492,-6.336 -7.188,-11.078 -13.984,-11.078 -7.984,0 -14.391,6.422 -14.391,14.367 0,1.641 0.273,3.215 0.766,4.695 -1.031,0.414 -2.063,0.848 -3.125,1.297 -8.66,3.734 -17.484,8.871 -25.879,15.414 -2.641,-2.801 -6.344,-4.527 -10.504,-4.527 -7.941,0 -14.414,6.418 -14.414,14.344 0,4.039 1.688,7.672 4.375,10.273 -7.09,8.672 -13.406,18.672 -18.512,30.016 -1.809,-0.793 -3.777,-1.227 -5.855,-1.227 -8.047,0 -14.617,6.531 -14.617,14.555 0,6.902 4.848,12.68 11.289,14.176 -2.535,11.023 -3.977,22.992 -4.098,35.879h79.145c-0.375,-32.762 6.938,-57.008 19.789,-70.48 14.922,-15.574 36.781,-17.273 54.281,-9.633 18.406,8.008 26.406,27.152 19.273,41.73 -5.539,11.336 -20.977,19.902 -42.898,18.313 13.453,16.918 27.867,23.637 41.125,23.309 1,6.953 6.969,12.313 14.25,12.313 7.938,0 14.359,-6.422 14.359,-14.359 0,-3.125 -0.984,-6.016 -2.703,-8.375 7.031,-5.922 12.781,-14.055 16.578,-23.391 1.078,0.246 2.195,0.383 3.313,0.383 7.977,0 14.406,-6.426 14.406,-14.344 -0.001,-7.33 -5.477,-13.33 -12.54,-14.236z\"\n      android:strokeWidth=\"3.54559994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m205.528,170.968c-0.383,-32.762 8.672,-54.176 18.121,-70.32 10.977,-18.785 36.793,-47.289 92.801,-34.949 62.742,13.828 56.219,109.383 -16.766,86.973\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"3.54559994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"m162.121,210.519c-0.336,2.984 -23.059,206.27 -24.863,222.504 7.047,-12.734 43.215,-78.094 43.215,-78.094 0,0 22.648,90.125 25.664,102.141C209.137,445.053 231.551,354.929 231.551,354.929c0,0 36.414,65.438 43.477,78.125 -1.821,-16.187 -24.782,-219.543 -25.125,-222.527h-87.781l-0.001,-0.008 0,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m251.473,208.738h-90.953l-26.016,232.918 1.711,-3.117 2.746,-4.977 40.887,-73.852 24.449,97.359 0.969,3.867 0.855,3.445 0.848,-3.445 0.977,-3.883 24.215,-97.344 41.117,73.883 2.766,4.945 1.719,3.117 -26.29,-232.916zM163.703,212.289h84.605l23.969,212.172 -36.988,-66.477 -4.395,-7.852 -2.168,8.734 -22.605,90.877 -22.816,-90.892 -2.199,-8.719 -4.363,7.867 -36.734,66.398 23.694,-212.108z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"M206.442,209.878L206.442,455.584\"\n      android:strokeWidth=\"3.54559994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M138.383,169.281h139.105v41.992h-139.105z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M138.399,169.281h139.09v41.992h-139.09z\"\n      android:strokeWidth=\"3.54559994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M121.406,181.457h173.113v17.656h-173.113z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M121.406,181.472h173.113v17.641h-173.113z\"\n      android:strokeWidth=\"3.54559994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_bs.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"470.844\"\n    android:viewportHeight=\"472.418\">\n  <path\n      android:pathData=\"M0,-0h470.844v472.418h-470.844z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M247.742,449.449l37.18,-40.375l52.18,39.586l-30.766,-194.758l-117.16,0l-30.778,194.758l52.176,-39.586l37.168,40.375l0,0.032z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m318.656,242.317c0,-4.125 -3.352,-7.473 -7.469,-7.473 -0.063,0 -0.125,0.02 -0.172,0.02h-126.77c-0.047,0 -0.109,-0.02 -0.16,-0.02 -4.145,0 -7.469,3.348 -7.469,7.473 0,4.133 3.324,7.477 7.469,7.477h0.035v0.031h127.098v-0.031c4.102,-0.017 7.438,-3.36 7.438,-7.477\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m311.633,193.613c0,-4.113 -3.023,-7.457 -6.742,-7.457 -0.031,0 -0.078,0.016 -0.141,0.016L190.512,186.172c-0.031,0 -0.09,-0.016 -0.137,-0.016 -3.719,0 -6.727,3.344 -6.727,7.457 0,4.129 3.008,7.488 6.727,7.488 0,0 0.016,-0.016 0.023,-0.016v0.047L304.906,201.132v-0.047c3.719,0.001 6.727,-3.343 6.727,-7.472\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m318.203,205.727 l0,0L177.398,205.727c-6.781,0 -12.297,5.512 -12.297,12.313 0,6.781 5.523,12.297 12.32,12.297 0.035,0 0.059,0 0.082,0h140.598c0.055,0 0.055,0 0.102,0 6.797,-0.001 12.297,-5.517 12.297,-12.298 0,-6.793 -5.508,-12.312 -12.297,-12.312\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m148.977,121.055c3,-14.258 22.375,-19.563 34.52,0.254 4.75,7.754 7.766,50.793 -42.535,49.297 -30.523,-0.918 -52.305,-37.535 -43.539,-76.832 8.801,-39.457 48.547,-62.656 83.074,-61.785 60.301,1.504 91.082,47.832 99.848,73.809 8,23.777 12.719,55.68 12.516,75.875L202.535,181.673c6.313,-36.664 2.496,-51.609 2.496,-51.609 0,0 -8.777,-37.273 -35.031,-37.273 -26.266,0 -31.785,23.266 -31.785,23.266 0,0 -2.887,18.215 10.25,21.016 3.52,0.758 10.398,0.223 10.398,-8.52 -0.008,-4.354 -3.574,-8.26 -9.886,-7.498\"\n      android:fillColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_fr.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.879\"\n    android:viewportHeight=\"471.44098\">\n  <path\n      android:pathData=\"M0,236.519h469.879v234.922h-469.879z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,0h469.879v235.719h-469.879z\"\n      android:fillColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ge.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.61002\"\n    android:viewportHeight=\"470.13998\">\n  <path\n      android:pathData=\"M469.094,0.261l-468.028,0.258l0,-0.258l0,469.879l468.028,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M-0,0.018h235.867v470.142h-235.867z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M235.594,0h234.141v470.137h-234.141z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m352.062,435.828 l1.359,0.281 1.297,0.242 1.078,0.281 1.063,0.781 0.82,0.523 0.789,0.828 0.523,1.063 0.523,1.063 0.281,1.063 0.25,1.063 -0.25,1.328 -0.281,1.063 -0.523,1.063 -0.523,0.82 -0.789,0.781 -0.82,0.805 -1.063,0.539 -1.078,0.521 -1.297,0.25h-1.359,-34.813 -1.352l-1.32,-0.25 -1.063,-0.521 -1.063,-0.539 -0.82,-0.805 -0.789,-0.781 -0.516,-0.82 -0.531,-1.07 -0.281,-1.063 -0.242,-1.328 0.242,-1.07 0.281,-1.063 0.531,-1.063 0.531,-1.063 0.781,-0.813 0.813,-0.531 1.063,-0.781 1.07,-0.281 1.32,-0.25 1.352,-0.281h34.805m0.001,-116.188h1.359l1.297,-0.25 1.078,-0.281 1.063,-0.781 0.82,-0.547 0.789,-0.797 0.523,-1.063 0.523,-1.078 0.281,-1.063 0.25,-1.07 -0.25,-1.313 -0.281,-1.063 -0.523,-1.07 -0.523,-0.813 -0.789,-0.781 -0.82,-0.813 -1.063,-0.531 -1.078,-0.531 -1.297,-0.266h-1.359,-34.813 -1.352l-1.32,0.266 -1.063,0.531 -1.063,0.531 -0.82,0.813 -0.789,0.781 -0.516,0.828 -0.531,1.063 -0.281,1.063 -0.242,1.313 0.242,1.063 0.281,1.063 0.531,1.078 0.531,1.07 0.781,0.805 0.813,0.539 1.063,0.789 1.07,0.273 1.32,0.25 1.352,0.273h34.82\"\n      android:strokeWidth=\"3.45600009\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#040304\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"M435.828,84.296l0,-19.425l21.016,0l0,-26.848l-33.5,0l0,18.617l-26.875,0l0,-18.617l-33.766,0l0,46.273l-17.016,0l0.532,76.329l16.484,0l0,46.246l33.766,0l0,-18.344l26.875,0l0,18.344l33.5,0l0,-26.575l-21.016,0l0,-19.671l21.016,0l0,-9.313l0,-57.441l0,-9.575z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M429.719,130.558l-20.469,0.266l0,27.656l-18.625,0l0,-27.656l-20.742,0l0,-16.481l20.742,0l0,-27.656l18.625,0l0,27.656l20.469,0l0,16.481z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M324.687,24.457l0.532,-1.321l1.062,-1.328l1.063,-1.066l1.078,-1.063l1.578,-0.808l1.609,-0.52l1.586,-0.535l1.852,0l1.875,0l1.593,0.535l1.594,0.52l1.328,0.808l1.344,1.063l1.047,1.066l1.07,1.328l0.539,1.59l0.25,1.594l0.282,1.597l0.781,0.793l0.804,0.801l0.54,0.801l0.781,0.793l0.547,1.062l0.265,1.063l0.25,1.066l0.282,1.063l0.25,1.066l0,1.063l0,281.34l-31.375,0l0,-281.34l0.281,-1.063l0,-1.066l0.25,-1.328l0.273,-1.063l0.539,-0.801l0.532,-1.062l0.796,-0.793l0.516,-1.066l0.813,-0.797l1.062,-0.532l0,-1.855z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M319.375,428.921l-2.938,-6.921l-3.453,-5.586l-4.531,-5.047l-5.328,-4l-5.828,-3.446l-6.375,-3.453l-6.657,-2.922l-7.171,-3.195l0,-27.117l7.171,-3.195l6.657,-3.711l6.375,-3.719l5.828,-4.555l5.328,-5.031l4.531,-5.609l3.453,-6.618l2.938,-7.453l1.594,-8.781l0.531,-9.836l26.312,0l0.532,9.836l1.593,8.781l2.672,7.453l3.719,6.618l4.516,5.609l5.312,5.031l5.859,4.555l6.375,3.719l6.657,3.711l7.179,3.195l0,27.117l-7.179,3.195l-6.657,2.922l-6.375,3.453l-5.859,3.446l-5.312,4l-4.516,5.047l-3.719,5.586l-2.672,6.921l-1.593,8.25l-0.532,9.829l-26.312,0l-0.531,-9.829z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M356.609,384.515l-0.828,1.328l-1.312,1.328l-1.344,1.063l-1.586,0.789l-1.602,0.805l-1.843,0.257l-1.875,0.266l0,1.602l-0.532,1.593l-0.789,1.594l-0.804,1.328l-1.313,1.344l-1.344,1.063l-1.328,0.796l-1.859,0.797l-1.61,0.258l-2.125,0.274l-1.843,-0.274l-1.61,-0.258l-1.867,-0.797l-1.312,-0.796l-1.602,-1.063l-1.062,-1.344l-0.797,-1.328l-0.797,-1.594l-0.531,-1.593l0,-1.602l-1.875,-0.266l-1.844,-0.257l-1.875,-0.805l-1.328,-0.789l-1.344,-1.063l-1.313,-1.328l-0.796,-1.328l-0.797,-1.594l-0.532,-1.593l0,-1.618l0,-1.851l0.532,-1.594l0.797,-1.594l0.796,-1.328l1.313,-1.32l1.344,-1.07l1.328,-0.797l1.875,-0.531l1.844,-0.54l1.875,-0.273l0,-1.578l0.531,-1.594l0.797,-1.601l0.797,-1.344l1.062,-1.313l1.602,-1.054l1.312,-0.813l1.867,-0.789l1.61,-0.273l1.843,-0.266l2.125,0.266l1.61,0.273l1.859,0.789l1.328,0.813l1.344,1.054l1.313,1.313l0.804,1.344l0.789,1.601l0.532,1.594l0,1.578l1.875,0.273l1.843,0.54l1.602,0.531l1.586,0.797l1.344,1.07l1.312,1.32l0.828,1.328l0.781,1.594l0.532,1.594l0,1.851l0,1.618l-0.532,1.593z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m395.14,380.781 l-9.031,2.141 -9.047,3.188 -8.508,3.977 -7.977,4.531 -7.172,5.57 -6.133,6.133 -5.313,6.896 -3.719,7.461 -2.398,7.969 -1.063,8.766m-60.889,-56.632 l9.313,2.141 9.047,3.188 8.5,3.977 7.984,4.531 7.164,5.57 6.133,6.133 5.313,6.896 3.719,7.461 2.391,7.969 0.82,8.766m60.866,-56.632 l-9.031,-2.383 -9.047,-3.477 -8.508,-4.781 -7.977,-5.328 -7.172,-6.375 -6.133,-6.922 -5.313,-7.703 -3.719,-7.969 -2.398,-8.508 -1.063,-9.031m-60.889,62.477 l9.313,-2.383 9.047,-3.477 8.5,-4.781 7.984,-5.328 7.164,-6.375 6.133,-6.922 5.313,-7.703 3.719,-7.969 2.391,-8.508 0.82,-9.031m11.945,50.508 l1.875,0.273 1.836,0.531 1.602,0.523 1.594,0.797 1.344,1.086 1.313,1.313 0.82,1.328 0.789,1.586 0.523,1.594v1.859,1.609l-0.523,1.594 -0.789,1.594 -0.82,1.328 -1.313,1.328 -1.344,1.063 -1.594,0.797 -1.602,0.797 -1.836,0.266 -1.875,0.266v1.594l-0.531,1.594 -0.789,1.594 -0.805,1.328 -1.328,1.344 -1.344,1.063 -1.313,0.797 -1.859,0.797 -1.609,0.266 -2.125,0.266 -1.844,-0.266 -1.609,-0.266 -1.859,-0.797 -1.313,-0.797 -1.602,-1.063 -1.063,-1.344 -0.805,-1.328 -0.797,-1.594 -0.531,-1.594v-1.594l-1.867,-0.266 -1.836,-0.266 -1.875,-0.797 -1.328,-0.797 -1.344,-1.063 -1.313,-1.328 -0.797,-1.328 -0.805,-1.594 -0.523,-1.594v-1.609,-1.859l0.523,-1.594 0.805,-1.586 0.797,-1.328 1.313,-1.313 1.344,-1.086 1.328,-0.797 1.875,-0.523 1.836,-0.531 1.867,-0.273v-1.578l0.531,-1.594 0.797,-1.594 0.805,-1.344 1.063,-1.313 1.602,-1.063 1.313,-0.813 1.859,-0.789 1.609,-0.273 1.844,-0.266 2.125,0.266 1.609,0.273 1.859,0.789 1.313,0.813 1.344,1.063 1.328,1.313 0.805,1.344 0.789,1.594 0.531,1.594v1.578\"\n      android:strokeWidth=\"3.45600009\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#040304\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"M359.265,286.656l-0.531,-0.797l-0.812,-0.805l-1.078,-0.789l-1.063,-0.539l-1.062,-0.523l-1.047,-0.266l-1.328,0l-35.094,0l-1.352,0l-1.07,0.266l-1.047,0.523l-1.062,0.539l-1.079,0.789l-0.531,0.805l-0.781,0.797l-0.531,1.054l-0.282,1.071l0,1.328l0,1.062l0.282,1.079l0.531,1.062l0.781,0.797l0.531,1.062l1.079,0.516l1.062,0.531l1.047,0.524l1.07,0.281l1.352,0l35.094,0l1.328,0l1.047,-0.281l1.062,-0.524l1.063,-0.531l1.078,-0.516l0.812,-1.062l0.531,-0.797l0.532,-1.062l0.25,-1.079l0,-1.062l0,-1.328l-0.25,-1.071z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M276.281,376l-0.797,-1.329l-1.047,-1.062l-1.328,-1.063l-1.609,-0.804l-1.594,-0.789l-1.594,-0.266l-1.859,-0.273l-1.859,0.273l-1.875,0.266l-1.594,0.789l-1.328,0.804l-1.328,1.063l-1.063,1.062l-1.062,1.329l-0.532,1.593l-0.531,1.594l-0.266,1.594l0.266,1.601l0.531,1.602l0.532,1.594l1.062,1.328l1.063,1.062l1.328,1.055l1.328,0.805l1.594,0.797l1.875,0.281l1.859,0.25l-0.281,-0.25l2.14,0l1.594,-0.281l1.594,-0.797l1.609,-0.805l1.328,-1.055l1.047,-1.062l0.797,-1.328l0.813,-1.594l0.265,-1.602l0.266,-1.601l-0.266,-1.594l-0.265,-1.594z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M393.015,376l0.797,-1.329l1.071,-1.062l1.328,-1.063l1.601,-0.804l1.594,-0.789l1.594,-0.266l1.859,-0.273l1.86,0.273l1.875,0.266l1.578,0.789l1.328,0.804l1.344,1.063l1.062,1.062l1.063,1.329l0.531,1.593l0.531,1.594l0.266,1.594l-0.266,1.601l-0.531,1.602l-0.531,1.594l-1.063,1.328l-1.062,1.062l-1.344,1.055l-1.328,0.805l-1.578,0.797l-1.875,0.281l-1.86,0.25l0,-0.25l-1.859,0l-1.594,-0.281l-1.594,-0.797l-1.601,-0.805l-1.328,-1.055l-1.071,-1.062l-0.797,-1.328l-0.789,-1.594l-0.273,-1.602l-0.266,-1.601l0.266,-1.594l0.273,-1.594z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M310.328,309.265l0.531,-0.812l0.781,-0.782l0.813,-0.812l1.062,-0.531l1.063,-0.532l1.32,-0.265l1.352,0l34.812,0l1.36,0l1.297,0.265l1.062,0.532l1.063,0.531l0.828,0.812l0.781,0.782l0.531,0.812l0.531,1.063l0.282,1.054l0.25,1.313l-0.25,1.07l-0.282,1.063l-0.531,1.078l-0.531,1.062l-0.781,0.797l-0.828,0.547l-1.063,0.773l-1.062,0.282l-1.297,0.258l-1.36,0.281l-34.812,0l-0.281,-0.281l-1.071,0l-1.32,-0.258l-1.063,-0.282l-1.062,-0.773l-0.813,-0.547l-0.781,-0.797l-0.531,-1.062l-0.531,-1.078l-0.282,-1.063l-0.25,-1.07l0.25,-1.313l0.282,-1.054z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M339.828,441.14l1.344,0.813l1.312,1.062l1.344,1.054l0.797,1.328l0.812,1.603l0.25,1.593l0.282,1.594l-0.282,1.594l-0.25,1.586l-0.812,1.601l-0.797,1.344l-1.344,1.055l-1.312,1.07l-1.344,0.781l-1.578,0.804l-1.86,0.274l-1.875,0.282l-1.593,-0.282l-1.86,-0.274l-1.593,-0.804l-1.344,-0.781l-1.313,-1.07l-1.343,-1.055l-0.782,-1.344l-0.812,-1.601l-0.25,-1.586l-0.281,-1.594l0.281,-1.594l0.25,-1.593l0.812,-1.603l0.782,-1.328l1.343,-1.054l1.313,-1.062l1.344,-0.813l1.593,-0.789l1.86,-0.281l1.593,-0.242l1.875,0.242l1.86,0.281z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M310.328,446.468l0.531,0.813l0.781,0.773l0.813,0.804l1.062,0.539l1.063,0.54l1.32,0.25l1.352,0l34.812,0l1.36,0l1.297,-0.25l1.062,-0.54l1.063,-0.539l0.828,-0.804l0.781,-0.773l0.531,-0.813l0.531,-1.071l0.282,-1.054l0.25,-1.328l-0.25,-1.062l-0.282,-1.063l-0.531,-1.062l-0.531,-1.063l-0.781,-0.812l-0.828,-0.539l-1.063,-0.774l-1.062,-0.289l-1.297,-0.242l-1.36,-0.281l-34.812,0l-0.281,0l-1.071,0.281l-1.32,0.242l-1.063,0.289l-1.062,0.774l-0.813,0.539l-0.781,0.812l-0.531,1.063l-0.531,1.062l-0.282,1.063l-0.25,1.062l0.25,1.328l0.282,1.054z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M270.703,358.453l-1.063,0.531l-1.062,0.812l-0.797,0.782l-0.531,0.804l-0.531,1.071l-0.266,1.062l0,1.313l0,31.914l0,1.328l0.266,1.07l0.531,1.063l0.531,0.797l0.797,0.796l1.062,0.797l1.063,0.532l1.062,0.531l1.063,0.265l1.328,0l1.328,0l1.07,-0.265l1.329,-0.531l0.804,-0.532l1.063,-0.797l0.789,-0.796l0.539,-0.797l0.531,-1.063l0.266,-1.07l0,-1.328l0,-31.914l0,-0.25l0,-1.063l-0.266,-1.062l-0.531,-1.071l-0.539,-0.804l-0.789,-0.782l-1.063,-0.812l-0.804,-0.531l-1.329,-0.532l-1.07,-0.25l-1.328,0l-1.328,0l-1.063,0.25z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M398.609,358.453l1.063,0.531l1.062,0.812l0.797,0.782l0.531,0.804l0.532,1.071l0.265,1.062l0,1.313l0,31.914l0,1.328l-0.265,1.07l-0.532,1.063l-0.531,0.797l-0.797,0.796l-1.062,0.797l-1.063,0.532l-1.07,0.531l-1.07,0.265l-1.329,0l-1.328,0l-1.047,-0.265l-1.328,-0.531l-0.812,-0.532l-1.063,-0.797l-0.797,-0.796l-0.531,-0.797l-0.531,-1.063l-0.266,-1.07l0,-1.328l0,-31.914l-0.265,-0.25l0.265,-1.063l0.266,-1.062l0.531,-1.071l0.531,-0.804l0.797,-0.782l1.063,-0.812l0.812,-0.531l1.328,-0.532l1.047,-0.25l1.328,0l1.329,0l1.07,0.25z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M51.058,389.828l-1.066,-0.532l-1.336,-0.796l-1.055,-0.805l-1.07,-1.055l-0.785,-0.531l-0.543,-0.531l-0.258,-0.266l-1.609,-0.531l-1.582,0l-1.328,0.258l-1.063,0.539l-1.34,0.789l-1.062,0.804l-0.801,0.797l-1.047,1.055l-0.816,0.805l-0.793,0.523l0,-0.266l0,-0.257l0,-0.266l0.273,-0.539l0.258,-0.523l0,-0.805l0.262,-0.524l0.273,-0.531l0.262,-0.531l0.531,-0.531l1.598,-2.407l1.863,-1.578l1.855,-1.078l2.129,-0.515l2.137,0l2.121,0.265l1.871,0.25l1.582,0.539l1.328,0.539l0.801,0.25l0.274,0.539l0.527,0.789l0.801,0.813l0.793,0.797l0.797,1.062l0.273,0.797l0.258,1.055l-0.258,0.805l-0.809,0.796l-1.589,0.789l-0.793,0.266l-0.809,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M142,419.875l-0.797,-1.329l-1.328,-1.062l-1.336,-1.07l-1.328,-1.063l-1.594,-1.055l-1.328,-1.328l-1.336,-1.601l0,-0.258l-0.266,-0.531l0,-0.266l-0.254,-0.273l0,-0.539l0,-0.25l0.254,-0.54l0.266,-0.257l0,-0.532l0.535,-0.554l1.602,0.289l1.855,0.515l1.863,0.813l1.602,0.797l1.59,1.062l1.601,1.063l1.328,1.062l1.055,1.055l0.801,0.805l0.535,0.523l0,1.336l0,1.328l0,1.055l0,1.328l-0.269,1.07l-0.532,1.344l-0.535,1.047l-0.789,1.078l-1.074,1.063l-1.328,0.781l0.273,-2.922l-0.273,-2.117z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M40.679,417.484l-1.316,1.586l-1.066,1.617l-0.801,1.844l-0.535,1.594l-0.52,1.585l-0.281,1.618l-0.262,1.054l-0.785,-1.601l-0.816,-1.313l-0.52,-1.343l-0.527,-1.313l-0.282,-1.344l-0.253,-1.07l0.253,-1.328l0.282,-1.328l0.785,-1.328l1.078,-1.329l1.047,-1.062l1.066,-1.055l0.797,-0.797l0.801,-0.531l0.793,-0.531l0.809,-0.531l1.054,-0.539l1.328,-0.258l1.328,-0.281l1.61,0l0,-0.25l1.855,0l1.055,0l0.281,0.25l0,0.281l-0.543,0.531l-0.527,0.531l-0.539,0.797l-0.527,0.797l0,1.063l0.265,1.328l-2.656,0.523l-2.129,0.805z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M69.664,458.437l-1.328,-0.531l-1.582,-0.539l-1.328,-0.789l-1.336,-0.556l-1.075,-0.772l-0.789,-0.813l-0.539,-0.781l0,-0.289l-0.254,-0.524l0,-0.789l0,-0.804l0,-1.063l0.254,-1.062l0.539,-0.782l0.535,-0.812l1.055,-0.531l1.328,-0.274l0.282,-0.258l0.519,0l0.266,0l0.269,0l0.274,0l0.254,0l0.265,0l0.274,0.258l0.261,0l-0.261,0l0.535,0.555l0,1.062l0,1.054l0.254,1.313l0,1.344l0.273,1.602l0.801,1.594l0.793,1.328l1.328,1.328l1.863,1.312l-1.066,0l-1.328,-0.235z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M108.488,402.054l-0.262,0.539l0,0.266l0,0.523l0.262,0.274l0.273,0.265l0.528,0.266l0.527,0.266l2.938,-0.797l2.918,-0.274l2.929,-0.257l2.664,0l2.657,0l2.918,0.257l2.656,0.539l2.664,0.532l2.93,0.531l2.664,0.531l0.519,1.078l0.266,0.774l0.269,0.804l-0.269,0.813l0,1.055l-0.531,0.804l-0.254,0.797l-0.282,0.797l-0.261,1.063l-0.266,0.796l-1.594,2.118l-1.863,1.328l-2.125,0.539l-2.129,0l-2.394,-0.539l-2.391,-0.789l-2.391,-1.063l-2.121,-1.062l-2.406,-0.532l-2.121,-0.531l-11.969,-0.797l-0.273,-0.273l-0.262,0l-0.527,0l-0.793,0.273l-0.543,0.266l-0.785,0.266l-0.536,0.265l-0.539,0l-0.261,0.258l-3.985,2.391l-3.465,2.398l-3.191,2.93l-2.918,2.929l-2.664,2.922l-2.129,3.446l-2.129,3.461l-1.848,3.734l-1.609,3.719l-1.855,3.984l-0.801,0.789l-1.055,0.805l-1.328,0.523l-1.336,0.539l-1.601,0.265l-1.329,0.267l-1.589,0l-1.329,0l-1.328,-0.267l-1.07,-0.515l-1.328,-3.203l0,-3.187l0.527,-2.938l1.063,-2.664l1.601,-2.367l1.864,-2.141l2.121,-2.133l1.871,-1.867l1.863,-1.578l1.328,-1.594l7.703,-7.187l-1.59,-1.07l-1.335,-0.524l-1.329,-0.265l-1.328,0l-1.328,0.265l-1.601,0.524l-1.329,0.273l-1.589,0.531l-1.602,0.266l-1.855,0l-1.075,0.531l-1.062,0.266l-1.063,0.531l-1.328,0.258l-1.066,0.273l-1.055,0.282l-1.328,0.25l-1.336,0l-1.062,0.265l-1.329,0l-0.273,0l-0.266,0l-0.527,-0.265l-0.801,0l-0.797,-0.25l-0.527,0l-0.539,-0.282l-0.527,0l-0.528,-0.273l-0.535,0l-0.535,-0.258l-0.258,-0.531l-0.273,-0.266l0,-0.273l-0.254,-0.258l0,-0.266l0,-0.265l-0.281,-0.539l-0.262,-0.789l-0.531,-1.063l-0.536,-1.062l-0.527,-1.063l-0.527,-1.328l-0.274,-1.07l0.274,-1.055l0.254,-1.063l0.8,-0.812l3.731,-0.266l3.191,0.266l2.918,0.258l2.664,0.804l2.657,0.813l2.39,0.516l2.403,0.539l2.39,0l2.395,-0.258l2.398,-0.797l0.258,-0.531l-0.258,-0.532l-0.273,-0.265l-0.535,-0.289l-0.52,-0.258l-0.535,0l-0.535,-0.266l-0.539,0l-0.254,0l-0.274,0l-1.863,-1.328l-2.129,-1.328l-1.863,-1.328l-2.121,-1.328l-1.864,-1.594l-2.128,-1.594l-1.864,-1.601l-1.59,-1.867l-1.601,-1.86l-1.328,-2.109l0.265,-1.078l0.543,-1.063l0.793,-0.797l0.789,-0.797l1.075,-0.804l0.793,-0.789l1.062,-0.797l1.063,-0.797l1.066,-0.531l0.801,-0.797l5.054,1.054l1.856,2.399l1.328,2.391l1.602,2.125l1.328,2.39l1.855,1.86l1.871,2.14l2.121,1.594l2.391,1.328l3.191,0.789l3.731,0.539l1.328,0.266l1.324,-0.266l1.328,0l1.075,-0.539l1.054,-0.258l1.067,-0.531l1.062,-0.797l0.809,-0.531l1.054,-0.539l1.067,-0.789l44.133,-46.813l0.8,0l1.329,0l1.066,0l1.07,0.274l1.328,0.258l1.055,0.281l0.801,0.531l0.808,0.797l0.52,1.062l0.266,1.329l-0.266,0l-3.457,5.039l-3.711,4.789l-4,4.523l-4.258,4.258l-4.246,4.516l-4.265,4.257l-3.981,4.258l-3.992,4.516l-3.723,4.531l-3.457,4.781l-0.262,0.532l-0.273,0.531z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M142.273,99.183l-4.801,0.266l-4.785,0l-4.781,0.261l-4.793,0l-4.512,-0.261l-4.265,-1.067l-3.985,-1.855l-0.797,-0.801l-0.793,-0.793l-0.273,-1.328l-0.527,-1.078l0,-1.063l-0.262,-1.328l0,-1.328l0.262,-1.066l0.265,-1.055l0.262,-1.062l-1.055,0.535l-0.808,0.265l-0.793,0.528l-0.797,0.527l-0.801,0.816l-0.527,0.774l-0.539,0.555l-0.789,0.773l-0.539,0.801l-0.528,0.816l-0.269,1.055l-0.266,1.328l-0.266,1.328l0,1.066l0.266,1.329l0.266,1.328l0.269,1.062l0.801,1.328l0.527,1.063l0.801,0.793l2.391,1.601l2.656,0.789l2.664,0.555l2.93,0l2.918,0l2.937,-0.273l2.91,-0.282l2.93,-0.261l2.664,-0.528l2.664,0l2.383,-0.273l2.395,0l2.39,-0.262l2.391,0l2.402,0l2.391,0l2.136,0.262l2.122,0l1.589,0.273l1.594,0.528l2.125,0.543l2.664,1.047l2.656,1.066l2.665,1.328l2.402,1.063l2.383,1.082l1.863,0.789l1.32,0.8l1.075,0.266l-2.657,-2.394l-2.402,-1.872l-2.383,-1.855l-2.137,-1.602l-1.855,-1.324l-1.602,-1.328l-1.062,-0.793l-1.063,-0.535l-0.527,-0.266l-0.266,-0.265l-4.527,-1.328l-4.519,-0.797z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M229.48,100.511l0.817,-0.527l0.785,-0.801l0.801,-0.527l0.789,-0.801l0.808,-0.527l0.535,-0.801l0.524,-0.801l0.262,-1.59l-1.055,0.535l-1.32,0.262l-1.063,0.266l-1.348,-0.266l-1.062,-0.262l-1.313,-0.273l-1.07,-0.527l-1.344,-0.528l-1.066,-0.816l-1.055,-0.512l-0.535,-0.273l-0.258,-0.278l-0.277,-0.265l-0.258,-0.246l-0.273,-0.266l0,-0.289l-0.254,-0.262l0,-0.511l0,-0.282l0,-0.273l1.062,-0.262l0.793,-0.512l1.055,-0.554l0.809,-0.789l0.8,-0.793l0.801,-0.801l0.793,-1.063l0.52,-0.8l0.824,-0.801l0.519,-0.528l0,-0.265l-0.273,0l-0.527,0.265l-0.786,0l-0.824,0l-0.781,0l-0.809,0l-0.785,0l-0.801,0l-0.535,0l-2.922,-0.535l-2.406,-1.066l-1.594,-1.328l-1.316,-1.59l-0.801,-1.863l-0.547,-1.868l-0.238,-1.589l0,-1.602l-0.281,-1.055l0,-0.273l-56.637,-0.535l-5.586,10.375l50.793,49.73l0.535,1.59l0.785,1.594l1.063,1.59l0.816,1.609l1.055,1.602l0.785,1.855l0.817,1.59l0.777,1.863l0.543,1.594l0.269,1.855l-1.871,-0.793l-1.597,-0.261l-2.121,-0.535l-1.856,-0.266l-2.129,0l-2.129,0l-2.129,0.266l-2.117,0.261l-1.883,0.801l-1.84,0.801l-11.175,7.183l-6.383,-2.39l-6.375,-0.793l-6.129,1.055l-6.113,1.863l-6.117,2.121l-5.848,2.391l-6.113,1.601l-6.383,0.793l-6.387,-1.066l-6.91,-2.918l-1.074,-0.801l-0.528,-1.055l-0.527,-1.066l-0.273,-1.063l-0.254,-1.343l0,-1.329l0.254,-1.062l0,-1.328l0.273,-1.067l0,-1.054l0.527,-1.067l0.801,-0.535l0.801,-0.527l0.535,-0.801l0.801,-0.262l1.055,-0.531l0.8,-0.535l0.793,-0.527l0.801,-0.266l0.789,-0.535l-1.328,-2.934l-1.59,-2.394l-1.863,-2.657l-2.121,-2.39l-2.137,-2.121l-2.391,-2.407l-2.394,-2.39l-2.125,-2.395l-2.395,-2.382l-1.863,-2.395l-7.969,-8.781l-8.246,-8.77l-8.511,-9.312l-8.243,-9.293l-8.511,-9.586l-8.239,-9.567l-8.25,-9.304l-7.695,-9.578l-7.184,-9.309l-6.921,-9.297l-1.063,0.789l-0.801,0.801l-0.801,1.059l-0.527,1.062l-0.527,1.07l-0.528,1.328l-0.273,1.329l-0.535,1.066l-0.266,1.063l-0.527,1.328l-1.598,7.449l-0.265,6.91l1.066,6.914l2.398,6.383l3.184,6.383l3.719,6.105l4.265,5.863l4.786,5.586l4.511,5.575l4.782,5.593l4.265,3.453l4.785,3.45l5.055,3.718l5.32,3.723l5.321,3.734l5.574,3.458l5.594,3.449l5.312,3.468l5.047,2.922l4.527,2.922l0.274,0.262l0.254,0.535l0.273,0.266l0.266,0.527l0.261,0.274l0.274,0.277l0.254,0.512l0.273,0.273l0,0.527l0,0.528l-4.793,-0.262l-6.648,-2.922l-7.711,-3.719l-8.238,-4l-9.051,-4.511l-9.039,-4.52l-9.305,-4.785l-8.504,-5.055l-8.246,-4.519l-7.176,-4.516l-5.855,-4.246l-1.067,3.449l-0.793,3.453l-0.535,3.45l0,3.722l0.274,3.453l0.527,3.473l1.336,3.449l1.855,3.192l2.395,2.672l3.191,2.656l5.321,2.918l6.383,2.922l7.429,3.191l7.985,3.449l8.25,3.207l8.511,3.184l8.231,2.656l7.722,2.406l6.911,1.86l5.847,1.328l-0.261,1.062l-6.114,1.063l-7.176,0.531l-7.718,0.535l-8.512,0l-8.516,-0.273l-8.511,-0.262l-8.504,-0.531l-7.977,-0.535l-7.437,-0.793l-6.383,-0.797l-0.539,1.863l-0.528,1.59l0,1.855l0.266,1.868l0.801,1.589l0.789,1.856l0.801,1.602l1.328,1.605l1.336,1.578l1.328,1.328l5.848,2.938l6.914,2.125l7.718,1.328l8.504,0.531l8.512,-0.266l8.504,-0.527l8.512,-1.066l7.441,-1.59l6.918,-1.602l5.32,-2.121l1.067,0l-0.793,2.395l-9.848,6.64l-9.84,6.118l-9.84,5.847l-9.578,5.067l-8.773,4.511l-7.707,3.985l-6.91,3.191l-5.313,2.672l-4,1.594l-1.855,0.789l0.527,1.601l0.809,1.329l0.785,1.589l0.797,1.328l1.066,1.329l1.063,1.343l1.328,1.328l1.328,1.067l1.336,0.793l1.594,1.062l7.972,0.801l8.25,-1.328l8.238,-2.656l8.25,-4.274l7.969,-5.312l7.985,-6.117l7.175,-6.114l6.649,-6.39l6.117,-5.844l4.785,-5.309l1.856,0l-0.262,1.575l-0.258,1.609l-0.543,1.59l-0.527,1.601l-0.801,1.329l-0.793,1.589l-0.801,1.344l-0.801,1.578l-1.062,1.328l-1.055,1.328l-10.633,14.641l-10.113,13.559l-9.039,11.976l-8.246,10.352l-7.441,9.32l-6.391,7.438l-5.051,6.125l-3.711,4.507l-2.656,2.93l-1.078,1.328l2.125,1.61l2.394,1.328l2.664,0.789l2.657,0.273l2.926,0.266l2.921,-0.266l2.926,-0.273l2.656,-0.539l2.93,-0.516l2.656,-0.547l9.313,-5.054l7.973,-6.375l7.187,-7.446l6.391,-8.523l5.574,-9.031l5.051,-9.575l4.781,-9.562l4.519,-9.313l4.266,-8.781l4.25,-7.969l4.781,-9.839l2.664,0.261l-0.527,6.121l-4.52,13.571l-4.527,13.543l-4.519,13.574l-4.524,13.555l-4.789,13.562l-5.051,13.297l-5.047,13.297l-5.32,13.031l-5.582,13.016l-5.848,13.047l1.59,0l1.864,0l1.601,0l1.594,-0.266l1.855,-0.266l1.598,-0.531l1.602,-0.281l1.589,-0.531l1.86,-0.532l1.597,-0.25l9.832,-4.25l7.711,-5.328l6.387,-6.375l4.781,-7.734l3.993,-7.969l2.929,-8.766l2.391,-8.781l2.129,-9.031l1.855,-8.781l2.395,-8.516l1.07,-6.109l1.055,-5.852l1.066,-6.101l1.063,-6.129l1.062,-5.84l1.074,-6.129l0.793,-5.84l1.063,-6.129l1.062,-5.848l1.075,-6.121l0.254,-0.261l0.265,0l0.274,-0.274l0.535,-0.262l0.254,0l0.273,0l0.266,0l0.527,0l0.27,0l0.273,0l0.52,8.52l0.265,7.703l0,7.449l-0.265,7.192l-0.262,6.64l-0.531,6.903l-0.536,7.183l-0.8,7.18l-0.528,7.719l-0.8,8.234l-1.856,18.883l5.051,-1.867l4.519,-2.391l3.993,-2.922l3.984,-3.453l3.461,-3.453l2.93,-3.984l2.664,-4.274l2.129,-4.508l1.839,-4.523l1.344,-4.523l0.535,-6.911l0.528,-5.863l0,-5.574l-0.282,-4.785l-0.246,-4.778l-0.289,-4.535l-0.527,-5.039l-0.527,-5.328l-0.536,-5.848l-0.25,-6.906l0,-0.551l0.25,-0.261l0.536,-0.532l0.527,-0.535l0.816,-0.262l0.778,-0.265l0.543,-0.266l0.8,-0.261l0.536,-0.274l0.246,-0.262l1.875,0l2.125,5.575l1.609,5.066l1.586,5.309l1.316,4.785l1.348,5.062l1.062,4.778l1.313,5.066l1.344,5.047l1.32,5.312l1.871,5.864l-6.375,9.297l-7.723,10.906l-8.23,11.969l-9.32,12.226l-9.305,12.774l-9.312,12.765l-9.04,12.235l-8.246,11.421l-7.441,10.391l-6.383,8.5l30.313,-2.656l0.797,3.187l0.539,3.711l0.535,3.985l0.793,4.257l0.527,4.25l0.543,4.524l0.785,4.258l0.801,4l1.07,3.711l1.055,3.195l1.066,-2.656l3.727,-7.453l4.793,-9.313l5.312,-10.359l5.848,-11.172l6.102,-11.703l6.394,-11.703l6.117,-11.422l6.114,-10.641l5.593,-9.562l5.321,-7.985l0,0.266l3.445,25.508l2.938,22.632l1.312,19.938l0,17.805l-2.129,15.429l-4.496,13.828l-7.457,12.235l-10.641,11.148l-14.093,9.867l-18.336,9.032l-1.336,1.328l-1.864,0.788l-1.867,1.071l-2.125,0.531l-2.394,0.532l-2.125,0.265l-1.867,0l-1.856,0l-1.336,-0.531l-1.055,-0.54l-1.601,-1.601l-1.328,-1.593l-1.336,-1.313l-1.328,-1.328l-1.063,-1.062l-1.328,-1.329l-1.594,-1.062l-1.336,-1.07l-1.855,-1.055l-1.863,-1.063l-2.391,-0.554l-2.129,-0.524l-2.129,0l-2.129,0l-2.125,0.266l-1.863,0.258l-1.859,0.554l-1.59,0.516l-1.328,0.781l-1.075,0.547l-1.582,1.344l-1.336,1.305l-1.328,1.351l-0.808,1.305l-0.793,1.601l-0.535,1.61l-0.262,1.577l0,1.868l0.262,1.867l0.535,2.117l0.273,0.821l0.52,0.781l0.535,0.813l0.801,1.062l0.8,0.781l0.528,0.813l0.808,0.797l0.52,0.507l0.266,0.282l0.269,0.273l-0.269,-0.797l0,-0.821l0,-0.772l0,-0.813l0,-0.531l0.269,-0.781l0.274,-0.813l0.253,-0.531l0.532,-0.781l0.543,-0.813l0.254,-0.25l0.8,-0.54l0.528,-0.539l0.539,-0.265l0.797,-0.539l0.531,-0.258l0.797,0l0.801,-0.265l0.8,0.265l0.793,0l1.328,0l1.336,0.258l1.055,0.289l1.336,0.515l1.062,0.798l1.075,0.531l0.785,1.063l0.797,1.062l0.539,1.055l0.527,1.343l0.801,1.602l1.07,1.594l1.055,1.077l1.328,1.039l1.602,0.806l1.336,0.523l1.582,0.289l1.601,0.25l1.594,0.266l1.328,0l1.863,0.258l1.864,0l1.855,0l1.602,0l1.589,-0.258l1.594,-0.516l1.598,-0.555l1.328,-0.507l1.609,-0.813l1.848,-0.782l10.113,-4.273l9.313,-4.773l8.504,-5.079l7.695,-5.562l6.918,-5.859l6.129,-6.383l5.566,-6.656l4.793,-6.898l4.258,-7.172l3.727,-7.719l0.519,0l0.289,0.266l0.258,0.265l0,0.531l0,0.797l0,0.532l-0.258,0.796l0,0.532l0.258,0.531l0,0.523l-0.547,4.789l-0.781,4.266l-1.066,4.516l-1.063,4l-1.336,4.25l-1.601,3.984l-1.848,3.734l-2.121,3.969l-2.406,3.719l-2.383,3.734l-0.539,1.328l0,1.329l0.265,1.343l0.52,1.054l0.824,1.071l1.047,1.063l1.328,1.062l1.066,0.774l1.344,0.82l1.055,0.781l1.848,1.344l1.601,1.328l1.336,1.054l1.32,1.071l1.344,1.063l1.313,1.328l1.07,1.062l1.594,1.328l1.336,1.594l1.863,1.875l0,0.25l0.269,0l0,-0.25l0.25,0l0,-0.289l0.274,0l0.262,0l0,-358.43l-0.536,-0.554l-0.785,-0.774l-0.543,-0.816l-0.801,-0.512l-0.773,-0.816l-0.555,-0.801l-0.793,-0.527l-0.789,-0.801l-0.8,-0.793l-1.063,-0.535l0.797,-0.793l0.793,-0.535z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M193.312,11.968l-0.781,-1.066l-1.066,-1.063l-1.344,-1.062l-1.32,-0.539l-1.336,-0.528l-1.598,-0.535l-1.586,0l-1.855,0l-1.602,0.535l-1.344,0.528l-1.312,0.539l-1.344,1.062l-1.055,1.063l-0.785,1.066l-0.543,1.328l-0.519,1.329l0,1.328l0,1.589l0.519,1.329l0.543,1.07l0.785,1.328l1.055,1.066l1.344,0.801l1.312,0.797l1.344,0.524l1.602,0.269l1.855,0l-0.266,0l1.852,0l1.598,-0.269l1.336,-0.524l1.32,-0.797l1.344,-0.801l1.066,-1.066l0.781,-1.328l0.528,-1.07l0.539,-1.329l0,-1.589l0,-1.328l-0.539,-1.329z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M149.441,45.191l-0.265,-0.52l-0.528,-0.535l-0.535,-0.273l-0.793,-0.52l-0.535,-0.273l-0.801,0l-0.789,0l-0.801,0l-0.539,0l-0.789,0.273l-0.535,0.52l-0.801,0.273l-0.265,0.535l-0.52,0.52l-0.281,0.543l-0.254,0.785l0,0.543l0,0.793l0.254,0.535l0.281,0.535l0.52,0.532l0.265,0.535l0.801,0.527l0.535,0.266l0.789,0.269l0.539,0l0.801,0l0.789,0l0.801,0l0.535,-0.269l0.793,-0.266l0.535,-0.527l0.528,-0.535l0.265,-0.532l0.274,-0.535l0.261,-0.535l0,-0.793l0,-0.543l-0.261,-0.785z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M153.968,38.023l-0.527,-0.535l-0.543,-0.528l-0.527,-0.265l-0.531,-0.535l-0.797,-0.266l-0.539,0l-0.789,0l-0.793,0l-0.809,0l-0.793,0.266l-0.535,0.535l-0.527,0.265l-0.536,0.528l-0.265,0.535l-0.262,0.519l-0.266,0.809l0,0.52l0,0.808l0.266,0.528l0.262,0.535l0.265,0.539l0.536,0.527l0.527,0.535l0.535,0.262l0.793,0.258l0.809,0l0.793,0.273l-0.274,-0.273l1.063,0l0.539,0l0.797,-0.258l0.531,-0.262l0.527,-0.535l0.543,-0.527l0.527,-0.539l0.266,-0.535l0,-0.528l0.262,-0.808l-0.262,-0.52l0,-0.809z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M160.883,32.441l-0.266,-0.539l-0.535,-0.527l-0.528,-0.536l-0.539,-0.265l-0.797,-0.262l-0.785,0l-0.808,-0.273l-0.801,0.273l-0.527,0l-0.801,0.262l-0.528,0.265l-0.527,0.536l-0.543,0.527l-0.527,0.539l-0.258,0.527l0,0.535l-0.273,0.793l0.273,0.536l0,0.8l0.258,0.528l0.527,0.535l0.543,0.519l0.527,0.274l0.528,0.535l0.801,0l0.527,0.266l0.801,0l0.808,0l0.785,-0.266l0.797,0l0.539,-0.535l0.528,-0.274l0.535,-0.519l0.266,-0.535l0.261,-0.528l0.274,-0.8l0,-0.536l0,-0.793l-0.274,-0.535z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M169.656,28.449l-0.262,-0.532l-0.547,-0.261l-0.519,-0.528l-0.535,-0.281l-0.801,-0.258l-0.789,-0.269l-0.793,0l-0.801,0l-0.527,0.269l-0.809,0.258l-0.519,0.281l-0.551,0.528l-0.524,0.261l-0.535,0.532l-0.261,0.797l0,0.531l-0.266,0.535l0.266,0.793l0,0.535l0.261,0.801l0.535,0.527l0.524,0.262l0.551,0.539l0.519,0.262l0.809,0.265l0.527,0.27l0.801,0l0,-0.27l0.793,0.27l0.789,-0.27l0.801,-0.265l0.535,-0.262l0.519,-0.539l0.547,-0.262l0.262,-0.527l0.273,-0.801l0.254,-0.535l0,-0.793l0,-0.535l-0.254,-0.531z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M188.519,26.062l-0.519,-0.543l-0.535,-0.519l-0.528,-0.274l-0.527,-0.535l-0.801,0l-0.519,-0.258l-0.809,0l-0.801,0l-0.808,0.258l-0.528,0l-0.781,0.535l-0.539,0.274l-0.527,0.519l-0.282,0.543l-0.246,0.527l-0.289,0.793l0,0.535l0,0.793l0.289,0.536l0.246,0.531l0.282,0.535l0.527,0.527l0.539,0.536l0.781,0.265l0.528,0.262l0.808,0l0.801,0.265l-0.266,-0.265l1.075,0l0.777,0l0.543,-0.262l0.801,-0.265l0.535,-0.536l0.535,-0.527l0.238,-0.535l0.282,-0.531l0.265,-0.536l0,-0.793l-0.265,-0.535l0,-0.793z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M198.105,26.847l-0.265,-0.527l-0.528,-0.528l-0.527,-0.531l-0.817,-0.261l-0.527,-0.274l-0.785,0l-0.816,-0.269l-0.774,0.269l-0.816,0l-0.528,0.274l-0.785,0.261l-0.527,0.531l-0.289,0.528l-0.528,0.527l-0.25,0.535l-0.277,0.535l0,0.793l0,0.536l0.277,0.793l0.25,0.535l0.528,0.531l0.289,0.535l0.527,0.262l0.785,0.539l0.528,0l0.816,0.262l0.774,0l0.816,0l0.785,-0.262l0.527,0l0.817,-0.539l0.527,-0.262l0.528,-0.535l0.265,-0.531l0.274,-0.535l0.261,-0.793l0,-0.536l0,-0.793l-0.261,-0.535z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M178.953,26.589l-0.246,-0.527l-0.539,-0.543l-0.528,-0.258l-0.527,-0.535l-0.816,0l-0.793,-0.269l-0.797,0l-0.785,0l-0.543,0.269l-0.809,0l-0.519,0.535l-0.547,0.258l-0.528,0.543l-0.535,0.527l-0.258,0.539l0,0.789l-0.254,0.532l0.254,0.797l0,0.531l0.258,0.535l0.535,0.527l0.528,0.536l0.547,0.527l0.519,0.265l0.809,0.274l0.543,0l0.785,0.262l0,-0.262l0.797,0l0.793,0l0.816,-0.274l0.527,-0.265l0.528,-0.527l0.539,-0.536l0.246,-0.527l0.281,-0.535l0.246,-0.531l0,-0.797l0,-0.532l-0.246,-0.789z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M207.426,28.984l-0.536,-0.535l-0.281,-0.532l-0.519,-0.261l-0.793,-0.528l-0.528,-0.281l-0.816,0l-0.793,0l-0.797,0l-0.793,0l-0.535,0.281l-0.809,0.528l-0.519,0.261l-0.547,0.532l-0.254,0.535l-0.266,0.527l-0.261,0.528l0,0.8l0,0.536l0.261,0.792l0.266,0.536l0.254,0.527l0.547,0.539l0.519,0.262l0.809,0.535l0.535,0.266l0.793,0l0.797,0l0.793,0l0.816,0l0.528,-0.266l0.793,-0.535l0.519,-0.262l0.281,-0.539l0.536,-0.527l0.246,-0.536l0.281,-0.792l0,-0.536l0,-0.8l-0.281,-0.528z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M215.937,32.703l-0.527,-0.536l-0.543,-0.527l-0.539,-0.265l-0.527,-0.27l-0.801,-0.266l-0.543,-0.265l-0.785,0l-0.805,0l-0.777,0.265l-0.825,0.266l-0.519,0.27l-0.543,0.265l-0.531,0.527l-0.246,0.536l-0.282,0.527l-0.254,0.801l0,0.535l0,0.793l0.254,0.535l0.282,0.531l0.246,0.535l0.531,0.528l0.543,0.535l0.519,0.266l0.825,0.253l0.777,0.274l0.805,0l-0.278,-0.274l1.063,0.274l0.543,-0.274l0.801,-0.253l0.527,-0.266l0.539,-0.535l0.543,-0.528l0.527,-0.535l0.246,-0.531l0,-0.535l0.274,-0.793l-0.274,-0.535l0,-0.801z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M222.84,38.289l-0.528,-0.528l-0.535,-0.273l-0.527,-0.528l-0.528,-0.265l-0.816,-0.27l-0.527,-0.265l-0.785,0l-0.817,0l-0.777,0.265l-0.817,0.27l-0.527,0.265l-0.535,0.528l-0.527,0.273l-0.266,0.528l-0.262,0.796l-0.265,0.532l0,0.797l0,0.527l0.265,0.539l0.262,0.801l0.266,0.527l0.527,0.262l0.535,0.535l0.527,0.258l0.817,0.273l0.777,0.27l0.817,0l-0.282,0l1.067,0l0.527,-0.27l0.816,-0.273l0.528,-0.258l0.527,-0.535l0.535,-0.262l0.528,-0.527l0.265,-0.801l0,-0.539l0.258,-0.527l-0.258,-0.797l0,-0.532z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M226.57,45.734l-0.273,-0.543l-0.528,-0.52l-0.543,-0.265l-0.785,-0.543l-0.535,-0.258l-0.801,0l-0.793,0l-0.808,0l-0.535,0l-0.786,0.258l-0.543,0.543l-0.519,0.265l-0.527,0.52l-0.528,0.543l-0.289,0.527l-0.258,0.539l0,0.789l0,0.539l0.258,0.797l0.289,0.532l0.528,0.535l0.527,0.527l0.519,0.266l0.543,0.535l0.786,0.262l0.535,0l0.808,0l0.793,0l0.801,0l0.535,-0.262l0.785,-0.535l0.543,-0.266l0.528,-0.527l0.273,-0.535l0.246,-0.532l0.289,-0.797l0,-0.539l0,-0.789l-0.289,-0.539z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M218.312,51.582l0,0.265l-0.793,2.129l0,0.535l-0.269,0.266l-0.25,0.527l-0.278,0.27l-0.539,0.265l-0.246,0.266l-0.527,0.262l-0.543,0l-0.539,0.273l-0.527,0l-0.52,0l-0.535,-0.273l-0.535,-0.262l-0.539,-0.266l-0.528,-0.265l-0.277,-0.27l-0.539,-0.527l-0.238,-0.531l0,-0.536l0,-0.535l0,-0.265l0,-0.262l0,-0.266l0,-0.261l0.238,0l0,-0.274l0,-0.265l0.281,0l0,-0.262l0.535,-1.863l-0.816,-1.868l-1.313,-1.855l-1.871,-1.598l-2.129,-1.328l-2.652,-1.328l-3.203,-1.066l-3.438,-0.797l-3.722,-0.532l-4,-0.543l-4.254,0l-4.266,0l-3.976,0.543l-3.719,0.532l-3.184,0.797l-3.191,1.066l-2.656,1.328l-2.411,1.328l-1.855,1.598l-1.055,1.855l-0.808,1.868l0.265,1.863l0.262,0.262l0,0.265l0.281,0.274l0,0.261l0.254,0.266l0,0.262l0,0.265l0,0.535l-0.254,0.536l-0.281,0.531l-0.262,0.527l-0.265,0.27l-0.528,0.265l-0.535,0.266l-0.539,0.262l-0.527,0.273l-0.797,0l-0.531,0l-0.535,-0.273l-0.52,0l-0.273,-0.262l-0.536,-0.266l-0.261,-0.265l-0.266,-0.27l-0.527,-0.527l0,-0.266l-0.274,-0.535l-0.535,-2.129l0,-0.265l-0.265,-0.262l0,-0.266l0,-0.269l0.539,-2.93l1.328,-2.922l2.125,-2.652l2.656,-2.664l3.457,-2.129l3.992,-1.856l4.52,-1.601l5.054,-1.063l5.321,-0.801l5.578,-0.265l0.269,0l0.266,0l-0.266,0l5.578,0.265l5.313,0.801l4.801,1.063l4.519,1.601l3.977,1.856l3.469,2.129l2.922,2.664l2.128,2.652l1.055,2.922l0.535,2.93l0,0.269l0,0.266z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M218.594,58.23l-0.282,-0.262l-0.535,-0.535l-0.527,-0.266l-0.528,-0.265l-0.785,-0.262l-0.527,0l-0.816,-0.273l-59.825,0l-0.801,0.273l-0.527,0l-0.808,0.262l-0.52,0.265l-0.543,0.266l-0.266,0.535l-0.527,0.262l-0.273,0.539l0,0.527l-0.254,0.536l0.254,0.527l0,0.535l0.273,0.531l0.527,0.528l0.266,0.261l0.543,0.536l0.52,0.273l0.808,0.266l0.527,0l0.801,0l59.825,0l0.816,0l0.527,0l0.785,-0.266l0.528,-0.273l0.527,-0.536l0.535,-0.261l0.282,-0.528l0.246,-0.531l0.281,-0.535l0,-0.527l0,-0.536l-0.281,-0.527z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M215.41,65.144l-0.289,-0.527l-0.527,-0.266l-0.266,-0.535l-0.527,-0.274l-0.801,0l-0.543,-0.253l-0.52,0l-54.785,0l-0.527,0l-0.801,0.253l-0.527,0l-0.528,0.274l-0.273,0.535l-0.528,0.266l-0.269,0.527l-0.258,0.535l-0.273,0.52l0,0.543l0,0.527l0.273,0.539l0.258,0.527l0.269,0.27l0.528,0.531l0.273,0.262l0.528,0.273l0.527,0.262l0.801,0l0.527,0.258l54.785,0l-0.265,-0.258l0.785,0l0.543,0l0.801,-0.262l0.527,-0.273l0.266,-0.262l0.527,-0.531l0.289,-0.27l0.246,-0.527l0.281,-0.539l0,-0.527l0,-0.543l-0.281,-0.52z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M180.015,38.023l0.532,0.519l0.543,0.543l0.519,0.266l0.535,0.266l0.809,0.254l0.527,0.281l0.801,0l0.809,0l0.777,-0.281l0.543,-0.254l0.801,-0.266l0.535,-0.266l0.535,-0.543l0.238,-0.519l0.282,-0.535l0.265,-0.793l0,-0.535l0,-0.801l-0.265,-0.527l-0.282,-0.536l-0.238,-0.527l-0.535,-0.539l-0.535,-0.527l-0.801,-0.262l-0.543,-0.274l-0.777,0l-0.809,-0.265l-0.266,0l-0.269,0l-0.535,0.265l-0.539,0l-0.782,0.274l-0.527,0.527l-0.539,0.262l-0.527,0.539l-0.282,0.527l-0.246,0.536l0,0.527l-0.289,0.801l0.289,0.535l0,0.793z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M188.801,42.281l-0.52,-0.539l-0.535,-0.535l-0.535,-0.266l-0.539,-0.262l-0.805,-0.265l-0.524,-0.262l-0.796,0l-0.801,0l-0.793,0.262l-0.809,0.265l-0.535,0.262l-0.519,0.266l-0.543,0.535l-0.25,0.539l-0.282,0.527l-0.246,0.797l0,0.531l0,0.797l0.246,0.531l0.282,0.536l0.25,0.519l0.543,0.543l0.519,0.527l0.535,0.266l0.809,0.273l0.793,0l0.801,0.262l-0.266,-0.262l1.062,0l0.524,0l0.805,-0.273l0.539,-0.266l0.535,-0.527l0.535,-0.543l0.52,-0.519l0.265,-0.536l0,-0.531l0.277,-0.797l-0.277,-0.531l0,-0.797z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M188.281,50.519l-0.281,-0.527l-0.535,-0.535l-0.528,-0.274l-0.527,-0.527l-0.801,-0.266l-0.808,0l-0.52,0l-0.801,0l-0.808,0l-0.782,0.266l-0.527,0.527l-0.539,0.274l-0.527,0.535l-0.282,0.527l-0.246,0.535l-0.289,0.528l0,0.8l0,0.528l0.289,0.8l0.246,0.536l0.282,0.531l0.527,0.527l0.539,0.27l0.527,0.531l0.782,0.262l0.808,0l0.801,0l-0.266,0l1.075,0l0.777,0l0.543,-0.262l0.801,-0.531l0.535,-0.27l0.254,-0.527l0.519,-0.531l0.282,-0.536l0,-0.8l0,-0.528l0,-0.8l0,-0.528z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M125.25,93.343l-0.801,0.528l-0.527,0.527l-0.536,0.801l-0.273,0.801l-0.52,0.527l-0.535,0.801l-0.539,0.793l-1.062,-0.793l-1.063,-0.536l-0.793,-0.792l-0.535,-1.067l-0.793,-1.062l-0.273,-1.063l-0.254,-1.066l-0.281,-1.055l0,-1.344l0,-1.047l0.281,-1.082l0.254,-1.054l0.531,-1.063l0.535,-0.801l0.535,-1.066l0.793,-0.797l0.801,-0.801l0.789,-0.793l1.074,-0.535l1.055,-0.265l1.863,-1.063l2.137,-0.266l1.855,0l2.137,0.528l1.848,0.265l1.863,0.536l2.129,0l1.594,0l1.597,-0.801l1.594,-1.063l0.543,-1.593l1.055,-1.063l1.328,-0.535l1.602,-0.266l1.589,0l1.594,0.266l1.336,0.269l0.793,0.266l0.801,0.266l2.926,2.39l11.695,10.895l3.191,2.945l2.93,2.918l3.184,3.188l2.656,2.918l2.937,3.191l2.657,3.184l2.918,3.211l2.656,3.183l2.945,3.453l2.902,3.449l3.473,4.536l3.449,5.839l-6.105,-2.652l-6.129,-2.656l-6.109,-2.395l-6.379,-2.121l-6.664,-2.14l-6.637,-1.594l-6.649,-1.063l-6.914,-1.066l-6.91,-0.262l-7.183,0l0.543,-0.793l0.785,-0.801l0.797,-0.527l0.8,-0.816l1.067,-0.512l1.07,-0.535l0.793,-0.281l1.055,-0.52l0.808,-0.543l0.528,-0.512l1.062,0l1.074,-0.273l1.055,-0.281l1.067,-0.262l1.062,-0.266l0.793,-0.246l1.063,-0.281l1.066,0l0.797,-0.273l1.066,-0.262l0.535,0.262l1.59,0.554l2.129,0.774l2.938,0.8l2.91,0.809l3.183,1.063l2.657,0.785l2.136,0.816l1.594,0.266l0.535,0.261l-16.215,-14.093l-2.402,-1.328l-2.918,-1.067l-2.664,-1.054l-2.922,-0.536l-3.191,-0.793l-3.184,-0.535l-3.465,-0.531l-3.457,-0.262l-3.726,-0.273l-3.719,-0.262l-1.066,0l-0.797,0.262z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M188.281,80.566l-0.535,-0.262l-0.535,-0.527l-0.801,-0.274l-0.801,-0.265l-0.808,-0.262l-0.786,-0.266l-1.062,0l-1.063,0l-0.8,0.266l-0.793,0.262l-0.817,0.265l-0.773,0.274l-0.539,0.527l-0.528,0.262l-0.277,0.539l-0.25,0.527l0,0.535l0,0.528l0.25,0.535l0.277,0.531l0.528,0.535l0.539,0.262l0.773,0.266l0.817,0.273l0.793,0.262l0.8,0.266l1.063,0l0,-0.266l1.062,0.266l0.786,-0.266l0.808,-0.262l0.801,-0.273l0.801,-0.266l0.535,-0.262l0.535,-0.535l0.238,-0.531l0.282,-0.535l0,-0.528l0,-0.535l-0.282,-0.527z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M183.211,80.304l-0.258,-0.265l-0.281,-0.262l-0.528,-0.274l-0.254,-0.265l-0.527,0l-0.273,-0.262l-0.543,0l-0.532,0l-0.246,0.262l-0.535,0l-0.281,0.265l-0.527,0.274l-0.258,0.262l-0.278,0.265l0,0.262l-0.25,0.539l0,0.262l0,0.535l0.25,0.265l0,0.528l0.278,0.273l0.258,0.262l0.527,0.266l0.281,0.265l0.535,0l0.246,0l0.532,0.27l0,-0.27l0.543,0l0.273,0l0.527,0l0.254,-0.265l0.528,-0.266l0.281,-0.262l0.258,-0.273l0,-0.528l0.269,-0.265l0,-0.535l0,-0.262l-0.269,-0.539z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M186.144,77.113l-3.472,0.535l-3.192,0.527l-2.91,0.801l-2.648,0.527l-2.137,0.536l-1.856,0l-1.328,-0.262l-0.808,-1.067l0,-0.8l0.265,-0.797l0.27,-0.531l0.519,-0.536l0.547,-0.527l0.535,-0.266l0.512,-0.269l0.535,-0.266l0.809,0l0.527,-0.261l-1.871,2.656l0,0.797l0.817,0.265l1.312,0l2.137,-0.265l2.656,-0.528l2.934,-0.535l3.183,-0.527l3.457,-0.274l3.473,0.274l3.183,0.527l-3.726,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M234.922,0.078h233.984v470.047h-233.984z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M0.945,0.078h233.984v470.047h-233.984z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m148.867,341.07 l-54.578,57.102c0,0 -3.785,3.227 -12.023,2.852 -9.969,-0.445 -15.258,-10.461 -19.359,-17.258 -1.578,-0.445 -4.945,-1.117 -4.945,-1.117l-7.016,5.258c0,0 -2.16,1.906 -0.91,4.078 1.254,2.188 14.91,14.969 20.207,15.375 2.445,0.188 0.422,1.828 -0.16,2.063 -6,2 -15.777,-1.922 -15.777,-1.922 0,0 -0.727,-0.156 -6.52,-0.672 -5.793,-0.5 -4.91,3.375 -4.91,3.375 0,0 2.23,6.359 3.797,8.391 3.531,4.578 26.258,-2.852 26.258,-2.852 0,0 4.727,-0.75 6.055,1.891 -8.941,7.82 -14.992,13.539 -17.816,17.766 -4.781,7.688 -2.07,11.891 -1.047,12.625 1.887,1.57 9.473,1.806 13.129,-2.016 2.086,-2.18 4.391,-11.102 10.512,-19.328 4.574,-6.164 12.535,-12.195 17.367,-13.508 10.457,-2.813 25.746,4.789 25.746,4.789 0,0 7.469,2.898 10.758,-5.523 0.887,-2.281 1.098,-4.203 1.098,-4.203l-1.008,-2.688c0,0 -18.688,-4.461 -26.504,-1.344 -3.066,1.234 -3.402,-1.406 -2.539,-3 1.305,-2.375 5.977,-8.438 12.809,-15.844 12.762,-13.813 30.73,-32.234 31.855,-39.719 -4.186,-2.376 -4.479,-4.571 -4.479,-4.571\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m148.867,341.07 l-54.578,57.102c0,0 -3.785,3.227 -12.023,2.852 -9.969,-0.445 -15.258,-10.461 -19.359,-17.258 -1.578,-0.445 -4.945,-1.117 -4.945,-1.117l-7.016,5.258c0,0 -2.16,1.906 -0.91,4.078 1.254,2.188 14.91,14.969 20.207,15.375 2.445,0.188 0.422,1.828 -0.16,2.063 -6,2 -15.777,-1.922 -15.777,-1.922 0,0 -0.727,-0.156 -6.52,-0.672 -5.793,-0.5 -4.91,3.375 -4.91,3.375 0,0 2.23,6.359 3.797,8.391 3.531,4.578 26.258,-2.852 26.258,-2.852 0,0 4.727,-0.75 6.055,1.891 -8.941,7.82 -14.992,13.539 -17.816,17.766 -4.781,7.688 -1.957,11.625 -1.047,12.625 1.887,1.57 9.473,1.806 13.129,-2.016 2.086,-2.18 4.391,-11.102 10.512,-19.328 4.574,-6.164 12.535,-12.195 17.367,-13.508 10.457,-2.813 25.746,4.789 25.746,4.789 0,0 7.469,2.898 10.758,-5.523 0.887,-2.281 1.098,-4.203 1.098,-4.203l-1.008,-2.688c0,0 -18.688,-4.461 -26.504,-1.344 -3.066,1.234 -3.402,-1.406 -2.539,-3 1.305,-2.375 5.977,-8.438 12.809,-15.844 12.762,-13.813 30.73,-32.234 31.855,-39.719 -4.186,-2.376 -4.479,-4.571 -4.479,-4.571z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m110.48,85.679c-1.742,10.063 1.273,10.879 4.977,12.832 4.121,2.199 31.945,0.359 37.391,0.832 5.441,0.457 20.945,14.344 20.945,14.344 0,0 -12.727,-7.047 -20.137,-8.215 -10.773,-1.672 -26.855,-0.113 -37.621,1.168 -10.762,1.262 -13.434,-8.129 -13.434,-8.129 0,0 -1.617,-9.144 7.879,-12.832\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m110.48,85.679c-1.742,10.063 1.273,10.879 4.977,12.832 4.121,2.199 31.945,0.359 37.391,0.832 5.441,0.457 20.945,14.344 20.945,14.344 0,0 -12.727,-7.047 -20.137,-8.215 -10.773,-1.672 -26.855,-0.113 -37.621,1.168 -10.762,1.262 -13.434,-8.129 -13.434,-8.129 0,0 -1.617,-9.144 7.879,-12.832z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m234.801,109.296c0,0 -6.664,-6.969 -7.449,-6.922 4.504,-3.672 7.891,-5.801 7.449,-8.23 -2.504,2.145 -12.902,-0.375 -13.551,-5.066 2.734,-1.109 2.031,-0.422 7.977,-6.91 -18.168,2.238 -16.227,-12.77 -16.227,-12.77l-56.637,-0.527 -5.586,10.375 50.793,49.723c0,0 7.582,12.984 7.445,16.75 -7.75,-1.604 -12.965,-5.422 -30.84,7.457 -17.453,-5.938 -13.125,-3 -43.086,5.84 -10.082,2.984 -19.68,-3.184 -19.68,-3.184 0,0 -9.711,-10.594 5.582,-16.754 1.008,-2.16 -10.977,-14.438 -27.145,-32.016 -25.148,-27.344 -60.43,-65.758 -72.832,-85.254 -19.23,25.918 0.09,51.59 22.824,75.551 7.336,5.145 13.68,10.313 20.387,14.488 16.285,11.184 30.711,16.984 30.711,21.902 -2.223,-0.078 -3.176,-0.199 -4.785,-0.262 -3.766,-0.906 -68.008,-32.375 -79.773,-42.801 -9.48,31.504 11.734,35.473 26.184,41.816 14.453,6.328 36.91,15.063 53.59,18.281 -0.246,0.934 -0.055,0.621 -0.262,1.063 -14.625,3.594 -60.648,1.984 -76.848,-1.063 -11.512,34.039 67.855,23.039 79.766,16.477 0.77,-0.016 1.066,0 1.066,0 0,0 -0.434,1.25 -0.801,2.396 -13.855,11.604 -63.305,36.77 -73.664,40.422 14.254,43.859 78.254,-22.84 84.023,-29.781 0.945,0.031 1.086,0 1.863,0 4.77,5.438 -61.305,85.906 -71.262,97.047 40.848,28.344 75.336,-59.063 90.941,-89.344 1.977,0.375 2.664,0.262 2.664,0.262 0,0 0.168,4.656 -0.535,6.129 0.406,2.707 -34.633,103.953 -49.719,133.484 64.254,0.922 61.207,-93.523 71.527,-138.277 0.344,-0.934 1.727,-1.094 3.191,-0.797 3.52,4.84 -1.742,70.324 -4.785,93.605 49.016,-13.422 28.344,-82 30.32,-91.473 1.953,-4.359 6.906,-3.469 6.906,-3.469 0,0 15.508,47.125 14.898,51.856 -2.265,4.445 -81.375,112.492 -81.375,112.492l30.313,-2.656c0,0 5.43,38.258 7.445,39.078 27.359,-55.836 53.816,-101.531 56.387,-103.969 4.215,38.453 12.168,66.688 5.352,102.156 -6.809,35.453 -52.809,61.344 -70.242,60.047 -1.039,0.031 -2.336,-0.906 -3.992,-2.672 -12.078,-12.781 -15.605,-11.672 -21.809,-11.954 -6.199,-0.266 -15.199,3.891 -16.484,14.892 -0.73,6.266 6.117,10.906 6.117,10.906 0,0 -1.367,-6.953 4.52,-9.578 3.57,-1.578 8.93,-0.797 11.699,3.188 2.766,4 3.918,7.188 6.117,8.781 2.191,1.609 14.242,3.391 16.043,2.563 4.336,-2 52.094,-9.982 76.766,-63.983 0.688,-1.5 2.098,0.297 1.688,4.781 -0.391,4.5 -6.855,30.75 -13.391,37.219 -1.906,1.892 -5.367,8.142 -0.266,10.923 8.129,4.422 20.211,17.155 20.211,17.155l0.261,-359.393z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m159.554,99.449c-15.082,-7.41 -33.512,-6.379 -33.512,-6.379 0,0 -4.137,1.738 -4.523,5.051 -5.637,-2.969 -5.055,-8.785 -5.055,-8.785 0,0 0.449,-14.832 18.352,-9.305 2.129,0.656 7.227,-0.039 6.914,-1.863 -0.297,-1.754 4.758,-6.258 10.641,-2.391 5.879,3.871 44.688,42.262 50.52,55.309 -29.25,-13.934 -51.586,-15.688 -51.586,-15.688 0,0 -6.832,-0.438 -14.094,-0.262 4.719,-4.219 14.328,-9.203 18.352,-7.984 5.359,1.641 20.199,6.391 20.199,6.391l-16.208,-14.094z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m159.554,99.449c-15.082,-7.41 -33.512,-6.379 -33.512,-6.379 0,0 -4.137,1.738 -4.523,5.051 -5.637,-2.969 -5.055,-8.785 -5.055,-8.785 0,0 0.449,-14.832 18.352,-9.305 2.129,0.656 7.227,-0.039 6.914,-1.863 -0.297,-1.754 4.758,-6.258 10.641,-2.391 5.879,3.871 44.688,42.262 50.52,55.309 -29.25,-13.934 -51.586,-15.688 -51.586,-15.688 0,0 -6.832,-0.438 -14.094,-0.262 4.719,-4.219 14.328,-9.203 18.352,-7.984 5.359,1.641 20.199,6.391 20.199,6.391l-16.208,-14.094z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m215.672,56.375v-0.016c0,0 -61.926,0.008 -61.949,0.008 -1.906,0 -3.457,1.551 -3.457,3.465 0,1.91 1.551,3.465 3.457,3.465 0.055,0 0.109,-0.016 0.168,-0.016h61.574c0.047,0 0.129,0.016 0.16,0.016 1.914,0 3.473,-1.555 3.473,-3.465 -0.001,-1.899 -1.536,-3.442 -3.426,-3.457\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m215.672,56.375v-0.016c0,0 -61.926,0.008 -61.949,0.008 -1.906,0 -3.457,1.551 -3.457,3.465 0,1.91 1.551,3.465 3.457,3.465 0.055,0 0.109,-0.016 0.168,-0.016h61.574c0.047,0 0.129,0.016 0.16,0.016 1.914,0 3.473,-1.555 3.473,-3.465 -0.001,-1.899 -1.536,-3.442 -3.426,-3.457z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m212.808,63.281 l0,0c0,-0.012 -56.465,0 -56.473,0 -1.742,0 -3.152,1.543 -3.152,3.453 0,1.914 1.41,3.457 3.152,3.457L212.785,70.191c1.734,0 3.152,-1.535 3.152,-3.457 0,-1.895 -1.39,-3.43 -3.129,-3.453\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m212.808,63.281 l0,0c0,-0.012 -56.465,0 -56.473,0 -1.742,0 -3.152,1.543 -3.152,3.453 0,1.914 1.41,3.457 3.152,3.457L212.785,70.191c1.734,0 3.152,-1.535 3.152,-3.457 0,-1.895 -1.39,-3.43 -3.129,-3.453z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m188.922,82.07c0,1.871 -2.656,3.402 -5.922,3.402 -3.262,0 -5.91,-1.52 -5.91,-3.402 0,-1.879 2.648,-3.398 5.91,-3.398 3.265,-0.001 5.922,1.511 5.922,3.398\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m183.547,81.519c0,1.313 -1.336,2.383 -2.977,2.383 -1.633,0 -2.961,-1.07 -2.961,-2.383 0,-1.313 1.328,-2.375 2.961,-2.375 1.641,0.008 2.977,1.063 2.977,2.375\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m172.312,74.457c0,0 -4.656,0.734 -4.598,3.84 0.094,5.168 16.117,-3.152 25.758,-1.379 -6.984,-3 -21.91,2.938 -22.961,0.602 -0.285,-0.657 1.801,-3.063 1.801,-3.063\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m151.371,47.574c-0.32,1.402 -0.059,6.922 2.59,8.242 1.184,0.59 2.25,-0.031 3.031,-1.098 0.785,-1.063 0.617,-2.504 0.617,-2.504 -0.008,-0.023 -1.895,-3.086 0.367,-6.336 2.473,-3.535 9.047,-7.781 26.387,-7.902 17.277,0.129 23.863,4.367 26.324,7.902 2.266,3.25 0.395,6.313 0.379,6.336 0,0 -0.168,1.449 0.605,2.504 0.793,1.066 1.848,1.688 3.035,1.098 2.656,-1.328 2.918,-6.84 2.59,-8.242 -1.574,-6.766 -8.551,-14.848 -32.934,-15.039 -24.433,0.191 -31.417,8.281 -32.991,15.039\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m151.371,47.574c-0.32,1.402 -0.059,6.922 2.59,8.242 1.184,0.59 2.25,-0.031 3.031,-1.098 0.785,-1.063 0.617,-2.504 0.617,-2.504 -0.008,-0.023 -1.895,-3.086 0.367,-6.336 2.473,-3.535 9.047,-7.781 26.387,-7.902 17.277,0.129 23.863,4.367 26.324,7.902 2.266,3.25 0.395,6.313 0.379,6.336 0,0 -0.168,1.449 0.605,2.504 0.793,1.066 1.848,1.688 3.035,1.098 2.656,-1.328 2.918,-6.84 2.59,-8.242 -1.574,-6.766 -8.551,-14.848 -32.934,-15.039 -24.433,0.191 -31.417,8.281 -32.991,15.039z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m194.433,15.91c0,4.938 -4.664,8.945 -10.418,8.945 -5.734,0 -10.406,-4.008 -10.406,-8.945 0,-4.941 4.672,-8.949 10.406,-8.949 5.754,-0.001 10.418,4.007 10.418,8.949\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m184.015,6.968c5.75,0 10.41,4.004 10.41,8.941 0,4.941 -4.66,8.945 -10.41,8.945 -5.746,0 -10.406,-4.004 -10.406,-8.945 0,-4.937 4.66,-8.941 10.406,-8.941z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m189.152,28.687c0,2.246 2.168,4.055 4.84,4.055 2.672,0 4.84,-1.809 4.84,-4.055 0,-2.23 -2.168,-4.039 -4.84,-4.039 -2.672,0 -4.84,1.809 -4.84,4.039\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m194,24.632c2.676,0 4.84,1.816 4.84,4.055 0,2.239 -2.164,4.055 -4.84,4.055 -2.672,0 -4.84,-1.816 -4.84,-4.055 0,-2.239 2.168,-4.055 4.84,-4.055z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m189.113,44.16c0,2.238 -2.16,4.055 -4.832,4.055 -2.672,0 -4.832,-1.816 -4.832,-4.055 0,-2.234 2.168,-4.047 4.832,-4.047 2.664,0 4.832,1.804 4.832,4.047\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m184.273,40.105c2.668,0 4.832,1.813 4.832,4.055 0,2.238 -2.164,4.055 -4.832,4.055 -2.668,0 -4.832,-1.816 -4.832,-4.055 0,-2.243 2.164,-4.055 4.832,-4.055z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m189.113,36.023c0,2.238 -2.16,4.055 -4.832,4.055 -2.672,0 -4.832,-1.816 -4.832,-4.055 0,-2.23 2.168,-4.047 4.832,-4.047 2.664,0 4.832,1.816 4.832,4.047\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M179.441,36.023a4.832,4.055 0,1 0,9.664 0a4.832,4.055 0,1 0,-9.664 0z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m179.554,28.687c0,2.246 -2.168,4.055 -4.832,4.055 -2.672,0 -4.84,-1.809 -4.84,-4.055 0,-2.23 2.168,-4.039 4.84,-4.039 2.672,0 4.832,1.809 4.832,4.039\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m174.715,24.632c2.672,0 4.84,1.816 4.84,4.055 0,2.239 -2.168,4.055 -4.84,4.055 -2.676,0 -4.84,-1.816 -4.84,-4.055 0,-2.239 2.164,-4.055 4.84,-4.055z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m170.105,30.519c0,2.23 -2.16,4.055 -4.832,4.055 -2.68,0 -4.84,-1.824 -4.84,-4.055 0,-2.238 2.16,-4.055 4.84,-4.055 2.672,0 4.832,1.805 4.832,4.055\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m165.265,26.464c2.668,0 4.832,1.813 4.832,4.055 0,2.242 -2.164,4.055 -4.832,4.055 -2.668,0 -4.832,-1.813 -4.832,-4.055 0,-2.242 2.164,-4.055 4.832,-4.055z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m161.363,34.046c0,2.234 -2.168,4.051 -4.844,4.051 -2.672,0 -4.84,-1.816 -4.84,-4.051 0,-2.238 2.168,-4.055 4.84,-4.055 2.676,0.001 4.844,1.817 4.844,4.055\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m156.519,30c2.676,0 4.844,1.813 4.844,4.047 0,2.238 -2.168,4.051 -4.844,4.051 -2.672,0 -4.84,-1.813 -4.84,-4.051 0,-2.235 2.168,-4.047 4.84,-4.047z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m154.504,39.777c0,2.277 -2.16,4.133 -4.832,4.133 -2.672,0 -4.84,-1.848 -4.84,-4.133 0,-2.273 2.168,-4.121 4.84,-4.121 2.672,0 4.832,1.847 4.832,4.121\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m149.672,35.64c2.672,0 4.832,1.852 4.832,4.137 0,2.281 -2.16,4.133 -4.832,4.133 -2.668,0 -4.832,-1.852 -4.832,-4.133 0,-2.285 2.164,-4.137 4.832,-4.137z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m151.16,47.425c0,2.23 -2.168,4.047 -4.84,4.047 -2.672,0 -4.84,-1.816 -4.84,-4.047 0,-2.242 2.168,-4.059 4.84,-4.059 2.672,0 4.84,1.817 4.84,4.059\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m146.32,43.375c2.676,0 4.84,1.813 4.84,4.051 0,2.234 -2.164,4.047 -4.84,4.047 -2.672,0 -4.84,-1.813 -4.84,-4.047 0,-2.239 2.168,-4.051 4.84,-4.051z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m198.609,30.519c0,2.23 2.176,4.055 4.848,4.055 2.664,0 4.832,-1.824 4.832,-4.055 0,-2.238 -2.168,-4.055 -4.832,-4.055 -2.672,0 -4.848,1.805 -4.848,4.055\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m203.449,26.464c2.672,0 4.84,1.813 4.84,4.055 0,2.242 -2.168,4.055 -4.84,4.055 -2.672,0 -4.84,-1.813 -4.84,-4.055 0,-2.242 2.168,-4.055 4.84,-4.055z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m207.363,34.046c0,2.234 2.168,4.051 4.832,4.051 2.66,0 4.828,-1.816 4.828,-4.051 0,-2.238 -2.168,-4.055 -4.828,-4.055 -2.664,0.001 -4.832,1.817 -4.832,4.055\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m212.195,30c2.668,0 4.828,1.813 4.828,4.047 0,2.238 -2.16,4.051 -4.828,4.051 -2.672,0 -4.832,-1.813 -4.832,-4.051 0,-2.235 2.16,-4.047 4.832,-4.047z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m214.195,39.777c0,2.277 2.176,4.133 4.848,4.133 2.672,0 4.832,-1.848 4.832,-4.133 0,-2.273 -2.168,-4.121 -4.832,-4.121 -2.664,0 -4.848,1.847 -4.848,4.121\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m219.043,35.64c2.672,0 4.84,1.852 4.84,4.137 0,2.281 -2.168,4.133 -4.84,4.133 -2.676,0 -4.84,-1.852 -4.84,-4.133 0,-2.285 2.164,-4.137 4.84,-4.137z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m217.547,47.425c0,2.23 2.168,4.047 4.84,4.047 2.672,0 4.855,-1.816 4.855,-4.047 0,-2.242 -2.184,-4.059 -4.855,-4.059 -2.671,0 -4.84,1.817 -4.84,4.059\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M217.554,47.423a4.848,4.049 0,1 0,9.696 0a4.848,4.049 0,1 0,-9.696 0z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m189.113,52.304c0,2.223 -2.16,4.047 -4.832,4.047 -2.672,0 -4.832,-1.824 -4.832,-4.047 0,-2.242 2.168,-4.059 4.832,-4.059 2.664,0 4.832,1.817 4.832,4.059\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M179.441,52.302a4.832,4.049 0,1 0,9.664 0a4.832,4.049 0,1 0,-9.664 0z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m189.168,28.113c0,2.238 -2.145,4.055 -4.832,4.055 -2.672,0 -4.832,-1.816 -4.832,-4.055 0,-2.242 2.168,-4.059 4.832,-4.059 2.699,0 4.832,1.809 4.832,4.059\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m184.336,24.054c2.672,0 4.832,1.816 4.832,4.059 0,2.238 -2.16,4.055 -4.832,4.055 -2.668,0 -4.832,-1.816 -4.832,-4.055 0,-2.242 2.164,-4.059 4.832,-4.059z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m142.625,426.71c4.945,-1.914 5.961,-9.602 4.746,-11.133 -6.082,-7.602 -13.746,-8.18 -13.746,-8.18 0,0 -3.945,3.133 3.746,8.281 7.68,5.165 5.453,9.509 5.254,11.032\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m142.625,426.71c4.945,-1.914 5.961,-9.602 4.746,-11.133 -6.082,-7.602 -13.746,-8.18 -13.746,-8.18 0,0 -3.945,3.133 3.746,8.281 7.68,5.165 5.453,9.509 5.254,11.032z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m33.57,390.414c0.598,-3.344 5.145,-15.453 18.992,-8.391 5.117,2.625 3.742,6.281 3.742,6.281 0,0 -2.727,3.211 -6.168,1 -8.941,-5.789 -8.183,-7.07 -16.566,1.11\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m33.57,390.414c0.598,-3.344 5.145,-15.453 18.992,-8.391 5.117,2.625 3.742,6.281 3.742,6.281 0,0 -2.727,3.211 -6.168,1 -8.941,-5.789 -8.183,-7.07 -16.566,1.11z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m35.89,428.125c0,0 1.152,-11.563 10.91,-13.25 5.863,-1.016 2.129,-5.344 2.129,-5.344 0,0 -9.32,-2.734 -15.672,8.391 -2.023,3.515 2.633,10.203 2.633,10.203\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m35.89,428.125c0,0 1.152,-11.563 10.91,-13.25 5.863,-1.016 2.129,-5.344 2.129,-5.344 0,0 -9.32,-2.734 -15.672,8.391 -2.023,3.515 2.633,10.203 2.633,10.203z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m73.152,457.64c-5.262,-3.953 -5.305,-8.983 -5.223,-12.078 0.094,-3.953 -7.281,1.297 -6.672,3.836 0.344,1.383 -2.023,10.602 11.895,8.242\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m73.152,457.64c-5.262,-3.953 -5.305,-8.983 -5.223,-12.078 0.094,-3.953 -7.281,1.297 -6.672,3.836 0.344,1.383 -2.023,10.602 11.895,8.242z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M435.828,84.296l0,-19.425l21.016,0l0,-26.848l-33.5,0l0,18.617l-26.875,0l0,-18.617l-33.766,0l0,46.273l-17.016,0l-0.093,76.329l17.109,0l0,46.246l33.766,0l0,-18.344l26.875,0l0,18.344l33.5,0l0,-26.575l-21.016,0l0,-19.671l21.016,0l0,-9.313l0,-67.016z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M456.844,64.871l0,-26.848l-33.5,0l0,18.617l-26.875,0l0,-18.617l-33.766,0l0,46.273l-17.016,0l-0.093,76.329l17.109,0l0,46.246l33.766,0l0,-18.344l26.875,0l0,18.344l33.5,0l0,-26.575l-21.016,0l0,-19.671l21.016,0l0,-9.313l0,-67.016l-21.016,0l0,-19.425z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M409.25,158.48l-18.625,0l0,-27.656l-20.742,0l0,-16.481l20.742,0l0,-27.656l18.625,0l0,27.656l20.469,0l0,16.481l-20.469,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M390.625,130.824l-20.742,0l0,-16.481l20.742,0l0,-27.656l18.625,0l0,27.656l20.469,0l0,16.481l-20.469,0l0,27.656l-18.625,0z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m277.265,366.921c42.344,-16.172 44.094,-43.594 44.125,-58.188h26.508c0.047,14.594 2.078,42.109 44.422,58.297v27.594c-42.344,16.156 -44.375,37.75 -44.422,52.344h-26.25c-0.047,-14.594 -2.086,-36.172 -44.422,-52.344l0.039,-27.703z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m277.265,366.921c42.344,-16.172 44.094,-43.594 44.125,-58.188h26.508c0.047,14.594 2.078,42.109 44.422,58.297v27.594c-42.344,16.156 -44.375,37.75 -44.422,52.344h-26.25c-0.047,-14.594 -2.086,-36.172 -44.422,-52.344l0.039,-27.703z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m358.062,379.609c0,-5.875 -5.164,-10.609 -11.578,-10.75 -0.094,-5.859 -5.344,-10.594 -11.813,-10.594 -6.484,0 -11.734,4.734 -11.828,10.594 -6.375,0.156 -11.5,4.906 -11.5,10.75 0,5.844 5.125,10.594 11.5,10.75 0.141,5.828 5.367,10.516 11.828,10.516 6.438,0 11.672,-4.688 11.813,-10.516 6.406,-0.141 11.578,-4.891 11.578,-10.75\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m358.062,379.609c0,-5.875 -5.164,-10.609 -11.578,-10.75 -0.094,-5.859 -5.344,-10.594 -11.813,-10.594 -6.484,0 -11.734,4.734 -11.828,10.594 -6.375,0.156 -11.5,4.906 -11.5,10.75 0,5.844 5.125,10.594 11.5,10.75 0.141,5.828 5.367,10.516 11.828,10.516 6.438,0 11.672,-4.688 11.813,-10.516 6.406,-0.141 11.578,-4.891 11.578,-10.75z\"\n      android:strokeWidth=\"3.51999998\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#040304\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m277.547,380.812c0,5.656 -5.063,10.242 -11.266,10.242 -6.234,0 -11.266,-4.586 -11.266,-10.242 0,-5.672 5.031,-10.234 11.266,-10.234 6.203,0 11.266,4.562 11.266,10.234\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m266.281,370.562c6.219,0 11.266,4.586 11.266,10.25 0,5.656 -5.047,10.242 -11.266,10.242 -6.219,0 -11.266,-4.586 -11.266,-10.242 0,-5.664 5.047,-10.25 11.266,-10.25z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m414.195,380.812c0,5.656 -5.039,10.242 -11.258,10.242 -6.234,0 -11.266,-4.586 -11.266,-10.242 0,-5.672 5.031,-10.234 11.266,-10.234 6.219,0 11.258,4.562 11.258,10.234\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m402.937,370.562c6.219,0 11.266,4.586 11.266,10.25 0,5.656 -5.047,10.242 -11.266,10.242 -6.219,0 -11.266,-4.586 -11.266,-10.242 0.001,-5.664 5.048,-10.25 11.266,-10.25z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m345.867,450.25c0,5.656 -5.039,10.233 -11.258,10.233 -6.219,0 -11.266,-4.577 -11.266,-10.233 0,-5.656 5.047,-10.25 11.266,-10.25 6.219,0 11.258,4.593 11.258,10.25\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m334.609,440.015c6.219,0 11.266,4.578 11.266,10.234 0,5.646 -5.047,10.232 -11.266,10.232 -6.219,0 -11.266,-4.586 -11.266,-10.232 0.001,-5.656 5.047,-10.234 11.266,-10.234z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m334.57,316.742c-0.445,18.477 14.555,53.758 60.727,63.953 -54.578,8.492 -60.109,49.508 -60.727,57.445 -1.398,-3.688 1.82,-43.133 -60.742,-57.445 50.297,-12.164 60.656,-48.242 60.742,-63.953z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m350.469,36.878c0,-3.68 -1.82,-6.918 -4.547,-8.961 -0.531,-5.664 -5.281,-10.102 -11.078,-10.102 -5.766,0 -10.492,4.359 -11.078,9.945 -2.844,2.039 -4.656,5.359 -4.656,9.117 0,0.305 -0.047,0.594 -0.016,0.883v281.051h31.375v-281.324,-0.609z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m350.469,36.878c0,-3.68 -1.82,-6.918 -4.547,-8.961 -0.531,-5.664 -5.281,-10.102 -11.078,-10.102 -5.766,0 -10.492,4.359 -11.078,9.945 -2.844,2.039 -4.656,5.359 -4.656,9.117 0,0.305 -0.047,0.594 -0.016,0.883v281.051h31.375v-281.324,-0.609z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m352.344,282.921h-36.016c-3.891,0 -7.047,3.141 -7.047,7.063 0,3.875 3.141,7.031 7.016,7.047h36.047c3.906,0 7.047,-3.172 7.047,-7.047 -0.001,-3.93 -3.141,-7.063 -7.047,-7.063\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m352.344,282.921h-36.016c-3.891,0 -7.047,3.141 -7.047,7.063 0,3.875 3.141,7.031 7.016,7.047h36.047c3.906,0 7.047,-3.172 7.047,-7.047 -0.001,-3.93 -3.141,-7.063 -7.047,-7.063z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m352.875,305.531h-36.406c-3.922,0 -7.117,3.211 -7.117,7.164 0,3.953 3.164,7.164 7.086,7.164h36.438c3.938,0 7.141,-3.195 7.141,-7.164 -0.002,-3.953 -3.205,-7.164 -7.142,-7.164\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m352.875,305.531h-36.406c-3.922,0 -7.117,3.211 -7.117,7.164 0,3.953 3.164,7.164 7.086,7.164h36.438c3.938,0 7.141,-3.195 7.141,-7.164 -0.002,-3.953 -3.205,-7.164 -7.142,-7.164z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m402.859,364.453c0.016,-0.117 0.016,-0.25 0.016,-0.367 0,-4.258 -3.453,-7.719 -7.719,-7.719 -4.266,0 -7.703,3.461 -7.703,7.719v0.023h-0.016v33.242h0.016v0.047c0,4.266 3.438,7.711 7.703,7.711 4.265,0 7.719,-3.445 7.719,-7.711 0,-0.133 0,-0.242 -0.016,-0.359v-32.586z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m402.859,364.453c0.016,-0.117 0.016,-0.25 0.016,-0.367 0,-4.258 -3.453,-7.719 -7.719,-7.719 -4.266,0 -7.703,3.461 -7.703,7.719v0.023h-0.016v33.242h0.016v0.047c0,4.266 3.438,7.711 7.703,7.711 4.265,0 7.719,-3.445 7.719,-7.711 0,-0.133 0,-0.242 -0.016,-0.359v-32.586z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m266.5,397.125c0,0.125 -0.016,0.242 -0.016,0.359 0,4.281 3.453,7.719 7.719,7.719 4.25,0 7.719,-3.438 7.719,-7.719v-0.016h0.016v-33.234h-0.016v-0.047c0,-4.25 -3.469,-7.734 -7.719,-7.734 -4.266,0 -7.719,3.484 -7.719,7.734 0,0.109 0.016,0.227 0.016,0.359v32.579z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m266.5,397.125c0,0.125 -0.016,0.242 -0.016,0.359 0,4.281 3.453,7.719 7.719,7.719 4.25,0 7.719,-3.438 7.719,-7.719v-0.016h0.016v-33.234h-0.016v-0.047c0,-4.25 -3.469,-7.734 -7.719,-7.734 -4.266,0 -7.719,3.484 -7.719,7.734 0,0.109 0.016,0.227 0.016,0.359v32.579z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m350.875,450.296c0.125,0 0.25,0.031 0.359,0.031 4.266,0 7.734,-3.471 7.734,-7.721 0,-4.266 -3.469,-7.733 -7.734,-7.733h-0.023,-33.227 -0.047c-4.266,0 -7.727,3.469 -7.727,7.733 0,4.25 3.461,7.721 7.727,7.721 0.109,0 0.219,-0.031 0.375,-0.031h32.563z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m350.875,450.296c0.125,0 0.25,0.031 0.359,0.031 4.266,0 7.734,-3.471 7.734,-7.721 0,-4.266 -3.469,-7.733 -7.734,-7.733h-0.023,-33.227 -0.047c-4.266,0 -7.727,3.469 -7.727,7.733 0,4.25 3.461,7.721 7.727,7.721 0.109,0 0.219,-0.031 0.375,-0.031h32.563z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M234.937,0.08L234.937,470.209\"\n      android:strokeWidth=\"3.55388069\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_gl.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.862\"\n    android:viewportHeight=\"471.439\">\n  <path\n      android:pathData=\"M0,0h469.862v471.439h-469.862z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m315.41,68.293c0,27.488 -24.391,49.771 -54.508,49.771 -30.109,0 -54.504,-22.281 -54.504,-49.771 0,-27.484 24.395,-49.766 54.504,-49.766 30.118,0.001 54.508,22.282 54.508,49.766\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m260.91,18.528c30.102,0 54.5,22.281 54.5,49.766 0,27.488 -24.398,49.771 -54.5,49.771 -30.102,0 -54.504,-22.282 -54.504,-49.771 0,-27.485 24.403,-49.766 54.504,-49.766z\"\n      android:strokeWidth=\"3.33599997\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M124.32,456.499l15.344,-1.724l-47.984,-418.454l-19.113,2.117z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m76.438,41.496c0.082,0.633 50.816,410.56 50.898,411.167 0.551,-0.068 7.91,-0.891 8.473,-0.938 -0.066,-0.641 -47.113,-410.96 -47.184,-411.582 -0.594,0.064 -11.601,1.287 -12.187,1.353\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m79.793,22.606 l0,0c-9.859,1.242 -17.152,7.945 -16.258,14.945 0.879,7 9.617,11.688 19.473,10.449 5.793,-0.746 10.992,-3.426 13.902,-7.168 1.883,-2.426 2.695,-5.113 2.352,-7.793 -0.879,-7 -9.621,-11.679 -19.469,-10.433\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"m80.231,26.047c-7.559,0.961 -13.313,5.488 -13.313,10.32 0,0.254 0.023,0.504 0.051,0.762 0.645,5.102 7.656,8.43 15.598,7.43 4.898,-0.617 9.25,-2.809 11.609,-5.848 1.297,-1.672 1.871,-3.496 1.648,-5.23 -0.64,-5.114 -7.64,-8.442 -15.593,-7.434\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m93.246,129.008 l0,0c-9.488,1.215 -16.512,7.719 -15.633,14.48 0.867,6.75 9.297,11.254 18.793,10.031 9.504,-1.219 16.512,-7.711 15.641,-14.473 -0.863,-6.761 -9.305,-11.272 -18.801,-10.038\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m93.688,132.438c-7.199,0.938 -12.68,5.266 -12.68,9.854 0,0.242 0.016,0.488 0.039,0.738 0.625,4.855 7.32,8.023 14.922,7.039 7.59,-0.977 13.27,-5.734 12.645,-10.582 -0.637,-4.858 -7.317,-8.022 -14.926,-7.049\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m133.438,169.344c41.227,-3.563 90.867,-17.945 113.043,-71.602 21.781,0 27.883,-1.449 27.883,-1.449 0,0 8.047,10.586 46.344,30.746 7.266,3.824 29.359,83.063 29.359,83.063 0,0 4.102,15.672 -7.328,16.984 -11.438,1.297 -32.141,0.457 -32.141,0.457 0,0 26.633,209.902 26.828,211.691 -1.516,0.453 -10.578,5.233 -20.93,10.64 -10.289,5.375 -21.883,11.346 -28.727,13.064 -0.422,0.108 -5.484,1.358 -7.813,-3.267 -2.344,-4.642 0.875,-8.125 0.875,-8.125l22.406,-19.759c0,0 0.625,-1.109 0.578,-1.898 -0.023,-0.773 -1.016,-1.063 -1.016,-1.063l-36.633,-0.281 -34.463,-177.607 -4.047,0.922 33.426,177.195 -71.555,0.086 18.946,-232.207 -72.633,-0.199c0.016,-0.008 -2.176,-25.246 -2.402,-27.391\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"M248.285,118.039l25.618,0l2.687,-20.304l-6.406,13.886l-18.961,0l-5.344,-12.812z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M245.348,163.688h48.047v32.297h-48.047z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M236.008,163.688h7.215v32.297h-7.215z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M229.598,163.688h4.539v32.297h-4.539z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m296.223,68.293c0,18.707 -16.305,33.875 -36.375,33.875 -20.094,0 -36.375,-15.168 -36.375,-33.875 0,-18.719 16.281,-33.879 36.375,-33.879 20.07,-0.007 36.375,15.16 36.375,33.879\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m259.035,53.321c8.344,0.145 22.938,-2.922 20.031,14.871 -0.594,3.711 0,8.625 0,8.625 0,0 0.547,5.695 -0.141,9.461 -1.25,11.402 -3.891,13.563 -16.977,14.043 -15.422,0.551 -15.141,-0.977 -17.648,-7.234 -5.703,-17.383 -3.352,-30.727 -3.352,-30.727 0,0 1.4,-9.313 18.087,-9.039\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m215.793,432.61c0,0 -17.09,0 -26.777,-0.063 -6.465,9.109 -26.031,6.375 -31.258,6.672 -4.59,0.281 -7.734,3.227 -7.734,8.017 0,4.78 3.969,8.063 8.246,8.063L207.422,455.299c5.984,0 7.746,-5.391 7.746,-5.391l0.625,-17.298z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m268.426,221.016 l-2.984,-22.871 -15.829,0.125h-14.796c-0.625,0 -1.137,0.641 -1.137,1.441 0,0.785 0.504,1.441 1.137,1.441h11.773c0,0 0.273,2.031 -0.57,2.078 0,0 -12.957,0.234 -13.555,0.234 -0.578,0 -4.297,-3.25 -4.297,-3.25 -0.207,-0.215 -0.305,-0.328 -0.402,-0.441 -0.141,-0.23 -0.199,-0.574 -0.199,-0.59 0,-0.656 -0.199,-1.266 -0.953,-1.297 -0.758,-0.047 -1.336,0.422 -1.43,1.078 -0.168,1.488 0.094,1.609 0.176,1.785 0.105,0.168 0.254,0.441 4.719,4.887 0.234,0.313 0.793,0.516 1.137,0.516l11.836,-0.098 0.102,2.23h-12.025c-0.625,0 -1.16,0.641 -1.16,1.441 0,0.785 0.527,1.441 1.16,1.441h12.156l0.094,2.031h-11.699c-0.625,0 -1.152,0.641 -1.152,1.438 0,0.801 0.52,1.441 1.152,1.441h11.84l0.094,2.129h-11.184c-0.621,0 -1.168,0.656 -1.168,1.457 0,0.781 0.539,1.422 1.168,1.422h15.058c0.039,0 0.109,-0.031 0.172,-0.047h20.766v-0.021z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m84.942,170.817c0,1.855 1.313,4.805 4.953,4.805h13.871v21.328l57.922,-0.2 -2.648,-28.07 -74.098,-0.066v2.203z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m134.168,194.543 l-2.234,-23.68 -44.766,-0.047c0,0.918 0.59,2.637 2.727,2.637h16.082v21.129l28.191,-0.039z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m91.199,173.465c-2.031,0 -3.695,1.734 -3.695,3.871 0,2.129 1.664,3.871 3.695,3.871h14.023c2.047,0 3.703,-1.754 3.703,-3.871 0,-2.145 -1.656,-3.871 -3.703,-3.871h-14.023z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m91.199,175.672c-0.816,0 -1.488,0.75 -1.488,1.672 0,0.902 0.672,1.672 1.488,1.672h14.023c0.84,0 1.496,-0.77 1.496,-1.672 0,-0.922 -0.656,-1.672 -1.496,-1.672h-14.023z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m92.231,179.43c-2.023,0 -3.664,1.723 -3.664,3.84 0,2.113 1.641,3.816 3.664,3.816h13.551c2.012,0 3.656,-1.703 3.656,-3.816 0,-2.125 -1.645,-3.84 -3.656,-3.84h-13.551z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m92.231,181.657c-0.809,0 -1.457,0.719 -1.457,1.621 0,0.891 0.648,1.609 1.457,1.609h13.551c0.801,0 1.449,-0.719 1.449,-1.609 0,-0.902 -0.648,-1.621 -1.449,-1.621h-13.551z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m92.727,185.278c-1.984,0 -3.617,1.578 -3.617,3.531 0,1.934 1.633,3.527 3.617,3.527h13.703c1.984,0 3.609,-1.594 3.609,-3.527 0,-1.953 -1.625,-3.531 -3.609,-3.531h-13.703z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m92.727,187.481c-0.809,0 -1.457,0.59 -1.457,1.328 0,0.719 0.648,1.309 1.457,1.309h13.703c0.801,0 1.457,-0.59 1.457,-1.309 0,-0.738 -0.656,-1.328 -1.457,-1.328h-13.703z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m93.598,190.278c-1.984,0 -3.59,1.512 -3.59,3.379 0,1.863 1.605,3.359 3.59,3.359h12.992c1.977,0 3.586,-1.504 3.586,-3.359 0,-1.855 -1.609,-3.379 -3.586,-3.379h-12.992z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m93.598,192.496c-0.766,0 -1.375,0.512 -1.375,1.16 0,0.645 0.609,1.16 1.375,1.16h12.992c0.762,0 1.379,-0.516 1.379,-1.16 0,-0.648 -0.617,-1.16 -1.379,-1.16h-12.992z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m250.301,73.367c0,1.215 -1,2.207 -2.219,2.207 -1.227,0 -2.219,-0.992 -2.219,-2.207 0,-1.223 0.992,-2.223 2.219,-2.223 1.219,-0.007 2.219,0.993 2.219,2.223\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m270.348,73.367c0,1.215 -0.969,2.207 -2.188,2.207 -1.25,0 -2.25,-0.992 -2.25,-2.207 0,-1.223 1,-2.223 2.25,-2.223 1.219,-0.007 2.188,0.993 2.188,2.223\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m262.207,65.992c-0.469,0.383 -0.531,1.078 -0.141,1.551 0.398,0.473 1.758,0.879 2.211,0.504 0.148,-0.113 3.867,-2.152 4.836,-1.961 1.641,0.305 3.688,0.898 6.023,2.074 0.555,0.27 1.18,0.246 1.539,-0.25 0.375,-0.496 0.047,-1.43 -0.445,-1.793 -7.46,-5.437 -13.96,-0.199 -14.023,-0.125\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m245.051,65.887c-0.555,0.242 -0.82,0.895 -0.555,1.473 0.227,0.551 1.258,1.008 1.852,0.758 1.164,-0.512 4.266,-1.75 6.125,-0.438 1.109,0.785 1.594,2.398 1.43,4.793 -0.742,10.055 -0.672,12.965 -0.672,13.086 0.023,0.586 0.492,1.063 1.07,1.086l9.078,0.348c0.625,0.016 0.703,-2.203 0.109,-2.227 0,0 -6.289,0.219 -7.961,0.145 0.023,-1.535 0.133,-5.473 0.57,-12.254 0.055,-0.387 0.055,-0.738 0.055,-1.074 0,-2.68 0.328,-4.617 -1.25,-5.766 -3.445,-2.516 -9.624,-0.028 -9.851,0.07\"\n      android:fillColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m254.363,91.645c-0.922,0 -1.656,0.754 -1.656,1.676 0,0.91 0.734,1.672 1.656,1.672h10.063c0.922,0 1.656,-0.762 1.656,-1.672 0,-0.922 -0.734,-1.676 -1.656,-1.676h-10.063z\"\n      android:fillColor=\"#110a0e\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_gr.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.26898\"\n    android:viewportHeight=\"470.791\">\n  <path\n      android:pathData=\"M0.097,0.278l0.278,470.513l468.644,0l0,-470.513l-468.644,0.273z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M468.754,470.22l0.265,-235.876l-468.922,0l0,236.189l468.922,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M123.121,233l0.273,-232.722l-123.297,0l0,232.722l123.297,0z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M123.648,0.801h123.027v234.07h-123.027z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M323.097,0.551l-0.265,0l-76.422,0l0,117.153l111.297,0l0,-117.153z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M323.379,234.344l-0.282,0l-76.421,0l0,-117.176l111.296,0l0,117.176z\"\n      android:fillColor=\"#5187c2\"/>\n  <path\n      android:pathData=\"M323.379,148.872l0,85.472l-76.703,0l0,-85.219l76.703,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M392.613,85.215l0,-85.215l76.656,0l0,85.481l-76.656,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M392.332,148.872l0,85.472l76.687,0l0,-85.219l-76.687,0z\"\n      android:fillColor=\"#5187c2\"/>\n  <path\n      android:pathData=\"M117.265,278.297l5.598,1.032l5.328,1.062l5.586,0.797l5.582,0.539l5.609,0.789l1.047,0.813l1.09,1.343l1.039,1.047l0.824,1.344l1.055,1.609l0.793,1.297l0.801,1.61l0.809,1.609l0.781,1.586l1.09,1.312l11.175,15.211l0.52,0.516l0.527,0.812l0.547,0.25l0.254,0.54l0.543,0.554l0.547,0.25l0.512,0.539l0.55,0.508l0.786,0.281l0.808,0.813l-1.336,2.125l-1.32,2.406l-1.09,2.375l-1.047,2.125l-1.074,2.399l-0.797,2.656l-1.074,2.398l-0.52,2.406l-0.824,2.672l-0.512,2.407l-1.855,-0.266l-1.625,-0.289l-1.848,-0.258l-1.847,0l-1.618,-0.234l-1.589,-0.594l-1.336,-0.5l-1.328,-1.047l-0.801,-1.351l-0.52,-2.133l-1.351,-4.539l-1.067,-5.055l-0.801,-5.047l-1.343,-5.047l-1.567,-5.094l-1.871,-4.515l-2.945,-3.985l-3.465,-3.468l-4.766,-2.657l-5.863,-1.859l-2.121,-1.078l-2.402,-1.063l-2.399,-1.062l-2.664,-1.047l-2.39,-1.078l-2.664,-0.531l-2.411,-0.266l-2.398,0.508l-2.649,0.805l-2.144,1.867l-0.801,-0.258l-0.246,-0.281l-0.281,-0.516l0,-0.812l0,-0.805l-0.262,-0.774l0,-0.812l-0.266,-0.797l-0.527,-0.812l-0.808,-0.508l-2.137,0.508l-1.856,0.812l-2.129,0.531l-1.871,0.797l-2.136,0.813l-2.129,0.242l-2.117,0l-2.129,-0.242l-1.871,-0.532l-2.122,-1.609l-1.609,-0.812l-1.328,-0.789l-1.336,-1.344l-1.328,-1.055l-1.328,-1.328l-1.336,-1.32l-1.336,-1.071l-1.336,-1.062l-1.574,-0.82l-1.61,-0.774l21.586,0.774l0.254,-0.243l0.266,-0.25l0.254,-0.554l0.265,-0.539l0.289,-0.25l0,-0.555l0,-0.242l0,-0.547l-0.554,-0.25l-0.52,-0.274l-0.535,0l-0.519,0l-0.543,0l-0.52,0l-0.266,0l-0.289,0l-0.254,0l-0.281,0l-0.238,0l-0.555,0.274l-1.062,0l-1.055,0l-1.09,0l-1.039,0l-1.336,0l-1.074,0l-1.055,-0.274l-1.07,0l-1.082,-0.273l-0.785,-0.266l0,-0.265l-0.262,-0.266l-0.281,-0.531l-0.52,-0.531l-0.273,-0.797l-0.528,-0.797l-0.535,-0.813l-0.273,-0.804l-0.262,-0.524l-0.258,-0.82l2.649,1.086l2.945,0.547l2.918,0.281l3.211,0l2.91,0l2.953,-0.281l2.903,0l2.945,0.281l2.918,0.5l2.664,0.812l4.273,2.922l4.793,2.657l4.782,1.859l5.066,1.875z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M252.535,310.758l-1.063,2.657l-1.593,2.671l-1.61,2.399l-1.859,2.406l-2.125,2.375l2.391,0.281l2.937,0.243l3.188,0.273l3.203,0.281l3.734,0.25l3.453,0.266l3.203,0.531l2.907,0.547l2.406,0.266l1.594,0.523l4.796,1.32l5.063,1.344l4.797,1.055l5.062,1.07l5.047,1.063l4.797,1.078l4.781,1.593l4.797,1.61l4.531,2.109l4.282,2.43l2.39,1.062l2.11,0.789l2.156,1.063l2.094,1.062l1.875,0.797l2.125,1.313l1.875,1.062l2.14,1.36l2.141,1.312l2.109,1.36l1.344,-0.821l1.344,-0.789l1.578,-0.812l1.344,-0.782l1.328,-0.828l1.594,-0.773l1.312,-0.555l1.594,-0.5l1.609,-0.289l1.86,0l3.234,0.289l3.156,0.766l2.938,1.344l2.937,1.586l2.906,1.617l2.688,1.578l2.656,1.609l2.922,1.094l2.922,0.516l2.922,0l0.281,0l0.531,-0.282l0.532,-0.234l0.25,0l0.531,0l0.297,-0.281l0.515,0l0.282,0l-0.282,0.797l-0.25,0.796l-0.265,0.532l-0.532,0.812l-0.296,0.531l-0.782,0.516l-0.812,0.813l-1.047,0.515l-1.609,0.547l-1.829,0.266l-1.875,0.273l-1.625,0l-1.593,-0.539l-1.063,-0.547l-1.062,-0.515l-0.782,-0.266l-0.515,-0.25l-0.547,0.25l-0.563,0.508l-0.25,1.086l0.25,0.531l0.563,0.266l0.547,0.507l0.265,0.539l0.469,0.282l0.281,0.508l0.563,0.57l0.281,0.5l0.25,0.539l0,0.805l-0.812,0l-1.297,-0.235l-1.36,0l-1.343,0l-1.578,-0.57l-1.61,-0.539l-1.375,-0.774l-1.281,-1.086l-1.344,-1.57l-1.047,-2.117l-0.265,-1.109l-0.813,-1.047l-0.797,-1.071l-1.062,-1.054l-1.063,-0.813l-0.812,-0.804l-1.063,-0.805l-0.5,-0.524l-0.562,-0.257l-0.266,0l-0.265,0l-0.532,-0.25l-1.062,-0.266l-1.344,0l-1.312,-0.281l-1.329,0.281l-1.343,0l-1.078,0.516l-0.782,0.781l-0.562,1.109l3.5,4.25l2.406,4.774l2.094,5.047l1.875,5.07l1.875,5.062l2.125,4.524l2.937,4.258l3.672,3.187l4.813,2.172l6.156,0.781l0.812,0.531l0.5,0.797l0.532,0.797l0.281,1.078l0.281,0.782l0,1.062l0,1.078l-0.281,1.078l0,1.039l-0.281,1.055l1.093,4.258l0.782,4.555l0.797,4.25l0.781,4.523l0.562,4.508l1.063,4.578l0.797,4.5l1.078,4.25l1.312,4.509l1.61,4.302l-1.36,1.297l-1.062,1.346l-1.313,0.828l-1.343,0.5l-1.579,0.547l-1.343,0.279l-1.594,0.784l-1.313,0.773l-1.625,1.063l-1.312,1.608l-0.844,2.414l-1.015,1.858l-1.61,1.057l-1.875,1.063l-2.375,0.522l-2.14,0.282l-2.407,0.266l-2.359,0.281l-2.438,0.546l-2.109,0.743l-0.812,0.289l-1.063,0.279l-0.781,0.268l-0.531,0.296l-0.563,0l-0.5,0l-0.562,0l-0.532,0l-0.25,-0.564l-0.531,-0.568l1.063,-1.289l1.312,-1.609l1.344,-1.345l1.359,-1.564l1.328,-1.328l1.563,-1.625l1.344,-1.599l1.046,-1.344l1.079,-1.557l1.078,-1.608l-0.813,-0.546l-0.797,-0.289l-0.812,0l-0.516,0.289l-0.797,0.546l-0.812,0.509l-0.75,0.523l-0.813,0.576l-0.828,0.5l-0.797,0.549l-0.812,0.797l-0.781,1.055l-0.532,0.802l-0.781,0.797l-0.812,0.789l-0.532,0.836l-1.062,0.25l-1.078,0.267l-1.078,0.259l-1.594,-0.259l-1.047,-0.267l-0.797,0l-0.266,-0.25l-0.265,0l-0.281,0l-0.266,-0.279l-0.781,0l2.109,-1.859l2.406,-2.141l2.125,-2.125l2.407,-2.164l2.406,-1.836l2.656,-1.359l2.656,-1.047l2.657,-0.531l2.656,0.25l2.937,1.108l1.047,0.22l1.063,-0.22l0.812,0l0.563,-0.267l0.5,-0.56l0.562,-0.798l0.25,-0.796l0.25,-0.82l0.531,-1.04l0.282,-1.047l-0.813,-4.258l-0.5,-4.555l-0.797,-4.781l-1.078,-4.289l-1.344,-4.211l-1.906,-4.031l-2.094,-3.461l-2.921,-2.938l-3.719,-2.39l-4.531,-1.61l-3.188,-0.773l-2.922,-0.547l-3.203,-1.055l-2.937,-1.039l-3.204,-1.078l-3.187,-1.078l-2.906,-1.062l-2.953,-1.329l-2.922,-1.328l-2.938,-1.328l-1.875,-1.344l-1.312,-1.609l-1.328,-1.594l-1.079,-1.593l-0.796,-1.844l-0.813,-1.625l-0.781,-1.875l-0.531,-1.57l-0.797,-1.868l-0.813,-1.593l-1.578,-2.391l-1.594,-2.688l-1.875,-2.359l-1.859,-2.687l-2.141,-2.118l-2.375,-2.398l-2.406,-1.859l-2.672,-1.329l-2.922,-1.343l-3.218,-0.532l-0.797,0l-0.766,-0.25l-0.547,0l-0.531,0l-0.531,0l-0.547,0l-0.781,0.25l-0.532,0l-0.797,0.532l-0.812,0.273l1.609,0.774l1.313,0.812l1.344,0.813l1.046,0.515l1.329,0.813l1.359,0.531l1.031,0.773l1.375,0.821l1.047,0.508l1.328,0.835l-6.672,-0.265l-7.703,-0.274l-8.265,0l-9.032,0.274l-9.078,0.5l-9.031,0.539l-8.781,0.805l-8.547,0.523l-7.438,1.063l-6.675,0.804l0.281,-1.594l0.519,-1.601l0.809,-1.836l1.066,-1.609l1.063,-1.883l0.816,-1.867l0.512,-1.579l0,-1.312l-0.801,-1.359l-1.328,-0.797l-1.039,0l-1.098,0.562l-0.8,0.766l-0.528,1.062l-0.519,1.078l-0.278,1.063l-0.281,1.328l-0.512,1.328l-0.273,1.086l-0.543,1.031l-0.785,1.102l-1.055,1.523l-0.816,1.641l-0.785,1.617l-0.809,1.328l-1.063,1.578l-1.062,1.36l-1.313,1.062l-1.343,0.774l-1.891,0.554l-3.703,-1.898l-3.734,-1.852l-3.985,-1.578l-3.738,-1.601l-3.992,-1.625l-4.008,-1.586l-4,-1.297l-3.973,-1.102l-3.992,-1.304l-3.992,-1.086l-1.074,0l-1.336,-0.242l-1.047,-0.266l-1.09,0l-1.055,-0.25l-1.062,-0.297l-1.082,-0.273l-1.047,-0.243l-1.074,-0.531l-1.063,-0.539l-2.39,-0.555l-2.672,-0.25l-2.641,0l-2.672,0.532l-2.664,1.047l-2.41,1.109l-2.383,1.328l-2.137,1.82l-2.117,1.899l-1.609,1.844l-1.856,1.867l-1.617,2.39l-1.582,2.914l-1.594,2.954l-1.609,2.671l-1.598,2.36l-1.855,1.344l-2.41,0.781l-2.91,-0.781l-3.211,-2.36l-1.582,1.016l-1.329,1.609l-1.082,1.344l-0.543,1.859l-0.765,1.618l-0.555,1.601l-0.789,1.578l-1.074,1.313l-1.336,1.093l-1.856,0.797l-20.496,2.914l12.231,-15.968l0,-0.258l0,-0.281l0,-0.235l-0.254,0l-0.273,-0.281l-0.262,-0.273l-0.274,0l-0.281,-0.274l0,-0.266l-0.254,0l-0.801,0.266l-0.8,0.828l-1.055,1.016l-1.074,1.086l-1.055,1.039l-1.062,1.109l-1.075,1.313l-0.773,1.062l-0.817,0.821l-0.265,0.507l-1.07,0.805l-1.067,0.289l-1.055,0l-0.8,-0.289l-1.063,-0.273l-0.801,-0.266l-1.07,-0.266l-0.793,-0.234l-1.074,-0.273l-1.063,0l1.602,-1.086l1.871,-1.063l1.582,-1.328l1.848,-1.344l2.144,-1.312l1.891,-1.313l2.101,-1.344l1.864,-1.328l2.129,-1.343l1.855,-1.047l1.344,0l1.336,0l1.074,-0.282l1.336,-0.281l1.32,-0.273l1.344,-0.508l1.055,-0.563l1.328,-0.765l1.328,-0.539l1.062,-0.539l5.594,-2.391l4.809,-3.469l4.519,-4.515l4.266,-4.782l4.246,-4.796l4.266,-4.532l4.781,-3.468l5.082,-2.391l5.848,-0.789l6.671,1.305l29.536,2.921l0.8,-0.25l0.809,-0.257l0.809,-0.258l1.054,-0.281l0.793,-0.266l0.817,-0.281l0.511,-0.532l0.262,-0.515l0,-0.797l-0.527,-1.086l-16.766,-0.258l0.254,-2.922l0.281,-3.203l0.52,-3.203l1.07,-2.906l1.32,-2.938l1.61,-2.929l1.863,-2.672l2.137,-2.383l2.664,-1.859l2.926,-1.86l2.929,-0.812l2.93,-1.071l2.918,-0.789l2.672,-0.812l2.922,-0.797l2.687,-0.813l2.641,-0.789l2.934,-0.789l2.656,-0.812l2.945,-0.781l1.574,-0.813l1.594,-0.805l1.606,-0.789l1.609,-0.812l1.601,-0.766l1.344,-1.078l1.313,-1.078l1.054,-1.578l0.536,-1.328l0.527,-1.883l0.801,-0.258l0.8,-0.266l0.809,0l1.063,0.266l0.808,0l1.063,0.547l0.785,0.25l1.082,0.266l0.789,0.265l1.066,0l1.871,0.242l2.129,-0.242l1.86,-0.265l1.859,-0.516l1.609,-0.547l1.86,-0.797l1.594,-1.062l1.328,-1.078l1.609,-1.329l1.297,-1.343l0.828,0.539l1.063,0.523l0.796,0.547l0.797,0.547l0.797,0.797l0.547,0.797l0.781,0.531l0.547,0.812l0.25,0.774l0.281,1.07l0,-0.265l0,3.484l-0.281,3.172l-0.797,2.937l-0.781,2.914z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M308.457,382.657l1.062,1.578l0.797,1.883l1.078,1.586l0.782,1.593l0.812,1.594l0.797,1.078l1.062,1.313l1.079,1.343l1.328,1.079l1.328,1.039l1.328,1.086l1.078,0.828l1.047,0.484l0.531,0.289l0.266,0.258l-0.266,0.281l0,0.266l-0.25,0.265l-0.547,0.547l-0.515,0.5l-0.563,0.539l-0.781,0.524l-1.078,0.531l-1.063,0.547l-0.797,0.25l-0.796,0.266l-0.813,0.257l-0.516,0l-0.796,0l-0.797,-0.257l-0.547,-0.266l-0.531,-0.25l-0.532,-0.547l-0.515,-0.766l-0.266,-0.289l-0.281,-0.257l-0.531,0l-0.532,0l-0.531,0l-0.531,0l-0.813,0l-0.515,0l-0.797,0l-0.531,0l-1.344,-0.782l-0.813,-1.078l-0.25,-1.883l0,-1.867l0.532,-2.375l0.531,-2.429l0.812,-2.352l0.532,-2.422l0.531,-2.406l0,-2.117l-1.875,2.117l-1.875,2.406l-1.844,2.656l-1.344,2.672l-1.328,2.922l-0.797,3.195l-0.515,2.961l-0.282,3.157l0.532,2.968l1.062,2.891l0.547,1.336l0.781,1.328l1.078,1.617l0.797,1.313l0.797,1.343l0.266,1.344l0.25,1.313l-0.516,1.07l-1.328,1.086l-1.859,0.766l-5.078,1.609l-5.329,1.602l-5.312,1.851l-5.063,1.875l-5.046,2.141l-5.063,2.406l-4.531,2.906l-4.266,3.172l-3.719,4.03l-3.468,4.228l-0.266,0.571l-0.547,0.49l-0.515,0.268l-0.547,0.289l-0.516,0.279l-0.531,0.267l-0.813,0l-0.515,-0.267l-0.547,0l-0.531,-0.279l-1.063,-0.557l-0.516,-0.789l-0.812,-0.529l-0.531,-0.768l-0.547,-0.544l-0.516,-0.517l-0.531,-0.267l-0.531,0l-0.813,0.487l-0.797,0.841l-1.047,1.297l-1.093,1.057l-0.782,1.117l-0.546,1.047l-0.782,0.779l-0.543,1.057l-0.8,1.063l-0.547,1.367l-1.047,1.302l-1.063,1.612l-1.593,0.273l-1.59,0.279l-1.883,0.25l-1.856,0.297l-1.863,0.245l-2.121,0.505l-1.879,0.267l-1.855,0.54l-1.61,0.258l-1.59,0.263l0.528,-1.578l0.543,-1.858l0.801,-1.577l0.816,-1.625l0.777,-1.594l0.797,-1.601l1.082,-1.344l0.774,-1.612l0.816,-1.568l0.777,-1.579l-1.336,-0.569l-1.32,0.302l-1.055,0.784l-1.082,0.812l-1.046,1.328l-0.801,1.326l-0.809,1.596l-0.797,1.328l-0.793,1.326l-0.816,1.065l-9.84,1.359l1.606,-1.898l1.593,-1.612l1.575,-1.865l1.898,-1.578l1.574,-1.618l1.856,-1.569l1.625,-1.875l1.601,-1.883l1.344,-1.837l1.312,-2.406l6.375,-0.516l6.399,-0.813l6.129,-1.593l6.125,-1.844l5.609,-2.406l5.563,-2.938l5.062,-3.484l4.516,-3.688l4.281,-4.265l3.719,-4.836l-1.875,-1.555l-2.11,-1.594l-1.875,-1.898l-1.859,-1.852l-1.859,-2.132l-1.344,-1.868l-1.328,-2.406l-0.516,-2.398l-0.547,-2.657l0.282,-2.929l2.656,-4.25l3.172,-4l3.765,-2.907l3.985,-2.671l4.265,-2.094l4.516,-1.875l5.047,-1.11l5.078,-0.789l5.312,-0.539l5.329,-0.25l2.39,3.188l-0.265,-0.25l0.781,2.109l0.828,1.875l1.047,1.867l0.812,1.602z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M294.082,377.875l-0.797,0.516l-0.531,0.281l-0.282,0.25l-0.281,0l0,0.266l0.281,0l0.813,0l0.516,0.273l1.062,0.258l1.078,0l1.063,0.281l1.062,0l1.328,0l1.078,0l1.063,0.25l1.047,0l1.344,0.54l1.078,0.273l0.797,0.516l1.062,0.281l0.531,0.5l0.532,0.297l0.531,0l0,0.25l-2.656,-5.032l-0.266,-0.281l-0.266,0l-0.562,-0.265l-0.781,-0.266l-0.797,0l-0.797,-0.273l-1.313,0l-1.343,0l0,-0.274l-1.329,0.274l-1.343,0.273l-1.063,0.266l-1.078,0.265z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M354.816,266.813l0,-0.266l0,-0.234l0,-0.281l0,-0.289l0,-0.258l0,-1.328l-0.547,-1.071l-0.281,-1.039l-0.781,-1.078l-0.813,-0.797l-1.062,-0.812l-1.063,-0.531l-1.062,-0.532l-1.328,-0.25l-1.344,-0.289l-0.828,0.289l-1.031,0l-0.813,0.25l-0.781,0.282l-0.547,0.25l-0.781,0.531l-0.563,0.547l-0.797,0.508l-0.515,0.554l-0.25,0.789l2.64,0.289l0,-0.289l0,-0.273l0.266,-0.25l0,-0.266l0,-0.281l0,-0.273l0,-0.243l0,-0.265l0,-1.328l-0.531,-1.344l-0.25,-1.047l-0.797,-1.07l-0.797,-0.805l-1.078,-0.813l-1.063,-0.531l-1.047,-0.539l-1.359,-0.258l-1.328,0l-1.063,0l-1.078,0.258l-0.765,0.274l-1.078,0.265l-0.797,0.531l-0.797,0.547l-0.578,0.797l-0.5,0.797l-0.532,0.789l-0.531,0.805l1.563,0.523l0.297,0l0,-0.242l0,-0.281l0,-0.266l0,-0.265l0.281,-0.274l0,-0.242l0,-0.297l0,-0.25l-0.281,-1.328l-0.297,-1.063l-0.5,-1.078l-0.532,-1.07l-0.796,-1.055l-1.063,-0.547l-1.078,-0.781l-1.063,-0.273l-1.328,-0.524l-1.328,0l-1.328,0l-1.344,0.25l-1.047,0.547l-1.359,0.266l-1.047,0.805l-1.062,0.523l-0.813,0.789l-0.797,1.07l-0.515,0.797l-0.547,1.078l1.594,0.797l0.265,0l0,-0.281l0,-0.25l0,-0.266l0,-0.273l-0.265,-1.07l-0.25,-1.329l-0.532,-1.062l-0.812,-1.063l-1.063,-0.804l-1.062,-0.789l-1.063,-0.555l-1.328,-0.523l-1.609,-0.25l-1.594,0l-1.328,0l-1.359,0.25l-1.297,0.523l-1.344,0.555l-1.063,0.515l-1.078,0.813l-1.047,1.062l-0.546,0.797l-0.516,1.063l-0.531,1.062l2.937,0l-0.297,-1.062l-0.531,-1.063l-0.516,-0.797l-0.781,-1.062l-1.094,-0.539l-1.062,-0.789l-1.344,-0.555l-1.312,-0.242l-1.594,-0.281l-1.594,-0.25l-1.344,0.25l-1.593,0.281l-1.344,0.531l-1.063,0.531l-1.062,0.797l-1.063,1.071l-0.781,0.789l-0.547,1.328l-0.25,1.062l-0.281,1.344l0,0.25l0.281,0l1.313,-0.25l-0.25,-0.813l-0.547,-1.07l-0.797,-0.789l-0.797,-0.539l-0.797,-0.789l-1.062,-0.523l-1.078,-0.54l-1.047,-0.265l-1.36,-0.266l-1.312,0l-1.328,0.266l-1.61,0.265l-1.343,0.54l-1.047,0.523l-1.063,0.789l-1.062,0.805l-0.813,1.062l-0.515,1.078l-0.266,1.328l-0.281,1.055l0.281,0.274l0,0.531l0,0.523l0.266,0.821l0,0.781l0.265,0.812l0,0.516l0.25,0.547l0,0.25l0,0.273l-1.843,-1.586l-1.61,-1.343l-1.594,-1.071l-1.593,-1.054l-1.875,-0.813l-1.875,-0.773l-2.094,-0.555l-2.688,-0.25l-2.937,-0.266l-3.438,-0.273l-1.343,0l-1.614,0l-1.855,0.273l-1.856,0.516l-2.128,0.555l-1.872,0.523l-2.128,0.547l-1.872,0.781l-1.847,0.789l-1.871,1.071l-2.93,1.586l-2.656,1.632l-2.672,1.578l-2.934,1.594l-2.675,1.094l-2.918,0.773l-2.938,0.274l-3.184,-0.274l-3.453,-0.773l-3.457,-1.625l-0.527,0.797l-0.274,0.547l0,0.515l0.274,0.539l0.246,0.539l0.535,0.532l0.528,0.531l0.281,0.516l0.265,0.539l0.262,0.539l-1.59,2.922l0,1.859l0.782,1.078l1.875,0.531l2.125,0l2.417,0.266l2.665,0l2.121,0.547l1.59,1.062l0.8,1.571l-13.047,5.07l0,0.273l0.262,0.258l0.266,0.547l0.281,0.508l0.254,0.555l0.519,0.812l0.547,0.531l0.528,0.774l0.797,0.523l1.609,-0.781l1.066,-0.281l1.063,-0.235l1.344,-0.281l1.039,-0.531l1.343,0l1.082,-0.281l1.313,0l1.062,0.281l1.063,0.531l0.809,0.797l0.273,1.328l0,1.063l-0.273,1.343l-0.543,0.797l-0.528,1.055l-0.801,0.805l-0.816,0.796l-0.777,0.532l-1.078,0.523l-0.786,0.555l0.786,0.265l0.543,0l0.8,0l0.512,-0.265l0.816,0l0.801,-0.266l0.528,-0.289l0.816,0l0.777,0l0.797,0l0.809,-0.523l0.785,-0.532l0.816,-0.531l0.793,-0.531l0.797,-0.797l0.528,-0.516l0.554,-0.812l0.528,-0.797l0.246,-0.812l0.281,-0.805l1.066,-0.258l1.063,-0.266l1.062,0l1.344,0l1.313,0.266l1.082,0l1.328,0.258l1.054,0.289l1.344,0l1.063,0.25l2.656,0.805l2.394,0.273l2.391,-0.273l2.141,-0.805l2.14,-0.797l2.141,-1.328l1.844,-1.328l1.859,-1.594l1.875,-1.344l1.859,-1.343l2.391,2.687l2.141,1.875l2.406,1.305l2.391,0.804l2.656,0.266l2.656,0l2.922,-0.266l2.922,-0.531l2.937,-0.531l3.203,-0.516l-0.531,-0.812l-0.531,-0.797l-0.813,-1.063l-0.515,-0.812l-0.531,-0.797l-0.547,-1.062l-0.797,-0.539l-0.797,-0.79l-1.078,-0.554l-1.047,-0.524l-1.328,-0.234l-1.063,-0.57l-1.343,-0.243l-1.594,-0.265l-1.328,-0.281l-1.344,-0.266l-1.047,-0.25l-1.344,-0.516l-1.328,-0.281l-1.062,-0.812l0.531,-0.266l0.531,-0.266l0.797,-0.531l0.531,-0.266l0.547,-0.265l0.516,-0.25l0.812,-0.297l0.516,-0.273l0.797,-0.243l0.812,0l6.125,-1.343l6.391,-0.532l6.656,0l6.391,0.282l6.39,0.789l6.125,1.32l6.391,1.352l5.844,2.132l5.875,2.141l5.578,2.641l5.594,2.937l5.312,3.703l5.094,4.281l4.797,4.813l4.25,5.297l3.719,5.594l3.218,5.593l2.11,6.125l1.578,6.375l0.265,6.141l2.938,-4.797l0.531,-1.344l0.531,-1.047l0.563,-1.328l0.25,-1.078l0.266,-1.047l0.281,-1.086l0.25,-1.062l0,-1.07l0,-1.063l0,-1.062l0,-0.516l0,-0.797l-0.25,-0.531l-0.281,-0.531l-0.266,-0.563l-0.25,-0.508l-0.563,-0.539l-0.265,-0.25l-0.547,-0.554l-0.766,-0.258l1.047,2.39l0.266,-0.281l0,-0.508l0.265,-0.273l0.282,-0.516l0,-0.265l0.281,-0.547l0,-0.532l0.25,-0.539l0,-0.273l0,-0.516l-0.25,-1.078l-0.281,-1.062l-0.282,-1.071l-0.531,-0.789l-0.797,-0.812l-0.515,-0.781l-1.078,-0.813l-0.766,-0.531l-1.094,-0.274l-1.062,-0.242l0.797,1.586l0.265,-0.258l0.266,-0.547l0,-0.265l0.25,-0.274l0,-0.539l0,-0.25l0.265,-0.539l0,-0.273l0,-0.516l0,-0.25l0,-1.344l-0.515,-1.078l-0.266,-1.047l-0.797,-1.078l-0.812,-0.797l-0.75,-0.796l-1.094,-0.516l-1.344,-0.547l-1.062,-0.266l-1.344,-0.25l1.594,2.375l0.281,-0.531l0.281,-0.265l0,-0.266l0.25,-0.25l0,-0.547l0,-0.266l0.297,-0.531l0,-0.273l0,-0.524l0,-0.265l-0.297,-1.344l-0.25,-1.063l-0.562,-1.062l-0.5,-1.047l-0.813,-0.812l-1.062,-0.797l-1.063,-0.813l-1.062,-0.258l-1.328,-0.273l-1.344,-0.266l0,1.852l0.281,-0.242l0,-0.266l0.235,-0.547l0,-0.258l0,-0.273l0.25,-0.516l0,-0.281l0,-0.273l0,-0.258l0,-0.531l0,-1.063l-0.25,-1.344l-0.516,-1.047l-0.828,-1.062l-0.75,-0.797l-1.094,-0.812l-1.062,-0.532l-1.047,-0.531l-1.36,-0.266l-1.312,0l-0.281,0l-0.516,0l-0.547,0l-0.266,0l-0.234,0.266l-0.547,0l-0.281,0l-0.531,0.274l-0.266,0.257l-0.266,0l2.125,-0.257l-0.234,-1.352l-0.266,-1.047l-0.562,-1.062l-0.531,-1.079l-0.813,-0.789l-1.062,-0.804l-1.032,-0.797l-1.343,-0.281l-1.094,-0.25l-1.313,-0.266l-0.281,0l-0.234,0l0,-0.273l0,-0.258l0.234,-0.266l0,-0.266l0.281,0l0,-0.265l-0.281,0l-0.234,0l-1.61,-1.328l2.125,-0.289l2.157,-0.258l1.843,-0.266l1.844,0.266l1.906,0.258l1.829,0.57l2.156,0.773l2.39,1.071l2.922,1.328l3.469,1.601l3.469,1.868l3.437,2.109l3.188,2.422l3.203,2.633l3.156,2.672l3.25,3.21l2.656,3.188l2.657,3.469l2.406,3.429l2.125,3.758l0.531,-1.07l0.531,-0.789l0.266,-0.813l0,-0.797l0.266,-0.531l0,-0.781l0,-0.547l0,-0.797l0,-0.531l0,-0.797l0,-1.078l0,-0.797l-0.532,-0.797l-0.25,-0.531l-0.531,-0.516l-0.562,-0.531l-0.782,-0.562l-0.812,-0.25l-0.781,-0.266l-1.063,-0.289l1.844,5.086l0.281,-0.547l0.531,-0.25l0.25,-0.547l0.282,-0.547l0.25,-0.523l0.281,-0.539l0,-0.516l0.281,-0.531l0,-0.797l0,-0.531l0,-1.344l-0.281,-1.07l-0.531,-1.047l-0.782,-1.071l-0.812,-0.812l-1.063,-0.797l-1.062,-0.781l-1.063,-0.281l-1.343,-0.266l-1.313,-0.25l-0.312,0l-0.25,0l-0.235,0l-0.265,0.25l-0.282,0l-0.281,0l2.938,4.266l0.281,-0.539l0.266,-0.274l0.281,-0.516l0,-0.273l0.265,-0.539l0.25,-0.5l0,-0.57l0,-0.243l0,-0.546l0,-0.516l0,-1.328l-0.25,-1.07l-0.546,-1.055l-0.829,-1.063l-0.781,-1.093l-0.812,-0.532l-1.063,-0.797l-1.312,-0.515l-1.328,-0.274l-1.344,0l-0.25,0l-0.281,0l-0.516,0l-0.281,0.274l-0.547,0l-0.266,0l-0.531,0.25l-0.266,0l-0.25,0.265l-0.531,0l3.469,3.485l0.25,-0.297l0,-0.516l0.265,-0.25l0,-0.281l0.219,-0.531l0,-0.281l0,-0.532l0.313,-0.273l0,-0.524l0,-0.265l-0.313,-1.328l-0.219,-1.078l-0.515,-1.313l-0.547,-0.805l-0.813,-1.054l-1.062,-0.813l-1.047,-0.531l-1.062,-0.531l-1.344,-0.266l-1.328,0l-0.797,0l-0.5,0l-0.563,0.266l-0.531,0l-0.547,0.242l-0.5,0.289l-0.547,0.281l-0.562,0.25l-0.5,0.266l-0.531,0.547l1.593,1.859l0.25,0l0,-0.266l0,-0.265l0,-0.274z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M235.769,266.313l-0.793,-0.281l-0.816,-0.289l-0.801,-0.258l-0.808,0l-0.782,0l-0.793,0l-1.062,0l-0.801,0.258l-0.527,0.289l-0.817,0.281l-0.511,0.234l-0.801,0.539l-0.281,0.539l-0.536,0.266l-0.246,0.524l0.246,0.539l0.536,0.531l0.281,0.258l0.527,0.539l0.785,0.265l0.535,0.266l0.809,0.273l0.801,0.274l0.789,0l0.785,0l1.063,0l0.808,0l0.801,-0.274l0.816,-0.273l0.793,-0.266l0.52,-0.265l0.543,-0.539l0.547,-0.258l0.5,-0.531l0.281,-0.539l-0.281,-0.258l0,-0.266l-0.5,-0.531l-0.547,-0.547l-0.543,-0.266z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M233.359,268.157l0.52,-0.266l0.281,-0.531l0,-0.547l0.266,-0.5l0,-0.57l0,-0.524l-0.266,-0.531l0,-0.289l-0.52,-0.508l-0.281,-0.266l-0.527,-0.539l-0.281,-0.257l-0.52,0l-0.543,-0.266l-0.512,0l-0.8,0l-0.536,0.266l-0.527,0l-0.281,0.257l-0.528,0.539l-0.257,0.266l-0.278,0.508l-0.25,0.57l-0.261,0.516l0,0.547l0,0.515l0.261,0.539l0.25,0.274l0.278,0.531l0.257,0.266l0.528,0.531l0.543,0.266l0.539,0l0.512,0.25l0.55,0l-0.273,0l0.785,0l0.543,-0.25l0.52,0l0.546,-0.266z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"M192.359,285.461l-3.199,0.258l-2.918,-0.258l-2.938,-0.273l-2.382,-0.797l-2.137,-1.062l-1.863,-1.329l-1.075,-1.609l-0.808,-1.844l-0.528,-1.609l0,-1.578l0,-1.617l0.528,-1.344l0.547,-1.039l0.535,-0.547l0.801,-0.531l0.543,0l0.511,0.265l0.282,0.539l0.246,0.524l0.527,0.547l0.273,0.797l0.289,0.789l0.52,0.804l0.262,0.813l0.793,0.781l0.543,0.797l0.531,0.547l0.246,0.531l0.551,0.281l0.265,0.516l0.282,0l0.246,0.25l0,0.266l0.527,0l0.281,0.281l0.266,0.265l0.535,0l0.801,0.243l0.527,0l0.801,0.273l0.527,0l0.809,0l0.797,0l0.539,0l0.527,0l0.782,0l1.355,0l1.582,0l1.871,-0.273l2.129,0l1.855,0l1.883,-0.243l1.575,0l0.8,-0.265l0.543,0l-0.265,3.969l-0.278,-0.25l-1.586,0.531l-2.152,0.531l-2.637,0.531l-2.937,0.266z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M0.359,0.336h468.613v470.181h-468.613z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m364.551,313.563c0.516,-1.703 0.359,-3.656 -0.5,-5.477 -0.922,-1.914 -2.469,-3.297 -4.281,-3.945 0.719,-1.844 0.719,-3.891 -0.188,-5.742 -0.984,-2.078 -2.852,-3.445 -4.984,-3.953 0.531,-1.734 0.492,-3.539 -0.266,-5.164 -1.242,-2.586 -4.047,-4.047 -7.18,-4.078 0.477,-1.703 0.375,-3.484 -0.375,-5.109 -1.578,-3.297 -5.578,-4.859 -9.594,-4.031 0,-1.047 -0.195,-2.094 -0.688,-3.047 -1.766,-3.672 -6.461,-5.172 -10.953,-3.688 0.266,-1.328 0.148,-2.672 -0.438,-3.875 -1.789,-3.734 -7.164,-4.891 -12.07,-2.578 -1.078,0.547 -2.047,1.203 -2.867,1.938 0.117,-1.109 -0.063,-2.234 -0.539,-3.25 -1.789,-3.734 -7.172,-4.883 -12.031,-2.555 -0.844,0.406 -1.656,0.883 -2.383,1.438 0,-0.016 0,-0.031 0,-0.063 -1.781,-3.758 -7.164,-4.883 -12.047,-2.555 -1.586,0.75 -2.93,1.797 -3.953,2.945 -1.797,-3.094 -6.688,-4.523 -11.766,-3.227 -3,0.766 -5.492,2.344 -7.031,4.227 -0.039,0 -0.086,0 -0.086,0.016 -9,-9.57 -20.555,-8.508 -23.781,-8.047 -16.124,2.398 -24.093,12.656 -34.246,13.476 -4.602,0.391 -9.23,-1.172 -11.574,-2.477 -2.25,4.133 1.887,2.742 1.535,5.539 -0.137,0.953 -4.609,6.039 1.758,6.383 3.098,0.18 8.504,-0.578 10.395,1.883C174.527,283.641 182.68,269.203 177.609,269.203c-7.336,0 -6.152,21.172 14.391,17.172 0.719,1.641 2.242,2.703 3.328,3.391 6.848,-4.609 22.105,-2.094 7.695,8.281 11.457,1.406 13.098,-6.609 13.234,-7.188 4.125,-2.016 13.473,1.875 18.672,1.281 5.168,-0.594 12.387,-7.922 14.418,-8.391 7.188,8.391 12.266,7.938 26.234,4.75 -4.852,-12.18 -18.563,-8.047 -19.391,-11.234 5.313,-3.438 15.781,-5.211 27.719,-4.734 0.125,0.016 0.266,0.016 0.375,0.016 11.031,0.508 23.297,2.922 33.859,7.805 22.359,10.313 41.375,30.078 42.141,53.391 6.048,-6.969 6.923,-13.758 4.267,-20.18M225.488,268.36c0,-0.875 0.832,-1.578 2.082,-2.047 0.215,1.656 1.637,2.953 3.406,2.953 1.855,0 3.426,-1.547 3.426,-3.453 0,-0.07 0,-0.133 -0.035,-0.188 2.082,0.328 3.754,1.188 3.754,2.734 -0.008,4.282 -12.633,3.368 -12.633,0.001\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m166.73,312.954 l4.27,3.563c0,0 -5.223,6.359 -9.465,23.766 -4.375,-0.508 -8.152,-1.109 -8.152,-1.109 0,0 -5.438,0.141 -6.871,-7.656 -3.598,-19.82 -5.551,-23.508 -9.91,-30.727 -2.16,-3.539 -8.152,-6.109 -13.723,-8.438 -5.789,-2.445 -11.102,-4.563 -11.102,-4.563 0,0 -7.227,-3.703 -13.352,1.398 -0.707,0.586 -2.137,0.484 -2.137,-3.297 0,-3.789 -3.777,-2.234 -3.777,-2.234 0,0 -5.598,1.875 -11.223,3.188 -7.098,1.641 -17.359,-12.789 -21.039,-12.789 5.445,0 21.277,0.836 21.277,0.836 0,0 2.359,-1.867 0.824,-3.539 -1.527,-1.672 -13.824,1.523 -15.016,-0.609 -1.168,-2.102 -3.305,-6.227 -3.305,-6.227 0,0 6.625,2.813 16.688,1.883 7.664,-0.719 12.113,0.969 12.867,1.523 15.008,11.344 42.199,14.133 46.559,13.703 6.137,-0.602 9.145,5.625 10.281,7.805 1.535,2.953 2.473,4.969 2.473,4.969\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m380.832,290.875c-0.297,-1.086 -0.75,-2.047 -1.359,-2.922 0.328,-1.313 0.281,-2.672 -0.156,-3.969 -0.844,-2.422 -2.922,-4.109 -5.492,-4.797 0.117,-1.016 0.016,-2.047 -0.328,-3.016 -1.016,-2.891 -3.789,-4.773 -7.094,-5.086 0,-0.719 -0.117,-1.422 -0.383,-2.133 -1.344,-4.063 -6.258,-6.078 -11.109,-4.688 -0.078,-0.453 -0.156,-0.883 -0.313,-1.344 -1.453,-4.195 -6.703,-6.242 -11.797,-4.508 -0.141,0.055 -0.25,0.117 -0.406,0.164 0,-0.609 -0.094,-1.227 -0.328,-1.813 -1.328,-3.906 -6.469,-5.641 -11.547,-3.922 -0.828,0.297 -1.609,0.656 -2.297,1.094 -0.063,-0.484 -0.164,-0.969 -0.313,-1.438 -1.328,-3.891 -6.508,-5.609 -11.563,-3.906 -1.883,0.656 -3.523,1.703 -4.719,2.969 -0.984,-3.813 -5.719,-6.094 -10.797,-5.141 -2.734,0.547 -5.016,1.906 -6.484,3.656 -1.703,-2.906 -5.836,-4.469 -10.188,-3.656 -3.906,0.75 -6.938,3.203 -7.906,6.078 -1.672,-2.734 -5.469,-4.234 -9.422,-3.484 -4.891,0.938 -8.25,4.969 -7.484,9.016 0.094,0.406 0.219,0.797 0.375,1.203 1.766,-1.547 4.641,-3.203 7.141,-3.836 4.891,-1.258 9.656,-0.344 12.516,2.195 0.859,-0.672 1.797,-1.297 2.797,-1.797 5.078,-2.406 10.656,-1.594 13.641,1.688 0.25,-0.156 0.516,-0.375 0.781,-0.5 5.938,-2.859 12.703,-1.234 15.016,3.609 0.063,0.156 0.094,0.328 0.148,0.484 0.109,-0.047 0.211,-0.125 0.313,-0.203 5.961,-2.813 12.703,-1.211 15,3.609 0.18,0.375 0.305,0.75 0.422,1.156 11.656,-3.227 41.375,12.789 51.594,34.07 1.913,-2.363 2.678,-5.636 1.741,-8.832\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m67.304,388.774c0,0 6.297,0.938 7.719,1.672 1.418,0.656 9.961,-10.094 10.793,-10.094 0.824,0 1.648,0.477 1.887,1.313 0.242,0.797 -12.207,16.477 -12.207,16.477 0,0 11.145,-1.773 18.617,-2.844 7.48,-1.078 6.887,-5.703 8.656,-9.984 2.613,-2.953 4.152,-3.781 4.152,-3.781 0,0 2.238,2.781 6.871,3.109 5.094,0.344 5.703,-10.594 17.328,-21.5 11.625,-10.922 33.91,-1.055 33.91,-1.055 0,0 33.328,10.43 35.816,14.117 11.031,-3.563 11.871,-23.25 16.25,-22.063 7.719,2.094 -3.082,11.617 -2.488,15.273 5.934,-1.422 76.363,-5.914 81.363,-3.914 0.359,-0.117 -12.922,-7.102 -12.922,-7.102 0,0 17.188,-9.242 32.969,27.266 5.5,12.781 21.453,13.063 30.922,17.555 28.258,2.625 22.688,34.266 25.781,37.719 -0.609,1.806 -1.297,3.204 -1.297,3.204l-1.797,2.232h-1.797c0,0 -4.125,-1.672 -6.516,-1.547 -5.836,0.297 -11.484,5.719 -19.672,13.063 4.969,1.905 8.531,0.478 8.531,0.478 0,0 9.391,-11.922 11.953,-7.556 0.391,0.556 -11.953,13.5 -12.656,14.423 1.297,3.469 7.703,-0.75 9.844,-1.25 2.125,-0.47 14.898,1.155 15.672,-7.609 0.141,-1.969 11.469,-6.297 11.469,-6.297 0,0 1.422,-1.563 2.25,-2.578 -3.797,-3.969 -7.422,-38.813 -9.844,-44.125 2.156,-6.766 -1.516,-9.484 -1.516,-9.484 0,0 -5.57,0.453 -10.422,-2.789 -8.453,-3.047 -15.109,-33.656 -21.375,-36.148 0.469,-1.078 0.938,-1.945 1.75,-2.391 7.625,-4.031 16.063,5.641 17.102,10.922 0.719,3.563 11.047,3.797 11.047,3.797 0,0 0.953,-0.984 -3.234,-4.852 -0.883,-0.867 0.969,-1.766 0.969,-1.766 0,0 14.234,5.523 16.383,-4.641 -15.43,6.289 -25.297,-20.969 -47.328,-3.445 -9.836,-6.984 -38.297,-25.242 -97.953,-29.281 16.142,-20.391 12.095,-31.555 4.602,-34.29 -15.277,13.18 -20.504,3.438 -26.199,5.719 -3.063,19.789 -55.742,4.266 -55.613,46.016 0.813,-0.148 14.688,0.492 16.719,0.492 0.938,2.453 2.016,2.328 -5.215,4.578 -4.16,-0.672 -25.395,-2.133 -35.457,-4.234 -10.57,-1.078 -20.527,10.672 -20.527,10.672 0,0 -13.648,15.508 -17.441,17.656 -3.793,2.141 -9.711,4.266 -11.977,5.453 -2.254,1.172 -6.879,0.719 -6.879,0.719l-18.993,12.695z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m301.66,370.704c5.781,5.609 5.625,18.813 21.211,29.063 -8.406,9.125 -11.523,2.797 -12.094,2.25 -15.016,1.953 -2.938,-15.719 -4.344,-19.531 -18.672,19.656 -5.031,33.031 -5.031,33.031 0,0 3.586,5.234 -1.563,6.719 -11.227,3.25 -39.461,11.391 -47.18,25.429 -4.078,7.406 -8.969,-1.969 -10.656,-1.521 -3.203,0.766 -10.285,12.75 -10.285,12.75 0,0 -17.109,3.813 -17.688,3.094 -0.559,-0.703 5.344,-11.797 7.457,-15.719 -4.488,-1.82 -9.422,9.141 -9.422,9.141l-10.234,1.406c0,0 15.754,-15.328 16.281,-18 0.574,-1.688 31.578,2.938 53.5,-26.375 -39.581,-29.8 20.517,-44.144 30.048,-41.737\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m292.035,379.102c0,0 4.609,-4.422 14,-1.148 0.953,2.039 0.828,2.398 2.328,4.789 -2.766,-3.524 -13.25,-2.383 -16.328,-3.641\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m177.129,271.157c1.816,0.156 1.07,7.898 9.734,9.391 4.723,0.828 10.465,0.828 17.113,-0.164 0,0.789 -0.063,1.148 -0.129,2.031 -13.895,2.688 -17.406,3.656 -23.199,1.211 -6.879,-2.907 -5.703,-12.704 -3.519,-12.469\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M0.359,0.344h122.648v232.727h-122.648z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"M245.66,0.344h223.313v232.727h-223.313z\"\n      android:fillColor=\"#268bcc\"/>\n  <path\n      android:pathData=\"M245.644,148.223h77.063v84.855h-77.063z\"\n      android:fillColor=\"#ffd730\"\n      android:strokeColor=\"#00000000\"/>\n  <path\n      android:pathData=\"M391.863,148.223l77.063,0l0,-31.566l-111.625,0l0,116.375l34.562,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M245.644,85.317l-0.031,31.457l111.656,0l0,-116.359l-34.562,0l0,84.902z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M391.863,0.407h77.078v84.91h-77.078z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m322.706,0.415 l0,84.902 -77.062,0m-0.031,31.457 l111.656,0 0,-116.359m111.657,116.249 l-111.625,0 0,116.368m34.563,0 l0,-84.809 77.062,0m0.015,-62.906 l-77.078,0 0,-84.902\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m322.776,233.1 l0,-84.809 -77.062,0\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m245.5,0.247 l0,232.625 0,-232.625zM0,233.809l468.969,0 -468.969,0z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ju.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"467.969\"\n    android:viewportHeight=\"469.54303\">\n  <path\n      android:pathData=\"M233.344,67.09h234.625v67.082h-234.625z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M233.344,201.243h234.625v67.082h-234.625z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M233.344,335.403h234.625v67.078h-234.625z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,0h467.969v469.543h-467.969z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m18.551,68.664c0,21.738 10.059,47.387 38.395,48.121 5.254,0.145 18.43,-0.48 27.328,-9.152 5.543,-5.406 8.359,-12.941 8.359,-22.406 0,-15.883 -7.961,-22.777 -14.648,-25.754 -7.336,-3.27 -15.992,-3.031 -21.328,-1.598 1.801,-4.52 6.137,-11.418 19.992,-11.883 5.582,-0.184 13.609,1.25 20.113,9.168 8.168,9.93 15.527,31.977 4.238,80.57l-0.512,2.168h57.832l0.023,-1.754c0.719,-50.719 -9.488,-87.176 -30.367,-108.359 -16.863,-17.105 -35.886,-18.941 -43.288,-18.941 -65.375,0.008 -66.137,59.223 -66.137,59.82\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m84.688,7.067c-34.527,0 -51.137,16.328 -59,30.021 -8.809,15.359 -8.91,30.918 -8.91,31.566 0,22.523 10.504,49.121 40.109,49.898h0.512l0.625,0.016c17.586,0 36.375,-8.771 36.375,-33.344 0,-22.242 -15.309,-30.176 -29.637,-30.176 -1.496,0 -3.188,0.094 -4.875,0.313 2.418,-3.602 7.09,-7.273 16.816,-7.594 0.289,-0.008 0.57,-0.023 0.855,-0.023 7.227,0 13.488,3.078 18.105,8.895 10.91,13.73 12.191,41.688 3.602,78.688l-1.027,4.352h4.48,53.848 3.504l0.051,-3.5c0.719,-51.227 -9.664,-88.113 -30.891,-109.633 -17.335,-17.6 -36.933,-19.479 -44.542,-19.479m-64.368,61.566c0.016,-2.496 1.305,-58.021 64.367,-58.021 14.215,0 71.73,6.984 71.922,120.055 0,1.793 -0.016,3.609 -0.043,5.465L102.718,136.132c4.043,-17.375 5.777,-31.855 5.777,-43.785 -0.008,-35.078 -15.047,-48.156 -30.938,-48.156 -0.336,0 -0.645,0.008 -0.965,0.023 -20.762,0.695 -22.145,15.688 -23.035,16.84 0.57,-0.512 1.707,-1.035 3.242,-1.465 0.352,-0.098 0.727,-0.191 1.129,-0.281 1.91,-0.43 4.262,-0.711 6.832,-0.711 11.078,0 26.078,5.223 26.078,26.633 0,27.008 -23.785,29.789 -32.816,29.789 -0.375,0 -0.719,-0.008 -1.039,-0.008 -26.512,-0.703 -36.664,-24.68 -36.664,-46.352l0.001,-0.026 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"M90.777,142.145h77.582v11.938h-77.582z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M90.777,142.153h77.582v11.93h-77.582z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M90.777,175.059h77.582v11.934h-77.582z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M90.777,175.075h77.582v11.918h-77.582z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M75.113,158.657h108.918v11.93h-108.918z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M75.113,158.657h108.918v11.93h-108.918z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M164.129,191.883l26.582,222.051l-34.293,-40.953l-26.867,88.282l-27.117,-88.516l-34.043,41.187l26.328,-222.051z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M164.129,191.883l26.582,222.051l-34.293,-40.953l-26.867,88.282l-27.117,-88.516l-34.043,41.187l26.328,-222.051z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M233.344,0.016h234.625v67.074h-234.625z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M233.344,134.18h234.625v67.063h-234.625z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M233.344,268.325h234.625v67.078h-234.625z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M233.344,402.473h234.625v67.07h-234.625z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m233.014,-0.028 l0,469.59\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m232.814,67.266 l235.191,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m232.694,133.784 l235.191,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m232.694,201.646 l235.191,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m232.694,268.267 l235.191,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m232.694,335.243 l235.191,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m232.694,402.573 l235.191,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.52199984\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_lu.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"473.086\"\n    android:viewportHeight=\"475.406\">\n  <path\n      android:pathData=\"M0,0h473.086v474.671h-473.086z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,238.066h473.086v237.34h-473.086z\"\n      android:fillColor=\"#268bcc\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ne.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"471.602\"\n    android:viewportHeight=\"473.191\">\n  <path\n      android:pathData=\"M314.602,0h157v473.191h-157z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M156.957,0h157.629v473.191h-157.629z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,0h156.984v473.191h-156.984z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"M333.492,70.961l0,17.59l53.703,0l0,53.715l17.625,0l0,-53.715l53.702,0l0,-17.59l-53.702,0l0,-53.715l-17.625,0l0,53.715z\"\n      android:fillColor=\"#ffffff\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_nw.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"468.551\"\n    android:viewportHeight=\"469.82397\">\n  <path\n      android:pathData=\"M-0,0l0.266,468.722l467.129,0l0,-468.722l-467.129,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M467.395,468.972l0.25,-468.715l-467.114,0l-0.265,468.715l467.379,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M352.988,170.394l0,21.758l44.61,0l0,-24.672l-16.461,0l0,-9.832l0,-9.824l16.461,0l0,-24.942l-44.61,0l0,21.758l-18.312,0l0,-21.758l-24.125,0l0,-9.554l0,-9.551l24.125,0l0,-21.77l18.312,0l0,21.77l44.61,0l0,-24.688l-16.461,0l0,-9.824l0,-9.808l16.461,0l0,-24.688l-44.61,0l0,21.488l-18.312,0l0,-21.488l-40.594,0l0,21.488l-26.015,0l0,114.137l26.015,0l0,21.758l40.594,0l0,-21.758z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M114.129,170.394l0,21.758l-44.855,0l0,-24.672l16.718,0l0,-9.832l0,-9.824l-16.718,0l0,-24.942l44.855,0l0,21.758l18.305,0l0,-21.758l24.16,0l0,-9.554l0,-9.551l-24.16,0l0,-21.77l-18.305,0l0,21.77l-44.855,0l0,-24.688l16.718,0l0,-9.824l0,-9.808l-16.718,0l0,-24.688l44.855,0l0,21.488l18.305,0l0,-21.488l40.609,0l0,21.488l26.016,0l0,114.137l-26.016,0l0,21.758l-40.609,0l0,-21.758z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M238.879,255.066l0,2.117l0.258,2.656l0.266,2.914l0,3.454l0.257,3.453l0.547,3.718l0.258,3.446l0.523,3.461l0.547,2.898l0.782,3.211l1.312,2.906l1.625,2.125l1.578,1.86l1.844,1.593l2.133,1.063l2.133,1.062l2.117,0.782l2.125,0.531l1.867,0.797l2.375,0.531l2.922,0.266l3.453,0.257l3.977,0l4.257,-0.523l4.235,-0.805l4.25,-1.304l4.25,-1.86l3.984,-2.39l3.711,-2.922l2.133,-1.328l2.64,-1.328l2.922,-1.313l3.453,-1.078l3.454,-1.328l3.445,-0.805l3.445,-1.062l3.188,-0.524l3.172,-0.265l2.937,-0.266l6.359,0.531l6.118,1.328l5.851,2.125l5.297,3.188l4.508,3.453l3.976,4.25l3.204,4.781l2.375,5.297l1.593,5.836l0.532,5.852l-0.532,5.828l-1.593,5.578l-2.375,5.312l-3.204,4.782l-3.976,4.234l-4.508,3.711l-5.297,2.93l-5.851,2.382l-6.118,1.328l-6.359,0.54l-2.937,-0.266l-3.172,-0.274l-3.188,-0.804l-3.445,-0.781l-3.445,-1.071l-3.454,-1.054l-3.453,-1.329l-2.922,-1.062l-2.64,-1.328l-2.133,-1.328l-3.711,-2.914l-3.984,-2.133l-4.25,-1.313l-4.516,-0.539l-4.508,-0.281l-4.226,0.281l-4,0.789l-3.453,0.797l-2.657,1.328l-2.109,1.071l-3.453,3.445l-2.375,3.719l-1.344,3.984l-0.547,4.5l0.281,4.266l0.797,4.5l1.328,4.515l1.86,4.235l2.117,4.25l2.383,3.718l0.265,1.329l0.547,1.328l0.25,1.859l0.266,1.844l0,1.851l0.273,1.883l0,2.117l0,1.602l0.258,1.578l0,1.328l-0.531,4.508l-1.063,4.258l-1.585,3.703l-2.391,3.711l-2.914,3.211l-3.203,2.64l-3.969,2.118l-3.984,1.601l-4.516,1.063l-4.512,0.531l-4.504,-0.531l-4.511,-1.063l-3.985,-1.601l-3.984,-2.118l-3.176,-2.64l-2.91,-3.211l-2.41,-3.711l-1.574,-3.703l-1.075,-4.258l-0.527,-4.508l0,-1.328l0.273,-1.578l0,-1.602l0,-2.117l0.254,-1.883l0,-1.851l0.274,-1.844l0.265,-1.859l0.536,-1.328l0.261,-1.329l2.379,-3.718l2.117,-4.25l1.883,-4.235l1.309,-4.515l0.793,-4.5l0.273,-4.266l-0.535,-4.5l-1.32,-3.984l-2.403,-3.719l-3.445,-3.445l-2.113,-1.071l-2.664,-1.328l-3.45,-0.797l-3.976,-0.789l-4.254,-0.281l-4.504,0.281l-4.512,0.539l-4.242,1.313l-3.992,2.133l-3.711,2.914l-2.129,1.328l-2.648,1.328l-2.918,1.062l-3.449,1.329l-3.446,1.054l-3.457,1.071l-3.449,0.781l-3.191,0.804l-3.176,0.274l-2.93,0.266l-6.367,-0.54l-6.102,-1.328l-5.84,-2.382l-5.042,-2.93l-4.774,-3.711l-3.976,-4.234l-3.192,-4.782l-2.387,-5.312l-1.597,-5.578l-0.528,-5.828l0.528,-5.852l1.597,-5.836l2.387,-5.297l3.192,-4.781l3.976,-4.25l4.774,-3.453l5.042,-3.188l5.84,-2.125l6.102,-1.328l6.367,-0.531l2.93,0.266l3.176,0.265l3.191,0.524l3.449,1.062l3.457,0.805l3.446,1.328l3.449,1.078l2.918,1.313l2.648,1.328l2.129,1.328l3.711,2.922l3.992,2.39l4.242,1.86l4.239,1.304l4.257,0.805l4.247,0.523l3.976,0l3.457,-0.257l2.91,-0.266l2.387,-0.531l1.863,-0.797l2.137,-0.531l2.102,-1.063l2.129,-1.047l2.128,-1.062l2.122,-1.594l1.863,-1.867l1.59,-2.117l1.328,-2.641l0.785,-2.937l0.535,-2.922l0.266,-3.172l0.543,-2.922l0.257,-2.93l0.262,-2.914l0.266,-2.906l0,-2.938l0,-3.187l0,-2.922l0,-3.18l0.254,-23.625l0,-215.246l-30.246,0l0,215.52l-0.266,23.351l0,1.071l0,1.32l0,1.07l-0.262,1.313l0,1.062l0,1.328l0,1.329l0,1.078l0,1.312l0,1.344l-0.265,3.445l-1.047,2.117l-1.61,1.329l-1.593,0.796l-2.118,0.266l-1.855,-0.266l-1.867,-0.539l-1.328,-0.523l-1.055,-0.266l-0.254,-0.265l-4,-2.93l-3.976,-2.914l-3.977,-2.906l-4.52,-2.407l-4.511,-2.39l-4.504,-1.844l-4.778,-1.602l-5.046,-1.328l-5.313,-0.523l-5.312,-0.266l-11.145,0.789l-10.879,2.391l-10.082,3.984l-9.023,5.297l-8.231,6.649l-6.906,7.437l-5.84,8.485l-4.238,9.296l-2.656,10.079l-0.801,10.625l0.801,10.609l2.656,9.82l4.238,9.555l5.84,8.476l6.906,7.446l8.231,6.64l9.023,5.297l10.082,3.985l10.879,2.39l11.145,0.797l5.312,-0.265l5.313,-0.532l5.046,-0.804l4.778,-1.313l4.765,-1.586l4.512,-2.125l4.52,-2.14l3.984,-2.375l4.242,-2.938l3.719,-2.906l1.32,0.797l-2.129,2.922l-1.847,2.906l-1.598,3.187l-1.328,3.203l-1.051,3.43l-1.062,3.461l-0.801,3.438l-0.535,3.468l-0.266,3.703l0,3.719l0.801,9.016l2.129,8.781l3.449,7.953l4.504,7.156l5.848,6.633l6.632,5.586l7.43,4.5l8.223,3.195l8.761,2.133l9.29,0.782l9.3,-0.782l8.735,-2.133l8.242,-3.195l7.43,-4.5l6.64,-5.586l5.563,-6.633l4.797,-7.156l3.437,-7.953l2.125,-8.781l0.781,-9.016l0,-3.719l-0.515,-3.703l-0.516,-3.468l-0.547,-3.438l-1.078,-3.461l-1.031,-3.43l-1.344,-3.203l-1.594,-3.187l-1.851,-2.906l-2.133,-2.922l1.328,-0.797l3.719,2.906l3.984,2.938l4.235,2.375l4.523,2.14l4.492,2.125l4.531,1.586l5.063,1.313l5.031,0.804l5.031,0.532l5.313,0.265l11.406,-0.797l10.891,-2.39l9.82,-3.985l9.274,-5.297l8.25,-6.64l6.882,-7.446l5.579,-8.476l4.242,-9.555l2.672,-9.82l1.046,-10.609l-1.046,-10.625l-2.672,-10.079l-4.242,-9.296l-5.579,-8.485l-6.882,-7.437l-8.25,-6.649l-9.274,-5.297l-9.82,-3.984l-10.891,-2.391l-11.406,-0.789l-5.031,0.266l-5.055,0.523l-4.773,1.328l-4.516,1.602l-4.25,1.844l-4.242,2.39l-3.977,2.407l-3.992,2.906l-3.711,2.914l-3.719,2.93l-0.523,0.265l-1.063,0.266l-1.328,0.523l-1.851,0.274l-2.125,0.265l-1.86,-0.265l-1.867,-0.797l-1.586,-1.328l-1.062,-2.133l-0.266,-3.164l0,-1.078l0,-1.047l0,-1.344l0,-1.312l0,-1.344l0,-1.328l0,-1.313l0,-1.328l0,-1.062l0,-1.071l0.266,-23.351l-0.266,0l0.266,-215.52l-30.258,0l0,215.52l-0.258,23.351z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M269.129,230.113l0.266,-215.52l-30.258,0l0,215.52l-0.258,23.351l0,1.602l0,2.117l0.258,2.656l0.266,2.914l0,3.454l0.257,3.453l0.547,3.718l0.258,3.446l0.523,3.461l0.547,2.898l0.782,3.211l1.312,2.906l1.625,2.125l1.578,1.86l1.844,1.593l2.133,1.063l2.133,1.062l2.117,0.782l2.125,0.531l1.867,0.797l2.375,0.531l2.922,0.266l3.453,0.257l3.977,0l4.257,-0.523l4.235,-0.805l4.25,-1.304l4.25,-1.86l3.984,-2.39l3.711,-2.922l2.133,-1.328l2.64,-1.328l2.922,-1.313l3.453,-1.078l3.454,-1.328l3.445,-0.805l3.445,-1.062l3.188,-0.524l3.172,-0.265l2.937,-0.266l6.359,0.531l6.118,1.328l5.851,2.125l5.297,3.188l4.508,3.453l3.976,4.25l3.204,4.781l2.375,5.297l1.593,5.836l0.532,5.852l-0.532,5.828l-1.593,5.578l-2.375,5.312l-3.204,4.782l-3.976,4.234l-4.508,3.711l-5.297,2.93l-5.851,2.382l-6.118,1.328l-6.359,0.54l-2.937,-0.266l-3.172,-0.274l-3.188,-0.804l-3.445,-0.781l-3.445,-1.071l-3.454,-1.054l-3.453,-1.329l-2.922,-1.062l-2.64,-1.328l-2.133,-1.328l-3.711,-2.914l-3.984,-2.133l-4.25,-1.313l-4.516,-0.539l-4.508,-0.281l-4.226,0.281l-4,0.789l-3.453,0.797l-2.657,1.328l-2.109,1.071l-3.453,3.445l-2.375,3.719l-1.344,3.984l-0.547,4.5l0.281,4.266l0.797,4.5l1.328,4.515l1.86,4.235l2.117,4.25l2.383,3.718l0.265,1.329l0.547,1.328l0.25,1.859l0.266,1.844l0,1.851l0.273,1.883l0,2.117l0,1.602l0.258,1.578l0,1.328l-0.531,4.508l-1.063,4.258l-1.585,3.703l-2.391,3.711l-2.914,3.211l-3.203,2.64l-3.969,2.118l-3.984,1.601l-4.516,1.063l-4.512,0.531l-4.504,-0.531l-4.511,-1.063l-3.985,-1.601l-3.984,-2.118l-3.176,-2.64l-2.91,-3.211l-2.41,-3.711l-1.574,-3.703l-1.075,-4.258l-0.527,-4.508l0,-1.328l0.273,-1.578l0,-1.602l0,-2.117l0.254,-1.883l0,-1.851l0.274,-1.844l0.265,-1.859l0.536,-1.328l0.261,-1.329l2.379,-3.718l2.117,-4.25l1.883,-4.235l1.309,-4.515l0.793,-4.5l0.273,-4.266l-0.535,-4.5l-1.32,-3.984l-2.403,-3.719l-3.445,-3.445l-2.113,-1.071l-2.664,-1.328l-3.45,-0.797l-3.976,-0.789l-4.254,-0.281l-4.504,0.281l-4.512,0.539l-4.242,1.313l-3.992,2.133l-3.711,2.914l-2.129,1.328l-2.648,1.328l-2.918,1.062l-3.449,1.329l-3.446,1.054l-3.457,1.071l-3.449,0.781l-3.191,0.804l-3.176,0.274l-2.93,0.266l-6.367,-0.54l-6.102,-1.328l-5.84,-2.382l-5.042,-2.93l-4.774,-3.711l-3.976,-4.234l-3.192,-4.782l-2.387,-5.312l-1.597,-5.578l-0.528,-5.828l0.528,-5.852l1.597,-5.836l2.387,-5.297l3.192,-4.781l3.976,-4.25l4.774,-3.453l5.042,-3.188l5.84,-2.125l6.102,-1.328l6.367,-0.531l2.93,0.266l3.176,0.265l3.191,0.524l3.449,1.062l3.457,0.805l3.446,1.328l3.449,1.078l2.918,1.313l2.648,1.328l2.129,1.328l3.711,2.922l3.992,2.39l4.242,1.86l4.239,1.304l4.257,0.805l4.247,0.523l3.976,0l3.457,-0.257l2.91,-0.266l2.387,-0.531l1.863,-0.797l2.137,-0.531l2.102,-1.063l2.129,-1.047l2.128,-1.062l2.122,-1.594l1.863,-1.867l1.59,-2.117l1.328,-2.641l0.785,-2.937l0.535,-2.922l0.266,-3.172l0.543,-2.922l0.257,-2.93l0.262,-2.914l0.266,-2.906l0,-2.938l0,-3.187l0,-2.922l0,-3.18l0.254,-23.625l0,-215.246l-30.246,0l0,215.52l-0.266,23.351l0,1.071l0,1.32l0,1.07l-0.262,1.313l0,1.062l0,1.328l0,1.329l0,1.078l0,1.312l0,1.344l-0.265,3.445l-1.047,2.117l-1.61,1.329l-1.593,0.796l-2.118,0.266l-1.855,-0.266l-1.867,-0.539l-1.328,-0.523l-1.055,-0.266l-0.254,-0.265l-4,-2.93l-3.976,-2.914l-3.977,-2.906l-4.52,-2.407l-4.511,-2.39l-4.504,-1.844l-4.778,-1.602l-5.046,-1.328l-5.313,-0.523l-5.312,-0.266l-11.145,0.789l-10.879,2.391l-10.082,3.984l-9.023,5.297l-8.231,6.649l-6.906,7.437l-5.84,8.485l-4.238,9.296l-2.656,10.079l-0.801,10.625l0.801,10.609l2.656,9.82l4.238,9.555l5.84,8.476l6.906,7.446l8.231,6.64l9.023,5.297l10.082,3.985l10.879,2.39l11.145,0.797l5.312,-0.265l5.313,-0.532l5.046,-0.804l4.778,-1.313l4.765,-1.586l4.512,-2.125l4.52,-2.14l3.984,-2.375l4.242,-2.938l3.719,-2.906l1.32,0.797l-2.129,2.922l-1.847,2.906l-1.598,3.187l-1.328,3.203l-1.051,3.43l-1.062,3.461l-0.801,3.438l-0.535,3.468l-0.266,3.703l0,3.719l0.801,9.016l2.129,8.781l3.449,7.953l4.504,7.156l5.848,6.633l6.632,5.586l7.43,4.5l8.223,3.195l8.761,2.133l9.29,0.782l9.3,-0.782l8.735,-2.133l8.242,-3.195l7.43,-4.5l6.64,-5.586l5.563,-6.633l4.797,-7.156l3.437,-7.953l2.125,-8.781l0.781,-9.016l0,-3.719l-0.515,-3.703l-0.516,-3.468l-0.547,-3.438l-1.078,-3.461l-1.031,-3.43l-1.344,-3.203l-1.594,-3.187l-1.851,-2.906l-2.133,-2.922l1.328,-0.797l3.719,2.906l3.984,2.938l4.235,2.375l4.523,2.14l4.492,2.125l4.531,1.586l5.063,1.313l5.031,0.804l5.031,0.532l5.313,0.265l11.406,-0.797l10.891,-2.39l9.82,-3.985l9.274,-5.297l8.25,-6.64l6.882,-7.446l5.579,-8.476l4.242,-9.555l2.672,-9.82l1.046,-10.609l-1.046,-10.625l-2.672,-10.079l-4.242,-9.296l-5.579,-8.485l-6.882,-7.437l-8.25,-6.649l-9.274,-5.297l-9.82,-3.984l-10.891,-2.391l-11.406,-0.789l-5.031,0.266l-5.055,0.523l-4.773,1.328l-4.516,1.602l-4.25,1.844l-4.242,2.39l-3.977,2.407l-3.992,2.906l-3.711,2.914l-3.719,2.93l-0.523,0.265l-1.063,0.266l-1.328,0.523l-1.851,0.274l-2.125,0.265l-1.86,-0.265l-1.867,-0.797l-1.586,-1.328l-1.062,-2.133l-0.266,-3.164l0,-1.078l0,-1.047l0,-1.344l0,-1.312l0,-1.344l0,-1.328l0,-1.313l0,-1.328l0,-1.062l0,-1.071l0.266,-23.351\"\n      android:strokeWidth=\"2.92000008\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#040304\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"M284.254,235.425l1.047,-1.328l0.547,-1.328l0.781,-1.602l0.297,-1.589l0,-1.856l0,-1.586l-0.297,-1.605l-0.781,-1.594l-0.547,-1.328l-1.047,-1.313l-1.07,-1.062l-1.305,-0.793l-1.328,-0.535l-1.328,-0.531l-1.61,0l-88.109,0l-1.328,0l-1.59,0.531l-1.328,0.535l-1.313,0.793l-1.062,1.062l-0.809,1.313l-0.8,1.328l-0.793,1.594l-0.27,1.605l0,1.586l0,1.856l0.27,1.589l0.793,1.602l0.8,1.328l0.809,1.328l1.062,1.055l1.313,0.805l1.328,0.523l1.59,0.524l1.328,0l88.109,0l-0.281,0l1.891,0l1.328,-0.524l1.328,-0.523l1.305,-0.805z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M1.465,1.175h467.086v468.649h-467.086z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M352.988,170.394l0,21.758l44.61,0l0,-24.672l-16.461,0l0,-19.656l16.461,0l0,-24.942l-44.61,0l0,21.758l-18.312,0l0,-21.758l-24.125,0l0,-19.105l24.125,0l0,-21.77l18.312,0l0,21.77l44.61,0l0,-24.688l-16.461,0l0,-19.632l16.461,0l0,-24.688l-44.61,0l0,21.488l-18.312,0l0,-21.488l-40.594,0l0,21.488l-26.015,0l0,114.137l26.015,0l0,21.758l40.594,0l0,-21.758z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M352.988,170.394l0,21.758l44.61,0l0,-24.672l-16.461,0l0,-19.656l16.461,0l0,-24.942l-44.61,0l0,21.758l-18.312,0l0,-21.758l-24.125,0l0,-19.105l24.125,0l0,-21.77l18.312,0l0,21.77l44.61,0l0,-24.688l-16.461,0l0,-19.632l16.461,0l0,-24.688l-44.61,0l0,21.488l-18.312,0l0,-21.488l-40.594,0l0,21.488l-26.015,0l0,114.137l26.015,0l0,21.758l40.594,0l0,-21.758z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"M113.867,170.394l0,21.758l-44.586,0l0,-24.672l16.457,0l0,-19.656l-16.457,0l0,-24.942l44.586,0l0,21.758l18.317,0l0,-21.758l24.152,0l0,-19.105l-24.152,0l0,-21.77l-18.317,0l0,21.77l-44.586,0l0,-24.688l16.457,0l0,-19.632l-16.457,0l0,-24.688l44.586,0l0,21.488l18.317,0l0,-21.488l40.609,0l0,21.488l26,0l0,114.137l-26,0l0,21.758l-40.609,0l0,-21.758z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M113.867,170.394l0,21.758l-44.586,0l0,-24.672l16.457,0l0,-19.656l-16.457,0l0,-24.942l44.586,0l0,21.758l18.317,0l0,-21.758l24.152,0l0,-19.105l-24.152,0l0,-21.77l-18.317,0l0,21.77l-44.586,0l0,-24.688l16.457,0l0,-19.632l-16.457,0l0,-24.688l44.586,0l0,21.488l18.317,0l0,-21.488l40.609,0l0,21.488l26,0l0,114.137l-26,0l0,21.758l-40.609,0l0,-21.758z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m237.266,12.945 l0.23,262.715c0,0.281 0.344,27.078 27.664,27.078 14.633,0 21.156,-4.828 27.469,-9.5 6.719,-4.969 13.656,-10.117 31.43,-10.117 6.367,-0.063 21.438,0.82 31.367,10.625 6.406,6.328 9.648,15.328 9.648,26.75 0,10.445 -6.898,20.688 -17.992,26.773 -14.633,8 -32.242,7.094 -47.094,-2.43l-3.555,-2.391c-8.461,-5.82 -20.023,-13.773 -33.789,-6.898 -8.406,4.18 -13.141,11.094 -13.141,19.094 0,0.453 0.016,0.891 0.047,1.328 0.016,5.344 1.766,8.375 3.797,11.867 2.938,5.07 6.578,11.383 6.578,28.219 0,10.164 -3.117,27.477 -23.957,29.344 -0.406,0.047 -2.496,0.148 -2.496,0.148l-2.008,-0.102C210.234,423.55 207.12,406.237 207.12,396.057c0,-16.836 3.648,-23.164 6.586,-28.219 2.023,-3.508 3.773,-6.523 3.773,-11.719 0.031,-0.477 0.051,-0.898 0.051,-1.375 0,-8.117 -4.73,-15.016 -13.137,-19.195 -13.785,-6.859 -25.352,1.094 -33.809,6.914l-3.52,2.375c-14.855,9.508 -32.465,10.43 -47.09,2.43 -11.102,-6.063 -18,-16.328 -18,-26.773 0,-11.422 3.25,-20.422 9.648,-26.75 9.93,-9.82 24.992,-10.688 31.008,-10.625 18.129,0 25.074,5.148 31.785,10.117 6.305,4.672 12.824,9.5 27.457,9.5 27.32,0 27.672,-26.797 27.672,-27.078l0.215,-262.715L195.945,12.944L195.945,262.183c0,4.328 -1.168,7.328 -3.223,8.25 -2.457,1.078 -6.242,-0.508 -10.496,-4.281 -11.504,-10.375 -30.922,-15.031 -45.051,-15.031 -14.246,0 -67.438,11.734 -67.438,69.148 0,30.836 23.152,64.031 73.969,64.031 14.469,0 29.07,-7.047 37.68,-12.836 -3.809,7.297 -6.426,15.508 -6.426,24.555 0,7.906 1.504,16.133 4.586,23.922 8.32,21.078 25.613,34.625 47.445,37.188 1.016,0.096 1.625,0.156 1.625,0.156 1.031,0.104 1.895,0.164 1.895,0.164 0.777,0.03 1.648,0.102 1.648,0.102 1.305,0.018 2.707,0.049 2.707,0.049l1.277,-0.148 1.25,-0.063c1.031,-0.104 1.641,-0.164 1.641,-0.164 22.844,-2.656 40.133,-16.203 48.461,-37.298 3.07,-7.781 4.578,-16 4.578,-23.906 0,-9.063 -2.617,-17.258 -6.43,-24.555 8.609,5.789 23.211,12.836 37.672,12.836 50.828,0 73.969,-33.188 73.969,-64.031 0,-57.414 -53.195,-69.148 -67.445,-69.148 -14.125,0 -33.523,4.656 -45.047,15.031 -4.227,3.805 -8.047,5.359 -10.492,4.281 -2.063,-0.922 -3.227,-3.922 -3.227,-8.25v-249.238l-33.807,-0.002 0,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m272.879,11.16h-3.563,-30.273 -3.555v3.551l0.242,260.934c0.008,9.984 6.164,28.859 29.43,28.859 15.227,0 21.984,-5.016 28.516,-9.859 6.789,-5.016 13.172,-9.766 30.383,-9.766h0.367c0.219,-0.016 0.516,-0.016 0.875,-0.016 11.422,0 37.984,3.484 37.984,35.625 0,16.172 -17.516,30.359 -37.5,30.359 -8.563,0 -17.172,-2.594 -24.844,-7.516 -1.125,-0.719 -2.281,-1.508 -3.508,-2.359 -6.391,-4.391 -14.359,-9.867 -23.977,-9.867 -3.953,0 -7.859,0.953 -11.625,2.836 -9.531,4.75 -14.664,12.836 -14.063,22.148l0.008,0.133c0,5.555 1.961,8.93 4.023,12.508 2.828,4.867 6.336,10.945 6.336,27.328 0,9.539 -2.898,25.836 -22.328,27.555 -0.078,0 -0.207,0.031 -0.328,0.031 -0.664,0.047 -1.297,0.102 -1.961,0.117 -0.664,-0.016 -1.293,-0.07 -1.918,-0.086 -0.16,-0.031 -0.281,-0.063 -0.375,-0.063C211.807,421.893 208.912,405.596 208.912,396.057c0,-16.383 3.512,-22.461 6.328,-27.328 2.078,-3.578 4.031,-6.953 4.031,-12.609 0.609,-9.344 -4.527,-17.43 -14.09,-22.164 -3.758,-1.891 -7.664,-2.844 -11.621,-2.844 -9.625,0 -17.578,5.484 -23.977,9.875 -1.215,0.852 -2.375,1.641 -3.48,2.375 -7.688,4.891 -16.289,7.5 -24.863,7.5 -19.977,0 -37.488,-14.188 -37.488,-30.359 0,-32.141 26.559,-35.625 37.977,-35.625 0.352,0 0.633,0 0.863,0.016h0.391c17.191,0 23.602,4.75 30.379,9.766 6.543,4.844 13.293,9.859 28.52,9.859 23.254,0 29.438,-18.875 29.438,-28.859l0.234,-260.93v-3.57h-3.563,-30.253 -3.543v3.551,247.472c0,2.039 -0.313,6.789 -3.145,6.789 -0.914,0 -3.488,-0.406 -7.625,-4.148 -10.434,-9.406 -28.57,-15.477 -46.242,-15.477 -14.613,0 -69.207,12.039 -69.207,70.906 0,16.641 6.746,32.953 18.512,44.75 13.777,13.789 33.563,21.055 57.234,21.055 11.797,0 23.703,-4.508 32.543,-9.313 -4.695,13.258 -4.215,29.313 1.809,44.273 8.238,20.444 24.766,33.938 45.625,37.431 0.063,-0.375 0.215,-0.509 0.445,-0.509 0.535,0 1.48,0.767 2.578,0.953 0.023,0 0.047,0 0.07,0h-0.031c0.031,0 0.055,0.017 0.086,0.017h0.008c0.172,0.03 0.34,0.047 0.508,0.047 0.504,0 1,-0.117 1.438,-0.234 0.457,-0.125 0.832,-0.232 1.113,-0.232 0.344,0 0.527,0.172 0.488,0.719 0.023,0 0.047,0.017 0.07,0.017l0.359,0.017 0.352,0.03c0.313,0.017 0.633,0.03 0.953,0.047h0.066l0.078,0.048c0.426,0 0.84,-0.017 1.258,-0.017 0.445,0 0.863,0.017 1.285,0.017h0.051l0.078,-0.048c0.465,-0.017 0.906,-0.047 1.359,-0.077 0.098,-0.017 0.199,-0.017 0.313,-0.017 -0.047,-0.595 0.152,-0.767 0.488,-0.767 0.297,0 0.688,0.125 1.141,0.25 0.461,0.107 0.969,0.232 1.5,0.232 0.109,0 0.219,-0.016 0.344,-0.016 0.078,0 0.172,-0.016 0.234,-0.031h-0.047c0.031,0 0.063,0 0.086,0 1.094,-0.188 2.031,-0.953 2.57,-0.953 0.227,0 0.391,0.143 0.461,0.51 20.852,-3.492 37.367,-16.984 45.602,-37.415 6.039,-14.977 6.508,-31.031 1.828,-44.273 8.828,4.805 20.734,9.297 32.539,9.297 23.672,0 43.461,-7.266 57.211,-21.055 11.766,-11.797 18.523,-28.109 18.523,-44.75 0,-58.867 -54.594,-70.906 -69.227,-70.906 -17.641,0 -35.789,6.07 -46.234,15.477 -4.148,3.742 -6.703,4.148 -7.617,4.148 -2.82,0 -3.117,-4.75 -3.117,-6.789v-247.463,-3.563h-0.03zM239.035,14.722h30.266L269.301,262.191c0,6.688 2.563,10.328 6.672,10.328 2.75,0 6.18,-1.609 10.016,-5.047 10.5,-9.453 28.594,-14.563 43.844,-14.563 15.266,0 65.664,12.266 65.664,67.359 0,29.609 -22.539,62.25 -72.18,62.25 -19.703,0 -39.141,-13.094 -43.063,-17.469 0.641,0.766 1.242,1.563 1.828,2.406 1.383,1.969 2.578,4.078 3.625,6.297 3.102,6.688 4.625,14.328 4.609,22.203 -0.031,26.453 -17.391,55.522 -50.484,59.421v0.018c-0.086,0 -0.156,0 -0.234,0.016 -0.219,0.031 -0.477,0.047 -0.719,0.063 -0.547,0.047 -1.102,0.108 -1.652,0.142 -0.379,0.03 -0.77,0.047 -1.16,0.063 -0.426,0.056 -0.832,0.087 -1.258,0.103v0.047h-0.023c-0.422,0 -0.84,-0.016 -1.289,-0.031 -0.43,0.017 -0.832,0.031 -1.254,0.031h-0.031v-0.031c-0.363,-0.047 -0.691,-0.063 -1.016,-0.102 -0.066,0 -0.129,0 -0.188,-0.017 -0.422,-0.03 -0.824,-0.048 -1.207,-0.077 -0.551,-0.031 -1.102,-0.096 -1.648,-0.143 -0.23,-0.017 -0.504,-0.03 -0.734,-0.063 -0.082,-0.016 -0.16,-0.016 -0.223,-0.016 -33.105,-3.906 -50.465,-32.984 -50.508,-59.438 0,-5.641 0.777,-11.172 2.371,-16.313 0.621,-2.031 1.375,-4 2.254,-5.891 1.465,-3.141 3.289,-6.063 5.441,-8.703 -3.922,4.375 -23.352,17.469 -43.047,17.469 -49.641,0 -72.203,-32.641 -72.203,-62.25 0,-55.094 50.426,-67.359 65.664,-67.359 15.266,0 33.371,5.109 43.859,14.563 3.813,3.438 7.254,5.047 10.008,5.047 4.125,0 6.688,-3.641 6.688,-10.328L197.723,14.723L227.977,14.723l-0.215,260.937c0,0 -0.031,25.313 -25.887,25.313 -29.418,0 -23.73,-19.625 -58.898,-19.625 -0.223,0 -0.656,-0.016 -1.254,-0.016 -7.395,0 -41.52,1.422 -41.52,39.164 0,18.117 18.797,33.906 41.031,33.906 8.703,0 17.941,-2.445 26.781,-8.07 6.641,-4.273 15.258,-11.688 25.539,-11.688 3.184,0 6.543,0.719 10.039,2.477 11.16,5.555 12.184,14.047 12.176,17.508 0,0.805 -0.055,1.313 -0.055,1.492 0,11.969 -10.363,11.391 -10.363,39.938 0,9.781 3,29.109 25.547,31.109 0.152,0.016 0.285,0.039 0.438,0.055 0.715,0.047 1.434,0.094 2.168,0.109 0.746,-0.016 1.465,-0.063 2.168,-0.109 0.16,-0.016 0.297,-0.039 0.457,-0.055 22.547,-2.016 25.563,-21.328 25.563,-31.109 0,-28.547 -10.359,-27.969 -10.359,-39.938 0,-0.164 -0.063,-0.688 -0.063,-1.492 0,-3.469 1.016,-11.953 12.164,-17.508 3.492,-1.758 6.836,-2.477 10.023,-2.477 10.281,0 18.914,7.414 25.563,11.688 8.828,5.625 18.07,8.07 26.773,8.07 22.227,0 41.047,-15.805 41.047,-33.906 0,-37.75 -34.148,-39.164 -41.539,-39.164 -0.602,0 -1.031,0.016 -1.234,0.016 -35.156,0 -29.484,19.625 -58.898,19.625 -25.852,0 -25.883,-25.313 -25.883,-25.313l-0.251,-260.938zM279.926,364.613c0.094,0.141 0.203,0.266 0.344,0.438 -0.117,-0.173 -0.235,-0.298 -0.344,-0.438m-92.813,0c-0.129,0.141 -0.246,0.266 -0.359,0.438 0.07,-0.094 0.145,-0.156 0.184,-0.234 0.062,-0.064 0.129,-0.142 0.175,-0.204m52.094,94.39c-0.055,0 -0.094,0 -0.133,0.016h0.063l0.07,-0.016zM227.84,459.003 L227.922,459.019h0.063c-0.063,-0.016 -0.094,-0.016 -0.145,-0.016\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m287.145,227.785c0,5.801 -4.711,10.5 -10.5,10.5h-86.043c-5.809,0 -10.512,-4.699 -10.512,-10.5 0,-5.816 4.711,-10.512 10.512,-10.512h86.043c5.789,-0.008 10.5,4.695 10.5,10.512\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m287.145,227.785c0,5.801 -4.711,10.5 -10.5,10.5h-86.043c-5.809,0 -10.512,-4.699 -10.512,-10.5 0,-5.816 4.711,-10.512 10.512,-10.512h86.043c5.789,-0.008 10.5,4.695 10.5,10.512z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#040304\"\n      android:strokeLineCap=\"square\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ow.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"470.49603\"\n    android:viewportHeight=\"471.528\">\n  <path\n      android:pathData=\"M0,236.61h470.576v234.918h-470.576z\"\n      android:fillColor=\"#feffff\"/>\n  <path\n      android:pathData=\"M0.01,0h470.575v234.938h-470.575z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m304.113,410.036c0,-18.109 -7.133,-26.938 -10.773,-30.328 -9.484,-8.734 -34.703,-3.75 -33.477,10.266 12.672,-6.703 17.016,-4.133 19.461,-3.625 9.656,1.922 18.016,51.109 -38.266,52.508 -56.258,-1.406 -47.898,-50.586 -38.242,-52.508 2.445,-0.508 6.801,-3.078 19.473,3.625 1.23,-14.016 -24,-19 -33.488,-10.266 -3.641,3.391 -10.77,12.219 -10.77,30.328 0,22.797 17.578,51.984 61.715,53.063 0,0 0.875,0.031 1.313,0.031 0.453,0 1.328,-0.031 1.328,-0.031 44.164,-1.079 61.726,-30.274 61.726,-53.063\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m304.113,410.036c0,-18.109 -7.133,-26.938 -10.773,-30.328 -9.484,-8.734 -34.703,-3.75 -33.477,10.266 12.672,-6.703 17.016,-4.133 19.461,-3.625 9.656,1.922 18.016,51.109 -38.266,52.508 -56.258,-1.406 -47.898,-50.586 -38.242,-52.508 2.445,-0.508 6.801,-3.078 19.473,3.625 1.23,-14.016 -24,-19 -33.488,-10.266 -3.641,3.391 -10.77,12.219 -10.77,30.328 0,22.797 17.578,51.984 61.715,53.063 0,0 0.875,0.031 1.313,0.031 0.453,0 1.328,-0.031 1.328,-0.031 44.164,-1.079 61.726,-30.274 61.726,-53.063z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"M165.84,75.039l-32.579,0l0,30.434l44.586,0l0,-17.351l11.75,0l0,17.351l17.625,0l0,11.754l-17.625,0l0,17.613l-11.75,0l0,-17.613l-44.586,0l0,30.422l32.579,0l0,13.098l-32.579,0l0,30.421l44.586,0l0,-17.343l11.75,0l0,17.343l42.723,0l0,-159.656l-42.723,0l0,17.625l-11.75,0l0,-17.625l-44.586,0l0,30.442l32.579,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M165.84,75.039l-32.579,0l0,30.434l44.586,0l0,-17.351l11.75,0l0,17.351l17.625,0l0,11.754l-17.625,0l0,17.613l-11.75,0l0,-17.613l-44.586,0l0,30.422l32.579,0l0,13.098l-32.579,0l0,30.421l44.586,0l0,-17.343l11.75,0l0,17.343l42.723,0l0,-159.656l-42.723,0l0,17.625l-11.75,0l0,-17.625l-44.586,0l0,30.442l32.579,0z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M165.84,75.039l-32.579,0l0,30.434l44.586,0l0,-17.351l11.75,0l0,17.351l17.625,0l0,11.754l-17.625,0l0,17.613l-11.75,0l0,-17.613l-44.586,0l0,30.422l32.579,0l0,13.098l-32.579,0l0,30.421l44.586,0l0,-17.343l11.75,0l0,17.343l42.723,0l0,-159.656l-42.723,0l0,17.625l-11.75,0l0,-17.625l-44.586,0l0,30.442l32.579,0z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m214.375,362.551c0,6.977 -5.926,12.648 -13.238,12.648 -7.305,0 -13.242,-5.672 -13.242,-12.648 0,-6.984 5.938,-12.641 13.242,-12.641 7.312,0.001 13.238,5.657 13.238,12.641\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m294.144,362.77c0,6.984 -5.93,12.641 -13.234,12.641 -7.313,0 -13.227,-5.656 -13.227,-12.641 0,-6.985 5.914,-12.656 13.227,-12.656 7.305,0 13.234,5.672 13.234,12.656\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M225.793,15.106h30.43v230.672h-30.43z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M225.793,15.106h30.43v230.672h-30.43z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m214.375,362.551c0,6.977 -5.926,12.648 -13.238,12.648 -7.305,0 -13.242,-5.672 -13.242,-12.648 0,-6.984 5.938,-12.641 13.242,-12.641 7.312,0.001 13.238,5.657 13.238,12.641\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m201.136,349.895c7.313,0 13.238,5.656 13.238,12.656 0,6.984 -5.926,12.648 -13.238,12.648 -7.312,0 -13.242,-5.664 -13.242,-12.648 0,-7 5.93,-12.656 13.242,-12.656z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m294.144,362.77c0,6.984 -5.93,12.641 -13.234,12.641 -7.313,0 -13.227,-5.656 -13.227,-12.641 0,-6.985 5.914,-12.656 13.227,-12.656 7.305,0 13.234,5.672 13.234,12.656\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m280.91,350.129c7.305,0 13.234,5.656 13.234,12.641 0,6.985 -5.93,12.641 -13.234,12.641 -7.304,0 -13.227,-5.656 -13.227,-12.641 0,-6.985 5.922,-12.641 13.227,-12.641z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m330.582,404.692c0,6.969 -5.914,12.641 -13.227,12.641 -7.313,0 -13.234,-5.672 -13.234,-12.641 0,-6.984 5.922,-12.656 13.234,-12.656 7.312,0 13.227,5.671 13.227,12.656\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m317.355,392.051c7.305,0 13.227,5.656 13.227,12.641 0,6.985 -5.922,12.641 -13.227,12.641 -7.313,0 -13.234,-5.656 -13.234,-12.641 0,-6.985 5.922,-12.641 13.234,-12.641z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m178.031,404.692c0,6.969 -5.93,12.641 -13.23,12.641 -7.313,0 -13.242,-5.672 -13.242,-12.641 0,-6.984 5.93,-12.656 13.242,-12.656 7.3,0 13.23,5.671 13.23,12.656\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m164.793,392.051c7.313,0 13.238,5.656 13.238,12.641 0,6.985 -5.926,12.641 -13.238,12.641 -7.312,0 -13.242,-5.656 -13.242,-12.641 0,-6.985 5.929,-12.641 13.242,-12.641z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"\n      android:strokeLineCap=\"square\"/>\n  <path\n      android:pathData=\"m269.566,239.739c0,2.813 -2.047,5.094 -4.555,5.094L217.246,244.833c-2.52,0 -4.566,-2.281 -4.566,-5.094 0,-2.816 2.047,-5.082 4.566,-5.082h47.766c2.507,0 4.554,2.265 4.554,5.082\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m269.566,239.739c0,2.813 -2.047,5.094 -4.555,5.094L217.246,244.833c-2.52,0 -4.566,-2.281 -4.566,-5.094 0,-2.816 2.047,-5.082 4.566,-5.082h47.766c2.507,0 4.554,2.265 4.554,5.082z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m269.566,254.973c0,2.813 -2.047,5.094 -4.555,5.094L217.246,260.067c-2.52,0 -4.566,-2.281 -4.566,-5.094 0,-2.82 2.047,-5.078 4.566,-5.078h47.766c2.507,0 4.554,2.258 4.554,5.078\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m269.566,254.973c0,2.813 -2.047,5.094 -4.555,5.094L217.246,260.067c-2.52,0 -4.566,-2.281 -4.566,-5.094 0,-2.82 2.047,-5.078 4.566,-5.078h47.766c2.507,0 4.554,2.258 4.554,5.078z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m275.293,247.332c0,3.328 -2.469,6.047 -5.492,6.047L212.449,253.379c-3.043,0 -5.496,-2.719 -5.496,-6.047 0,-3.328 2.453,-6.031 5.496,-6.031L269.801,241.301c3.023,0 5.492,2.703 5.492,6.031\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m275.293,247.332c0,3.328 -2.469,6.047 -5.492,6.047L212.449,253.379c-3.043,0 -5.496,-2.719 -5.496,-6.047 0,-3.328 2.453,-6.031 5.496,-6.031L269.801,241.301c3.023,0 5.492,2.703 5.492,6.031z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m257.058,259.442c-3.359,-0.078 -8.492,-0.219 -12.641,-0.313 0,0 -1.273,-0.109 -3.328,-0.063 -2.047,-0.047 -3.324,0.063 -3.324,0.063 -4.141,0.094 -9.27,0.234 -12.621,0.313 -6.441,0.188 -19.473,1.875 -16.031,16.766 3.445,14.891 6.453,13.672 9.797,35.656h44.383c3.344,-21.984 6.344,-20.766 9.797,-35.656 3.437,-14.891 -9.594,-16.579 -16.032,-16.766\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m257.058,259.442c-3.359,-0.078 -8.492,-0.219 -12.641,-0.313 0,0 -1.273,-0.109 -3.328,-0.063 -2.047,-0.047 -3.324,0.063 -3.324,0.063 -4.141,0.094 -9.27,0.234 -12.621,0.313 -6.441,0.188 -19.473,1.875 -16.031,16.766 3.445,14.891 6.453,13.672 9.797,35.656h44.383c3.344,-21.984 6.344,-20.766 9.797,-35.656 3.437,-14.891 -9.594,-16.579 -16.032,-16.766z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m259.137,319.723c0,9.656 -8.109,17.469 -18.094,17.469 -9.98,0 -18.074,-7.813 -18.074,-17.469 0,-9.625 8.094,-17.453 18.074,-17.453 9.984,0 18.094,7.828 18.094,17.453\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m259.137,319.723c0,9.656 -8.109,17.469 -18.094,17.469 -9.98,0 -18.074,-7.813 -18.074,-17.469 0,-9.625 8.094,-17.453 18.074,-17.453 9.984,0 18.094,7.828 18.094,17.453z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m280.043,282.2c-16.078,9.25 -20.641,19.508 -21.953,24.164 -3.375,12.094 12.734,29.828 24.609,21.672 -11.813,-6.781 -11.531,-11.578 -12.234,-13.781 -2.766,-8.773 37.086,-40.656 64.367,3.883 24.82,45.938 -22.773,64.359 -28.953,57.594 -1.555,-1.711 -5.852,-3.891 -5.789,-17.508 -13.016,6.195 -5.781,29.031 6.406,32.156 4.672,1.203 15.828,2.414 31.891,-6.828 20.25,-11.656 38.078,-40.727 18.594,-76.773 0,0 -0.383,-0.727 -0.594,-1.07 -0.188,-0.359 -0.625,-1.047 -0.625,-1.047 -21.391,-34.923 -55.454,-34.111 -75.719,-22.462\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m280.043,282.2c-16.078,9.25 -20.641,19.508 -21.953,24.164 -3.375,12.094 12.734,29.828 24.609,21.672 -11.813,-6.781 -11.531,-11.578 -12.234,-13.781 -2.766,-8.773 37.086,-40.656 64.367,3.883 24.82,45.938 -22.773,64.359 -28.953,57.594 -1.555,-1.711 -5.852,-3.891 -5.789,-17.508 -13.016,6.195 -5.781,29.031 6.406,32.156 4.672,1.203 15.828,2.414 31.891,-6.828 20.25,-11.656 38.078,-40.727 18.594,-76.773 0,0 -0.383,-0.727 -0.594,-1.07 -0.188,-0.359 -0.625,-1.047 -0.625,-1.047 -21.391,-34.923 -55.454,-34.111 -75.719,-22.462z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M202.062,282.2C218.16,291.45 222.703,301.708 224,306.364c3.391,12.094 -12.719,29.828 -24.609,21.672 11.832,-6.781 11.543,-11.578 12.25,-13.781 2.75,-8.773 -37.082,-40.656 -64.359,3.883 -24.801,45.938 22.766,64.359 28.949,57.594 1.578,-1.711 5.863,-3.891 5.785,-17.508 13.016,6.195 5.777,29.031 -6.398,32.156 -4.664,1.203 -15.816,2.414 -31.898,-6.828 -20.246,-11.656 -38.063,-40.727 -18.582,-76.773 0,0 0.375,-0.727 0.582,-1.07 0.207,-0.359 0.633,-1.047 0.633,-1.047 21.389,-34.923 55.463,-34.111 75.709,-22.462\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m256.222,279.567c0,11.289 -6.766,20.484 -15.133,20.484 -8.355,0 -15.137,-9.188 -15.137,-20.484 0,-11.313 6.781,-20.492 15.137,-20.492 8.368,0 15.133,9.179 15.133,20.492\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m241.09,259.075c8.359,0 15.133,9.172 15.133,20.492 0,11.313 -6.773,20.484 -15.133,20.484 -8.363,0 -15.137,-9.172 -15.137,-20.484 0,-11.32 6.773,-20.492 15.137,-20.492z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m0.001,234.597 l470.679,0\"\n      android:strokeLineJoin=\"miter\"\n      android:strokeWidth=\"3.53958082\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000000\"\n      android:strokeLineCap=\"butt\"/>\n  <path\n      android:pathData=\"m142.516,384.049c16.14,9.142 27.293,7.855 31.969,6.618 12.13,-3.243 19.211,-26.131 6.15,-32.21 0.167,13.62 -4.107,15.816 -5.647,17.541 -6.148,6.842 -53.865,-11.264 -29.383,-57.401C172.544,273.869 212.604,305.485 209.921,314.247 209.238,316.456 209.546,321.264 197.788,328.133 209.74,336.191 225.726,318.351 222.221,306.268 220.881,301.633 216.252,291.411 200.127,282.278 179.794,270.767 145.696,270.196 124.563,305.301c0,0 -0.431,0.699 -0.619,1.056 -0.214,0.344 -0.584,1.071 -0.584,1.071 -19.196,36.176 -1.178,65.095 19.156,76.622z\"\n      android:strokeWidth=\"3.55200028\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_sg.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.773\"\n    android:viewportHeight=\"471.368\">\n  <path\n      android:pathData=\"M0,0h469.773v471.368h-469.773z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"m243.898,452.742c0,5.836 -4.594,10.625 -10.27,10.625 -5.652,0 -10.262,-4.789 -10.262,-10.625v-433.911c0,-5.863 4.609,-10.613 10.262,-10.613 5.676,0 10.27,4.75 10.27,10.613v433.911z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m243.898,452.742c0,5.836 -4.594,10.625 -10.27,10.625 -5.652,0 -10.262,-4.789 -10.262,-10.625v-433.911c0,-5.863 4.609,-10.613 10.262,-10.613 5.676,0 10.27,4.75 10.27,10.613v433.911z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m176.918,7.059c8.93,17.191 34.258,29.543 41.602,30.797 7.344,1.258 30.129,6.465 30.129,6.465l11.656,9.762 -11.876,11.038c0,0 -26.016,2.137 -29.75,2.137 -3.609,1.086 -23.754,5.633 -41.281,27.344 -2.52,-3.582 -13.625,-14.215 -13.625,-45.488 0,-25.168 11.442,-39.864 13.145,-42.055\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m176.918,7.059c8.93,17.191 34.258,29.543 41.602,30.797 7.344,1.258 30.129,6.465 30.129,6.465l11.656,9.762 -11.876,11.038c0,0 -26.016,2.137 -29.75,2.137 -3.609,1.086 -23.754,5.633 -41.281,27.344 -2.52,-3.582 -13.625,-14.215 -13.625,-45.488 0,-25.168 11.442,-39.864 13.145,-42.055z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M248.742,44.395L248.492,65.074\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M218.527,37.985L218.527,67.227\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m246.789,407.883c0,5.766 -5.938,10.438 -13.199,10.438 -7.261,0 -13.16,-4.672 -13.16,-10.438L220.43,110.25c0,-5.785 5.891,-10.449 13.16,-10.449 7.277,0 13.199,4.664 13.199,10.449L246.789,407.883z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m246.789,407.883c0,5.766 -5.938,10.438 -13.199,10.438 -7.261,0 -13.16,-4.672 -13.16,-10.438L220.43,110.25c0,-5.785 5.891,-10.449 13.16,-10.449 7.277,0 13.199,4.664 13.199,10.449L246.789,407.883z\"\n      android:strokeWidth=\"2.78399992\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m195.597,407.883c0,5.766 -4.559,10.438 -10.23,10.438 -5.648,0 -10.215,-4.672 -10.215,-10.438L175.152,110.25c0,-5.785 4.574,-10.449 10.215,-10.449 5.672,0 10.23,4.664 10.23,10.449L195.597,407.883z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m195.597,407.883c0,5.766 -4.559,10.438 -10.23,10.438 -5.648,0 -10.215,-4.672 -10.215,-10.438L175.152,110.25c0,-5.785 4.574,-10.449 10.215,-10.449 5.672,0 10.23,4.664 10.23,10.449L195.597,407.883z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m291.961,407.883c0,5.766 -4.563,10.438 -10.203,10.438 -5.64,0 -10.188,-4.672 -10.188,-10.438L271.57,110.25c0,-5.785 4.547,-10.449 10.188,-10.449 5.641,0 10.203,4.664 10.203,10.449L291.961,407.883z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m291.961,407.883c0,5.766 -4.563,10.438 -10.203,10.438 -5.64,0 -10.188,-4.672 -10.188,-10.438L271.57,110.25c0,-5.785 4.547,-10.449 10.188,-10.449 5.641,0 10.203,4.664 10.203,10.449L291.961,407.883z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m271.57,407.883c0,5.766 -5.625,10.438 -12.563,10.438 -6.875,0 -12.516,-4.672 -12.516,-10.438L246.491,110.25c0,-5.785 5.641,-10.449 12.516,-10.449 6.938,0 12.563,4.664 12.563,10.449L271.57,407.883z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m271.57,407.883c0,5.766 -5.625,10.438 -12.563,10.438 -6.875,0 -12.516,-4.672 -12.516,-10.438L246.491,110.25c0,-5.785 5.641,-10.449 12.516,-10.449 6.938,0 12.563,4.664 12.563,10.449L271.57,407.883z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m220.679,407.883c0,5.766 -5.656,10.438 -12.641,10.438 -6.969,0 -12.625,-4.672 -12.625,-10.438L195.413,110.25c0,-5.785 5.656,-10.449 12.625,-10.449 6.984,0 12.641,4.664 12.641,10.449L220.679,407.883z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m220.679,407.883c0,5.766 -5.656,10.438 -12.641,10.438 -6.969,0 -12.625,-4.672 -12.625,-10.438L195.413,110.25c0,-5.785 5.656,-10.449 12.625,-10.449 6.984,0 12.641,4.664 12.641,10.449L220.679,407.883z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M169.183,124.832h128.918v22.953h-128.918z\"\n      android:fillColor=\"#4ab05f\"/>\n  <path\n      android:pathData=\"M169.183,368.774h128.918v22.953h-128.918z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"M169.183,368.789h128.918v22.938h-128.918z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M298.101,206.883l-128.886,152.188l0,-43.047l128.886,-152.161z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"M298.101,206.883l-128.886,152.188l0,-43.047l128.886,-152.161z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M169.183,124.832h128.918v22.953h-128.918z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"M169.183,124.832h128.918v22.953h-128.918z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M169.183,368.789h128.918v22.938h-128.918z\"\n      android:strokeWidth=\"2.78399992\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M169.215,206.883l128.886,152.188l0,-43.047l-128.886,-152.161z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"M169.215,206.883l128.886,152.188l0,-43.047l-128.886,-152.161z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_sh.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.862\"\n    android:viewportHeight=\"471.462\">\n  <path\n      android:pathData=\"M0,0h469.862v471.462h-469.862z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m81.008,107.215c0,0 12.953,10.504 22.199,11.48 5.527,0.57 10.223,-8.047 8.719,-8.293 -4.023,-0.676 -21.152,-12.648 -26.734,-17.348 -1.586,-1.351 -4.184,14.161 -4.184,14.161z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m112.43,120.864c0,0 -33.84,-17.246 -35.605,-19.176 -1.762,-1.934 -2.938,16.504 4.102,24.375 4.023,4.504 18.336,-1.879 28.824,2.184 2.593,0.999 2.679,-7.383 2.679,-7.383\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m104.817,107.52c-0.625,0.695 -4.801,6.152 -4.801,6.152l1.59,13.082c0,0 5.84,2.016 5.883,2.406 0.039,0.391 -3.52,3.816 -3.707,5.305 2.211,6.895 9.289,2.168 15.426,3.793 6.129,1.613 16.77,14.688 16.77,14.688l12.152,14.32c0,0 5.805,5.672 10.469,12.566 5.914,8.688 4.25,28.84 6.594,32.23 1.68,2.41 4.328,10.984 9.047,12.953 4.93,2.066 9.922,-5.656 9.922,-5.918 0,-2.098 -1.387,-3.969 -1.387,-5.816 0,-1.847 2.336,-5.707 4.281,-8.832 2.566,-4.113 -8.391,-29.313 -9.078,-32.031 -0.075,-4.691 -1.884,-9.051 -1.884,-9.051 0,0 -3.887,-5.816 -5.32,-7.246 -1.43,-1.418 -6.141,-2.93 -7.336,-3.527 -1.199,-0.609 -13.637,-13.953 -15.605,-15.832 -1.953,-1.867 -17.609,-13.922 -19.777,-13.746 -4.025,-2.856 -10.071,-19.176 -23.239,-15.496\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m276.082,335.703c0.266,1.297 4.547,32.266 4.641,33.18 0.102,0.922 -6.953,10.203 -16.328,9.383 -6.125,-0.563 -9.539,-11.508 -8.164,-22.523 1.429,-11.055 16.898,-20.86 19.851,-20.04z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m302.051,367.133c-6.688,-10 -20.492,-29.938 -20.492,-29.938 0,0 -13.07,2.313 -12.047,22.609 1.023,20.313 26.32,18.642 32.539,7.329\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m302.051,367.133c-6.688,-10 -20.492,-29.938 -20.492,-29.938 0,0 -13.07,2.313 -12.047,22.609 1.023,20.313 26.32,18.642 32.539,7.329z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m43.406,267.328 l-4.961,23.719c0,0 -20.629,2.969 -18.863,1.18 1.762,-1.766 10.273,-19.016 12.297,-20.031 2.008,-1 11.527,-4.868 11.527,-4.868zM112.43,120.864c0,0 -33.84,-17.246 -35.605,-19.176 -1.762,-1.934 -2.938,16.504 4.102,24.375 4.023,4.504 18.336,-1.879 28.824,2.184 2.593,0.999 2.679,-7.383 2.679,-7.383z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m42.321,265.477c0,0 14.559,0.422 13.629,0.242 -0.926,-0.164 3.371,18.852 2.945,19.953 -0.414,1.102 -15.711,14.445 -26.184,12.133 -1.512,-0.344 9.61,-32.328 9.61,-32.328\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m42.321,265.477c0,0 14.559,0.422 13.629,0.242 -0.926,-0.164 3.371,18.852 2.945,19.953 -0.414,1.102 -15.711,14.445 -26.184,12.133 -1.512,-0.344 9.61,-32.328 9.61,-32.328z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m140.801,432.18c0,0 10.285,-0.75 12.055,1.508 1.785,2.297 -14.848,16.882 -14.848,16.882 0,0 -17.039,1.086 -18.047,-0.508 -1.019,-1.585 20.84,-17.882 20.84,-17.882z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m154.047,429.391 l7.504,2.609c0,0 1.945,18.985 -0.672,21.837 -2.625,2.875 -17.785,9.188 -30.711,3.805 -3.039,-1.251 23.879,-28.251 23.879,-28.251\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m398.223,427.164c3.375,-2.492 7.172,-5.188 12.93,-5.516l-0.836,26.469c0,0 -17.922,7.875 -18.461,6.672 -0.508,-1.234 3.508,-25.5 6.367,-27.625zM154.047,429.391 L161.551,432c0,0 1.945,18.985 -0.672,21.837 -2.625,2.875 -17.785,9.188 -30.711,3.805 -3.039,-1.251 23.879,-28.251 23.879,-28.251z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m410.918,414.617c0,0 -9.523,40.017 -8.695,41.22 0.828,1.211 24.586,-9.609 25.648,-17.407 1.063,-7.789 -6.195,-25.414 -6.195,-25.414l-10.758,1.601z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m410.918,414.617c0,0 -9.523,40.017 -8.695,41.22 0.828,1.211 24.586,-9.609 25.648,-17.407 1.063,-7.789 -6.195,-25.414 -6.195,-25.414l-10.758,1.601z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m438.926,226.289c0.469,-13.379 -10.781,-14.25 -17.844,-7.313 -0.477,-1.047 -11.75,-8.816 -18.984,7.688 -15.617,-2 -13.539,11.473 -13.539,11.473 0,0 -12.719,-2.84 -11.57,14.309 -5.711,0.859 -4.938,4.656 -4.938,4.656 0,0 2.391,24 -19.43,28.266 -8.352,-12.797 -32.117,-19.344 -48.813,-27.438 -10.913,-5.297 -18.46,-11.609 -17.202,-13.828 6.961,-12.223 4.281,-14.805 4.281,-14.805 0,0 11.93,-5.395 9.938,-12.609 11.586,-3.328 8.07,-12.129 10.164,-14.512 2.078,-2.375 12.219,-1.215 7.406,-13.832 -0.844,-2.16 -13.375,-6.262 -18.125,-12.527 -0.938,0 -1.797,0.113 -1.797,0.113 0,0 -0.406,-8.832 -4.391,-9.113 -3.969,-0.297 -9.656,6.176 -14.406,5.977 -2.281,-0.098 -9.688,-0.375 -11.672,-0.672 -1.984,-0.281 -9.195,5.223 -9.195,5.223 0,0 -16.039,-3.504 -20.578,5.047 -11.75,-5.23 -17.625,4.266 -17.625,4.266 0,0 -14.985,-4.376 -17.543,12.213 -17.071,2.801 -16.008,11.032 -15.664,14.704 0.375,3.691 2.113,3.738 0.855,7.508 -6.152,1.5 -12.414,8.246 -12.414,8.246 0,0 -36.746,-5.512 -45.809,-7.391 -11.895,-2.488 -13.473,-4.504 -15.746,-6.363 -2.277,-1.855 -7.84,-2.359 -15.727,2.129 -3.43,1.938 -12.254,11.281 -20.902,19.234 -10.41,9.555 -20.969,19.016 -29.387,18.836 -5.094,-0.094 -14.16,8.203 -13.398,14.328 0.75,6.109 25.047,3.125 24.977,0.563 -0.074,-2.547 1.605,-3.891 1.605,-3.891 0,0 7.012,10.234 12.906,1.141 5.887,-9.094 13.926,-23.32 13.926,-23.32 0,0 7.152,-11.328 16.516,-8.816 9.359,2.512 55.949,10.059 63.445,19.902 1.199,1.594 -1.598,7.016 1.695,11.453 2.41,3.25 8.578,1.781 10.152,3.836 2.586,3.313 9.082,19.852 25.809,6.914 4.184,8.836 63.383,26.117 58.414,24.844 -23.313,-5.484 -21.719,2.063 -26.27,0.266 -4.551,-1.797 -16.473,-8.063 -20.281,5.234 -9.59,-2.344 -14.109,-1.797 -20.695,10.328 -1.328,0.609 -17.406,3.359 -13.27,19.266 -9.824,5.375 -7.266,13.523 1.613,22.555 -1.137,8.711 -3.641,15.641 12.609,17.547 0.938,1.422 2.832,7.617 16.59,6.914 2.57,4.086 -0.461,5.969 -0.461,5.969 0,0 -37.137,24.844 -53.402,25.719 -6.59,0.344 -6.262,0.773 -7.969,2.172 -1.695,1.406 -6.352,11.75 -6.352,11.75 0,0 -1.816,2.797 0.762,4.094 2.574,1.281 9.094,3.594 13.656,3.875 1.359,0.078 3.344,-0.406 4.176,-3.313 0.832,-2.907 7.063,-5.328 7.969,3.313 0.094,0.906 5.504,-0.25 5.965,-0.938 4.027,-6.047 7.098,-15.094 24.539,-21.672 14.406,-5.438 40.945,-14.156 42.992,-15.422 2.031,-1.266 3.047,-8.75 1.219,-11.188 -1.813,-2.422 -6.438,-8.156 -6.438,-8.156 0,0 16.828,-5.469 18.297,-6.078 -12.516,-17.922 4.992,-41.109 22.109,-37.547 -0.422,0.594 -5.141,5.313 3.797,11 -6.172,12.234 9.758,14.984 9.758,14.984 0,0 0.578,7.688 2.289,8.922 1.688,1.234 1.813,1.328 15.078,0.563 3.883,-0.219 11.172,13.094 25.227,-0.188 2.93,7.094 19.617,9.953 22.555,-0.094 16.406,8.359 22.492,-7.875 21.328,-10.625 2.016,-0.094 2.016,-0.281 2.953,-2 7.867,4 8.93,11.563 12.609,21.547 4.188,11.328 8.258,24.078 8.258,24.078 0,0 0.758,5.234 -0.281,5.875 -2.336,1.484 -4.672,7.211 -2.477,13.281 14.984,7.211 22.656,0.852 22.852,-0.281 0.195,-1.148 0.938,-4.922 2.086,-5.789 1.148,-0.852 7.281,-3.477 7.094,-4.82 -0.211,-1.328 -1.852,-3.422 -4.344,-6.047 -2.852,-1.094 -4.469,-4.625 -6.734,-5.836 -3.805,-1.984 -16.797,-40.773 -18.117,-46.555 -1.344,-5.789 3.805,-20.477 -4.742,-22.039 -7.75,-1.406 -10.828,6.508 -15.75,2.328 -1.406,-1.344 3.219,-2.477 -0.57,-7.703 -0.672,-0.914 -3.805,-4.164 -9.492,-3.031 2.016,-11.391 -12.5,-12.43 -12.5,-12.43 0,0 2.266,-5.586 -6.727,-18.867 23.695,1.523 21.32,-6.539 25.211,-7.492 2,-0.484 19.25,4.836 21.148,-7.031 2.555,0 14.883,1.719 17.648,-10.609 12.891,2.922 15.375,-10.914 15.375,-10.914 0,0 17.344,-3.016 8.907,-15.461 6.907,-5.15 7.416,-14.565 -5.187,-15.893M284.442,330.633c-2.672,3.047 -6.945,4.75 -7.297,3.891 1.367,-8.734 -2.734,-19.766 -10.047,-28.172 8.594,1.008 20.5,20.711 17.344,24.281\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m324.692,76.282c2.156,-3.297 3.406,-7.297 3.406,-11.609 0,-11.289 -8.578,-20.441 -19.172,-20.441 -0.5,0 -0.992,0.043 -1.484,0.082 3.82,-4.746 4.656,-11.215 1.531,-16.328 -4.055,-6.672 -13.25,-8.496 -20.531,-4.055 -0.438,0.254 -0.859,0.543 -1.25,0.84 -0.203,-2.051 -0.906,-4.031 -2.109,-5.793 -4.297,-6.23 -13.484,-7.359 -20.508,-2.521 -0.758,0.535 -1.461,1.137 -2.133,1.766 -4.438,-5.797 -13.289,-6.75 -20.109,-2.047 -1.969,1.375 -3.547,3.07 -4.727,4.93 -4.293,-2.168 -9.461,-2.074 -13.527,0.734 -5.566,3.855 -7.129,11.465 -3.855,17.641 -3.512,-0.176 -6.961,0.969 -9.504,3.527 -5.031,5.066 -4.559,13.68 1.063,19.23 0.348,0.336 0.691,0.656 1.043,0.961 -0.176,0.168 -0.402,0.336 -0.586,0.52 -4.785,4.832 -4.688,12.707 0.215,17.57 3.578,3.535 8.715,4.504 13.09,2.926 -1.574,4.32 -0.777,9.145 2.496,12.379 4.609,4.551 12.34,4.207 17.293,-0.777 0.883,-0.887 1.617,-1.871 2.203,-2.906 4.234,4.953 11.398,5.844 16.141,1.969 4.375,-3.582 5.164,-10.008 2.078,-15 12.727,-9.84 -5.219,-25.941 -15.797,-15.91 5.391,2.313 5.188,7.961 1.578,10.559 -0.719,0.258 -1.422,0.594 -2.063,1.016 -1.289,0.395 -2.813,0.473 -4.531,0.098 -10.871,-2.375 -6.383,-17.521 -6.383,-17.521 0,0 10.727,-17.297 30.867,-7.219 3.891,1.938 31.711,8.609 12.234,60.355 13.063,11.68 28.922,25.301 28.922,25.301 2.516,1.809 17.297,-30.207 20.141,-33.176 2.844,-2.965 4.609,-7.07 4.609,-11.598 -0.001,-7.191 -4.446,-13.304 -10.641,-15.503zM229.657,64.258c-4.184,-37.273 89.832,-38.938 65.895,41.719\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m433.793,169.801c5.602,-3.488 8.961,-9.891 8.069,-16.672 -0.796,-5.953 -4.671,-10.754 -9.906,-13.129 1.375,-2.824 1.969,-6 1.531,-9.271 -1.203,-8.988 -9.664,-15.316 -19.188,-14.605 0.875,-1.883 1.242,-3.969 0.969,-6.098 -0.891,-6.734 -7.984,-11.336 -15.828,-10.297 -4.18,0.563 -7.719,2.625 -9.961,5.449 -2.805,-7.359 -10.789,-12.078 -19.43,-10.918 -5.484,0.734 -10.078,3.672 -12.922,7.719 -4.188,-2.594 -9.813,-3.824 -15.781,-3.023 -11.445,1.52 -19.789,9.941 -18.609,18.801 0.359,2.84 1.703,5.375 3.703,7.469l-17.241,11.357 16.117,21.699c0,0 23.031,-17.16 42.828,-16.418 22.25,0.832 33.094,10.289 32.266,27.824 -0.719,15.273 -17.234,15.305 -20.586,7.785 -3.328,-7.52 3.914,-11.41 3.914,-11.41 -10.047,-9.27 -20.078,-1.637 -21.516,4.625 -3.281,-0.77 -6.75,-0.113 -9.438,2.082 -4.75,3.902 -5.219,11.229 -0.984,16.375 0.781,0.969 1.688,1.801 2.68,2.473 -2.727,4.23 -2.367,10.215 1.32,14.703 4.438,5.426 12.047,6.527 16.984,2.488 0.125,-0.082 0.219,-0.184 0.313,-0.281 0.484,1.082 1.109,2.113 1.891,3.082 4.438,5.422 12.297,6.344 17.523,2.063 2.055,-1.703 3.398,-3.953 4,-6.406 0.305,0.344 0.625,0.688 1,1.016 6.031,5.527 15.508,5.047 21.164,-1.113 3.813,-4.168 4.867,-9.855 3.273,-14.832 0.789,-0.016 1.57,-0.047 2.398,-0.168 8.906,-1.184 15.422,-7.77 14.492,-14.688 -0.428,-3.154 -2.295,-5.81 -5.045,-7.681\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m372.879,179.672c10.844,23.922 51.469,5.84 31.703,-29.488 -12.875,-23.023 -52.281,-21.496 -70.086,-5.281m99.297,24.898c5.602,-3.488 8.961,-9.891 8.069,-16.672 -0.796,-5.953 -4.671,-10.754 -9.906,-13.129 1.375,-2.824 1.969,-6 1.531,-9.271 -1.203,-8.988 -9.664,-15.316 -19.188,-14.605 0.875,-1.883 1.242,-3.969 0.969,-6.098 -0.891,-6.734 -7.984,-11.336 -15.828,-10.297 -4.18,0.563 -7.719,2.625 -9.961,5.449 -2.805,-7.359 -10.789,-12.078 -19.43,-10.918 -5.484,0.734 -10.078,3.672 -12.922,7.719 -4.188,-2.594 -9.813,-3.824 -15.781,-3.023 -11.445,1.52 -19.789,9.941 -18.609,18.801 0.359,2.84 1.703,5.375 3.703,7.469l-17.241,11.357 16.117,21.699c0,0 23.031,-17.16 42.828,-16.418 22.25,0.832 33.094,10.289 32.266,27.824 -0.719,15.273 -17.234,15.305 -20.586,7.785 -3.328,-7.52 3.914,-11.41 3.914,-11.41 -10.047,-9.27 -20.078,-1.637 -21.516,4.625 -3.281,-0.77 -6.75,-0.113 -9.438,2.082 -4.75,3.902 -5.219,11.229 -0.984,16.375 0.781,0.969 1.688,1.801 2.68,2.473 -2.727,4.23 -2.367,10.215 1.32,14.703 4.438,5.426 12.047,6.527 16.984,2.488 0.125,-0.082 0.219,-0.184 0.313,-0.281 0.484,1.082 1.109,2.113 1.891,3.082 4.438,5.422 12.297,6.344 17.523,2.063 2.055,-1.703 3.398,-3.953 4,-6.406 0.305,0.344 0.625,0.688 1,1.016 6.031,5.527 15.508,5.047 21.164,-1.113 3.813,-4.168 4.867,-9.855 3.273,-14.832 0.789,-0.016 1.57,-0.047 2.398,-0.168 8.906,-1.184 15.422,-7.77 14.492,-14.688 -0.428,-3.154 -2.295,-5.81 -5.045,-7.681z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m309.52,134.039c2.664,3.129 8.609,2.441 13.273,-1.535 4.695,-3.977 6.305,-9.742 3.648,-12.863 -2.672,-3.137 -8.594,-2.449 -13.289,1.527 -4.671,3.977 -6.312,9.742 -3.632,12.871\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m289.41,115.289c2.789,3.27 8.844,2.703 13.516,-1.273 4.688,-3.977 6.219,-9.863 3.422,-13.137 -2.773,-3.27 -8.828,-2.719 -13.5,1.266 -4.672,3.985 -6.203,9.863 -3.438,13.144\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m325.176,151.739c2.773,3.27 8.875,2.621 13.664,-1.434 4.758,-4.059 6.383,-9.977 3.602,-13.242 -2.781,-3.254 -8.898,-2.613 -13.672,1.434 -4.75,4.062 -6.375,9.984 -3.594,13.242\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m325.176,151.739c2.773,3.27 8.875,2.621 13.664,-1.434 4.758,-4.059 6.383,-9.977 3.602,-13.242 -2.781,-3.254 -8.898,-2.613 -13.672,1.434 -4.75,4.062 -6.375,9.984 -3.594,13.242zM289.41,115.289c2.789,3.27 8.844,2.703 13.516,-1.273 4.688,-3.977 6.219,-9.863 3.422,-13.137 -2.773,-3.27 -8.828,-2.719 -13.5,1.266 -4.672,3.985 -6.203,9.863 -3.438,13.144zM309.52,134.039c2.664,3.129 8.609,2.441 13.273,-1.535 4.695,-3.977 6.305,-9.742 3.648,-12.863 -2.672,-3.137 -8.594,-2.449 -13.289,1.527 -4.671,3.977 -6.312,9.742 -3.632,12.871z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m277.051,109.719c5.984,-12.23 3.078,-25.023 3.078,-25.023 0,0 20.445,8.898 11.531,34.762 -0.953,-0.825 -9.445,-7.091 -14.609,-9.739\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m326.254,159.657c13.5,-7.648 32.68,-4.449 32.68,-4.449 0,0 -14.586,-20.445 -38.781,-4.734 1,0.784 4.179,4.311 6.101,9.183\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m326.254,159.657c13.5,-7.648 32.68,-4.449 32.68,-4.449 0,0 -14.586,-20.445 -38.781,-4.734 1,0.784 4.179,4.311 6.101,9.183zM277.051,109.719c5.984,-12.23 3.078,-25.023 3.078,-25.023 0,0 20.445,8.898 11.531,34.762 -0.953,-0.825 -9.445,-7.091 -14.609,-9.739z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m243.317,155.992c-2.453,1.977 -38.66,14.359 -47.773,3.129 -9.793,-12.031 3,-25.711 4.887,-24.762 1.906,0.945 2.625,15.535 12.281,18.145 9.672,2.609 27.652,0.801 27.652,0.801l2.953,2.687z\"\n      android:fillColor=\"#040304\"/>\n  <path\n      android:pathData=\"m287.77,136.895c4.453,5.227 14.102,4.32 21.563,-2.039 7.477,-6.344 9.914,-15.727 5.484,-20.945 -4.469,-5.23 -14.109,-4.316 -21.578,2.027 -7.469,6.351 -9.907,15.726 -5.469,20.957\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m306.606,149.649c3.711,4.367 12.211,3.207 19.008,-2.559 6.797,-5.777 9.289,-13.992 5.594,-18.363 -3.719,-4.359 -12.219,-3.207 -19.023,2.57 -6.79,5.766 -9.298,13.992 -5.579,18.352\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m306.606,149.649c3.711,4.367 12.211,3.207 19.008,-2.559 6.797,-5.777 9.289,-13.992 5.594,-18.363 -3.719,-4.359 -12.219,-3.207 -19.023,2.57 -6.79,5.766 -9.298,13.992 -5.579,18.352zM287.77,136.895c4.453,5.227 14.102,4.32 21.563,-2.039 7.477,-6.344 9.914,-15.727 5.484,-20.945 -4.469,-5.23 -14.109,-4.316 -21.578,2.027 -7.469,6.351 -9.907,15.726 -5.469,20.957z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m272.004,115.504c27.422,14.137 43.492,39.688 47.875,48.855 3.219,-1.621 4.516,-4.078 7.625,-5.457 -10.695,-21.512 -30.914,-41.957 -49.828,-50.992 -1.625,2.707 -3.594,5.02 -5.672,7.594\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m272.004,115.504c27.422,14.137 43.492,39.688 47.875,48.855 3.219,-1.621 4.516,-4.078 7.625,-5.457 -10.695,-21.512 -30.914,-41.957 -49.828,-50.992 -1.625,2.707 -3.594,5.02 -5.672,7.594z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m296.051,127.375c10.891,9.793 21.688,23.426 25.297,33.953 -0.461,0.609 1.508,-0.488 0.672,-0.016 4,1.441 4.82,2.375 9.18,5.984 2.242,1.84 4.305,3.344 5.43,6.734 0.797,2.379 0.836,4.832 0.977,7.266 0.445,8.113 -1.992,15.734 -5.555,17.855 -4.844,2.887 -5.258,-3.168 -7.852,-7.375 -5.164,-8.395 -19.523,-13.84 -23.719,-20.602 -1.102,-1.766 -3.195,-10.215 -3.195,-10.215 0,0 -12.438,8.438 -20.117,9.359 -7.648,0.918 -11.609,-4.688 -26.031,-4.23 -5.039,4.309 -10.055,5.984 -14.297,7.766 -4.367,1.84 -6.754,-5.473 -12.832,-9.16 2.277,-1.734 18.902,1.16 19.293,-8.703 -2.445,1.977 -38.652,14.359 -47.766,3.129 -9.793,-12.031 3,-25.711 4.887,-24.762 1.906,0.945 2.625,15.535 12.281,18.145 9.672,2.609 27.66,0.801 27.66,0.801 0,0 -0.625,-0.313 -1.086,-0.648 -0.328,1.168 -23.902,-0.418 -23.902,-0.418 0,0 -3.238,-5.902 -1.031,-9.359 0.902,-1.07 1.031,-1.078 1.031,-1.078l2.281,-4.594c0,0 1.391,-1.84 3.375,-1.078 1.984,0.758 6.297,0.617 6.297,0.617 0,0 19.316,-15.18 25.754,-12.738 0.563,-4.91 8.82,-17.023 21.164,-11.504 0.742,-0.422 0.023,0.48 0.625,0.727 1.671,0.051 11.57,5.531 21.179,14.144\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m195.352,146.465c-0.199,0.961 -0.297,1.895 -0.297,2.824 0,2.816 0.969,5.457 2.938,7.855 6.863,8.543 34.566,0.672 43.566,-2.504 -8.305,2.504 -24.008,1.871 -30.145,0.551 -7.093,-1.382 -11.465,-10.831 -12.343,-16.093v-0.016c-1.36,1.621 -3.024,4.239 -3.719,7.383\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m273.496,138.367c-2.336,0.938 -4.953,-0.109 -5.852,-2.336 -0.875,-2.223 0.297,-4.785 2.633,-5.703 2.336,-0.938 4.953,0.113 5.852,2.336 0.891,2.231 -0.297,4.786 -2.633,5.703\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m275.16,132.641c-0.5,-0.395 -4.813,-3.129 -6.719,-2.922 -0.57,-0.535 -3.273,-1.992 -1.844,-2.613 0.781,-0.336 2.203,-0.512 2.516,-0.512 0.297,0 3.5,0.461 4.188,0.512 2.984,0.375 9.297,4.664 8.094,12.313 -0.242,1.55 -4.852,-5.7 -6.235,-6.778\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M228.985,145.168l-2.161,1.336l-1.312,0l-0.809,-0.527l-0.535,-1.067l0.817,-1.335l2.656,-2.407l1.871,-0.527l1.59,0.793l0,0.805l-0.805,1.593z\"\n      android:fillColor=\"#ffd730\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_so.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"470.754\"\n    android:viewportHeight=\"472.345\">\n  <path\n      android:pathData=\"M0,0h470.754v472.345h-470.754z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,0h470.754v236.176h-470.754z\"\n      android:fillColor=\"#e8423f\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_sz.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"473.19\"\n    android:viewportHeight=\"474.797\">\n  <path\n      android:pathData=\"M0,0h473.19v474.797h-473.19z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M25.488,95.082l0,23.192l70.711,0l0,70.726l23.176,0l0,-70.726l70.711,0l0,-23.192l-70.711,0l0,-70.714l-23.176,0l0,70.714z\"\n      android:fillColor=\"#ffffff\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_tg.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.879\"\n    android:viewportHeight=\"471.43\">\n  <path\n      android:pathData=\"M469.879,0l0,471.43l-469.879,-471.43z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M-0,0l469.879,471.43l-469.879,0z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"m386.536,336.344c0,0 -0.547,-3.555 0.563,-5.344 1.102,-1.781 1.438,-6.555 1.219,-8.016 -0.234,-1.438 0.547,-1.883 -7.234,-2.883 6.563,-3.117 17.922,0.797 20.25,2.469 2.344,1.656 4.227,13.125 7.344,14.906 -1.219,2.781 -6.789,2.219 -6.789,2.219L386.536,336.344z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m386.536,336.344c0,0 -0.547,-3.555 0.563,-5.344 1.102,-1.781 1.438,-6.555 1.219,-8.016 -0.234,-1.438 0.547,-1.883 -7.234,-2.883 6.563,-3.117 17.922,0.797 20.25,2.469 2.344,1.656 4.227,13.125 7.344,14.906 -1.219,2.781 -6.789,2.219 -6.789,2.219L386.536,336.344z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m123.918,178.281c-1.215,-0.457 -6.305,-1.559 -7.605,0.672 -7.348,12.512 4.672,40.281 15.965,45.816 6.09,2.969 6.168,0.855 6.152,0.199 -0.168,-7.855 -22.558,-31.695 -14.512,-46.687\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m123.918,178.281c-1.215,-0.457 -6.305,-1.559 -7.605,0.672 -7.348,12.512 4.672,40.281 15.965,45.816 6.09,2.969 6.168,0.855 6.152,0.199 -0.168,-7.855 -22.558,-31.695 -14.512,-46.687z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m201.079,340.773c-20.215,2.852 -51.816,23.078 -51.816,23.078 0,0 -14.848,9.797 -15.32,20.391 -0.48,10.563 4.898,12.953 4.898,12.953 0,0 14.055,12 10.422,20.516 -9.949,6.484 -28.934,9.836 -35.543,5.211 -6.793,-4.742 -0.633,-11.523 -2.055,-16.102 -3.008,-9.703 -12.043,-11.242 -14.539,-9.031 -1.574,1.445 5.441,3.25 3.953,8.531 -1.734,6.172 -9.473,0.094 -15,-0.688 -5.535,-0.781 -8.855,4.328 -8.855,4.328 0,0 5.215,-0.156 6.641,0.484 1.422,0.625 3.16,5.203 1.262,7.25 -2.895,3.156 -13.43,2.063 -16.27,12.328 4.262,-3.156 6.727,-2.391 7.262,-2.203 4.273,1.43 0.633,8.688 10.586,10.25 -6,2.234 -7.922,3.063 -9.16,3.953 6.641,-1.422 7.113,6.188 12.168,6.484 5.055,0.313 8.336,-1.344 9.313,-0.945 44.551,18.305 93.047,-23.219 95.406,-28.594 0.578,-1.297 -9,-6.625 -11.207,-8.836 -1.258,-1.266 -3.633,-10.117 -3.48,-10.672 2.383,-8.578 0.641,-10.344 1.434,-11.445 3.781,-5.289 40.137,-15 40.137,-15 0,0 -16.276,-25.913 -20.237,-32.241\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m201.079,340.773c-20.215,2.852 -51.816,23.078 -51.816,23.078 0,0 -14.848,9.797 -15.32,20.391 -0.48,10.563 4.898,12.953 4.898,12.953 0,0 14.055,12 10.422,20.516 -9.949,6.484 -28.934,9.836 -35.543,5.211 -6.793,-4.742 -0.633,-11.523 -2.055,-16.102 -3.008,-9.703 -12.043,-11.242 -14.539,-9.031 -1.574,1.445 5.441,3.25 3.953,8.531 -1.734,6.172 -9.473,0.094 -15,-0.688 -5.535,-0.781 -8.855,4.328 -8.855,4.328 0,0 5.215,-0.156 6.641,0.484 1.422,0.625 3.16,5.203 1.262,7.25 -2.895,3.156 -13.43,2.063 -16.27,12.328 4.262,-3.156 6.727,-2.391 7.262,-2.203 4.273,1.43 0.633,8.688 10.586,10.25 -6,2.234 -7.922,3.063 -9.16,3.953 6.641,-1.422 7.113,6.188 12.168,6.484 5.055,0.313 8.336,-1.344 9.313,-0.945 44.551,18.305 93.047,-23.219 95.406,-28.594 0.578,-1.297 -9,-6.625 -11.207,-8.836 -1.258,-1.266 -3.633,-10.117 -3.48,-10.672 2.383,-8.578 0.641,-10.344 1.434,-11.445 3.781,-5.289 40.137,-15 40.137,-15 0,0 -16.276,-25.913 -20.237,-32.241z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m201.079,340.773c-20.215,2.852 -51.816,23.078 -51.816,23.078 0,0 -14.848,9.797 -15.32,20.391 -0.48,10.563 4.898,12.953 4.898,12.953 0,0 14.055,12 10.422,20.516 -9.949,6.484 -28.934,9.836 -35.543,5.211 -6.793,-4.742 -0.633,-11.523 -2.055,-16.102 -3.008,-9.703 -12.043,-11.242 -14.539,-9.031 -1.574,1.445 5.441,3.25 3.953,8.531 -1.734,6.172 -9.473,0.094 -15,-0.688 -5.535,-0.781 -8.855,4.328 -8.855,4.328 0,0 5.215,-0.156 6.641,0.484 1.422,0.625 3.16,5.203 1.262,7.25 -2.895,3.156 -13.43,2.063 -16.27,12.328 4.262,-3.156 6.727,-2.391 7.262,-2.203 4.273,1.43 0.633,8.688 10.586,10.25 -6,2.234 -7.922,3.063 -9.16,3.953 6.641,-1.422 7.113,6.188 12.168,6.484 5.055,0.313 8.336,-1.344 9.313,-0.945 44.551,18.305 93.047,-23.219 95.406,-28.594 0.578,-1.297 -9,-6.625 -11.207,-8.836 -1.258,-1.266 -3.633,-10.117 -3.48,-10.672 2.383,-8.578 0.641,-10.344 1.434,-11.445 3.781,-5.289 40.137,-15 40.137,-15 0,0 -16.276,-25.913 -20.237,-32.241z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m95.086,408.867c0,0 -0.313,16.109 9.32,23.078 9.633,6.938 15.953,3.625 27.336,18.938M83.239,419.617c0,0 0.32,3.313 6.793,4.422 -1.105,3.313 4.105,19.734 9.641,23.375\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m173.864,274.726c-0.008,-0.086 -0.016,-0.172 -0.016,-0.297l-0.008,0.031c0.008,0.11 0.016,0.196 0.024,0.266m0,0c0.008,0.204 0.015,0.204 0,0M327.223,356.086c-11.961,-17.563 -37,-31.148 -49.977,-35.844 -15.68,-11.859 -18.93,-11.875 -23.602,-15.25 2.235,-15.375 -10.624,-34.031 -10.624,-34.031 0,0 -5.98,-6.859 -19.262,-6.922 3.504,2.734 17.559,13.984 13.918,16.688 -16.011,-27.938 -39.23,-18.641 -39.23,-18.641 0,0 9.547,1.805 12.137,7.477 2.609,5.688 12.383,27.453 22.969,37.523 3.375,3.219 10.266,8.375 19.094,11.508 21.602,7.656 52.594,26.602 59.141,35.102 3.391,4.406 5.594,10.484 5.484,12.672 -0.094,2.195 -2.391,4.195 -5.578,3.797 -4.094,-0.508 -52.594,-31.844 -52.594,-31.844 0,0 -10.477,-7.578 -31.715,-12.797 -13.88,-18.829 -54.602,-38.079 -63.208,-45.173 -0.066,0.078 -0.129,0.156 -0.191,0.234 4.551,-5.469 7.992,-11.375 10.469,-16.609 -0.703,5.578 -0.637,9.25 -0.582,10.469 0.078,-2 21.168,-23.406 17.168,-33.18 15.266,-6.047 13.344,-7.77 12.625,-13.609 -0.563,0.199 -1.699,0.129 -3.129,-0.016 1.039,0.066 2.078,0.098 3.129,0.016 -0.016,-7.832 -19.168,-11.918 -18.657,-12.949 0.52,-1.035 6.215,1.5 7.391,0.391 0.457,-0.426 -24.016,-29.473 -29.574,-28.688 -2.145,0.688 -3.273,2.641 -5.672,1.297 -2.41,-1.344 -8.121,-7.098 -10.344,-7.473 0.125,0.816 -2.586,2.934 -2.586,2.934 0,0 -3.273,1.113 -5.91,3 -2.648,1.891 -2.465,8.297 0.148,10.922 0.152,0.145 -2.215,6.871 -2.215,6.871 0,0 4.098,-5.504 4.816,-5.504 0.727,0 8.297,4.801 8.609,9.25 0.582,8.094 -13.336,20.422 -13.848,20.5 -2.848,0.441 -8.32,-9.828 -9.68,-10.527 -0.531,-0.262 -2.664,-2.277 -5.488,8.098 -0.219,0.801 0.582,2.559 1.992,4.84 -0.008,-0.016 -0.02,-0.016 -0.02,-0.016 0,0 -11.359,-7.902 -22.664,-8.887 1.898,0.125 3.633,0.422 4.945,0.832 -3.934,-8.266 -11.832,-39.922 -8.047,-56.84 25.617,-9.691 22.945,-13.738 22.672,-18.602 3.848,-4.785 -2.09,-10.512 -2.09,-10.512l-2.285,6.434c0,0 -2.594,1.729 -5.785,-0.539 -3.191,-2.262 -1.129,-10.855 -2.496,-15.719 -1.367,-4.848 -6.863,-9.824 -6.863,-9.824 0,0 1.254,3.855 1.488,5.008 0.23,1.137 -0.504,3.398 -5.008,3.152 -4.504,-0.258 -4.336,-4.984 -6.855,-7.234 -2.523,-2.246 -7.609,-3.52 -7.609,-3.52 0,0 3.406,7.402 2.598,8.531 -2.293,0.207 -5.191,6.855 -7.047,7.422 -1.848,0.543 -7.246,-7.918 -11.496,-2.23 5.25,-0.609 5.746,2.262 5.832,3.254 0.336,3.609 -8.48,17.465 -1.566,21.594 -6.664,15.43 0.191,24.656 0.191,24.656 0,0 -5.152,25.656 -5.754,55.641 0.746,0.504 1.355,1.191 1.832,1.895l-0.008,-0.016c-15.984,-13.832 -25.863,-56.344 -24.992,-61.578 0.457,-2.75 1.082,-3.766 1.082,-3.766 0,0 2.047,0.281 4.176,-0.281 2.121,-0.559 2.777,-1.109 2.777,-1.109 0,0 6.031,-0.547 7.621,-1.051 1.602,-0.504 7.387,-11.574 4.336,-18.984 -0.84,1.816 -1.965,6.051 -4.445,6.672 -2.48,0.641 -2.184,-1.664 -6.074,-3.254 1.199,-11.57 -10.055,-23.992 -10.055,-23.992 0,0 3.77,7.719 1.273,9.129 -2.496,1.398 -6.785,2.695 -6.785,2.695l-1.305,13.391c0.199,-2.801 0.406,-6.941 0.406,-12.398 -1.535,-3.488 -4.789,-9.379 -9.078,-14.273 1.992,3.199 4.383,8.785 -0.703,16.074 0.184,0.469 0.551,1.543 3.551,8.086 -3.406,-5.984 -15.727,-13.68 -15.727,-13.68 0,0 3.094,11.777 -3.066,18.52 4.371,1.938 1.273,40.656 12.25,42.641 2.801,5.801 5.887,75.242 20.457,93.703 1.824,0.086 16.238,-0.078 16.238,-0.078l-2.77,0.672c0,0 18.73,20.82 25.578,26.047 9.449,7.18 49.863,13.773 77.504,16.57 27.641,2.789 41.313,12.859 42.199,11.477 0.504,-1.094 -6.375,-9.094 -5,-9.477 2.895,-0.828 16.609,38.281 27.969,47.875 11.359,9.578 38.348,12.328 40.051,21.406 1.344,7.148 -2.703,25.969 -13.898,24.492 -1.68,-0.211 -6.609,-17.984 -9.43,-19.258 -2.828,-1.297 -10.316,-2.875 -16.973,0.828 1.137,0.352 7.953,1.922 10.609,2.531 2.313,2.375 -1.656,7.125 -3.047,7.625 -3.168,1.141 -5.672,0.375 -8.137,0.906 -6.719,1.438 -10.848,10.703 -10.848,10.703 0,0 12.246,0.375 12.766,6.969 6.578,-3.703 8.672,-6.594 13.27,-3.797 -14.867,3.391 -16.066,6.969 -18.586,17.453 5.613,-2.984 8.941,-5.453 10.598,-4.328 1.656,1.141 3.609,2.453 6.137,1.5 0.465,-0.164 1.031,-0.438 1.672,-0.75 -1.25,0.828 -2.25,1.608 -2.504,2.155 -0.809,1.742 0.313,10.017 1.391,11.117 0.496,-1.117 1.684,-5.298 4.496,-5.392 2.797,-0.117 12.234,1.603 13.594,-0.461 1.367,-2.047 -0.992,0.172 1.969,-3.233 2.953,-3.438 14.805,-8.556 17.781,-10.647 3.484,-7.023 29.719,-35.656 28.469,-54.656 -17.82,-3.297 -17.484,-7.086 -19.555,-10.164 -12.281,-2.836 -29.883,-29.453 -33.211,-34.406 4.836,5.047 48.586,33.109 59.617,36.359 13.385,3.936 27.463,-10.142 16.963,-25.595M195.665,227.129c-2.824,-0.199 -5.738,-0.146 -7.609,0.922 2.198,-1.25 4.808,-1.188 7.609,-0.922m-56.036,69.855c0.938,-0.258 1.852,-0.555 2.754,-0.883 -0.902,0.329 -1.816,0.625 -2.754,0.883\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m173.864,274.726c-0.008,-0.086 -0.016,-0.172 -0.016,-0.297l-0.008,0.031c0.008,0.11 0.016,0.196 0.024,0.266zM173.864,274.726c0.008,0.204 0.015,0.204 0,0zM327.223,356.086c-11.961,-17.563 -37,-31.148 -49.977,-35.844 -15.68,-11.859 -18.93,-11.875 -23.602,-15.25 2.235,-15.375 -10.624,-34.031 -10.624,-34.031 0,0 -5.98,-6.859 -19.262,-6.922 3.504,2.734 17.559,13.984 13.918,16.688 -16.011,-27.938 -39.23,-18.641 -39.23,-18.641 0,0 9.547,1.805 12.137,7.477 2.609,5.688 12.383,27.453 22.969,37.523 3.375,3.219 10.266,8.375 19.094,11.508 21.602,7.656 52.594,26.602 59.141,35.102 3.391,4.406 5.594,10.484 5.484,12.672 -0.094,2.195 -2.391,4.195 -5.578,3.797 -4.094,-0.508 -52.594,-31.844 -52.594,-31.844 0,0 -10.477,-7.578 -31.715,-12.797 -13.88,-18.829 -54.602,-38.079 -63.208,-45.173 -0.066,0.078 -0.129,0.156 -0.191,0.234 4.551,-5.469 7.992,-11.375 10.469,-16.609 -0.703,5.578 -0.637,9.25 -0.582,10.469 0.078,-2 21.168,-23.406 17.168,-33.18 15.266,-6.047 13.344,-7.77 12.625,-13.609 -0.563,0.199 -1.699,0.129 -3.129,-0.016 1.039,0.066 2.078,0.098 3.129,0.016 -0.016,-7.832 -19.168,-11.918 -18.657,-12.949 0.52,-1.035 6.215,1.5 7.391,0.391 0.457,-0.426 -24.016,-29.473 -29.574,-28.688 -2.145,0.688 -3.273,2.641 -5.672,1.297 -2.41,-1.344 -8.121,-7.098 -10.344,-7.473 0.125,0.816 -2.586,2.934 -2.586,2.934 0,0 -3.273,1.113 -5.91,3 -2.648,1.891 -2.465,8.297 0.148,10.922 0.152,0.145 -2.215,6.871 -2.215,6.871 0,0 4.098,-5.504 4.816,-5.504 0.727,0 8.297,4.801 8.609,9.25 0.582,8.094 -13.336,20.422 -13.848,20.5 -2.848,0.441 -8.32,-9.828 -9.68,-10.527 -0.531,-0.262 -2.664,-2.277 -5.488,8.098 -0.219,0.801 0.582,2.559 1.992,4.84 -0.008,-0.016 -0.02,-0.016 -0.02,-0.016 0,0 -11.359,-7.902 -22.664,-8.887 1.898,0.125 3.633,0.422 4.945,0.832 -3.934,-8.266 -11.832,-39.922 -8.047,-56.84 25.617,-9.691 22.945,-13.738 22.672,-18.602 3.848,-4.785 -2.09,-10.512 -2.09,-10.512l-2.285,6.434c0,0 -2.594,1.729 -5.785,-0.539 -3.191,-2.262 -1.129,-10.855 -2.496,-15.719 -1.367,-4.848 -6.863,-9.824 -6.863,-9.824 0,0 1.254,3.855 1.488,5.008 0.23,1.137 -0.504,3.398 -5.008,3.152 -4.504,-0.258 -4.336,-4.984 -6.855,-7.234 -2.523,-2.246 -7.609,-3.52 -7.609,-3.52 0,0 3.406,7.402 2.598,8.531 -2.293,0.207 -5.191,6.855 -7.047,7.422 -1.848,0.543 -7.246,-7.918 -11.496,-2.23 5.25,-0.609 5.746,2.262 5.832,3.254 0.336,3.609 -8.48,17.465 -1.566,21.594 -6.664,15.43 0.191,24.656 0.191,24.656 0,0 -5.152,25.656 -5.754,55.641 0.746,0.504 1.355,1.191 1.832,1.895l-0.008,-0.016c-15.984,-13.832 -25.863,-56.344 -24.992,-61.578 0.457,-2.75 1.082,-3.766 1.082,-3.766 0,0 2.047,0.281 4.176,-0.281 2.121,-0.559 2.777,-1.109 2.777,-1.109 0,0 6.031,-0.547 7.621,-1.051 1.602,-0.504 7.387,-11.574 4.336,-18.984 -0.84,1.816 -1.965,6.051 -4.445,6.672 -2.48,0.641 -2.184,-1.664 -6.074,-3.254 1.199,-11.57 -10.055,-23.992 -10.055,-23.992 0,0 3.77,7.719 1.273,9.129 -2.496,1.398 -6.785,2.695 -6.785,2.695l-1.305,13.391c0.199,-2.801 0.406,-6.941 0.406,-12.398 -1.535,-3.488 -4.789,-9.379 -9.078,-14.273 1.992,3.199 4.383,8.785 -0.703,16.074 0.184,0.469 0.551,1.543 3.551,8.086 -3.406,-5.984 -15.727,-13.68 -15.727,-13.68 0,0 3.094,11.777 -3.066,18.52 4.371,1.938 1.273,40.656 12.25,42.641 2.801,5.801 5.887,75.242 20.457,93.703 1.824,0.086 16.238,-0.078 16.238,-0.078l-2.77,0.672c0,0 18.73,20.82 25.578,26.047 9.449,7.18 49.863,13.773 77.504,16.57 27.641,2.789 41.313,12.859 42.199,11.477 0.504,-1.094 -6.375,-9.094 -5,-9.477 2.895,-0.828 16.609,38.281 27.969,47.875 11.359,9.578 38.348,12.328 40.051,21.406 1.344,7.148 -2.703,25.969 -13.898,24.492 -1.68,-0.211 -6.609,-17.984 -9.43,-19.258 -2.828,-1.297 -10.316,-2.875 -16.973,0.828 1.137,0.352 7.953,1.922 10.609,2.531 2.313,2.375 -1.656,7.125 -3.047,7.625 -3.168,1.141 -5.672,0.375 -8.137,0.906 -6.719,1.438 -10.848,10.703 -10.848,10.703 0,0 12.246,0.375 12.766,6.969 6.578,-3.703 8.672,-6.594 13.27,-3.797 -14.867,3.391 -16.066,6.969 -18.586,17.453 5.613,-2.984 8.941,-5.453 10.598,-4.328 1.656,1.141 3.609,2.453 6.137,1.5 0.465,-0.164 1.031,-0.438 1.672,-0.75 -1.25,0.828 -2.25,1.608 -2.504,2.155 -0.809,1.742 0.313,10.017 1.391,11.117 0.496,-1.117 1.684,-5.298 4.496,-5.392 2.797,-0.117 12.234,1.603 13.594,-0.461 1.367,-2.047 -0.992,0.172 1.969,-3.233 2.953,-3.438 14.805,-8.556 17.781,-10.647 3.484,-7.023 29.719,-35.656 28.469,-54.656 -17.82,-3.297 -17.484,-7.086 -19.555,-10.164 -12.281,-2.836 -29.883,-29.453 -33.211,-34.406 4.836,5.047 48.586,33.109 59.617,36.359 13.385,3.936 27.463,-10.142 16.963,-25.595zM195.665,227.129c-2.824,-0.199 -5.738,-0.146 -7.609,0.922 2.198,-1.25 4.808,-1.188 7.609,-0.922zM139.629,296.984c0.938,-0.258 1.852,-0.555 2.754,-0.883 -0.902,0.329 -1.816,0.625 -2.754,0.883z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m226.04,423.258c8.832,0.969 24.355,11.406 21.965,4.156m13.499,-218.02c-0.859,2.703 -0.797,3.047 3.813,7.781 -8.359,16.234 -2.375,28.16 -2.375,28.16\"\n      android:strokeWidth=\"2.78399992\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m70.711,177.672c6.672,-1.031 13.336,-10.109 20.656,-21.59 7.32,-11.488 15.383,-14.09 17.609,-13.801M70.247,152.562c0,0 14.273,-15.113 24.273,-18.074 -3.801,-10.277 0.551,-9.625 0.551,-9.625m-43.91,27.234c0,0 -8.992,9.273 -9.449,19.93\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m186.68,352.461c0,0 15.941,8 21.703,7.781 -1.047,-2.844 -4.121,-9.047 -4.121,-9.047 0,0 -6.137,-3.523 -17.582,1.266\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m186.68,352.461c0,0 15.941,8 21.703,7.781 -1.047,-2.844 -4.121,-9.047 -4.121,-9.047 0,0 -6.137,-3.523 -17.582,1.266z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M377.333,215.601C374.88,214.288 350.185,210.16 337.88,212.074c-12.305,1.918 -14.516,14.23 -15.32,19.84 -0.805,5.605 0.883,14.359 -16.727,11.141 -7.469,-1.359 -17.023,-10.699 -16.93,-15.508 0.102,-6.691 8.281,-9.396 8.477,-14.578 0.063,-1.543 0.156,-14.512 -9.797,-14.512 -0.828,2.77 3.656,10.098 -2.422,10.754 -5.859,0.637 -10.734,-7.832 -15.781,-11.02 -3.836,-2.438 -8.984,-0.719 -8.984,-0.719l6.703,4.234c0,0 -0.164,5.719 -2.656,7.047 -4.72,2.505 -14.392,-5.687 -23.243,4.048 5.727,-0.734 7.406,0.871 8.984,1.234 1.703,4.246 -2.148,11.855 4.586,14.797 -1.391,-0.184 -10.891,-0.832 -10.734,-0.504 5.688,1.906 4.773,7 4.773,7 0,0 2.18,6.938 12.469,8.297 16.18,22.164 59.727,39.391 88.234,37.836 -0.414,-22.688 6.984,-29.031 20.422,-31.344 1.086,-5.117 7.18,-33.445 7.399,-34.516\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m152.622,57.488c-0.309,1.09 -3.504,11.824 2.832,22.555 0.121,-0.297 -0.063,-1.984 -0.063,-1.984 0,0 3.984,-2.832 5.551,-5.977 0.738,-1.48 6.09,-3.555 9.113,-7.234 3.063,-4.551 0.602,-14.293 -5.375,-19.598 0.367,4.641 1.512,7.414 0.719,8.254 -3.184,3.449 -12.481,2.906 -12.777,3.984\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m152.622,57.488c-0.309,1.09 -3.504,11.824 2.832,22.555 0.121,-0.297 -0.063,-1.984 -0.063,-1.984 0,0 3.984,-2.832 5.551,-5.977 0.738,-1.48 6.09,-3.555 9.113,-7.234 3.063,-4.551 0.602,-14.293 -5.375,-19.598 0.367,4.641 1.512,7.414 0.719,8.254 -3.184,3.449 -12.481,2.906 -12.777,3.984z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m286.02,28.883c-1.406,-0.184 -7.086,-0.012 -7.883,2.902 -4.508,16.434 15.508,44.832 28.914,47.969 7.219,1.688 6.766,-0.754 6.57,-1.504 -2.242,-8.953 -32.195,-29.938 -27.601,-49.367\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m286.02,28.883c-1.406,-0.184 -7.086,-0.012 -7.883,2.902 -4.508,16.434 15.508,44.832 28.914,47.969 7.219,1.688 6.766,-0.754 6.57,-1.504 -2.242,-8.953 -32.195,-29.938 -27.601,-49.367z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m286.02,28.883c-1.406,-0.184 -7.086,-0.012 -7.883,2.902 -4.508,16.434 15.508,44.832 28.914,47.969 7.219,1.688 6.766,-0.754 6.57,-1.504 -2.242,-8.953 -32.195,-29.938 -27.601,-49.367z\"\n      android:strokeWidth=\"2.78399992\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"M377.333,215.601C374.88,214.288 350.185,210.16 337.88,212.074c-12.305,1.918 -14.516,14.23 -15.32,19.84 -0.805,5.605 0.883,14.359 -16.727,11.141 -7.469,-1.359 -17.023,-10.699 -16.93,-15.508 0.102,-6.691 8.281,-9.396 8.477,-14.578 0.063,-1.543 0.156,-14.512 -9.797,-14.512 -0.828,2.77 3.656,10.098 -2.422,10.754 -5.859,0.637 -10.734,-7.832 -15.781,-11.02 -3.836,-2.438 -8.984,-0.719 -8.984,-0.719l6.703,4.234c0,0 -0.164,5.719 -2.656,7.047 -4.72,2.505 -14.392,-5.687 -23.243,4.048 5.727,-0.734 7.406,0.871 8.984,1.234 1.703,4.246 -2.148,11.855 4.586,14.797 -1.391,-0.184 -10.891,-0.832 -10.734,-0.504 5.688,1.906 4.773,7 4.773,7 0,0 2.18,6.938 12.469,8.297 16.18,22.164 59.727,39.391 88.234,37.836 -0.414,-22.688 6.984,-29.031 20.422,-31.344 1.086,-5.117 7.18,-33.445 7.399,-34.516z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m344.364,220.504c9.242,-0.047 20.375,0.395 23.141,4.906 0.031,1.887 0.68,6.109 0.984,9.109 -4.571,-0.636 -24.125,-12.984 -24.125,-14.015\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m458.708,233.426c-0.953,-9.184 -10.656,-33.344 -34.344,-69.527 -16.719,-25.543 -18.117,-38.656 -15.031,-49.871 15.375,-2.242 35.625,-23.059 35.063,-35.664 -0.547,-12.609 -8.164,-19.02 -8.164,-19.02 0,0 -4.336,27.219 -9.992,25.664 1.945,-2.773 7.797,-11.512 7.898,-23.824 0.094,-12.301 -17.328,-23.207 -19.805,-23.383 1.625,2.25 8.422,9.32 6.688,14.801 -1.742,5.465 -6.313,11.734 -12.539,19.918 -6.305,8.266 -14.445,21.914 -15.43,34.938 -0.984,12.938 6.141,28.367 9.359,37.711 3.43,9.898 26.742,47.633 26.742,47.633 0,0 27.883,42.047 18.454,49.816 -2.867,2.375 -15.022,1.672 -21.819,-7.785 -6.359,-8.855 -5.5,-8.488 -10.961,-16.688 -7.742,-11.59 -12.594,-10.766 -12.922,-12.168 -24.914,-41.887 -59.734,-65.191 -64.867,-68.246 0,0 8.031,-7.875 10.469,-16.594 -0.141,3.063 -0.766,10.855 -0.766,10.855 0,0 22.469,-25.223 19.867,-38.359 29.055,-2.598 18.344,-16.504 15.891,-17.879 0.164,-1.656 -16.602,-8.809 -16.602,-10.383 0,0 0.391,-0.234 0.945,-0.473 5.508,1.656 6.836,1.336 6.766,0.473 -0.078,-0.859 -22.867,-26.648 -32.383,-28.457 -3.156,2.191 -3.703,0.941 -5.766,1.336 -3.141,0.473 -10.914,-9.754 -14.844,-9.984 -0.398,1.566 -4.023,3.457 -4.023,3.457 0,0 -7.852,2.359 -9.43,5.27 -1.57,2.906 1.328,9.746 1.328,9.746l-1.25,6.527c0,0 4.156,-5.191 4.391,-5.586 2.125,3.152 8.898,2.832 10.555,11.875 1.641,9.039 -5.281,12.031 -7.945,17.453 -2.672,5.426 -5.422,3.457 -7.711,3.066 -3.367,-0.578 -11.242,-8.488 -11.555,-8.488 -3.547,0 -5.422,9.27 -5.344,10.527 1.016,-0.391 1.484,3.383 2.469,3.863 0.477,0.223 1.156,0.641 1.859,1.129 -12.219,-8.168 -32.344,-6.129 -32.203,-5.551 0.156,0.613 5.508,2.75 5.203,4.125 -0.234,0.977 -9.547,-1.406 -22.086,3.02 0.148,-0.059 0.281,-0.113 0.414,-0.152 0,0 -22.215,-23.051 -16.277,-39.496 7.488,-1.707 13.434,-1.051 17.863,-2.785 7.391,-2.871 10.898,-11.535 10.773,-15.609 -7.219,7.863 -9.398,5.848 -10.594,5.305 -4.469,-2 0.391,-13.559 0,-17.688 -0.422,-4.137 -5.844,-9.023 -5.844,-9.023 0,0 1.688,6.137 -7.242,9.023 -4.199,1.352 -7.68,-4.832 -10.605,-7.434 -2.953,-2.598 -8.504,-3.008 -8.504,-3.008 0,0 4.445,6.73 3.168,8.496 -2.871,0.074 -5.52,4.785 -9.359,5.656 -3.839,0.871 -7.594,-7.771 -14.16,-2.121 4.902,-0.484 5.336,0.938 5.832,1.77 2.293,3.73 -1.25,4.855 -2.793,19.465 -0.664,6.375 -0.105,13.121 0.566,18.656 1.531,12.535 10.891,26.809 16.203,55.809 0.031,0.023 0.078,0.047 0.125,0.063 -19.688,-8.105 -41.664,-13.648 -53.07,-25.07 -11.863,-11.863 -10.266,-30.25 -8.746,-33.027 0,-0.965 -7.941,-12.98 -23.023,-14.836 7.953,6.477 6.938,4.438 1.113,13.734 3.879,4.328 5.984,8.609 7.105,11.68 -1.098,-2.297 -3.145,-5.543 -6.977,-10.016 -4.043,-1.258 -10.578,-1.488 -18.992,0.711 11.23,1.922 9.063,14.801 9.063,14.801 0,0 2.879,1.945 8.602,4.902 -6.273,-2.695 -25.297,1.289 -25.297,1.289 0,0 15.391,1.328 14.008,10.906 7.77,5.133 16.785,15.535 20.816,17.719 1.543,0.945 0.832,1.703 8.59,3.344 28.168,34.016 73.145,61.383 78.129,63.297 5.688,-1.25 15.668,-0.832 15.668,-0.832 0,0 -4.164,0.543 -8.469,1.016 7.5,9.801 33.828,11.605 67.828,15.641C346.459,196.276 364.506,221.803 367.146,222.229c0.828,-2.219 -1.531,-3.473 -1.813,-11.512 7.625,12.621 -1.391,50.059 12.211,64.09 13.039,13.477 31.492,25.133 36.195,31.508 1.477,1.984 3.328,6.102 2.359,17.625 -0.461,5.258 -4.297,8.164 -8.133,14.984 -2.453,1.18 -5.586,1.461 -9.617,0 -23.43,-8.43 -30.398,3.867 -30.398,3.867 0,0 14.164,-1.508 13.742,6.82 1.195,-0.227 2.578,-0.359 4.031,-0.391 -3.328,1.18 -6.594,3.93 -8.594,9.703 6.086,-3.508 11.641,3.586 14.313,7.148 2.656,3.57 5.719,0.484 5.719,0.484 0,0 7.281,-8.484 13.359,-8.578 -0.664,0.375 -18.422,4.813 -13.828,24.328 2.344,-12.297 16.5,-2.859 20.031,-7.625 0.203,-0.906 -0.063,-3.563 1.898,-6.219 1.977,-2.641 13.383,-6.672 13.383,-6.672 0,0 11.281,-18.422 11.906,-29.109 0.172,-2.953 2.844,-17.625 3.094,-43.406 -19.398,-1.688 -20.367,-14.594 -22.172,-28.625 -1.242,-9.641 -4.359,-16.594 -6.203,-20.031 3.656,5.719 14.273,19.406 30.063,15.734 10.851,-2.547 10.969,-13.735 10.016,-22.926M296.286,88.898c-0.313,-0.281 -0.625,-0.535 -0.953,-0.793 0.343,0.274 0.671,0.528 0.953,0.793m-1.383,-1.121c-0.313,-0.215 -0.617,-0.449 -0.938,-0.664 0.313,0.223 0.625,0.442 0.938,0.664\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m458.708,233.426c-0.953,-9.184 -10.656,-33.344 -34.344,-69.527 -16.719,-25.543 -18.117,-38.656 -15.031,-49.871 15.375,-2.242 35.625,-23.059 35.063,-35.664 -0.547,-12.609 -8.164,-19.02 -8.164,-19.02 0,0 -4.336,27.219 -9.992,25.664 1.945,-2.773 7.797,-11.512 7.898,-23.824 0.094,-12.301 -17.328,-23.207 -19.805,-23.383 1.625,2.25 8.422,9.32 6.688,14.801 -1.742,5.465 -6.313,11.734 -12.539,19.918 -6.305,8.266 -14.445,21.914 -15.43,34.938 -0.984,12.938 6.141,28.367 9.359,37.711 3.43,9.898 26.742,47.633 26.742,47.633 0,0 27.883,42.047 18.454,49.816 -2.867,2.375 -15.022,1.672 -21.819,-7.785 -6.359,-8.855 -5.5,-8.488 -10.961,-16.688 -7.742,-11.59 -12.594,-10.766 -12.922,-12.168 -24.914,-41.887 -59.734,-65.191 -64.867,-68.246 0,0 8.031,-7.875 10.469,-16.594 -0.141,3.063 -0.766,10.855 -0.766,10.855 0,0 22.469,-25.223 19.867,-38.359 29.055,-2.598 18.344,-16.504 15.891,-17.879 0.164,-1.656 -16.602,-8.809 -16.602,-10.383 0,0 0.391,-0.234 0.945,-0.473 5.508,1.656 6.836,1.336 6.766,0.473 -0.078,-0.859 -22.867,-26.648 -32.383,-28.457 -3.156,2.191 -3.703,0.941 -5.766,1.336 -3.141,0.473 -10.914,-9.754 -14.844,-9.984 -0.398,1.566 -4.023,3.457 -4.023,3.457 0,0 -7.852,2.359 -9.43,5.27 -1.57,2.906 1.328,9.746 1.328,9.746l-1.25,6.527c0,0 4.156,-5.191 4.391,-5.586 2.125,3.152 8.898,2.832 10.555,11.875 1.641,9.039 -5.281,12.031 -7.945,17.453 -2.672,5.426 -5.422,3.457 -7.711,3.066 -3.367,-0.578 -11.242,-8.488 -11.555,-8.488 -3.547,0 -5.422,9.27 -5.344,10.527 1.016,-0.391 1.484,3.383 2.469,3.863 0.477,0.223 1.156,0.641 1.859,1.129 -12.219,-8.168 -32.344,-6.129 -32.203,-5.551 0.156,0.613 5.508,2.75 5.203,4.125 -0.234,0.977 -9.547,-1.406 -22.086,3.02 0.148,-0.059 0.281,-0.113 0.414,-0.152 0,0 -22.215,-23.051 -16.277,-39.496 7.488,-1.707 13.434,-1.051 17.863,-2.785 7.391,-2.871 10.898,-11.535 10.773,-15.609 -7.219,7.863 -9.398,5.848 -10.594,5.305 -4.469,-2 0.391,-13.559 0,-17.688 -0.422,-4.137 -5.844,-9.023 -5.844,-9.023 0,0 1.688,6.137 -7.242,9.023 -4.199,1.352 -7.68,-4.832 -10.605,-7.434 -2.953,-2.598 -8.504,-3.008 -8.504,-3.008 0,0 4.445,6.73 3.168,8.496 -2.871,0.074 -5.52,4.785 -9.359,5.656 -3.839,0.871 -7.594,-7.771 -14.16,-2.121 4.902,-0.484 5.336,0.938 5.832,1.77 2.293,3.73 -1.25,4.855 -2.793,19.465 -0.664,6.375 -0.105,13.121 0.566,18.656 1.531,12.535 10.891,26.809 16.203,55.809 0.031,0.023 0.078,0.047 0.125,0.063 -19.688,-8.105 -41.664,-13.648 -53.07,-25.07 -11.863,-11.863 -10.266,-30.25 -8.746,-33.027 0,-0.965 -7.941,-12.98 -23.023,-14.836 7.953,6.477 6.938,4.438 1.113,13.734 3.879,4.328 5.984,8.609 7.105,11.68 -1.098,-2.297 -3.145,-5.543 -6.977,-10.016 -4.043,-1.258 -10.578,-1.488 -18.992,0.711 11.23,1.922 9.063,14.801 9.063,14.801 0,0 2.879,1.945 8.602,4.902 -6.273,-2.695 -25.297,1.289 -25.297,1.289 0,0 15.391,1.328 14.008,10.906 7.77,5.133 16.785,15.535 20.816,17.719 1.543,0.945 0.832,1.703 8.59,3.344 28.168,34.016 73.145,61.383 78.129,63.297 5.688,-1.25 15.668,-0.832 15.668,-0.832 0,0 -4.164,0.543 -8.469,1.016 7.5,9.801 33.828,11.605 67.828,15.641 45.672,5.391 63.719,30.918 66.359,31.344 0.828,-2.219 -1.531,-3.473 -1.813,-11.512 7.625,12.621 -1.391,50.059 12.211,64.09 13.039,13.477 31.492,25.133 36.195,31.508 1.477,1.984 3.328,6.102 2.359,17.625 -0.461,5.258 -4.297,8.164 -8.133,14.984 -2.453,1.18 -5.586,1.461 -9.617,0 -23.43,-8.43 -30.398,3.867 -30.398,3.867 0,0 14.164,-1.508 13.742,6.82 1.195,-0.227 2.578,-0.359 4.031,-0.391 -3.328,1.18 -6.594,3.93 -8.594,9.703 6.086,-3.508 11.641,3.586 14.313,7.148 2.656,3.57 5.719,0.484 5.719,0.484 0,0 7.281,-8.484 13.359,-8.578 -0.664,0.375 -18.422,4.813 -13.828,24.328 2.344,-12.297 16.5,-2.859 20.031,-7.625 0.203,-0.906 -0.063,-3.563 1.898,-6.219 1.977,-2.641 13.383,-6.672 13.383,-6.672 0,0 11.281,-18.422 11.906,-29.109 0.172,-2.953 2.844,-17.625 3.094,-43.406 -19.398,-1.688 -20.367,-14.594 -22.172,-28.625 -1.242,-9.641 -4.359,-16.594 -6.203,-20.031 3.656,5.719 14.273,19.406 30.063,15.734 10.851,-2.547 10.969,-13.735 10.016,-22.926zM296.286,88.898c-0.313,-0.281 -0.625,-0.535 -0.953,-0.793 0.343,0.274 0.671,0.528 0.953,0.793zM294.903,87.777c-0.313,-0.215 -0.617,-0.449 -0.938,-0.664 0.313,0.223 0.625,0.442 0.938,0.664z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m337.02,137.73c5.148,3.055 39.953,26.352 64.875,68.246 0.328,1.41 5.188,0.578 12.922,12.168 5.461,8.199 4.609,7.832 10.969,16.688 6.789,9.457 18.938,10.16 21.813,7.785 9.438,-7.77 -18.453,-49.816 -18.453,-49.816 0,0 -23.313,-37.727 -26.734,-47.633 -3.227,-9.344 -10.344,-24.773 -9.359,-37.711 0.984,-13.023 9.117,-26.672 15.422,-34.938 6.234,-8.184 10.805,-14.461 12.547,-19.918 1.734,-5.48 -5.07,-12.543 -6.688,-14.801 2.469,0.168 19.883,11.082 19.797,23.383 -0.109,12.305 -5.953,21.051 -7.898,23.824 5.656,1.555 9.992,-25.664 9.992,-25.664 0,0 7.617,6.41 8.172,19.02 0.555,12.605 -19.688,33.422 -35.063,35.664 -3.094,11.215 -1.688,24.324 15.031,49.871 23.688,36.184 33.391,60.344 34.344,69.527 0.953,9.183 0.828,20.379 -10.017,22.902 -19.835,4.609 -31.5,-18.145 -31.5,-18.145 0,0 5.828,8.379 7.633,22.441 1.82,14.031 2.781,26.938 22.164,28.625 -0.234,25.789 -2.906,40.461 -3.088,43.406 -0.625,10.688 -11.913,29.117 -11.913,29.117 0,0 -11.398,4.031 -13.375,6.672 -1.969,2.656 -1.695,5.313 -1.906,6.211 -3.523,4.773 -17.688,-4.672 -20.031,7.625 -4.594,-19.508 13.172,-23.953 13.836,-24.328 -6.086,0.102 -13.359,8.57 -13.359,8.57 0,0 -3.07,3.102 -5.727,-0.484 -2.672,-3.547 -8.219,-10.641 -14.313,-7.141 5.531,-15.844 20.516,-9.063 20.516,-9.063 0,0 -10.125,-1.344 -15.953,-0.25 0.422,-8.328 -13.734,-6.813 -13.734,-6.813 0,0 6.969,-12.297 30.391,-3.875 4.031,1.453 7.172,1.188 9.625,0 3.828,-6.813 7.672,-9.719 8.125,-14.984 0.969,-11.531 -0.875,-15.641 -2.359,-17.625 -4.703,-6.375 -23.156,-18.031 -36.188,-31.5 -13.602,-14.031 -4.586,-51.477 -12.203,-64.102 0.266,8.051 2.625,9.297 1.805,11.512 -2.641,-0.422 -20.68,-25.949 -66.352,-31.344 -34,-4.031 -60.328,-5.84 -67.836,-15.637 4.305,-0.473 8.477,-1.02 8.477,-1.02 0,0 -9.988,-0.422 -15.676,0.836 -4.986,-1.902 -49.951,-29.277 -78.13,-63.293 -7.758,-1.641 -7.047,-2.402 -8.59,-3.344 -4.031,-2.176 -13.047,-12.586 -20.816,-17.723 1.383,-9.574 -14.008,-10.902 -14.008,-10.902 0,0 20.809,-4.359 26.078,-0.887 -6.246,-3.195 -9.383,-5.305 -9.383,-5.305 0,0 2.168,-12.871 -9.063,-14.801 8.414,-2.191 14.949,-1.969 18.992,-0.711 9.16,10.68 8.199,14.551 8.199,14.551 0,0 -0.977,-8.031 -8.328,-16.215 5.824,-9.297 6.84,-7.258 -1.113,-13.738 15.082,1.855 23.023,13.871 23.023,14.84 -1.52,2.777 -3.117,21.16 8.746,33.023 16.23,16.227 53.832,20.594 75.758,37.328 14.59,11.129 12.488,28.715 -2.184,30.152 6.211,5.77 32.445,4.527 32.445,4.527 0,0 -5,4.723 -6.672,6.234 2.219,1.672 31.078,5.543 49.125,-15.398 -2.5,5.68 -4.023,8.605 -4.023,8.605 0,0 7.354,1.139 31.213,-24.244z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m234.942,158.035c6.211,5.766 32.438,4.527 32.438,4.527 0,0 -5,4.719 -6.672,6.23 2.227,1.672 31.078,5.543 49.133,-15.398 -2.508,5.68 -4.023,8.605 -4.023,8.605 0,0 7.352,1.113 31.203,-24.277 0,0 8.031,-7.875 10.477,-16.594 -0.148,3.063 -0.773,10.855 -0.773,10.855 0,0 22.477,-25.223 19.875,-38.359 29.047,-2.598 18.344,-16.504 15.891,-17.879 -0.766,-0.152 -8.258,0 -14.672,-0.313 -6.422,-0.305 -8.406,6.121 -8.406,6.121 0,0 -4.422,10.535 -14.063,23.223 -14.328,18.879 -37.281,-5.648 -49.07,-15.879 -11.75,-10.25 -34.695,-7.953 -34.523,-7.344 0.148,0.613 5.5,2.75 5.195,4.125 -0.305,1.379 -18.797,-3.965 -38.832,12.691 0.922,0 10.246,-0.137 9.934,2.438 -0.156,1.227 -12.98,2.762 -17.262,17.578 0.906,0.305 11.516,5.824 16.328,9.504 14.603,11.119 12.494,28.712 -2.178,30.146\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m220.797,118.387c4.281,-14.824 17.113,-16.352 17.27,-17.578 0.313,-2.566 -9.02,-2.438 -9.941,-2.438 6.02,-5 11.879,-8.016 17.16,-9.824 0,0 -22.215,-23.051 -16.277,-39.496 7.488,-1.707 13.434,-1.051 17.863,-2.785 7.391,-2.871 10.898,-11.535 10.773,-15.609 -7.219,7.863 -9.398,5.848 -10.594,5.305 -4.469,-2 0.391,-13.561 0,-17.688 -0.422,-4.137 -5.844,-9.023 -5.844,-9.023 0,0 1.688,6.137 -7.242,9.023 -4.199,1.352 -7.68,-4.832 -10.605,-7.434 -2.953,-2.598 -8.504,-3.008 -8.504,-3.008 0,0 4.449,6.73 3.168,8.496 -2.871,0.074 -5.52,4.785 -9.359,5.656 -3.839,0.871 -7.594,-7.771 -14.16,-2.121 4.902,-0.484 5.336,0.938 5.832,1.77 2.293,3.73 -1.25,4.855 -2.793,19.465 -0.664,6.375 -0.105,13.121 0.566,18.656 1.531,12.535 10.891,26.809 16.203,55.809 0.68,0.39 6.484,2.824 6.484,2.824z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m382.489,75.754c-0.008,0.313 -8.258,0 -14.672,-0.313 -6.422,-0.305 -8.406,6.121 -8.406,6.121 0,0 -4.422,10.535 -14.063,23.223 -14.328,18.879 -37.281,-5.648 -49.07,-15.879 -1.273,-1.129 -3.195,-2.441 -4.18,-2.914 -0.984,-0.488 -1.453,-4.254 -2.477,-3.863 -0.078,-1.258 1.805,-10.527 5.352,-10.527 0.305,0 8.18,7.902 11.547,8.488 2.289,0.391 5.039,2.359 7.711,-3.063 2.664,-5.426 9.586,-8.418 7.945,-17.457 -1.656,-9.043 -8.438,-8.729 -10.555,-11.871 -0.227,0.391 -4.391,5.582 -4.391,5.582l1.25,-6.527c0,0 -2.898,-6.832 -1.328,-9.746 1.57,-2.91 9.43,-5.27 9.43,-5.27 0,0 3.625,-1.883 4.016,-3.457 3.93,0.23 11.719,10.457 14.844,9.984 2.063,-0.395 2.609,0.855 5.766,-1.336 9.5,1.809 32.305,27.59 32.383,28.457 0.086,0.863 -1.258,1.184 -6.766,-0.473 -0.555,0.23 -0.945,0.473 -0.945,0.473 0.007,1.559 16.781,8.711 16.609,10.368z\"\n      android:strokeWidth=\"2.78399992\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#110a0e\"/>\n  <path\n      android:pathData=\"m337.512,44.691c1.242,0.164 13.117,3.23 15.242,17.148 -0.477,0.785 -15.242,-2.277 -15.242,-6.688 0,-4.983 5.11,-6.054 0,-10.46\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m68.286,239c0,0 1.211,-6.168 13.488,-4.871 1.289,-2.281 -7.879,-4.094 -7.719,-4.801 0.16,-0.719 13.223,-6.168 22.152,-4.145 -1.879,-1.438 -3.223,-2.031 -5.785,-2.246 4.504,-1.855 11,-1.488 14.465,-0.426 -3.938,-8.262 -11.832,-39.918 -8.047,-56.84 25.613,-9.688 22.941,-13.734 22.672,-18.598 3.848,-4.785 -2.09,-10.512 -2.09,-10.512l-2.285,6.43c0,0 -2.594,1.73 -5.785,-0.535 -3.191,-2.265 -1.129,-10.855 -2.496,-15.719 -1.367,-4.848 -6.863,-9.824 -6.863,-9.824 0,0 1.254,3.855 1.488,5.008 0.23,1.137 -0.504,3.398 -5.008,3.152 -4.508,-0.258 -4.336,-4.984 -6.859,-7.234 -2.52,-2.246 -7.605,-3.52 -7.605,-3.52 0,0 3.406,7.402 2.598,8.527 -2.293,0.211 -5.191,6.859 -7.047,7.426 -1.848,0.543 -7.246,-7.918 -11.496,-2.23 5.25,-0.609 5.746,2.262 5.832,3.254 0.336,3.609 -8.48,17.465 -1.566,21.594 -6.664,15.43 0.191,24.656 0.191,24.656 0,0 -5.152,25.652 -5.754,55.637 2.847,2.075 3.519,5.817 3.519,5.817zM231.11,17.93c0.656,2.809 -5.781,5.105 -8.734,10.793 -13.23,3.328 -22.328,13.977 -24.984,20.926m3.847,21.8c2.512,-1.238 18.41,-33.93 31.938,-39.84 7.328,-3.199 6.727,0.734 12.203,-2.816M344.364,220.504c9.242,-0.047 20.375,0.395 23.141,4.906 0.031,1.887 0.68,6.109 0.984,9.109 -4.571,-0.636 -24.125,-12.984 -24.125,-14.015z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m136.223,203.945c0,0 4.098,-5.504 4.816,-5.504 0.727,0 8.297,4.801 8.609,9.25 0.582,8.094 -13.336,20.422 -13.852,20.5 -2.848,0.441 -8.316,-9.828 -9.68,-10.527 -0.527,-0.262 -2.664,-2.277 -5.488,8.098 -0.871,3.168 14.418,21.785 20.418,27.027 19.777,17.328 36.695,-9.266 38.734,-11.313 5.961,-5.898 4.258,-11.156 8.273,-13.418 4.23,-2.395 9.953,-0.016 15.594,-0.426 -0.02,-7.832 -19.168,-11.918 -18.656,-12.953 0.52,-1.031 6.215,1.504 7.391,0.395 0.457,-0.426 -24.016,-29.473 -29.574,-28.688 -2.145,0.688 -3.273,2.641 -5.672,1.293 -2.41,-1.344 -8.121,-7.094 -10.348,-7.469 0.129,0.816 -2.582,2.934 -2.582,2.934 0,0 -3.273,1.113 -5.914,3 -2.645,1.891 -2.461,8.297 0.152,10.922 0.146,0.145 -2.221,6.879 -2.221,6.879z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m122.606,230.586c4.219,6.816 13.938,18.266 18.441,22.203 19.777,17.328 36.695,-9.266 38.734,-11.313 5.961,-5.906 4.258,-11.164 8.273,-13.426 4.23,-2.395 13.625,0.293 15.594,-0.426 0.719,5.84 2.637,7.559 -12.625,13.609 4.031,9.836 -17.359,31.461 -17.176,33.211 0.176,1.773 -0.441,-2.344 0.59,-10.5 -5.75,12.141 -16.582,27.953 -34.797,33.031 0.469,-0.953 1.98,-3.641 3.613,-7.781 -25,24.359 -50.277,15.453 -50.277,15.453 0,0 1.781,-1.516 6.277,-5.328 -16.625,-0.766 -23.816,-2.906 -39.16,-15.281 9.52,-1.313 13.801,-10.688 14.883,-19.453 1.078,-8.797 -3.012,-10.172 -5.145,-15.016 -2.137,-4.875 -1.539,-10.578 -1.539,-10.578 0,0 1.211,-6.168 13.488,-4.871 1.289,-2.281 -7.879,-4.094 -7.719,-4.801 0.16,-0.719 13.223,-6.168 22.152,-4.145 -1.879,-1.438 -4.191,-2.512 -6.742,-2.75 13.303,-5.471 33.135,8.162 33.135,8.162z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m164.153,280.328c-5.754,6.805 -14.059,13.758 -24.523,16.656 0.473,-0.945 1.984,-3.641 3.617,-7.789 -25,24.367 -50.281,15.461 -50.281,15.461 0,0 1.785,-1.508 6.281,-5.328 -16.625,-0.766 -23.816,-2.898 -39.16,-15.273 9.52,-1.313 13.801,-10.688 14.879,-19.461 1.082,-8.805 -3.008,-10.164 -5.141,-15.016 -2.137,-4.867 -1.539,-10.578 -1.539,-10.578 0,0 -0.191,-2.375 -1.672,-3.902 -15.984,-13.832 -25.863,-56.344 -24.992,-61.578 0.457,-2.75 1.082,-3.766 1.082,-3.766 0,0 2.047,0.281 4.176,-0.281 2.121,-0.559 2.777,-1.109 2.777,-1.109 0,0 6.031,-0.547 7.621,-1.051 1.602,-0.504 7.387,-11.574 4.336,-18.984 -0.84,1.816 -1.965,6.051 -4.445,6.672 -2.48,0.641 -2.184,-1.664 -6.074,-3.254 1.199,-11.57 -10.055,-23.992 -10.055,-23.992 0,0 3.77,7.719 1.273,9.129 -2.496,1.398 -6.785,2.695 -6.785,2.695l-1.719,17.664c0,0 0.82,-5.688 0.82,-16.664 -1.535,-3.488 -4.789,-9.379 -9.078,-14.273 1.16,3.551 4.383,8.785 -0.703,16.074 0.207,0.504 0.598,1.695 4.191,9.484 -1.992,-6.094 -16.367,-15.07 -16.367,-15.07 0,0 3.094,11.777 -3.066,18.52 4.371,1.938 1.273,40.656 12.25,42.641 2.801,5.801 5.887,75.242 20.457,93.703 1.824,0.086 16.238,-0.078 16.238,-0.078l-2.77,0.672c0,0 18.73,20.82 25.578,26.047 9.449,7.18 49.863,13.773 77.504,16.57 27.641,2.789 41.313,12.859 42.199,11.477 0.504,-1.094 -1.887,-7.164 -5,-9.477 4.313,0.133 16.609,38.281 27.969,47.875 11.359,9.578 38.348,12.328 40.051,21.406 1.344,7.148 -2.703,25.969 -13.898,24.492 -1.68,-0.211 -6.609,-17.984 -9.43,-19.258 -2.828,-1.297 -10.316,-2.875 -16.973,0.836 1.137,0.344 7.953,1.914 10.609,2.523 2.313,2.375 -1.656,7.125 -3.047,7.625 -3.168,1.141 -5.672,0.375 -8.137,0.906 -6.719,1.438 -10.848,10.703 -10.848,10.703 0,0 12.246,0.375 12.766,6.969 6.578,-3.703 8.672,-6.594 13.27,-3.797 -14.867,3.391 -16.066,6.969 -18.586,17.453 5.613,-2.984 8.941,-5.453 10.598,-4.328 1.656,1.141 3.609,2.453 6.137,1.5 2.555,-0.969 8.633,-4.734 8.633,-4.734 0,0 -8.641,4.393 -9.473,6.143 -0.809,1.742 0.313,10.018 1.391,11.117 0.496,-1.117 1.691,-5.299 4.496,-5.393 2.789,-0.117 12.234,1.604 13.594,-0.461 1.367,-2.047 -0.992,0.172 1.969,-3.227 2.961,-3.445 14.805,-8.563 17.781,-10.656 3.477,-7.016 29.711,-35.656 28.461,-54.656 -17.813,-3.297 -17.477,-7.086 -19.547,-10.164 -12.984,-3 -31.938,-32.656 -33.648,-35.047 0,2.313 48.375,33.563 60.055,37 13.406,3.922 27.484,-10.156 16.977,-25.609 -11.961,-17.563 -37,-31.141 -49.977,-35.836 -15.68,-11.852 -18.922,-11.867 -23.594,-15.25 2.227,-15.375 -10.625,-34.031 -10.625,-34.031 0,0 -5.988,-6.852 -19.27,-6.914 3.504,2.734 17.566,13.984 13.926,16.688 -16.02,-27.939 -39.238,-18.643 -39.238,-18.643 0,0 9.546,1.797 12.136,7.469 2.609,5.688 12.387,27.453 22.969,37.531 3.375,3.211 10.266,8.375 19.086,11.5 21.609,7.656 52.602,26.609 59.141,35.094 3.398,4.406 5.594,10.484 5.492,12.672 -0.094,2.203 -2.391,4.203 -5.57,3.797 -4.102,-0.5 -52.594,-31.836 -52.594,-31.836 0,0 -10.484,-7.57 -31.723,-12.805 -13.91,-18.851 -54.625,-38.093 -63.238,-45.195z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m161.743,195.457c11.84,3.129 14,15.441 14.168,16.832 -1.27,0.359 -12.641,-2.031 -13.864,-6.442 -1.144,-4.078 5.938,-7.175 -0.304,-10.39\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m290.661,265.508c0.734,-15.734 -13.484,-24.66 -16.422,-36.129 -2.078,-8.129 5.422,-21.488 5.422,-21.488\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M0.032,0.015L469.856,471.43\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ti.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.872\"\n    android:viewportHeight=\"471.438\">\n  <path\n      android:pathData=\"M0,235.715h469.872v235.723h-469.872z\"\n      android:fillColor=\"#268bcc\"/>\n  <path\n      android:pathData=\"M0,0h469.872v235.715h-469.872z\"\n      android:fillColor=\"#e8423f\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_ur.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.863\"\n    android:viewportHeight=\"471.449\">\n  <path\n      android:pathData=\"M0,-0h469.863v471.449h-469.863z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m125.801,198.582c-1.684,-10.281 -2.57,-21.902 -1.633,-29.77 1.328,-11.254 5.008,-22.797 10.566,-27.535 -2.785,-3.895 -16.961,-23.078 5.563,-32.262M344.84,198.582c1.68,-10.281 2.563,-21.902 1.633,-29.77 -1.328,-11.254 -5.008,-22.797 -10.57,-27.535 2.781,-3.895 16.961,-23.078 -5.563,-32.262\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"5.55999994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M192.262,387.199L276.653,387.199\"\n      android:strokeWidth=\"5.55999994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m338.168,152.84 l-69.218,47.695 -0.313,90.195c0,0 0.844,12.969 4.508,20.703 2.023,4.234 13.945,14.313 18.102,15.609m-159.743,-174.202 l69.223,47.695 0.297,90.195c0,0 -0.824,12.969 -4.504,20.703 -2.016,4.234 -13.953,14.313 -18.098,15.609\"\n      android:strokeWidth=\"5.55999994\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"m139.297,107.101c0,0 -11.371,-4.934 -29,-50.414 -17.633,-45.48 -46.211,-40.824 -46.48,-40.762 -0.898,0.184 -2.984,0.367 -3.473,3 -0.488,2.648 1.598,3.793 2.254,4.074 0.672,0.277 17.441,4.641 25.066,51.797 8.48,52.352 36.863,65.16 42.801,66.68 -14.496,-28.046 8.832,-34.375 8.832,-34.375\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m360.16,56.687c17.648,-45.48 46.211,-40.824 46.477,-40.762 0.891,0.184 2.984,0.367 3.469,3 0.5,2.648 -1.586,3.793 -2.242,4.074 -0.656,0.277 -17.43,4.641 -25.063,51.797 -8.477,52.352 -36.867,65.16 -42.805,66.68 14.508,-28.047 -8.828,-34.375 -8.828,-34.375\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m342.559,147.687c0,0 10.953,20.809 4.563,50.902 0.828,1.395 12.969,11.953 34.656,5 21.695,-6.949 22.805,-31.984 41.727,-38.094 -11.962,-20.042 -38.938,-45.616 -80.946,-17.808\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m418.778,164.375c0,0 -17.234,-8.625 -26.969,-8.625 -9.735,0 -31.156,13.352 -35.047,13.07 -3.898,-0.262 -7.781,-0.262 -7.781,-0.262\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"m127.871,146.855c0,0 -10.938,20.801 -4.559,50.902 -0.832,1.391 -12.961,11.953 -34.648,5 -21.695,-6.953 -22.816,-31.969 -41.723,-38.102 11.954,-20.015 38.93,-45.608 80.93,-17.8\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m51.649,163.551c0,0 17.254,-8.633 26.992,-8.633 9.734,0 31.141,13.352 35.031,13.074 3.895,-0.273 7.793,-0.273 7.793,-0.273\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"m192.285,388.73h84.477c0,0 1.484,15.125 -10.391,15.125L200.735,403.855c-9.094,0 -8.45,-15.125 -8.45,-15.125\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m129.36,154.43 l69.695,47.464 0.223,89.164c0,0 -1.895,11.703 -5.094,20.375 -1.617,4.398 -13.977,14.477 -18.289,14.359 -2.488,-0.078 -11.879,-27.945 -17.137,-37.508 -2.543,-4.633 -22.703,-21.305 -9.957,-39.836 -37.043,-56.737 -19.441,-94.018 -19.441,-94.018\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m340.7,154.43 l-69.704,47.464 -0.234,89.164c0,0 1.906,11.703 5.102,20.375 1.633,4.398 13.992,14.477 18.305,14.359 2.5,-0.078 11.859,-27.945 17.141,-37.508 2.539,-4.633 22.688,-21.305 9.953,-39.836 37.03,-56.737 19.437,-94.018 19.437,-94.018\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m157.766,188.055c0,10.656 9.184,19.297 20.504,19.297 5.609,0 10.699,-2.129 14.402,-5.563l-32.57,-22.641c-1.481,2.672 -2.336,5.707 -2.336,8.907\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m163.918,188.055c0,7.473 6.426,13.512 14.352,13.512 3.867,0 7.371,-1.457 9.953,-3.801l-22.742,-15.816c-0.992,1.855 -1.563,3.921 -1.563,6.105\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m311.762,188.055c0,10.656 -9.172,19.297 -20.5,19.297 -5.594,0 -10.695,-2.129 -14.391,-5.563L309.418,179.148c1.5,2.672 2.344,5.707 2.344,8.907\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m305.621,188.055c0,7.473 -6.422,13.512 -14.352,13.512 -3.867,0 -7.375,-1.457 -9.945,-3.801l22.734,-15.816c1.001,1.855 1.563,3.921 1.563,6.105\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m301.614,332.73c-1,-0.375 -9.359,0.555 -22.242,-11.789 -3.211,-3.078 -8.656,-9.852 -9,-11.133 -2.594,-9.828 -3.477,-20.484 -3.234,-37.242 0.266,-19.492 0.094,-72.871 0.094,-72.871L339.92,149.312c0,0 -5.328,-11.281 -13.781,-11.648 -4.125,-0.18 -70.008,0.086 -91.09,0.184 -21.078,-0.105 -86.953,-0.371 -91.07,-0.184 -8.465,0.367 -13.801,11.648 -13.801,11.648l72.693,50.383c0,0 -0.176,53.395 0.098,72.871 0.238,16.773 -0.648,27.43 -3.242,37.242 -0.328,1.266 -5.77,8.055 -9,11.133 -12.871,12.344 -21.23,11.414 -22.23,11.789 -5.008,1.852 -10.848,5.75 -5.023,28.453 5.84,22.734 15.965,24.328 15.965,24.328h111.261c0,0 10.125,-1.594 15.938,-24.328 5.827,-22.703 -0.017,-26.601 -5.024,-28.453\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m138.672,107.183c-6.586,2.566 -11.129,6.637 -12.93,11.68 -0.613,1.727 -0.91,3.52 -0.91,5.414 0,4.945 1.75,11.535 5.977,17.512 11.824,16.762 26.43,14.801 33.367,11.633 0.016,0.023 0.016,0.023 0.023,0.039 2.207,4.203 4.336,6.906 9.215,9.113 3.488,1.559 7.953,0.281 12.266,-0.961 1.496,-0.43 3.688,-1.055 4.574,-1.094 0.625,0.336 2.023,1.629 2.984,2.52 2.527,2.367 5.41,5.047 8.801,5.414 2.688,0.281 5.496,-0.781 8.465,-1.895 2.328,-0.871 4.969,-1.863 6.566,-1.738 0,0 0.328,0.051 0.344,0.059 0.016,0.016 0.281,0.215 0.281,0.215 2.48,2.098 5.504,3.809 17.441,3.953 12.203,-0.145 15.008,-1.977 17.219,-4.168 0,0 0.016,-0.023 0.047,-0.039 0.047,-0.008 0.109,-0.02 0.109,-0.02 1.609,-0.133 4.25,0.859 6.563,1.738 2.984,1.113 5.789,2.176 8.469,1.895 3.391,-0.367 6.273,-3.047 8.797,-5.414 0.945,-0.871 2.328,-2.16 3,-2.512 0.898,0.039 3.078,0.656 4.563,1.086 4.313,1.242 8.781,2.52 12.273,0.961 4.883,-2.199 6.992,-4.902 9.211,-9.113 0.016,-0.031 0.016,-0.031 0.016,-0.047 4.266,1.777 21.18,5.199 34.281,-11.625 4.016,-5.168 5.078,-12.566 5.078,-17.512 0,-1.855 -0.313,-3.629 -0.891,-5.313 -2.125,-6.055 -7.438,-9.559 -12.516,-11.605\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m326.637,109.719c0.539,-1.695 0.836,-3.504 0.836,-5.375 0,-9.832 -8.133,-17.809 -18.188,-17.809 -2.273,0 -4.438,0.43 -6.453,1.184 -2.367,-7.137 -9.195,-12.281 -17.289,-12.281 -4.109,0 -7.891,1.352 -10.945,3.609 -3.164,-5.031 -8.766,-8.398 -15.18,-8.398 -3.922,0 -7.555,1.262 -10.508,3.406 -3.883,2.824 -13.504,-3.215 -13.504,-3.215 0,0 -11.832,5.039 -16.879,2.16 -2.617,-1.496 -5.641,-2.352 -8.863,-2.352 -6.25,0 -11.746,3.191 -14.938,8.016 -2.969,-2.137 -6.59,-3.418 -10.52,-3.418 -7.992,0 -14.762,5.207 -17.055,12.395 -2.074,-0.828 -4.313,-1.297 -6.68,-1.297 -9.891,0 -17.906,7.977 -17.906,17.797 0,1.906 0.313,3.73 0.855,5.449 -7.641,2.121 -22.613,10.434 -8.863,29.906 13.785,19.52 28.879,9.445 28.879,9.445 0,0 2.488,-1.336 4.41,2.297 1.895,3.641 3.43,5.551 7.27,7.273 3.824,1.719 13.203,-3.25 16.266,-2.297 3.063,0.961 7.473,7.465 11.105,7.84 3.629,0.391 10.152,-4.016 14.926,-3.633 4.785,0.391 0.547,4.023 17.785,4.207 17.219,-0.184 12.203,-3.824 16.992,-4.207 4.789,-0.383 11.297,4.023 14.945,3.633 3.625,-0.383 8.031,-6.879 11.094,-7.84 3.063,-0.953 12.438,4.016 16.273,2.297 3.82,-1.723 5.359,-3.633 7.273,-7.273 1.922,-3.633 4.398,-2.297 4.398,-2.297 0,0 15.719,9.793 29.492,-9.734 13.464,-19.106 -1.278,-27.223 -9.028,-29.488\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m206.184,360.824c1.406,2.797 0.527,6.094 -1.953,7.344l-4.07,2.047c-2.496,1.25 -5.656,0 -7.074,-2.828l-8.129,-16.164c-1.414,-2.82 -0.527,-6.102 1.961,-7.344l4.074,-2.047c2.496,-1.25 5.656,0.016 7.063,2.82l8.128,16.172z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m262.895,360.824c-1.406,2.797 -0.523,6.094 1.969,7.344l4.055,2.047c2.5,1.25 5.664,0 7.063,-2.828l8.125,-16.164c1.43,-2.82 0.547,-6.102 -1.938,-7.344l-4.078,-2.047c-2.5,-1.25 -5.672,0.016 -7.063,2.82l-8.133,16.172z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m262.895,360.824c-1.406,2.797 -0.523,6.094 1.969,7.344l4.055,2.047c2.5,1.25 5.664,0 7.063,-2.828l8.125,-16.164c1.43,-2.82 0.547,-6.102 -1.938,-7.344l-4.078,-2.047c-2.5,-1.25 -5.672,0.016 -7.063,2.82l-8.133,16.172zM206.184,360.824c1.406,2.797 0.527,6.094 -1.953,7.344l-4.07,2.047c-2.496,1.25 -5.656,0 -7.074,-2.828l-8.129,-16.164c-1.414,-2.82 -0.527,-6.102 1.961,-7.344l4.074,-2.047c2.496,-1.25 5.656,0.016 7.063,2.82l8.128,16.172z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"m270.012,352.496c3.672,-5.984 4.93,-5.828 5.031,-5.75 15.172,11.297 24.922,28.828 24.922,48.5 0,34.094 -29.25,61.75 -65.344,61.75 -36.078,0 -65.336,-27.656 -65.336,-61.75 0,-19.688 9.762,-37.234 24.961,-48.531 0.488,-0.359 2.672,-1.375 5,5.938 2.313,7.313 2.242,8.438 2.066,8.594 -9.984,8.422 -16.25,20.547 -16.25,34 0,25.344 22.234,45.984 49.559,45.984 27.336,0 49.57,-20.641 49.57,-45.984 0,-13.609 -6.43,-25.891 -16.625,-34.313 0.001,-0.008 -1.687,-1.704 2.446,-8.438\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"m270.012,352.496c3.672,-5.984 4.93,-5.828 5.031,-5.75 15.172,11.297 24.922,28.828 24.922,48.5 0,34.094 -29.25,61.75 -65.344,61.75 -36.078,0 -65.336,-27.656 -65.336,-61.75 0,-19.688 9.762,-37.234 24.961,-48.531 0.488,-0.359 2.672,-1.375 5,5.938 2.313,7.313 2.242,8.438 2.066,8.594 -9.984,8.422 -16.25,20.547 -16.25,34 0,25.344 22.234,45.984 49.559,45.984 27.336,0 49.57,-20.641 49.57,-45.984 0,-13.609 -6.43,-25.891 -16.625,-34.313 0.001,-0.008 -1.687,-1.704 2.446,-8.438z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"m252.254,385.887c1.086,3.828 1.68,8.094 1.68,12.578 0,17.188 -8.828,31.109 -19.711,31.109 -10.895,0 -19.719,-13.922 -19.719,-31.109 0,-4.469 0.582,-8.703 1.656,-12.516 9.969,-0.008 32.321,-0.062 36.094,-0.062\"\n      android:fillColor=\"#e8423f\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_vd.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"469.8555\"\n    android:viewportHeight=\"472.281\">\n  <path\n      android:pathData=\"M0,0h469.854v235.715h-469.854z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M0,236.558h469.854v235.723h-469.854z\"\n      android:fillColor=\"#16a74e\"/>\n  <path\n      android:pathData=\"m67.504,22.242v5.008l1.488,0.086c2.574,0.137 3.559,0.488 3.91,0.688 0.594,0.32 1.344,0.961 1.344,3.09v36.969c0,2.168 -0.813,2.832 -1.422,3.168 -0.391,0.191 -1.391,0.543 -3.793,0.637l-1.527,0.059v5.039h47.047l3.695,-20.473h-5.191l-0.391,1.016c-2.129,5.516 -4.641,9.242 -7.465,11.082 -2.84,1.832 -6.449,2.785 -10.719,2.785 -3.066,0 -4.047,-0.41 -4.336,-0.586 -0.359,-0.223 -0.578,-0.953 -0.578,-2.023v-36.07c0,-3.531 0.77,-4.281 0.914,-4.395 0.352,-0.254 1.566,-0.863 5.352,-0.984l1.527,-0.047v-5.047h-29.855v-0.002z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m69.703,24.449v0.734c1.984,0.152 3.41,0.449 4.258,0.914 1.648,0.871 2.488,2.559 2.488,5.016v36.969c0,2.488 -0.883,4.207 -2.609,5.117 -0.879,0.473 -2.297,0.723 -4.137,0.832v0.746h42.992c0.168,-0.922 2.664,-14.727 2.906,-16.047h-1.058c-2.27,5.727 -5.008,9.695 -8.152,11.734 -3.207,2.094 -7.215,3.152 -11.918,3.152 -2.703,0 -4.504,-0.297 -5.496,-0.922 -1.074,-0.664 -1.625,-1.973 -1.625,-3.895v-36.086c0,-3.25 0.594,-5.266 1.816,-6.164 1.07,-0.805 3.055,-1.238 5.969,-1.391v-0.719h-25.434v0.01z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m118.289,22.242v5.023l1.512,0.07c2.664,0.113 3.711,0.465 4.094,0.672 0.578,0.297 1.344,0.945 1.344,3.105v36.984c0,2.176 -0.824,2.855 -1.445,3.176 -0.402,0.191 -1.457,0.543 -3.969,0.605l-1.535,0.035v5.063h29.848v-5.098h-1.578c-2.59,0 -3.902,-0.469 -4.551,-0.848 -0.688,-0.414 -1.023,-1.398 -1.023,-2.934v-36.984c0,-2.176 0.785,-2.832 1.375,-3.137 0.367,-0.184 1.441,-0.527 4.273,-0.641l1.504,-0.063v-5.031h-29.849v0.003z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m120.496,24.449v0.734c2.055,0.129 3.52,0.402 4.414,0.867 1.691,0.879 2.539,2.582 2.539,5.063v36.984c0,2.504 -0.891,4.23 -2.648,5.145 -0.93,0.473 -2.402,0.711 -4.305,0.801v0.734h25.43v-0.711c-2.191,-0.066 -3.871,-0.426 -5.063,-1.145 -1.383,-0.832 -2.086,-2.465 -2.086,-4.824v-36.984c0,-2.504 0.863,-4.215 2.574,-5.105 0.902,-0.449 2.434,-0.719 4.574,-0.84v-0.719h-25.429l0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m148.07,22.242v5.008l1.48,0.086c2.527,0.137 3.488,0.488 3.84,0.68 0.328,0.184 1.281,0.707 1.281,3.098v36.984c0,2.16 -0.801,2.832 -1.398,3.16 -0.379,0.191 -1.355,0.535 -3.691,0.629l-1.512,0.059v5.039h26.066c6.781,0 12.313,-1.414 16.438,-4.199 4.336,-2.914 6.531,-6.816 6.531,-11.57 0,-5.094 -2.297,-9.102 -6.844,-11.926 -1.184,-0.727 -2.512,-1.336 -3.91,-1.855 1.449,-0.648 2.832,-1.496 4.152,-2.555 2.672,-2.164 4.031,-5.109 4.031,-8.75 0,-5.906 -3.199,-10.023 -9.527,-12.215 -3.16,-1.105 -7.145,-1.648 -11.832,-1.648h-25.105v-0.025zM169.918,29.801c0,-1.008 0.211,-1.527 0.395,-1.688 0.086,-0.082 0.582,-0.434 2.32,-0.434 2.43,0 3.984,0.707 4.758,2.152 0.938,1.762 1.41,3.977 1.41,6.609 0,3.473 -0.656,5.84 -1.953,7.063 -0.809,0.777 -2.672,1.664 -6.922,1.848v-15.551l-0.008,0.001 0,0zM170.313,70.543 L170.297,70.512c-0.105,-0.176 -0.344,-0.734 -0.379,-2.168v-17.496c3.082,0.051 5.402,0.473 6.859,1.281 2.719,1.52 4.031,4.609 4.031,9.479 0,3.271 -0.641,5.785 -1.883,7.473 -1.148,1.535 -3.277,2.313 -6.375,2.313 -1.749,0 -2.109,-0.64 -2.237,-0.851\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m150.273,24.449v0.734c1.957,0.152 3.352,0.449 4.199,0.914 1.59,0.871 2.406,2.559 2.406,5.016v36.984c0,2.488 -0.863,4.191 -2.574,5.102 -0.863,0.473 -2.242,0.723 -4.031,0.832v0.746h23.863c6.313,0 11.43,-1.289 15.191,-3.816 3.742,-2.521 5.574,-5.711 5.574,-9.754 0,-4.328 -1.91,-7.613 -5.832,-10.063 -2,-1.23 -4.414,-2.145 -7.152,-2.672l-0.504,-0.094v-1.754l0.512,-0.098c2.563,-0.477 4.969,-1.613 7.188,-3.396 2.16,-1.742 3.199,-4.039 3.199,-7.023 0,-4.93 -2.633,-8.25 -8.059,-10.145 -2.91,-1.008 -6.645,-1.521 -11.102,-1.521h-22.878v0.008zM167.719,29.801c0,-1.578 0.387,-2.711 1.16,-3.367 0.754,-0.648 1.977,-0.961 3.754,-0.961 3.27,0 5.52,1.129 6.703,3.32 1.121,2.086 1.672,4.648 1.672,7.648 0,4.102 -0.879,7.008 -2.648,8.664 -1.77,1.68 -5.039,2.496 -10.008,2.496h-0.633v-17.8zM167.719,68.394v-19.746l0.617,-0.023c4.336,-0.09 7.449,0.426 9.52,1.59 3.434,1.898 5.168,5.738 5.168,11.395 0,3.758 -0.785,6.719 -2.328,8.785 -1.582,2.133 -4.32,3.207 -8.145,3.207 -2.008,0 -3.398,-0.656 -4.145,-1.961 -0.437,-0.719 -0.664,-1.786 -0.687,-3.247\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m198.84,22.242v5.008l1.504,0.086c2.594,0.137 3.559,0.488 3.93,0.695 0.613,0.313 1.391,0.961 1.391,3.082v36.984c0,2.109 -0.77,2.781 -1.32,3.094 -0.406,0.227 -1.434,0.602 -3.977,0.695l-1.52,0.059v5.039L246.363,76.984l3.75,-19.008h-5.047l-0.422,0.922c-2.234,4.863 -4.805,8.191 -7.605,9.902 -2.816,1.727 -6.551,2.594 -11.121,2.594 -3.141,0 -4.023,-0.457 -4.223,-0.586 -0.496,-0.359 -0.566,-1.414 -0.566,-2.016v-16.832c2.984,0.176 5.168,0.848 6.328,2.09 1.43,1.508 2.391,4.293 2.902,8.27l0.168,1.375h4.922v-28.879h-4.832l-0.25,1.289c-0.926,4.969 -2.223,7.16 -3.129,8.117 -1.016,1.082 -3.168,1.684 -6.117,1.809v-16.031c0,-1.137 0.23,-1.566 0.328,-1.633 0.031,-0.016 0.621,-0.406 3.477,-0.406 5.738,0 9.648,0.801 11.676,2.383 1.988,1.563 3.449,4.633 4.355,9.137l0.227,1.273h4.836L246.02,22.242L198.84,22.242z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m201.055,24.449v0.734c1.984,0.152 3.426,0.449 4.273,0.914 1.68,0.863 2.535,2.559 2.535,5.016v36.984c0,2.43 -0.832,4.109 -2.473,5.016 -0.902,0.52 -2.391,0.809 -4.344,0.91v0.746L244.534,74.769c0.172,-0.898 2.625,-13.266 2.875,-14.586h-0.969c-2.375,5.066 -5.156,8.602 -8.25,10.504 -3.168,1.938 -7.313,2.922 -12.281,2.922 -2.75,0 -4.527,-0.328 -5.488,-0.992 -1.016,-0.703 -1.52,-1.984 -1.52,-3.824v-19.121h0.642c4.496,0 7.695,0.961 9.488,2.854 1.711,1.809 2.824,4.771 3.418,8.953h0.789v-24.457h-0.824c-0.832,4.176 -2.016,7.059 -3.59,8.707 -1.672,1.773 -4.719,2.613 -9.297,2.566l-0.617,-0.008v-18.289c0,-1.664 0.395,-2.777 1.195,-3.383 0.773,-0.586 2.293,-0.863 4.82,-0.863 6.32,0 10.586,0.934 13.047,2.848 2.328,1.832 4,5.191 5.016,9.941h0.828v-14.094l-42.761,0.002 0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m249.91,22.242v4.965l1.453,0.121c3.195,0.281 3.969,0.785 4.094,0.879 0.328,0.25 1.063,1.211 1.063,4.508v33.789c0,3.281 -0.672,4.152 -0.875,4.344 -0.375,0.32 -1.398,0.898 -4.234,1.039l-1.492,0.074v5.023h28.742v-5.039l-1.523,-0.059c-2.984,-0.117 -3.922,-0.781 -4.18,-1.063 -0.281,-0.273 -0.906,-1.254 -0.906,-4.32v-10.289c3.969,5.305 15.523,20.762 15.523,20.762h18.313v-4.848l-1.477,-0.105c-0.523,-0.039 -0.961,-0.125 -1.273,-0.254 -0.086,-0.023 -0.313,-0.152 -0.641,-0.617 -0.016,-0.021 -11.086,-14.809 -14.938,-19.969 2.117,-0.68 4.164,-1.59 6.117,-3 3.609,-2.703 5.438,-6.43 5.438,-11.086 0,-6.336 -3.438,-10.77 -10.203,-13.168 -3.352,-1.129 -7.68,-1.688 -12.906,-1.688l-26.095,0.001 0,0zM272.035,29.672c0,-0.457 0.07,-1.055 0.359,-1.285 0.016,-0.02 0.563,-0.426 3.039,-0.426 3.164,0 5.195,1.113 6.359,3.488 0.703,1.496 1.063,3.609 1.063,6.32 0,4.168 -0.852,6.895 -2.492,7.902 -1.656,1.031 -4.5,1.617 -8.328,1.793v-17.792z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m252.121,24.449v0.75c2.359,0.242 3.914,0.664 4.719,1.281 1.266,1.031 1.867,3.07 1.867,6.223v33.793c0,3.047 -0.508,4.992 -1.602,5.969 -0.953,0.879 -2.625,1.383 -4.984,1.559v0.738h24.328v-0.73c-2.492,-0.168 -4.188,-0.711 -5.117,-1.688 -1.016,-1.063 -1.508,-2.977 -1.508,-5.848v-36.824c0,-1.367 0.414,-2.383 1.195,-3.016 0.773,-0.613 2.164,-0.902 4.414,-0.902 4,0 6.82,1.59 8.344,4.719 0.852,1.816 1.289,4.258 1.289,7.297 0,5.117 -1.156,8.313 -3.539,9.781 -2.258,1.41 -5.883,2.129 -11.047,2.203 0,0 -0.445,0 -0.57,0.008 0.156,0.184 1.125,1.422 1.125,1.422 0,0 17.25,23.098 17.625,23.586h15v-0.664c-0.477,-0.063 -0.984,-0.129 -1.359,-0.273 -0.578,-0.223 -1.133,-0.703 -1.625,-1.398l-16.828,-22.52 1,-0.191c2.625,-0.473 5.141,-1.594 7.5,-3.313 3.063,-2.281 4.547,-5.328 4.547,-9.305 0,-5.375 -2.859,-9 -8.734,-11.09 -3.063,-1.039 -7.156,-1.559 -12.156,-1.559h-23.884v-0.008z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m303.106,22.242 l-0.102,18.504h5.219l0.125,-1.441c0.445,-4.945 2.188,-8.184 5.375,-9.918 1.477,-0.793 3.594,-1.273 6.266,-1.473v38.559c0,3.16 -0.703,4.16 -1,4.434 -0.313,0.293 -1.422,0.973 -4.953,0.973h-1.555v5.09h30.406v-5.09h-1.57c-3.641,0 -4.734,-0.664 -5.047,-0.949 -0.281,-0.273 -0.969,-1.258 -0.969,-4.457v-38.551c2.719,0.184 4.836,0.672 6.242,1.457 2.922,1.672 4.742,5.039 5.398,10.008l0.18,1.367h5.148l-0.086,-18.512 -49.077,-0.001 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m305.301,24.449c0,1.109 -0.063,12.984 -0.063,14.102h1.016c0.602,-5.316 2.734,-9.086 6.438,-11.102 2.063,-1.113 5.047,-1.727 8.852,-1.832l0.641,-0.023v40.887c0,2.992 -0.555,4.969 -1.688,6.039 -1.031,0.977 -2.984,1.473 -5.82,1.539v0.703h26v-0.695c-2.922,-0.074 -4.883,-0.547 -5.922,-1.523 -1.109,-1.063 -1.648,-3.047 -1.648,-6.063v-40.887l0.633,0.023c3.891,0.105 6.875,0.719 8.875,1.832 3.453,1.977 5.578,5.742 6.391,11.102h1.047c0,-1.117 -0.063,-12.992 -0.078,-14.102L305.301,24.449l0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m383.691,3.879c-0.57,0.41 -1.125,0.922 -1.625,1.539l-11.844,14.613h7.766l10.609,-7.023c1.078,-0.695 1.898,-1.375 2.5,-2.047 0.734,-0.855 1.109,-1.979 1.109,-3.336 0,-1.352 -0.453,-2.527 -1.359,-3.488 -0.891,-0.945 -2.172,-1.457 -3.641,-1.457 -1.233,0.007 -2.413,0.41 -3.515,1.199m-30.523,18.363v5.008l1.508,0.086c2.57,0.137 3.563,0.488 3.922,0.695 0.617,0.313 1.406,0.961 1.406,3.082v36.984c0,2.109 -0.773,2.781 -1.328,3.094 -0.414,0.227 -1.445,0.602 -3.969,0.695l-1.531,0.059v5.039h47.516l3.766,-19.008h-5.063l-0.438,0.922c-2.234,4.863 -4.789,8.191 -7.578,9.902 -2.82,1.727 -6.563,2.594 -11.125,2.594 -3.148,0 -4.023,-0.457 -4.234,-0.586 -0.492,-0.359 -0.563,-1.414 -0.563,-2.016v-16.832c3,0.176 5.156,0.848 6.313,2.09 1.438,1.508 2.422,4.293 2.922,8.27l0.172,1.375h4.922v-28.879h-4.828l-0.266,1.289c-0.922,4.969 -2.219,7.16 -3.117,8.117 -1.047,1.082 -3.164,1.684 -6.125,1.809v-16.031c0,-1.137 0.227,-1.566 0.328,-1.633 0.016,-0.016 0.633,-0.406 3.492,-0.406 5.719,0 9.633,0.801 11.656,2.383 2,1.563 3.469,4.633 4.359,9.137l0.227,1.273h4.836v-18.512h-47.18z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m385.004,5.672 l-0.031,0.008c-0.414,0.289 -0.805,0.656 -1.164,1.105 0,0 -6.594,8.137 -8.953,11.031h2.461c0.328,-0.191 10.063,-6.648 10.063,-6.648 0.906,-0.582 1.594,-1.145 2.047,-1.664 0.391,-0.438 0.578,-1.07 0.578,-1.871 0,-0.785 -0.234,-1.418 -0.758,-1.953 -0.508,-0.527 -1.164,-0.773 -2.047,-0.773 -0.766,-0.009 -1.509,0.23 -2.196,0.765m-29.625,18.777v0.734c2,0.152 3.43,0.449 4.281,0.914 1.672,0.863 2.516,2.559 2.516,5.016v36.984c0,2.43 -0.813,4.109 -2.438,5.016 -0.938,0.52 -2.422,0.809 -4.359,0.91v0.746h43.484c0.188,-0.898 2.625,-13.266 2.891,-14.586h-0.969c-2.406,5.066 -5.172,8.602 -8.266,10.504 -3.188,1.938 -7.305,2.922 -12.273,2.922 -2.758,0 -4.539,-0.328 -5.492,-0.992 -1,-0.703 -1.516,-1.984 -1.516,-3.824v-19.121h0.625c4.516,0 7.703,0.961 9.5,2.854 1.719,1.809 2.82,4.771 3.414,8.953h0.781v-24.457h-0.82c-0.828,4.176 -2,7.059 -3.57,8.707 -1.688,1.773 -4.734,2.613 -9.297,2.566l-0.625,-0.008v-18.289c0,-1.664 0.398,-2.777 1.188,-3.383 0.766,-0.586 2.289,-0.863 4.828,-0.863 6.313,0 10.578,0.934 13.039,2.848 2.328,1.832 4,5.191 5.016,9.941h0.813v-14.094l-42.751,0.002 0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m185.449,91.207v5.016l1.477,0.082c2.586,0.145 3.586,0.496 3.93,0.695 0.625,0.32 1.406,0.969 1.406,3.09v36.984c0,2.109 -0.75,2.773 -1.336,3.086 -0.398,0.227 -1.43,0.602 -3.949,0.695l-1.52,0.059v5.047h47.504l3.742,-19.008h-5.047l-0.418,0.91c-2.246,4.867 -4.805,8.195 -7.598,9.906 -2.816,1.727 -6.547,2.598 -11.113,2.598 -3.145,0 -4.031,-0.453 -4.23,-0.59 -0.504,-0.352 -0.578,-1.418 -0.578,-2.008v-16.832c3.016,0.168 5.168,0.848 6.313,2.078 1.441,1.512 2.441,4.305 2.93,8.281l0.176,1.375h4.902L222.04,103.792h-4.824l-0.254,1.281c-0.945,4.969 -2.219,7.16 -3.129,8.117 -1.031,1.09 -3.168,1.68 -6.129,1.816L207.704,98.975c0,-1.129 0.242,-1.559 0.328,-1.633 0.016,-0.016 0.641,-0.398 3.488,-0.398 5.719,0 9.641,0.801 11.672,2.375 2,1.559 3.465,4.641 4.328,9.146l0.266,1.273h4.824L232.61,91.222h-47.16v-0.014l-0.001,-0.001 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m187.656,93.418v0.734c2.008,0.16 3.422,0.449 4.281,0.914 1.68,0.871 2.527,2.559 2.527,5.023v36.984c0,2.422 -0.832,4.109 -2.457,5.016 -0.922,0.512 -2.398,0.797 -4.359,0.902v0.754h43.488c0.184,-0.898 2.621,-13.273 2.879,-14.594h-0.961c-2.398,5.063 -5.168,8.609 -8.277,10.504 -3.168,1.938 -7.281,2.922 -12.25,2.922 -2.75,0 -4.551,-0.328 -5.504,-0.992 -0.992,-0.715 -1.504,-1.992 -1.504,-3.824v-19.121h0.625c4.512,0 7.703,0.961 9.512,2.848 1.695,1.809 2.816,4.77 3.391,8.961h0.801v-24.449h-0.816c-0.855,4.168 -2.016,7.051 -3.574,8.703 -1.707,1.777 -4.746,2.609 -9.313,2.563l-0.625,-0.008L205.52,98.969c0,-1.664 0.391,-2.77 1.184,-3.383 0.77,-0.586 2.305,-0.855 4.832,-0.855 6.313,0 10.578,0.926 13.023,2.848 2.336,1.832 4.023,5.184 5.023,9.941h0.832L230.414,93.411h-42.758v0.007z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m237.215,91.207 l-0.078,18.516h5.211l0.133,-1.441c0.414,-4.945 2.164,-8.191 5.359,-9.93 1.477,-0.793 3.57,-1.27 6.242,-1.465v38.555c0,3.168 -0.688,4.16 -0.977,4.438 -0.313,0.289 -1.414,0.969 -4.938,0.969h-1.578v5.098h30.414v-5.098h-1.563c-3.641,0 -4.75,-0.656 -5.047,-0.949 -0.297,-0.273 -0.969,-1.258 -0.969,-4.457L269.424,96.88c2.703,0.195 4.828,0.684 6.234,1.465 2.914,1.672 4.75,5.043 5.391,10l0.18,1.379h5.164l-0.094,-18.516 -49.084,-0.001 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m239.41,93.418c-0.016,1.109 -0.063,12.992 -0.078,14.109h1.031c0.609,-5.328 2.742,-9.094 6.43,-11.102 2.063,-1.121 5.047,-1.738 8.852,-1.832l0.656,-0.023v40.879c0,2.992 -0.563,4.977 -1.688,6.039 -1.047,0.977 -2.984,1.488 -5.828,1.543v0.707h25.984v-0.695c-2.906,-0.066 -4.875,-0.555 -5.891,-1.523 -1.141,-1.063 -1.664,-3.047 -1.664,-6.063L267.214,94.578l0.648,0.023c3.875,0.094 6.859,0.711 8.859,1.832 3.453,1.969 5.578,5.727 6.391,11.102h1.047c0,-1.117 -0.063,-13 -0.063,-14.109h-44.686v-0.008z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m97.168,160.183v4.922l1.406,0.168c2.809,0.297 3.816,0.855 4.16,1.16 0.082,0.063 0.762,0.75 0.762,4.215v33.801c0,3.078 -0.586,4.016 -0.84,4.266 -0.258,0.277 -1.168,0.918 -4.016,1.109l-1.473,0.113v5h28.465v-5.05l-1.511,-0.063c-2.816,-0.109 -3.84,-0.688 -4.203,-1.031 -0.207,-0.184 -0.887,-1.078 -0.887,-4.344v-12.688c3.777,-0.031 6.785,-0.129 8.848,-0.313 2.457,-0.215 4.938,-0.84 7.395,-1.832 3.383,-1.504 5.832,-3.488 7.328,-5.953 1.469,-2.441 2.223,-5.094 2.223,-7.871 0,-5.703 -1.961,-9.816 -5.832,-12.199 -3.633,-2.266 -8.914,-3.41 -15.68,-3.41h-26.145zM119.023,166.976c0,-0.375 0.063,-0.672 0.168,-0.719 0.191,-0.113 0.816,-0.359 2.504,-0.359 2.711,0 4.457,0.781 5.328,2.406 1.039,1.887 1.566,4.488 1.566,7.688 0,4.512 -0.973,7.426 -2.895,8.656 -0.77,0.488 -2.566,1.098 -6.672,1.281l0.001,-18.953 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m99.383,162.387v0.766c2.297,0.313 3.898,0.832 4.801,1.609 1.023,0.887 1.52,2.816 1.52,5.887v33.801c0,2.887 -0.48,4.801 -1.465,5.816 -0.902,0.918 -2.52,1.473 -4.855,1.703v0.754h24.039v-0.739c-2.375,-0.168 -4.039,-0.656 -5.016,-1.574 -1.063,-1 -1.582,-2.938 -1.582,-5.953v-14.887h0.625c4.504,0 7.949,-0.113 10.23,-0.313 2.238,-0.199 4.512,-0.77 6.754,-1.672 2.902,-1.281 5.023,-2.969 6.277,-5.051 1.266,-2.094 1.906,-4.359 1.906,-6.734 0,-4.953 -1.57,-8.328 -4.793,-10.344 -3.281,-2.031 -8.16,-3.063 -14.512,-3.063h-23.93l0.001,-0.006 0,0zM116.824,166.976c0,-1.281 0.438,-2.184 1.313,-2.672 0.758,-0.406 1.926,-0.609 3.566,-0.609 3.543,0 5.984,1.184 7.273,3.547 1.207,2.215 1.832,5.168 1.832,8.75 0,5.313 -1.32,8.855 -3.914,10.512 -1.633,1.047 -4.719,1.594 -9.43,1.672l-0.641,0.016 0.001,-21.216 0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m163.246,159.058 l-17.285,42.829c-1.602,3.938 -2.465,5.492 -2.906,6.082 -0.855,1.168 -1.895,1.77 -3.27,1.855l-1.465,0.113v5h18.719v-5.097l-1.551,-0.016c-1.961,-0.031 -2.961,-0.215 -3.457,-0.375 -1.105,-0.375 -1.105,-0.77 -1.105,-0.891 0,-0.406 0.129,-1.438 0.93,-3.781 -0.008,0 1.16,-3.184 1.785,-4.871h15c0.504,1.215 1.512,3.672 1.512,3.672l0.969,2.512c0.461,1.406 0.504,2.016 0.504,2.215 0,0.703 -0.145,0.969 -0.184,0.984 -0.289,0.129 -1.258,0.406 -4.363,0.527l-1.512,0.063v5.051h27.832v-5.16l-1.621,0.047c-1.203,0.047 -2.066,-0.359 -2.707,-1.23 -0.59,-0.832 -1.789,-2.953 -4.102,-8.41l-17.418,-41.125h-4.305v0.006zM160.902,181.168c1.457,3.504 4.105,9.875 5.234,12.594h-10.16c1.047,-2.688 3.544,-9.067 4.926,-12.594\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m164.734,161.281c-0.313,0.77 -16.727,41.441 -16.727,41.441 -1.375,3.391 -2.418,5.527 -3.176,6.559 -1.098,1.512 -2.559,2.375 -4.305,2.656v0.785h14.305v-0.722c-1.465,-0.047 -2.656,-0.184 -3.465,-0.441 -2.191,-0.75 -2.648,-2.047 -2.648,-3 0,-0.965 0.344,-2.453 1.039,-4.5 0.012,0 2.336,-6.363 2.336,-6.363h0.441,17.57l2.086,5.02 1.008,2.652c0.434,1.297 0.641,2.266 0.641,2.938 0,1.594 -0.527,2.609 -1.566,3.031 -0.785,0.328 -2.281,0.543 -4.496,0.656v0.723h23.422v-0.724c-1.633,-0.113 -2.953,-0.801 -3.895,-2.113 -0.984,-1.359 -2.41,-4.246 -4.352,-8.836 0,0 -15.234,-35.938 -16.859,-39.77h-1.359v0.008zM160.176,176.976h1.383l7.883,18.984h-16.699l7.433,-18.984z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m188.449,160.183 l-0.09,18.512h5.223l0.113,-1.438c0.441,-4.938 2.199,-8.184 5.391,-9.922 1.465,-0.801 3.586,-1.277 6.242,-1.473v38.547c0,3.168 -0.688,4.16 -0.992,4.453 -0.305,0.281 -1.41,0.953 -4.938,0.953h-1.574v5.113L228.23,214.928v-5.112h-1.566c-3.633,0 -4.719,-0.656 -5.031,-0.938 -0.289,-0.277 -0.977,-1.262 -0.977,-4.469v-38.547c2.719,0.188 4.832,0.672 6.23,1.457 2.938,1.672 4.754,5.031 5.418,10l0.168,1.375h5.168l-0.082,-18.512 -49.109,0.001 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m190.656,162.387c0,1.109 -0.074,12.98 -0.074,14.109h1.035c0.582,-5.328 2.711,-9.094 6.414,-11.109 2.082,-1.113 5.063,-1.723 8.863,-1.836l0.649,-0.016v40.875c0,3 -0.543,4.984 -1.688,6.047 -1.046,0.984 -2.984,1.488 -5.824,1.543v0.703L226.023,212.703v-0.703c-2.902,-0.063 -4.871,-0.559 -5.918,-1.527 -1.105,-1.047 -1.656,-3.031 -1.656,-6.063v-40.875l0.637,0.016c3.898,0.113 6.883,0.723 8.883,1.844 3.445,1.965 5.574,5.719 6.391,11.094h1.055c0,-1.129 -0.07,-13 -0.07,-14.109h-44.688l-0.001,0.007 0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m238.676,160.183v4.969l1.453,0.129c3.188,0.277 3.969,0.77 4.078,0.871 0.328,0.25 1.078,1.199 1.078,4.504v33.801c0,3.281 -0.672,4.145 -0.875,4.328 -0.375,0.328 -1.406,0.902 -4.227,1.047l-1.507,0.082v5.031h28.734v-5.047l-1.508,-0.066c-2.992,-0.109 -3.93,-0.766 -4.195,-1.047 -0.25,-0.297 -0.875,-1.281 -0.875,-4.328v-10.281c3.953,5.297 15.5,20.77 15.5,20.77h18.313v-4.856l-1.461,-0.113c-0.539,-0.031 -0.984,-0.129 -1.281,-0.246 -0.094,-0.035 -0.32,-0.16 -0.641,-0.625 -0.023,-0.016 -11.078,-14.801 -14.93,-19.969 2.109,-0.672 4.164,-1.578 6.109,-3 3.594,-2.703 5.422,-6.422 5.422,-11.094 0,-6.328 -3.422,-10.754 -10.188,-13.145 -3.328,-1.145 -7.656,-1.707 -12.883,-1.707h-26.116v-0.008zM260.809,167.625c0,-0.473 0.047,-1.047 0.344,-1.297 0.031,-0.016 0.57,-0.422 3.031,-0.422 3.195,0 5.195,1.109 6.367,3.488 0.711,1.484 1.078,3.621 1.078,6.328 0,4.164 -0.859,6.887 -2.492,7.902 -1.672,1.016 -4.508,1.609 -8.328,1.801v-17.8z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m240.879,162.387v0.75c2.359,0.25 3.93,0.672 4.719,1.297 1.273,1.016 1.883,3.063 1.883,6.215v33.801c0,3.031 -0.523,4.984 -1.602,5.969 -0.961,0.871 -2.633,1.375 -5,1.559v0.738h24.32v-0.74c-2.492,-0.168 -4.18,-0.703 -5.117,-1.688 -1.016,-1.066 -1.5,-2.969 -1.5,-5.84v-36.832c0,-1.375 0.406,-2.395 1.188,-3.016 0.773,-0.625 2.172,-0.906 4.406,-0.906 4.016,0 6.828,1.594 8.359,4.723 0.844,1.816 1.281,4.262 1.281,7.297 0,5.109 -1.156,8.309 -3.531,9.781 -2.266,1.41 -5.891,2.129 -11.055,2.199 0,0 -0.445,0 -0.555,0 0.148,0.184 1.117,1.426 1.117,1.426 0,0 17.243,23.095 17.618,23.595h15v-0.672c-0.469,-0.066 -0.961,-0.129 -1.359,-0.281 -0.57,-0.219 -1.133,-0.688 -1.602,-1.395l-16.836,-22.512 0.984,-0.184c2.633,-0.488 5.156,-1.605 7.508,-3.328 3.047,-2.277 4.539,-5.328 4.539,-9.313 0,-5.359 -2.867,-8.98 -8.742,-11.063 -3.07,-1.047 -7.148,-1.574 -12.148,-1.574h-23.875v-0.006z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m293.723,160.183v5.031l1.516,0.066c2.656,0.113 3.703,0.473 4.094,0.672 0.578,0.313 1.344,0.953 1.344,3.113L300.677,206.051c0,2.164 -0.828,2.855 -1.445,3.164 -0.398,0.203 -1.461,0.547 -3.969,0.609l-1.54,0.047v5.066h29.859v-5.113h-1.578c-2.578,0 -3.906,-0.473 -4.547,-0.855 -0.672,-0.41 -1.016,-1.391 -1.016,-2.918L316.441,169.067c0,-2.168 0.781,-2.832 1.375,-3.145 0.359,-0.184 1.445,-0.512 4.266,-0.641l1.508,-0.066v-5.031l-29.867,-0.001 0,0z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m295.941,162.387v0.719c2.063,0.145 3.523,0.422 4.422,0.887 1.688,0.871 2.539,2.578 2.539,5.066L302.902,206.043c0,2.5 -0.898,4.23 -2.664,5.141 -0.922,0.473 -2.398,0.703 -4.297,0.801v0.738h25.453v-0.707c-2.203,-0.063 -3.891,-0.438 -5.078,-1.145 -1.391,-0.84 -2.117,-2.469 -2.117,-4.828L314.199,169.059c0,-2.516 0.883,-4.234 2.594,-5.113 0.898,-0.457 2.438,-0.723 4.586,-0.84v-0.719L295.941,162.387z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"m323.363,160.183v5.016l1.5,0.082c2.578,0.145 3.563,0.504 3.922,0.688 0.625,0.328 1.391,0.984 1.391,3.098L330.176,206.051c0,2.109 -0.766,2.766 -1.313,3.094 -0.406,0.215 -1.438,0.609 -3.977,0.688l-1.523,0.047v5.066h47.516l3.75,-19.016h-5.047l-0.422,0.902c-2.242,4.871 -4.813,8.199 -7.602,9.922 -2.82,1.719 -6.57,2.59 -11.117,2.59 -3.141,0 -4.031,-0.457 -4.227,-0.59 -0.492,-0.359 -0.57,-1.41 -0.57,-2.016v-16.832c3,0.184 5.164,0.855 6.328,2.094 1.422,1.504 2.391,4.297 2.906,8.266l0.172,1.391h4.906v-28.887h-4.828l-0.242,1.281c-0.93,4.965 -2.227,7.156 -3.133,8.109 -1.031,1.098 -3.164,1.688 -6.125,1.832v-16.031c0,-1.145 0.25,-1.574 0.344,-1.641 0.016,-0.016 0.617,-0.406 3.469,-0.406 5.734,0 9.656,0.801 11.672,2.375 2,1.574 3.453,4.656 4.344,9.16l0.25,1.266h4.828v-18.516h-47.172v-0.016z\"\n      android:fillColor=\"#010202\"/>\n  <path\n      android:pathData=\"m325.59,162.387v0.734c1.984,0.16 3.414,0.457 4.266,0.922 1.672,0.855 2.539,2.543 2.539,5.016L332.395,206.043c0,2.422 -0.828,4.109 -2.469,5.016 -0.906,0.512 -2.406,0.797 -4.344,0.902v0.754h43.469c0.188,-0.906 2.625,-13.281 2.891,-14.594h-0.969c-2.391,5.063 -5.156,8.609 -8.25,10.504 -3.164,1.934 -7.313,2.918 -12.273,2.918 -2.758,0 -4.539,-0.328 -5.492,-0.984 -1.016,-0.703 -1.523,-1.98 -1.523,-3.828v-19.113h0.617c4.516,0 7.727,0.953 9.508,2.84 1.711,1.816 2.82,4.785 3.414,8.969h0.781v-24.473h-0.813c-0.836,4.168 -2.016,7.047 -3.594,8.719 -1.672,1.77 -4.703,2.609 -9.297,2.543h-0.617v-18.277c0,-1.672 0.391,-2.77 1.195,-3.395 0.75,-0.59 2.297,-0.855 4.82,-0.855 6.305,0 10.586,0.938 13.031,2.84 2.344,1.832 4.016,5.188 5.031,9.953h0.82v-14.113h-42.742l0.001,0.018 0,0z\"\n      android:fillColor=\"#ffd730\"/>\n  <path\n      android:pathData=\"M0.113,236.558L469.856,236.558\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_vs.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"470.56598\"\n    android:viewportHeight=\"472.16\">\n  <path\n      android:pathData=\"M235.289,-0h235.277v472.16h-235.277z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M0,-0h235.289v472.16h-235.289z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M363.863,123.61l-31.281,20.312l10.703,-34.754l-28.344,-18.992l35.555,0l13.367,-36.367l13.375,36.367l35.555,0l-28.071,19.258l10.711,34.488z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M363.863,123.61l-31.281,20.312l10.703,-34.754l-28.344,-18.992l35.555,0l13.367,-36.367l13.375,36.367l35.555,0l-28.071,19.258l10.711,34.488z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M363.863,212.047l-31.281,20.313l10.703,-34.766l-28.344,-18.984l35.555,0l13.367,-36.36l13.375,36.36l35.555,0l-28.071,19.261l10.711,34.489z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M363.863,212.047l-31.281,20.313l10.703,-34.766l-28.344,-18.984l35.555,0l13.367,-36.36l13.375,36.36l35.555,0l-28.071,19.261l10.711,34.489z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M363.863,300.473l-31.281,20.312l10.703,-34.757l-28.344,-18.985l35.555,0l13.367,-36.371l13.375,36.371l35.555,0l-28.071,19.25l10.711,34.492z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M363.863,300.473l-31.281,20.312l10.703,-34.757l-28.344,-18.985l35.555,0l13.367,-36.371l13.375,36.371l35.555,0l-28.071,19.25l10.711,34.492z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M363.863,388.887l-31.281,20.328l10.703,-34.758l-28.344,-18.984l35.555,0l13.367,-36.36l13.375,36.36l35.555,0l-28.071,19.258l10.711,34.484z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M363.863,388.887l-31.281,20.328l10.703,-34.758l-28.344,-18.984l35.555,0l13.367,-36.36l13.375,36.36l35.555,0l-28.071,19.258l10.711,34.484z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M106.785,123.61l-31.282,20.312l10.688,-34.754l-28.328,-18.992l35.555,0l13.367,-36.367l13.367,36.367l35.578,0l-28.09,19.258l10.703,34.488z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M106.785,123.61l-31.282,20.312l10.688,-34.754l-28.328,-18.992l35.555,0l13.367,-36.367l13.367,36.367l35.578,0l-28.09,19.258l10.703,34.488z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M106.785,212.047l-31.282,20.313l10.688,-34.766l-28.328,-18.984l35.555,0l13.367,-36.36l13.367,36.36l35.578,0l-28.09,19.261l10.703,34.489z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M106.785,212.047l-31.282,20.313l10.688,-34.766l-28.328,-18.984l35.555,0l13.367,-36.36l13.367,36.36l35.578,0l-28.09,19.261l10.703,34.489z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M106.785,300.473l-31.282,20.312l10.688,-34.757l-28.328,-18.985l35.555,0l13.367,-36.371l13.367,36.371l35.578,0l-28.09,19.25l10.703,34.492z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M106.785,300.473l-31.282,20.312l10.688,-34.757l-28.328,-18.985l35.555,0l13.367,-36.371l13.367,36.371l35.578,0l-28.09,19.25l10.703,34.492z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M106.785,388.887l-31.282,20.328l10.688,-34.758l-28.328,-18.984l35.555,0l13.367,-36.36l13.367,36.36l35.578,0l-28.09,19.258l10.703,34.484z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M106.785,388.887l-31.282,20.328l10.688,-34.758l-28.328,-18.984l35.555,0l13.367,-36.36l13.367,36.36l35.578,0l-28.09,19.258l10.703,34.484z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.273,16.488l0,69.778l-31.551,20.062l10.703,-34.496l-28.082,-19.254l35.555,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M235.273,86.266l0,-69.778l13.355,36.36l35.594,0l-28.359,18.984l10.961,34.754z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M235.273,86.266l-31.551,20.062l10.703,-34.496l-28.082,-19.254l35.555,0l13.375,-36.09l13.355,36.36l35.594,0l-28.359,18.984l10.961,34.754z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.273,104.914l0,69.797l-31.551,20.059l10.703,-34.496l-28.082,-19.258l35.555,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M235.273,174.711l0,-69.797l13.355,36.36l35.594,0l-28.359,19l10.961,34.773z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M235.273,174.711l-31.551,20.059l10.703,-34.496l-28.082,-19.258l35.555,0l13.375,-36.102l13.355,36.36l35.594,0l-28.359,19l10.961,34.773z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.273,193.344l0,69.801l-31.551,20.023l10.703,-34.469l-28.082,-19.242l35.555,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M235.273,263.145l0,-69.801l13.355,36.375l35.594,0l-28.359,18.98l10.961,34.758z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M235.273,263.145l-31.551,20.023l10.703,-34.469l-28.082,-19.242l35.555,0l13.375,-36.113l13.355,36.375l35.594,0l-28.359,18.98l10.961,34.758z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.273,281.77l0,69.789l-31.551,20.047l10.703,-34.461l-28.082,-19.274l35.555,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M235.273,351.559l0,-69.789l13.355,36.375l35.594,0l-28.359,19l10.961,34.758z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M235.273,351.559l-31.551,20.047l10.703,-34.461l-28.082,-19.274l35.555,0l13.375,-36.101l13.355,36.375l35.594,0l-28.359,19l10.961,34.758z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.273,370.215l0,69.797l-31.551,20.047l10.703,-34.5l-28.082,-19.266l35.555,0z\"\n      android:fillColor=\"#e8423f\"/>\n  <path\n      android:pathData=\"M235.273,440.012l0,-69.797l13.355,36.359l35.594,0l-28.359,18.985l10.961,34.75z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M214.425,425.559l-28.082,-19.266l35.555,0l13.375,-36.078l13.355,36.359l35.594,0l-28.359,18.985l10.961,34.75l-31.551,-20.297l-31.551,20.047z\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n  <path\n      android:pathData=\"M235.289,0.016L235.289,472.145\"\n      android:strokeWidth=\"3.55200005\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#010202\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_zg.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"600\"\n    android:viewportHeight=\"600\">\n  <path\n      android:pathData=\"M0,0h600v600h-600z\"\n      android:fillColor=\"#fff\"/>\n  <path\n      android:pathData=\"M0,200h600v200h-600z\"\n      android:fillColor=\"#0073e5\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/icon_zh.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"472.75333\"\n    android:viewportHeight=\"474.055\">\n  <path\n      android:pathData=\"M0.022,0.082h472.7v473.932h-472.7z\"\n      android:fillColor=\"#ffffff\"/>\n  <path\n      android:pathData=\"M472.753,474.055l-472.753,0l0,-474.055z\"\n      android:fillColor=\"#268bcc\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_add_certificate.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"60dp\"\n\tandroid:height=\"80dp\"\n\tandroid:viewportWidth=\"60\"\n\tandroid:viewportHeight=\"80\">\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M51,1.007L26,1.007 13.5,1.007 10.375,1.007 9.497,1 1,11.495 1,13.193 1,17.255 1,33.503 1,66 51,66z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeAlpha=\"0.205\"\n\t\tandroid:strokeColor=\"#000\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M51.5036,1.512L26.5036,1.512 14.0036,1.512 10.8786,1.512 9.9996,1.505 1.5036,12 1.5036,13.698 1.5036,17.76 1.5036,34.008 1.5036,66.505 51.5036,66.505z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#203176\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M10.5011,1.75l-0.001,9.755c-0,0.552 -0.447,1 -1,1 -0,0 -0,0 -0,0l-7.75,-0.005l-0,0\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#203176\" />\n\t<path\n\t\tandroid:fillColor=\"#E20008\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M20.527,7.958S19.495,7.5 17.769,7.5h-0.001C16.04,7.5 15.009,7.958 15.009,7.958s-0.092,2.026 0.3,3.171C16,13.143 17.768,13.71 17.768,13.71s1.768,-0.566 2.46,-2.58c0.392,-1.145 0.299,-3.171 0.299,-3.171\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M19.601,10.82L18.316,10.82 18.316,12.123 17.214,12.123 17.214,10.82 15.928,10.82 15.928,9.704 17.214,9.704 17.214,8.402 18.316,8.402 18.316,9.704 19.601,9.704z\" />\n\t<path\n\t\tandroid:fillColor=\"#BDC3DA\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M25.5,12L37.083,12A0.5,0.5 0,0 1,37.583 12.5L37.583,12.5A0.5,0.5 0,0 1,37.083 13L25.5,13A0.5,0.5 0,0 1,25 12.5L25,12.5A0.5,0.5 0,0 1,25.5 12z\" />\n\t<path\n\t\tandroid:fillColor=\"#BDC3DA\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M19.5,59c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-11c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h11zM19.5,56.5c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-11c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h11zM42.5,33.5c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-17c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h17zM42.5,30.5c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-17c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h17zM42.5,27.5c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-17c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h17zM42.5,24.5c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-17c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h17zM42.5,21.5c0.276,0 0.5,0.224 0.5,0.5s-0.224,0.5 -0.5,0.5h-17c-0.276,0 -0.5,-0.224 -0.5,-0.5s0.224,-0.5 0.5,-0.5h17z\" />\n\t<path\n\t\tandroid:fillColor=\"#ff0000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M25.5,9L39.599,9A0.5,0.5 0,0 1,40.099 9.5L40.099,9.5A0.5,0.5 0,0 1,39.599 10L25.5,10A0.5,0.5 0,0 1,25 9.5L25,9.5A0.5,0.5 0,0 1,25.5 9z\" />\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M8.5495,22.1964L13.1515,22.1964L13.1515,26.8104L8.5495,26.8104zM15.4515,22.1964L20.0535,22.1964L20.0535,26.8104L15.4515,26.8104zM8.5495,29.1174L13.1515,29.1174L13.1515,33.7314L8.5495,33.7314zM20.6285,33.7314L15.7395,33.7314 15.7395,32.0014M20.0535,32.1064L20.0535,29.1174 17.7525,29.1174 17.7525,30.8484 15.7395,30.8484 15.7395,28.5404\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#243784\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M9.9875,30.5594L11.7135,30.5594L11.7135,32.2894L9.9875,32.2894zM9.9875,23.6384L11.7135,23.6384L11.7135,25.3684L9.9875,25.3684zM16.8895,23.6384L18.6155,23.6384L18.6155,25.3684L16.8895,25.3684z\" />\n\t<path\n\t\tandroid:fillColor=\"#00000000\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M30.25,16.25h25c1.657,0 3,1.343 3,3v56c0,1.657 -1.343,3 -3,3L30.25,78.25c-1.657,0 -3,-1.343 -3,-3L27.25,19.25c0,-1.657 1.343,-3 3,-3z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeAlpha=\"0.205\"\n\t\tandroid:strokeColor=\"#000\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M30.25,17h26.5c1.243,0 2.25,1.007 2.25,2.25v57.5c0,1.243 -1.007,2.25 -2.25,2.25L30.25,79c-1.243,0 -2.25,-1.007 -2.25,-2.25L28,19.25C28,18.007 29.007,17 30.25,17z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#203176\" />\n\t<path\n\t\tandroid:fillColor=\"#203176\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M36,17h15v1.875c0,0.621 -0.504,1.125 -1.125,1.125L37.125,20c-0.621,0 -1.125,-0.504 -1.125,-1.125L36,17z\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M31.5,27.4521L55.5,27.4521 55.5,45.7651 55.5,54.1511 54.375,55.1091 55.5,56.0661 55.5,64.4521 31.5,64.4521 31.5,56.0661 32.625,55.1091 31.5,54.1511 31.5,45.7651z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#243784\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M42.75,40.2471v8.288L34.5,48.5351v-8.288h8.25zM46.5,45.5221v1.507h6v1.507h-7.5L45,45.5221L46.5,45.5221zM41.25,41.7551L36,41.7551v5.274h5.25v-5.274zM46.5,40.2471v2.26h1.5v-2.26L52.5,40.2471v5.274h-1.5v-3.767L49.5,41.7541v2.26h-4.5v-3.767L46.5,40.2471zM39.75,43.2621v2.26L37.5,45.5221v-2.26h2.25zM42.75,30.4521v8.288L34.5,38.7401L34.5,30.4521h8.25zM52.5,30.4521v8.288h-8.25L44.25,30.4521L52.5,30.4521zM41.25,31.9591L36,31.9591L36,37.2321h5.25L41.25,31.9591zM51,31.9591h-5.25L45.75,37.2321h5.25L51,31.9591zM39.75,33.4661v2.26L37.5,35.7261v-2.26h2.25zM49.5,33.4661v2.26h-2.25v-2.26L49.5,33.4661z\" />\n\t<path\n\t\tandroid:fillColor=\"#BDC3DA\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M35,58.4521L50.662,58.4521A0.5,0.5 0,0 1,51.162 58.9521L51.162,58.9521A0.5,0.5 0,0 1,50.662 59.4521L35,59.4521A0.5,0.5 0,0 1,34.5 58.9521L34.5,58.9521A0.5,0.5 0,0 1,35 58.4521z\" />\n\t<path\n\t\tandroid:fillColor=\"#BDC3DA\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M35,60.4521L46.497,60.4521A0.5,0.5 0,0 1,46.997 60.9521L46.997,60.9521A0.5,0.5 0,0 1,46.497 61.4521L35,61.4521A0.5,0.5 0,0 1,34.5 60.9521L34.5,60.9521A0.5,0.5 0,0 1,35 60.4521z\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_faq_transfer_code.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M157.5,100.5m-90.5,0a90.5,90.5 0,1 1,181 0a90.5,90.5 0,1 1,-181 0\"\n      android:fillColor=\"#EFF5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M112,54h40c1.657,0 3,1.343 3,3v88c0,1.657 -1.343,3 -3,3L112,148c-1.657,0 -3,-1.343 -3,-3L109,57c0,-1.657 1.343,-3 3,-3z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M120,53h24v2.508c0,1.657 -1.343,3 -3,3L123,58.508c-1.657,0 -3,-1.343 -3,-3L120,53z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M152,52c2.689,0 4.882,2.122 4.995,4.783L157,57v22h-2L155,57c0,-1.598 -1.249,-2.904 -2.824,-2.995L152,54L112,54C110.402,54 109.096,55.249 109.005,56.824L109,57v88c0,1.598 1.249,2.904 2.824,2.995L112,148h40c1.598,0 2.904,-1.249 2.995,-2.824L155,145L155,92h2v53c0,2.689 -2.122,4.882 -4.783,4.995L152,150L112,150C109.311,150 107.118,147.878 107.005,145.217L107,145L107,57C107,54.311 109.122,52.118 111.783,52.005L112,52h40z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M206.435,73l-1.123,0.006L172,73.006c-0.513,0 -0.936,0.386 -0.993,0.883l-0.007,0.117L171,86l2,0L173,75.005L205.318,75.005l0.641,-0.003L212,82.607l-0,44.076l-39,0L173,107l-2,0l-0,20.684c-0,0.513 0.386,0.935 0.883,0.993l0.117,0.007L213,128.684c0.513,0 0.936,-0.386 0.993,-0.884L214,127.684L214,82.258c-0,-0.18 -0.049,-0.357 -0.14,-0.51l-0.077,-0.112 -6.56,-8.258c-0.164,-0.206 -0.4,-0.338 -0.658,-0.37l-0.13,-0.008z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M206.03,75v7.016c0,0.557 0.448,1.008 1,1.008h5.765\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M128.5,81L160.5,81A0.5,0.5 0,0 1,161 81.5L161,82.5A0.5,0.5 0,0 1,160.5 83L128.5,83A0.5,0.5 0,0 1,128 82.5L128,81.5A0.5,0.5 0,0 1,128.5 81z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M144.5,88L176.5,88A0.5,0.5 0,0 1,177 88.5L177,89.5A0.5,0.5 0,0 1,176.5 90L144.5,90A0.5,0.5 0,0 1,144 89.5L144,88.5A0.5,0.5 0,0 1,144.5 88z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M162,95L194,95A0.5,0.5 0,0 1,194.5 95.5L194.5,96.5A0.5,0.5 0,0 1,194 97L162,97A0.5,0.5 0,0 1,161.5 96.5L161.5,95.5A0.5,0.5 0,0 1,162 95z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M167.5,103L199.5,103A0.5,0.5 0,0 1,200 103.5L200,104.5A0.5,0.5 0,0 1,199.5 105L167.5,105A0.5,0.5 0,0 1,167 104.5L167,103.5A0.5,0.5 0,0 1,167.5 103z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M176.5,110L208.5,110A0.5,0.5 0,0 1,209 110.5L209,111.5A0.5,0.5 0,0 1,208.5 112L176.5,112A0.5,0.5 0,0 1,176 111.5L176,110.5A0.5,0.5 0,0 1,176.5 110z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M176.5,117L208.5,117A0.5,0.5 0,0 1,209 117.5L209,118.5A0.5,0.5 0,0 1,208.5 119L176.5,119A0.5,0.5 0,0 1,176 118.5L176,117.5A0.5,0.5 0,0 1,176.5 117z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M179.772,65.61c-0.796,-1.15 -1.423,-1.87 -1.879,-2.162 -0.499,-0.32 -1.335,-0.475 -2.508,-0.465h0,-7.902 0v3.394c0,0.344 -0.288,0.623 -0.644,0.623 -0.177,0 -0.347,-0.071 -0.469,-0.196l-6.195,-6.377c-0.233,-0.24 -0.233,-0.614 0,-0.854l6.195,-6.377c0.244,-0.25 0.651,-0.263 0.91,-0.027 0.13,0.118 0.203,0.283 0.203,0.454v3.44h8.078c2.451,0 4.439,1.988 4.439,4.44v4.035c0,0.07 -0.056,0.125 -0.125,0.125 -0.04,0 -0.08,-0.02 -0.103,-0.054z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_home_empty_state.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"327dp\"\n    android:height=\"190dp\"\n    android:viewportWidth=\"327\"\n    android:viewportHeight=\"190\">\n  <path\n      android:pathData=\"M38,156a125.5,32 0,1 0,251 0a125.5,32 0,1 0,-251 0z\"\n      android:fillColor=\"#505F9D\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M124.025,8l2.75,0.014L208,8.014c2.761,0 5,2.239 5,5L213,43c6.075,0 11,4.925 11,11v108c0,6.075 -4.925,11 -11,11h-48c-6.075,0 -11,-4.925 -11,-11v-13.986L108,148.014c-2.761,0 -5,-2.239 -5,-5L103,33c0,-1.135 0.386,-2.237 1.096,-3.123l16,-20C121.05,8.684 122.498,7.992 124.026,8z\"\n      android:fillColor=\"#505F9D\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M208,13.014L158,13.014 133,13.014 126.75,13.014 124,13 108,33 108,37.389 108,45.514 108,78.014 108,143.014 208,143.014z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M125,13l-0,19c-0,1.105 -0.895,2 -2,2L108.5,34\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M145.981,27.907S143.931,27 140.501,27L140.5,27C137.069,27 135.019,27.907 135.019,27.907S134.835,31.92 135.614,34.19c1.374,3.99 4.885,5.113 4.885,5.113h0.002s3.511,-1.122 4.886,-5.113c0.778,-2.27 0.594,-6.284 0.594,-6.284\"\n      android:fillColor=\"#E20008\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M144.142,33.579L141.588,33.579 141.588,36.16 139.399,36.16 139.399,33.579 136.844,33.579 136.844,31.368 139.399,31.368 139.399,28.787 141.588,28.787 141.588,31.368 144.142,31.368z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M159,33L182,33A1,1 0,0 1,183 34L183,34A1,1 0,0 1,182 35L159,35A1,1 0,0 1,158 34L158,34A1,1 0,0 1,159 33z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M145,127c0.552,0 1,0.448 1,1s-0.448,1 -1,1L122,129c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h23zM145,122c0.552,0 1,0.448 1,1s-0.448,1 -1,1L122,124c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h23zM193,77c0.552,0 1,0.448 1,1s-0.448,1 -1,1L159,79c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM193,71c0.552,0 1,0.448 1,1s-0.448,1 -1,1L159,73c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM193,65c0.552,0 1,0.448 1,1s-0.448,1 -1,1L159,67c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM193,59c0.552,0 1,0.448 1,1s-0.448,1 -1,1L159,61c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM193,53c0.552,0 1,0.448 1,1s-0.448,1 -1,1L159,55c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M159,28L187,28A1,1 0,0 1,188 29L188,29A1,1 0,0 1,187 30L159,30A1,1 0,0 1,158 29L158,29A1,1 0,0 1,159 28z\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M122,54L131.143,54L131.143,63.143L122,63.143zM135.714,54L144.857,54L144.857,63.143L135.714,63.143zM122,67.714L131.143,67.714L131.143,76.857L122,76.857zM146,76.857L136.286,76.857 136.286,73.429M144.857,73.637L144.857,67.714 140.286,67.714 140.286,71.143 136.286,71.143 136.286,66.571\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M124.857,70.571L128.286,70.571L128.286,74L124.857,74zM124.857,56.857L128.286,56.857L128.286,60.286L124.857,60.286zM138.571,56.857L142,56.857L142,60.286L138.571,60.286z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M164,47h48c3.314,0 6,2.686 6,6v108c0,3.314 -2.686,6 -6,6L164,167c-3.314,0 -6,-2.686 -6,-6L158,53c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M165,48h48c3.314,0 6,2.686 6,6v108c0,3.314 -2.686,6 -6,6L165,168c-3.314,0 -6,-2.686 -6,-6L159,54c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M174,48h30v4c0,1.657 -1.343,3 -3,3L177,55c-1.657,0 -3,-1.343 -3,-3L174,48z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M177,132L165,132L165,120m0,-24L165,84h12m24,0h12v12m0,24v12L201,132\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M166,85L212,85L212,131L166,131z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M187.5,109.5L187.5,126L171,126L171,109.5h16.5zM195,120v2.998L207,123v3L192,126v-6h3zM184.499,112.5h-10.5v10.498h10.5L184.499,112.5zM195,109.5L195,114h3v-4.5h9L207,120h-3l-0.002,-7.5h-3L201,117h-9v-7.5h3zM181.5,115.5L181.5,120L177,120v-4.5h4.5zM187.5,90v16.5L171,106.5L171,90h16.5zM207,90v16.5L190.5,106.5L190.5,90L207,90zM184.499,93h-10.5v10.499h10.5v-10.5zM203.999,93h-10.5v10.499L204,103.499v-10.5zM181.5,96v4.5L177,100.5L177,96h4.5zM201,96v4.5h-4.5L196.5,96L201,96z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_how_it_works.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M157.5,100.5m-90.5,0a90.5,90.5 0,1 1,181 0a90.5,90.5 0,1 1,-181 0\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M129,34.118h54.597c3.313,0 6,2.686 6,6v121.193c0,3.314 -2.687,6 -6,6L129,167.311c-3.314,0 -6,-2.686 -6,-6L123,40.118c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.776,34.118h33.551v4.829c0,1.656 -1.343,3 -3,3L142.776,41.947c-1.657,0 -3,-1.344 -3,-3L139.776,34.118z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M130.31,58.176L182.288,58.176 182.288,97.972 182.288,116.194 179.851,118.275 182.288,120.357 182.288,138.579 130.31,138.579 130.31,120.357 132.746,118.275 130.31,116.194 130.31,97.972z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M154.81,85.654v16.378L138.432,102.032L138.432,85.654L154.81,85.654zM162.255,96.076v2.976l11.911,0.001v2.978h-14.89v-5.955h2.979zM151.83,88.631L141.409,88.631v10.422h10.422L151.831,88.631zM162.254,85.654v4.466h2.977v-4.466h8.934L174.165,96.076h-2.978l-0.001,-7.446h-2.978l0.002,4.468h-8.934v-7.445h2.978zM148.854,91.61L148.854,96.076h-4.468v-4.467h4.467zM154.81,66.298L154.81,82.676L138.432,82.676L138.432,66.298L154.81,66.298zM174.166,66.298L174.166,82.676L157.788,82.676L157.788,66.298h16.378zM151.831,69.275L141.409,69.275v10.422h10.422L151.831,69.275zM171.187,69.275L160.765,69.275v10.422h10.422L171.187,69.275zM148.854,72.253v4.467h-4.467v-4.467h4.467zM168.211,72.253v4.467h-4.467v-4.467L168.21,72.253z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.244,124.773L173.355,124.773A0.812,0.812 0,0 1,174.167 125.585L174.167,125.585A0.812,0.812 0,0 1,173.355 126.397L139.244,126.397A0.812,0.812 0,0 1,138.432 125.585L138.432,125.585A0.812,0.812 0,0 1,139.244 124.773z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.244,128.833L164.421,128.833A0.812,0.812 0,0 1,165.233 129.645L165.233,129.645A0.812,0.812 0,0 1,164.421 130.457L139.244,130.457A0.812,0.812 0,0 1,138.432 129.645L138.432,129.645A0.812,0.812 0,0 1,139.244 128.833z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114,164m-27,0a27,27 0,1 1,54 0a27,27 0,1 1,-54 0\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114,164m-24,0a24,24 0,1 1,48 0a24,24 0,1 1,-48 0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114,155.5m-2.5,0a2.5,2.5 0,1 1,5 0a2.5,2.5 0,1 1,-5 0\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M112.5,159L115.5,159A0.5,0.5 0,0 1,116 159.5L116,173.5A0.5,0.5 0,0 1,115.5 174L112.5,174A0.5,0.5 0,0 1,112 173.5L112,159.5A0.5,0.5 0,0 1,112.5 159z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M110,159L115,159L115,162L110,162zM110,171L118,171L118,174L110,174z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_how_to_scan.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M157.5,100.5m-80.5,0a80.5,80.5 0,1 1,161 0a80.5,80.5 0,1 1,-161 0\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M202,23.014L152,23.014 127,23.014 120.75,23.014 118,23 102,43 102,47.389 102,55.514 102,88.014 102,153.014 202,153.014z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M119,23l-0,19c-0,1.105 -0.895,2 -2,2L102.5,44\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139.981,37.907S137.931,37 134.501,37L134.5,37C131.069,37 129.019,37.907 129.019,37.907S128.835,41.92 129.614,44.19c1.374,3.99 4.885,5.113 4.885,5.113h0.002s3.511,-1.122 4.886,-5.113c0.778,-2.27 0.594,-6.284 0.594,-6.284\"\n      android:fillColor=\"#E20008\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M138.142,43.579L135.588,43.579 135.588,46.16 133.399,46.16 133.399,43.579 130.844,43.579 130.844,41.368 133.399,41.368 133.399,38.787 135.588,38.787 135.588,41.368 138.142,41.368z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M153,43L176,43A1,1 0,0 1,177 44L177,44A1,1 0,0 1,176 45L153,45A1,1 0,0 1,152 44L152,44A1,1 0,0 1,153 43z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M139,137c0.552,0 1,0.448 1,1s-0.448,1 -1,1L116,139c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h23zM139,132c0.552,0 1,0.448 1,1s-0.448,1 -1,1L116,134c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h23zM187,87c0.552,0 1,0.448 1,1s-0.448,1 -1,1L153,89c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM187,81c0.552,0 1,0.448 1,1s-0.448,1 -1,1L153,83c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM187,75c0.552,0 1,0.448 1,1s-0.448,1 -1,1L153,77c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM187,69c0.552,0 1,0.448 1,1s-0.448,1 -1,1L153,71c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM187,63c0.552,0 1,0.448 1,1s-0.448,1 -1,1L153,65c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M153,38L181,38A1,1 0,0 1,182 39L182,39A1,1 0,0 1,181 40L153,40A1,1 0,0 1,152 39L152,39A1,1 0,0 1,153 38z\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M116,64L125.143,64L125.143,73.143L116,73.143zM129.714,64L138.857,64L138.857,73.143L129.714,73.143zM116,77.714L125.143,77.714L125.143,86.857L116,86.857zM140,86.857L130.286,86.857 130.286,83.429M138.857,83.637L138.857,77.714 134.286,77.714 134.286,81.143 130.286,81.143 130.286,76.571\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M118.857,80.571L122.286,80.571L122.286,84L118.857,84zM118.857,66.857L122.286,66.857L122.286,70.286L118.857,70.286zM132.571,66.857L136,66.857L136,70.286L132.571,70.286z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M158,57h48c3.314,0 6,2.686 6,6v108c0,3.314 -2.686,6 -6,6L158,177c-3.314,0 -6,-2.686 -6,-6L152,63c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M159,58h48c3.314,0 6,2.686 6,6v108c0,3.314 -2.686,6 -6,6L159,178c-3.314,0 -6,-2.686 -6,-6L153,64c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M168,58h30v4c0,1.657 -1.343,3 -3,3L171,65c-1.657,0 -3,-1.343 -3,-3L168,58z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M171,142L159,142L159,130m0,-24L159,94h12m24,0h12v12m0,24v12L195,142\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M160,95L206,95L206,141L160,141z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M181.5,119.5L181.5,136L165,136L165,119.5h16.5zM189,130v2.998L201,133v3L186,136v-6h3zM178.499,122.5h-10.5v10.498h10.5L178.499,122.5zM189,119.5L189,124h3v-4.5h9L201,130h-3l-0.002,-7.5h-3L195,127h-9v-7.5h3zM175.5,125.5L175.5,130L171,130v-4.5h4.5zM181.5,100v16.5L165,116.5L165,100h16.5zM201,100v16.5L184.5,116.5L184.5,100L201,100zM178.499,103h-10.5v10.499h10.5v-10.5zM197.999,103h-10.5v10.499L198,113.499v-10.5zM175.5,106v4.5L171,110.5L171,106h4.5zM195,106v4.5h-4.5L190.5,106L195,106z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_onboarding_covid_certificate.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M53,158.5a105,28.5 0,1 0,210 0a105,28.5 0,1 0,-210 0z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M148.853,14h54.103c3.866,0 7,3.134 7,7v120.193c0,3.314 -2.686,6 -6,6L148.853,147.193c-3.313,0 -6,-2.686 -6,-6L142.853,20c0,-3.314 2.687,-6 6,-6z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M147.735,15.118h54.597c3.313,0 6,2.687 6,6v121.194c0,3.313 -2.687,6 -6,6L147.735,148.312c-3.314,0 -6,-2.687 -6,-6L141.735,21.118c0,-3.313 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M158.511,15.118h33.551v4.829c0,1.657 -1.343,3 -3,3L161.511,22.947c-1.657,0 -3,-1.343 -3,-3L158.511,15.118z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M149.045,39.177L201.023,39.177 201.023,78.973 201.023,97.195 198.586,99.276 201.023,101.358 201.023,119.58 149.045,119.58 149.045,101.358 151.481,99.276 149.045,97.195 149.045,78.973z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M173.545,66.655v16.378L157.167,83.033L157.167,66.655L173.545,66.655zM180.99,77.077v2.976l11.911,0.001v2.978h-14.89v-5.955h2.979zM170.565,69.632L160.144,69.632v10.422h10.422L170.566,69.632zM180.989,66.655v4.466h2.977v-4.466h8.934L192.9,77.077h-2.978l-0.001,-7.446h-2.978l0.002,4.468h-8.934v-7.445h2.978zM167.589,72.611L167.589,77.077h-4.468v-4.467h4.467zM173.545,47.299L173.545,63.677L157.167,63.677L157.167,47.299L173.545,47.299zM192.901,47.299L192.901,63.677L176.523,63.677L176.523,47.299h16.378zM170.566,50.276L160.144,50.276v10.422h10.422L170.566,50.276zM189.922,50.276L179.5,50.276v10.422h10.422L189.922,50.276zM167.589,53.254v4.467h-4.467v-4.467h4.467zM186.946,53.254v4.467h-4.467v-4.467L186.945,53.254z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M157.979,105.774L192.09,105.774A0.812,0.812 0,0 1,192.902 106.586L192.902,106.586A0.812,0.812 0,0 1,192.09 107.398L157.979,107.398A0.812,0.812 0,0 1,157.167 106.586L157.167,106.586A0.812,0.812 0,0 1,157.979 105.774z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M157.979,109.834L183.156,109.834A0.812,0.812 0,0 1,183.968 110.646L183.968,110.646A0.812,0.812 0,0 1,183.156 111.458L157.979,111.458A0.812,0.812 0,0 1,157.167 110.646L157.167,110.646A0.812,0.812 0,0 1,157.979 109.834z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M112.812,26.994h54.103c3.866,0 7,3.134 7,7v120.193c0,3.314 -2.687,6 -6,6L112.812,160.187c-3.314,0 -6,-2.686 -6,-6L106.812,32.994c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M112,27.806h54.597c3.313,0 6,2.686 6,6v121.194c0,3.313 -2.687,6 -6,6L112,161c-3.314,0 -6,-2.687 -6,-6L106,33.806c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#66C5B8\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M136.016,48.694L138.365,51.044 143.788,44.896\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M140,48m-9,0a9,9 0,1 1,18 0a9,9 0,1 1,-18 0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M106.812,59.48h64.973v95.707c0,2.762 -2.239,5 -5,5L111.812,160.187c-2.761,0 -5,-2.238 -5,-5L106.812,59.48z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M122.243,27.806h33.551v4.829c0,1.657 -1.343,3 -3,3h-27.55c-1.658,0 -3,-1.343 -3,-3L122.244,27.806z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.809,144.756L147.306,144.756A1.5,1.5 0,0 1,148.806 146.256L148.806,146.505A1.5,1.5 0,0 1,147.306 148.005L114.809,148.005A1.5,1.5 0,0 1,113.309 146.505L113.309,146.256A1.5,1.5 0,0 1,114.809 144.756z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.809,128.513L157.29,128.513A1.5,1.5 0,0 1,158.79 130.013L158.79,130.262A1.5,1.5 0,0 1,157.29 131.762L114.809,131.762A1.5,1.5 0,0 1,113.309 130.262L113.309,130.013A1.5,1.5 0,0 1,114.809 128.513z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.809,149.629L138.432,149.629A1.5,1.5 0,0 1,139.932 151.129L139.932,151.378A1.5,1.5 0,0 1,138.432 152.878L114.809,152.878A1.5,1.5 0,0 1,113.309 151.378L113.309,151.129A1.5,1.5 0,0 1,114.809 149.629z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.809,133.386L138.432,133.386A1.5,1.5 0,0 1,139.932 134.886L139.932,135.135A1.5,1.5 0,0 1,138.432 136.635L114.809,136.635A1.5,1.5 0,0 1,113.309 135.135L113.309,134.886A1.5,1.5 0,0 1,114.809 133.386z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M152.293,65.165h12.994v12.995m0,25.989v12.994L152.293,117.143m-25.99,0L113.31,117.143L113.31,104.149m0,-25.99L113.31,65.166h12.995\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.122,65.977L164.476,65.977L164.476,116.331L114.122,116.331z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M137.81,92.644v16.378L121.43,109.022L121.43,92.643h16.38zM145.254,103.066v2.976l11.912,0.002v2.978h-14.89v-5.956h2.978zM134.83,95.621L124.41,95.621v10.421L134.83,106.042L134.83,95.621zM145.254,92.643v4.466h2.977l0.001,-4.466h8.934v10.423h-2.978l-0.002,-7.445L151.21,95.621v4.467h-8.933v-7.445h2.978zM131.854,98.599v4.467h-4.467v-4.467h4.467zM137.809,73.287L137.809,89.664L121.431,89.664L121.431,73.287h16.378zM157.166,73.287L157.166,89.664L140.787,89.664L140.787,73.287h16.379zM134.83,76.264L124.41,76.264v10.421L134.83,86.685L134.83,76.265zM154.186,76.264L143.765,76.264v10.421h10.421L154.186,76.265zM131.854,79.242v4.466h-4.467L127.387,79.244h4.467zM151.21,79.242v4.466h-4.467L146.743,79.244h4.467z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_onboarding_hero.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"250dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"250\">\n  <path\n      android:pathData=\"M32,202a125.5,32 0,1 0,251 0a125.5,32 0,1 0,-251 0z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M177,63.014L127,63.014 102,63.014 95.75,63.014 93,63 77,83 77,87.389 77,95.514 77,128.014 77,193.014 177,193.014z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M178,64.014L128,64.014 103,64.014 96.75,64.014 94,64 78,84 78,88.389 78,96.514 78,129.014 78,194.014 178,194.014z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M95,64l-0,19c-0,1.105 -0.895,2 -2,2L78.5,85\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M115.981,78.907S113.931,78 110.501,78L110.5,78C107.069,78 105.019,78.907 105.019,78.907S104.835,82.92 105.614,85.19c1.374,3.99 4.885,5.113 4.885,5.113h0.002s3.511,-1.122 4.886,-5.113c0.778,-2.27 0.594,-6.284 0.594,-6.284\"\n      android:fillColor=\"#E20008\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M114.142,84.579L111.588,84.579 111.588,87.16 109.399,87.16 109.399,84.579 106.844,84.579 106.844,82.368 109.399,82.368 109.399,79.787 111.588,79.787 111.588,82.368 114.142,82.368z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M129,84L152,84A1,1 0,0 1,153 85L153,85A1,1 0,0 1,152 86L129,86A1,1 0,0 1,128 85L128,85A1,1 0,0 1,129 84z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M115,178c0.552,0 1,0.448 1,1s-0.448,1 -1,1L92,180c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h23zM115,173c0.552,0 1,0.448 1,1s-0.448,1 -1,1L92,175c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h23zM163,128c0.552,0 1,0.448 1,1s-0.448,1 -1,1L129,130c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM163,122c0.552,0 1,0.448 1,1s-0.448,1 -1,1L129,124c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM163,116c0.552,0 1,0.448 1,1s-0.448,1 -1,1L129,118c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM163,110c0.552,0 1,0.448 1,1s-0.448,1 -1,1L129,112c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34zM163,104c0.552,0 1,0.448 1,1s-0.448,1 -1,1L129,106c-0.552,0 -1,-0.448 -1,-1s0.448,-1 1,-1h34z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M129,79L157,79A1,1 0,0 1,158 80L158,80A1,1 0,0 1,157 81L129,81A1,1 0,0 1,128 80L128,80A1,1 0,0 1,129 79z\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M92,105L101.143,105L101.143,114.143L92,114.143zM105.714,105L114.857,105L114.857,114.143L105.714,114.143zM92,118.714L101.143,118.714L101.143,127.857L92,127.857zM116,127.857L106.286,127.857 106.286,124.429M114.857,124.637L114.857,118.714 110.286,118.714 110.286,122.143 106.286,122.143 106.286,117.571\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M94.857,121.571L98.286,121.571L98.286,125L94.857,125zM94.857,107.857L98.286,107.857L98.286,111.286L94.857,111.286zM108.571,107.857L112,107.857L112,111.286L108.571,111.286z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M157,42h69.623c3.866,0 7,3.134 7,7v151c0,3.314 -2.686,6 -6,6L157,206c-3.314,0 -6,-2.686 -6,-6L151,48c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M158.623,43h70c3.314,0 6,2.686 6,6v152c0,3.314 -2.686,6 -6,6h-70c-3.314,0 -6,-2.686 -6,-6L152.623,49c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M173.279,43.377L214.59,43.377v6.64c0,1.656 -1.343,3 -3,3L176.28,53.017c-1.657,0 -3,-1.344 -3,-3v-6.64z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M161.69,73.103L225.69,73.103 225.69,122.103 225.69,144.541 222.69,147.103 225.69,149.666 225.69,172.103 161.69,172.103 161.69,149.666 164.69,147.103 161.69,144.541 161.69,122.103z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M191.857,106.936L191.857,127.103L171.69,127.103L171.69,106.936h20.167zM201.023,119.77v3.664L215.69,123.437L215.69,127.103L197.357,127.103v-7.333h3.666zM188.19,110.602L175.356,110.602v12.832L188.19,123.434L188.19,110.603zM201.024,106.936v5.5h3.666l0.001,-5.5h11v12.834h-3.667l-0.002,-9.168h-3.666L208.357,116.103h-11v-9.167h3.666zM184.524,114.27v5.5h-5.5v-5.5h5.5zM191.857,83.103v20.167L171.69,103.27L171.69,83.103h20.167zM215.69,83.103v20.167L195.523,103.27L195.523,83.103L215.69,83.103zM188.189,86.769L175.356,86.769L175.356,99.603L188.19,99.603L188.19,86.769zM212.021,86.769L199.19,86.769L199.19,99.603h12.832L212.022,86.769zM184.523,90.436v5.5h-5.5v-5.5h5.5zM208.357,90.436v5.5h-5.5v-5.5h5.5z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M172.69,155.103L214.69,155.103A1,1 0,0 1,215.69 156.103L215.69,156.103A1,1 0,0 1,214.69 157.103L172.69,157.103A1,1 0,0 1,171.69 156.103L171.69,156.103A1,1 0,0 1,172.69 155.103z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M172.69,160.103L203.69,160.103A1,1 0,0 1,204.69 161.103L204.69,161.103A1,1 0,0 1,203.69 162.103L172.69,162.103A1,1 0,0 1,171.69 161.103L171.69,161.103A1,1 0,0 1,172.69 160.103z\"\n      android:fillColor=\"#BDC3DA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M193,207m-18,0a18,18 0,1 1,36 0a18,18 0,1 1,-36 0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M193.048,196.001l0.096,0.01 8,1.168c0.454,0.066 0.8,0.43 0.85,0.876l0.006,0.113v10.416c0,3.884 -2.867,7.617 -8.454,11.254 -0.332,0.216 -0.76,0.216 -1.092,0 -5.46,-3.555 -8.322,-7.2 -8.45,-10.99L184,208.585L184,198.168c0,-0.458 0.31,-0.852 0.745,-0.967l0.11,-0.022 8,-1.169c0.064,-0.009 0.129,-0.012 0.193,-0.009z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M193,198.01L186,199.032v9.552c0,2.834 2.116,5.798 6.464,8.847l0.357,0.248 0.179,0.12 0.18,-0.12c4.346,-2.971 6.578,-5.863 6.801,-8.634l0.015,-0.237 0.004,-0.224L200,199.032L193,198.01z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M197.232,203.647l0.092,0.072c0.385,0.34 0.446,0.908 0.16,1.32l-0.071,0.091 -4.64,5.26c-0.356,0.404 -0.962,0.449 -1.372,0.122l-0.085,-0.076 -2.01,-2.01c-0.39,-0.39 -0.39,-1.024 0,-1.415 0.362,-0.362 0.934,-0.388 1.327,-0.077l0.087,0.077 1.257,1.256 3.936,-4.46c0.339,-0.384 0.908,-0.446 1.32,-0.16z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_onboarding_privacy.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"200dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"200\">\n  <path\n      android:pathData=\"M53,177.5a105,20.5 0,1 0,210 0a105,20.5 0,1 0,-210 0z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M136,41h45c3.314,0 6,2.686 6,6v98c0,3.314 -2.686,6 -6,6L136,151c-3.314,0 -6,-2.686 -6,-6L130,47c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M135,42h45c3.314,0 6,2.686 6,6v98c0,3.314 -2.686,6 -6,6L135,152c-3.314,0 -6,-2.686 -6,-6L129,48c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M134.927,42.854h45c2.761,0 5,2.239 5,5v9.429c-9.167,1.714 -18.333,2.57 -27.5,2.57 -9.167,0 -18.333,-0.856 -27.5,-2.57v-9.43c0,-2.76 2.239,-5 5,-5z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M144,42h27v3.489c0,1.657 -1.343,3 -3,3L147,48.489c-1.657,0 -3,-1.343 -3,-3L144,42z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M138.5,73.708L157.5,71l19,2.708v24.146C176.5,105.903 170.167,113.951 157.5,122 144.833,113.951 138.5,105.903 138.5,97.854L138.5,73.708z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M142.5,77.23L157.5,75l15,2.23v19.885C172.5,103.743 167.5,110.372 157.5,117 147.5,110.372 142.5,103.743 142.5,97.115L142.5,77.23z\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M152.99,95.475L156.525,99.01 164.465,89.98\"\n      android:strokeLineJoin=\"round\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M197,183.726L170.496,182.379 171.661,169.028 186.545,167.029 197,167.029zM147.53,165.275L150.635,162.538 154.982,162 163.576,166.548 159.452,169.402 156.056,170.033z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M147.38,173.5L133.232,165.701 135.6,163.322 139.863,162 147.38,164.514 156.248,169.402z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M197,183.726h-9.841c-0.433,0 -0.864,0.057 -1.283,0.168l-23.798,6.314c-4.282,1.136 -8.848,0.32 -12.473,-2.227L121.367,168.13c-0.452,-0.318 -0.56,-0.941 -0.243,-1.393 0.102,-0.145 0.24,-0.26 0.402,-0.334 1.365,-0.626 2.73,-1.093 4.094,-1.4 1.799,-0.404 3.795,-0.364 5.989,0.12 0.175,0.039 0.345,0.101 0.504,0.185l13.95,7.384h0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M173.016,178.364L147.293,178.364c-0.981,-1.338 -1.219,-2.514 -0.713,-3.529 0.507,-1.015 1.757,-1.868 3.75,-2.56l23.188,-8.129c2.275,-0.798 4.762,-0.746 7.003,0.145l5.84,2.322c0.823,0.327 1.7,0.495 2.587,0.495L197,167.108M133.588,164.995c0.853,-1.043 1.901,-1.841 3.146,-2.394 0.708,-0.314 1.576,-0.505 2.605,-0.573 1.459,-0.096 2.916,0.209 4.214,0.883l12.9,6.696h0M148.082,164.579c0.895,-0.983 1.873,-1.653 2.934,-2.012 0.692,-0.234 1.596,-0.396 2.714,-0.485 1.213,-0.097 2.426,0.177 3.48,0.785l7.204,4.162h0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M120,10.274L146.504,11.621 145.339,24.972 130.455,26.971 120,26.971zM169.47,28.725L166.365,31.462 162.018,32 153.424,27.452 157.548,24.598 160.944,23.967z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M169.62,20.5L183.768,28.299 181.4,30.678 177.137,32 169.62,29.486 160.752,24.598z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M120,10.274l9.841,-0c0.433,-0 0.864,-0.057 1.283,-0.168l23.798,-6.314c4.282,-1.136 8.848,-0.32 12.473,2.227L195.633,25.87c0.452,0.318 0.56,0.941 0.243,1.393 -0.102,0.145 -0.24,0.26 -0.402,0.334 -1.365,0.626 -2.73,1.093 -4.094,1.4 -1.799,0.404 -3.795,0.364 -5.989,-0.12 -0.175,-0.039 -0.345,-0.101 -0.504,-0.185l-13.95,-7.384l-0,-0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M143.984,15.636L169.707,15.636c0.981,1.338 1.219,2.514 0.713,3.529 -0.507,1.015 -1.757,1.868 -3.75,2.56l-23.188,8.129c-2.275,0.798 -4.762,0.746 -7.003,-0.145l-5.84,-2.322c-0.823,-0.327 -1.7,-0.495 -2.587,-0.495L120,26.892M183.412,29.005c-0.853,1.043 -1.901,1.841 -3.146,2.394 -0.708,0.314 -1.576,0.505 -2.605,0.573 -1.459,0.096 -2.916,-0.209 -4.214,-0.883l-12.9,-6.696l-0,-0M168.918,29.421c-0.895,0.983 -1.873,1.653 -2.934,2.012 -0.692,0.234 -1.596,0.396 -2.714,0.485 -1.213,0.097 -2.426,-0.177 -3.48,-0.785l-7.204,-4.162l-0,-0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#FFF\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M217,70L217,72M217,62L217,64M220.034,67.024L222.034,67.024M212.034,67.024L214.034,67.024\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M206.888,111.097L205.474,112.512M212.545,105.44L211.131,106.855M211.138,111.138L212.552,112.553M205.481,105.481L206.896,106.896\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M105.888,69.098L104.474,70.512M111.545,63.441L110.131,64.855M110.138,69.139L111.552,70.553M104.481,63.482L105.895,64.896\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n  <path\n      android:pathData=\"M92,103L92,105M92,95L92,97M95.034,100.024L97.034,100.024M87.034,100.024L89.034,100.024\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_transfer_code_failed.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"140dp\"\n    android:height=\"140dp\"\n    android:viewportWidth=\"140\"\n    android:viewportHeight=\"140\">\n  <path\n      android:pathData=\"M70,70m-70,0a70,70 0,1 1,140 0a70,70 0,1 1,-140 0\"\n      android:fillColor=\"#FAE2EA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M89.162,35c0.81,0 1.586,0.31 2.16,0.85l0.139,0.139 20.677,21.032c1.103,1.18 1.147,2.99 0.123,4.231l-0.134,0.152 -20.672,21.384c-1.204,1.287 -3.219,1.348 -4.497,0.137 -0.588,-0.557 -0.94,-1.316 -0.991,-2.12l-0.007,-0.203v-9.609h-9.292L52.015,71V59.398l-0.006,-0.122c-0.06,-0.603 -0.564,-1.07 -1.172,-1.07 -0.277,0 -0.544,0.098 -0.755,0.277l-0.1,0.095 -20.678,21.033 -0.082,0.099c-0.303,0.41 -0.302,0.996 0.013,1.42l0.086,0.102 20.672,21.383 0.095,0.092c0.46,0.398 1.136,0.39 1.577,-0.029 0.204,-0.193 0.333,-0.452 0.365,-0.73l0.008,-0.14v-11.61l29.578,0.002 0.116,0.007c0.46,0.053 0.824,0.418 0.877,0.877l0.007,0.116 -0.007,0.117c-0.053,0.459 -0.418,0.823 -0.877,0.876l-0.116,0.007 -27.577,-0.002v9.61l-0.007,0.202c-0.05,0.805 -0.403,1.563 -0.991,2.12 -1.232,1.167 -3.145,1.153 -4.36,0.001l-0.137,-0.138L27.872,82.61l-0.134,-0.152c-0.982,-1.19 -0.982,-2.902 -0.01,-4.08l0.132,-0.151 20.817,-21.172c0.521,-0.49 1.21,-0.791 1.94,-0.842l0.22,-0.007 0.18,0.005c1.613,0.09 2.903,1.388 2.993,3.006l0.005,0.18V69l4.302,-0.001 0.066,-0.003 29.577,-0.002v11.61c0,0.33 0.135,0.644 0.373,0.87 0.442,0.418 1.117,0.426 1.577,0.028l0.095,-0.091 20.673,-21.384c0.399,-0.427 0.427,-1.078 0.099,-1.522l-0.082,-0.099 -20.678,-21.032c-0.222,-0.238 -0.532,-0.373 -0.855,-0.373 -0.609,0 -1.112,0.468 -1.172,1.07l-0.006,0.122v11.603l-29.601,-0.008c-0.552,0 -1,-0.448 -1,-1 0,-0.513 0.386,-0.935 0.883,-0.993l0.117,-0.007 27.6,0.007v-9.602c0,-1.7 1.326,-3.093 2.998,-3.187l0.18,-0.005z\"\n      android:fillColor=\"#D81F5B\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M95,91m-20,0a20,20 0,1 1,40 0a20,20 0,1 1,-40 0\"\n      android:fillColor=\"#FAE2EA\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M95,91m-18,0a18,18 0,1 1,36 0a18,18 0,1 1,-36 0\"\n      android:fillColor=\"#D81F5B\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M89.337,83.923l5.657,5.656 5.657,-5.656c0.39,-0.39 1.024,-0.39 1.414,0 0.39,0.39 0.39,1.024 0,1.414l-5.656,5.657 5.656,5.657c0.39,0.39 0.39,1.024 0,1.414 -0.39,0.39 -1.024,0.39 -1.414,0l-5.657,-5.656 -5.657,5.656c-0.39,0.39 -1.024,0.39 -1.414,0 -0.39,-0.39 -0.39,-1.024 0,-1.414l5.656,-5.657 -5.656,-5.657c-0.39,-0.39 -0.39,-1.024 0,-1.414 0.39,-0.39 1.024,-0.39 1.414,0z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_transfer_code_intro.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"315dp\"\n    android:height=\"250dp\"\n    android:viewportWidth=\"315\"\n    android:viewportHeight=\"250\">\n  <path\n      android:pathData=\"M28,205a60,15 0,1 0,120 0a60,15 0,1 0,-120 0z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M198,205a41,8 0,1 0,82 0a41,8 0,1 0,-82 0z\"\n      android:fillColor=\"#F4F5F9\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M52,40h68.623c3.866,0 7,3.134 7,7v150c0,3.866 -3.134,7 -7,7L52,204c-3.866,0 -7,-3.134 -7,-7L45,47c0,-3.866 3.134,-7 7,-7z\"\n      android:strokeAlpha=\"0.205\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M53,41h70c3.314,0 6,2.686 6,6v152c0,3.314 -2.686,6 -6,6L53,205c-3.314,0 -6,-2.686 -6,-6L47,47c0,-3.314 2.686,-6 6,-6z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M67.279,41.377L108.59,41.377v6.64c0,1.656 -1.343,3 -3,3L70.28,51.017c-1.657,0 -3,-1.344 -3,-3v-6.64z\"\n      android:fillColor=\"#203176\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M141,99L32,99C27.03,99 23,103.03 23,108v29c0,4.97 4.03,9 9,9h109c4.97,0 9,-4.03 9,-9L150,108c0,-4.97 -4.03,-9 -9,-9z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M32,103L141,103A5,5 0,0 1,146 108L146,137A5,5 0,0 1,141 142L32,142A5,5 0,0 1,27 137L27,108A5,5 0,0 1,32 103z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M107.4,113L137.6,113A1.4,1.4 0,0 1,139 114.4L139,130.6A1.4,1.4 0,0 1,137.6 132L107.4,132A1.4,1.4 0,0 1,106 130.6L106,114.4A1.4,1.4 0,0 1,107.4 113z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M71.4,113L101.6,113A1.4,1.4 0,0 1,103 114.4L103,130.6A1.4,1.4 0,0 1,101.6 132L71.4,132A1.4,1.4 0,0 1,70 130.6L70,114.4A1.4,1.4 0,0 1,71.4 113z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M35.4,113L65.6,113A1.4,1.4 0,0 1,67 114.4L67,130.6A1.4,1.4 0,0 1,65.6 132L35.4,132A1.4,1.4 0,0 1,34 130.6L34,114.4A1.4,1.4 0,0 1,35.4 113z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M40.012,126.679l0.604,-1.848h2.941l0.604,1.848h1.845l-2.808,-8.104h-2.22l-2.811,8.104h1.845zM43.121,123.494h-2.068l1.004,-3.067h0.063l1,3.067zM53.895,126.679v-1.401h-3.42v-0.056l1.19,-1.159c0.559,-0.506 0.992,-0.941 1.3,-1.304 0.307,-0.363 0.521,-0.693 0.642,-0.991 0.12,-0.298 0.181,-0.6 0.181,-0.906 0,-0.467 -0.12,-0.881 -0.362,-1.243 -0.241,-0.361 -0.579,-0.644 -1.012,-0.848 -0.434,-0.205 -0.942,-0.307 -1.525,-0.307 -0.568,0 -1.069,0.107 -1.504,0.32 -0.435,0.214 -0.773,0.516 -1.014,0.907 -0.241,0.39 -0.362,0.85 -0.362,1.38h1.635c0,-0.258 0.05,-0.48 0.15,-0.668 0.102,-0.187 0.245,-0.331 0.43,-0.432 0.186,-0.1 0.403,-0.15 0.653,-0.15 0.238,0 0.452,0.047 0.64,0.14 0.188,0.094 0.337,0.227 0.445,0.4 0.11,0.173 0.163,0.378 0.163,0.616 0,0.213 -0.043,0.412 -0.13,0.595 -0.088,0.183 -0.216,0.37 -0.385,0.56 -0.168,0.19 -0.375,0.404 -0.622,0.641l-2.9,2.671v1.235h5.807zM57.931,126.679l1.67,-2.766h0.064l1.67,2.766h1.981l-2.541,-4.052 2.485,-4.052h-1.945l-1.65,2.762L59.6,121.337l-1.642,-2.762h-1.953l2.501,4.052 -2.549,4.052h1.973zM77.924,126.79c0.604,0 1.135,-0.121 1.592,-0.363 0.458,-0.241 0.815,-0.573 1.07,-0.997 0.256,-0.423 0.383,-0.908 0.38,-1.454 0.003,-0.52 -0.107,-0.98 -0.33,-1.38 -0.223,-0.399 -0.526,-0.713 -0.91,-0.943 -0.385,-0.23 -0.823,-0.344 -1.313,-0.344 -0.358,0 -0.682,0.066 -0.97,0.198 -0.29,0.132 -0.506,0.298 -0.649,0.498h-0.048l0.211,-2.03h3.56v-1.4h-4.98l-0.386,4.273 1.532,0.273c0.124,-0.169 0.299,-0.302 0.523,-0.4 0.224,-0.097 0.455,-0.146 0.694,-0.146 0.273,0.003 0.515,0.065 0.728,0.186 0.212,0.122 0.378,0.29 0.499,0.507 0.12,0.216 0.18,0.467 0.18,0.751 0,0.28 -0.058,0.527 -0.176,0.742 -0.118,0.215 -0.281,0.383 -0.49,0.503 -0.208,0.12 -0.447,0.18 -0.717,0.18 -0.34,0 -0.633,-0.098 -0.88,-0.293 -0.246,-0.195 -0.379,-0.45 -0.397,-0.764h-1.67c0.01,0.467 0.144,0.882 0.401,1.243 0.257,0.361 0.605,0.645 1.044,0.85 0.439,0.206 0.94,0.31 1.502,0.31zM86.521,126.79c0.604,0.002 1.135,-0.117 1.593,-0.359 0.457,-0.241 0.814,-0.575 1.07,-1.003 0.256,-0.427 0.384,-0.915 0.384,-1.464 0,-0.506 -0.11,-0.956 -0.327,-1.35 -0.217,-0.392 -0.514,-0.702 -0.89,-0.927 -0.377,-0.226 -0.807,-0.338 -1.29,-0.338 -0.296,0 -0.578,0.045 -0.844,0.136 -0.267,0.091 -0.504,0.222 -0.712,0.392 -0.208,0.17 -0.373,0.375 -0.495,0.615h-0.056c0.005,-0.802 0.145,-1.433 0.42,-1.893 0.274,-0.46 0.676,-0.69 1.207,-0.69 0.312,0 0.575,0.08 0.787,0.243 0.212,0.162 0.351,0.39 0.418,0.686h1.698c-0.053,-0.454 -0.206,-0.861 -0.46,-1.223 -0.253,-0.361 -0.587,-0.647 -1.004,-0.858 -0.416,-0.211 -0.896,-0.317 -1.44,-0.317 -0.503,0 -0.958,0.098 -1.364,0.295 -0.405,0.196 -0.753,0.483 -1.044,0.859 -0.29,0.376 -0.513,0.834 -0.668,1.375 -0.155,0.54 -0.234,1.154 -0.236,1.84 0.002,0.74 0.093,1.366 0.272,1.875 0.179,0.51 0.422,0.918 0.728,1.227 0.306,0.309 0.653,0.531 1.042,0.669 0.388,0.137 0.792,0.207 1.21,0.21zM86.513,125.444c-0.265,0 -0.502,-0.065 -0.71,-0.194 -0.208,-0.13 -0.373,-0.302 -0.493,-0.518 -0.12,-0.217 -0.181,-0.455 -0.181,-0.716 0,-0.196 0.036,-0.38 0.107,-0.552 0.072,-0.173 0.17,-0.326 0.297,-0.458 0.126,-0.131 0.273,-0.234 0.441,-0.308 0.168,-0.074 0.352,-0.11 0.55,-0.11 0.266,0 0.502,0.062 0.709,0.189 0.207,0.127 0.37,0.297 0.487,0.51 0.118,0.214 0.177,0.455 0.177,0.725 0,0.269 -0.06,0.511 -0.179,0.728 -0.12,0.216 -0.284,0.387 -0.493,0.514 -0.21,0.127 -0.447,0.19 -0.712,0.19zM93.535,126.679v-2.303l0.847,-1.03 2.232,3.333h2.06l-3.059,-4.476 3.023,-3.628h-2.064l-2.931,3.573h-0.108v-3.573h-1.722v8.104h1.722zM111.319,126.679l3.38,-6.684v-1.42h-5.715v1.4h3.934v0.056l-3.377,6.648h1.778zM120.779,126.679l1.547,-5.299h0.064l1.551,5.299h1.679l2.33,-8.104h-1.881l-1.348,5.642h-0.072l-1.483,-5.642h-1.611l-1.488,5.63L120,124.205l-1.349,-5.63h-1.88l2.33,8.104h1.678zM131.453,126.679v-2.627h1.447c0.557,0 1.04,-0.092 1.45,-0.273l0.151,-0.072c0.442,-0.23 0.78,-0.55 1.012,-0.962 0.234,-0.411 0.35,-0.886 0.35,-1.424 0,-0.538 -0.114,-1.014 -0.344,-1.427 -0.229,-0.413 -0.561,-0.736 -0.996,-0.97 -0.435,-0.233 -0.961,-0.35 -1.579,-0.35h-3.214v8.105h1.723zM131.453,119.975h1.161c0.334,0 0.61,0.057 0.827,0.169 0.218,0.112 0.38,0.269 0.487,0.47 0.108,0.202 0.162,0.438 0.162,0.707 0,0.266 -0.054,0.502 -0.162,0.706 -0.107,0.205 -0.269,0.364 -0.485,0.479 -0.216,0.115 -0.49,0.172 -0.821,0.172h-1.17v-2.703z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M266.875,69l-2.25,0.011L198,69.011c-0.513,0 -0.936,0.386 -0.993,0.884L197,70.01L197,94l2,0L199,71.011L264.63,71.011l1.772,-0.009L279,86.749l-0,88.862l-80,0L199,126l-2,0l-0,50.611c-0,0.513 0.386,0.936 0.883,0.994l0.117,0.006L280,177.611c0.513,0 0.936,-0.386 0.993,-0.883L281,176.611L281,86.4c-0,-0.182 -0.05,-0.359 -0.142,-0.513l-0.077,-0.112L267.66,69.375c-0.164,-0.204 -0.4,-0.335 -0.656,-0.367l-0.13,-0.008z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"nonZero\"/>\n  <path\n      android:pathData=\"M266.06,70l-0,15.22c-0,1.105 0.895,2 2,2L279.59,87.22l-0,0\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#F4F5F9\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M215.204,78.124S213.524,77.38 210.711,77.38L210.71,77.38C207.897,77.38 206.215,78.124 206.215,78.124s-0.15,3.291 0.488,5.153C207.83,86.549 210.71,87.469 210.71,87.469h0.002s2.879,-0.92 4.006,-4.192c0.639,-1.862 0.487,-5.153 0.487,-5.153\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M213.697,82.775L211.602,82.775 211.602,84.891 209.807,84.891 209.807,82.775 207.712,82.775 207.712,80.961 209.807,80.961 209.807,78.846 211.602,78.846 211.602,80.961 213.697,80.961z\"\n      android:fillColor=\"#FFF\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M207,167L230,167A1,1 0,0 1,231 168L231,168A1,1 0,0 1,230 169L207,169A1,1 0,0 1,206 168L206,168A1,1 0,0 1,207 167z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M207,162L230,162A1,1 0,0 1,231 163L231,163A1,1 0,0 1,230 164L207,164A1,1 0,0 1,206 163L206,163A1,1 0,0 1,207 162z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M207,139L271,139A1,1 0,0 1,272 140L272,141A1,1 0,0 1,271 142L207,142A1,1 0,0 1,206 141L206,140A1,1 0,0 1,207 139z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M207,129L271,129A1,1 0,0 1,272 130L272,131A1,1 0,0 1,271 132L207,132A1,1 0,0 1,206 131L206,130A1,1 0,0 1,207 129z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M190,119L254,119A1,1 0,0 1,255 120L255,121A1,1 0,0 1,254 122L190,122A1,1 0,0 1,189 121L189,120A1,1 0,0 1,190 119z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M179,108L243,108A1,1 0,0 1,244 109L244,110A1,1 0,0 1,243 111L179,111A1,1 0,0 1,178 110L178,109A1,1 0,0 1,179 108z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M167,97L201,97A1,1 0,0 1,202 98L202,99A1,1 0,0 1,201 100L167,100A1,1 0,0 1,166 99L166,98A1,1 0,0 1,167 97z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M222,83L240.5,83A1,1 0,0 1,241.5 84L241.5,84A1,1 0,0 1,240.5 85L222,85A1,1 0,0 1,221 84L221,84A1,1 0,0 1,222 83z\"\n      android:fillColor=\"#243784\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M222,78L244.6,78A1,1 0,0 1,245.6 79L245.6,79A1,1 0,0 1,244.6 80L222,80A1,1 0,0 1,221 79L221,79A1,1 0,0 1,222 78z\"\n      android:fillColor=\"#ff0000\"\n      android:fillType=\"evenOdd\"/>\n  <path\n      android:pathData=\"M181.542,87.542c-1.547,-2.316 -2.764,-3.77 -3.65,-4.36 -0.973,-0.65 -2.604,-0.964 -4.892,-0.944h0,-15.409 0v6.88c0,0.699 -0.562,1.265 -1.255,1.265 -0.346,0 -0.677,-0.144 -0.914,-0.398l-12.08,-12.927c-0.456,-0.487 -0.456,-1.246 0,-1.733l12.08,-12.927c0.475,-0.509 1.27,-0.533 1.774,-0.054 0.252,0.238 0.395,0.571 0.395,0.92v6.974H173c4.97,0 9,4.03 9,9v8.165c0,0.138 -0.112,0.25 -0.25,0.25 -0.084,0 -0.162,-0.041 -0.208,-0.11zM145.458,150.84c1.547,2.317 2.764,3.77 3.65,4.361 0.973,0.649 2.604,0.963 4.892,0.944h15.409v-6.881c0,-0.698 0.562,-1.264 1.255,-1.264 0.346,0 0.677,0.144 0.914,0.398l12.08,12.927c0.456,0.487 0.456,1.246 0,1.733l-12.08,12.927c-0.475,0.508 -1.27,0.533 -1.774,0.054 -0.252,-0.239 -0.395,-0.572 -0.395,-0.92v-6.974H154c-4.97,0 -9,-4.03 -9,-9v-8.165c0,-0.139 0.112,-0.25 0.25,-0.25 0.084,0 0.162,0.041 0.208,0.11z\"\n      android:strokeWidth=\"2\"\n      android:fillColor=\"#00000000\"\n      android:strokeColor=\"#243784\"\n      android:fillType=\"evenOdd\"\n      android:strokeLineCap=\"round\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_transfer_code_waiting_phone.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"74dp\"\n\tandroid:height=\"146dp\"\n\tandroid:viewportWidth=\"74\"\n\tandroid:viewportHeight=\"146\">\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M7,1L67,1C70.314,1 73,3.686 73,7L73,139C73,142.314 70.314,145 67,145L7,145C3.686,145 1,142.314 1,139L1,7C1,3.686 3.686,1 7,1Z\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#203176\" />\n\t<path\n\t\tandroid:fillColor=\"#203176\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M19,1L55,1L55,6C55,7.657 53.657,9 52,9L22,9C20.343,9 19,7.657 19,6L19,1L19,1Z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#00000000\" />\n\t<path\n\t\tandroid:fillColor=\"#FFFFFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M37,73m-31,0a31,31 0,1 1,62 0a31,31 0,1 1,-62 0\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#00000000\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"nonZero\"\n\t\tandroid:pathData=\"M47.49,72L47.49,79.004C47.49,79.074 47.518,79.14 47.565,79.185C47.637,79.254 47.738,79.263 47.824,79.205L47.873,79.163L59.435,67.068C59.504,66.992 59.518,66.879 59.485,66.797L59.452,66.743L47.875,54.833C47.833,54.788 47.778,54.764 47.721,54.764C47.624,54.764 47.537,54.836 47.511,54.939L47.503,55.004L47.503,62.004L30.5,62C29.948,62 29.5,61.552 29.5,61C29.5,60.487 29.886,60.064 30.383,60.007L30.5,60L45.502,60.003L45.503,55.004C45.503,53.825 46.408,52.852 47.563,52.77L47.721,52.764C48.275,52.764 48.806,52.973 49.2,53.332L49.326,53.457L60.903,65.367C61.659,66.185 61.697,67.432 61.007,68.303L60.892,68.437L49.33,80.533C48.489,81.442 47.075,81.486 46.181,80.629C45.783,80.248 45.541,79.734 45.497,79.187L45.49,79.004L45.489,74L42.71,74L26.496,74.004L26.496,67.004L26.488,66.939C26.461,66.836 26.374,66.764 26.277,66.764C26.24,66.764 26.202,66.775 26.17,66.795L26.124,66.833L14.547,78.743L14.513,78.797C14.487,78.862 14.491,78.948 14.529,79.018L14.564,79.068L26.126,91.163L26.175,91.205C26.261,91.263 26.362,91.254 26.434,91.185C26.465,91.155 26.488,91.116 26.5,91.072L26.509,91.004L26.509,84L43.499,84.001L43.615,84.008C44.074,84.061 44.439,84.425 44.492,84.885L44.499,85.001L44.492,85.118C44.439,85.577 44.074,85.941 43.615,85.994L43.499,86.001L28.51,86L28.509,91.004L28.502,91.187C28.457,91.734 28.215,92.248 27.817,92.629C26.966,93.445 25.643,93.444 24.793,92.657L24.669,92.533L13.107,80.437L12.992,80.303C12.34,79.48 12.337,78.323 12.976,77.507L13.096,77.367L24.673,65.457L24.799,65.332C25.149,65.013 25.607,64.812 26.093,64.772L26.277,64.764L26.436,64.77C27.538,64.848 28.413,65.738 28.49,66.845L28.496,67.004L28.497,72.003L41.833,72L47.49,72Z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#00000000\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_transfer_code_waiting_ripple.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"62dp\"\n    android:height=\"62dp\"\n    android:viewportWidth=\"62\"\n    android:viewportHeight=\"62\">\n  <path\n      android:pathData=\"M31,31m-31,0a31,31 0,1 1,62 0a31,31 0,1 1,-62 0\"\n      android:strokeWidth=\"1\"\n      android:fillColor=\"#243784\"\n      android:fillAlpha=\"0.4\"\n      android:fillType=\"evenOdd\"\n      android:strokeColor=\"#00000000\"/>\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_transfer_code_waiting_shadow.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"72dp\"\n\tandroid:height=\"12dp\"\n\tandroid:viewportWidth=\"72\"\n\tandroid:viewportHeight=\"12\">\n\t<path\n\t\tandroid:fillColor=\"#EBECF0\"\n\t\tandroid:pathData=\"M0,6a36,6 0,1 0,72 0a36,6 0,1 0,-72 0z\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/illu_updateboarding_certificate_light.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:width=\"315dp\"\n\tandroid:height=\"200dp\"\n\tandroid:viewportWidth=\"315\"\n\tandroid:viewportHeight=\"200\">\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"nonZero\"\n\t\tandroid:pathData=\"M157.5,100.5m-90.5,0a90.5,90.5 0,1 1,181 0a90.5,90.5 0,1 1,-181 0\" />\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M129,34.118h54.597c3.313,0 6,2.686 6,6v121.193c0,3.314 -2.687,6 -6,6L129,167.311c-3.314,0 -6,-2.686 -6,-6L123,40.118c0,-3.314 2.686,-6 6,-6z\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#203176\" />\n\t<path\n\t\tandroid:fillColor=\"#203176\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M139.776,34.118h33.551v4.829c0,1.656 -1.343,3 -3,3L142.776,41.947c-1.657,0 -3,-1.344 -3,-3L139.776,34.118z\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M130.309,58.177L182.287,58.177 182.287,97.973 182.287,116.195 179.85,118.276 182.287,120.358 182.287,138.58 130.309,138.58 130.309,120.358 132.745,118.276 130.309,116.195 130.309,97.973z\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#243784\"\n\t\tandroid:strokeLineJoin=\"round\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M154.809,85.655v16.378L138.431,102.033L138.431,85.655L154.809,85.655zM162.254,96.077v2.976l11.911,0.001v2.978h-14.89v-5.955h2.979zM151.829,88.632L141.408,88.632v10.422h10.422L151.83,88.632zM162.253,85.655v4.466h2.977v-4.466h8.934L174.164,96.077h-2.978l-0.001,-7.446h-2.978l0.002,4.468h-8.934v-7.445h2.978zM148.853,91.611L148.853,96.077h-4.468v-4.467h4.467zM154.809,66.299L154.809,82.677L138.431,82.677L138.431,66.299L154.809,66.299zM174.165,66.299L174.165,82.677L157.787,82.677L157.787,66.299h16.378zM151.83,69.276L141.408,69.276v10.422h10.422L151.83,69.276zM171.186,69.276L160.764,69.276v10.422h10.422L171.186,69.276zM148.853,72.254v4.467h-4.467v-4.467h4.467zM168.21,72.254v4.467h-4.467v-4.467L168.209,72.254z\" />\n\t<path\n\t\tandroid:fillColor=\"#BDC3DA\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M139.243,124.774L173.354,124.774A0.812,0.812 0,0 1,174.166 125.586L174.166,125.586A0.812,0.812 0,0 1,173.354 126.398L139.243,126.398A0.812,0.812 0,0 1,138.431 125.586L138.431,125.586A0.812,0.812 0,0 1,139.243 124.774z\" />\n\t<path\n\t\tandroid:fillColor=\"#BDC3DA\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M139.243,128.834L164.42,128.834A0.812,0.812 0,0 1,165.232 129.646L165.232,129.646A0.812,0.812 0,0 1,164.42 130.458L139.243,130.458A0.812,0.812 0,0 1,138.431 129.646L138.431,129.646A0.812,0.812 0,0 1,139.243 128.834z\" />\n\t<path\n\t\tandroid:fillColor=\"#F4F5F9\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M114,164m-27,0a27,27 0,1 1,54 0a27,27 0,1 1,-54 0\" />\n\t<path\n\t\tandroid:fillColor=\"#FFF\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M114,164m-24,0a24,24 0,1 1,48 0a24,24 0,1 1,-48 0\"\n\t\tandroid:strokeWidth=\"2\"\n\t\tandroid:strokeColor=\"#243784\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M114,155.5m-2.5,0a2.5,2.5 0,1 1,5 0a2.5,2.5 0,1 1,-5 0\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M112.5,159L115.5,159A0.5,0.5 0,0 1,116 159.5L116,173.5A0.5,0.5 0,0 1,115.5 174L112.5,174A0.5,0.5 0,0 1,112 173.5L112,159.5A0.5,0.5 0,0 1,112.5 159z\" />\n\t<path\n\t\tandroid:fillColor=\"#243784\"\n\t\tandroid:fillType=\"evenOdd\"\n\t\tandroid:pathData=\"M110,159L115,159L115,162L110,162zM110,171L118,171L118,174L110,174z\" />\n</vector>\n"
  },
  {
    "path": "wallet/src/main/res/drawable/oval_horizontal.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:shape=\"rectangle\">\n\t<solid android:color=\"@color/white\" />\n\t<corners android:radius=\"20dp\" />\n\t<stroke\n\t\tandroid:width=\"2dp\"\n\t\tandroid:color=\"@color/grey_light\" />\n</shape>"
  },
  {
    "path": "wallet/src/main/res/drawable-v24/ic_launcher_foreground.xml",
    "content": "<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:aapt=\"http://schemas.android.com/aapt\"\n\tandroid:width=\"108dp\"\n\tandroid:height=\"108dp\"\n\tandroid:viewportWidth=\"108\"\n\tandroid:viewportHeight=\"108\">\n\t<path android:pathData=\"M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z\">\n\t\t<aapt:attr name=\"android:fillColor\">\n\t\t\t<gradient\n\t\t\t\tandroid:endX=\"85.84757\"\n\t\t\t\tandroid:endY=\"92.4963\"\n\t\t\t\tandroid:startX=\"42.9492\"\n\t\t\t\tandroid:startY=\"49.59793\"\n\t\t\t\tandroid:type=\"linear\">\n\t\t\t\t<item\n\t\t\t\t\tandroid:color=\"#44000000\"\n\t\t\t\t\tandroid:offset=\"0.0\" />\n\t\t\t\t<item\n\t\t\t\t\tandroid:color=\"#00000000\"\n\t\t\t\t\tandroid:offset=\"1.0\" />\n\t\t\t</gradient>\n\t\t</aapt:attr>\n\t</path>\n\t<path\n\t\tandroid:fillColor=\"#FFFFFF\"\n\t\tandroid:fillType=\"nonZero\"\n\t\tandroid:pathData=\"M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z\"\n\t\tandroid:strokeWidth=\"1\"\n\t\tandroid:strokeColor=\"#00000000\" />\n</vector>"
  },
  {
    "path": "wallet/src/main/res/layout/activity_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\">\n\n\t<androidx.fragment.app.FragmentContainerView\n\t\tandroid:id=\"@+id/fragment_container\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\" />\n\n\t<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout\n\t\tandroid:id=\"@+id/main_error_view\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:background=\"@color/black_60\"\n\t\tandroid:clickable=\"true\"\n\t\tapp:applyWindowInsets=\"all\"\n\t\tandroid:visibility=\"gone\"\n\t\ttools:visibility=\"visible\">\n\n\t\t<include\n\t\t\tlayout=\"@layout/item_error_status\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"/>\n\t</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>\n</FrameLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/dialog_fragment_certificate_banner_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"vertical\"\n\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"center\"\n\t\ttools:text=\"@string/wallet_refresh_button_info_title\" />\n\n\t<ScrollView\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:layout_weight=\"1\"\n\t\tandroid:overScrollMode=\"never\">\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:padding=\"@dimen/spacing_large\">\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/text1\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_popup_text\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/fatText\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_large\"\n\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_popup_bold_text\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/text2\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_popup_text\" />\n\n\t\t\t<com.google.android.material.button.MaterialButton\n\t\t\t\tandroid:id=\"@+id/learnMoreButton\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\t\t\tandroid:paddingStart=\"0dp\"\n\t\t\t\tandroid:textAllCaps=\"false\"\n\t\t\t\tapp:icon=\"@drawable/ic_link_external\"\n\t\t\t\tapp:iconPadding=\"@dimen/spacing_medium\"\n\t\t\t\tapp:iconTint=\"@color/blue\"\n\t\t\t\ttools:ignore=\"RtlSymmetry\"\n\t\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_popup_link_text\" />\n\n\t\t</LinearLayout>\n\t</ScrollView>\n\n\t<Button\n\t\tandroid:id=\"@+id/dialogCloseButton\"\n\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_larger\"\n\t\tandroid:text=\"@string/close_button\" />\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/dialog_fragment_mode_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ScrollView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:overScrollMode=\"never\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"center_horizontal\"\n\t\tandroid:orientation=\"vertical\"\n\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/mode_info_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\ttools:text=\"Infos\" />\n\n\t\t<LinearLayout\n\t\t\tandroid:id=\"@+id/mode_info_list\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:orientation=\"vertical\">\n\t\t</LinearLayout>\n\n\t\t<Button\n\t\t\tandroid:id=\"@+id/info_dialog_close_button\"\n\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:text=\"@string/close_button\" />\n\n\t</LinearLayout>\n</ScrollView>"
  },
  {
    "path": "wallet/src/main/res/layout/dialog_fragment_refresh_button_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"vertical\"\n\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"center\"\n\t\ttools:text=\"@string/wallet_refresh_button_info_title\" />\n\n\t<ScrollView\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:layout_weight=\"1\"\n\t\tandroid:overScrollMode=\"never\">\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:padding=\"@dimen/spacing_larger\">\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/text1\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\ttools:text=\"@string/wallet_refresh_button_info_text_1\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/text2\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\ttools:text=\"@string/wallet_refresh_button_info_text_2\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/fatTitle\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\ttools:text=\"@string/wallet_refresh_button_info_fat_title_3\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/text3\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\ttools:text=\"@string/wallet_refresh_button_info_text_3\" />\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/covidCheckAppButton\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium\"\n\t\t\t\tandroid:background=\"?android:attr/selectableItemBackground\"\n\t\t\t\tandroid:contentDescription=\"@string/verifier_app_title\"\n\t\t\t\tandroid:src=\"@drawable/ic_covid_check_app\" />\n\n\t\t\t<com.google.android.material.button.MaterialButton\n\t\t\t\tandroid:id=\"@+id/learnMoreButton\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\t\t\tandroid:paddingStart=\"0dp\"\n\t\t\t\tandroid:textAllCaps=\"false\"\n\t\t\t\tapp:icon=\"@drawable/ic_link_external\"\n\t\t\t\tapp:iconPadding=\"@dimen/spacing_medium\"\n\t\t\t\tapp:iconTint=\"@color/blue\"\n\t\t\t\ttools:ignore=\"RtlSymmetry\"\n\t\t\t\ttools:text=\"@string/wallet_refresh_button_info_link_text\" />\n\n\t\t</LinearLayout>\n\t</ScrollView>\n\n\t<Button\n\t\tandroid:id=\"@+id/dialogCloseButton\"\n\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_larger\"\n\t\tandroid:text=\"@string/close_button\" />\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificate_add.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/certificate_add_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_scanner_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.core.widget.NestedScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:background=\"@color/background_light\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:padding=\"@dimen/spacing_very_large\">\n\n\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\tandroid:id=\"@+id/certificate_already_exists_info\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_already_exists_info_text\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\tapp:backgroundTint=\"@color/white\"\n\t\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_already_exists\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_already_exists_info_text\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_already_exists_info_text\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_info_blue\" />\n\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"80dp\"\n\t\t\t\t\tandroid:layout_height=\"80dp\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/ic_qrcode_add\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_add_name\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\ttools:text=\"Muster Marta\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_add_standardized_name_label\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Code\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\ttools:text=\"STUDER&lt;&lt;MARTINA\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_add_birthdate\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\ttools:text=\"21.11.1966\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"4dp\"\n\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:background=\"@drawable/line_dashed_grey\"/>\n\n\t\t\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\t\t\tandroid:id=\"@+id/certificate_add_data_recycler_view\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:overScrollMode=\"never\"\n\t\t\t\t\tandroid:scrollbars=\"none\"\n\t\t\t\t\ttools:listitem=\"@layout/item_detail_divider\" />\n\n\t\t\t</LinearLayout>\n\n\t\t</androidx.core.widget.NestedScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/background_light\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:padding=\"@dimen/spacing_large\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/certificate_add_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/ok_button\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/certificate_add_retry\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Blue\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\tandroid:padding=\"@dimen/spacing_medium_small\"\n\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\tandroid:text=\"@string/wallet_scan_again\" />\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificate_detail.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/certificate_detail_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_certificate\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<androidx.core.widget.NestedScrollView\n\t\t\t\tandroid:id=\"@+id/scrollview\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t<include\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_banners\"\n\t\t\t\t\t\tlayout=\"@layout/partial_certificate_detail_banners\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\ttools:visibility=\"gone\" />\n\n\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_qr_code\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\t\t\t\ttools:src=\"@drawable/ic_qrcode_add\" />\n\n\t\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_qr_code_status_group\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_qr_code_color\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:alpha=\"0.9\"\n\t\t\t\t\t\t\t\tandroid:background=\"@color/grey\"\n\t\t\t\t\t\t\t\tapp:backgroundTint=\"@android:color/transparent\"\n\t\t\t\t\t\t\t\ttools:backgroundTint=\"@color/grey\" />\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_qr_code_status_icon\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_large\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_large\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\t\ttools:src=\"@drawable/ic_check_large\"\n\t\t\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t\t\t<ProgressBar\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_qr_code_loading\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_large\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_large\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:indeterminateTint=\"@color/white\" />\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_refresh_mode_validity\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"bottom|center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginBottom=\"47dp\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\" />\n\n\t\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_name\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\ttools:text=\"Muster Marta\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_standardized_name_label\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Code\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\ttools:text=\"STUDER&lt;&lt;MARTINA\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_birthdate\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\ttools:text=\"21.11.1966\" />\n\n\t\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_huger\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\t\ttools:text=\"@string/verifier_verify_success_info\" />\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_red_border\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\t\tandroid:src=\"@drawable/bg_certificate_bubble_bundesrot\"\n\t\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/certificate_detail_info\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/certificate_detail_info\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"@id/certificate_detail_info\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_detail_info\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_verification_status\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/certificate_detail_info\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_detail_info\"\n\t\t\t\t\t\t\ttools:text=\"@string/verifier_verify_success_title\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_detail_info\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_detail_info\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_status_icon\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_info_blue\" />\n\n\t\t\t\t\t\t\t<ProgressBar\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_status_loading\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\t\t\t\t\tandroid:visibility=\"gone\" />\n\t\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_description_group\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_description\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\ttools:text=\"@string/wallet_offline_description\" />\n\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_group\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\">\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_left_group\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_left_text\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_valid_until\"\n\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_left_bold\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\t\t\t\t\t\ttools:text=\"01.01.2022\" />\n\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_right_group\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_right_text\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"end\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_valid_until\"\n\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_validity_right_bold\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"end\"\n\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\t\t\t\t\t\ttools:text=\"01.01.2022\" />\n\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_error_code\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\ttools:text=\"Error-Code\"\n\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/certificateForeignValidityButton\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_bordered_button\"\n\t\t\t\t\t\tandroid:clickable=\"true\"\n\t\t\t\t\t\tandroid:focusable=\"true\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:src=\"@drawable/ic_travel\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center_vertical\"\n\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_button\" />\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_margin=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:src=\"@drawable/ic_arrow_forward\" />\n\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<include\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_modes\"\n\t\t\t\t\t\tlayout=\"@layout/item_detail_modes_list\" />\n\n\t\t\t\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_data_recycler_view\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\tandroid:overScrollMode=\"never\"\n\t\t\t\t\t\tandroid:scrollbars=\"none\"\n\t\t\t\t\t\tapp:layoutManager=\"androidx.recyclerview.widget.LinearLayoutManager\"\n\t\t\t\t\t\ttools:itemCount=\"3\"\n\t\t\t\t\t\ttools:listitem=\"@layout/item_detail_divider\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_note\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_detail_note\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_detail_note\" />\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"1dp\"\n\t\t\t\t\t\tandroid:background=\"@color/blueish\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_convert_light_button\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"?android:attr/selectableItemBackground\"\n\t\t\t\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\t\t\t\tandroid:minHeight=\"56dp\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\t\t\tandroid:duplicateParentState=\"true\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_small\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_convert_light_label\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\t\tandroid:drawablePadding=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:duplicateParentState=\"true\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center|start\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_detail_certificate_light_button\"\n\t\t\t\t\t\t\t\tandroid:textColor=\"@color/text_color_button\"\n\t\t\t\t\t\t\t\tapp:drawableStartCompat=\"@drawable/ic_certificate_light\"\n\t\t\t\t\t\t\t\tapp:drawableTint=\"@color/text_color_button\" />\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_convert_light_arrow\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_arrow_forward\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"1dp\"\n\t\t\t\t\t\tandroid:background=\"@color/blueish\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_convert_pdf_button\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"?android:attr/selectableItemBackground\"\n\t\t\t\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\t\t\t\tandroid:minHeight=\"56dp\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\t\t\tandroid:duplicateParentState=\"true\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_small\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_convert_pdf_label\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\t\tandroid:drawablePadding=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:duplicateParentState=\"true\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center|start\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_detail_export_button\"\n\t\t\t\t\t\t\t\tandroid:textColor=\"@color/text_color_button\"\n\t\t\t\t\t\t\t\tapp:drawableStartCompat=\"@drawable/ic_pdf\"\n\t\t\t\t\t\t\t\tapp:drawableTint=\"@color/text_color_button\" />\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_convert_pdf_arrow\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_arrow_forward\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"1dp\"\n\t\t\t\t\t\tandroid:background=\"@color/blueish\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_vaccination_appointment_button\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"?android:attr/selectableItemBackground\"\n\t\t\t\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\t\t\t\tandroid:minHeight=\"56dp\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\t\t\t\tandroid:duplicateParentState=\"true\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_small\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_vaccination_appointment_label\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\t\tandroid:drawablePadding=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:duplicateParentState=\"true\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center|start\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/vaccination_information_button_in_certificate\"\n\t\t\t\t\t\t\t\tandroid:textColor=\"@color/text_color_button\"\n\t\t\t\t\t\t\t\tapp:drawableStartCompat=\"@drawable/ic_info_outline\"\n\t\t\t\t\t\t\t\tapp:drawableTint=\"@color/text_color_button\" />\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_vaccination_appointment_arrow\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_arrow_forward\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"@color/blueish\"\n\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_huger\"\n\t\t\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_button_delete\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button.Red\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:text=\"@string/delete_button\" />\n\n\t\t\t\t\t</FrameLayout>\n\t\t\t\t</LinearLayout>\n\t\t\t</androidx.core.widget.NestedScrollView>\n\t\t</FrameLayout>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificate_light_conversion.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/covid_certificate_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_loading_indicator\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_content\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<ScrollView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_intro_layout\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_title\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_title\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_text_1\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_info\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_text_2\" />\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_title\" />\n\n\t\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_bundwappen_big\" />\n\n\t\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_1\" />\n\t\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_privacy\"\n\t\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_2\" />\n\t\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_timelapse\"\n\t\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_hour_info\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_3\" />\n\t\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_cloud\"\n\t\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_4\" />\n\t\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_exchange\"\n\t\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_5\" />\n\t\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_activate_button\"\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_activate_button\" />\n\t\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_error_layout\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_error_title\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_activation_error\" />\n\n\t\t\t\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_huger\">\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_status_text\"\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/orangeish\"\n\t\t\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\t\t\t\ttools:text=\"@string/wallet_certificate_light_detail_activation_network_error_title\" />\n\n\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_status_icon\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"32dp\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"32dp\"\n\t\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_no_connection\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_light_conversion_status_text\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_light_conversion_status_text\" />\n\n\t\t\t\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_error_code\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\t\t\ttools:text=\"Error-Code\" />\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_conversion_retry_button\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/error_action_retry\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\t\t\t\t</ScrollView>\n\n\t\t\t</LinearLayout>\n\t\t</FrameLayout>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificate_light_detail.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_certificate_light_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_qr_code\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\t\ttools:src=\"@drawable/ic_qrcode_add\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_validity\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized.Blue\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\tandroid:fontFeatureSettings=\"tnum\"\n\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:paddingVertical=\"3dp\"\n\t\t\t\t\ttools:text=\"47:59:59\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_name\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\ttools:text=\"Muster Marta\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_birthdate\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\ttools:text=\"21.11.1966\" />\n\n\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_verification_status\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\ttools:text=\"@string/verifier_verify_success_certificate_light_info\" />\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_detail_info_red_border\"\n\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"@id/certificate_light_detail_verification_status\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/certificate_light_detail_verification_status\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_light_detail_verification_status\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/certificate_light_detail_verification_status\"\n\t\t\t\t\t\tandroid:src=\"@drawable/bg_certificate_bubble_bundesrot\"/>\n\n\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_light_detail_verification_status\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_light_detail_verification_status\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_status_icon\"\n\t\t\t\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\tandroid:scaleType=\"centerInside\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_info_blue\" />\n\n\t\t\t\t\t\t<ProgressBar\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_status_loading\"\n\t\t\t\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\" />\n\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_title\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_bundwappen_big\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_1\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_privacy\"\n\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_2\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_timelapse\"\n\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_hour_info\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_3\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_cloud\"\n\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_4\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_exchange\"\n\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_summary_5\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tandroid:id=\"@+id/certificate_light_detail_deactivate_button\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button.Red\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_light_detail_deactivate_button\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificate_light_pager.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:clipChildren=\"false\"\n\tandroid:clipToPadding=\"false\"\n\tandroid:padding=\"@dimen/spacing_small\"\n\ttools:background=\"@color/greyish\"\n\ttools:layout_height=\"500dp\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/certificate_page_card\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:clipChildren=\"false\"\n\t\tandroid:clipToPadding=\"false\"\n\t\tandroid:foreground=\"@drawable/ripple_rounded_rect\"\n\t\ttools:background=\"@color/white\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\tandroid:text=\"@string/wallet_certificate_light_title\"\n\t\t\tapp:layout_constrainedWidth=\"true\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/certificate_page_qr_code\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_huger\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_light_page_validity\"\n\t\t\tapp:layout_constraintDimensionRatio=\"H1:1\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/certificate_page_title\"\n\t\t\tapp:layout_constraintVertical_bias=\"0\"\n\t\t\ttools:src=\"@drawable/ic_qrcode\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_light_page_validity\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized.Blue\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\tandroid:fontFeatureSettings=\"tnum\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_small\"\n\t\t\tandroid:paddingVertical=\"3dp\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_page_name\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/certificate_page_qr_code\"\n\t\t\ttools:text=\"47:59:59\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_name\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\tandroid:gravity=\"center_horizontal|bottom\"\n\t\t\tapp:autoSizeMaxTextSize=\"@dimen/text_size_large\"\n\t\t\tapp:autoSizeMinTextSize=\"@dimen/text_size_small\"\n\t\t\tapp:autoSizeTextType=\"uniform\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_page_birthdate\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/certificate_light_page_validity\"\n\t\t\tapp:layout_constraintVertical_bias=\"1\"\n\t\t\ttools:text=\"Muster Marta\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_birthdate\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_page_status_info\"\n\t\t\ttools:text=\"21.11.1966\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_status_info\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\tandroid:minLines=\"2\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\ttools:text=\"@string/verifier_verify_success_certificate_light_info\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/certificate_page_status_info_red_border\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"@id/certificate_page_status_info\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/certificate_page_status_info\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_page_status_info\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/certificate_page_status_info\"\n\t\t\tandroid:src=\"@drawable/bg_certificate_bubble_bundesrot\"/>\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\tandroid:padding=\"@dimen/spacing_very_small\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_page_status_info\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_page_status_info\">\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/certificate_page_status_icon\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_info_blue\" />\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/certificate_page_status_loading\"\n\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\tandroid:visibility=\"gone\" />\n\t\t</FrameLayout>\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n</FrameLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificate_pager.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:clipChildren=\"false\"\n\tandroid:clipToPadding=\"false\"\n\tandroid:padding=\"@dimen/spacing_small\"\n\ttools:background=\"@color/greyish\"\n\ttools:layout_height=\"500dp\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/certificate_page_card\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:clipChildren=\"false\"\n\t\tandroid:clipToPadding=\"false\"\n\t\tandroid:foreground=\"@drawable/ripple_rounded_rect\"\n\t\ttools:background=\"@color/white\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\tandroid:lines=\"1\"\n\t\t\tandroid:text=\"@string/covid_certificate_title\"\n\t\t\tapp:autoSizeMaxTextSize=\"@dimen/text_size_normal\"\n\t\t\tapp:autoSizeMinTextSize=\"@dimen/text_size_small\"\n\t\t\tapp:autoSizeTextType=\"uniform\"\n\t\t\tapp:layout_constrainedWidth=\"true\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\tandroid:id=\"@+id/certificate_page_renewal_banner\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_margin=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\t\ttools:backgroundTint=\"@color/redish\"\n\t\t\tandroid:clickable=\"true\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:focusable=\"true\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constraintHeight_default=\"wrap\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\ttools:visibility=\"visible\">\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/certificate_page_renewal_banner_title\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_medium\"\n\t\t\t\tandroid:ellipsize=\"end\"\n\t\t\t\tandroid:maxLines=\"1\"\n\t\t\t\tandroid:text=\"@string/wallet_certificate_renewal_required_bubble_title\"\n\t\t\t\tapp:layout_constraintEnd_toStartOf=\"@+id/certificate_page_renewal_banner_dismiss\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/certificate_page_renewal_banner_dismiss\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:background=\"?android:attr/selectableItemBackgroundBorderless\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@+id/certificate_page_renewal_banner_title\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"@+id/certificate_page_renewal_banner_title\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_close\"\n\t\t\t\tapp:tint=\"@color/black\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\tandroid:id=\"@+id/certificate_page_banner\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_margin=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\t\tandroid:clickable=\"true\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:focusable=\"true\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constraintHeight_default=\"wrap\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\ttools:visibility=\"gone\">\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/certificate_page_banner_title\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_medium\"\n\t\t\t\tandroid:ellipsize=\"end\"\n\t\t\t\tandroid:maxLines=\"1\"\n\t\t\t\tapp:layout_constraintEnd_toStartOf=\"@+id/certificate_page_banner_dismiss\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_homescreen_title\" />\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/certificate_page_banner_dismiss\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:background=\"?android:attr/selectableItemBackgroundBorderless\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@+id/certificate_page_banner_title\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"@+id/certificate_page_banner_title\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_close\"\n\t\t\t\tapp:tint=\"@color/black\" />\n\n\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t<androidx.constraintlayout.widget.Barrier\n\t\t\tandroid:id=\"@+id/transfer_code_page_barrier\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:barrierDirection=\"bottom\"\n\t\t\tapp:constraint_referenced_ids=\"certificate_page_title,certificate_page_banner,certificate_page_renewal_banner\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/certificate_page_qr_code\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_larger\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_page_name\"\n\t\t\tapp:layout_constraintDimensionRatio=\"H1:1\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/transfer_code_page_barrier\"\n\t\t\tapp:layout_constraintVertical_bias=\"0\"\n\t\t\ttools:src=\"@drawable/ic_qrcode\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_name\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:gravity=\"center_horizontal|bottom\"\n\t\t\tapp:autoSizeMaxTextSize=\"@dimen/text_size_large\"\n\t\t\tapp:autoSizeMinTextSize=\"@dimen/text_size_small\"\n\t\t\tapp:autoSizeTextType=\"uniform\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_page_birthdate\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/certificate_page_qr_code\"\n\t\t\tapp:layout_constraintVertical_bias=\"1\"\n\t\t\ttools:text=\"Muster Marta\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_birthdate\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/certificate_page_info\"\n\t\t\ttools:text=\"21.11.1966\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_page_info\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\tandroid:minLines=\"2\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\ttools:text=\"@string/verifier_verify_success_info\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/certificate_page_info_red_border\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:src=\"@drawable/bg_certificate_bubble_bundesrot\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/certificate_page_info\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/certificate_page_info\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"@id/certificate_page_info\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_page_info\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\tandroid:padding=\"@dimen/spacing_very_small\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_page_info\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_page_info\">\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/certificate_page_status_icon\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_info_blue\" />\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/certificate_page_status_loading\"\n\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\tandroid:visibility=\"gone\" />\n\t\t</FrameLayout>\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n</FrameLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_certificates_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/certificates_overview_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_certificate_list_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\tandroid:id=\"@+id/certificates_overview_recycler_view\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:background=\"@color/background_light\"\n\t\t\tandroid:scrollbars=\"vertical\"\n\t\t\tapp:layoutManager=\"androidx.recyclerview.widget.LinearLayoutManager\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/certificates_overview_toolbar\"\n\t\t\ttools:listitem=\"@layout/item_certificate_list\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:id=\"@+id/certificates_overview_loading_group\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:background=\"@color/white_50\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/certificates_overview_toolbar\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\" />\n\n\t\t</FrameLayout>\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_foreign_validity.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_certificate\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/loadingIndicator\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<androidx.core.widget.NestedScrollView\n\t\t\t\tandroid:id=\"@+id/scrollView\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t\t<FrameLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\">\n\n\t\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\t\tandroid:id=\"@+id/content\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/title\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_title\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/subtitle\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_subtitle\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/title\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityFormContainer\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_rect_rounded_small\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/subtitle\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityFormTitle\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_form_title\"\n\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@+id/foreignValidityFormBackground\" />\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityCountryContainer\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"48dp\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_rect_rounded_small_blue_ripple\"\n\t\t\t\t\t\t\t\tandroid:backgroundTint=\"@color/white\"\n\t\t\t\t\t\t\t\tandroid:clickable=\"true\"\n\t\t\t\t\t\t\t\tandroid:focusable=\"true\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityFormTitle\">\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_vertical\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_country_label\" />\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityCountry\"\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\t\t\tandroid:gravity=\"end\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_country_empty_label\"\n\t\t\t\t\t\t\t\t\tandroid:textColor=\"@color/grey\" />\n\n\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityDateContainer\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"48dp\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_rect_rounded_small_blue_ripple\"\n\t\t\t\t\t\t\t\tandroid:backgroundTint=\"@color/white\"\n\t\t\t\t\t\t\t\tandroid:clickable=\"true\"\n\t\t\t\t\t\t\t\tandroid:focusable=\"true\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center_vertical\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityCountryContainer\">\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_vertical\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_date_label\" />\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityDateTime\"\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\t\t\tandroid:gravity=\"end\"\n\t\t\t\t\t\t\t\t\ttools:text=\"31.03.2022, 12:34\" />\n\n\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityDateTimeError\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_date_in_past_error\"\n\t\t\t\t\t\t\t\tandroid:textColor=\"@color/red\"\n\t\t\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\t\ttools:visibility=\"visible\" />\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityVerificationState\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble_ripple\"\n\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityFormContainer\"\n\t\t\t\t\t\t\ttools:text=\"@string/wallet_foreign_rules_check_state_empty\" />\n\n\t\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/foreignValidityVerificationState\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityFormContainer\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityVerificationStateIcon\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_info_blue\" />\n\n\t\t\t\t\t\t\t<ProgressBar\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityVerificationStateProgress\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\t\t\t\t\tandroid:visibility=\"gone\" />\n\t\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityErrorCode\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityVerificationState\"\n\t\t\t\t\t\t\ttools:text=\"Error-Code\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t\t<androidx.constraintlayout.widget.Group\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityHintsGroup\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\tapp:constraint_referenced_ids=\"foreignValidityHintsTitle,foreignValidityHintsContainer\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityHintsTitle\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_hints_title\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityErrorCode\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityHintsContainer\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityHintsTitle\" />\n\n\t\t\t\t\t\t<androidx.constraintlayout.widget.Group\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityMoreInfosGroup\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\tapp:constraint_referenced_ids=\"foreignValidityMoreInfosLabel,foreignValidityMoreInfosButton\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityMoreInfosLabel\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_hints_more_info_label\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityHintsContainer\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityMoreInfosButton\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityMoreInfosLabel\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/foreignValidityMoreInfosText\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_vertical\"\n\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\t\ttools:text=\"reopen.europa.eu\" />\n\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/errorContainer\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\ttools:visibility=\"gone\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_foreign_rules_check_error_title\" />\n\n\t\t\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_huger\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/errorStatusMessage\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/orangeish\"\n\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\t\t\ttools:text=\"@string/wallet_foreign_rules_check_network_error_text\" />\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/errorStatusIcon\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"32dp\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"32dp\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/errorStatusMessage\"\n\t\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/errorStatusMessage\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_no_connection\" />\n\n\t\t\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/errorCode\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\t\ttools:text=\"Error-Code\" />\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tandroid:id=\"@+id/errorRetryButton\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\tandroid:text=\"@string/error_action_retry\" />\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t</FrameLayout>\n\t\t\t</androidx.core.widget.NestedScrollView>\n\t\t</FrameLayout>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_home.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/homescreen_constraint_layout\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:background=\"@color/blue\">\n\n\t\t<include\n\t\t\tandroid:id=\"@+id/homescreen_header_empty\"\n\t\t\tlayout=\"@layout/item_header\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t<include\n\t\t\tandroid:id=\"@+id/homescreen_header_not_empty\"\n\t\t\tlayout=\"@layout/item_header_not_empty\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t<androidx.viewpager2.widget.ViewPager2\n\t\t\tandroid:id=\"@+id/homescreen_certificates_view_pager\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_marginTop=\"90dp\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:clipChildren=\"false\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:overScrollMode=\"never\"\n\t\t\tandroid:scrollbars=\"none\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/homescreen_certificates_tab_layout\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\ttools:visibility=\"visible\" />\n\n\t\t<com.google.android.material.tabs.TabLayout\n\t\t\tandroid:id=\"@+id/homescreen_certificates_tab_layout\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"15dp\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_large\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tandroid:background=\"@null\"\n\t\t\tandroid:clipChildren=\"false\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constrainedWidth=\"true\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/button_bar_bubble\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:tabBackground=\"@drawable/tab_selector_white\"\n\t\t\tapp:tabGravity=\"center\"\n\t\t\tapp:tabIndicator=\"@null\"\n\t\t\tapp:tabPaddingEnd=\"@dimen/spacing_small\"\n\t\t\tapp:tabPaddingStart=\"@dimen/spacing_small\"\n\t\t\ttools:visibility=\"visible\" />\n\n\t\t<ProgressBar\n\t\t\tandroid:id=\"@+id/homescreen_loading_indicator\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"100dp\"\n\t\t\tandroid:indeterminateTint=\"@color/white\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/homescreen_certificates_tab_layout\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:layout_constraintVertical_bias=\"0.6\"\n\t\t\ttools:visibility=\"gone\" />\n\n\t\t<ScrollView\n\t\t\tandroid:id=\"@+id/homescreen_empty_content\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"100dp\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:paddingBottom=\"110dp\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constrainedHeight=\"true\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:layout_constraintVertical_bias=\"0\"\n\t\t\ttools:visibility=\"visible\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/homescreen_app_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.White\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\tandroid:text=\"@string/wallet_certificate\"\n\t\t\t\t\tandroid:textAllCaps=\"true\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/homescreen_add_certificate_options_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title.White\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:text=\"@string/wallet_homescreen_what_to_do\" />\n\n\t\t\t\t<include\n\t\t\t\t\tandroid:id=\"@+id/homescreen_add_certificate_options_empty\"\n\t\t\t\t\tlayout=\"@layout/partial_home_add_certificate_options\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\t\t\tapp:layout_constrainedHeight=\"true\"\n\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/button_bar_bubble\"\n\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/homescreen_add_certificate_options_title\"\n\t\t\t\t\tapp:layout_constraintVertical_bias=\"0\" />\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/button_bar_bubble\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\tapp:srcCompat=\"@drawable/bg_bubble_bottom_left\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/homescreen_support_button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:foreground=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tapp:srcCompat=\"@drawable/ic_faq\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/homescreen_list_button\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom|center_horizontal\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:foreground=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tapp:srcCompat=\"@drawable/ic_list\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\" />\n\n\t\t<View\n\t\t\tandroid:id=\"@+id/background_dimmed\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\tandroid:background=\"@color/black_50\"\n\t\t\tandroid:clickable=\"true\"\n\t\t\tandroid:focusable=\"true\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\ttools:visibility=\"gone\" />\n\n\t\t<ScrollView\n\t\t\tandroid:id=\"@+id/homescreen_options_overlay\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_larger\"\n\t\t\tandroid:requiresFadingEdge=\"vertical\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constrainedHeight=\"true\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/button_bar_bubble\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:layout_constraintVertical_bias=\"1\"\n\t\t\ttools:visibility=\"gone\">\n\n\t\t\t<include\n\t\t\t\tandroid:id=\"@+id/homescreen_add_certificate_options_not_empty\"\n\t\t\t\tlayout=\"@layout/partial_home_add_certificate_options\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:elevation=\"@dimen/default_elevation\" />\n\t\t</ScrollView>\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/homescreen_scan_button_small\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom|end\"\n\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\tandroid:foreground=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tapp:srcCompat=\"@drawable/ic_add_certificate\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:id=\"@+id/loading_spinner\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\tandroid:background=\"@color/black_50\"\n\t\t\tandroid:clickable=\"true\"\n\t\t\tandroid:focusable=\"true\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\ttools:visibility=\"gone\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tandroid:indeterminateTint=\"@color/white\" />\n\t\t</FrameLayout>\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_how_to_scan.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/how_to_scan_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_scanner_howitworks_header\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t<ScrollView\n\t\tandroid:id=\"@+id/how_to_scan_scroll_view\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\">\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:paddingTop=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t<ImageView\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\tapp:srcCompat=\"@drawable/illu_how_to_scan\" />\n\n\t\t\t<TextView\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\tandroid:text=\"@string/wallet_scanner_howitworks_title\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/ic_bund_small\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_scanner_howitworks_text1\" />\n\n\t\t\t</LinearLayout>\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/ic_one\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_scanner_howitworks_text2\" />\n\n\t\t\t</LinearLayout>\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/ic_two\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_scanner_howitworks_text3\" />\n\n\t\t\t</LinearLayout>\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/ic_three\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_scanner_howitworks_text4\" />\n\n\t\t\t</LinearLayout>\n\n\t\t\t<include\n\t\t\t\tandroid:id=\"@+id/how_to_scan_question_bubble\"\n\t\t\t\tlayout=\"@layout/item_faq_question\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"/>\n\n\t\t</LinearLayout>\n\n\t</ScrollView>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_onboarding_agb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_privacy_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_illustration\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_onboarding_data_protection\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_privacy_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginRight=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_data_protection\"\n\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_privacy_text\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\"/>\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link_label\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_external_privacy_button\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/wallet_onboarding_accept_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_onboarding_content.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_subtitle\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\ttools:text=\"Subtitle\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_illustration\"\n\t\t\t\t\ttools:src=\"@drawable/illu_onboarding_covid_certificate\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\ttools:text=\"Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/onboarding_description_1_icon\"\n\t\t\t\t\t\ttools:src=\"@drawable/ic_data_protection\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginRight=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/onboarding_description_1\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\ttools:text=\"This is a description text over multiple lines to explain something\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\" />\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/onboarding_description_2_icon\"\n\t\t\t\t\t\ttools:src=\"@drawable/ic_privacy\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginRight=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/onboarding_description_2\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\ttools:text=\"This is a description text over multiple lines to explain something\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\" />\n\n\t\t\t\t</LinearLayout>\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_onboarding_intro.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_app_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_onboarding_hero\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_app_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_app_text\" />\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_onboarding_pre_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_certificate_list_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_bund_small\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_bullet_1\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_timelapse\"\n\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_bullet_2\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_travel\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_bullet_3\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:text=\"@string/covid_certificate_news_item4\" />\n\n\t\t\t\t\t</LinearLayout>\n\n\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_pdf_export.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/covid_certificate_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_loading_indicator\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_content\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_certificate_export_title\" />\n\n\t\t\t\t<ScrollView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_intro_layout\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_pdf\"\n\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_export_summary_1\" />\n\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_cloud\"\n\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_export_summary_2\" />\n\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_button\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_detail_export_button\" />\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_error_layout\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\t\t\t\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_huger\">\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_status_text\"\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\t\t\t\tapp:backgroundTint=\"@color/orangeish\"\n\t\t\t\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\t\t\t\ttools:text=\"@string/wallet_certificate_light_detail_activation_network_error_title\" />\n\n\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_status_icon\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"32dp\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"32dp\"\n\t\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_no_connection\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/certificate_pdf_export_status_text\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/certificate_pdf_export_status_text\" />\n\n\t\t\t\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_error_code\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\t\t\ttools:text=\"Error-Code\" />\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/certificate_pdf_export_retry_button\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/error_action_retry\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\t\t\t\t</ScrollView>\n\t\t\t</LinearLayout>\n\t\t</FrameLayout>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_qr_code_renewal.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_certificate\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.core.widget.NestedScrollView\n\t\t\tandroid:id=\"@+id/scrollView\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/content\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/qr_code_expiration_bubble\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\tandroid:backgroundTint=\"@color/redish\"\n\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium_small\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_expiration_label\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_certificate_renewal_qr_code_expiration\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_expiration_date\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Emphasized\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\ttools:text=\"03.06.2022, 14:31\" />\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\tandroid:paddingTop=\"@dimen/spacing_very_small\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_state_info\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\tandroid:backgroundTint=\"@color/redish\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\tandroid:minLines=\"2\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\ttools:text=\"@string/wallet_certificate_renewal_required_info\" />\n\n\t\t\t\t\t<FrameLayout\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/info_buble_icon_padding\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_renewal_state_info\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/qr_code_renewal_state_info\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_state_icon\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_error\" />\n\n\t\t\t\t\t\t<ProgressBar\n\t\t\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_loading_indicator\"\n\t\t\t\t\t\t\tandroid:layout_width=\"26dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"26dp\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\" />\n\t\t\t\t\t</FrameLayout>\n\n\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/certificate_detail_error_code\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\ttools:text=\"Error-Code\"\n\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t<Button\n\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_button\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:backgroundTint=\"@color/text_color_button\"\n\t\t\t\t\tandroid:text=\"@string/wallet_certificate_renew_now_button\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_info_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\ttools:text=\"@string/cert_renewal_info_info_heading\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_infos\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:orientation=\"vertical\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_faq_button\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_medium_small\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_renewal_faq_button_text\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\ttools:text=\"@string/wallet_certificate_renewal_faq_link_text\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</androidx.core.widget.NestedScrollView>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_qr_scan.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/black\"\n\ttools:context=\".qr.WalletQrScanFragment\">\n\n\t<ch.ubique.qrscanner.view.QrScannerView\n\t\tandroid:id=\"@+id/qr_code_scanner\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_footer_group\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@id/fragment_qr_toolbar_inset_group\" />\n\n\t<View\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:background=\"@color/white\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"@id/fragment_qr_toolbar_inset_group\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout\n\t\tandroid:id=\"@+id/fragment_qr_toolbar_inset_group\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:background=\"@color/white\"\n\t\tapp:applyWindowInsets=\"all\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/fragment_qr_scanner_toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"@dimen/header_height_default\"\n\t\t\tandroid:background=\"@null\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_add_certificate_button\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>\n\n\t<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tapp:applyWindowInsets=\"left|right|bottom\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_footer_group\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@id/fragment_qr_toolbar_inset_group\">\n\n\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\tandroid:id=\"@+id/fragment_qr_scanner_main_view\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_milk_top\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:background=\"@color/white_50\"\n\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_milk_bottom\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:background=\"@color/white_50\"\n\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/qr_code_scanner_camera_hole\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:background=\"@color/white_50\"\n\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_milk_bottom\"\n\t\t\t\t\tapp:layout_constraintEnd_toStartOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/qr_code_scanner_milk_top\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:background=\"@color/white_50\"\n\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_milk_bottom\"\n\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintStart_toEndOf=\"@id/qr_code_scanner_camera_hole\"\n\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/qr_code_scanner_milk_top\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_invalid_code_text\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.White\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_rect_rounded_small_red\"\n\t\t\t\t\tandroid:drawablePadding=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:paddingStart=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/qr_scanner_error\"\n\t\t\t\t\tandroid:visibility=\"invisible\"\n\t\t\t\t\tapp:drawableStartCompat=\"@drawable/ic_scanner_alert_white\"\n\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_camera_hole\"\n\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:layout_margin=\"@dimen/spacing_larger\"\n\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"@id/camera_preview_container\"\n\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"@id/camera_preview_container\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"@id/camera_preview_container\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/camera_preview_container\" />\n\n\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\tandroid:id=\"@+id/camera_preview_container\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintDimensionRatio=\"1:1\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_top_right_indicator\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_top_right\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_top_left_indicator\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_top_left\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_bottom_left_indicator\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_bottom_left\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\" />\n\n\t\t\t\t\t<View\n\t\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_bottom_right_indicator\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/qr_scanner_indicator_size\"\n\t\t\t\t\t\tandroid:background=\"@drawable/qr_scanner_bottom_right\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\" />\n\n\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/qr_code_scanner_error_code\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Error.Bundesrot\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\tapp:layout_constraintBottom_toTopOf=\"@id/camera_preview_container\"\n\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@id/camera_preview_container\"\n\t\t\t\t\ttools:text=\"ER-14\" />\n\n\t\t\t\t<View\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"22dp\"\n\t\t\t\t\tandroid:background=\"@drawable/ic_header_slim\"\n\t\t\t\t\tandroid:rotation=\"180\"\n\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\" />\n\n\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/fragment_qr_scanner_error_view\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t\t<include\n\t\t\t\t\tlayout=\"@layout/item_error_status\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\" />\n\n\t\t\t</LinearLayout>\n\n\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>\n\n\t<LinearLayout\n\t\tandroid:id=\"@+id/qr_code_scanner_footer_group\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:gravity=\"center_horizontal\"\n\t\tandroid:orientation=\"vertical\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_larger\"\n\t\tandroid:paddingBottom=\"@dimen/spacing_very_large\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\">\n\n\t\t<ImageView\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:srcCompat=\"@drawable/ic_scan_code\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/qr_code_scanner_explanation\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:text=\"@string/wallet_scanner_explanation\"\n\t\t\tandroid:textSize=\"@dimen/text_size_emphasize\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/qr_code_scanner_button_how\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Blue\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium\"\n\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tandroid:text=\"@string/wallet_scanner_info_button\" />\n\n\t</LinearLayout>\n\n\t<com.google.android.material.floatingactionbutton.FloatingActionButton\n\t\tandroid:id=\"@+id/fragment_qr_zoom\"\n\t\tstyle=\"@style/CovidCertificate.FloatingActionButton.WhiteBlue\"\n\t\tandroid:layout_width=\"@dimen/floating_button_height\"\n\t\tandroid:layout_height=\"@dimen/floating_button_height\"\n\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_footer_group\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"@id/qr_code_scanner_footer_group\"\n\t\tapp:srcCompat=\"@drawable/ic_zoom_off\"\n\t\ttools:visibility=\"visible\" />\n\n\t<com.google.android.material.floatingactionbutton.FloatingActionButton\n\t\tandroid:id=\"@+id/fragment_qr_scanner_flash_button\"\n\t\tstyle=\"@style/CovidCertificate.FloatingActionButton.WhiteBlue\"\n\t\tandroid:layout_width=\"@dimen/floating_button_height\"\n\t\tandroid:layout_height=\"@dimen/floating_button_height\"\n\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/qr_code_scanner_footer_group\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"@id/qr_code_scanner_footer_group\"\n\t\tapp:srcCompat=\"@drawable/ic_light_off_blue\" />\n\n</androidx.constraintlayout.widget.ConstraintLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_rat_conversion.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_certificate\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.core.widget.NestedScrollView\n\t\t\tandroid:id=\"@+id/scrollView\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/content\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/rat_conversion_title\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/subtitle\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:text=\"@string/rat_conversion_text\"\n\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/rat_conversion_banner\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\t\t\t\tandroid:backgroundTint=\"@color/blueish\"\n\t\t\t\t\tandroid:clipChildren=\"false\"\n\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\tandroid:foreground=\"@drawable/ripple_rounded_rect_banner\"\n\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_large\"\n\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\tandroid:text=\"@string/rat_conversion_form_title\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:id=\"@+id/rat_conversion_form_checkbox\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:background=\"?android:attr/selectableItemBackground\"\n\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\tandroid:id=\"@+id/rat_conversion_form_checkbox_icon\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:src=\"@drawable/ic_checkbox_empty\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/rat_conversion_form_title\" />\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_small\"\n\t\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\t\tandroid:text=\"@string/rat_conversion_form_text\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toEndOf=\"@+id/rat_conversion_form_checkbox\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/rat_conversion_form_title\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"@+id/rat_conversion_form_checkbox\" />\n\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t<com.google.android.material.button.MaterialButton\n\t\t\t\t\t\tandroid:id=\"@+id/rat_conversion_form_submit\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button.Outlined\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_huger\"\n\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:drawableEnd=\"@drawable/ic_link_external\"\n\t\t\t\t\t\tandroid:enabled=\"false\"\n\t\t\t\t\t\tandroid:text=\"@string/rat_conversion_form_button\"\n\t\t\t\t\t\tandroid:textColor=\"@color/selector_grey_or_white\"\n\t\t\t\t\t\tapp:backgroundTint=\"@color/selector_transparent_or_blue\"\n\t\t\t\t\t\tapp:drawableTint=\"@color/selector_grey_or_white\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/rat_conversion_form_text\" />\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/open_website_button\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_medium_small\"\n\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/foreignValidityMoreInfosLabel\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"center_vertical\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tandroid:text=\"@string/rat_conversion_link_antragsstelle\" />\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\tandroid:text=\"@string/rat_conversion_info_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/hintIconOne\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_gravity=\"top|start\"\n\t\t\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_bund_small\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/hintTextOne\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\tandroid:gravity=\"start\"\n\t\t\t\t\t\tandroid:hyphenationFrequency=\"normal\"\n\t\t\t\t\t\tandroid:text=\"@string/rat_conversion_info1_text\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/hintIconTwo\"\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_gravity=\"top|start\"\n\t\t\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_exchange\"\n\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/hintTextTwo\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\tandroid:gravity=\"start\"\n\t\t\t\t\t\tandroid:hyphenationFrequency=\"normal\"\n\t\t\t\t\t\tandroid:text=\"@string/rat_conversion_info2_text\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</androidx.core.widget.NestedScrollView>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_transfer_code_creation.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_transfer_code_card_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/transfer_code_loading_indicator\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:id=\"@+id/transfer_code_content\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<ScrollView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\tandroid:clipToPadding=\"false\"\n\t\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_creation_title\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\ttools:text=\"@string/wallet_transfer_code_code_created_title\" />\n\n\t\t\t\t\t\t<ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeBubbleView\n\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_bubble\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_next_steps\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\t\ttools:visibility=\"visible\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_next_steps\" />\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_pen_write\"\n\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_next_steps1\" />\n\t\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\t\ttools:ignore=\"UseCompoundDrawables\">\n\n\t\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_info_outline\"\n\t\t\t\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\t\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_next_steps2\" />\n\t\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_error_layout\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_error_code\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\t\t\ttools:text=\"Error-Code\" />\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_creation_retry_button\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/error_action_retry\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\t\t\t\t</ScrollView>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/transfer_code_creation_done_layout\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\t\t\tandroid:background=\"@color/white\"\n\t\t\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_creation_done_button\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_done_button\" />\n\n\t\t\t\t</LinearLayout>\n\t\t\t</LinearLayout>\n\t\t</FrameLayout>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_transfer_code_detail.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_transfer_code_card_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/transfer_code_loading_indicator\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\tandroid:layout_margin=\"@dimen/spacing_large\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<androidx.core.widget.NestedScrollView\n\t\t\t\tandroid:id=\"@+id/transfer_code_content\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"match_parent\">\n\n\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:clipChildren=\"false\">\n\n\t\t\t\t\t<ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeWaitingView\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_waiting_image\"\n\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\tandroid:layout_height=\"0dp\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintHeight_default=\"wrap\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintWidth_percent=\"0.26\"\n\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_image\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\ttools:src=\"@drawable/illu_transfer_code_failed\"\n\t\t\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t\t\t<androidx.constraintlayout.widget.Barrier\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_image_barrier\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tapp:barrierDirection=\"bottom\"\n\t\t\t\t\t\tapp:constraint_referenced_ids=\"transfer_code_detail_waiting_image,transfer_code_detail_image\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_title\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_detail_image_barrier\"\n\t\t\t\t\t\ttools:text=\"@string/wallet_transfer_code_state_waiting\" />\n\n\t\t\t\t\t<ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeBubbleView\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_bubble\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_detail_title\" />\n\n\t\t\t\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_refresh_layout\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\t\tandroid:clickable=\"true\"\n\t\t\t\t\t\tandroid:focusable=\"true\"\n\t\t\t\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_detail_bubble\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_last_update\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_state_updated\"\n\t\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toStartOf=\"@+id/transfer_code_refresh_button\"\n\t\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t\t\t\t\t<com.google.android.material.floatingactionbutton.FloatingActionButton\n\t\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_refresh_button\"\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.FloatingActionButton\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tapp:fabCustomSize=\"@dimen/floating_button_small_height\"\n\t\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_load\" />\n\n\t\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_error_code\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\t\tandroid:layout_marginVertical=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tandroid:textAllCaps=\"true\"\n\t\t\t\t\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_detail_refresh_layout\"\n\t\t\t\t\t\ttools:text=\"Error-Code\" />\n\n\t\t\t\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_faq_list\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\t\tapp:layoutManager=\"androidx.recyclerview.widget.LinearLayoutManager\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_error_code\"\n\t\t\t\t\t\ttools:itemCount=\"3\"\n\t\t\t\t\t\ttools:listitem=\"@layout/item_faq_question\" />\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tandroid:id=\"@+id/transfer_code_detail_delete_button\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Button.Red\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_huge\"\n\t\t\t\t\t\tandroid:text=\"@string/delete_button\"\n\t\t\t\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_detail_faq_list\" />\n\n\t\t\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\t\t\t</androidx.core.widget.NestedScrollView>\n\t\t</FrameLayout>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_transfer_code_howto.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_faq_header\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.recyclerview.widget.RecyclerView\n\t\t\tandroid:id=\"@+id/transfer_code_howto_list\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\tandroid:scrollbars=\"vertical\"\n\t\t\tapp:layoutManager=\"androidx.recyclerview.widget.LinearLayoutManager\"\n\t\t\ttools:itemCount=\"4\"\n\t\t\ttools:listitem=\"@layout/item_faq_question\" />\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_transfer_code_intro.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/wallet_transfer_code_card_title\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:paddingBottom=\"@dimen/spacing_medium_large\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:adjustViewBounds=\"true\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_transfer_code_intro\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_onboarding_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_onboarding_text\" />\n\n\t\t\t\t<Button\n\t\t\t\t\tandroid:id=\"@+id/transfer_code_intro_create\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_onboarding_button\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/transfer_code_intro_howto\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\t\t\tandroid:text=\"@string/wallet_transfer_code_onboarding_howto\"\n\t\t\t\t\tandroid:textAllCaps=\"true\" />\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_transfer_code_pager.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:clipChildren=\"false\"\n\tandroid:clipToPadding=\"false\"\n\tandroid:padding=\"@dimen/spacing_small\"\n\ttools:background=\"@color/greyish\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/transfer_code_page_card\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:clipChildren=\"false\"\n\t\tandroid:clipToPadding=\"false\"\n\t\tandroid:foreground=\"@drawable/ripple_rounded_rect\"\n\t\ttools:background=\"@color/white\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/transfer_code_page_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_larger\"\n\t\t\tandroid:text=\"@string/wallet_transfer_code_card_title\"\n\t\t\tapp:layout_constrainedWidth=\"true\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\t\tandroid:id=\"@+id/transfer_code_page_vaccination_hint\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tapp:layout_constraintHeight_default=\"wrap\"\n\t\t\tandroid:layout_margin=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\t\tandroid:clickable=\"true\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\ttools:visibility=\"visible\">\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/vaccination_hint_title\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_medium\"\n\t\t\t\tapp:layout_constraintEnd_toStartOf=\"@+id/vaccination_hint_dismiss\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\ttools:text=\"@string/vaccination_hint_title_1\" />\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/vaccination_hint_dismiss\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:background=\"?android:attr/selectableItemBackgroundBorderless\"\n\t\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_close\"\n\t\t\t\tapp:tint=\"@color/black\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/vaccination_hint_text\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/vaccination_hint_title\"\n\t\t\t\ttools:text=\"@string/vaccination_hint_text_1\" />\n\n\t\t\t<TextView\n\t\t\t\tandroid:id=\"@+id/vaccination_hint_book_now\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\t\tandroid:background=\"?android:attr/selectableItemBackground\"\n\t\t\t\tandroid:text=\"@string/vaccination_homescreen_button_title\"\n\t\t\t\tapp:drawableEndCompat=\"@drawable/ic_arrow_right\"\n\t\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/vaccination_hint_text\" />\n\n\t\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t\t<androidx.constraintlayout.widget.Barrier\n\t\t\tandroid:id=\"@+id/transfer_code_page_barrier\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:barrierDirection=\"bottom\"\n\t\t\tapp:constraint_referenced_ids=\"transfer_code_page_title,transfer_code_page_vaccination_hint\" />\n\n\t\t<ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeWaitingView\n\t\t\tandroid:id=\"@+id/transfer_code_page_waiting_image\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constrainedHeight=\"true\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/transfer_code_page_status_label\"\n\t\t\tapp:layout_constraintDimensionRatio=\"h3:2\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/transfer_code_page_barrier\"\n\t\t\tapp:layout_constraintWidth_percent=\"0.33\"\n\t\t\ttools:visibility=\"visible\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/transfer_code_page_image\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_huger\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constrainedHeight=\"true\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/transfer_code_page_status_label\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@id/transfer_code_page_barrier\"\n\t\t\ttools:src=\"@drawable/illu_transfer_code_failed\"\n\t\t\ttools:visibility=\"gone\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/transfer_code_page_status_label\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_margin=\"@dimen/spacing_medium\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:maxLines=\"2\"\n\t\t\tandroid:minLines=\"2\"\n\t\t\tapp:autoSizeMaxTextSize=\"@dimen/text_size_large\"\n\t\t\tapp:autoSizeMinTextSize=\"@dimen/text_size_small\"\n\t\t\tapp:autoSizeTextType=\"uniform\"\n\t\t\tapp:layout_constraintBottom_toTopOf=\"@+id/transfer_code_page_bubble\"\n\t\t\ttools:text=\"@string/wallet_transfer_code_state_waiting\" />\n\n\t\t<ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeBubbleView\n\t\t\tandroid:id=\"@+id/transfer_code_page_bubble\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"parent\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n</FrameLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_updateboarding_agb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_illustration\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_onboarding_data_protection\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:text=\"@string/terms_and_conditions_update_boarding_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:orientation=\"horizontal\">\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\t\t\tandroid:text=\"@string/terms_and_conditions_update_boarding_text\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\"/>\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link_label\"\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_external_privacy_button\" />\n\t\t\t\t\t\t</LinearLayout>\n\t\t\t\t\t</LinearLayout>\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/wallet_onboarding_accept_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_updateboarding_certificate_light.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_updateboarding_certificate_light\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_certificate_light_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:breakStrategy=\"high_quality\"\n\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\tandroid:hyphenationFrequency=\"full\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_certificate_light_text\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/item_agb_link\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/item_agb_link_label\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_onboarding_external_privacy_button\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/wallet_onboarding_accept_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_updateboarding_validity_1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<ImageView\n\t\t\t\t\tandroid:id=\"@+id/onboarding_illustration\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"@dimen/onboarding_illustration_height\"\n\t\t\t\t\tandroid:scaleType=\"fitCenter\"\n\t\t\t\t\tapp:srcCompat=\"@drawable/illu_onboarding_hero\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_1_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_1_text\" />\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_updateboarding_validity_2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_bund_small\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_bullet_1\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_timelapse\"\n\t\t\t\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_bullet_2\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_travel\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_2_bullet_3\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_updateboarding_validity_3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_3_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_travel\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_3_bullet_1\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_calendar\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_3_bullet_2\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_data_protection\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_3_bullet_3\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_updateboarding_validity_4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:orientation=\"vertical\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<ScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\tandroid:orientation=\"vertical\"\n\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingTop=\"@dimen/spacing_larger\"\n\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_very_large\"\n\t\t\t\tandroid:paddingBottom=\"@dimen/spacing_large\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead.Grey\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_larger\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_header\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_4_title\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_check_mark\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_4_bullet_1\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_travel\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_4_bullet_2\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_very_large\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\t\t\t\t\tandroid:src=\"@drawable/ic_question_outline\" />\n\n\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_4_bullet_3\" />\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/link_1\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_4_link_1_text\" />\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t\t<LinearLayout\n\t\t\t\t\t\t\tandroid:id=\"@+id/link_2\"\n\t\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_medium\"\n\t\t\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\">\n\n\t\t\t\t\t\t\t<ImageView\n\t\t\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t\t\t<TextView\n\t\t\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\t\t\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\t\t\tandroid:text=\"@string/wallet_update_boarding_page_4_link_2_text\" />\n\t\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t\t</LinearLayout>\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</ScrollView>\n\n\t\t<LinearLayout\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/default_elevation\"\n\t\t\tandroid:gravity=\"center\"\n\t\t\tandroid:orientation=\"vertical\"\n\t\t\tandroid:outlineProvider=\"bounds\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium\">\n\n\t\t\t<Button\n\t\t\t\tandroid:id=\"@+id/onboarding_continue_button\"\n\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:text=\"@string/continue_button\" />\n\n\t\t</LinearLayout>\n\n\t</LinearLayout>\n\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/fragment_vaccination_appointment.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\tandroid:background=\"@color/white\"\n\tapp:applyWindowInsets=\"all\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"match_parent\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<androidx.appcompat.widget.Toolbar\n\t\t\tandroid:id=\"@+id/toolbar\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@color/white\"\n\t\t\tandroid:elevation=\"@dimen/toolbar_elevation\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\tapp:navigationIcon=\"@drawable/ic_close_red\"\n\t\t\tapp:title=\"@string/vaccination_appointment_header\"\n\t\t\tapp:titleTextAppearance=\"@style/CovidCertificate.ToolbarTitle\"\n\t\t\tapp:titleTextColor=\"@color/grey\" />\n\n\t\t<androidx.core.widget.NestedScrollView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"match_parent\"\n\t\t\tandroid:clipToPadding=\"false\"\n\t\t\tandroid:paddingBottom=\"@dimen/spacing_larger\">\n\n\t\t\t<LinearLayout\n\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\tandroid:orientation=\"vertical\">\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/vaccination_booking_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:gravity=\"center_horizontal\"\n\t\t\t\t\ttools:text=\"@string/vaccination_booking_info_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/vaccination_booking_text\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_huge\"\n\t\t\t\t\ttools:text=\"@string/vaccination_booking_info_text\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/vaccination_booking_info_frame\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:padding=\"@dimen/spacing_larger\"\n\t\t\t\t\tapp:backgroundTint=\"@color/blueish\">\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tandroid:id=\"@+id/vaccination_booking_info\"\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\t\tandroid:layout_width=\"0dp\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_weight=\"1\"\n\t\t\t\t\t\tandroid:gravity=\"center\"\n\t\t\t\t\t\ttools:text=\"@string/vaccination_booking_info_info\" />\n\n\t\t\t\t</LinearLayout>\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/impfcheck_title\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_small\"\n\t\t\t\t\tandroid:gravity=\"left\"\n\t\t\t\t\tandroid:text=\"@string/vaccination_impf_check_title\" />\n\n\t\t\t\t<TextView\n\t\t\t\t\tandroid:id=\"@+id/impfcheck_info_text\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:text=\"@string/vaccination_impf_check_info_text\" />\n\n\t\t\t\t<Button\n\t\t\t\t\tandroid:id=\"@+id/impfcheck_action\"\n\t\t\t\t\tstyle=\"@style/CovidCertificate.Button\"\n\t\t\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_margin=\"@dimen/spacing_very_large\"\n\t\t\t\t\tandroid:drawableRight=\"@drawable/ic_link_external\"\n\t\t\t\t\tandroid:drawableTint=\"@color/white\"\n\t\t\t\t\tandroid:text=\"@string/vaccination_impf_check_action\" />\n\n\t\t\t\t<LinearLayout\n\t\t\t\t\tandroid:id=\"@+id/vaccination_more_info_button\"\n\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\tandroid:layout_gravity=\"center_horizontal\"\n\t\t\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\"\n\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\t\t\tandroid:background=\"@drawable/ripple_rounded_rect\"\n\t\t\t\t\tandroid:orientation=\"horizontal\"\n\t\t\t\t\tandroid:paddingVertical=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:paddingStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\tandroid:paddingEnd=\"@dimen/spacing_medium_small\">\n\n\t\t\t\t\t<ImageView\n\t\t\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\t\t\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\t\t\t\t\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n\t\t\t\t\t<TextView\n\t\t\t\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue.LinkExternal\"\n\t\t\t\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\t\t\t\tandroid:layout_marginStart=\"@dimen/spacing_very_small\"\n\t\t\t\t\t\tandroid:text=\"@string/vaccination_more_information_title\" />\n\t\t\t\t</LinearLayout>\n\n\t\t\t</LinearLayout>\n\t\t</androidx.core.widget.NestedScrollView>\n\t</LinearLayout>\n</ch.admin.bag.covidcertificate.common.views.WindowInsetsLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_certificate_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\tandroid:background=\"@drawable/ripple_rect\"\n\tandroid:paddingVertical=\"@dimen/spacing_medium_small\">\n\n\t<FrameLayout\n\t\tandroid:id=\"@+id/item_certificate_list_icon_group\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/item_certificate_list_icon_qr\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:srcCompat=\"@drawable/ic_qrcode\" />\n\n\t\t<FrameLayout\n\t\t\tandroid:id=\"@+id/item_certificate_list_icon_status_group\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"bottom|end\"\n\t\t\tandroid:background=\"@drawable/circle_white\"\n\t\t\tandroid:padding=\"@dimen/spacing_tiny_small\">\n\n\t\t\t<ImageView\n\t\t\t\tandroid:id=\"@+id/item_certificate_list_icon_status\"\n\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\t\t\tapp:srcCompat=\"@drawable/ic_process_error\"\n\t\t\t\tandroid:visibility=\"gone\"\n\t\t\t\ttools:visibility=\"visible\" />\n\n\t\t\t<ProgressBar\n\t\t\t\tandroid:id=\"@+id/item_certificate_list_icon_loading_view\"\n\t\t\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\t\t\tandroid:layout_height=\"@dimen/icon_size_small\" />\n\n\t\t</FrameLayout>\n\n\t</FrameLayout>\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_certificate_list_name\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_small\"\n\t\tandroid:layout_marginBottom=\"@dimen/spacing_very_small\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/item_certificate_list_type\"\n\t\tapp:layout_constraintEnd_toStartOf=\"@id/item_certificate_list_drag_handle\"\n\t\tapp:layout_constraintStart_toEndOf=\"@id/item_certificate_list_icon_group\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\tapp:layout_constraintVertical_bias=\"0.25\"\n\t\tapp:layout_constraintVertical_chainStyle=\"packed\"\n\t\ttools:text=\"Muster Marta\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_certificate_list_type\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_small\"\n\t\tandroid:background=\"@drawable/bg_type_bubble_small\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_small\"\n\t\tandroid:paddingVertical=\"1dp\"\n\t\tandroid:textColor=\"@color/white\"\n\t\tandroid:textSize=\"@dimen/text_size_type_bubble\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintStart_toEndOf=\"@id/item_certificate_list_icon_group\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@id/item_certificate_list_name\"\n\t\ttools:text=\"Impfung\" />\n\n\t<ImageView\n\t\tandroid:id=\"@+id/item_certificate_list_drag_handle\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\tapp:srcCompat=\"@drawable/ic_drag\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n</androidx.constraintlayout.widget.ConstraintLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_debug_certificate_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\tandroid:orientation=\"vertical\"\n\tandroid:padding=\"@dimen/spacing_medium_large\"\n\tandroid:background=\"@color/white\"\n\tandroid:clipToPadding=\"false\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:orientation=\"horizontal\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/item_certificate_list_name\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_weight=\"1\"\n\t\t\tandroid:maxLines=\"2\"\n\t\t\tandroid:ellipsize=\"end\"\n\t\t\ttools:text=\"Muster Marta\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/item_certificate_list_type\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@drawable/bg_type_bubble_small\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_small\"\n\t\t\tandroid:paddingVertical=\"1dp\"\n\t\t\tandroid:textColor=\"@color/white\"\n\t\t\tandroid:textSize=\"@dimen/text_size_type_bubble\"\n\t\t\ttools:text=\"Impfung\" />\n\n\t</LinearLayout>\n\n\t<Button\n\t\tandroid:id=\"@+id/button_share_string\"\n\t\tstyle=\"@style/CovidCertificate.Button.Borderless\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"-15dp\"\n\t\tandroid:layout_marginBottom=\"-10dp\"\n\t\tandroid:text=\"Share as string\" />\n\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_divider.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<View xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"4dp\"\n\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_very_large\"\n\tandroid:background=\"@drawable/line_dashed_grey\"/>"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_mode.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ImageView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"18dp\"\n\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_small\"\n\tandroid:layout_marginVertical=\"@dimen/spacing_very_small\"\n\tandroid:adjustViewBounds=\"true\"\n\tandroid:scaleType=\"fitCenter\"\n\ttools:src=\"@drawable/ic_no_2_g_plus_height\" />\n"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_mode_refresh.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ImageView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"32dp\"\n\tandroid:layout_marginHorizontal=\"6dp\"\n\tandroid:adjustViewBounds=\"true\"\n\tandroid:scaleType=\"fitCenter\" />\n\n"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_modes_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginHorizontal=\"@dimen/spacing_very_very_large\"\n\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_very_large\">\n\n\t<View\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"4dp\"\n\t\tandroid:layout_gravity=\"center\"\n\t\tandroid:background=\"@drawable/line_dashed_grey\" />\n\n\t<LinearLayout\n\t\tandroid:id=\"@+id/certificate_detail_info_modes_list\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"center\"\n\t\tandroid:background=\"@drawable/oval_horizontal\"\n\t\tandroid:orientation=\"horizontal\"\n\t\tandroid:paddingHorizontal=\"6dp\"/>\n\n</FrameLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\tandroid:orientation=\"vertical\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Lead\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"start\"\n\t\ttools:text=\"@string/covid_certificate_vaccination_title\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_title_english\"\n\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"start\"\n\t\ttools:text=\"@string/covid_certificate_vaccination_title\" />\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_value.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\tandroid:background=\"?android:attr/selectableItemBackground\"\n\tandroid:orientation=\"vertical\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_value_value\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:text=\"Rapid immunoassay\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_value_label\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:text=\"Testtyp\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_value_label_english\"\n\t\tstyle=\"@style/CovidCertificate.Text.Grey\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:gravity=\"start\"\n\t\ttools:text=\"Testtyp\" />\n\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_detail_value_without_label.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\tandroid:orientation=\"vertical\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_value_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\ttools:text=\"Testtyp\" />\n\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_foreign_rules_check_hint.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"horizontal\"\n\tandroid:paddingVertical=\"@dimen/spacing_medium_small\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/icon\"\n\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\tandroid:layout_gravity=\"top|start\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tandroid:scaleType=\"fitCenter\"\n\t\tapp:tint=\"@color/blue\"\n\t\ttools:src=\"@drawable/ic_travel\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/hintText\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\tandroid:breakStrategy=\"high_quality\"\n\t\tandroid:gravity=\"start\"\n\t\tandroid:hyphenationFrequency=\"normal\"\n\t\ttools:text=\"Die Einreiseregeln können sich ändern. Prüfen Sie daher die Gültigkeit kurz vor der Abreise und informieren Sie sich zusätzlich online über die aktuellen Einreiseregeln des Ziellandes. \" />\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_header_not_empty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<View\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"256dp\"\n\t\t\tandroid:background=\"@color/white\" />\n\n\t\t<ImageView\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:scaleType=\"fitXY\"\n\t\t\tapp:srcCompat=\"@drawable/ic_header_slim\" />\n\t</LinearLayout>\n\n\t<FrameLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_small\">\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/schwiizerchruez\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"center\"\n\t\t\tapp:srcCompat=\"@drawable/ic_bundwappen_big\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/header_impressum\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@drawable/ripple_rounded\"\n\t\t\tandroid:layout_gravity=\"end|center_vertical\"\n\t\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\t\tapp:srcCompat=\"@drawable/ic_info_outline\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/header_notification\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_gravity=\"start|center_vertical\"\n\t\t\tandroid:background=\"@drawable/ripple_rounded\"\n\t\t\tandroid:padding=\"@dimen/spacing_tiny_small\"\n\t\t\tapp:srcCompat=\"@drawable/ic_notification\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\ttools:visibility=\"visible\" />\n\t</FrameLayout>\n\n</FrameLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_icon_text_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginTop=\"@dimen/spacing_large\"\n\tandroid:layout_marginBottom=\"@dimen/spacing_medium_small\"\n\tandroid:orientation=\"horizontal\"\n\ttools:layout_marginHorizontal=\"@dimen/spacing_medium_large\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/hintIcon\"\n\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\tandroid:layout_gravity=\"top|start\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tandroid:scaleType=\"fitCenter\"\n\t\tapp:tint=\"@color/blue\"\n\t\ttools:src=\"@drawable/ic_qrcode_scan\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/hintText\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\tandroid:breakStrategy=\"high_quality\"\n\t\tandroid:gravity=\"start\"\n\t\tandroid:hyphenationFrequency=\"normal\"\n\t\tandroid:includeFontPadding=\"false\"\n\t\ttools:text=\"@tools:sample/lorem/random\" />\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_mode_list_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"horizontal\"\n\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\tandroid:paddingVertical=\"@dimen/spacing_medium_small\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/mode_list_info_image\"\n\t\tandroid:layout_width=\"42dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"top|start\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tandroid:maxHeight=\"32dp\"\n\t\tandroid:scaleType=\"fitCenter\"\n\t\tandroid:src=\"@drawable/ic_2g_plus\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/mode_list_info_text\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_small\"\n\t\tandroid:breakStrategy=\"high_quality\"\n\t\tandroid:gravity=\"start\"\n\t\tandroid:hyphenationFrequency=\"normal\"\n\t\ttools:text=\"Hier könnte ein Text stehen, der erklärt was 3G bedeutet und dass der Zertifikatstyp für 3G ok ist.\" />\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_transfer_code_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:layout_marginTop=\"@dimen/spacing_tiny_small\"\n\tandroid:background=\"@drawable/ripple_rect\"\n\tandroid:paddingVertical=\"@dimen/spacing_medium_small\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/item_transfer_code_list_icon\"\n\t\tandroid:layout_width=\"48dp\"\n\t\tandroid:layout_height=\"48dp\"\n\t\tandroid:layout_margin=\"@dimen/spacing_medium_small\"\n\t\tapp:srcCompat=\"@drawable/ic_transfer_code_list_valid\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/item_transfer_code_list_title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_medium_large\"\n\t\tandroid:layout_marginEnd=\"@dimen/spacing_very_small\"\n\t\tandroid:layout_marginBottom=\"@dimen/spacing_very_small\"\n\t\tandroid:text=\"@string/wallet_transfer_code_state_waiting\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/item_transfer_code_list_subtitle\"\n\t\tapp:layout_constraintEnd_toStartOf=\"@id/item_transfer_code_list_drag_handle\"\n\t\tapp:layout_constraintStart_toEndOf=\"@id/item_transfer_code_list_icon\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\tapp:layout_constraintVertical_bias=\"0.25\"\n\t\tapp:layout_constraintVertical_chainStyle=\"packed\" />\n\n\t<FrameLayout\n\t\tandroid:id=\"@+id/item_transfer_code_list_subtitle\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintEnd_toEndOf=\"@+id/item_transfer_code_list_title\"\n\t\tapp:layout_constraintStart_toStartOf=\"@+id/item_transfer_code_list_title\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@id/item_transfer_code_list_title\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/item_transfer_code_list_code\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Transfer.Bubble\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"@drawable/bg_type_bubble_small\"\n\t\t\tapp:backgroundTint=\"@color/blueish\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_small\"\n\t\t\tandroid:paddingVertical=\"1dp\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\ttools:text=\"A2X56K7WP\"\n\t\t\ttools:visibility=\"visible\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/item_transfer_code_list_info\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:paddingVertical=\"1dp\"\n\t\t\tandroid:textSize=\"@dimen/text_size_type_bubble\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\ttools:text=\"@string/wallet_transfer_code_old_code\"\n\t\t\ttools:textColor=\"@color/red\"\n\t\t\ttools:visibility=\"gone\" />\n\t</FrameLayout>\n\n\t<ImageView\n\t\tandroid:id=\"@+id/item_transfer_code_list_drag_handle\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:padding=\"@dimen/spacing_medium_large\"\n\t\tapp:srcCompat=\"@drawable/ic_drag\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n</androidx.constraintlayout.widget.ConstraintLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/item_vaccination_appointment_canton.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"@dimen/button_height\"\n\tandroid:background=\"?android:attr/selectableItemBackground\"\n\tandroid:gravity=\"center_vertical\"\n\tandroid:orientation=\"horizontal\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/canton_icon\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:background=\"@drawable/bg_border\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_large\"\n\t\ttools:srcCompat=\"@drawable/icon_zh\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/canton_name\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium\"\n\t\tandroid:layout_weight=\"1\"\n\t\ttools:text=\"@string/vaccination_booking_zh_name\" />\n\n\t<ImageView\n\t\tandroid:layout_width=\"@dimen/icon_size_small\"\n\t\tandroid:layout_height=\"@dimen/icon_size_small\"\n\t\tandroid:layout_marginEnd=\"@dimen/spacing_large\"\n\t\tapp:srcCompat=\"@drawable/ic_link_external\" />\n\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/partial_certificate_detail_banners.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2022 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:id=\"@+id/certificate_detail_banners\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"vertical\">\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/qr_code_renewal_banner\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_margin=\"@dimen/spacing_medium_large\"\n\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\tandroid:clipChildren=\"false\"\n\t\tandroid:clipToPadding=\"false\"\n\t\tandroid:foreground=\"@drawable/ripple_rounded_rect_banner\"\n\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\ttools:backgroundTint=\"@color/redish\"\n\t\ttools:visibility=\"visible\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/qr_code_renewal_banner_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\ttools:text=\"@string/wallet_certificate_renewal_required_bubble_title\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/qr_code_renewal_banner_text\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/qr_code_renewal_banner_title\"\n\t\t\ttools:text=\"@string/wallet_certificate_renewal_required_bubble_text\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/qr_code_renewal_banner_more_info\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\tapp:drawableEndCompat=\"@drawable/ic_arrow_right\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/qr_code_renewal_banner_text\"\n\t\t\ttools:text=\"@string/wallet_certificate_renewal_required_bubble_button\" />\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/qr_code_renewal_banner_dismiss\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:background=\"?android:attr/selectableItemBackgroundBorderless\"\n\t\t\tandroid:visibility=\"gone\"\n\t\t\tapp:layout_constraintBottom_toBottomOf=\"@+id/qr_code_renewal_banner_title\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"@+id/qr_code_renewal_banner_title\"\n\t\t\tapp:srcCompat=\"@drawable/ic_close\"\n\t\t\tapp:tint=\"@color/black\"\n\t\t\ttools:visibility=\"visible\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/rat_conversion_banner\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_margin=\"@dimen/spacing_medium_large\"\n\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\tandroid:backgroundTint=\"@color/blueish\"\n\t\tandroid:clipChildren=\"false\"\n\t\tandroid:clipToPadding=\"false\"\n\t\tandroid:foreground=\"@drawable/ripple_rounded_rect_banner\"\n\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\ttools:visibility=\"visible\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/rat_conversion_banner_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:text=\"@string/rat_conversion_overview_title\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/rat_conversion_banner_text\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\tandroid:text=\"@string/rat_conversion_overview_text\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/rat_conversion_banner_title\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/rat_conversion_banner_more_info\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:text=\"@string/rat_conversion_overview_button\"\n\t\t\tapp:drawableEndCompat=\"@drawable/ic_arrow_right\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/rat_conversion_banner_text\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n\t<androidx.constraintlayout.widget.ConstraintLayout\n\t\tandroid:id=\"@+id/certificate_detail_banner\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_margin=\"@dimen/spacing_medium_large\"\n\t\tandroid:background=\"@drawable/bg_info_banner\"\n\t\tandroid:clipChildren=\"false\"\n\t\tandroid:clipToPadding=\"false\"\n\t\tandroid:foreground=\"@drawable/ripple_rounded_rect_banner\"\n\t\tandroid:padding=\"@dimen/spacing_medium\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\ttools:visibility=\"visible\">\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_detail_banner_title\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\tandroid:layout_width=\"0dp\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_detail_title\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_detail_banner_text\"\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/certificate_detail_banner_title\"\n\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_detail_text\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/certificate_detail_banner_more_info\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\tapp:drawableEndCompat=\"@drawable/ic_arrow_right\"\n\t\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\t\tapp:layout_constraintTop_toBottomOf=\"@+id/certificate_detail_banner_text\"\n\t\t\ttools:text=\"@string/wallet_eol_banner_invalid_from_first_february_detail_more_info\" />\n\n\t</androidx.constraintlayout.widget.ConstraintLayout>\n\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/partial_home_add_certificate_options.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"vertical\"\n\tandroid:paddingHorizontal=\"@dimen/spacing_small\">\n\n\t<LinearLayout\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:background=\"@drawable/bg_add_certificate_option\"\n\t\tandroid:orientation=\"vertical\">\n\n\t\t<TextView\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\t\tandroid:layout_width=\"wrap_content\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_large\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:text=\"@string/wallet_homescreen_add_title\" />\n\n\t\t<View\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"1dp\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:background=\"@color/blueish\" />\n\n\t\t<TextView\n\t\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_large\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:text=\"@string/wallet_homescreen_add_certificate_description\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/option_scan_certificate\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:background=\"?android:selectableItemBackground\"\n\t\t\tandroid:drawablePadding=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:text=\"@string/wallet_homescreen_qr_code_scannen\"\n\t\t\tapp:drawableStartCompat=\"@drawable/ic_qrcode_scan\"\n\t\t\tapp:drawableTint=\"@color/blue\" />\n\n\t\t<TextView\n\t\t\tandroid:id=\"@+id/option_import_pdf\"\n\t\t\tstyle=\"@style/CovidCertificate.Text.Bold.Blue\"\n\t\t\tandroid:layout_width=\"match_parent\"\n\t\t\tandroid:layout_height=\"wrap_content\"\n\t\t\tandroid:layout_marginBottom=\"@dimen/spacing_large\"\n\t\t\tandroid:background=\"?android:selectableItemBackground\"\n\t\t\tandroid:drawablePadding=\"@dimen/spacing_medium_small\"\n\t\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\t\tandroid:paddingVertical=\"@dimen/spacing_medium_large\"\n\t\t\tandroid:text=\"@string/wallet_homescreen_pdf_import\"\n\t\t\tapp:drawableStartCompat=\"@drawable/ic_pdf\"\n\t\t\tapp:drawableTint=\"@color/blue\" />\n\n\t</LinearLayout>\n\n\t<TextView\n\t\tandroid:id=\"@+id/option_transfer_code\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\tandroid:background=\"@drawable/bg_add_certificate_option\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\tandroid:paddingVertical=\"@dimen/spacing_medium_large\"\n\t\tandroid:text=\"@string/wallet_homescreen_add_transfer_code\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/option_vaccination_appointment\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Emphasized\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_small\"\n\t\tandroid:background=\"@drawable/bg_add_certificate_option\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_large\"\n\t\tandroid:paddingVertical=\"@dimen/spacing_medium_large\"\n\t\tandroid:text=\"@string/vaccination_homescreen_button_title\"\n\t\tandroid:visibility=\"gone\"\n\t\ttools:visibility=\"visible\" />\n\n</LinearLayout>"
  },
  {
    "path": "wallet/src/main/res/layout/view_transfer_code.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<merge xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\ttools:background=\"@color/blueish\"\n\ttools:gravity=\"center\"\n\ttools:orientation=\"horizontal\"\n\ttools:padding=\"@dimen/spacing_large\"\n\ttools:parentTag=\"android.widget.LinearLayout\">\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_section_1\"\n\t\tstyle=\"@style/CovidCertificate.Text.Transfer\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginEnd=\"@dimen/spacing_tiny_small\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:includeFontPadding=\"false\"\n\t\tandroid:lines=\"1\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_small\"\n\t\tandroid:textAllCaps=\"true\"\n\t\tapp:layout_constraintEnd_toStartOf=\"@+id/transfer_code_section_2\"\n\t\tapp:layout_constraintHorizontal_chainStyle=\"packed\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_title\"\n\t\ttools:text=\"A2X\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_section_2\"\n\t\tstyle=\"@style/CovidCertificate.Text.Transfer\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_tiny_small\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:includeFontPadding=\"false\"\n\t\tandroid:lines=\"1\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_small\"\n\t\tandroid:textAllCaps=\"true\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"@+id/transfer_code_section_1\"\n\t\tapp:layout_constraintEnd_toStartOf=\"@+id/transfer_code_section_3\"\n\t\tapp:layout_constraintStart_toEndOf=\"@+id/transfer_code_section_1\"\n\t\tapp:layout_constraintTop_toTopOf=\"@+id/transfer_code_section_1\"\n\t\ttools:text=\"56K\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_section_3\"\n\t\tstyle=\"@style/CovidCertificate.Text.Transfer\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginStart=\"@dimen/spacing_tiny_small\"\n\t\tandroid:background=\"@color/white\"\n\t\tandroid:includeFontPadding=\"false\"\n\t\tandroid:lines=\"1\"\n\t\tandroid:paddingHorizontal=\"@dimen/spacing_very_small\"\n\t\tandroid:textAllCaps=\"true\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"@+id/transfer_code_section_1\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toEndOf=\"@+id/transfer_code_section_2\"\n\t\tapp:layout_constraintTop_toTopOf=\"@+id/transfer_code_section_1\"\n\t\ttools:text=\"7WP\" />\n\n</merge>"
  },
  {
    "path": "wallet/src/main/res/layout/view_transfer_code_bubble.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<merge xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\ttools:clipToPadding=\"false\"\n\ttools:paddingTop=\"@dimen/spacing_medium_large\"\n\ttools:parentTag=\"androidx.constraintlayout.widget.ConstraintLayout\">\n\n\t<View\n\t\tandroid:id=\"@+id/background\"\n\t\tandroid:layout_width=\"match_parent\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:background=\"@drawable/bg_certificate_bubble\"\n\t\tapp:backgroundTint=\"@color/blueish\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\" />\n\n\t<ImageView\n\t\tandroid:id=\"@+id/transfer_code_error_icon\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tapp:layout_constraintStart_toStartOf=\"@+id/background\"\n\t\tapp:layout_constraintTop_toTopOf=\"@+id/background\"\n\t\ttools:src=\"@drawable/ic_corner_process_error\" />\n\n\t<FrameLayout\n\t\tandroid:id=\"@+id/transfer_code_icon_container\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:background=\"@drawable/circle_white\"\n\t\tandroid:padding=\"@dimen/spacing_very_small\"\n\t\tapp:layout_constraintBottom_toTopOf=\"parent\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\">\n\n\t\t<ImageView\n\t\t\tandroid:id=\"@+id/transfer_code_status_icon\"\n\t\t\tandroid:layout_width=\"26dp\"\n\t\t\tandroid:layout_height=\"26dp\"\n\t\t\tandroid:layout_gravity=\"center\"\n\t\t\tandroid:scaleType=\"centerInside\"\n\t\t\tapp:srcCompat=\"@drawable/ic_info_outline\"\n\t\t\tapp:tint=\"@color/blue\" />\n\n\t\t<ProgressBar\n\t\t\tandroid:id=\"@+id/transfer_code_loading_indicator\"\n\t\t\tandroid:layout_width=\"26dp\"\n\t\t\tandroid:layout_height=\"26dp\"\n\t\t\tandroid:visibility=\"gone\" />\n\t</FrameLayout>\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_validity\"\n\t\tstyle=\"@style/CovidCertificate.Text.Blue\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_icon_container\"\n\t\ttools:text=\"@string/wallet_transfer_code_expire_singular\"\n\t\ttools:visibility=\"gone\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:text=\"@string/wallet_transfer_code_title\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_icon_container\"\n\t\ttools:visibility=\"gone\" />\n\n\t<androidx.constraintlayout.widget.Barrier\n\t\tandroid:id=\"@+id/transfer_code_title_barrier\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tapp:barrierDirection=\"bottom\"\n\t\tapp:constraint_referenced_ids=\"transfer_code_validity,transfer_code_title\" />\n\n\t<ch.admin.bag.covidcertificate.wallet.transfercode.view.TransferCodeView\n\t\tandroid:id=\"@+id/transfer_code_value\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_medium_large\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_title_barrier\"\n\t\ttools:visibility=\"gone\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_expired\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold.Title\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:text=\"@string/wallet_transfer_code_old_code\"\n\t\tandroid:textColor=\"@color/blue\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_icon_container\"\n\t\ttools:visibility=\"gone\" />\n\n\t<androidx.constraintlayout.widget.Barrier\n\t\tandroid:id=\"@+id/transfer_code_state_barrier\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tapp:barrierDirection=\"bottom\"\n\t\tapp:constraint_referenced_ids=\"transfer_code_value,transfer_code_expired\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_creation_datetime\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_margin=\"@dimen/spacing_medium_large\"\n\t\tandroid:breakStrategy=\"high_quality\"\n\t\tandroid:hyphenationFrequency=\"full\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constrainedWidth=\"true\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_state_barrier\"\n\t\ttools:text=\"@string/wallet_transfer_code_createdat\"\n\t\ttools:visibility=\"gone\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_error_title\"\n\t\tstyle=\"@style/CovidCertificate.Text.Bold\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:gravity=\"center\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constrainedWidth=\"true\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_icon_container\"\n\t\ttools:text=\"@string/verifier_network_error_text\"\n\t\ttools:visibility=\"visible\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_error_description\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium_large\"\n\t\tandroid:gravity=\"center\"\n\t\tandroid:paddingBottom=\"@dimen/spacing_small\"\n\t\tandroid:visibility=\"gone\"\n\t\tapp:layout_constrainedWidth=\"true\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@+id/verification_error_code\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_error_title\"\n\t\ttools:text=\"@string/wallet_detail_network_error_text\"\n\t\ttools:visibility=\"visible\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_code_transfer_code\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"end\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:textColor=\"@color/grey\"\n\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\tandroid:textStyle=\"bold\"\n\t\tandroid:visibility=\"invisible\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/verification_error_code\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_error_description\"\n\t\ttools:text=\"NE-NOCONN\"\n\t\ttools:visibility=\"visible\" />\n\n\t<TextView\n\t\tandroid:id=\"@+id/transfer_bubble_code_error_code\"\n\t\tstyle=\"@style/CovidCertificate.Text\"\n\t\tandroid:layout_width=\"wrap_content\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_gravity=\"end\"\n\t\tandroid:layout_marginHorizontal=\"@dimen/spacing_medium_large\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_very_small\"\n\t\tandroid:layout_marginBottom=\"@dimen/spacing_medium_large\"\n\t\tandroid:textColor=\"@color/grey\"\n\t\tandroid:textSize=\"@dimen/text_size_small\"\n\t\tandroid:visibility=\"invisible\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toBottomOf=\"@+id/transfer_code_transfer_code\"\n\t\ttools:text=\"NE-NOCONN\"\n\t\ttools:visibility=\"visible\" />\n\n</merge>"
  },
  {
    "path": "wallet/src/main/res/layout/view_transfer_code_waiting.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<merge xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\txmlns:tools=\"http://schemas.android.com/tools\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\"\n\ttools:parentTag=\"androidx.constraintlayout.widget.ConstraintLayout\">\n\n\t<ImageView\n\t\tandroid:id=\"@+id/illu_transfer_code_waiting_ripple\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tandroid:alpha=\"0\"\n\t\ttools:alpha=\"1\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"@+id/illu_transfer_code_waiting_phone\"\n\t\tapp:layout_constraintEnd_toEndOf=\"@+id/illu_transfer_code_waiting_phone\"\n\t\tapp:layout_constraintStart_toStartOf=\"@+id/illu_transfer_code_waiting_phone\"\n\t\tapp:layout_constraintTop_toTopOf=\"@+id/illu_transfer_code_waiting_phone\"\n\t\tapp:srcCompat=\"@drawable/illu_transfer_code_waiting_ripple\" />\n\n\t<ImageView\n\t\tandroid:id=\"@+id/illu_transfer_code_waiting_shadow\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"wrap_content\"\n\t\tandroid:layout_marginTop=\"@dimen/spacing_small\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tapp:layout_constraintEnd_toEndOf=\"@id/illu_transfer_code_waiting_phone\"\n\t\tapp:layout_constraintStart_toStartOf=\"@id/illu_transfer_code_waiting_phone\"\n\t\tapp:layout_constraintBottom_toBottomOf=\"parent\"\n\t\tapp:srcCompat=\"@drawable/illu_transfer_code_waiting_shadow\" />\n\n\t<ImageView\n\t\tandroid:id=\"@+id/illu_transfer_code_waiting_phone\"\n\t\tandroid:layout_width=\"0dp\"\n\t\tandroid:layout_height=\"0dp\"\n\t\tandroid:layout_margin=\"@dimen/spacing_medium\"\n\t\tandroid:adjustViewBounds=\"true\"\n\t\tapp:layout_constraintEnd_toEndOf=\"parent\"\n\t\tapp:layout_constraintStart_toStartOf=\"parent\"\n\t\tapp:layout_constraintTop_toTopOf=\"parent\"\n\t\tapp:layout_constraintDimensionRatio=\"74:146\"\n\t\tapp:layout_constraintBottom_toTopOf=\"@id/illu_transfer_code_waiting_shadow\"\n\t\tapp:srcCompat=\"@drawable/illu_transfer_code_waiting_phone\" />\n\n</merge>"
  },
  {
    "path": "wallet/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\"/>\n    <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n</adaptive-icon>"
  },
  {
    "path": "wallet/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\"/>\n    <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n</adaptive-icon>"
  },
  {
    "path": "wallet/src/main/res/xml/filepaths.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  ~ Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n  ~\n  ~ This Source Code Form is subject to the terms of the Mozilla Public\n  ~ License, v. 2.0. If a copy of the MPL was not distributed with this\n  ~ file, You can obtain one at https://mozilla.org/MPL/2.0/.\n  ~\n  ~ SPDX-License-Identifier: MPL-2.0\n  -->\n\n<paths xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<cache-path\n\t\tname=\"certificate_pdfs\"\n\t\tpath=\"certificate-pdfs/\" />\n</paths>"
  },
  {
    "path": "wallet/src/prod/java/ch/admin/bag/covidcertificate/wallet/debug/WalletDebugFragment.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.debug\n/*\n * Copyright (c) 2021 Ubique Innovation AG <https://www.ubique.ch>\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * SPDX-License-Identifier: MPL-2.0\n */\n\n\nimport ch.admin.bag.covidcertificate.common.debug.DebugFragment\n\nclass WalletDebugFragment : DebugFragment() {\n\tcompanion object {\n\t\tfun newInstance(): DebugFragment = DebugFragment()\n\t}\n}"
  },
  {
    "path": "wallet/src/test/java/ch/admin/bag/covidcertificate/wallet/transfercode/LuhnTest.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.Luhn\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.Luhn.TRANSFER_CODE_LEN\nimport org.junit.Assert.assertEquals\nimport org.junit.Test\nimport org.junit.runner.RunWith\nimport org.junit.runners.Parameterized\nimport org.junit.runners.Parameterized.Parameters\n\n\n@RunWith(Parameterized::class)\nclass LuhnTest(\n\tprivate val code: CharArray,\n\tprivate val expectedCheckChar: Char,\n) {\n\n\tcompanion object {\n\n\t\t@Parameters\n\t\t@JvmStatic\n\t\tfun buildTestCases(): Collection<Array<Any>> {\n\t\t\tval nineLetterCodes = listOf(\n\t\t\t\t\"Y8P8ECFN8\",\n\t\t\t\t\"HDTYRB66W\",\n\t\t\t\t\"YS6R7H88T\",\n\t\t\t\t\"K42K6F7R2\",\n\t\t\t\t\"3BY8DAZYS\",\n\t\t\t\t\"ADWYF11SY\",\n\t\t\t\t\"453S6HUA6\",\n\t\t\t\t\"WR7UPHB4A\",\n\t\t\t\t\"37WDPRSKM\",\n\t\t\t\t\"01AWUUB2M\",\n\t\t\t\t\"MA4S9CNUK\",\n\t\t\t\t\"SY7M684WA\",\n\t\t\t\t\"X216WN3YF\",\n\t\t\t\t\"3C2YFKCNP\",\n\t\t\t\t\"TNKBZ0TSK\",\n\t\t\t).map { Pair(it.slice(0..7), it[8]) }\n\n\t\t\tval cases = mutableListOf<Pair<String, Char>>(\n\t\t\t\tPair(\"CHAR\", 'M'),\n\t\t\t\tPair(\"SW1SS\", '9'),\n\t\t\t\tPair(\"APPS\", '1'),\n\t\t\t\tPair(\"0123456789\", 'S'),\n\t\t\t\tPair(\"TRANSFERC0DE\", 'T'),\n\t\t\t)\n\t\t\tcases.addAll(nineLetterCodes)\n\n\t\t\treturn cases.map { arrayOf(it.first.toCharArray(), it.second) }\n\t\t}\n\t}\n\n\t@Test\n\tfun testComputeCheckCharacter() {\n\t\tval checkChar = Luhn.computeCheckCharacter(code)\n\t\tassertEquals(expectedCheckChar, checkChar)\n\t}\n\n\t@Test\n\tfun testGenerateNewTransferCode() {\n\t\tfor (i in 0 until 5) {\n\t\t\tval code = Luhn.generateNewTransferCode()\n\t\t\tval prefix = code.substring(0, TRANSFER_CODE_LEN - 1).toCharArray()\n\t\t\tval checkChar = Luhn.computeCheckCharacter(prefix)\n\n\t\t\tassertEquals(checkChar, code[TRANSFER_CODE_LEN - 1])\n\t\t}\n\t}\n\n\t@Test\n\tfun checkAlphabetSize() = assertEquals(Luhn.ALPHABET.size, 29)\n\n}"
  },
  {
    "path": "wallet/src/test/java/ch/admin/bag/covidcertificate/wallet/transfercode/LuhnTestWrongCodes.kt",
    "content": "package ch.admin.bag.covidcertificate.wallet.transfercode\n\nimport ch.admin.bag.covidcertificate.wallet.transfercode.logic.Luhn\nimport org.junit.Assert.assertNotEquals\nimport org.junit.Test\nimport org.junit.runner.RunWith\nimport org.junit.runners.Parameterized\nimport org.junit.runners.Parameterized.Parameters\n\n\n@RunWith(Parameterized::class)\nclass LuhnTestWrongCodes(\n\t\tprivate val code: CharArray,\n\t\tprivate val expectedCheckChar: Char,\n) {\n\n    companion object {\n\n        @Parameters\n        @JvmStatic\n        fun buildTestCases(): Collection<Array<Any>> {\n            val cases = listOf(\n\t\t\t\t\t\"Y8P8ECFN9\",\n\t\t\t\t\t\"HDTYRC66W\",\n\t\t\t\t\t\"YS6RH788T\",\n\t\t\t\t\t\"K43K6F7R2\",\n\t\t\t\t\t\"3B8YDAZYS\",\n\t\t\t\t\t\"ADWFY11SY\",\n\t\t\t\t\t\"453S6HU6A\",\n\t\t\t\t\t\"WR7UHPB4A\",\n\t\t\t\t\t\"37WDRPSKM\",\n\t\t\t\t\t\"10AWUUB2M\",\n\t\t\t\t\t\"MAS49CNUK\",\n\t\t\t\t\t\"SY7M864WA\",\n\t\t\t\t\t\"$%(*(!@#$\" + \"_!@*#\", // the sequence $_ doesn't go well with Kotlin (even in raw strings)\n\t\t\t).map { Pair(it.slice(0..(it.length - 2)), it[it.length - 1]) }\n\n            return cases.map { arrayOf(it.first.toCharArray(), it.second) }\n        }\n    }\n\n    @Test\n    fun testComputeCheckCharacter() {\n        val checkChar = Luhn.computeCheckCharacter(code)\n        assertNotEquals(expectedCheckChar, checkChar)\n    }\n\n}"
  }
]