diff --git a/README.md b/README.md index a4cf145..63e1152 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ time the sharing paid rather than merely being argued for. ## What is here -`server/` — the `wg-app-link` crate. Five modules, each extracted only after +`server/` — the `wg-app-link` crate. Six modules, each extracted only after diffing the two copies and finding nothing but a name between them. - **`netif`** — `wg_address()`, which fails closed when the tunnel is down, and `local_addresses()` for the certificate's SANs. The product name is a parameter so the failure reads as advice rather than as a library complaining. Both split the *lookup* from the *decision*, so the failure path can be tested on a machine that has a tunnel — every machine this runs on does. @@ -102,12 +102,61 @@ diffing the two copies and finding nothing but a name between them. - **`certs`** — the CA generated once and never replaced, the leaf reissued every start. `product` names the organisation and common name and is the whole of what is per-project. Shared because being written twice is worst here: a trust anchor built two ways can be built differently two ways, and the difference surfaces as an opaque handshake failure on a phone. - **`format`** — the two RON house rules. This was byte-identical in both projects, which made it the clearest thing in the evidence table and the easiest deletion. - **`private`** — owner-only files and directories, taken from ai-app's version, with an `append_file` alongside `create_file` because a transcript must never be truncated by being opened. +- **`xdg`** — where each project's state lives: `config_home(product)` and `data_home(product)`, resolving the XDG variable, ignoring it unless absolute, and falling back under `$HOME`. Shared because the *reason* is shared and is not obvious from the code — the repo is a mount that resolves at different absolute paths on each side, so config inside it records paths that work on only one, and a CA private key inside it would let the untrusted side mint a leaf the pinned app trusts. + +`app/` — the Android library, `com.example.wgapplink`. The same test applied +to Kotlin: the four files appeared in both apps and differed only in +comments and a product name. + +- **`PinnedTls`** — trusts one CA and not the system store, so a genuine certificate for another host is refused as firmly as a self-signed one. The PEM is constructed with, not read, because each app generates its own at build time from the machine doing the build. +- **`ServerStore`** — the enrollment: preferences, the `://enroll?…` URI, and the token sealed under an Android Keystore key. Two parameters, both per-app and both load-bearing — see the warning below. +- **`EnrollmentScanActivity`** — zxing's capture activity with the 10% framing inset and the laser decorations removed, so framing is never the user's problem. +- **`localNetworkAllowed`** — whether `ACCESS_LOCAL_NETWORK` was granted. Android 17 made it mandatory and a denial is invisible at the socket, so without asking, a blocked app and an unreachable server produce the same timeout. + +**Adopting the app half takes two lines and one catalog entry.** In +`settings.gradle.kts`: + +```kotlin +include(":link") +project(":link").projectDir = file("../wg-app-link/app") +``` + +and in the version catalog, because a subproject resolves plugin versions +from the build including it rather than from its own: + +```toml +androidLibrary = { id = "com.android.library", version.ref = "agp" } +``` + +It also needs `androidx-core-ktx` and `zxing-embedded` in that catalog, and +`alias(libs.plugins.androidLibrary) apply false` in the root build file. +Consumed as a subproject rather than a published artifact so the two stay +locked to whatever commit the submodule points at — the same arrangement +the Rust half uses with a path dependency. + +> **The Keystore alias is persisted. Carry the existing value over exactly.** +> `ServerStore(scheme, keyAlias)` takes both because both are per-app, but +> they fail differently. A wrong scheme means a scanned QR is ignored, which +> is visible immediately. A wrong `keyAlias` means the app can no longer +> unseal the token it already stored, so an enrolled phone silently reads as +> not enrolled with nothing on screen to say why. ai-app's is +> `aiapp-token-key`; dev-updater's is `dev-updater-token-key`. + +**Not moved: the `PinnedCaCertificate.kt` generator.** It is ~40 lines of +Gradle in each app's build file, and all three things it varies — the +environment variable, the certificate path, and the package the constant is +emitted into — are per-app, so sharing it means parameterising the whole of +it and introducing a composite build that neither project has today. The +one bug it has had is fixed identically in both copies: a PEM constant must +start at the opening quotes, or `CertificateFactory` loses its `-----BEGIN` +preamble sniff, tries DER, and fails at runtime with an ASN.1 decode error +nowhere near the generator. Worth revisiting if it ever needs a second fix. ## What should follow, and what should not **Should follow, in this order.** Each is already near-identical: -1. The Kotlin `EnrollmentScanActivity`, `PinnedCert`, and the enrollment/Keystore half of `ServerConfig`, as an Android library module. This is where the sharing pays most, because it is where the two copies have drifted furthest apart in *both* directions — and `applyPinnedTls` is security-critical and identical, which is the same argument `certs` won on. +1. ~~The Kotlin `EnrollmentScanActivity`, `PinnedCert`, and the enrollment/Keystore half of `ServerConfig`.~~ Done — see `app/` above. It paid as predicted: ai-app's `ServerConfig` had gained `localNetworkAllowed` and the KTX `edit` block while dev-updater's had not, so the two had drifted in both directions exactly as the evidence suggested. 2. Atomic owner-only config save. Both do temp-file-then-rename with the mode set before the rename; only the schema differs. **Should not.** Naming these is the point of the exercise: diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..ab35fea --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,52 @@ +// The app half of the link, as a library both phones' apps depend on. +// +// Consumed as a *subproject* of each app's build rather than as a published +// artifact or a composite build, so the two stay version-locked to whatever +// commit of this repo the consuming project's submodule points at -- the +// same arrangement the Rust half uses with a path dependency. Each app adds +// two lines to its `settings.gradle.kts`: +// +// include(":link") +// project(":link").projectDir = file("../wg-app-link/app") +// +// and one entry to its version catalog, since a subproject resolves plugin +// versions from the build including it: +// +// androidLibrary = { id = "com.android.library", version.ref = "agp" } +// +// Deliberately no Compose. Nothing here draws anything -- the screens that +// use it are each app's own, because they are where the two products +// actually differ. +plugins { + alias(libs.plugins.androidLibrary) + alias(libs.plugins.ktfmt) +} + +ktfmt { kotlinLangStyle() } + +android { + namespace = "com.example.wgapplink" + compileSdk = 37 + + // minSdk matches the lower of the two consumers rather than this + // library's own preference: a library that raised it would silently + // raise theirs. No desugaring here for the same reason -- nothing in + // this module uses java.time, and requiring it would impose a build + // setting on anyone who depends on it. + defaultConfig { minSdk = 24 } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + } +} + +dependencies { + // SharedPreferences.edit, and the KTX extensions this code calls + // directly rather than inheriting transitively. + implementation(libs.androidx.core.ktx) + // The capture activity EnrollmentScanActivity subclasses. `api` rather + // than `implementation`: the subclass is part of this module's public + // surface, so a consumer declaring it in its manifest needs the type. + api(libs.zxing.embedded) +} diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/results.bin b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/results.bin new file mode 100644 index 0000000..7ed749e --- /dev/null +++ b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/results.bin @@ -0,0 +1 @@ +o/bundleLibRuntimeToDirDebug diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/EnrollmentScanActivity.dex b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/EnrollmentScanActivity.dex new file mode 100644 index 0000000..0442626 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/EnrollmentScanActivity.dex differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/PinnedTls.dex b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/PinnedTls.dex new file mode 100644 index 0000000..c00f269 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/PinnedTls.dex differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/PinnedTlsKt.dex b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/PinnedTlsKt.dex new file mode 100644 index 0000000..11ea965 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/PinnedTlsKt.dex differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerConfigKt.dex b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerConfigKt.dex new file mode 100644 index 0000000..7a796f7 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerConfigKt.dex differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerSettings.dex b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerSettings.dex new file mode 100644 index 0000000..730e791 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerSettings.dex differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerStore.dex b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerStore.dex new file mode 100644 index 0000000..a36bcb1 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/example/wgapplink/ServerStore.dex differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/example/wgapplink/PinnedTls$$InternalSyntheticLambda$2$c14a4f37c99b251ab79f4ab592ce9ce4e9983262f4a7d126939751696b9f20f5$0.globals b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/example/wgapplink/PinnedTls$$InternalSyntheticLambda$2$c14a4f37c99b251ab79f4ab592ce9ce4e9983262f4a7d126939751696b9f20f5$0.globals new file mode 100644 index 0000000..dd0971f Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/example/wgapplink/PinnedTls$$InternalSyntheticLambda$2$c14a4f37c99b251ab79f4ab592ce9ce4e9983262f4a7d126939751696b9f20f5$0.globals differ diff --git a/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin new file mode 100644 index 0000000..601f245 Binary files /dev/null and b/app/build/.transforms/00e3d5fa6fb516c0a82e69ea177f2dd2/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin differ diff --git a/app/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/app/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml new file mode 100644 index 0000000..372ea46 --- /dev/null +++ b/app/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/app/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json new file mode 100644 index 0000000..a42581e --- /dev/null +++ b/app/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json @@ -0,0 +1,18 @@ +{ + "version": 3, + "artifactType": { + "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "com.example.wgapplink", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/app/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar b/app/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar new file mode 100644 index 0000000..4fd6c25 Binary files /dev/null and b/app/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar differ diff --git a/app/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/app/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties new file mode 100644 index 0000000..b4c821b --- /dev/null +++ b/app/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties @@ -0,0 +1,7 @@ +aarFormatVersion=1.0 +aarMetadataVersion=1.0 +minCompileSdk=37 +minCompileMinorSdk=0 +minCompileSdkExtension=0 +minAndroidGradlePluginVersion=1.0.0 +coreLibraryDesugaringEnabled=false diff --git a/app/build/intermediates/android_res_source_set_path_map/debug/mapDebugSourceSetPaths/file-map.txt b/app/build/intermediates/android_res_source_set_path_map/debug/mapDebugSourceSetPaths/file-map.txt new file mode 100644 index 0000000..3d74787 --- /dev/null +++ b/app/build/intermediates/android_res_source_set_path_map/debug/mapDebugSourceSetPaths/file-map.txt @@ -0,0 +1,9 @@ +com.example.wgapplink-pngs-0 /home/bob/repos/ai-app/wg-app-link/app/build/generated/res/pngs/debug +com.example.wgapplink-updated_navigation_xml-1 /home/bob/repos/ai-app/wg-app-link/app/build/generated/updated_navigation_xml/debug +com.example.wgapplink-mergeDebugResources-2 /home/bob/repos/ai-app/wg-app-link/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir +com.example.wgapplink-mergeDebugResources-3 /home/bob/repos/ai-app/wg-app-link/app/build/intermediates/incremental/debug/mergeDebugResources/stripped.dir +com.example.wgapplink-debug-4 /home/bob/repos/ai-app/wg-app-link/app/build/intermediates/merged_res/debug/mergeDebugResources +com.example.wgapplink-debug-5 /home/bob/repos/ai-app/wg-app-link/app/build/intermediates/packaged_res/debug/packageDebugResources +com.example.wgapplink-debug-6 /home/bob/repos/ai-app/wg-app-link/app/src/debug/res +com.example.wgapplink-main-7 /home/bob/repos/ai-app/wg-app-link/app/src/main/res +gradleHome-0 /home/bob/.gradle \ No newline at end of file diff --git a/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug-artifact-dependencies.xml b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug-artifact-dependencies.xml new file mode 100644 index 0000000..b32fdb9 --- /dev/null +++ b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug-artifact-dependencies.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug-artifact-libraries.xml b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug-artifact-libraries.xml new file mode 100644 index 0000000..52b2f08 --- /dev/null +++ b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug-artifact-libraries.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug.xml b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug.xml new file mode 100644 index 0000000..685cb2e --- /dev/null +++ b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/debug.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/module.xml b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/module.xml new file mode 100644 index 0000000..c7baabe --- /dev/null +++ b/app/build/intermediates/android_test_lint_model/debug/generateDebugAndroidTestLintModel/module.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data differ diff --git a/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data0 b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data0 new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data0 differ diff --git a/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data1 b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data1 new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/ThreadConstraint/app/data1 differ diff --git a/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/lint-partial.xml b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/lint-partial.xml new file mode 100644 index 0000000..ff13ed9 --- /dev/null +++ b/app/build/intermediates/android_test_lint_partial_results/debug/lintAnalyzeDebugAndroidTest/out/lint-partial.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/app/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/app/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/app/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/app/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt b/app/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/META-INF/link.kotlin_module b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/META-INF/link.kotlin_module new file mode 100644 index 0000000..348fbb1 Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/META-INF/link.kotlin_module differ diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/EnrollmentScanActivity.class b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/EnrollmentScanActivity.class new file mode 100644 index 0000000..01766bd Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/EnrollmentScanActivity.class differ diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/PinnedTls.class b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/PinnedTls.class new file mode 100644 index 0000000..19e654e Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/PinnedTls.class differ diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/PinnedTlsKt.class b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/PinnedTlsKt.class new file mode 100644 index 0000000..e1c71b1 Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/PinnedTlsKt.class differ diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerConfigKt.class b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerConfigKt.class new file mode 100644 index 0000000..5f047c3 Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerConfigKt.class differ diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerSettings.class b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerSettings.class new file mode 100644 index 0000000..9a87d3b Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerSettings.class differ diff --git a/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerStore.class b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerStore.class new file mode 100644 index 0000000..b47ced8 Binary files /dev/null and b/app/build/intermediates/built_in_kotlinc/debug/compileDebugKotlin/classes/com/example/wgapplink/ServerStore.class differ diff --git a/app/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar b/app/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar new file mode 100644 index 0000000..e571fd1 Binary files /dev/null and b/app/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar differ diff --git a/app/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/app/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar new file mode 100644 index 0000000..f64dc39 Binary files /dev/null and b/app/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ diff --git a/app/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/app/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-9.3.2 b/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-9.3.2 new file mode 100644 index 0000000..5a3e3a5 --- /dev/null +++ b/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-9.3.2 @@ -0,0 +1,89 @@ +# This is a configuration file for ProGuard. +# http://proguard.sourceforge.net/index.html#manual/usage.html +# +# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with +# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and +# will be ignored by new version of the Android plugin for Gradle. + +# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file +# instead of this one, which turns off the optimization flags. +-allowaccessmodification + +# Preserve some attributes that may be required for reflection. +-keepattributes AnnotationDefault, + EnclosingMethod, + InnerClasses, + RuntimeVisibleAnnotations, + RuntimeVisibleParameterAnnotations, + RuntimeVisibleTypeAnnotations, + Signature + +-keep public class com.google.vending.licensing.ILicensingService +-keep public class com.android.vending.licensing.ILicensingService +-keep public class com.google.android.vending.licensing.ILicensingService +-dontnote com.android.vending.licensing.ILicensingService +-dontnote com.google.vending.licensing.ILicensingService +-dontnote com.google.android.vending.licensing.ILicensingService + +# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native +-keepclasseswithmembernames,includedescriptorclasses class * { + native ; +} + +# Keep setters in Views so that animations can still work. +-keepclassmembers public class * extends android.view.View { + void set*(***); + *** get*(); +} + +# We want to keep methods in Activity that could be used in the XML attribute onClick. +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keepclassmembers class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +# Preserve annotated Javascript interface methods. +-keepclassmembers class * { + @android.webkit.JavascriptInterface ; +} + +# The support libraries contains references to newer platform versions. +# Don't warn about those in case this app is linking against an older +# platform version. We know about them, and they are safe. +-dontnote android.support.** +-dontnote androidx.** +-dontwarn android.support.** +-dontwarn androidx.** + +# Understand the @Keep support annotation. +-keep class android.support.annotation.Keep + +-keep @android.support.annotation.Keep class * {*;} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep (...); +} + +# These classes are duplicated between android.jar and org.apache.http.legacy.jar. +-dontnote org.apache.http.** +-dontnote android.net.http.** + +# These classes are duplicated between android.jar and core-lambda-stubs.jar. +-dontnote java.lang.invoke.** diff --git a/app/build/intermediates/default_proguard_files/global/proguard-android.txt-9.3.2 b/app/build/intermediates/default_proguard_files/global/proguard-android.txt-9.3.2 new file mode 100644 index 0000000..6f7e4ef --- /dev/null +++ b/app/build/intermediates/default_proguard_files/global/proguard-android.txt-9.3.2 @@ -0,0 +1,95 @@ +# This is a configuration file for ProGuard. +# http://proguard.sourceforge.net/index.html#manual/usage.html +# +# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with +# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and +# will be ignored by new version of the Android plugin for Gradle. + +# Optimization is turned off by default. Dex does not like code run +# through the ProGuard optimize steps (and performs some +# of these optimizations on its own). +# Note that if you want to enable optimization, you cannot just +# include optimization flags in your own project configuration file; +# instead you will need to point to the +# "proguard-android-optimize.txt" file instead of this one from your +# project.properties file. +-dontoptimize + +# Preserve some attributes that may be required for reflection. +-keepattributes AnnotationDefault, + EnclosingMethod, + InnerClasses, + RuntimeVisibleAnnotations, + RuntimeVisibleParameterAnnotations, + RuntimeVisibleTypeAnnotations, + Signature + +-keep public class com.google.vending.licensing.ILicensingService +-keep public class com.android.vending.licensing.ILicensingService +-keep public class com.google.android.vending.licensing.ILicensingService +-dontnote com.android.vending.licensing.ILicensingService +-dontnote com.google.vending.licensing.ILicensingService +-dontnote com.google.android.vending.licensing.ILicensingService + +# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native +-keepclasseswithmembernames,includedescriptorclasses class * { + native ; +} + +# Keep setters in Views so that animations can still work. +-keepclassmembers public class * extends android.view.View { + void set*(***); + *** get*(); +} + +# We want to keep methods in Activity that could be used in the XML attribute onClick. +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keepclassmembers class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +# Preserve annotated Javascript interface methods. +-keepclassmembers class * { + @android.webkit.JavascriptInterface ; +} + +# The support libraries contains references to newer platform versions. +# Don't warn about those in case this app is linking against an older +# platform version. We know about them, and they are safe. +-dontnote android.support.** +-dontnote androidx.** +-dontwarn android.support.** +-dontwarn androidx.** + +# Understand the @Keep support annotation. +-keep class android.support.annotation.Keep + +-keep @android.support.annotation.Keep class * {*;} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @android.support.annotation.Keep (...); +} + +# These classes are duplicated between android.jar and org.apache.http.legacy.jar. +-dontnote org.apache.http.** +-dontnote android.net.http.** + +# These classes are duplicated between android.jar and core-lambda-stubs.jar. +-dontnote java.lang.invoke.** diff --git a/app/build/intermediates/full_jar/debug/createFullJarDebug/full.jar b/app/build/intermediates/full_jar/debug/createFullJarDebug/full.jar new file mode 100644 index 0000000..accd77c Binary files /dev/null and b/app/build/intermediates/full_jar/debug/createFullJarDebug/full.jar differ diff --git a/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state b/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state new file mode 100644 index 0000000..5fc9743 Binary files /dev/null and b/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state differ diff --git a/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties new file mode 100644 index 0000000..47b30f8 --- /dev/null +++ b/app/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties @@ -0,0 +1 @@ +#Fri Aug 28 17:51:53 EDT 2026 diff --git a/app/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/app/build/intermediates/incremental/debug/packageDebugResources/merger.xml new file mode 100644 index 0000000..8c04e28 --- /dev/null +++ b/app/build/intermediates/incremental/debug/packageDebugResources/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/build/intermediates/incremental/lintAnalyzeDebug/debug-artifact-dependencies.xml b/app/build/intermediates/incremental/lintAnalyzeDebug/debug-artifact-dependencies.xml new file mode 100644 index 0000000..d3bf16a --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebug/debug-artifact-dependencies.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebug/debug-artifact-libraries.xml b/app/build/intermediates/incremental/lintAnalyzeDebug/debug-artifact-libraries.xml new file mode 100644 index 0000000..cc25ef9 --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebug/debug-artifact-libraries.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebug/debug.xml b/app/build/intermediates/incremental/lintAnalyzeDebug/debug.xml new file mode 100644 index 0000000..7a21961 --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebug/debug.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebug/module.xml b/app/build/intermediates/incremental/lintAnalyzeDebug/module.xml new file mode 100644 index 0000000..c7baabe --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebug/module.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug-artifact-dependencies.xml b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug-artifact-dependencies.xml new file mode 100644 index 0000000..b32fdb9 --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug-artifact-dependencies.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug-artifact-libraries.xml b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug-artifact-libraries.xml new file mode 100644 index 0000000..52b2f08 --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug-artifact-libraries.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug.xml b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug.xml new file mode 100644 index 0000000..33ab88f --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/debug.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/module.xml b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/module.xml new file mode 100644 index 0000000..c7baabe --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugAndroidTest/module.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug-artifact-dependencies.xml b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug-artifact-dependencies.xml new file mode 100644 index 0000000..b32fdb9 --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug-artifact-dependencies.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug-artifact-libraries.xml b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug-artifact-libraries.xml new file mode 100644 index 0000000..52b2f08 --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug-artifact-libraries.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug.xml b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug.xml new file mode 100644 index 0000000..a2f9c0b --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/debug.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/module.xml b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/module.xml new file mode 100644 index 0000000..c7baabe --- /dev/null +++ b/app/build/intermediates/incremental/lintAnalyzeDebugUnitTest/module.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/build/intermediates/incremental/mergeDebugAssets/merger.xml b/app/build/intermediates/incremental/mergeDebugAssets/merger.xml new file mode 100644 index 0000000..e384f1f --- /dev/null +++ b/app/build/intermediates/incremental/mergeDebugAssets/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml new file mode 100644 index 0000000..70a9c48 --- /dev/null +++ b/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/link.kotlin_module b/app/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/link.kotlin_module new file mode 100644 index 0000000..348fbb1 Binary files /dev/null and b/app/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/link.kotlin_module differ diff --git a/app/build/intermediates/lint-cache/lintAnalyzeDebug/lint-cache-version.txt b/app/build/intermediates/lint-cache/lintAnalyzeDebug/lint-cache-version.txt new file mode 100644 index 0000000..e0143e2 --- /dev/null +++ b/app/build/intermediates/lint-cache/lintAnalyzeDebug/lint-cache-version.txt @@ -0,0 +1 @@ +Cache for Android Lint32.3.2_f037cb58f99bbf1c2689296af31c8623 diff --git a/app/build/intermediates/lint-cache/lintAnalyzeDebugAndroidTest/api-versions-50-37.0.bin b/app/build/intermediates/lint-cache/lintAnalyzeDebugAndroidTest/api-versions-50-37.0.bin new file mode 100644 index 0000000..42ea803 Binary files /dev/null and b/app/build/intermediates/lint-cache/lintAnalyzeDebugAndroidTest/api-versions-50-37.0.bin differ diff --git a/app/build/intermediates/lint-cache/lintAnalyzeDebugAndroidTest/lint-cache-version.txt b/app/build/intermediates/lint-cache/lintAnalyzeDebugAndroidTest/lint-cache-version.txt new file mode 100644 index 0000000..e0143e2 --- /dev/null +++ b/app/build/intermediates/lint-cache/lintAnalyzeDebugAndroidTest/lint-cache-version.txt @@ -0,0 +1 @@ +Cache for Android Lint32.3.2_f037cb58f99bbf1c2689296af31c8623 diff --git a/app/build/intermediates/lint-cache/lintAnalyzeDebugUnitTest/lint-cache-version.txt b/app/build/intermediates/lint-cache/lintAnalyzeDebugUnitTest/lint-cache-version.txt new file mode 100644 index 0000000..e0143e2 --- /dev/null +++ b/app/build/intermediates/lint-cache/lintAnalyzeDebugUnitTest/lint-cache-version.txt @@ -0,0 +1 @@ +Cache for Android Lint32.3.2_f037cb58f99bbf1c2689296af31c8623 diff --git a/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug-artifact-dependencies.xml b/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug-artifact-dependencies.xml new file mode 100644 index 0000000..d3bf16a --- /dev/null +++ b/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug-artifact-dependencies.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug-artifact-libraries.xml b/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug-artifact-libraries.xml new file mode 100644 index 0000000..cc25ef9 --- /dev/null +++ b/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug-artifact-libraries.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug.xml b/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug.xml new file mode 100644 index 0000000..b9af11e --- /dev/null +++ b/app/build/intermediates/lint_model/debug/generateDebugLintModel/debug.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/app/build/intermediates/lint_model/debug/generateDebugLintModel/module.xml b/app/build/intermediates/lint_model/debug/generateDebugLintModel/module.xml new file mode 100644 index 0000000..c7baabe --- /dev/null +++ b/app/build/intermediates/lint_model/debug/generateDebugLintModel/module.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/build/intermediates/lint_model_metadata/debug/writeDebugLintModelMetadata/lint-model-metadata.properties b/app/build/intermediates/lint_model_metadata/debug/writeDebugLintModelMetadata/lint-model-metadata.properties new file mode 100644 index 0000000..1fe9538 --- /dev/null +++ b/app/build/intermediates/lint_model_metadata/debug/writeDebugLintModelMetadata/lint-model-metadata.properties @@ -0,0 +1,3 @@ +mavenArtifactId=link +mavenGroupId=AiApp +mavenVersion=unspecified \ No newline at end of file diff --git a/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data new file mode 100644 index 0000000..b2d45d5 Binary files /dev/null and b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data differ diff --git a/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data0 b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data0 new file mode 100644 index 0000000..cc91809 Binary files /dev/null and b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data0 differ diff --git a/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data1 b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data1 new file mode 100644 index 0000000..4c31b62 Binary files /dev/null and b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/ThreadConstraint/app/data1 differ diff --git a/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/lint-partial.xml b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/lint-partial.xml new file mode 100644 index 0000000..ff13ed9 --- /dev/null +++ b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/lint-partial.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/lint-resources.xml b/app/build/intermediates/lint_partial_results/debug/lintAnalyzeDebug/out/lint-resources.xml new file mode 100644 index 0000000..e69de29 diff --git a/app/build/intermediates/local_aar_for_lint/debug/out.aar b/app/build/intermediates/local_aar_for_lint/debug/out.aar new file mode 100644 index 0000000..476fa47 Binary files /dev/null and b/app/build/intermediates/local_aar_for_lint/debug/out.aar differ diff --git a/app/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/app/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt new file mode 100644 index 0000000..78ac5b8 --- /dev/null +++ b/app/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt @@ -0,0 +1,2 @@ +R_DEF: Internal format may change without notice +local diff --git a/app/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/app/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt new file mode 100644 index 0000000..29017cd --- /dev/null +++ b/app/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt @@ -0,0 +1,15 @@ +1 +2 +8 +10 +11 +11-->INJECTED +11-->INJECTED +12 +13 diff --git a/app/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-link.jar b/app/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-link.jar new file mode 100644 index 0000000..6b11b69 Binary files /dev/null and b/app/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-link.jar differ diff --git a/app/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/app/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml new file mode 100644 index 0000000..372ea46 --- /dev/null +++ b/app/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/app/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/app/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/app/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/app/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt new file mode 100644 index 0000000..08f4ebe --- /dev/null +++ b/app/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt @@ -0,0 +1 @@ +0 Warning/Error \ No newline at end of file diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/link.kotlin_module b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/link.kotlin_module new file mode 100644 index 0000000..348fbb1 Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/link.kotlin_module differ diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/EnrollmentScanActivity.class b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/EnrollmentScanActivity.class new file mode 100644 index 0000000..01766bd Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/EnrollmentScanActivity.class differ diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/PinnedTls.class b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/PinnedTls.class new file mode 100644 index 0000000..19e654e Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/PinnedTls.class differ diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/PinnedTlsKt.class b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/PinnedTlsKt.class new file mode 100644 index 0000000..e1c71b1 Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/PinnedTlsKt.class differ diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerConfigKt.class b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerConfigKt.class new file mode 100644 index 0000000..5f047c3 Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerConfigKt.class differ diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerSettings.class b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerSettings.class new file mode 100644 index 0000000..9a87d3b Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerSettings.class differ diff --git a/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerStore.class b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerStore.class new file mode 100644 index 0000000..b47ced8 Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/example/wgapplink/ServerStore.class differ diff --git a/app/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar b/app/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar new file mode 100644 index 0000000..f79b73e Binary files /dev/null and b/app/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar differ diff --git a/app/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/app/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt new file mode 100644 index 0000000..ca7bace --- /dev/null +++ b/app/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt @@ -0,0 +1 @@ +com.example.wgapplink diff --git a/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug-artifact-dependencies.xml b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug-artifact-dependencies.xml new file mode 100644 index 0000000..b32fdb9 --- /dev/null +++ b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug-artifact-dependencies.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug-artifact-libraries.xml b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug-artifact-libraries.xml new file mode 100644 index 0000000..52b2f08 --- /dev/null +++ b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug-artifact-libraries.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug.xml b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug.xml new file mode 100644 index 0000000..e9e5754 --- /dev/null +++ b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/debug.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/module.xml b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/module.xml new file mode 100644 index 0000000..c7baabe --- /dev/null +++ b/app/build/intermediates/unit_test_lint_model/debug/generateDebugUnitTestLintModel/module.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data differ diff --git a/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data0 b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data0 new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data0 differ diff --git a/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data1 b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data1 new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/ThreadConstraint/app/data1 differ diff --git a/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/lint-partial.xml b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/lint-partial.xml new file mode 100644 index 0000000..ff13ed9 --- /dev/null +++ b/app/build/intermediates/unit_test_lint_partial_results/debug/lintAnalyzeDebugUnitTest/out/lint-partial.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab new file mode 100644 index 0000000..8aad32b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.keystream new file mode 100644 index 0000000..08e7df1 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.keystream.len new file mode 100644 index 0000000..eb52963 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.len new file mode 100644 index 0000000..2a17e6e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at new file mode 100644 index 0000000..5875372 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab_i.len new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab new file mode 100644 index 0000000..8aad32b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.keystream new file mode 100644 index 0000000..08e7df1 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.keystream.len new file mode 100644 index 0000000..eb52963 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.len new file mode 100644 index 0000000..2a17e6e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at new file mode 100644 index 0000000..5875372 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab_i.len new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab new file mode 100644 index 0000000..2457d48 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream new file mode 100644 index 0000000..3fe7387 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len new file mode 100644 index 0000000..78e8f3b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len new file mode 100644 index 0000000..a9f80ae Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at new file mode 100644 index 0000000..94598dc Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i new file mode 100644 index 0000000..13625e0 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab new file mode 100644 index 0000000..d48205f Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream new file mode 100644 index 0000000..cf31b7b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len new file mode 100644 index 0000000..b31f54b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len new file mode 100644 index 0000000..93a595b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at new file mode 100644 index 0000000..8f28327 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i new file mode 100644 index 0000000..6e8e775 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab new file mode 100644 index 0000000..26a66e7 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream new file mode 100644 index 0000000..cf31b7b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len new file mode 100644 index 0000000..b31f54b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len new file mode 100644 index 0000000..93a595b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at new file mode 100644 index 0000000..c6b2c53 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i new file mode 100644 index 0000000..6e8e775 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab new file mode 100644 index 0000000..c1f240d Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream new file mode 100644 index 0000000..a1db49f Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len new file mode 100644 index 0000000..96adf30 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len new file mode 100644 index 0000000..9e27f73 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at new file mode 100644 index 0000000..c1aab2b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i new file mode 100644 index 0000000..71de71c Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab new file mode 100644 index 0000000..f2ce7f7 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream new file mode 100644 index 0000000..46c747a Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len new file mode 100644 index 0000000..1161cbc Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len new file mode 100644 index 0000000..01bdaa1 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at new file mode 100644 index 0000000..6fcb00a Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i new file mode 100644 index 0000000..f0ffd77 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab new file mode 100644 index 0000000..870a067 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream new file mode 100644 index 0000000..6dbaf40 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len new file mode 100644 index 0000000..5a25776 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len new file mode 100644 index 0000000..817b326 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at new file mode 100644 index 0000000..f4ded32 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i new file mode 100644 index 0000000..082fd81 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab new file mode 100644 index 0000000..7740fc7 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream new file mode 100644 index 0000000..3fe7387 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len new file mode 100644 index 0000000..78e8f3b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len new file mode 100644 index 0000000..a9f80ae Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at new file mode 100644 index 0000000..1d34dd9 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i new file mode 100644 index 0000000..13625e0 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab new file mode 100644 index 0000000..bdf584a Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream new file mode 100644 index 0000000..69a57a5 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len new file mode 100644 index 0000000..8107e24 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len new file mode 100644 index 0000000..2a17e6e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at new file mode 100644 index 0000000..2f9af40 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i new file mode 100644 index 0000000..a84cf9e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab new file mode 100644 index 0000000..bdf584a Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream new file mode 100644 index 0000000..f521eae Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len new file mode 100644 index 0000000..8aefb3a Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len new file mode 100644 index 0000000..2a17e6e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at new file mode 100644 index 0000000..fe6fbed Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i new file mode 100644 index 0000000..d7d3fd9 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab new file mode 100644 index 0000000..c393a51 --- /dev/null +++ b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab @@ -0,0 +1,2 @@ +3 +0 \ No newline at end of file diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab new file mode 100644 index 0000000..642a158 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream new file mode 100644 index 0000000..3fe7387 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len new file mode 100644 index 0000000..78e8f3b Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len new file mode 100644 index 0000000..a9f80ae Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at new file mode 100644 index 0000000..9f383b5 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i new file mode 100644 index 0000000..13625e0 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab new file mode 100644 index 0000000..1baf7fa Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream new file mode 100644 index 0000000..636f34a Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len new file mode 100644 index 0000000..29ce11c Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len new file mode 100644 index 0000000..a9f80ae Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at new file mode 100644 index 0000000..f24552e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i new file mode 100644 index 0000000..e9905b3 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab new file mode 100644 index 0000000..7cd1c30 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream new file mode 100644 index 0000000..9317d46 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len new file mode 100644 index 0000000..765b15c Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len new file mode 100644 index 0000000..8a3425e Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at new file mode 100644 index 0000000..009d748 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i new file mode 100644 index 0000000..0c19196 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len new file mode 100644 index 0000000..131e265 Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len differ diff --git a/app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin b/app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin new file mode 100644 index 0000000..41fafac Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin differ diff --git a/app/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/app/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin new file mode 100644 index 0000000..69d027f Binary files /dev/null and b/app/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin differ diff --git a/app/build/ktfmt/ktfmtFormatMain/output.txt b/app/build/ktfmt/ktfmtFormatMain/output.txt new file mode 100644 index 0000000..a6c26d0 --- /dev/null +++ b/app/build/ktfmt/ktfmtFormatMain/output.txt @@ -0,0 +1,5 @@ +Ktfmt Summary: + - Valid formatted files: 0 + - Invalid formatted files: 3 + - Skipped files: 0 + - Failed files: 0 \ No newline at end of file diff --git a/app/build/ktfmt/ktfmtFormatScripts/output.txt b/app/build/ktfmt/ktfmtFormatScripts/output.txt new file mode 100644 index 0000000..7c0e767 --- /dev/null +++ b/app/build/ktfmt/ktfmtFormatScripts/output.txt @@ -0,0 +1,5 @@ +Ktfmt Summary: + - Valid formatted files: 1 + - Invalid formatted files: 0 + - Skipped files: 0 + - Failed files: 0 \ No newline at end of file diff --git a/app/build/outputs/logs/manifest-merger-debug-report.txt b/app/build/outputs/logs/manifest-merger-debug-report.txt new file mode 100644 index 0000000..6592463 --- /dev/null +++ b/app/build/outputs/logs/manifest-merger-debug-report.txt @@ -0,0 +1,16 @@ +-- Merging decision tree log --- +manifest +ADDED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml:6:1-72 +INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml:6:1-72 + package + INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml + xmlns:android + ADDED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml:6:11-69 +uses-sdk +INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml reason: use-sdk injection requested +INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml +INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml + android:targetSdkVersion + INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml + android:minSdkVersion + INJECTED from /home/bob/repos/ai-app/wg-app-link/app/src/main/AndroidManifest.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a9798b4 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/kotlin/com/example/wgapplink/EnrollmentScanActivity.kt b/app/src/main/kotlin/com/example/wgapplink/EnrollmentScanActivity.kt new file mode 100644 index 0000000..6f5d646 --- /dev/null +++ b/app/src/main/kotlin/com/example/wgapplink/EnrollmentScanActivity.kt @@ -0,0 +1,30 @@ +package com.example.wgapplink + +import android.view.View +import com.journeyapps.barcodescanner.CaptureActivity +import com.journeyapps.barcodescanner.DecoratedBarcodeView + +/** + * The screen behind an app's "Scan QR code" button: zxing-android-embedded's capture activity with + * two of its defaults taken off, both because they put work on the person holding the phone. + * + * - **It decodes only the framing rectangle**, which `CameraPreview.marginFraction` insets by 10% + * from every edge and `DecoderThread` crops each frame to before the decoder sees it. A code that + * fills the viewfinder keeps decoding -- measured, not assumed -- but it does so having spent its + * quiet zone and margin for error on the crop, and anything further out is simply not looked at. + * Decoding the whole preview costs nothing and means the framing is never the user's problem. + * - **It decorates the preview** with a red laser line and the dots the detector scatters wherever + * it finds a candidate pattern. That is the library's house style; a plain preview is ours. + * + * Orientation is left to the sensor rather than pinned to landscape as the library's own manifest + * entry pins it, so the phone can be held whichever way the code is in front of it. + */ +class EnrollmentScanActivity : CaptureActivity() { + override fun initializeContent(): DecoratedBarcodeView { + val view = super.initializeContent() + view.barcodeView.marginFraction = 0.0 + view.viewFinder.visibility = View.GONE + view.statusView.visibility = View.GONE + return view + } +} diff --git a/app/src/main/kotlin/com/example/wgapplink/PinnedTls.kt b/app/src/main/kotlin/com/example/wgapplink/PinnedTls.kt new file mode 100644 index 0000000..f87631d --- /dev/null +++ b/app/src/main/kotlin/com/example/wgapplink/PinnedTls.kt @@ -0,0 +1,70 @@ +package com.example.wgapplink + +import java.io.ByteArrayInputStream +import java.net.HttpURLConnection +import java.security.KeyStore +import java.security.cert.CertificateFactory +import javax.net.ssl.HttpsURLConnection +import javax.net.ssl.SSLContext +import javax.net.ssl.SSLSocketFactory +import javax.net.ssl.TrustManagerFactory +import javax.net.ssl.X509TrustManager + +/** + * TLS that trusts one CA and nothing else -- not the device's system trust store, so a genuine + * CA-issued certificate for some other host is refused just as firmly as a self-signed one. + * + * The certificate is passed in rather than read from anywhere, because each app generates its own + * at build time from the CA on the machine doing the build. That is what makes the trust anchor + * follow the build: an APK built on the backend host trusts that host, and one built in a dev VM + * trusts that VM's throwaway CA and is good only for its emulator. Neither app should ever have a + * second anchor to get wrong, which is also why enrollment carries no CA -- photographing the + * terminal leaks only the rotatable token. + * + * Hold one of these per app and reuse it: the [socketFactory] is built lazily and then kept, since + * every reconnect would otherwise redo the KeyStore and TrustManager setup from scratch. + */ +class PinnedTls(private val caPem: String) { + + val socketFactory: SSLSocketFactory by lazy { + // Trimmed because CertificateFactory only recognises PEM when the + // "-----BEGIN" preamble is the very first thing it sees; surrounding + // whitespace sends it down the DER path instead, which fails at + // runtime with an ASN.1 decode error nowhere near the cause. + val caCert = + CertificateFactory.getInstance("X.509") + .generateCertificate(ByteArrayInputStream(caPem.trim().encodeToByteArray())) + val keyStore = + KeyStore.getInstance(KeyStore.getDefaultType()).apply { + load(null, null) + // The alias names an entry in a KeyStore that exists only in + // memory for the length of this block, so it is arbitrary and + // deliberately not per-app -- nothing reads it back. + setCertificateEntry(PINNED_CA_ALIAS, caCert) + } + val trustManager = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()) + .apply { init(keyStore) } + .trustManagers + .filterIsInstance() + .first() + SSLContext.getInstance("TLS") + .apply { init(null, arrayOf(trustManager), null) } + .socketFactory + } + + /** + * Pins [connection], which must be every connection the app makes -- there is no unpinned path + * in either project, and adding one would quietly undo the whole arrangement. + * + * A plain HTTP connection is left alone rather than refused, since dev-updater serves its + * bootstrap download over one deliberately. + */ + fun applyTo(connection: HttpURLConnection) { + if (connection is HttpsURLConnection) { + connection.sslSocketFactory = socketFactory + } + } +} + +private const val PINNED_CA_ALIAS = "pinned-ca" diff --git a/app/src/main/kotlin/com/example/wgapplink/ServerConfig.kt b/app/src/main/kotlin/com/example/wgapplink/ServerConfig.kt new file mode 100644 index 0000000..582b077 --- /dev/null +++ b/app/src/main/kotlin/com/example/wgapplink/ServerConfig.kt @@ -0,0 +1,165 @@ +package com.example.wgapplink + +import android.content.Context +import android.net.Uri +import android.security.keystore.KeyGenParameterSpec +import android.security.keystore.KeyProperties +import android.util.Base64 +import androidx.core.content.edit +import java.security.KeyStore +import javax.crypto.Cipher +import javax.crypto.KeyGenerator +import javax.crypto.SecretKey +import javax.crypto.spec.GCMParameterSpec + +/** + * Where a backend is and how to authenticate to it. Absent until the phone is enrolled, which + * happens by scanning the QR the server prints to its terminal. + */ +data class ServerSettings(val host: String, val port: Int, val token: String) { + val baseUrl: String + get() = "https://$host:$port" +} + +/** + * Reads and writes one app's enrollment. + * + * Two things are per-app and both are passed in rather than derived, because getting either wrong + * is silent rather than loud: + * - [scheme] is what routes a scanned QR back to the right app (`aiapp`, `devupdater`). Two apps + * accepting the same scheme would each offer to handle the other's enrollment. + * - [keyAlias] names the Android Keystore key the token is sealed under. It is **persisted**, so an + * app that changes it stops being able to unseal what it already stored, and the phone silently + * reads as not enrolled. Existing values must be carried over exactly when adopting this class. + */ +class ServerStore(private val scheme: String, private val keyAlias: String) { + + fun load(context: Context): ServerSettings? { + val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) + val host = prefs.getString(KEY_HOST, null) ?: return null + val port = prefs.getInt(KEY_PORT, 0) + val sealed = prefs.getString(KEY_TOKEN, null) ?: return null + val token = unseal(sealed) ?: return null + if (port == 0 || token.isEmpty()) return null + return ServerSettings(host, port, token) + } + + fun save(context: Context, settings: ServerSettings) { + context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).edit { + putString(KEY_HOST, settings.host) + putInt(KEY_PORT, settings.port) + putString(KEY_TOKEN, seal(settings.token)) + } + } + + /** + * Parses the enrollment URI the QR carries, e.g. + * `aiapp://enroll?host=10.66.0.1&port=8443&token=...`. + * + * Null if any part is missing, so a malformed or foreign scan cannot clobber a working + * enrollment with a half-filled one. + */ + fun parseEnrollmentUri(uri: Uri): ServerSettings? { + if (uri.scheme != scheme || uri.host != "enroll") return null + val host = uri.getQueryParameter("host") ?: return null + val port = uri.getQueryParameter("port")?.toIntOrNull() ?: return null + val token = uri.getQueryParameter("token") ?: return null + if (host.isEmpty() || token.isEmpty()) return null + return ServerSettings(host, port, token) + } + + // ----------------------------------------------------------------------- + // Token sealing. The token authenticates requests to a server whose API is + // remote code execution, so it is stored AES-GCM-encrypted under an Android + // Keystore key (hardware-backed where the device has one) rather than in + // plain preferences. Hand-rolled rather than Jetpack's + // EncryptedSharedPreferences, which is deprecated with no drop-in + // successor -- Google's own guidance is now to use Keystore directly. + + /** + * The key if there is one, without making one. + * + * The read side must never create. A sealed token with no key behind it means the key was lost + * -- a device reset, or the app's data restored onto another device, where Keystore keys do not + * travel -- and generating a fresh one there would leave a key nothing had ever sealed with and + * still fail to decrypt. Absent is the honest answer, and the caller reads it as "not + * enrolled". + */ + private fun existingTokenKey(): SecretKey? { + val keyStore = KeyStore.getInstance(KEYSTORE).apply { load(null) } + return keyStore.getKey(keyAlias, null) as? SecretKey + } + + private fun tokenKey(): SecretKey { + existingTokenKey()?.let { + return it + } + val generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, KEYSTORE) + generator.init( + KeyGenParameterSpec.Builder( + keyAlias, + KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT, + ) + .setBlockModes(KeyProperties.BLOCK_MODE_GCM) + .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE) + .build() + ) + return generator.generateKey() + } + + /** `iv:ciphertext`, both base64 -- the stored form of the token. */ + private fun seal(token: String): String { + val cipher = Cipher.getInstance(TRANSFORMATION) + cipher.init(Cipher.ENCRYPT_MODE, tokenKey()) + val ciphertext = cipher.doFinal(token.encodeToByteArray()) + return Base64.encodeToString(cipher.iv, Base64.NO_WRAP) + + ":" + + Base64.encodeToString(ciphertext, Base64.NO_WRAP) + } + + /** + * Null on any failure, including the lost-key case above. The caller treats that as "not + * enrolled"; re-scanning the QR, or rotating the token server-side, is the recovery -- so + * failing soft here is right rather than lenient. + */ + private fun unseal(sealed: String): String? = + try { + val (ivB64, dataB64) = + sealed.split(":", limit = 2).let { + if (it.size != 2) return null else it[0] to it[1] + } + val cipher = Cipher.getInstance(TRANSFORMATION) + cipher.init( + Cipher.DECRYPT_MODE, + existingTokenKey() ?: return null, + GCMParameterSpec(GCM_TAG_BITS, Base64.decode(ivB64, Base64.NO_WRAP)), + ) + cipher.doFinal(Base64.decode(dataB64, Base64.NO_WRAP)).decodeToString() + } catch (_: Exception) { + null + } +} + +/** + * Whether this app may reach a local network address at all. + * + * Android 17 made `ACCESS_LOCAL_NETWORK` mandatory for it, and a denial is invisible at the socket: + * the OS drops the traffic, so a blocked app and an unreachable server produce the same connect + * timeout. Without asking explicitly there is no way to tell those apart, and the failure shown + * would blame the server or the tunnel for something neither is doing. + */ +fun localNetworkAllowed(context: Context): Boolean = + android.os.Build.VERSION.SDK_INT < 37 || + context.checkSelfPermission("android.permission.ACCESS_LOCAL_NETWORK") == + android.content.pm.PackageManager.PERMISSION_GRANTED + +// Both apps store under the same preferences name, which does not collide: +// SharedPreferences are per-application, so "server" means this app's server. +private const val PREFS_NAME = "server" +private const val KEY_HOST = "host" +private const val KEY_PORT = "port" +private const val KEY_TOKEN = "token" + +private const val KEYSTORE = "AndroidKeyStore" +private const val TRANSFORMATION = "AES/GCM/NoPadding" +private const val GCM_TAG_BITS = 128