Build SSD app with typed Kotlin models

ober

aa91e09a5eb1d9a8264742900961ef2a4786fb8f

diff --git a/.build.yml b/.build.yml
index 303d58d..9128fa2 100644
--- a/.build.yml
+++ b/.build.yml
@@ -5,7 +5,7 @@ packages:
   - make=4.4.1-r4
 sources:
   # Build dependency: full immutable commit, mirrored in dependencies.lock.json.
-  - "https://git.sr.ht/~lisp/jerboa#610d17bceac32fd4f42d7e394c5264ee3d761d1a"
+  - "https://git.sr.ht/~lisp/jerboa#e24a87752cc82173b8fe56d836f17d5bcd9e2006"
   # The second source is the build subject selected by the SourceHut submitter.
   - https://git.sr.ht/~lisp/jerboa-android
 tasks:
@@ -14,6 +14,6 @@ tasks:
       test "$(apk info -v chez-scheme)" = chez-scheme-10.3.0-r2
       test "$(apk info -v git)" = git-2.54.0-r0
       test "$(apk info -v make)" = make-4.4.1-r4
-      test "$(git -C ../jerboa rev-parse HEAD)" = 610d17bceac32fd4f42d7e394c5264ee3d761d1a
-      test "$(git -C ../jerboa rev-parse 'HEAD^{tree}')" = fb3934d1ac782a04daacfe7fca0966f60e22407c
+      test "$(git -C ../jerboa rev-parse HEAD)" = e24a87752cc82173b8fe56d836f17d5bcd9e2006
+      test "$(git -C ../jerboa rev-parse 'HEAD^{tree}')" = 0b40381c8ea6652a46503fcea38208aed61c6023
       JERBOA="chez --libdirs .:../jerboa/lib --script" make test
diff --git a/.gitsafe.json b/.gitsafe.json
new file mode 100644
index 0000000..154dd8e
--- /dev/null
+++ b/.gitsafe.json
@@ -0,0 +1,7 @@
+{
+  "exclude": [
+    "dependencies.lock.json",
+    "supply-chain/gradle-verification-metadata.xml",
+    "tests/fixtures/ssd-runtime.lock.json"
+  ]
+}
diff --git a/dependencies.lock.json b/dependencies.lock.json
index 70fa128..0da6a32 100644
--- a/dependencies.lock.json
+++ b/dependencies.lock.json
@@ -11,8 +11,8 @@
   "generator_runtime": {
     "name": "jerboa",
     "repository": "https://git.sr.ht/~lisp/jerboa",
-    "commit": "610d17bceac32fd4f42d7e394c5264ee3d761d1a",
-    "tree": "fb3934d1ac782a04daacfe7fca0966f60e22407c"
+    "commit": "e24a87752cc82173b8fe56d836f17d5bcd9e2006",
+    "tree": "0b40381c8ea6652a46503fcea38208aed61c6023"
   },
   "assurance_tools": {
     "osv_scanner": {
@@ -54,7 +54,7 @@
       "macos_sha256": "0d47f17c3924e5472b6125aa608d949dd7f46510889729671f31f2f4d801e8e7",
       "linux_x86_64_sha256": "839609d6d776d6dd60a02aa577d97193ce3e650cf1deaabf062321e23bbd6bf6"
     },
-    "gradle_verification_metadata_sha256": "a3e045c36af61ccc34e805761b1a1a42a00b6f88c5a98abd0d058e4f1ef3a97b",
+    "gradle_verification_metadata_sha256": "5183086e6dfde2f3fa73229eae57987ac75f5bdfa65a05c015646d77ffcb3307",
     "android_compile_sdk": 35,
     "android_target_sdk": 35,
     "android_min_sdk": 26
@@ -63,7 +63,7 @@
     "androidx_documentfile": "androidx.documentfile:documentfile:1.1.0",
     "resolved_runtime_lock": {
       "path": "tests/fixtures/ssd-runtime.lock.json",
-      "sha256": "beb65a1320dafa71ba8c74ac0f06cbbe55bd62250d90ab02f53092be3e0ffa6f"
+      "sha256": "ac00e3a927dd3fb298cda8eaffd1609dec46097518a045393904607d087219e7"
     },
     "resolved_build_classpath_lock": {
       "path": "tests/fixtures/ssd-build.lock.json",
diff --git a/full-kotlin.md b/full-kotlin.md
index 85054cf..9bd7f76 100644
--- a/full-kotlin.md
+++ b/full-kotlin.md
@@ -43,7 +43,7 @@ The vendored Jerboa tree already has the right starting point:
 
 Do not fork that model inside `jandroid.ss`. General Kotlin backend work belongs in Jerboa. Android project and Android DSL work belongs in `jerboa-android`.
 
-Version caveat: this review inspected the clean, shallow `~/sfb/vendor/jerboa` checkout at commit `896d553d84f23e1a92728a3a078c69ff8aad694f`. This repository currently pins Jerboa commit `23ad83d28ac65cf6f0d2d702fd32934f207c26bf`, which is not present in that shallow checkout. Before editing compiler APIs, check out the exact pinned commit (or the intended replacement commit), rerun the typed parser/checker/core inventory, and record any differences. Do not assume the two snapshots expose identical IR.
+Version caveat: this repository now pins Jerboa commit `e24a87752cc82173b8fe56d836f17d5bcd9e2006`, tree `0b40381c8ea6652a46503fcea38208aed61c6023`. Before editing compiler APIs, check out the exact pinned commit (or the intended replacement commit), rerun the typed parser/checker/core inventory, and record any differences. Do not assume two Jerboa snapshots expose identical IR.
 
 ### 2.3 `~/sfb` source requirements
 
diff --git a/scripts/resolved-artifacts.init.gradle b/scripts/resolved-artifacts.init.gradle
index a7a7996..d67fa37 100644
--- a/scripts/resolved-artifacts.init.gradle
+++ b/scripts/resolved-artifacts.init.gradle
@@ -78,6 +78,13 @@ gradle.projectsEvaluated {
                 def id = artifact.moduleVersion.id
                 [("${id.group}:${id.name}:${id.version}".toString()): digest(artifact.file)]
             }
+            def actualPath = System.getenv('JANDROID_ACTUAL_RUNTIME_LOCK')
+            if (actualPath != null && !actualPath.isBlank()) {
+                new File(actualPath).text = JsonOutput.prettyPrint(JsonOutput.toJson([
+                    schema: 1,
+                    artifacts: new TreeMap(actualLock)
+                ])) + '\n'
+            }
             verifyLock(actualLock, 'JANDROID_EXPECTED_RUNTIME_LOCK')
             writeSpdx(artifacts, new File(destination), 'runtime')
         }
diff --git a/scripts/verify-supply-chain.sh b/scripts/verify-supply-chain.sh
index 8531d65..0d7dcee 100755
--- a/scripts/verify-supply-chain.sh
+++ b/scripts/verify-supply-chain.sh
@@ -3,14 +3,14 @@ set -eu
 
 repo=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd -P)
 lock="$repo/dependencies.lock.json"
-jerboa_commit=610d17bceac32fd4f42d7e394c5264ee3d761d1a # gitsafe:ignore
-jerboa_tree=fb3934d1ac782a04daacfe7fca0966f60e22407c # gitsafe:ignore
+jerboa_commit=e24a87752cc82173b8fe56d836f17d5bcd9e2006 # gitsafe:ignore
+jerboa_tree=0b40381c8ea6652a46503fcea38208aed61c6023 # gitsafe:ignore
 gradle_sha=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78
 jdk_macos_sha=8fa1eff40bb637a33613b2ccb8b12c70dc3661cc22cf8e784943715769a05336
 jdk_linux_sha=d8afc263758141a66e0e3aafc321e783f7016696f4eaea067d340a269037d331
-metadata_sha=a3e045c36af61ccc34e805761b1a1a42a00b6f88c5a98abd0d058e4f1ef3a97b
-runtime_lock_sha=beb65a1320dafa71ba8c74ac0f06cbbe55bd62250d90ab02f53092be3e0ffa6f
-build_lock_sha=a41508b7d2b016f3c8aef0ac7877922b147aaa532b0be0a1cf5824fe01522f99
+metadata_sha=5183086e6dfde2f3fa73229eae57987ac75f5bdfa65a05c015646d77ffcb3307 # gitsafe:ignore
+runtime_lock_sha=ac00e3a927dd3fb298cda8eaffd1609dec46097518a045393904607d087219e7 # gitsafe:ignore
+build_lock_sha=a41508b7d2b016f3c8aef0ac7877922b147aaa532b0be0a1cf5824fe01522f99 # gitsafe:ignore
 osv_macos_sha=9ca3185ad63e9ab54f7cb90f46a7362be02d80e37f0123d095a54355ea202f5d
 osv_linux_sha=15314940c10d26af9c6649f150b8a47c1262e8fc7e17b1d1029b0e479e8ed8a0
 
diff --git a/supply-chain/gradle-verification-metadata.xml b/supply-chain/gradle-verification-metadata.xml
index c276ff9..6bb9e46 100644
--- a/supply-chain/gradle-verification-metadata.xml
+++ b/supply-chain/gradle-verification-metadata.xml
@@ -5,6 +5,37 @@
       <verify-signatures>false</verify-signatures>
    </configuration>
    <components>
+      <component group="androidx.activity" name="activity" version="1.0.0">
+         <artifact name="activity-1.0.0.pom">
+            <sha256 value="27a4be7462629c312da0b831a0978d2076fc34074145fb61dd4e86d7c8469b82" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.activity" name="activity" version="1.6.0">
+         <artifact name="activity-1.6.0.aar">
+            <sha256 value="7f08723ecabefba616d60c714b0e9a31301bd4d0792fcc7946c1479c57fd2d28" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="activity-1.6.0.module">
+            <sha256 value="b561e41c1bddb2160f79b9bc7541ad9ed110147ab2ccf63719a23d498470b043" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.annotation" name="annotation" version="1.0.0">
+         <artifact name="annotation-1.0.0.pom">
+            <sha256 value="a179c12db43d9c0300c9db63f4811db496504be5401b951d422b78490ad1e5b4" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.annotation" name="annotation" version="1.1.0">
+         <artifact name="annotation-1.1.0.pom">
+            <sha256 value="2e9372ba7780ef44952adbf86b66e1f08682c1e5277c926185f6564a13799efe" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.annotation" name="annotation" version="1.3.0">
+         <artifact name="annotation-1.3.0.jar">
+            <sha256 value="97dc45afefe3a1e421da42b8b6e9f90491477c45fc6178203e3a5e8a05ee8553" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="annotation-1.3.0.module">
+            <sha256 value="9516c2ae44284ea0bd3d0eade0ee638879b708cbe31e3af92ba96c300604ebc3" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.annotation" name="annotation" version="1.8.1">
          <artifact name="annotation-1.8.1.module">
             <sha256 value="e6386e85afdd865044e216575e493ed39a63a6325bd925379a21429c3941c8b5" origin="Generated by Gradle"/>
@@ -18,6 +49,14 @@
             <sha256 value="0361d1526a4d7501255e19779e09e93cdbd07fee0e2f5c50b7a137432d510119" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.annotation" name="annotation-experimental" version="1.3.0">
+         <artifact name="annotation-experimental-1.3.0.aar">
+            <sha256 value="abfd29c8556e5bd0325a9f769ab9e9d154ff4a5515c476cdd5a2a8285b1b19dc" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="annotation-experimental-1.3.0.module">
+            <sha256 value="5eebeaff01d042e06dcf292abf8964ad391e4b0159f0090f16253d6045d38da0" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.annotation" name="annotation-jvm" version="1.8.1">
          <artifact name="annotation-jvm-1.8.1.jar">
             <sha256 value="9aab326d9492800991854360ac248f493ce7f7c3183519309b78ace9e240f6f6" origin="Generated by Gradle"/>
@@ -26,6 +65,22 @@
             <sha256 value="c959e3b0cdc75c15efe01605fa56aa79f033e39238e150638b8fabde6aa121a0" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.appcompat" name="appcompat" version="1.6.1">
+         <artifact name="appcompat-1.6.1.aar">
+            <sha256 value="7ea5573b93ababd3bd32312451c6ea48a662b03a140dda81aebe75776a20a422" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="appcompat-1.6.1.module">
+            <sha256 value="f755380d80563eecca7db0bf6368b796afbefe381554c87b752bf9e291f3c1a6" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.appcompat" name="appcompat-resources" version="1.6.1">
+         <artifact name="appcompat-resources-1.6.1.aar">
+            <sha256 value="db915dbf49357863de1669ff9fdd8e9008d65fe357af6cce9ae63043ad5f6617" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="appcompat-resources-1.6.1.module">
+            <sha256 value="c814c15c2ff34f094f8b6994b2cd51e6e8d062bcfc86912f55dd6e08f33acee7" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.arch.core" name="core-common" version="2.1.0">
          <artifact name="core-common-2.1.0.jar">
             <sha256 value="fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889" origin="Generated by Gradle"/>
@@ -34,6 +89,14 @@
             <sha256 value="83bbb3960eaabc600ac366c94cb59414e441532a1d6aa9388b0b8bfface5cf01" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.arch.core" name="core-runtime" version="2.0.0">
+         <artifact name="core-runtime-2.0.0.aar">
+            <sha256 value="87e65fc767c712b437649c7cee2431ebb4bed6daef82e501d4125b3ed3f65f8e" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="core-runtime-2.0.0.pom">
+            <sha256 value="e2007d41ddc69ee2a77fed7b5c1dc5a41e01122926ba59696aab7b18d2264411" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.arch.core" name="core-runtime" version="2.1.0">
          <artifact name="core-runtime-2.1.0.aar">
             <sha256 value="dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852" origin="Generated by Gradle"/>
@@ -50,6 +113,14 @@
             <sha256 value="a7913a5275ad68e555d2612ebe8c14c367b153e14ca48a1872a64899020e54ef" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.collection" name="collection" version="1.1.0">
+         <artifact name="collection-1.1.0.jar">
+            <sha256 value="632a0e5407461de774409352940e292a291037724207a787820c77daf7d33b72" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="collection-1.1.0.pom">
+            <sha256 value="67e9066ca4acfdc6e3cc508293c31ba0398057ff118e4f70b1e1813c9a3456d1" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.concurrent" name="concurrent-futures" version="1.0.0">
          <artifact name="concurrent-futures-1.0.0.jar">
             <sha256 value="5595a40e278a7b39fa78a09490e3d7f3faa95c7b01447148bd38b5ade0605c35" origin="Generated by Gradle"/>
@@ -58,6 +129,11 @@
             <sha256 value="4505b9a5e30a9418b59a9ad6702c3e4193aea6e691a3d03cf220c7640ad083e2" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.core" name="core" version="1.2.0">
+         <artifact name="core-1.2.0.pom">
+            <sha256 value="3d1f4e37b77dd92353879a040ab4ce2f706798bcbdf066147491c3642b3f79a6" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.core" name="core" version="1.7.0">
          <artifact name="core-1.7.0.aar">
             <sha256 value="aaf6734226fff923784f92f65d78a2984dbf17534138855c5ce2038f18656e0b" origin="Generated by Gradle"/>
@@ -66,6 +142,51 @@
             <sha256 value="988f820899d5a4982e5c878ca1cd417970ace332ea2ff72f5be19b233fa0e788" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.core" name="core" version="1.9.0">
+         <artifact name="core-1.9.0.aar">
+            <sha256 value="8bda3ee3a88887d54f6679fb6b6cd788629f73234ac91c8bbed924e721ec85b8" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="core-1.9.0.module">
+            <sha256 value="8674ade1d12962469dd2d1e6edc03b465f20d180b0840a129bc40b351e8651d1" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.core" name="core-ktx" version="1.2.0">
+         <artifact name="core-ktx-1.2.0.aar">
+            <sha256 value="dcb74d510d552b35eff73b0dd27b829649535f3902e5b5a1f26040383c10a940" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="core-ktx-1.2.0.pom">
+            <sha256 value="29eaddba4e6a35e68a128e594ebae3b72ef7e767f1b273ef93dc2ed019ff97f6" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.core" name="core-ktx" version="1.8.0">
+         <artifact name="core-ktx-1.8.0.module">
+            <sha256 value="a91bc3e02f209f643dd8275345a9e3003ce20d64fc0760eccf479c1709842f72" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.core" name="core-ktx" version="1.9.0">
+         <artifact name="core-ktx-1.9.0.aar">
+            <sha256 value="1542a1df7be908c95fee91b8dbc03fd974f53f11d84a85d881f95a52551c4051" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="core-ktx-1.9.0.module">
+            <sha256 value="4d46646066c794f2812d5b33a9422d37e4f918c4d809cd1fb2579c7022ef2818" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.cursoradapter" name="cursoradapter" version="1.0.0">
+         <artifact name="cursoradapter-1.0.0.aar">
+            <sha256 value="a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="cursoradapter-1.0.0.pom">
+            <sha256 value="62d95c89850af21030b19f14d5f7ecd6d8bcc9a3014c59002ec99624caac8100" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.customview" name="customview" version="1.0.0">
+         <artifact name="customview-1.0.0.aar">
+            <sha256 value="20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="customview-1.0.0.pom">
+            <sha256 value="ce9e47b87184f5bd5e139e9becd5b26476d42d78c31bf2fdedc37acb41b9ad49" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.databinding" name="databinding-common" version="8.13.2">
          <artifact name="databinding-common-8.13.2.jar">
             <sha256 value="66cab82639dac0f6c2433464c093b074d608c4bb887ec38a9b8bc4ac98126732" origin="Generated by Gradle"/>
@@ -90,6 +211,64 @@
             <sha256 value="3525a13b15328b9d94851c1591ea7f82c772a1c78d4b9f99886ffdfe14a273b6" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.drawerlayout" name="drawerlayout" version="1.0.0">
+         <artifact name="drawerlayout-1.0.0.aar">
+            <sha256 value="9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="drawerlayout-1.0.0.pom">
+            <sha256 value="da6733425a83f5ce850878fa7201082345fed7c668dd58550fdd19c0396c6fa4" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.emoji2" name="emoji2" version="1.2.0">
+         <artifact name="emoji2-1.2.0.aar">
+            <sha256 value="f31a06c150ecb03073f55a6f7b0b74a240a6a8d727c14ce76726d020570dfa8c" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="emoji2-1.2.0.module">
+            <sha256 value="9d1996cca03777baa1f27cd15531db983a633dae37b90f85bd53501acb56699d" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.emoji2" name="emoji2-views-helper" version="1.2.0">
+         <artifact name="emoji2-views-helper-1.2.0.aar">
+            <sha256 value="7ffa4d464d9db259fca0cdb50fbd4ab63d6872bcda59468b9f7555504c7d5ac4" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="emoji2-views-helper-1.2.0.module">
+            <sha256 value="a3a9db581abf1787b01ff15c40f059530e8e64f3937caa2d788f42eb39893268" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.exifinterface" name="exifinterface" version="1.0.0">
+         <artifact name="exifinterface-1.0.0.aar">
+            <sha256 value="ee48be10aab8f54efff4c14b77d11e10b9eeee4379d5ef6bf297a2923c55cc11" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="exifinterface-1.0.0.pom">
+            <sha256 value="ee15ccb739fa8ab72e48649e53a3def0ee2d5a110736018e781df00437fbf2b3" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.fragment" name="fragment" version="1.0.0">
+         <artifact name="fragment-1.0.0.pom">
+            <sha256 value="e329d673361e94d2e8f4d4d14e1f0586368bd43fb19efd5766ce7498bcccd162" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.fragment" name="fragment" version="1.1.0">
+         <artifact name="fragment-1.1.0.pom">
+            <sha256 value="ef78eb27ac02ddf3545d5f8a3857c73a2837a01853f8d5fcf77251011db52544" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.fragment" name="fragment" version="1.3.6">
+         <artifact name="fragment-1.3.6.aar">
+            <sha256 value="12f0831b4f08092d5dda272c1923c11a022ff20ceffed3e801751e21bb8d1c1e" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="fragment-1.3.6.module">
+            <sha256 value="a140981a3e65f3cab354652682061d23d19b01e00ee712bc38a5e9b0f69eedcf" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.interpolator" name="interpolator" version="1.0.0">
+         <artifact name="interpolator-1.0.0.aar">
+            <sha256 value="33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="interpolator-1.0.0.pom">
+            <sha256 value="0ddc07cc39699f48ecd9ec894b5830c0f09e22e82959294edf37217224c88b7b" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.lifecycle" name="lifecycle-common" version="2.3.1">
          <artifact name="lifecycle-common-2.3.1.jar">
             <sha256 value="15848fb56db32f4c7cdc72b324003183d52a4884d6bf09be708ac7f587d139b5" origin="Generated by Gradle"/>
@@ -98,6 +277,48 @@
             <sha256 value="5fb7c8514d8c56cada5e29ef89dc0289e71942ab4cb0b2e6dca137b9dcb8fdd4" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.lifecycle" name="lifecycle-common" version="2.5.1">
+         <artifact name="lifecycle-common-2.5.1.jar">
+            <sha256 value="20ad1520f625cf455e6afd7290988306d3a9886efa993e0860fbabf4bb3f7bda" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-common-2.5.1.module">
+            <sha256 value="7d4bc2961cd5bd399e3621d434f0c453dd6cadf891f917a946cc291abdda8f1a" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-livedata" version="2.0.0">
+         <artifact name="lifecycle-livedata-2.0.0.aar">
+            <sha256 value="c82609ced8c498f0a701a30fb6771bb7480860daee84d82e0a81ee86edf7ba39" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-livedata-2.0.0.pom">
+            <sha256 value="a84842ffc0f14e518db75c05cc112680a8a4a164fa78395be32d88304a439423" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-livedata-core" version="2.3.1">
+         <artifact name="lifecycle-livedata-core-2.3.1.module">
+            <sha256 value="b1e095d550d39a7d6c815761d6dbe3fd64eb31a39dc28146e78bbf2c01ba8f41" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-livedata-core" version="2.5.1">
+         <artifact name="lifecycle-livedata-core-2.5.1.aar">
+            <sha256 value="ee792103ca248bfaf150c45a93871e4cf7e8cebab990e0f62f7de5d4ff2f209f" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-livedata-core-2.5.1.module">
+            <sha256 value="3f388e9e078901970c2bfcfc02fecae948de4b46be5211919ae07d012ca2980d" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-process" version="2.4.1">
+         <artifact name="lifecycle-process-2.4.1.aar">
+            <sha256 value="db649b3efa24e31052145310b002db91da346b3f89c093ec38c3046db45e794e" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-process-2.4.1.module">
+            <sha256 value="e3aae3ed04b4744ff31452e98fd299e3adfd28d3b5723661d9678b92fa09ceb4" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-runtime" version="2.0.0">
+         <artifact name="lifecycle-runtime-2.0.0.pom">
+            <sha256 value="a92a46fa7aec8ac326a5d578734a2d5b63206976996b9e06cae171b35b0ab6de" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.lifecycle" name="lifecycle-runtime" version="2.3.1">
          <artifact name="lifecycle-runtime-2.3.1.aar">
             <sha256 value="dd294f4a689c71ff877fd41f3b67a3a62f7760d44ce420e6130f1fc3569d8f00" origin="Generated by Gradle"/>
@@ -106,6 +327,101 @@
             <sha256 value="2a7b90e5049b674b36bccfd68677b3a0b3178b3f7c2ef7ddf618d3895598c4ce" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.lifecycle" name="lifecycle-runtime" version="2.5.1">
+         <artifact name="lifecycle-runtime-2.5.1.aar">
+            <sha256 value="33b0d73dc2f028fceb3599bacabe563c3db6d26f3513d889595863536a4ac8c0" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-runtime-2.5.1.module">
+            <sha256 value="0027dc887fa3b243c23db40ab0f763fc7efacaafa15df923d233344acfe81a16" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-viewmodel" version="2.0.0">
+         <artifact name="lifecycle-viewmodel-2.0.0.pom">
+            <sha256 value="60b758fd1c664089f82d1c018ed4ff7955c14a2b1620af7aa106591f733e0827" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-viewmodel" version="2.5.1">
+         <artifact name="lifecycle-viewmodel-2.5.1.aar">
+            <sha256 value="14a27d5fb8a1436b1b7dec18bebaa66c830cdbbc8e28a81ce5f85b7c33b3ae9d" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-viewmodel-2.5.1.module">
+            <sha256 value="01e413b73cbe38cb714dc5bdb21bd860931124c8e5f2369803f4aacc49081c9f" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.lifecycle" name="lifecycle-viewmodel-savedstate" version="2.5.1">
+         <artifact name="lifecycle-viewmodel-savedstate-2.5.1.aar">
+            <sha256 value="8481141f97f0e6213dd33fcc89a784c4bd11a6ff7d4779a1cf6a0e9fbdbf24e0" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="lifecycle-viewmodel-savedstate-2.5.1.module">
+            <sha256 value="29acd5fe614b3f89123eb838f688d625eaa8b422c8d1905b48ad8e760cd7ad8b" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.loader" name="loader" version="1.0.0">
+         <artifact name="loader-1.0.0.aar">
+            <sha256 value="11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="loader-1.0.0.pom">
+            <sha256 value="c978d550808b47434aa49a63164110a50b55b0bcc6160a93a2e37d5110df8c5e" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.resourceinspection" name="resourceinspection-annotation" version="1.0.1">
+         <artifact name="resourceinspection-annotation-1.0.1.jar">
+            <sha256 value="8cff870ec6fb31db48a52f4a792335b4bf8de07e03bd37823181526433ccd5cb" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="resourceinspection-annotation-1.0.1.module">
+            <sha256 value="352a11a8d8a4c1bd6cd2c2fefff9c94ca954d7b5202a0656959db95297f6a2b7" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.savedstate" name="savedstate" version="1.2.0">
+         <artifact name="savedstate-1.2.0.aar">
+            <sha256 value="2de528d6898e95ef020d22d9ffdf9d1f77cbdd93f92d39dfaa5d5c43b0c311c8" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="savedstate-1.2.0.module">
+            <sha256 value="4247c23308abcb5d0ff8cdaf7dfd583f3c2a1016f68d13f1a41c21600b6fafd7" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.startup" name="startup-runtime" version="1.0.0">
+         <artifact name="startup-runtime-1.0.0.module">
+            <sha256 value="40effca0d6ee1fde32bc296897e54ebbcc4cf4aa29b0c531036cbd2a824a3c24" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.startup" name="startup-runtime" version="1.1.1">
+         <artifact name="startup-runtime-1.1.1.aar">
+            <sha256 value="e0a6329a371262fe4c450372b70fdaf33b769ef6917094723787cfce896b1dd3" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="startup-runtime-1.1.1.module">
+            <sha256 value="cfd96cf6450c6e2b697598924729ad9a0495c5a4fcf4ebee7e2f81b07e415865" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.tracing" name="tracing" version="1.0.0">
+         <artifact name="tracing-1.0.0.aar">
+            <sha256 value="07b8b6139665b884a162eccf97891ca50f7f56831233bf25168ae04f7b568612" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="tracing-1.0.0.module">
+            <sha256 value="fc8b21ebe5fa3a7c96ee098bcdcd00f077ebce73f243fa858e2b0671615f75d8" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.vectordrawable" name="vectordrawable" version="1.1.0">
+         <artifact name="vectordrawable-1.1.0.aar">
+            <sha256 value="46fd633ac01b49b7fcabc263bf098c5a8b9e9a69774d234edcca04fb02df8e26" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="vectordrawable-1.1.0.pom">
+            <sha256 value="5b0e2d5b2179e54804785cbc21ce5f473b5e1ddd55a57da482e94dcd39492bb2" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.vectordrawable" name="vectordrawable-animated" version="1.1.0">
+         <artifact name="vectordrawable-animated-1.1.0.aar">
+            <sha256 value="76da2c502371d9c38054df5e2b248d00da87809ed058f3363eae87ce5e2403f8" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="vectordrawable-animated-1.1.0.pom">
+            <sha256 value="276a20116b705fb75b9003ee9496c56f6fd3b32375fb232472811eba60a040bd" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="androidx.versionedparcelable" name="versionedparcelable" version="1.1.0">
+         <artifact name="versionedparcelable-1.1.0.pom">
+            <sha256 value="c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="androidx.versionedparcelable" name="versionedparcelable" version="1.1.1">
          <artifact name="versionedparcelable-1.1.1.aar">
             <sha256 value="57e8d93260d18d5b9007c9eed3c64ad159de90c8609ebfc74a347cbd514535a4" origin="Generated by Gradle"/>
@@ -114,6 +430,14 @@
             <sha256 value="5f51e65873ca612de3838fa90d2ee95b8d040efd31b9c390a19bf94d615cdb2f" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="androidx.viewpager" name="viewpager" version="1.0.0">
+         <artifact name="viewpager-1.0.0.aar">
+            <sha256 value="147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="viewpager-1.0.0.pom">
+            <sha256 value="1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="com.android" name="signflinger" version="8.13.2">
          <artifact name="signflinger-8.13.2.jar">
             <sha256 value="c1dca2c683634ee1a294298f9c7179578af6a86e080bdc40f961915bc5c8142f" origin="Generated by Gradle"/>
@@ -562,6 +886,78 @@
             <sha256 value="e4bb54753c36a27a0e5d70154a5034fedd8feac4282295034bfd483d6c7aae78" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="com.google.android.datatransport" name="transport-api" version="2.2.1">
+         <artifact name="transport-api-2.2.1.aar">
+            <sha256 value="e62f73ba1c7f5d15f5d86d8e9a298c42ccd0648e7ce60b9e312f2ecd123b5ed0" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="transport-api-2.2.1.pom">
+            <sha256 value="8118f805b855f18f1d12e5af59e914a7f6206f71bb1d1192a8ab9a8db4107afe" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.datatransport" name="transport-backend-cct" version="2.3.3">
+         <artifact name="transport-backend-cct-2.3.3.aar">
+            <sha256 value="b22a14d560a590dc875e902424b29a13a02d1faf297b7c39a9007967ffadccbd" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="transport-backend-cct-2.3.3.pom">
+            <sha256 value="ab4e3c8df8bb695d6466df399f4c2e0da977c04d2fdea8a34ee51281683175b0" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.datatransport" name="transport-runtime" version="2.2.6">
+         <artifact name="transport-runtime-2.2.6.aar">
+            <sha256 value="d83ad23c134429691161c92476a3c83df236cd1f8badbfd4f00723b4eccd741c" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="transport-runtime-2.2.6.pom">
+            <sha256 value="aff04e2de298277827d2031cc265b5a28a030e54210a9ba3a018aa0859d29589" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.gms" name="play-services-base" version="18.5.0">
+         <artifact name="play-services-base-18.5.0.aar">
+            <sha256 value="59a5c0c2da12311d75d965ce1f419498536b1a167fb28ff7dfc2dfd9cefa4157" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="play-services-base-18.5.0.pom">
+            <sha256 value="2570b515c2717af386c890e97f644782e3f86da7b677a4ff1036147e7ea622a4" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.gms" name="play-services-basement" version="18.4.0">
+         <artifact name="play-services-basement-18.4.0.aar">
+            <sha256 value="ce5c936fd66814b3602f5c6a5e929911ff973d4b05f6de9996da596bef97cad2" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="play-services-basement-18.4.0.pom">
+            <sha256 value="05ca7c0ace0d6260931f97ed32c60ce598071ff560d3fa44f49e6f0695d2b687" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.gms" name="play-services-mlkit-text-recognition" version="19.0.1">
+         <artifact name="play-services-mlkit-text-recognition-19.0.1.aar">
+            <sha256 value="6b504dc053758407a507883fa9495bcb4c1c2bae8069012ff3a8f70f93bc89d4" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="play-services-mlkit-text-recognition-19.0.1.pom">
+            <sha256 value="e4544d4e067c8e44d67488f1b8d59aa39e1d7ed375cc7ff8f07348cd77fc1acf" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.gms" name="play-services-mlkit-text-recognition-common" version="19.1.0">
+         <artifact name="play-services-mlkit-text-recognition-common-19.1.0.aar">
+            <sha256 value="3be02b3c3c829476100f01d0ab79f0b4a923da23909d3ac63e486d1a63381c58" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="play-services-mlkit-text-recognition-common-19.1.0.pom">
+            <sha256 value="a2d1ec395cd22dec73b0cfcf1bc384d8c77c58f4a8b61c78dfbf6e541d9cc365" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.gms" name="play-services-tasks" version="18.2.0">
+         <artifact name="play-services-tasks-18.2.0.aar">
+            <sha256 value="7f2aaa8f502068eaf54356ca92aec04271d6e7c416c52c45c0d23440fcbd1654" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="play-services-tasks-18.2.0.pom">
+            <sha256 value="6b99c48a895d155e58abcee66cc22146db83abd5d84caf6c8f7a2aea9b1bcd21" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.android.odml" name="image" version="1.0.0-beta1">
+         <artifact name="image-1.0.0-beta1.aar">
+            <sha256 value="2e71aa31f83a9415277f119de67195726f07d1760e9542c111778c320e3aa1f2" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="image-1.0.0-beta1.pom">
+            <sha256 value="795f4793c375eedf4332a0381082981a5ce70b7a0a776221ca24ad9d40cbea1c" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="com.google.api.grpc" name="proto-google-common-protos" version="2.17.0">
          <artifact name="proto-google-common-protos-2.17.0.jar">
             <sha256 value="4ef1fe0c327fc1521d1d753b0b1c4a875a54bd14ebded3afff0ca395320b6ea9" origin="Generated by Gradle"/>
@@ -765,6 +1161,38 @@
             <sha256 value="5e8834ccc0e5ed0c72f306c250b518e6ad10d075a9b7b910cf695cba1ee02a2d" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="com.google.firebase" name="firebase-annotations" version="16.0.0">
+         <artifact name="firebase-annotations-16.0.0.jar">
+            <sha256 value="8830f2e8a5e434cbc5e4bd18133073b6e8518a8ce8ec2ce6f3b273c91d9664c2" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="firebase-annotations-16.0.0.pom">
+            <sha256 value="82c6d040edcb3c158b5b9865601d2bd742abcbd97cbd98903bde059da8edd087" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.firebase" name="firebase-components" version="16.1.0">
+         <artifact name="firebase-components-16.1.0.aar">
+            <sha256 value="82e91aa5ed186eedaf1f2210f5d241ba6e4456cf0c32949d5cdbe152b0e2e88b" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="firebase-components-16.1.0.pom">
+            <sha256 value="8320c67176d416edcf58b65b2ef491b42faa1360f3cd7bf3d8c2eea4298ae70e" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.firebase" name="firebase-encoders" version="16.1.0">
+         <artifact name="firebase-encoders-16.1.0.jar">
+            <sha256 value="8f89a74298bbccc2c543385208a2f0c67f603ce67e6ec21cc772e98e688f7cf5" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="firebase-encoders-16.1.0.pom">
+            <sha256 value="687bd5744fdc54fce404a4403ebbdb847fbf651b9b87293a4a56fc4d8fc68e1c" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.firebase" name="firebase-encoders-json" version="17.1.0">
+         <artifact name="firebase-encoders-json-17.1.0.aar">
+            <sha256 value="8295c755bcadc87a2aaee5b9e568f27fd138fd45ff1159a8ee747cf4c3a38d85" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="firebase-encoders-json-17.1.0.pom">
+            <sha256 value="c823cbed7a0e75bf30fedbba42ff1c0c8752e3dc16edccf7d0f2e5d6cb69c7a8" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="com.google.flatbuffers" name="flatbuffers-java" version="1.12.0">
          <artifact name="flatbuffers-java-1.12.0.jar">
             <sha256 value="3f8c088b4dd04a9858721f2e162508c94db0dd86f961e306ee63ef2eda871bf7" origin="Generated by Gradle"/>
@@ -860,6 +1288,46 @@
             <sha256 value="c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="com.google.mlkit" name="common" version="18.11.0">
+         <artifact name="common-18.11.0.aar">
+            <sha256 value="66408a08dbb2465687ff5dd0c8f6410b56549ce3ecf449d9096f3712282131d0" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="common-18.11.0.pom">
+            <sha256 value="e50ec6f1d7c77025cdc4853b835ca4e8b1394966c5029543a699baf252aea057" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.mlkit" name="text-recognition" version="16.0.1">
+         <artifact name="text-recognition-16.0.1.aar">
+            <sha256 value="da753265d02479a8cfe4dbf891ba7d189248e7c8430b6f72bd4d532c757a69b3" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="text-recognition-16.0.1.pom">
+            <sha256 value="d75ffa9eb9f0df76453313b70f58689f22b69af6488e01c4228d9622a96780ba" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.mlkit" name="text-recognition-bundled-common" version="17.0.0">
+         <artifact name="text-recognition-bundled-common-17.0.0.aar">
+            <sha256 value="fb1d4e26d69125659b6f5a94f03cce145544b0116807d04333335a9775636e05" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="text-recognition-bundled-common-17.0.0.pom">
+            <sha256 value="8472b8352251f8625283935821ef2112e4b345d4a7249b57070798efbca598e9" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.mlkit" name="vision-common" version="17.3.0">
+         <artifact name="vision-common-17.3.0.aar">
+            <sha256 value="c0085ca5fba00f11529c0a83b12851ea6c599bbcc8affd927e914b29a743459f" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="vision-common-17.3.0.pom">
+            <sha256 value="4e649af84e58d4c824eeabc8522e142fb30be41524b4001b699f3e95bdd366ec" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="com.google.mlkit" name="vision-interfaces" version="16.3.0">
+         <artifact name="vision-interfaces-16.3.0.aar">
+            <sha256 value="8f0192a26d01b728a01a15a620d829fff7095822822694438a93127c04cb16fb" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="vision-interfaces-16.3.0.pom">
+            <sha256 value="3422392e93c7f29c30149cc37e39f535ad32705fa6e015d8cae8a8f763e73ff6" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="com.google.protobuf" name="protobuf-bom" version="3.22.3">
          <artifact name="protobuf-bom-3.22.3.pom">
             <sha256 value="13a32dfb9de6fc1c3c3f7af53e4d5c77fd77d2b476bae38b74b7581cdee2e655" origin="Generated by Gradle"/>
@@ -2224,11 +2692,32 @@
             <sha256 value="3660d36a70feb3abe49f11b90633e41d36273576f071b0e109da9b3a0df082a5" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.0.21">
+         <artifact name="kotlin-stdlib-common-2.0.21.module">
+            <sha256 value="6f5df8af633600a6b9cfb0fcc764af3d5119f376677677b91b6aee816b1d30ab" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.2.0">
          <artifact name="kotlin-stdlib-common-2.2.0.module">
             <sha256 value="58fc0d664fc3a67e7e6be9fdbeaedbd212dfa3e527f744f861e792cda72c0e47" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.6.0">
+         <artifact name="kotlin-stdlib-jdk7-1.6.0.jar">
+            <sha256 value="870d35fd266b2daf64c1080fe51824d3c368f7995384a8d7c5fc2fdc40eb7b3a" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlin-stdlib-jdk7-1.6.0.pom">
+            <sha256 value="ed56079f29396d7f26911fb53ca28b88e98a5c42b19bbe7bb23a92e731cf65cb" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.8.0">
+         <artifact name="kotlin-stdlib-jdk7-1.8.0.jar">
+            <sha256 value="4c889d1d9803f5f2eb6c1592a6b7e62369ac7660c9eee15aba16fec059163666" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlin-stdlib-jdk7-1.8.0.pom">
+            <sha256 value="dfa9644a6ae5b898ee475bb1f57e830ba1f770aee6c9c15f8112aa381180184a" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.8.20">
          <artifact name="kotlin-stdlib-jdk7-1.8.20.jar">
             <sha256 value="af1ec40c3b951afdcc0c2a0173c7b81763c5281c2d5bafbf0a8544a24c5dcc0c" origin="Generated by Gradle"/>
@@ -2245,6 +2734,22 @@
             <sha256 value="95c2189c35ef7bfc48951c32ad70847b21f3809d26f5d0a76e23570879988c30" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.6.0">
+         <artifact name="kotlin-stdlib-jdk8-1.6.0.jar">
+            <sha256 value="ab0547c495953214a5f2b28150014f4e02133678d52b77d76375ea235e443dbd" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlin-stdlib-jdk8-1.6.0.pom">
+            <sha256 value="db9ece4af4ee7008a18a66580398224200af7f6dfeab46761ec39e756cb9b9e7" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.8.0">
+         <artifact name="kotlin-stdlib-jdk8-1.8.0.jar">
+            <sha256 value="05b62804441b0c9a1920b6b7d5cf7329a4e24b6258478e32b1f046ca01900946" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlin-stdlib-jdk8-1.8.0.pom">
+            <sha256 value="2bb6c7551b97c7ba029f9866582e7aa19d63abfd4cd53da3fc0c462f3ab5fc26" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.8.20">
          <artifact name="kotlin-stdlib-jdk8-1.8.20.jar">
             <sha256 value="e398b67977622718bf18ff99b739c7d9da060f33fb458a2e25203221c16af010" origin="Generated by Gradle"/>
@@ -2290,6 +2795,14 @@
             <sha256 value="61ffa87244c72230adcfc32279d4a1cc41712c2bc5eb50971b630ed880de485f" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlinx" name="atomicfu" version="0.17.0">
+         <artifact name="atomicfu-0.17.0.module">
+            <sha256 value="12e828b1269614b2e50adfaf0d834c98ba5bba782b93fd157ce1e0a35e60cc0b" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="atomicfu-metadata-0.17.0-all.jar">
+            <sha256 value="b80d58fd737087f8a74d8ed802f5545e550209823e91d0062de0b09343f0c389" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlinx" name="atomicfu" version="0.22.0">
          <artifact name="atomicfu-0.22.0.module">
             <sha256 value="5c876ef7e1ee07dd30721c43b46ead8eda23ce2b22260e70f933cbe004e80607" origin="Generated by Gradle"/>
@@ -2303,6 +2816,19 @@
             <sha256 value="35070f923ce69f87c6f90e5305720e2704409b69a2374492ac45be70075ee49a" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-android" version="1.6.1">
+         <artifact name="kotlinx-coroutines-android-1.6.1.jar">
+            <sha256 value="961ebde8138779a299430ca325a86e28c490527a87ba518362fa45c44c7e7e95" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlinx-coroutines-android-1.6.1.module">
+            <sha256 value="558a3e6e5cc501f13aac0436bd08bb342d10de9f8bcfd3ba6d582f433e92c3b1" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-bom" version="1.6.1">
+         <artifact name="kotlinx-coroutines-bom-1.6.1.pom">
+            <sha256 value="43e780ec3da6959c7d2c97fd6b4462ca9997e9c03cd6c43ee92f6604022d4bae" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-bom" version="1.6.4">
          <artifact name="kotlinx-coroutines-bom-1.6.4.pom">
             <sha256 value="ab2614855fba66aa8a42514dbe3d5a884315ffe1ed63f5932e710a8006245ce1" origin="Generated by Gradle"/>
@@ -2318,6 +2844,14 @@
             <sha256 value="bea5511e9001f2c593ab5080df131b219ab5e2085cc5979ce583eacd4946fd78" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.6.1">
+         <artifact name="kotlinx-coroutines-core-1.6.1.module">
+            <sha256 value="79fe6569a9fffb409e51c64d5f8c54d27c4aa3735886155899d28ed2c9dfbc48" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlinx-coroutines-core-metadata-1.6.1-all.jar">
+            <sha256 value="67c807c236e19c32020fc5ba82b273fda1e76cad50693f0917efe6071f159db9" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.6.4">
          <artifact name="kotlinx-coroutines-core-1.6.4.module">
             <sha256 value="a6eed4a1835588e7c84fcd7b0475fce9a7b3444c870ebc797b88ba64ccf4576b" origin="Generated by Gradle"/>
@@ -2333,6 +2867,14 @@
             <sha256 value="ad534034a953b4e12cbeeb874c66adf8b1ca14df15fe0d2e6547aa34e86dfeca" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.6.1">
+         <artifact name="kotlinx-coroutines-core-jvm-1.6.1.jar">
+            <sha256 value="3a93ffd052844643c0fef950ae5578db47cccbe9e7176d681333182e232bb0f1" origin="Generated by Gradle"/>
+         </artifact>
+         <artifact name="kotlinx-coroutines-core-jvm-1.6.1.module">
+            <sha256 value="f31b672a11feb0ee49d5d49143067e93c33f5866768ae42b9a324b53cdad36e1" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.6.4">
          <artifact name="kotlinx-coroutines-core-jvm-1.6.4.jar">
             <sha256 value="c24c8bb27bb320c4a93871501a7e5e0c61607638907b197aef675513d4c820be" origin="Generated by Gradle"/>
diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 039b66a..31bfeb0 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -2,16 +2,58 @@
 
 (def fragment
   '(
+    (typed-kotlin-file "com/sfb/ssdreview/BoxType.kt"
+      (typed-library (com sfb ssdreview)
+        (export make-BoxType BoxType? BoxType-id BoxType-name box-type-display)
+        (record BoxType
+          ((id : String)
+           (name : String)))
+        (def (box-type-display (box : BoxType)) : String
+          (string-append
+            (string-append (BoxType-id box) " ")
+            (BoxType-name box)))))
+
+    (typed-kotlin-file "com/sfb/ssdreview/OcrWord.kt"
+      (typed-library (com sfb ssdreview)
+        (export make-OcrWord OcrWord? OcrWord-text OcrWord-conf OcrWord-bbox)
+        (type Float32)
+        (type FloatArray)
+        (record OcrWord
+          ((text : String)
+           (conf : Float32)
+           (bbox : FloatArray)))))
+
+    (typed-kotlin-file "com/sfb/ssdreview/Guess.kt"
+      (typed-library (com sfb ssdreview)
+        (export make-Guess Guess? Guess-label Guess-boxType Guess-reason)
+        (record Guess
+          ((label : String)
+           (boxType : String)
+           (reason : String)))))
+
+    (typed-kotlin-file "com/sfb/ssdreview/OcrModels.kt"
+      (typed-library (com sfb ssdreview)
+        (export make-OcrPattern OcrPattern? OcrPattern-tokens OcrPattern-label
+                OcrPattern-confidence
+                make-OcrCandidate OcrCandidate? OcrCandidate-label
+                OcrCandidate-boxTypeId OcrCandidate-confidence OcrCandidate-reason)
+        (type Float32)
+        (record OcrPattern
+          ((tokens : (List String))
+           (label : String)
+           (confidence : Float32)))
+        (record OcrCandidate
+          ((label : String)
+           (boxTypeId : String)
+           (confidence : Float32)
+           (reason : String)))))
+
     (kotlin-file-lines "com/sfb/ssdreview/BoxTypes.kt"
       (
        "package com.sfb.ssdreview"
        ""
        "import android.content.Context"
        ""
-       "data class BoxType(val id: String, val name: String) {"
-       "    val display: String get() = \"$id $name\""
-       "}"
-       ""
        "object BoxTypes {"
        "    private var cache: List<BoxType>? = null"
        "    private val weaponTerms = listOf("
@@ -128,12 +170,12 @@
        "        val items = load(context)"
        "        items.firstOrNull {"
        "            it.id == text ||"
-       "                it.display.lowercase() == lowered ||"
+       "                box_type_display(it).lowercase() == lowered ||"
        "                it.name.lowercase() == lowered ||"
        "                normalize(it.name) == normalized"
        "        }?.let { return it }"
        "        val matches = items.filter {"
-       "            it.display.lowercase().contains(lowered) ||"
+       "            box_type_display(it).lowercase().contains(lowered) ||"
        "                normalize(it.name).contains(normalized)"
        "        }"
        "        return matches.singleOrNull()"
@@ -242,8 +284,6 @@
        "            else -> \"\""
        "        }"
        "    }"
-       ""
-       "    private data class Guess(val label: String, val boxType: String, val reason: String)"
        "}"
        ""
        ))
@@ -318,7 +358,7 @@
 	       "    private var ssdAreaMode: Boolean = false"
 	       "    private var reopenSsdBrowserOnResume: Boolean = false"
        "    @Volatile private var loadGeneration: Int = 0"
-       "    private val boxTypeDisplays: List<String> by lazy { BoxTypes.load(this).map { it.display } }"
+       "    private val boxTypeDisplays: List<String> by lazy { BoxTypes.load(this).map { box_type_display(it) } }"
        "    private val firingArcDisplays = listOf("
        "        \"FA\","
        "        \"FH\","
@@ -552,7 +592,7 @@
        "        val previous = BoxTypes.resolve(this, boxType)"
        "        return listOf("
        "            previous?.name,"
-       "            previous?.display,"
+       "            previous?.let { box_type_display(it) },"
        "            boxType.substringAfter(' ', boxType)"
        "        ).filterNotNull().any { normalizeLabel(it) == normalized }"
        "    }"
@@ -1269,7 +1309,7 @@
        "        val boxType = boxTypeInput().apply {"
        "            hint = \"Box type id/name\""
        "            val existing = BoxTypes.load(this@MainActivity).firstOrNull { it.id == group.boxTypeId }"
-       "            setText(existing?.display ?: group.boxTypeId, false)"
+       "            setText(existing?.let { box_type_display(it) } ?: group.boxTypeId, false)"
        "        }"
        "        val firingArc = firingArcInput().apply {"
        "            setText(group.firingArc, false)"
@@ -2018,12 +2058,6 @@
        "    }"
        "}"
        ""
-       "data class OcrWord("
-       "    val text: String,"
-       "    val conf: Float,"
-       "    val bbox: FloatArray"
-       ")"
-       ""
        "data class SsdGroup("
        "    val id: String,"
        "    var label: String = \"\","
@@ -2774,9 +2808,6 @@
        "import kotlin.math.min"
        ""
        "object SsdOcr {"
-       "    private data class OcrPattern(val tokens: List<String>, val label: String, val confidence: Float)"
-       "    private data class OcrCandidate(val label: String, val boxTypeId: String, val confidence: Float, val reason: String)"
-       ""
        "    private val patterns = listOf("
        "        OcrPattern(listOf(\"PH 1\", \"PH1\", \"PHASER 1\", \"PHASER1\"), \"Phaser-1\", 0.94f),"
        "        OcrPattern(listOf(\"PH 2\", \"PH2\", \"PHASER 2\", \"PHASER2\"), \"Phaser-2\", 0.93f),"
diff --git a/tests/fixtures/ssd-app.ss b/tests/fixtures/ssd-app.ss
index e52adeb..9e31290 100644
--- a/tests/fixtures/ssd-app.ss
+++ b/tests/fixtures/ssd-app.ss
@@ -6,6 +6,7 @@
      (name "SSD Review Security Fixture")
      (permission "android.permission.INTERNET")
      (dependency "androidx.documentfile:documentfile:1.1.0")
+     (dependency "com.google.mlkit:text-recognition:16.0.1")
      (gradle-property "android.useAndroidX" "true")
      (client ssd-review)
      (screen Main
diff --git a/tests/fixtures/ssd-runtime.lock.json b/tests/fixtures/ssd-runtime.lock.json
index e541659..62b61fe 100644
--- a/tests/fixtures/ssd-runtime.lock.json
+++ b/tests/fixtures/ssd-runtime.lock.json
@@ -1,20 +1,68 @@
 {
-  "schema": 1,
-  "artifacts": {
-    "androidx.annotation:annotation-experimental:1.1.0": "0157de61a2064047896a058080f3fd67ba57ad9a94857b3f7a363660243e3f90",
-    "androidx.annotation:annotation-jvm:1.8.1": "9aab326d9492800991854360ac248f493ce7f7c3183519309b78ace9e240f6f6",
-    "androidx.arch.core:core-common:2.1.0": "fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889",
-    "androidx.arch.core:core-runtime:2.1.0": "dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852",
-    "androidx.collection:collection:1.0.0": "9c8d117b5c2bc120a1cdfeb857e05b495b16c36013570372a708f7827e3ac9f9",
-    "androidx.concurrent:concurrent-futures:1.0.0": "5595a40e278a7b39fa78a09490e3d7f3faa95c7b01447148bd38b5ade0605c35",
-    "androidx.core:core:1.7.0": "aaf6734226fff923784f92f65d78a2984dbf17534138855c5ce2038f18656e0b",
-    "androidx.documentfile:documentfile:1.1.0": "684e0ffcb21a660c939d1bb814521f42c4bd74816f4a117291fe6a101cf3a822",
-    "androidx.lifecycle:lifecycle-common:2.3.1": "15848fb56db32f4c7cdc72b324003183d52a4884d6bf09be708ac7f587d139b5",
-    "androidx.lifecycle:lifecycle-runtime:2.3.1": "dd294f4a689c71ff877fd41f3b67a3a62f7760d44ce420e6130f1fc3569d8f00",
-    "androidx.versionedparcelable:versionedparcelable:1.1.1": "57e8d93260d18d5b9007c9eed3c64ad159de90c8609ebfc74a347cbd514535a4",
-    "com.google.guava:listenablefuture:1.0": "e4ad7607e5c0477c6f890ef26a49cb8d1bb4dffb650bab4502afee64644e3069",
-    "org.jetbrains.kotlin:kotlin-stdlib:2.0.21": "f31cc53f105a7e48c093683bbd5437561d1233920513774b470805641bedbc09",
-    "org.jetbrains:annotations:13.0": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478",
-    "org.jspecify:jspecify:1.0.0": "1fad6e6be7557781e4d33729d49ae1cdc8fdda6fe477bb0cc68ce351eafdfbab"
-  }
+    "schema": 1,
+    "artifacts": {
+        "androidx.activity:activity:1.6.0": "7f08723ecabefba616d60c714b0e9a31301bd4d0792fcc7946c1479c57fd2d28",
+        "androidx.annotation:annotation-experimental:1.3.0": "abfd29c8556e5bd0325a9f769ab9e9d154ff4a5515c476cdd5a2a8285b1b19dc",
+        "androidx.annotation:annotation-jvm:1.8.1": "9aab326d9492800991854360ac248f493ce7f7c3183519309b78ace9e240f6f6",
+        "androidx.appcompat:appcompat-resources:1.6.1": "db915dbf49357863de1669ff9fdd8e9008d65fe357af6cce9ae63043ad5f6617",
+        "androidx.appcompat:appcompat:1.6.1": "7ea5573b93ababd3bd32312451c6ea48a662b03a140dda81aebe75776a20a422",
+        "androidx.arch.core:core-common:2.1.0": "fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889",
+        "androidx.arch.core:core-runtime:2.1.0": "dd77615bd3dd275afb11b62df25bae46b10b4a117cd37943af45bdcbf8755852",
+        "androidx.collection:collection:1.1.0": "632a0e5407461de774409352940e292a291037724207a787820c77daf7d33b72",
+        "androidx.concurrent:concurrent-futures:1.0.0": "5595a40e278a7b39fa78a09490e3d7f3faa95c7b01447148bd38b5ade0605c35",
+        "androidx.core:core-ktx:1.9.0": "1542a1df7be908c95fee91b8dbc03fd974f53f11d84a85d881f95a52551c4051",
+        "androidx.core:core:1.9.0": "8bda3ee3a88887d54f6679fb6b6cd788629f73234ac91c8bbed924e721ec85b8",
+        "androidx.cursoradapter:cursoradapter:1.0.0": "a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564",
+        "androidx.customview:customview:1.0.0": "20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2",
+        "androidx.documentfile:documentfile:1.1.0": "684e0ffcb21a660c939d1bb814521f42c4bd74816f4a117291fe6a101cf3a822",
+        "androidx.drawerlayout:drawerlayout:1.0.0": "9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1",
+        "androidx.emoji2:emoji2-views-helper:1.2.0": "7ffa4d464d9db259fca0cdb50fbd4ab63d6872bcda59468b9f7555504c7d5ac4",
+        "androidx.emoji2:emoji2:1.2.0": "f31a06c150ecb03073f55a6f7b0b74a240a6a8d727c14ce76726d020570dfa8c",
+        "androidx.exifinterface:exifinterface:1.0.0": "ee48be10aab8f54efff4c14b77d11e10b9eeee4379d5ef6bf297a2923c55cc11",
+        "androidx.fragment:fragment:1.3.6": "12f0831b4f08092d5dda272c1923c11a022ff20ceffed3e801751e21bb8d1c1e",
+        "androidx.interpolator:interpolator:1.0.0": "33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a",
+        "androidx.lifecycle:lifecycle-common:2.5.1": "20ad1520f625cf455e6afd7290988306d3a9886efa993e0860fbabf4bb3f7bda",
+        "androidx.lifecycle:lifecycle-livedata-core:2.5.1": "ee792103ca248bfaf150c45a93871e4cf7e8cebab990e0f62f7de5d4ff2f209f",
+        "androidx.lifecycle:lifecycle-livedata:2.0.0": "c82609ced8c498f0a701a30fb6771bb7480860daee84d82e0a81ee86edf7ba39",
+        "androidx.lifecycle:lifecycle-process:2.4.1": "db649b3efa24e31052145310b002db91da346b3f89c093ec38c3046db45e794e",
+        "androidx.lifecycle:lifecycle-runtime:2.5.1": "33b0d73dc2f028fceb3599bacabe563c3db6d26f3513d889595863536a4ac8c0",
+        "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1": "8481141f97f0e6213dd33fcc89a784c4bd11a6ff7d4779a1cf6a0e9fbdbf24e0",
+        "androidx.lifecycle:lifecycle-viewmodel:2.5.1": "14a27d5fb8a1436b1b7dec18bebaa66c830cdbbc8e28a81ce5f85b7c33b3ae9d",
+        "androidx.loader:loader:1.0.0": "11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025",
+        "androidx.resourceinspection:resourceinspection-annotation:1.0.1": "8cff870ec6fb31db48a52f4a792335b4bf8de07e03bd37823181526433ccd5cb",
+        "androidx.savedstate:savedstate:1.2.0": "2de528d6898e95ef020d22d9ffdf9d1f77cbdd93f92d39dfaa5d5c43b0c311c8",
+        "androidx.startup:startup-runtime:1.1.1": "e0a6329a371262fe4c450372b70fdaf33b769ef6917094723787cfce896b1dd3",
+        "androidx.tracing:tracing:1.0.0": "07b8b6139665b884a162eccf97891ca50f7f56831233bf25168ae04f7b568612",
+        "androidx.vectordrawable:vectordrawable-animated:1.1.0": "76da2c502371d9c38054df5e2b248d00da87809ed058f3363eae87ce5e2403f8",
+        "androidx.vectordrawable:vectordrawable:1.1.0": "46fd633ac01b49b7fcabc263bf098c5a8b9e9a69774d234edcca04fb02df8e26",
+        "androidx.versionedparcelable:versionedparcelable:1.1.1": "57e8d93260d18d5b9007c9eed3c64ad159de90c8609ebfc74a347cbd514535a4",
+        "androidx.viewpager:viewpager:1.0.0": "147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682",
+        "com.google.android.datatransport:transport-api:2.2.1": "e62f73ba1c7f5d15f5d86d8e9a298c42ccd0648e7ce60b9e312f2ecd123b5ed0",