@offline-protocol/mesh-sdk 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1216) hide show
  1. package/README.md +195 -0
  2. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  3. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  4. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  5. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/cache-v2-f94a2fa18daa925ecfe6.json +1311 -0
  6. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-958753898817403d4994.json +188 -0
  7. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-816c877d05f061ba32ff.json +69 -0
  8. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  9. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/index-2025-11-06T08-13-13-0701.json +92 -0
  10. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/target-copy_ffi_lib-Debug-031dfd8abe9dbf81c4d6.json +73 -0
  11. package/android/.cxx/Debug/04o6o112/arm64-v8a/.cmake/api/v1/reply/target-offline_protocol_jni-Debug-1c8e9f9c4754307ecff9.json +166 -0
  12. package/android/.cxx/Debug/04o6o112/arm64-v8a/.ninja_deps +0 -0
  13. package/android/.cxx/Debug/04o6o112/arm64-v8a/.ninja_log +43 -0
  14. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeCache.txt +395 -0
  15. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  16. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  17. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  18. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  19. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  20. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  21. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  22. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  23. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  24. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/CMakeOutput.log +264 -0
  25. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/TargetDirectories.txt +4 -0
  26. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
  27. package/android/.cxx/Debug/04o6o112/arm64-v8a/CMakeFiles/rules.ninja +64 -0
  28. package/android/.cxx/Debug/04o6o112/arm64-v8a/additional_project_files.txt +3 -0
  29. package/android/.cxx/Debug/04o6o112/arm64-v8a/android_gradle_build.json +43 -0
  30. package/android/.cxx/Debug/04o6o112/arm64-v8a/android_gradle_build_mini.json +32 -0
  31. package/android/.cxx/Debug/04o6o112/arm64-v8a/build.ninja +183 -0
  32. package/android/.cxx/Debug/04o6o112/arm64-v8a/build_file_index.txt +1 -0
  33. package/android/.cxx/Debug/04o6o112/arm64-v8a/cmake_install.cmake +54 -0
  34. package/android/.cxx/Debug/04o6o112/arm64-v8a/compile_commands.json +12 -0
  35. package/android/.cxx/Debug/04o6o112/arm64-v8a/compile_commands.json.bin +0 -0
  36. package/android/.cxx/Debug/04o6o112/arm64-v8a/configure_fingerprint.bin +29 -0
  37. package/android/.cxx/Debug/04o6o112/arm64-v8a/metadata_generation_command.txt +18 -0
  38. package/android/.cxx/Debug/04o6o112/arm64-v8a/prefab_config.json +4 -0
  39. package/android/.cxx/Debug/04o6o112/arm64-v8a/symbol_folder_index.txt +1 -0
  40. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  41. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  42. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  43. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/cache-v2-7c41548ba7f7a262f089.json +1311 -0
  44. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-e55c72281fbc2be8d645.json +188 -0
  45. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-bdf1c220ad895f5774fb.json +69 -0
  46. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  47. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/index-2025-11-06T08-13-14-0558.json +92 -0
  48. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/target-copy_ffi_lib-Debug-63cd85708f54328e2a33.json +73 -0
  49. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.cmake/api/v1/reply/target-offline_protocol_jni-Debug-860ad59938b7faec5754.json +166 -0
  50. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.ninja_deps +0 -0
  51. package/android/.cxx/Debug/04o6o112/armeabi-v7a/.ninja_log +43 -0
  52. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeCache.txt +395 -0
  53. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  54. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  55. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  56. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  57. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  58. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  59. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  60. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  61. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  62. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/CMakeOutput.log +268 -0
  63. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/TargetDirectories.txt +4 -0
  64. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
  65. package/android/.cxx/Debug/04o6o112/armeabi-v7a/CMakeFiles/rules.ninja +64 -0
  66. package/android/.cxx/Debug/04o6o112/armeabi-v7a/additional_project_files.txt +3 -0
  67. package/android/.cxx/Debug/04o6o112/armeabi-v7a/android_gradle_build.json +43 -0
  68. package/android/.cxx/Debug/04o6o112/armeabi-v7a/android_gradle_build_mini.json +32 -0
  69. package/android/.cxx/Debug/04o6o112/armeabi-v7a/build.ninja +183 -0
  70. package/android/.cxx/Debug/04o6o112/armeabi-v7a/build_file_index.txt +1 -0
  71. package/android/.cxx/Debug/04o6o112/armeabi-v7a/cmake_install.cmake +54 -0
  72. package/android/.cxx/Debug/04o6o112/armeabi-v7a/compile_commands.json +12 -0
  73. package/android/.cxx/Debug/04o6o112/armeabi-v7a/compile_commands.json.bin +0 -0
  74. package/android/.cxx/Debug/04o6o112/armeabi-v7a/configure_fingerprint.bin +29 -0
  75. package/android/.cxx/Debug/04o6o112/armeabi-v7a/metadata_generation_command.txt +18 -0
  76. package/android/.cxx/Debug/04o6o112/armeabi-v7a/prefab_config.json +4 -0
  77. package/android/.cxx/Debug/04o6o112/armeabi-v7a/symbol_folder_index.txt +1 -0
  78. package/android/.cxx/Debug/04o6o112/hash_key.txt +25 -0
  79. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  80. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  81. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  82. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/cache-v2-42023ee6505d9fa49dd4.json +1311 -0
  83. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/cmakeFiles-v1-f45c3ac26c419160b148.json +188 -0
  84. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/codemodel-v2-49c1f5aaac8de9fc8d04.json +69 -0
  85. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  86. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/index-2025-11-06T08-13-15-0078.json +92 -0
  87. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/target-copy_ffi_lib-Debug-954878eb814cfeb88ac9.json +73 -0
  88. package/android/.cxx/Debug/04o6o112/x86/.cmake/api/v1/reply/target-offline_protocol_jni-Debug-599396bfe047610845e0.json +166 -0
  89. package/android/.cxx/Debug/04o6o112/x86/.ninja_deps +0 -0
  90. package/android/.cxx/Debug/04o6o112/x86/.ninja_log +43 -0
  91. package/android/.cxx/Debug/04o6o112/x86/CMakeCache.txt +395 -0
  92. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  93. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  94. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  95. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  96. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  97. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  98. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  99. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  100. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  101. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/CMakeOutput.log +258 -0
  102. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/TargetDirectories.txt +4 -0
  103. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/cmake.check_cache +1 -0
  104. package/android/.cxx/Debug/04o6o112/x86/CMakeFiles/rules.ninja +64 -0
  105. package/android/.cxx/Debug/04o6o112/x86/additional_project_files.txt +3 -0
  106. package/android/.cxx/Debug/04o6o112/x86/android_gradle_build.json +43 -0
  107. package/android/.cxx/Debug/04o6o112/x86/android_gradle_build_mini.json +32 -0
  108. package/android/.cxx/Debug/04o6o112/x86/build.ninja +183 -0
  109. package/android/.cxx/Debug/04o6o112/x86/build_file_index.txt +1 -0
  110. package/android/.cxx/Debug/04o6o112/x86/cmake_install.cmake +54 -0
  111. package/android/.cxx/Debug/04o6o112/x86/compile_commands.json +12 -0
  112. package/android/.cxx/Debug/04o6o112/x86/compile_commands.json.bin +0 -0
  113. package/android/.cxx/Debug/04o6o112/x86/configure_fingerprint.bin +29 -0
  114. package/android/.cxx/Debug/04o6o112/x86/metadata_generation_command.txt +18 -0
  115. package/android/.cxx/Debug/04o6o112/x86/prefab_config.json +4 -0
  116. package/android/.cxx/Debug/04o6o112/x86/symbol_folder_index.txt +1 -0
  117. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  118. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  119. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  120. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/cache-v2-9c2dffc78a4d85163abd.json +1311 -0
  121. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-6fd660d496ad526b3e02.json +188 -0
  122. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/codemodel-v2-2d53a88f7e3a85d1db68.json +69 -0
  123. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  124. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/index-2025-11-06T08-13-15-0649.json +92 -0
  125. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/target-copy_ffi_lib-Debug-aa91273acb422e0d2606.json +73 -0
  126. package/android/.cxx/Debug/04o6o112/x86_64/.cmake/api/v1/reply/target-offline_protocol_jni-Debug-d6267ba86ac88964cb2f.json +166 -0
  127. package/android/.cxx/Debug/04o6o112/x86_64/.ninja_deps +0 -0
  128. package/android/.cxx/Debug/04o6o112/x86_64/.ninja_log +43 -0
  129. package/android/.cxx/Debug/04o6o112/x86_64/CMakeCache.txt +395 -0
  130. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  131. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  132. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  133. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  134. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  135. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  136. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  137. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  138. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  139. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/CMakeOutput.log +258 -0
  140. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/TargetDirectories.txt +4 -0
  141. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/cmake.check_cache +1 -0
  142. package/android/.cxx/Debug/04o6o112/x86_64/CMakeFiles/rules.ninja +64 -0
  143. package/android/.cxx/Debug/04o6o112/x86_64/additional_project_files.txt +3 -0
  144. package/android/.cxx/Debug/04o6o112/x86_64/android_gradle_build.json +43 -0
  145. package/android/.cxx/Debug/04o6o112/x86_64/android_gradle_build_mini.json +32 -0
  146. package/android/.cxx/Debug/04o6o112/x86_64/build.ninja +183 -0
  147. package/android/.cxx/Debug/04o6o112/x86_64/build_file_index.txt +1 -0
  148. package/android/.cxx/Debug/04o6o112/x86_64/cmake_install.cmake +54 -0
  149. package/android/.cxx/Debug/04o6o112/x86_64/compile_commands.json +12 -0
  150. package/android/.cxx/Debug/04o6o112/x86_64/compile_commands.json.bin +0 -0
  151. package/android/.cxx/Debug/04o6o112/x86_64/configure_fingerprint.bin +29 -0
  152. package/android/.cxx/Debug/04o6o112/x86_64/metadata_generation_command.txt +18 -0
  153. package/android/.cxx/Debug/04o6o112/x86_64/prefab_config.json +4 -0
  154. package/android/.cxx/Debug/04o6o112/x86_64/symbol_folder_index.txt +1 -0
  155. package/android/.cxx/tools/debug/arm64-v8a/compile_commands.json +12 -0
  156. package/android/.cxx/tools/debug/armeabi-v7a/compile_commands.json +12 -0
  157. package/android/.cxx/tools/debug/x86/compile_commands.json +12 -0
  158. package/android/.cxx/tools/debug/x86_64/compile_commands.json +12 -0
  159. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  160. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  161. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  162. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  163. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  164. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  165. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  166. package/android/.gradle/8.9/gc.properties +0 -0
  167. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  168. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  169. package/android/.gradle/vcs-1/gc.properties +0 -0
  170. package/android/.vscode/README.md +36 -0
  171. package/android/.vscode/settings.json +14 -0
  172. package/android/build/.transforms/53efb3d4d9f00d92cbf4ba76c24820df/results.bin +1 -0
  173. package/android/build/.transforms/53efb3d4d9f00d92cbf4ba76c24820df/transformed/classes/classes_dex/classes.dex +0 -0
  174. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/results.bin +1 -0
  175. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$Companion.dex +0 -0
  176. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$MeshObservation.dex +0 -0
  177. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$PendingFragment.dex +0 -0
  178. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$WhenMappings.dex +0 -0
  179. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$fragmentPollingRunnable$1.dex +0 -0
  180. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$gattClientCallback$1.dex +0 -0
  181. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$gattServerCallback$1$WhenMappings.dex +0 -0
  182. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$gattServerCallback$1.dex +0 -0
  183. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$resolveTargetAddress$$inlined$sortedBy$1.dex +0 -0
  184. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$routingCleanupRunnable$1.dex +0 -0
  185. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$scanWatchdogRunnable$1.dex +0 -0
  186. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$startAdvertising$1.dex +0 -0
  187. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager$startScanning$1.dex +0 -0
  188. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BleManager.dex +0 -0
  189. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/BuildConfig.dex +0 -0
  190. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/InternetManager$Companion.dex +0 -0
  191. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/InternetManager$messagePollingRunnable$1.dex +0 -0
  192. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/InternetManager$pingRunnable$1.dex +0 -0
  193. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/InternetManager$webSocketListener$1.dex +0 -0
  194. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/InternetManager.dex +0 -0
  195. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/LogThrottler.dex +0 -0
  196. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$Companion.dex +0 -0
  197. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$Constants.dex +0 -0
  198. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$ParsedConfig.dex +0 -0
  199. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$WhenMappings.dex +0 -0
  200. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$create$1.dex +0 -0
  201. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$create$3$1.dex +0 -0
  202. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule$create$5$1.dex +0 -0
  203. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolModule.dex +0 -0
  204. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/OfflineProtocolPackage.dex +0 -0
  205. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$AlreadyRunning.dex +0 -0
  206. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$InvalidState.dex +0 -0
  207. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$NotAvailable.dex +0 -0
  208. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$NotRunning.dex +0 -0
  209. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$PermissionDenied.dex +0 -0
  210. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$PlatformError.dex +0 -0
  211. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException$StartFailed.dex +0 -0
  212. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportException.dex +0 -0
  213. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportManager$DefaultImpls.dex +0 -0
  214. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportManager.dex +0 -0
  215. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportManagerListener.dex +0 -0
  216. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/TransportState.dex +0 -0
  217. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/WifiDirectManager$Companion.dex +0 -0
  218. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/WifiDirectManager$messagePollingRunnable$1.dex +0 -0
  219. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/WifiDirectManager$p2pReceiver$1.dex +0 -0
  220. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/WifiDirectManager$startPeerDiscovery$1.dex +0 -0
  221. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/WifiDirectManager$stopPeerDiscovery$1.dex +0 -0
  222. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/WifiDirectManager.dex +0 -0
  223. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/ble/MeshConnectionRegistry.dex +0 -0
  224. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshAdvertisementData$Companion.dex +0 -0
  225. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshAdvertisementData.dex +0 -0
  226. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$Companion.dex +0 -0
  227. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$ConnectionIntent.dex +0 -0
  228. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$MeshConfig.dex +0 -0
  229. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$MeshDecision.dex +0 -0
  230. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$MeshRole.dex +0 -0
  231. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$PeerMetrics.dex +0 -0
  232. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$PeerState.dex +0 -0
  233. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$RebalanceDirective.dex +0 -0
  234. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$RemoteCandidate.dex +0 -0
  235. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$ScoreWeights.dex +0 -0
  236. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$pruneCandidateCache$$inlined$sortedBy$1.dex +0 -0
  237. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$prunePeerCache$$inlined$sortBy$1.dex +0 -0
  238. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController$prunePeerCache$$inlined$sortBy$2.dex +0 -0
  239. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/offlineprotocol/mesh/MeshController.dex +0 -0
  240. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/AckConfig$Companion.dex +0 -0
  241. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/AckConfig.dex +0 -0
  242. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/BleFragment$Companion.dex +0 -0
  243. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/BleFragment.dex +0 -0
  244. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/DedupConfig$Companion.dex +0 -0
  245. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/DedupConfig.dex +0 -0
  246. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/DedupStats$Companion.dex +0 -0
  247. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/DedupStats.dex +0 -0
  248. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/Disposable$Companion.dex +0 -0
  249. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/Disposable.dex +0 -0
  250. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/DorsConfig$Companion.dex +0 -0
  251. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/DorsConfig.dex +0 -0
  252. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/EventCallback$Companion.dex +0 -0
  253. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/EventCallback.dex +0 -0
  254. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverter$DefaultImpls.dex +0 -0
  255. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverter.dex +0 -0
  256. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterBoolean.dex +0 -0
  257. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterCallbackInterface.dex +0 -0
  258. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterFloat.dex +0 -0
  259. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalShort.dex +0 -0
  260. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalString.dex +0 -0
  261. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalTypeBleFragment.dex +0 -0
  262. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalTypeFileProgress.dex +0 -0
  263. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalTypeInternetMessage.dex +0 -0
  264. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalTypeRouteEntry.dex +0 -0
  265. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalTypeTransportMetrics.dex +0 -0
  266. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalTypeWifiDirectMessage.dex +0 -0
  267. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalUByte.dex +0 -0
  268. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterOptionalULong.dex +0 -0
  269. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterRustBuffer$DefaultImpls.dex +0 -0
  270. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterRustBuffer.dex +0 -0
  271. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterSequenceString.dex +0 -0
  272. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterSequenceTypeMessageStats.dex +0 -0
  273. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterSequenceTypeNetworkLink.dex +0 -0
  274. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterSequenceTypeNetworkNode.dex +0 -0
  275. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterSequenceTypeRouteEntry.dex +0 -0
  276. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterSequenceUByte.dex +0 -0
  277. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterShort.dex +0 -0
  278. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterString.dex +0 -0
  279. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeAckConfig.dex +0 -0
  280. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeBleFragment.dex +0 -0
  281. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeDedupConfig.dex +0 -0
  282. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeDedupStats.dex +0 -0
  283. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeDorsConfig.dex +0 -0
  284. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeEventCallback.dex +0 -0
  285. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeFileProgress.dex +0 -0
  286. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeGradientRoutingConfig.dex +0 -0
  287. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeInternetMessage.dex +0 -0
  288. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeMessagePriority.dex +0 -0
  289. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeMessageStats.dex +0 -0
  290. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeNetworkLink.dex +0 -0
  291. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeNetworkNode.dex +0 -0
  292. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeNetworkTopology.dex +0 -0
  293. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeOfflineProtocol.dex +0 -0
  294. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypePathConfig.dex +0 -0
  295. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypePeerDevice.dex +0 -0
  296. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeProtocolConfig.dex +0 -0
  297. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeProtocolConfigExtended.dex +0 -0
  298. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeProtocolError.dex +0 -0
  299. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeProtocolState.dex +0 -0
  300. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeRelayConfig.dex +0 -0
  301. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeRelayPriority.dex +0 -0
  302. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeReliabilityConfig.dex +0 -0
  303. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeRetryConfig.dex +0 -0
  304. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeRouteEntry.dex +0 -0
  305. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeRoutingStats.dex +0 -0
  306. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeTransportConfig.dex +0 -0
  307. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeTransportMetrics.dex +0 -0
  308. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeTransportType.dex +0 -0
  309. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterTypeWifiDirectMessage.dex +0 -0
  310. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterUByte.dex +0 -0
  311. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterUInt.dex +0 -0
  312. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterULong.dex +0 -0
  313. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FfiConverterUShort.dex +0 -0
  314. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FileProgress$Companion.dex +0 -0
  315. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/FileProgress.dex +0 -0
  316. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ForeignBytes$ByValue.dex +0 -0
  317. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ForeignBytes.dex +0 -0
  318. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/GradientRoutingConfig$Companion.dex +0 -0
  319. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/GradientRoutingConfig.dex +0 -0
  320. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/IntegrityCheckingUniffiLib.dex +0 -0
  321. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/InternalException.dex +0 -0
  322. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/InternetMessage$Companion.dex +0 -0
  323. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/InternetMessage.dex +0 -0
  324. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/JavaLangRefCleanable.dex +0 -0
  325. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/JavaLangRefCleaner.dex +0 -0
  326. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/MessagePriority$Companion.dex +0 -0
  327. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/MessagePriority.dex +0 -0
  328. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/MessageStats$Companion.dex +0 -0
  329. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/MessageStats.dex +0 -0
  330. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NetworkLink$Companion.dex +0 -0
  331. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NetworkLink.dex +0 -0
  332. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NetworkNode$Companion.dex +0 -0
  333. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NetworkNode.dex +0 -0
  334. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NetworkTopology$Companion.dex +0 -0
  335. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NetworkTopology.dex +0 -0
  336. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/NoHandle.dex +0 -0
  337. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/OfflineProtocol$Companion.dex +0 -0
  338. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/OfflineProtocol$UniffiCleanAction.dex +0 -0
  339. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/OfflineProtocol.dex +0 -0
  340. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/OfflineProtocolInterface$Companion.dex +0 -0
  341. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/OfflineProtocolInterface.dex +0 -0
  342. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/Offline_protocolKt.dex +0 -0
  343. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/PathConfig$Companion.dex +0 -0
  344. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/PathConfig.dex +0 -0
  345. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/PeerDevice$Companion.dex +0 -0
  346. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/PeerDevice.dex +0 -0
  347. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolConfig$Companion.dex +0 -0
  348. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolConfig.dex +0 -0
  349. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolConfigExtended$Companion.dex +0 -0
  350. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolConfigExtended.dex +0 -0
  351. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$AlreadyStarted.dex +0 -0
  352. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$ErrorHandler.dex +0 -0
  353. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$InvalidConfiguration.dex +0 -0
  354. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$InvalidState.dex +0 -0
  355. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$NotStarted.dex +0 -0
  356. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$Other.dex +0 -0
  357. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException$SendFailed.dex +0 -0
  358. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolException.dex +0 -0
  359. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolState$Companion.dex +0 -0
  360. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ProtocolState.dex +0 -0
  361. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RelayConfig$Companion.dex +0 -0
  362. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RelayConfig.dex +0 -0
  363. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RelayPriority$Companion.dex +0 -0
  364. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RelayPriority.dex +0 -0
  365. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ReliabilityConfig$Companion.dex +0 -0
  366. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/ReliabilityConfig.dex +0 -0
  367. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RetryConfig$Companion.dex +0 -0
  368. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RetryConfig.dex +0 -0
  369. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RouteEntry$Companion.dex +0 -0
  370. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RouteEntry.dex +0 -0
  371. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RoutingStats$Companion.dex +0 -0
  372. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RoutingStats.dex +0 -0
  373. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RustBuffer$ByReference.dex +0 -0
  374. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RustBuffer$ByValue.dex +0 -0
  375. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RustBuffer$Companion.dex +0 -0
  376. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/RustBuffer.dex +0 -0
  377. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/TransportConfig$Companion.dex +0 -0
  378. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/TransportConfig.dex +0 -0
  379. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/TransportMetrics$Companion.dex +0 -0
  380. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/TransportMetrics.dex +0 -0
  381. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/TransportType$Companion.dex +0 -0
  382. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/TransportType.dex +0 -0
  383. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiCallbackInterfaceClone.dex +0 -0
  384. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiCallbackInterfaceEventCallbackMethod0.dex +0 -0
  385. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiCallbackInterfaceFree.dex +0 -0
  386. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiCleaner$Cleanable.dex +0 -0
  387. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiCleaner$Companion.dex +0 -0
  388. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiCleaner.dex +0 -0
  389. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteF32.dex +0 -0
  390. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteF64.dex +0 -0
  391. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteI16.dex +0 -0
  392. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteI32.dex +0 -0
  393. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteI64.dex +0 -0
  394. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteI8.dex +0 -0
  395. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteRustBuffer.dex +0 -0
  396. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteU16.dex +0 -0
  397. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteU32.dex +0 -0
  398. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteU64.dex +0 -0
  399. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteU8.dex +0 -0
  400. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureCompleteVoid.dex +0 -0
  401. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureDroppedCallback.dex +0 -0
  402. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureDroppedCallbackStruct$UniffiByValue.dex +0 -0
  403. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureDroppedCallbackStruct.dex +0 -0
  404. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultF32$UniffiByValue.dex +0 -0
  405. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultF32.dex +0 -0
  406. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultF64$UniffiByValue.dex +0 -0
  407. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultF64.dex +0 -0
  408. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI16$UniffiByValue.dex +0 -0
  409. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI16.dex +0 -0
  410. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI32$UniffiByValue.dex +0 -0
  411. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI32.dex +0 -0
  412. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI64$UniffiByValue.dex +0 -0
  413. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI64.dex +0 -0
  414. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI8$UniffiByValue.dex +0 -0
  415. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultI8.dex +0 -0
  416. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultRustBuffer$UniffiByValue.dex +0 -0
  417. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultRustBuffer.dex +0 -0
  418. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU16$UniffiByValue.dex +0 -0
  419. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU16.dex +0 -0
  420. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU32$UniffiByValue.dex +0 -0
  421. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU32.dex +0 -0
  422. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU64$UniffiByValue.dex +0 -0
  423. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU64.dex +0 -0
  424. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU8$UniffiByValue.dex +0 -0
  425. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultU8.dex +0 -0
  426. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultVoid$UniffiByValue.dex +0 -0
  427. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiForeignFutureResultVoid.dex +0 -0
  428. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiHandleMap.dex +0 -0
  429. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiJnaCleanable.dex +0 -0
  430. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiJnaCleaner.dex +0 -0
  431. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiLib.dex +0 -0
  432. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiNullRustCallStatusErrorHandler.dex +0 -0
  433. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiRustCallStatus$ByValue.dex +0 -0
  434. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiRustCallStatus$Companion.dex +0 -0
  435. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiRustCallStatus.dex +0 -0
  436. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiRustCallStatusErrorHandler.dex +0 -0
  437. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiRustFutureContinuationCallback.dex +0 -0
  438. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiVTableCallbackInterfaceEventCallback$UniffiByValue.dex +0 -0
  439. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiVTableCallbackInterfaceEventCallback.dex +0 -0
  440. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/UniffiWithHandle.dex +0 -0
  441. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/WifiDirectMessage$Companion.dex +0 -0
  442. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/WifiDirectMessage.dex +0 -0
  443. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$onEvent.dex +0 -0
  444. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$uniffiClone.dex +0 -0
  445. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$uniffiFree.dex +0 -0
  446. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback.dex +0 -0
  447. package/android/build/.transforms/da3557589d4a483a1399f2bb7c5d79d9/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  448. package/android/build/generated/source/buildConfig/debug/com/offlineprotocol/BuildConfig.java +10 -0
  449. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +35 -0
  450. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  451. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  452. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  453. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  454. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  455. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  456. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  457. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  458. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  459. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  460. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  461. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/offlineprotocol_react-native_debug.kotlin_module +0 -0
  462. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/offlineprotocol/BuildConfig.class +0 -0
  463. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/liboffline_protocol_uniffi.so +0 -0
  464. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libuniffi_offline_protocol.so +0 -0
  465. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/liboffline_protocol_uniffi.so +0 -0
  466. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libuniffi_offline_protocol.so +0 -0
  467. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/liboffline_protocol_uniffi.so +0 -0
  468. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libuniffi_offline_protocol.so +0 -0
  469. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/liboffline_protocol_uniffi.so +0 -0
  470. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libuniffi_offline_protocol.so +0 -0
  471. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  472. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +51 -0
  473. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/arm64-v8a/liboffline_protocol_uniffi.so +0 -0
  474. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/arm64-v8a/libuniffi_offline_protocol.so +0 -0
  475. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/armeabi-v7a/liboffline_protocol_uniffi.so +0 -0
  476. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/armeabi-v7a/libuniffi_offline_protocol.so +0 -0
  477. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/x86/liboffline_protocol_uniffi.so +0 -0
  478. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/x86/libuniffi_offline_protocol.so +0 -0
  479. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/x86_64/liboffline_protocol_uniffi.so +0 -0
  480. package/android/build/intermediates/merged_jni_libs/debug/mergeDebugJniLibFolders/out/x86_64/libuniffi_offline_protocol.so +0 -0
  481. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +35 -0
  482. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/liboffline_protocol_uniffi.so +0 -0
  483. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libuniffi_offline_protocol.so +0 -0
  484. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/liboffline_protocol_uniffi.so +0 -0
  485. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libuniffi_offline_protocol.so +0 -0
  486. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/liboffline_protocol_uniffi.so +0 -0
  487. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libuniffi_offline_protocol.so +0 -0
  488. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/liboffline_protocol_uniffi.so +0 -0
  489. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libuniffi_offline_protocol.so +0 -0
  490. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  491. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  492. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/offlineprotocol_react-native_debug.kotlin_module +0 -0
  493. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$Companion.class +0 -0
  494. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$MeshObservation.class +0 -0
  495. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$PendingFragment.class +0 -0
  496. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$WhenMappings.class +0 -0
  497. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$fragmentPollingRunnable$1.class +0 -0
  498. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$gattClientCallback$1.class +0 -0
  499. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$gattServerCallback$1$WhenMappings.class +0 -0
  500. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$gattServerCallback$1.class +0 -0
  501. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$resolveTargetAddress$$inlined$sortedBy$1.class +0 -0
  502. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$routingCleanupRunnable$1.class +0 -0
  503. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$scanWatchdogRunnable$1.class +0 -0
  504. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$startAdvertising$1.class +0 -0
  505. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager$startScanning$1.class +0 -0
  506. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BleManager.class +0 -0
  507. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/BuildConfig.class +0 -0
  508. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/InternetManager$Companion.class +0 -0
  509. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/InternetManager$messagePollingRunnable$1.class +0 -0
  510. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/InternetManager$pingRunnable$1.class +0 -0
  511. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/InternetManager$webSocketListener$1.class +0 -0
  512. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/InternetManager.class +0 -0
  513. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/LogThrottler.class +0 -0
  514. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$Companion.class +0 -0
  515. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$Constants.class +0 -0
  516. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$ParsedConfig.class +0 -0
  517. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$WhenMappings.class +0 -0
  518. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$create$1.class +0 -0
  519. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$create$3$1.class +0 -0
  520. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule$create$5$1.class +0 -0
  521. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolModule.class +0 -0
  522. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/OfflineProtocolPackage.class +0 -0
  523. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$AlreadyRunning.class +0 -0
  524. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$InvalidState.class +0 -0
  525. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$NotAvailable.class +0 -0
  526. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$NotRunning.class +0 -0
  527. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$PermissionDenied.class +0 -0
  528. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$PlatformError.class +0 -0
  529. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException$StartFailed.class +0 -0
  530. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportException.class +0 -0
  531. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportManager$DefaultImpls.class +0 -0
  532. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportManager.class +0 -0
  533. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportManagerListener.class +0 -0
  534. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/TransportState.class +0 -0
  535. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/WifiDirectManager$Companion.class +0 -0
  536. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/WifiDirectManager$messagePollingRunnable$1.class +0 -0
  537. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/WifiDirectManager$p2pReceiver$1.class +0 -0
  538. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/WifiDirectManager$startPeerDiscovery$1.class +0 -0
  539. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/WifiDirectManager$stopPeerDiscovery$1.class +0 -0
  540. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/WifiDirectManager.class +0 -0
  541. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/ble/MeshConnectionRegistry.class +0 -0
  542. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshAdvertisementData$Companion.class +0 -0
  543. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshAdvertisementData.class +0 -0
  544. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$Companion.class +0 -0
  545. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$ConnectionIntent.class +0 -0
  546. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$MeshConfig.class +0 -0
  547. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$MeshDecision.class +0 -0
  548. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$MeshRole.class +0 -0
  549. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$PeerMetrics.class +0 -0
  550. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$PeerState.class +0 -0
  551. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$RebalanceDirective.class +0 -0
  552. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$RemoteCandidate.class +0 -0
  553. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$ScoreWeights.class +0 -0
  554. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$pruneCandidateCache$$inlined$sortedBy$1.class +0 -0
  555. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$prunePeerCache$$inlined$sortBy$1.class +0 -0
  556. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController$prunePeerCache$$inlined$sortBy$2.class +0 -0
  557. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/offlineprotocol/mesh/MeshController.class +0 -0
  558. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/AckConfig$Companion.class +0 -0
  559. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/AckConfig.class +0 -0
  560. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/BleFragment$Companion.class +0 -0
  561. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/BleFragment.class +0 -0
  562. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/DedupConfig$Companion.class +0 -0
  563. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/DedupConfig.class +0 -0
  564. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/DedupStats$Companion.class +0 -0
  565. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/DedupStats.class +0 -0
  566. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/Disposable$Companion.class +0 -0
  567. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/Disposable.class +0 -0
  568. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/DorsConfig$Companion.class +0 -0
  569. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/DorsConfig.class +0 -0
  570. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/EventCallback$Companion.class +0 -0
  571. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/EventCallback.class +0 -0
  572. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverter$DefaultImpls.class +0 -0
  573. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverter.class +0 -0
  574. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterBoolean.class +0 -0
  575. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterCallbackInterface.class +0 -0
  576. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterFloat.class +0 -0
  577. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalShort.class +0 -0
  578. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalString.class +0 -0
  579. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalTypeBleFragment.class +0 -0
  580. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalTypeFileProgress.class +0 -0
  581. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalTypeInternetMessage.class +0 -0
  582. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalTypeRouteEntry.class +0 -0
  583. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalTypeTransportMetrics.class +0 -0
  584. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalTypeWifiDirectMessage.class +0 -0
  585. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalUByte.class +0 -0
  586. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterOptionalULong.class +0 -0
  587. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterRustBuffer$DefaultImpls.class +0 -0
  588. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterRustBuffer.class +0 -0
  589. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterSequenceString.class +0 -0
  590. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterSequenceTypeMessageStats.class +0 -0
  591. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterSequenceTypeNetworkLink.class +0 -0
  592. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterSequenceTypeNetworkNode.class +0 -0
  593. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterSequenceTypeRouteEntry.class +0 -0
  594. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterSequenceUByte.class +0 -0
  595. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterShort.class +0 -0
  596. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterString.class +0 -0
  597. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeAckConfig.class +0 -0
  598. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeBleFragment.class +0 -0
  599. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeDedupConfig.class +0 -0
  600. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeDedupStats.class +0 -0
  601. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeDorsConfig.class +0 -0
  602. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeEventCallback.class +0 -0
  603. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeFileProgress.class +0 -0
  604. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeGradientRoutingConfig.class +0 -0
  605. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeInternetMessage.class +0 -0
  606. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeMessagePriority.class +0 -0
  607. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeMessageStats.class +0 -0
  608. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeNetworkLink.class +0 -0
  609. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeNetworkNode.class +0 -0
  610. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeNetworkTopology.class +0 -0
  611. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeOfflineProtocol.class +0 -0
  612. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypePathConfig.class +0 -0
  613. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypePeerDevice.class +0 -0
  614. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeProtocolConfig.class +0 -0
  615. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeProtocolConfigExtended.class +0 -0
  616. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeProtocolError.class +0 -0
  617. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeProtocolState.class +0 -0
  618. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeRelayConfig.class +0 -0
  619. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeRelayPriority.class +0 -0
  620. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeReliabilityConfig.class +0 -0
  621. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeRetryConfig.class +0 -0
  622. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeRouteEntry.class +0 -0
  623. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeRoutingStats.class +0 -0
  624. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeTransportConfig.class +0 -0
  625. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeTransportMetrics.class +0 -0
  626. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeTransportType.class +0 -0
  627. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterTypeWifiDirectMessage.class +0 -0
  628. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterUByte.class +0 -0
  629. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterUInt.class +0 -0
  630. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterULong.class +0 -0
  631. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FfiConverterUShort.class +0 -0
  632. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FileProgress$Companion.class +0 -0
  633. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/FileProgress.class +0 -0
  634. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ForeignBytes$ByValue.class +0 -0
  635. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ForeignBytes.class +0 -0
  636. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/GradientRoutingConfig$Companion.class +0 -0
  637. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/GradientRoutingConfig.class +0 -0
  638. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/IntegrityCheckingUniffiLib.class +0 -0
  639. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/InternalException.class +0 -0
  640. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/InternetMessage$Companion.class +0 -0
  641. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/InternetMessage.class +0 -0
  642. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/JavaLangRefCleanable.class +0 -0
  643. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/JavaLangRefCleaner.class +0 -0
  644. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/MessagePriority$Companion.class +0 -0
  645. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/MessagePriority.class +0 -0
  646. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/MessageStats$Companion.class +0 -0
  647. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/MessageStats.class +0 -0
  648. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NetworkLink$Companion.class +0 -0
  649. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NetworkLink.class +0 -0
  650. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NetworkNode$Companion.class +0 -0
  651. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NetworkNode.class +0 -0
  652. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NetworkTopology$Companion.class +0 -0
  653. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NetworkTopology.class +0 -0
  654. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/NoHandle.class +0 -0
  655. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/OfflineProtocol$Companion.class +0 -0
  656. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/OfflineProtocol$UniffiCleanAction.class +0 -0
  657. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/OfflineProtocol.class +0 -0
  658. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/OfflineProtocolInterface$Companion.class +0 -0
  659. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/OfflineProtocolInterface.class +0 -0
  660. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/Offline_protocolKt.class +0 -0
  661. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/PathConfig$Companion.class +0 -0
  662. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/PathConfig.class +0 -0
  663. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/PeerDevice$Companion.class +0 -0
  664. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/PeerDevice.class +0 -0
  665. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolConfig$Companion.class +0 -0
  666. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolConfig.class +0 -0
  667. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolConfigExtended$Companion.class +0 -0
  668. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolConfigExtended.class +0 -0
  669. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$AlreadyStarted.class +0 -0
  670. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$ErrorHandler.class +0 -0
  671. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$InvalidConfiguration.class +0 -0
  672. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$InvalidState.class +0 -0
  673. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$NotStarted.class +0 -0
  674. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$Other.class +0 -0
  675. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException$SendFailed.class +0 -0
  676. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolException.class +0 -0
  677. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolState$Companion.class +0 -0
  678. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ProtocolState.class +0 -0
  679. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RelayConfig$Companion.class +0 -0
  680. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RelayConfig.class +0 -0
  681. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RelayPriority$Companion.class +0 -0
  682. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RelayPriority.class +0 -0
  683. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ReliabilityConfig$Companion.class +0 -0
  684. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/ReliabilityConfig.class +0 -0
  685. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RetryConfig$Companion.class +0 -0
  686. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RetryConfig.class +0 -0
  687. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RouteEntry$Companion.class +0 -0
  688. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RouteEntry.class +0 -0
  689. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RoutingStats$Companion.class +0 -0
  690. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RoutingStats.class +0 -0
  691. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RustBuffer$ByReference.class +0 -0
  692. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RustBuffer$ByValue.class +0 -0
  693. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RustBuffer$Companion.class +0 -0
  694. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/RustBuffer.class +0 -0
  695. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/TransportConfig$Companion.class +0 -0
  696. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/TransportConfig.class +0 -0
  697. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/TransportMetrics$Companion.class +0 -0
  698. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/TransportMetrics.class +0 -0
  699. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/TransportType$Companion.class +0 -0
  700. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/TransportType.class +0 -0
  701. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiCallbackInterfaceClone.class +0 -0
  702. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiCallbackInterfaceEventCallbackMethod0.class +0 -0
  703. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiCallbackInterfaceFree.class +0 -0
  704. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiCleaner$Cleanable.class +0 -0
  705. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiCleaner$Companion.class +0 -0
  706. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiCleaner.class +0 -0
  707. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteF32.class +0 -0
  708. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteF64.class +0 -0
  709. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteI16.class +0 -0
  710. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteI32.class +0 -0
  711. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteI64.class +0 -0
  712. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteI8.class +0 -0
  713. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteRustBuffer.class +0 -0
  714. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteU16.class +0 -0
  715. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteU32.class +0 -0
  716. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteU64.class +0 -0
  717. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteU8.class +0 -0
  718. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureCompleteVoid.class +0 -0
  719. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureDroppedCallback.class +0 -0
  720. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureDroppedCallbackStruct$UniffiByValue.class +0 -0
  721. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureDroppedCallbackStruct.class +0 -0
  722. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultF32$UniffiByValue.class +0 -0
  723. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultF32.class +0 -0
  724. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultF64$UniffiByValue.class +0 -0
  725. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultF64.class +0 -0
  726. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI16$UniffiByValue.class +0 -0
  727. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI16.class +0 -0
  728. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI32$UniffiByValue.class +0 -0
  729. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI32.class +0 -0
  730. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI64$UniffiByValue.class +0 -0
  731. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI64.class +0 -0
  732. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI8$UniffiByValue.class +0 -0
  733. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultI8.class +0 -0
  734. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultRustBuffer$UniffiByValue.class +0 -0
  735. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultRustBuffer.class +0 -0
  736. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU16$UniffiByValue.class +0 -0
  737. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU16.class +0 -0
  738. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU32$UniffiByValue.class +0 -0
  739. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU32.class +0 -0
  740. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU64$UniffiByValue.class +0 -0
  741. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU64.class +0 -0
  742. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU8$UniffiByValue.class +0 -0
  743. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultU8.class +0 -0
  744. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultVoid$UniffiByValue.class +0 -0
  745. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiForeignFutureResultVoid.class +0 -0
  746. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiHandleMap.class +0 -0
  747. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiJnaCleanable.class +0 -0
  748. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiJnaCleaner.class +0 -0
  749. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiLib.class +0 -0
  750. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiNullRustCallStatusErrorHandler.class +0 -0
  751. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiRustCallStatus$ByValue.class +0 -0
  752. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiRustCallStatus$Companion.class +0 -0
  753. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiRustCallStatus.class +0 -0
  754. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiRustCallStatusErrorHandler.class +0 -0
  755. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiRustFutureContinuationCallback.class +0 -0
  756. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiVTableCallbackInterfaceEventCallback$UniffiByValue.class +0 -0
  757. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiVTableCallbackInterfaceEventCallback.class +0 -0
  758. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/UniffiWithHandle.class +0 -0
  759. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/WifiDirectMessage$Companion.class +0 -0
  760. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/WifiDirectMessage.class +0 -0
  761. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$onEvent.class +0 -0
  762. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$uniffiClone.class +0 -0
  763. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$uniffiFree.class +0 -0
  764. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback.class +0 -0
  765. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  766. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  767. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  768. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  769. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  770. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  771. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values +0 -0
  772. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  773. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.s +1 -0
  774. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  775. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  776. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  777. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  778. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  779. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  780. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  781. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  782. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  783. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  784. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  785. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  786. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  787. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values +0 -0
  788. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  789. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.s +1 -0
  790. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  791. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  792. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  793. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  794. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  795. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  796. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  797. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  798. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  799. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab +0 -0
  800. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab.keystream +0 -0
  801. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab.keystream.len +0 -0
  802. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab.len +0 -0
  803. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab.values.at +0 -0
  804. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab_i +0 -0
  805. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/inline-functions.tab_i.len +0 -0
  806. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  807. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  808. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  809. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  810. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values +0 -0
  811. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  812. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.s +1 -0
  813. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  814. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  815. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  816. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  817. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  818. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  819. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  820. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  821. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  822. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  823. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  824. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  825. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  826. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  827. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  828. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +1 -0
  829. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  830. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  831. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  832. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  833. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  834. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  835. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  836. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  837. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  838. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  839. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  840. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  841. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  842. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  843. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  844. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  845. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  846. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  847. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  848. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  849. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  850. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  851. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  852. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  853. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  854. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  855. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  856. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  857. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  858. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  859. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  860. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  861. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  862. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  863. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  864. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  865. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  866. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  867. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  868. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  869. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  870. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  871. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values +0 -0
  872. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  873. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s +1 -0
  874. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  875. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  876. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  877. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  878. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  879. package/android/build/outputs/logs/manifest-merger-debug-report.txt +48 -0
  880. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  881. package/android/build/tmp/kotlin-classes/debug/META-INF/offlineprotocol_react-native_debug.kotlin_module +0 -0
  882. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$Companion.class +0 -0
  883. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$MeshObservation.class +0 -0
  884. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$PendingFragment.class +0 -0
  885. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$WhenMappings.class +0 -0
  886. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$fragmentPollingRunnable$1.class +0 -0
  887. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$gattClientCallback$1.class +0 -0
  888. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$gattServerCallback$1$WhenMappings.class +0 -0
  889. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$gattServerCallback$1.class +0 -0
  890. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$resolveTargetAddress$$inlined$sortedBy$1.class +0 -0
  891. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$routingCleanupRunnable$1.class +0 -0
  892. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$scanWatchdogRunnable$1.class +0 -0
  893. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$startAdvertising$1.class +0 -0
  894. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager$startScanning$1.class +0 -0
  895. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/BleManager.class +0 -0
  896. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/InternetManager$Companion.class +0 -0
  897. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/InternetManager$messagePollingRunnable$1.class +0 -0
  898. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/InternetManager$pingRunnable$1.class +0 -0
  899. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/InternetManager$webSocketListener$1.class +0 -0
  900. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/InternetManager.class +0 -0
  901. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/LogThrottler.class +0 -0
  902. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$Companion.class +0 -0
  903. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$Constants.class +0 -0
  904. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$ParsedConfig.class +0 -0
  905. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$WhenMappings.class +0 -0
  906. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$create$1.class +0 -0
  907. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$create$3$1.class +0 -0
  908. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule$create$5$1.class +0 -0
  909. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolModule.class +0 -0
  910. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/OfflineProtocolPackage.class +0 -0
  911. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$AlreadyRunning.class +0 -0
  912. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$InvalidState.class +0 -0
  913. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$NotAvailable.class +0 -0
  914. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$NotRunning.class +0 -0
  915. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$PermissionDenied.class +0 -0
  916. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$PlatformError.class +0 -0
  917. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException$StartFailed.class +0 -0
  918. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportException.class +0 -0
  919. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportManager$DefaultImpls.class +0 -0
  920. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportManager.class +0 -0
  921. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportManagerListener.class +0 -0
  922. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/TransportState.class +0 -0
  923. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/WifiDirectManager$Companion.class +0 -0
  924. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/WifiDirectManager$messagePollingRunnable$1.class +0 -0
  925. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/WifiDirectManager$p2pReceiver$1.class +0 -0
  926. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/WifiDirectManager$startPeerDiscovery$1.class +0 -0
  927. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/WifiDirectManager$stopPeerDiscovery$1.class +0 -0
  928. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/WifiDirectManager.class +0 -0
  929. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/ble/MeshConnectionRegistry.class +0 -0
  930. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshAdvertisementData$Companion.class +0 -0
  931. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshAdvertisementData.class +0 -0
  932. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$Companion.class +0 -0
  933. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$ConnectionIntent.class +0 -0
  934. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$MeshConfig.class +0 -0
  935. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$MeshDecision.class +0 -0
  936. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$MeshRole.class +0 -0
  937. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$PeerMetrics.class +0 -0
  938. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$PeerState.class +0 -0
  939. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$RebalanceDirective.class +0 -0
  940. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$RemoteCandidate.class +0 -0
  941. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$ScoreWeights.class +0 -0
  942. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$pruneCandidateCache$$inlined$sortedBy$1.class +0 -0
  943. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$prunePeerCache$$inlined$sortBy$1.class +0 -0
  944. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController$prunePeerCache$$inlined$sortBy$2.class +0 -0
  945. package/android/build/tmp/kotlin-classes/debug/com/offlineprotocol/mesh/MeshController.class +0 -0
  946. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/AckConfig$Companion.class +0 -0
  947. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/AckConfig.class +0 -0
  948. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/BleFragment$Companion.class +0 -0
  949. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/BleFragment.class +0 -0
  950. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/DedupConfig$Companion.class +0 -0
  951. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/DedupConfig.class +0 -0
  952. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/DedupStats$Companion.class +0 -0
  953. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/DedupStats.class +0 -0
  954. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/Disposable$Companion.class +0 -0
  955. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/Disposable.class +0 -0
  956. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/DorsConfig$Companion.class +0 -0
  957. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/DorsConfig.class +0 -0
  958. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/EventCallback$Companion.class +0 -0
  959. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/EventCallback.class +0 -0
  960. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverter$DefaultImpls.class +0 -0
  961. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverter.class +0 -0
  962. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterBoolean.class +0 -0
  963. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterCallbackInterface.class +0 -0
  964. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterFloat.class +0 -0
  965. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalShort.class +0 -0
  966. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalString.class +0 -0
  967. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalTypeBleFragment.class +0 -0
  968. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalTypeFileProgress.class +0 -0
  969. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalTypeInternetMessage.class +0 -0
  970. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalTypeRouteEntry.class +0 -0
  971. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalTypeTransportMetrics.class +0 -0
  972. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalTypeWifiDirectMessage.class +0 -0
  973. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalUByte.class +0 -0
  974. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterOptionalULong.class +0 -0
  975. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterRustBuffer$DefaultImpls.class +0 -0
  976. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterRustBuffer.class +0 -0
  977. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterSequenceString.class +0 -0
  978. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterSequenceTypeMessageStats.class +0 -0
  979. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterSequenceTypeNetworkLink.class +0 -0
  980. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterSequenceTypeNetworkNode.class +0 -0
  981. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterSequenceTypeRouteEntry.class +0 -0
  982. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterSequenceUByte.class +0 -0
  983. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterShort.class +0 -0
  984. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterString.class +0 -0
  985. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeAckConfig.class +0 -0
  986. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeBleFragment.class +0 -0
  987. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeDedupConfig.class +0 -0
  988. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeDedupStats.class +0 -0
  989. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeDorsConfig.class +0 -0
  990. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeEventCallback.class +0 -0
  991. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeFileProgress.class +0 -0
  992. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeGradientRoutingConfig.class +0 -0
  993. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeInternetMessage.class +0 -0
  994. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeMessagePriority.class +0 -0
  995. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeMessageStats.class +0 -0
  996. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeNetworkLink.class +0 -0
  997. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeNetworkNode.class +0 -0
  998. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeNetworkTopology.class +0 -0
  999. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeOfflineProtocol.class +0 -0
  1000. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypePathConfig.class +0 -0
  1001. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypePeerDevice.class +0 -0
  1002. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeProtocolConfig.class +0 -0
  1003. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeProtocolConfigExtended.class +0 -0
  1004. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeProtocolError.class +0 -0
  1005. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeProtocolState.class +0 -0
  1006. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeRelayConfig.class +0 -0
  1007. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeRelayPriority.class +0 -0
  1008. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeReliabilityConfig.class +0 -0
  1009. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeRetryConfig.class +0 -0
  1010. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeRouteEntry.class +0 -0
  1011. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeRoutingStats.class +0 -0
  1012. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeTransportConfig.class +0 -0
  1013. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeTransportMetrics.class +0 -0
  1014. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeTransportType.class +0 -0
  1015. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterTypeWifiDirectMessage.class +0 -0
  1016. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterUByte.class +0 -0
  1017. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterUInt.class +0 -0
  1018. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterULong.class +0 -0
  1019. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FfiConverterUShort.class +0 -0
  1020. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FileProgress$Companion.class +0 -0
  1021. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/FileProgress.class +0 -0
  1022. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ForeignBytes$ByValue.class +0 -0
  1023. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ForeignBytes.class +0 -0
  1024. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/GradientRoutingConfig$Companion.class +0 -0
  1025. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/GradientRoutingConfig.class +0 -0
  1026. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/IntegrityCheckingUniffiLib.class +0 -0
  1027. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/InternalException.class +0 -0
  1028. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/InternetMessage$Companion.class +0 -0
  1029. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/InternetMessage.class +0 -0
  1030. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/JavaLangRefCleanable.class +0 -0
  1031. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/JavaLangRefCleaner.class +0 -0
  1032. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/MessagePriority$Companion.class +0 -0
  1033. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/MessagePriority.class +0 -0
  1034. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/MessageStats$Companion.class +0 -0
  1035. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/MessageStats.class +0 -0
  1036. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NetworkLink$Companion.class +0 -0
  1037. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NetworkLink.class +0 -0
  1038. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NetworkNode$Companion.class +0 -0
  1039. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NetworkNode.class +0 -0
  1040. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NetworkTopology$Companion.class +0 -0
  1041. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NetworkTopology.class +0 -0
  1042. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/NoHandle.class +0 -0
  1043. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/OfflineProtocol$Companion.class +0 -0
  1044. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/OfflineProtocol$UniffiCleanAction.class +0 -0
  1045. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/OfflineProtocol.class +0 -0
  1046. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/OfflineProtocolInterface$Companion.class +0 -0
  1047. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/OfflineProtocolInterface.class +0 -0
  1048. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/Offline_protocolKt.class +0 -0
  1049. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/PathConfig$Companion.class +0 -0
  1050. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/PathConfig.class +0 -0
  1051. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/PeerDevice$Companion.class +0 -0
  1052. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/PeerDevice.class +0 -0
  1053. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolConfig$Companion.class +0 -0
  1054. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolConfig.class +0 -0
  1055. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolConfigExtended$Companion.class +0 -0
  1056. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolConfigExtended.class +0 -0
  1057. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$AlreadyStarted.class +0 -0
  1058. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$ErrorHandler.class +0 -0
  1059. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$InvalidConfiguration.class +0 -0
  1060. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$InvalidState.class +0 -0
  1061. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$NotStarted.class +0 -0
  1062. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$Other.class +0 -0
  1063. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException$SendFailed.class +0 -0
  1064. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolException.class +0 -0
  1065. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolState$Companion.class +0 -0
  1066. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ProtocolState.class +0 -0
  1067. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RelayConfig$Companion.class +0 -0
  1068. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RelayConfig.class +0 -0
  1069. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RelayPriority$Companion.class +0 -0
  1070. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RelayPriority.class +0 -0
  1071. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ReliabilityConfig$Companion.class +0 -0
  1072. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/ReliabilityConfig.class +0 -0
  1073. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RetryConfig$Companion.class +0 -0
  1074. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RetryConfig.class +0 -0
  1075. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RouteEntry$Companion.class +0 -0
  1076. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RouteEntry.class +0 -0
  1077. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RoutingStats$Companion.class +0 -0
  1078. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RoutingStats.class +0 -0
  1079. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RustBuffer$ByReference.class +0 -0
  1080. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RustBuffer$ByValue.class +0 -0
  1081. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RustBuffer$Companion.class +0 -0
  1082. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/RustBuffer.class +0 -0
  1083. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/TransportConfig$Companion.class +0 -0
  1084. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/TransportConfig.class +0 -0
  1085. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/TransportMetrics$Companion.class +0 -0
  1086. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/TransportMetrics.class +0 -0
  1087. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/TransportType$Companion.class +0 -0
  1088. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/TransportType.class +0 -0
  1089. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiCallbackInterfaceClone.class +0 -0
  1090. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiCallbackInterfaceEventCallbackMethod0.class +0 -0
  1091. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiCallbackInterfaceFree.class +0 -0
  1092. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiCleaner$Cleanable.class +0 -0
  1093. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiCleaner$Companion.class +0 -0
  1094. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiCleaner.class +0 -0
  1095. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteF32.class +0 -0
  1096. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteF64.class +0 -0
  1097. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteI16.class +0 -0
  1098. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteI32.class +0 -0
  1099. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteI64.class +0 -0
  1100. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteI8.class +0 -0
  1101. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteRustBuffer.class +0 -0
  1102. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteU16.class +0 -0
  1103. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteU32.class +0 -0
  1104. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteU64.class +0 -0
  1105. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteU8.class +0 -0
  1106. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureCompleteVoid.class +0 -0
  1107. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureDroppedCallback.class +0 -0
  1108. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureDroppedCallbackStruct$UniffiByValue.class +0 -0
  1109. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureDroppedCallbackStruct.class +0 -0
  1110. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultF32$UniffiByValue.class +0 -0
  1111. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultF32.class +0 -0
  1112. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultF64$UniffiByValue.class +0 -0
  1113. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultF64.class +0 -0
  1114. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI16$UniffiByValue.class +0 -0
  1115. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI16.class +0 -0
  1116. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI32$UniffiByValue.class +0 -0
  1117. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI32.class +0 -0
  1118. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI64$UniffiByValue.class +0 -0
  1119. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI64.class +0 -0
  1120. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI8$UniffiByValue.class +0 -0
  1121. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultI8.class +0 -0
  1122. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultRustBuffer$UniffiByValue.class +0 -0
  1123. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultRustBuffer.class +0 -0
  1124. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU16$UniffiByValue.class +0 -0
  1125. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU16.class +0 -0
  1126. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU32$UniffiByValue.class +0 -0
  1127. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU32.class +0 -0
  1128. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU64$UniffiByValue.class +0 -0
  1129. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU64.class +0 -0
  1130. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU8$UniffiByValue.class +0 -0
  1131. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultU8.class +0 -0
  1132. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultVoid$UniffiByValue.class +0 -0
  1133. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiForeignFutureResultVoid.class +0 -0
  1134. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiHandleMap.class +0 -0
  1135. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiJnaCleanable.class +0 -0
  1136. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiJnaCleaner.class +0 -0
  1137. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiLib.class +0 -0
  1138. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiNullRustCallStatusErrorHandler.class +0 -0
  1139. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiRustCallStatus$ByValue.class +0 -0
  1140. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiRustCallStatus$Companion.class +0 -0
  1141. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiRustCallStatus.class +0 -0
  1142. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiRustCallStatusErrorHandler.class +0 -0
  1143. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiRustFutureContinuationCallback.class +0 -0
  1144. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiVTableCallbackInterfaceEventCallback$UniffiByValue.class +0 -0
  1145. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiVTableCallbackInterfaceEventCallback.class +0 -0
  1146. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/UniffiWithHandle.class +0 -0
  1147. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/WifiDirectMessage$Companion.class +0 -0
  1148. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/WifiDirectMessage.class +0 -0
  1149. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$onEvent.class +0 -0
  1150. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$uniffiClone.class +0 -0
  1151. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback$uniffiFree.class +0 -0
  1152. package/android/build/tmp/kotlin-classes/debug/uniffi/offline_protocol/uniffiCallbackInterfaceEventCallback.class +0 -0
  1153. package/android/build.gradle +78 -0
  1154. package/android/src/main/AndroidManifest.xml +24 -0
  1155. package/android/src/main/cpp/CMakeLists.txt +63 -0
  1156. package/android/src/main/cpp/ble_bridge.cpp +156 -0
  1157. package/android/src/main/cpp/offline_protocol_jni.cpp +840 -0
  1158. package/android/src/main/java/com/offlineprotocol/BleManager.kt +1763 -0
  1159. package/android/src/main/java/com/offlineprotocol/InternetManager.kt +684 -0
  1160. package/android/src/main/java/com/offlineprotocol/OfflineProtocolModule.kt +1806 -0
  1161. package/android/src/main/java/com/offlineprotocol/OfflineProtocolPackage.kt +16 -0
  1162. package/android/src/main/java/com/offlineprotocol/TransportManager.kt +124 -0
  1163. package/android/src/main/java/com/offlineprotocol/WifiDirectManager.kt +647 -0
  1164. package/android/src/main/java/com/offlineprotocol/ble/MeshConnectionRegistry.kt +101 -0
  1165. package/android/src/main/java/com/offlineprotocol/mesh/Mesh.kt +850 -0
  1166. package/android/src/main/java/uniffi/offline_protocol/offline_protocol.kt +4789 -0
  1167. package/android/src/main/jniLibs/arm64-v8a/liboffline_protocol_uniffi.so +0 -0
  1168. package/android/src/main/jniLibs/arm64-v8a/libuniffi_offline_protocol.so +0 -0
  1169. package/android/src/main/jniLibs/armeabi-v7a/liboffline_protocol_uniffi.so +0 -0
  1170. package/android/src/main/jniLibs/armeabi-v7a/libuniffi_offline_protocol.so +0 -0
  1171. package/android/src/main/jniLibs/x86/liboffline_protocol_uniffi.so +0 -0
  1172. package/android/src/main/jniLibs/x86/libuniffi_offline_protocol.so +0 -0
  1173. package/android/src/main/jniLibs/x86_64/liboffline_protocol_uniffi.so +0 -0
  1174. package/android/src/main/jniLibs/x86_64/libuniffi_offline_protocol.so +0 -0
  1175. package/android/src/test/java/com/offlineprotocol/mesh/MeshControllerTest.kt +117 -0
  1176. package/ios/BleManager.swift +1988 -0
  1177. package/ios/Generated/offline_protocol.swift +3995 -0
  1178. package/ios/Generated/offline_protocolFFI.h +1297 -0
  1179. package/ios/Generated/offline_protocolFFI.modulemap +7 -0
  1180. package/ios/InternetManager.swift +678 -0
  1181. package/ios/MeshSdk.podspec +60 -0
  1182. package/ios/OfflineProtocolModule.m +272 -0
  1183. package/ios/OfflineProtocolModule.swift +1939 -0
  1184. package/ios/TransportManager.swift +119 -0
  1185. package/ios/WifiDirectManager.swift +418 -0
  1186. package/ios/ble/MeshConnectionRegistry.swift +174 -0
  1187. package/ios/libs/liboffline_protocol_uniffi_device.a +0 -0
  1188. package/ios/libs/liboffline_protocol_uniffi_sim.a +0 -0
  1189. package/ios/mesh/Mesh.swift +1019 -0
  1190. package/ios/tests/MeshControllerTests.swift +119 -0
  1191. package/lib/constants.d.ts +4 -0
  1192. package/lib/constants.d.ts.map +1 -0
  1193. package/lib/constants.js +9 -0
  1194. package/lib/index.d.ts +141 -0
  1195. package/lib/index.d.ts.map +1 -0
  1196. package/lib/index.js +498 -0
  1197. package/lib/types-uniffi.d.ts +50 -0
  1198. package/lib/types-uniffi.d.ts.map +1 -0
  1199. package/lib/types-uniffi.js +35 -0
  1200. package/lib/types.d.ts +285 -0
  1201. package/lib/types.d.ts.map +1 -0
  1202. package/lib/types.js +21 -0
  1203. package/package.json +63 -0
  1204. package/react-native.config.js +9 -0
  1205. package/scripts/build-all.sh +41 -0
  1206. package/scripts/build-android.sh +110 -0
  1207. package/scripts/build-ios.sh +75 -0
  1208. package/scripts/build-uniffi-all.sh +69 -0
  1209. package/scripts/build-uniffi-android.sh +139 -0
  1210. package/scripts/build-uniffi-ios.sh +96 -0
  1211. package/scripts/generate-bindings.sh +64 -0
  1212. package/scripts/prepare-npm.sh +87 -0
  1213. package/src/constants.ts +25 -0
  1214. package/src/index.ts +1277 -0
  1215. package/src/types-uniffi.ts +124 -0
  1216. package/src/types.ts +613 -0
@@ -0,0 +1,1988 @@
1
+ //
2
+ // BleManager.swift
3
+ // OfflineProtocol
4
+ //
5
+ // BLE transport implementation using CoreBluetooth
6
+ // Supports iOS ↔ Android cross-platform communication
7
+ //
8
+
9
+ import Foundation
10
+ import CoreBluetooth
11
+ import UIKit
12
+
13
+ private final class LogThrottler {
14
+ private var timestamps: [String: Date] = [:]
15
+ private let lock = NSLock()
16
+ private let defaultInterval: TimeInterval
17
+
18
+ init(defaultInterval: TimeInterval = 5.0) {
19
+ self.defaultInterval = defaultInterval
20
+ }
21
+
22
+ func shouldLog(key: String, interval: TimeInterval? = nil, now: Date = Date()) -> Bool {
23
+ lock.lock()
24
+ defer { lock.unlock() }
25
+ let threshold = interval ?? defaultInterval
26
+ if let last = timestamps[key], now.timeIntervalSince(last) < threshold {
27
+ return false
28
+ }
29
+ timestamps[key] = now
30
+ return true
31
+ }
32
+ }
33
+
34
+ /// BLE Manager implementing TransportManager for Bluetooth Low Energy communication
35
+ public class BleManager: NSObject, TransportManager {
36
+
37
+ // MARK: - TransportManager Protocol
38
+
39
+ public let transportId = "ble"
40
+ public let transportName = "Bluetooth Low Energy"
41
+ public private(set) var state: TransportState = .unavailable
42
+ public weak var delegate: TransportManagerDelegate?
43
+
44
+ // MARK: - BLE Constants (matching Rust core and Android)
45
+
46
+ private let SERVICE_UUID = CBUUID(string: "6E400001-B5A3-F393-E0A9-E50E24DCCA9E")
47
+ private let MESSAGE_CHAR_UUID = CBUUID(string: "6E400002-B5A3-F393-E0A9-E50E24DCCA9E")
48
+ private let DEVICE_ID_CHAR_UUID = CBUUID(string: "6E400003-B5A3-F393-E0A9-E50E24DCCA9E")
49
+
50
+ private let FRAGMENT_POLL_INTERVAL: TimeInterval = 0.1 // 100ms
51
+ private let MAX_FRAGMENT_SIZE = 185
52
+ private let CONNECTION_TIMEOUT: TimeInterval = 10.0
53
+ private let MAX_CONNECTIONS_PER_DEVICE = 4
54
+ private let ADVERTISE_RESTART_MIN: TimeInterval = 0.2
55
+ private let ADVERTISE_RESTART_MAX: TimeInterval = 1.2
56
+ private let MIN_ADVERTISE_INTERVAL: TimeInterval = 1.5
57
+ private let LOAD_SATURATION_COUNT = 20
58
+ private let MESH_OBSERVATION_TTL: TimeInterval = 120.0
59
+
60
+ // MARK: - Adaptive Scan Configuration
61
+
62
+ /// Minimum RSSI to consider for connection (filter weak signals early)
63
+ private let ADAPTIVE_MIN_RSSI: Int16 = -85
64
+ /// Peer count threshold below which we process all advertisements
65
+ private let ADAPTIVE_LOW_DENSITY_THRESHOLD = 10
66
+ /// Peer count threshold above which we apply maximum throttling
67
+ private let ADAPTIVE_HIGH_DENSITY_THRESHOLD = 50
68
+ /// Maximum connection attempts per minute in dense networks
69
+ private let ADAPTIVE_MAX_CONNECTIONS_PER_MINUTE = 6
70
+ /// Minimum interval between connection attempts to the same peripheral
71
+ private let ADAPTIVE_COOLDOWN_PER_PERIPHERAL: TimeInterval = 30.0
72
+ /// Interval for updating visible peer count estimate
73
+ private let ADAPTIVE_PEER_COUNT_WINDOW: TimeInterval = 5.0
74
+
75
+ // MARK: - Properties
76
+
77
+ private let protocolInstance: OfflineProtocol
78
+ private let deviceId: String
79
+ private let meshController: MeshController
80
+
81
+ // Central (scanner/client) components
82
+ private var centralManager: CBCentralManager?
83
+ private let connections = MeshConnectionRegistry()
84
+
85
+ /// Public accessor for the Bluetooth state
86
+ var bluetoothState: CBManagerState {
87
+ return centralManager?.state ?? .unknown
88
+ }
89
+ private var discoveredPeripherals: [UUID: CBPeripheral] = [:]
90
+ private var peripheralRSSI: [UUID: Int16] = [:]
91
+
92
+ // Peripheral (advertiser/server) components
93
+ private var peripheralManager: CBPeripheralManager?
94
+ private var messageCharacteristic: CBMutableCharacteristic?
95
+ private var deviceIdCharacteristic: CBMutableCharacteristic?
96
+
97
+ // Fragment polling
98
+ private var fragmentTimer: Timer?
99
+ private let fragmentQueue = DispatchQueue(label: "com.offlineprotocol.ble.fragments")
100
+
101
+ // Gradient routing cleanup
102
+ private var routingCleanupTimer: Timer?
103
+ private let ROUTING_CLEANUP_INTERVAL: TimeInterval = 30.0
104
+
105
+ // Pending fragments waiting for device ID
106
+ private var pendingFragments: [UUID: [(Data, Date)]] = [:]
107
+ private let PENDING_FRAGMENT_TIMEOUT: TimeInterval = 5.0
108
+ private var pendingOutboundFragments: [String: [Data]] = [:]
109
+ private struct MeshObservation {
110
+ let advertisement: MeshAdvertisementData
111
+ let rssi: Int?
112
+ let timestamp: Date
113
+ }
114
+ private var lastSeenMeshAdvertisements: [UUID: MeshObservation] = [:]
115
+ private var pendingAdvertiseRestart: DispatchWorkItem?
116
+ private var lastAdvertiseRestartAt: Date?
117
+ private var transportStartAt: Date?
118
+
119
+ // State tracking
120
+ private var isScanning = false
121
+ private var isAdvertising = false
122
+ private var centralReady = false
123
+ private var peripheralReady = false
124
+ private var subscribedCentrals: Set<UUID> = []
125
+ private var lastMeshAdvertisement: MeshAdvertisementData?
126
+
127
+ // Metrics
128
+ private var bytesSent: UInt64 = 0
129
+ private var bytesReceived: UInt64 = 0
130
+ private var fragmentsSent: UInt64 = 0
131
+ private var fragmentsReceived: UInt64 = 0
132
+
133
+ // Logging & monitoring
134
+ private let logThrottler = LogThrottler()
135
+ private var discoveryLogTimestamps: [UUID: Date] = [:]
136
+ private var scanStateMonitor: DispatchSourceTimer?
137
+ private var lastDiscoveryDate: Date?
138
+ private var scanStartDate: Date?
139
+
140
+ // Adaptive scan state
141
+ /// Timestamps of recent peripheral discoveries for density estimation
142
+ private var recentDiscoveryTimestamps: [Date] = []
143
+ /// Last connection attempt timestamps per peripheral for rate limiting
144
+ private var peripheralConnectionAttempts: [UUID: Date] = [:]
145
+ /// Global connection attempts in the last minute for rate limiting
146
+ private var globalConnectionAttempts: [Date] = []
147
+ /// Current estimated visible peer count
148
+ private var estimatedVisiblePeerCount: Int = 0
149
+ /// Last time we updated the peer count estimate
150
+ private var lastPeerCountUpdate: Date?
151
+ private let SCAN_HEARTBEAT_INTERVAL: TimeInterval = 10.0
152
+ private let SCAN_RESTART_INTERVAL: TimeInterval = 30.0
153
+ private var connectionMonitor: DispatchSourceTimer?
154
+ private var connectionAttemptTimestamps: [UUID: Date] = [:]
155
+ private let CONNECTION_MONITOR_INTERVAL: TimeInterval = 5.0
156
+ private let MIN_RECONNECT_INTERVAL: TimeInterval = 5.0
157
+ private var scanRestartCount: Int = 0
158
+ private var lastCentralReset: Date?
159
+ private let MAX_CONSECUTIVE_SCAN_RESTARTS = 3
160
+ private let CENTRAL_RESET_BACKOFF: TimeInterval = 45.0
161
+ private let MINIMUM_RSSI_TO_CONNECT: Int16 = -90
162
+
163
+ // MARK: - Thread helpers
164
+ @inline(__always)
165
+ private func performOnMain<T>(_ work: () throws -> T) rethrows -> T {
166
+ if Thread.isMainThread {
167
+ return try work()
168
+ }
169
+ return try DispatchQueue.main.sync(execute: work)
170
+ }
171
+
172
+ // MARK: - Diagnostics
173
+ private static let diagnosticDateFormatter: ISO8601DateFormatter = {
174
+ let formatter = ISO8601DateFormatter()
175
+ formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
176
+ return formatter
177
+ }()
178
+
179
+ private func sanitizeDiagnosticValue(_ value: Any) -> Any {
180
+ switch value {
181
+ case let dict as [String: Any]:
182
+ var sanitized: [String: Any] = [:]
183
+ for (key, nested) in dict {
184
+ sanitized[key] = sanitizeDiagnosticValue(nested)
185
+ }
186
+ return sanitized
187
+ case let dict as [AnyHashable: Any]:
188
+ var sanitized: [String: Any] = [:]
189
+ for (key, nested) in dict {
190
+ sanitized[String(describing: key)] = sanitizeDiagnosticValue(nested)
191
+ }
192
+ return sanitized
193
+ case let dict as NSDictionary:
194
+ var sanitized: [String: Any] = [:]
195
+ dict.forEach { key, nested in
196
+ sanitized[String(describing: key)] = sanitizeDiagnosticValue(nested)
197
+ }
198
+ return sanitized
199
+ case let array as [Any]:
200
+ return array.map { sanitizeDiagnosticValue($0) }
201
+ case let array as NSArray:
202
+ return array.map { sanitizeDiagnosticValue($0) }
203
+ case let number as NSNumber:
204
+ if CFNumberIsFloatType(number) {
205
+ let doubleValue = number.doubleValue
206
+ if !doubleValue.isFinite {
207
+ return String(describing: doubleValue)
208
+ }
209
+ }
210
+ return number
211
+ case let double as Double:
212
+ return double.isFinite ? double : String(describing: double)
213
+ case let float as Float:
214
+ return float.isFinite ? float : String(describing: float)
215
+ case let int as Int:
216
+ return int
217
+ case let int32 as Int32:
218
+ return int32
219
+ case let int64 as Int64:
220
+ return int64
221
+ case let uint as UInt:
222
+ return uint
223
+ case let string as String:
224
+ return string
225
+ case let bool as Bool:
226
+ return bool
227
+ case let uuid as UUID:
228
+ return uuid.uuidString
229
+ case let cbUuid as CBUUID:
230
+ return cbUuid.uuidString
231
+ case let date as Date:
232
+ return BleManager.diagnosticDateFormatter.string(from: date)
233
+ case let data as Data:
234
+ return data.base64EncodedString()
235
+ case let error as NSError:
236
+ return [
237
+ "domain": error.domain,
238
+ "code": error.code,
239
+ "userInfo": sanitizeDiagnosticValue(error.userInfo)
240
+ ]
241
+ case is NSNull:
242
+ return NSNull()
243
+ default:
244
+ return String(describing: value)
245
+ }
246
+ }
247
+
248
+ private func emitDiagnostic(_ level: String, _ message: String, context: [String: Any] = [:]) {
249
+ let sanitizedContext = sanitizeDiagnosticValue(context) as? [String: Any] ?? [:]
250
+ delegate?.transportManager(self, didEmitDiagnostic: level, message: message, context: sanitizedContext)
251
+ }
252
+
253
+ // MARK: - Initialization
254
+
255
+ public init(protocol protocolInstance: OfflineProtocol, deviceId: String) {
256
+ self.protocolInstance = protocolInstance
257
+ self.deviceId = deviceId
258
+ self.meshController = MeshController(selfId: deviceId)
259
+ super.init()
260
+ meshController.markPeerActive(deviceId)
261
+ refreshSelfMetrics()
262
+ }
263
+
264
+ deinit {
265
+ stop()
266
+ }
267
+
268
+ // MARK: - TransportManager Implementation
269
+
270
+ public func isAvailable() -> Bool {
271
+ // BLE is available on all iOS devices (iPhone 4S+, iPad 3+)
272
+ return true
273
+ }
274
+
275
+ public func start() throws {
276
+ try performOnMain {
277
+ try self.startUnsafe()
278
+ }
279
+ }
280
+
281
+ private func startUnsafe() throws {
282
+ guard state != .running else {
283
+ throw TransportError.alreadyRunning
284
+ }
285
+
286
+ guard isAvailable() else {
287
+ throw TransportError.notAvailable("BLE not available on this device")
288
+ }
289
+
290
+ // Check authorization status on iOS 13.1+
291
+ if #available(iOS 13.1, *) {
292
+ let centralAuth = CBCentralManager.authorization
293
+ let peripheralAuth = CBPeripheralManager.authorization
294
+
295
+ print("[BleManager] 🔐 Checking Bluetooth permissions:")
296
+ print("[BleManager] Central authorization: \(centralAuth.rawValue)")
297
+ print("[BleManager] Peripheral authorization: \(peripheralAuth.rawValue)")
298
+
299
+ emitDiagnostic("info", "Checking Bluetooth permissions", context: [
300
+ "centralAuth": centralAuth.rawValue,
301
+ "peripheralAuth": peripheralAuth.rawValue
302
+ ])
303
+
304
+ // If already denied, inform the user immediately
305
+ if centralAuth == .denied || peripheralAuth == .denied {
306
+ let msg = "Bluetooth permission was denied. Please enable Bluetooth access in Settings > \(Bundle.main.displayName ?? "App") > Bluetooth"
307
+ print("[BleManager] ❌ \(msg)")
308
+ emitDiagnostic("error", msg, context: [
309
+ "centralAuth": centralAuth.rawValue,
310
+ "peripheralAuth": peripheralAuth.rawValue
311
+ ])
312
+ } else if centralAuth == .restricted || peripheralAuth == .restricted {
313
+ let msg = "Bluetooth permission is restricted by device management or parental controls"
314
+ print("[BleManager] ⚠️ \(msg)")
315
+ emitDiagnostic("error", msg, context: [
316
+ "centralAuth": centralAuth.rawValue,
317
+ "peripheralAuth": peripheralAuth.rawValue
318
+ ])
319
+ } else if centralAuth == .notDetermined || peripheralAuth == .notDetermined {
320
+ print("[BleManager] 🔔 Bluetooth permission will be requested")
321
+ emitDiagnostic("info", "Bluetooth permission will be requested")
322
+ } else {
323
+ print("[BleManager] ✅ Bluetooth permissions already granted")
324
+ emitDiagnostic("info", "Bluetooth permissions already granted")
325
+ }
326
+ }
327
+
328
+ print("[BleManager] 🚀 Starting BLE transport for device: \(deviceId)")
329
+ emitDiagnostic("info", "Starting BLE transport", context: ["deviceId": deviceId])
330
+ updateState(.starting)
331
+ transportStartAt = Date()
332
+
333
+ // Initialize Central Manager (for scanning)
334
+ // This will trigger permission prompt if not yet determined
335
+ print("[BleManager] 📱 Initializing Central Manager...")
336
+ centralManager = CBCentralManager(
337
+ delegate: self,
338
+ queue: nil,
339
+ options: [CBCentralManagerOptionShowPowerAlertKey: true]
340
+ )
341
+
342
+ // Initialize Peripheral Manager (for advertising)
343
+ // This will trigger permission prompt if not yet determined
344
+ print("[BleManager] 📡 Initializing Peripheral Manager...")
345
+ peripheralManager = CBPeripheralManager(
346
+ delegate: self,
347
+ queue: nil,
348
+ options: [CBPeripheralManagerOptionShowPowerAlertKey: true]
349
+ )
350
+
351
+ print("[BleManager] ⏳ Waiting for Bluetooth to power on and permissions to be granted...")
352
+ emitDiagnostic("info", "Waiting for Bluetooth to power on and permissions")
353
+ // Note: Actual start happens in delegate callbacks when ready
354
+ }
355
+
356
+ public func stop() {
357
+ performOnMain {
358
+ self.stopUnsafe()
359
+ }
360
+ }
361
+
362
+ private func stopUnsafe() {
363
+ guard state == .running || state == .starting else {
364
+ return
365
+ }
366
+
367
+ updateState(.stopping)
368
+
369
+ // Stop fragment polling
370
+ stopFragmentPolling()
371
+
372
+ // Stop scanning
373
+ stopScanning(reason: "stop")
374
+
375
+ // Stop advertising
376
+ stopAdvertising()
377
+
378
+ // Disconnect all peripherals
379
+ for peripheral in connections.allPeripherals() {
380
+ centralManager?.cancelPeripheralConnection(peripheral)
381
+ }
382
+ connections.reset()
383
+ discoveredPeripherals.removeAll()
384
+ peripheralRSSI.removeAll()
385
+ pendingFragments.removeAll()
386
+ pendingOutboundFragments.removeAll()
387
+ lastSeenMeshAdvertisements.removeAll()
388
+ pendingAdvertiseRestart?.cancel()
389
+ pendingAdvertiseRestart = nil
390
+ lastAdvertiseRestartAt = nil
391
+ transportStartAt = nil
392
+ subscribedCentrals.removeAll()
393
+
394
+ // Clean up managers
395
+ centralManager = nil
396
+ peripheralManager = nil
397
+
398
+ centralReady = false
399
+ peripheralReady = false
400
+
401
+ updateState(.stopped)
402
+ emitDiagnostic("info", "BLE transport stopped")
403
+ }
404
+
405
+ public func pause() {
406
+ performOnMain {
407
+ self.pauseUnsafe()
408
+ }
409
+ }
410
+
411
+ private func pauseUnsafe() {
412
+ // For iOS background mode
413
+ stopScanning(reason: "pause")
414
+ stopFragmentPolling()
415
+ }
416
+
417
+ public func resume() {
418
+ performOnMain {
419
+ self.resumeUnsafe()
420
+ }
421
+ }
422
+
423
+ private func resumeUnsafe() {
424
+ // Resume from background
425
+ if state == .running {
426
+ startScanning(reason: "resume")
427
+ startFragmentPolling()
428
+ }
429
+ }
430
+
431
+ public func getMetrics() -> [String: Any] {
432
+ return [
433
+ "bytes_sent": bytesSent,
434
+ "bytes_received": bytesReceived,
435
+ "fragments_sent": fragmentsSent,
436
+ "fragments_received": fragmentsReceived,
437
+ "connected_peers": connections.connectedPeripheralCount(),
438
+ "discovered_peers": discoveredPeripherals.count
439
+ ]
440
+ }
441
+
442
+ // MARK: - Private Methods
443
+
444
+ private func updateState(_ newState: TransportState) {
445
+ state = newState
446
+ delegate?.transportManager(self, didChangeState: newState)
447
+ }
448
+
449
+ private func startScanning(reason: String = "manual") {
450
+ guard let central = centralManager else {
451
+ if logThrottler.shouldLog(key: "scan_missing_central") {
452
+ print("[BleManager] Cannot start scanning – central manager not initialized")
453
+ }
454
+ return
455
+ }
456
+
457
+ guard central.state == .poweredOn else {
458
+ if logThrottler.shouldLog(key: "scan_not_powered") {
459
+ print("[BleManager] Skipping scan start – central state: \(central.state.rawValue)")
460
+ emitDiagnostic("info", "Scan start skipped", context: ["state": central.state.rawValue, "reason": reason])
461
+ }
462
+ return
463
+ }
464
+
465
+ guard !isScanning else {
466
+ if logThrottler.shouldLog(key: "scan_already_running") {
467
+ print("[BleManager] Scan already running (reason: \(reason))")
468
+ }
469
+ return
470
+ }
471
+
472
+ if reason != "watchdog" {
473
+ scanRestartCount = 0
474
+ }
475
+
476
+ central.scanForPeripherals(
477
+ withServices: [SERVICE_UUID],
478
+ options: [CBCentralManagerScanOptionAllowDuplicatesKey: true]
479
+ )
480
+ isScanning = true
481
+ scanStartDate = Date()
482
+ lastDiscoveryDate = scanStartDate
483
+ startScanMonitor()
484
+ if logThrottler.shouldLog(key: "scan_started") {
485
+ let context: [String: Any] = [
486
+ "reason": reason,
487
+ "allowDuplicates": true
488
+ ]
489
+ print("[BleManager] Started scanning (reason: \(reason))")
490
+ emitDiagnostic("info", "Started BLE scanning", context: context)
491
+ }
492
+ startConnectionMonitor()
493
+
494
+ // Rehydrate previously connected peripherals to avoid waiting for advertisements
495
+ let retainedPeripherals = central.retrieveConnectedPeripherals(withServices: [SERVICE_UUID])
496
+ for peripheral in retainedPeripherals {
497
+ discoveredPeripherals[peripheral.identifier] = peripheral
498
+ attemptConnection(to: peripheral, reason: "retrieve_connected")
499
+ }
500
+ }
501
+
502
+ private func stopScanning(reason: String = "manual") {
503
+ guard isScanning else { return }
504
+ centralManager?.stopScan()
505
+ isScanning = false
506
+ stopScanMonitor()
507
+ stopConnectionMonitor()
508
+ scanStartDate = nil
509
+ lastDiscoveryDate = nil
510
+ connectionAttemptTimestamps.removeAll()
511
+ if logThrottler.shouldLog(key: "scan_stopped") {
512
+ print("[BleManager] Stopped scanning (reason: \(reason))")
513
+ }
514
+ emitDiagnostic("info", "Stopped BLE scanning", context: ["reason": reason])
515
+ }
516
+
517
+ private func startScanMonitor() {
518
+ guard scanStateMonitor == nil else { return }
519
+ let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
520
+ timer.schedule(deadline: .now() + SCAN_HEARTBEAT_INTERVAL, repeating: SCAN_HEARTBEAT_INTERVAL)
521
+ timer.setEventHandler { [weak self] in
522
+ guard let self = self else { return }
523
+ guard self.isScanning else { return }
524
+ let now = Date()
525
+ let lastActivity = self.lastDiscoveryDate ?? self.scanStartDate ?? now
526
+ let idleDuration = now.timeIntervalSince(lastActivity)
527
+ if idleDuration >= self.SCAN_RESTART_INTERVAL {
528
+ if self.logThrottler.shouldLog(key: "scan_watchdog", interval: self.SCAN_RESTART_INTERVAL) {
529
+ print("[BleManager] Restarting scan after \(Int(idleDuration))s of inactivity")
530
+ self.emitDiagnostic("warning", "Restarting BLE scan due to inactivity", context: ["idle_seconds": Int(idleDuration)])
531
+ }
532
+ self.restartScanningDueToInactivity()
533
+ }
534
+ }
535
+ timer.resume()
536
+ scanStateMonitor = timer
537
+ }
538
+
539
+ private func stopScanMonitor() {
540
+ scanStateMonitor?.cancel()
541
+ scanStateMonitor = nil
542
+ }
543
+
544
+ private func restartScanningDueToInactivity() {
545
+ DispatchQueue.main.async { [weak self] in
546
+ guard let self = self else { return }
547
+ // Restart scan only if still marked as scanning
548
+ guard self.isScanning else { return }
549
+ self.centralManager?.stopScan()
550
+ self.isScanning = false
551
+ self.scanRestartCount += 1
552
+ self.startScanning(reason: "watchdog")
553
+ self.evaluateCentralHealthAfterRestart()
554
+ }
555
+ }
556
+
557
+ private func evaluateCentralHealthAfterRestart() {
558
+ guard scanRestartCount >= MAX_CONSECUTIVE_SCAN_RESTARTS else { return }
559
+ let now = Date()
560
+ if let lastReset = lastCentralReset, now.timeIntervalSince(lastReset) < CENTRAL_RESET_BACKOFF {
561
+ return
562
+ }
563
+ emitDiagnostic("warning", "Resetting BLE central due to repeated scan stalls", context: [
564
+ "restartCount": scanRestartCount
565
+ ])
566
+ centralReady = false
567
+ centralManager?.stopScan()
568
+ centralManager = CBCentralManager(
569
+ delegate: self,
570
+ queue: nil,
571
+ options: [CBCentralManagerOptionShowPowerAlertKey: true]
572
+ )
573
+ lastCentralReset = now
574
+ scanRestartCount = 0
575
+ }
576
+
577
+ private func markDiscoveryEvent() {
578
+ lastDiscoveryDate = Date()
579
+ }
580
+
581
+ private func startConnectionMonitor() {
582
+ guard connectionMonitor == nil else { return }
583
+ let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
584
+ timer.schedule(deadline: .now() + CONNECTION_MONITOR_INTERVAL, repeating: CONNECTION_MONITOR_INTERVAL)
585
+ timer.setEventHandler { [weak self] in
586
+ guard let self = self else { return }
587
+ let now = Date()
588
+ for peripheral in self.discoveredPeripherals.values {
589
+ if self.connections.connectedPeripheral(for: peripheral.identifier) == nil {
590
+ self.attemptConnection(to: peripheral, reason: "monitor")
591
+ }
592
+ }
593
+ for centralId in self.pendingFragments.keys {
594
+ if self.connections.centralDeviceId(for: centralId) == nil && self.connections.peripheralDeviceId(for: centralId) == nil {
595
+ // Ensure we periodically try to resolve device IDs for pending fragments
596
+ if let last = self.connectionAttemptTimestamps[centralId], now.timeIntervalSince(last) < self.MIN_RECONNECT_INTERVAL {
597
+ continue
598
+ }
599
+ self.connectionAttemptTimestamps[centralId] = now
600
+ self.ensureDeviceId(for: centralId)
601
+ }
602
+ }
603
+ }
604
+ timer.resume()
605
+ connectionMonitor = timer
606
+ }
607
+
608
+ private func stopConnectionMonitor() {
609
+ connectionMonitor?.cancel()
610
+ connectionMonitor = nil
611
+ }
612
+
613
+ private func attemptConnection(to peripheral: CBPeripheral, reason: String, rssi: Int16? = nil, desiredRole: MeshController.MeshRole? = nil) {
614
+ DispatchQueue.main.async { [weak self] in
615
+ guard let self = self else { return }
616
+ if self.connections.connectedPeripheral(for: peripheral.identifier) != nil {
617
+ return
618
+ }
619
+ let now = Date()
620
+ if let lastAttempt = self.connectionAttemptTimestamps[peripheral.identifier], now.timeIntervalSince(lastAttempt) < self.MIN_RECONNECT_INTERVAL {
621
+ return
622
+ }
623
+ if let effectiveRSSI = rssi ?? self.peripheralRSSI[peripheral.identifier], effectiveRSSI < self.MINIMUM_RSSI_TO_CONNECT {
624
+ if self.logThrottler.shouldLog(key: "rssi_skip_\(peripheral.identifier.uuidString)", interval: 10) {
625
+ self.emitDiagnostic("debug", "Skipping BLE connect due to weak RSSI", context: [
626
+ "rssi": effectiveRSSI,
627
+ "threshold": self.MINIMUM_RSSI_TO_CONNECT,
628
+ "reason": reason
629
+ ])
630
+ }
631
+ return
632
+ }
633
+ if self.currentConnectionCount() >= self.MAX_CONNECTIONS_PER_DEVICE {
634
+ if self.logThrottler.shouldLog(key: "mesh_conn_cap_ios", interval: 10) {
635
+ print("[BleManager] Connection cap reached, not connecting to \(peripheral.identifier)")
636
+ }
637
+ return
638
+ }
639
+ self.connectionAttemptTimestamps[peripheral.identifier] = now
640
+ if let desiredRole = desiredRole {
641
+ self.connections.setPendingRole(desiredRole, for: peripheral.identifier)
642
+ } else if self.connections.pendingRole(for: peripheral.identifier) == nil {
643
+ self.connections.setPendingRole(.member, for: peripheral.identifier)
644
+ }
645
+ peripheral.delegate = self
646
+ if peripheral.state == .connected {
647
+ self.connections.registerPeripheral(peripheral)
648
+ if let service = peripheral.services?.first(where: { $0.uuid == self.SERVICE_UUID }) {
649
+ peripheral.discoverCharacteristics([self.MESSAGE_CHAR_UUID, self.DEVICE_ID_CHAR_UUID], for: service)
650
+ } else {
651
+ peripheral.discoverServices([self.SERVICE_UUID])
652
+ }
653
+ return
654
+ }
655
+ self.centralManager?.connect(peripheral, options: nil)
656
+ if self.logThrottler.shouldLog(key: "connect_attempt_\(peripheral.identifier.uuidString)", interval: 10) {
657
+ print("[BleManager] Attempting connection to \(peripheral.identifier) (reason: \(reason))")
658
+ var context: [String: Any] = [
659
+ "identifier": peripheral.identifier.uuidString,
660
+ "reason": reason
661
+ ]
662
+ if let rssi = rssi {
663
+ context["rssi"] = rssi
664
+ }
665
+ self.emitDiagnostic("info", "Connecting to BLE peripheral", context: context)
666
+ }
667
+ }
668
+ }
669
+
670
+ private func ensureDeviceId(for centralId: UUID) {
671
+ DispatchQueue.main.async { [weak self] in
672
+ guard let self = self else { return }
673
+ // Check again with latest state
674
+ if self.connections.centralDeviceId(for: centralId) != nil || self.connections.peripheralDeviceId(for: centralId) != nil {
675
+ return
676
+ }
677
+ guard let centralManager = self.centralManager else { return }
678
+ var candidates = centralManager.retrievePeripherals(withIdentifiers: [centralId])
679
+ if candidates.isEmpty {
680
+ let connected = centralManager.retrieveConnectedPeripherals(withServices: [self.SERVICE_UUID])
681
+ candidates = connected.filter { $0.identifier == centralId }
682
+ }
683
+ guard let peripheral = candidates.first else {
684
+ if self.logThrottler.shouldLog(key: "missing_peripheral_\(centralId.uuidString)", interval: 15) {
685
+ print("[BleManager] Unable to retrieve peripheral for central \(centralId)")
686
+ self.emitDiagnostic("debug", "Unable to retrieve peripheral for central", context: ["central": centralId.uuidString])
687
+ }
688
+ return
689
+ }
690
+ self.discoveredPeripherals[peripheral.identifier] = peripheral
691
+ self.attemptConnection(to: peripheral, reason: "ensure_device_id")
692
+ }
693
+ }
694
+
695
+ private func startAdvertising(reason: String = "manual") {
696
+ guard let peripheral = peripheralManager, peripheral.state == .poweredOn else {
697
+ return
698
+ }
699
+ if isAdvertising {
700
+ if logThrottler.shouldLog(key: "advert_already_running", interval: 10) {
701
+ print("[BleManager] Advertising already running (reason: \(reason))")
702
+ }
703
+ return
704
+ }
705
+
706
+ setupGattServer()
707
+
708
+ let meshData = meshController.advertisement()
709
+ lastMeshAdvertisement = meshData
710
+ var advertisementData: [String: Any] = [
711
+ CBAdvertisementDataServiceUUIDsKey: [SERVICE_UUID]
712
+ ]
713
+
714
+ // Note: iOS has strict limitations on advertisement data:
715
+ // - Service data (CBAdvertisementDataServiceDataKey) is not allowed when advertising as a peripheral
716
+ // - Only service UUIDs are reliably advertised
717
+ // - Mesh metadata must be exchanged after connection via GATT characteristics
718
+ // Attempting to include service data causes a crash when CoreBluetooth internally
719
+ // tries to serialize the CBUUID dictionary key
720
+
721
+ // iOS limitation: We cannot advertise service data, only service UUIDs
722
+ // The mesh advertisement data will need to be read via GATT characteristic after connection
723
+ if logThrottler.shouldLog(key: "advert_no_service_data_ios", interval: 60) {
724
+ print("[BleManager] iOS does not support service data in peripheral advertisements, advertising UUID only")
725
+ }
726
+
727
+ peripheral.startAdvertising(advertisementData)
728
+ isAdvertising = true
729
+ lastAdvertiseRestartAt = Date()
730
+ emitDiagnostic("info", "Started BLE advertising", context: ["reason": reason])
731
+ }
732
+
733
+ private func stopAdvertising() {
734
+ guard isAdvertising else { return }
735
+ pendingAdvertiseRestart?.cancel()
736
+ pendingAdvertiseRestart = nil
737
+ peripheralManager?.stopAdvertising()
738
+ isAdvertising = false
739
+ print("[BleManager] Stopped advertising")
740
+ emitDiagnostic("info", "Stopped BLE advertising")
741
+ }
742
+
743
+ private func refreshAdvertising(reason: String) {
744
+ guard peripheralManager?.state == .poweredOn else { return }
745
+ stopAdvertising()
746
+ scheduleAdvertisingRestart(reason: reason)
747
+ }
748
+
749
+ private func scheduleAdvertisingRestart(reason: String) {
750
+ pendingAdvertiseRestart?.cancel()
751
+ let now = Date()
752
+ let elapsed = now.timeIntervalSince(lastAdvertiseRestartAt ?? .distantPast)
753
+ let cooldown = max(0, MIN_ADVERTISE_INTERVAL - elapsed)
754
+ let jitter = Double.random(in: ADVERTISE_RESTART_MIN...ADVERTISE_RESTART_MAX)
755
+ let work = DispatchWorkItem { [weak self] in
756
+ guard let self = self else { return }
757
+ self.pendingAdvertiseRestart = nil
758
+ self.startAdvertising(reason: reason)
759
+ }
760
+ pendingAdvertiseRestart = work
761
+ DispatchQueue.main.asyncAfter(deadline: .now() + cooldown + jitter, execute: work)
762
+ }
763
+
764
+ private func setupGattServer() {
765
+ guard let peripheral = peripheralManager else { return }
766
+ if messageCharacteristic != nil && deviceIdCharacteristic != nil {
767
+ return
768
+ }
769
+
770
+ // Create message characteristic (write without response + notify)
771
+ messageCharacteristic = CBMutableCharacteristic(
772
+ type: MESSAGE_CHAR_UUID,
773
+ properties: [.writeWithoutResponse, .notify],
774
+ value: nil,
775
+ permissions: [.writeable]
776
+ )
777
+
778
+ // Create device ID characteristic (read)
779
+ let deviceIdData = deviceId.data(using: .utf8)
780
+ deviceIdCharacteristic = CBMutableCharacteristic(
781
+ type: DEVICE_ID_CHAR_UUID,
782
+ properties: [.read],
783
+ value: deviceIdData,
784
+ permissions: [.readable]
785
+ )
786
+
787
+ // Create service
788
+ let service = CBMutableService(type: SERVICE_UUID, primary: true)
789
+ service.characteristics = [messageCharacteristic!, deviceIdCharacteristic!]
790
+
791
+ // Add service to peripheral manager
792
+ peripheral.add(service)
793
+ print("[BleManager] GATT server configured")
794
+ emitDiagnostic("info", "GATT server configured")
795
+ }
796
+
797
+ private func startFragmentPolling() {
798
+ stopFragmentPolling()
799
+
800
+ fragmentTimer = Timer.scheduledTimer(
801
+ withTimeInterval: FRAGMENT_POLL_INTERVAL,
802
+ repeats: true
803
+ ) { [weak self] _ in
804
+ self?.pollAndSendFragments()
805
+ }
806
+
807
+ RunLoop.current.add(fragmentTimer!, forMode: .common)
808
+ print("[BleManager] Fragment polling started")
809
+ emitDiagnostic("info", "Fragment polling started")
810
+
811
+ startRoutingCleanup()
812
+ }
813
+
814
+ private func stopFragmentPolling() {
815
+ fragmentTimer?.invalidate()
816
+ fragmentTimer = nil
817
+ stopRoutingCleanup()
818
+ emitDiagnostic("info", "Fragment polling stopped")
819
+ }
820
+
821
+ // MARK: - Gradient Routing
822
+
823
+ private func startRoutingCleanup() {
824
+ stopRoutingCleanup()
825
+
826
+ routingCleanupTimer = Timer.scheduledTimer(
827
+ withTimeInterval: ROUTING_CLEANUP_INTERVAL,
828
+ repeats: true
829
+ ) { [weak self] _ in
830
+ self?.protocolInstance.cleanupExpiredRoutes()
831
+ }
832
+
833
+ if let timer = routingCleanupTimer {
834
+ RunLoop.current.add(timer, forMode: .common)
835
+ }
836
+ }
837
+
838
+ private func stopRoutingCleanup() {
839
+ routingCleanupTimer?.invalidate()
840
+ routingCleanupTimer = nil
841
+ }
842
+
843
+ /// Computes route quality from RSSI value (0.0 to 1.0)
844
+ private func computeRouteQuality(rssi: Int?) -> Float {
845
+ guard let rssi = rssi else { return 0.5 }
846
+ // Map RSSI from [-100, -20] to [0.0, 1.0]
847
+ let normalized = Float(max(-100, min(-20, rssi)) + 100) / 80.0
848
+ return normalized
849
+ }
850
+
851
+ /// Learns a route from a received message
852
+ private func learnRouteFromMessage(_ messageJson: String, deliveredBy neighborId: String, neighborUUID: UUID?) {
853
+ guard let data = messageJson.data(using: .utf8),
854
+ let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
855
+ let sender = json["sender"] as? String,
856
+ let hopCount = json["hop_count"] as? Int else {
857
+ return
858
+ }
859
+
860
+ // Don't learn route to ourselves
861
+ if sender == deviceId { return }
862
+
863
+ // Compute quality from RSSI
864
+ let rssi = neighborUUID.flatMap { peripheralRSSI[$0] }.map { Int($0) }
865
+ let quality = computeRouteQuality(rssi: rssi)
866
+
867
+ // Learn the route: sender can be reached through neighborId
868
+ protocolInstance.learnRoute(
869
+ destination: sender,
870
+ nextHop: neighborId,
871
+ hopCount: UInt8(min(255, hopCount + 1)),
872
+ quality: quality
873
+ )
874
+ }
875
+
876
+ private func pollAndSendFragments() {
877
+ fragmentQueue.async { [weak self] in
878
+ guard let self = self else { return }
879
+
880
+ if self.flushPendingOutboundFragments() {
881
+ return
882
+ }
883
+
884
+ // Poll for next fragment from protocol
885
+ if let fragment = self.protocolInstance.bleGetNextFragment() {
886
+ print("[BleManager] Got fragment for recipient: \(fragment.recipientId), size: \(fragment.data.count)")
887
+ self.emitDiagnostic("debug", "Polling got fragment", context: [
888
+ "recipientId": fragment.recipientId,
889
+ "fragmentSize": fragment.data.count
890
+ ])
891
+ self.sendFragment(fragment)
892
+ }
893
+ }
894
+ }
895
+
896
+ private func sendFragment(_ fragment: BleFragment) {
897
+ let recipientId = fragment.recipientId
898
+ let data = Data(fragment.data)
899
+
900
+ let sendResult = sendFragmentData(recipientId: recipientId, data: data)
901
+ print("[BleManager] Fragment send result for \(recipientId): \(sendResult)")
902
+
903
+ if !sendResult {
904
+ print("[BleManager] Failed to send fragment immediately, queuing for retry")
905
+ enqueuePendingOutboundFragment(recipientId: recipientId, data: data)
906
+ } else {
907
+ print("[BleManager] Fragment sent successfully to \(recipientId)")
908
+ emitDiagnostic("debug", "Fragment sent successfully", context: ["recipientId": recipientId])
909
+ }
910
+ }
911
+
912
+ private func flushPendingOutboundFragments() -> Bool {
913
+ var hasUnsentFragments = false
914
+ let recipients = Array(pendingOutboundFragments.keys)
915
+
916
+ for recipientId in recipients {
917
+ guard var queue = pendingOutboundFragments[recipientId] else { continue }
918
+ var sentAllForRecipient = true
919
+
920
+ while !queue.isEmpty {
921
+ let data = queue.first!
922
+ if sendFragmentData(recipientId: recipientId, data: data) {
923
+ queue.removeFirst()
924
+ } else {
925
+ sentAllForRecipient = false
926
+ break
927
+ }
928
+ }
929
+
930
+ if queue.isEmpty {
931
+ pendingOutboundFragments.removeValue(forKey: recipientId)
932
+ } else {
933
+ pendingOutboundFragments[recipientId] = queue
934
+ if !sentAllForRecipient {
935
+ hasUnsentFragments = true
936
+ }
937
+ }
938
+ }
939
+
940
+ return hasUnsentFragments
941
+ }
942
+
943
+ private func enqueuePendingOutboundFragment(recipientId: String, data: Data) {
944
+ var queue = pendingOutboundFragments[recipientId] ?? []
945
+ queue.append(data)
946
+ pendingOutboundFragments[recipientId] = queue
947
+ }
948
+
949
+ private func currentConnectionCount() -> Int {
950
+ return connections.connectedPeripheralCount() + subscribedCentrals.count
951
+ }
952
+
953
+ private func refreshSelfMetrics() {
954
+ let rssiValues = peripheralRSSI.values.map { Int($0) }
955
+ let averageRssi = rssiValues.isEmpty ? nil : Int(Double(rssiValues.reduce(0, +)) / Double(rssiValues.count))
956
+ let signalQuality = averageRssi.map { rssi -> Int in
957
+ let clamped = max(-100, min(-20, rssi))
958
+ let normalized = Double(clamped + 100) / 80.0
959
+ let scaled = Int((normalized * 100.0).rounded())
960
+ return min(100, max(0, scaled))
961
+ }
962
+ let pendingCount = pendingFragments.values.reduce(0) { $0 + $1.count }
963
+ let outboundCount = pendingOutboundFragments.values.reduce(0) { $0 + $1.count }
964
+ let totalPending = pendingCount + outboundCount
965
+ let stability = max(0.0, 1.0 - min(1.0, Double(pendingCount) / 10.0))
966
+ let loadPercent = min(100, (totalPending * 100) / LOAD_SATURATION_COUNT)
967
+ let uptimeSeconds = transportStartAt.map { max(0, Date().timeIntervalSince($0)) }
968
+ let metrics = MeshController.PeerMetrics(
969
+ rssi: averageRssi,
970
+ batteryPercent: currentBatteryPercent(),
971
+ signalQuality: signalQuality,
972
+ stability: stability,
973
+ uptimeSeconds: uptimeSeconds,
974
+ loadPercent: loadPercent
975
+ )
976
+ meshController.updateSelfMetrics(metrics)
977
+ meshController.markPeerActive(deviceId)
978
+ maybeHandleRebalance(reason: "self_metrics")
979
+ }
980
+
981
+ private func currentBatteryPercent() -> Int? {
982
+ UIDevice.current.isBatteryMonitoringEnabled = true
983
+ let level = UIDevice.current.batteryLevel
984
+ guard level >= 0 else { return nil }
985
+ return Int((level * 100).rounded())
986
+ }
987
+
988
+ private func evictPeer(_ deviceId: String, reason: String) {
989
+ guard let identifier = connections.peripheralIdentifier(for: deviceId) else {
990
+ if logThrottler.shouldLog(key: "mesh_evict_missing_\(deviceId)") {
991
+ print("[BleManager] Cannot evict \(deviceId): missing identifier")
992
+ }
993
+ return
994
+ }
995
+
996
+ if logThrottler.shouldLog(key: "mesh_evict_\(deviceId)", interval: 5) {
997
+ print("[BleManager] Evicting \(deviceId) to reclaim capacity (reason: \(reason))")
998
+ }
999
+
1000
+ if let peripheral = connections.connectedPeripheral(for: identifier) {
1001
+ centralManager?.cancelPeripheralConnection(peripheral)
1002
+ }
1003
+
1004
+ _ = connections.removePeripheral(identifier)
1005
+ connections.removePeripheralDeviceId(for: identifier)
1006
+ connections.removeCentralDeviceId(for: identifier)
1007
+ connections.removeConnectionRole(for: deviceId)
1008
+ peripheralRSSI.removeValue(forKey: identifier)
1009
+ pendingFragments.removeValue(forKey: identifier)
1010
+ pendingOutboundFragments.removeValue(forKey: deviceId)
1011
+ connectionAttemptTimestamps.removeValue(forKey: identifier)
1012
+ meshController.registerDisconnection(peerId: deviceId)
1013
+ refreshSelfMetrics()
1014
+
1015
+ // Clean up routes through this neighbor
1016
+ protocolInstance.removeNeighborRoutes(neighborId: deviceId)
1017
+ try? protocolInstance.blePeerLost(peerId: deviceId)
1018
+ DispatchQueue.main.async {
1019
+ self.refreshAdvertising(reason: "evict_\(reason)")
1020
+ }
1021
+ maybeHandleRebalance(reason: "evict")
1022
+ }
1023
+
1024
+ private func sendFragmentData(recipientId: String, data: Data) -> Bool {
1025
+ guard let peripheral = findPeripheral(for: recipientId) else {
1026
+ if logThrottler.shouldLog(key: "missing_peripheral_\(recipientId)") {
1027
+ print("[BleManager] No connected peripheral for recipient: \(recipientId)")
1028
+ emitDiagnostic("warning", "No connected peripheral for BLE fragment", context: ["recipientId": recipientId])
1029
+ }
1030
+ return false
1031
+ }
1032
+
1033
+ guard let (service, characteristic) = findMessageCharacteristic(on: peripheral) else {
1034
+ if logThrottler.shouldLog(key: "missing_char_\(recipientId)") {
1035
+ print("[BleManager] Message characteristic not found for recipient: \(recipientId)")
1036
+ emitDiagnostic("warning", "Message characteristic not found", context: ["recipientId": recipientId])
1037
+ }
1038
+ return false
1039
+ }
1040
+
1041
+ if #available(iOS 11.0, *) {
1042
+ if !peripheral.canSendWriteWithoutResponse {
1043
+ if logThrottler.shouldLog(key: "write_backpressure_\(recipientId)", interval: 2.0) {
1044
+ print("[BleManager] Cannot send fragment yet, write buffer full for recipient: \(recipientId)")
1045
+ emitDiagnostic("info", "BLE write buffer full, retrying", context: ["recipientId": recipientId])
1046
+ }
1047
+ return false
1048
+ }
1049
+ }
1050
+
1051
+ peripheral.writeValue(data, for: characteristic, type: .withoutResponse)
1052
+ bytesSent += UInt64(data.count)
1053
+ fragmentsSent += 1
1054
+ meshController.markPeerActive(recipientId)
1055
+ meshController.markPeerActive(deviceId)
1056
+ return true
1057
+ }
1058
+
1059
+ private func findPeripheral(for recipientId: String) -> CBPeripheral? {
1060
+ guard let identifier = connections.peripheralIdentifier(for: recipientId) else {
1061
+ return nil
1062
+ }
1063
+ return connections.connectedPeripheral(for: identifier)
1064
+ }
1065
+
1066
+ private func findMessageCharacteristic(on peripheral: CBPeripheral) -> (CBService, CBCharacteristic)? {
1067
+ guard let service = peripheral.services?.first(where: { $0.uuid == SERVICE_UUID }),
1068
+ let characteristic = service.characteristics?.first(where: { $0.uuid == MESSAGE_CHAR_UUID }) else {
1069
+ return nil
1070
+ }
1071
+ return (service, characteristic)
1072
+ }
1073
+
1074
+ private func handleReceivedData(_ data: Data, senderId: String?, centralId: UUID? = nil) {
1075
+ fragmentQueue.async { [weak self] in
1076
+ guard let self = self else { return }
1077
+
1078
+ // If sender ID is missing but we have a central ID, queue the fragment
1079
+ if senderId == nil, let centralId = centralId {
1080
+ if self.logThrottler.shouldLog(key: "queue_pending_fragment_\(centralId.uuidString)", interval: 10) {
1081
+ print("[BleManager] Queueing fragment while waiting for device ID (central: \(centralId))")
1082
+ self.emitDiagnostic("info", "Queued BLE fragment pending device ID", context: [
1083
+ "central": centralId.uuidString,
1084
+ "length": data.count
1085
+ ])
1086
+ }
1087
+ // Queue fragment to process later when device ID is available
1088
+ if self.pendingFragments[centralId] == nil {
1089
+ self.pendingFragments[centralId] = []
1090
+ }
1091
+ self.pendingFragments[centralId]?.append((data, Date()))
1092
+
1093
+ // Clean up old pending fragments
1094
+ self.cleanupPendingFragments()
1095
+
1096
+ // Try to read device ID if not already reading
1097
+ if self.connections.centralDeviceId(for: centralId) == nil && self.connections.peripheralDeviceId(for: centralId) == nil {
1098
+ self.ensureDeviceId(for: centralId)
1099
+ }
1100
+ return
1101
+ }
1102
+
1103
+ guard let senderId = senderId else {
1104
+ // Only log if we don't have a central ID to queue for
1105
+ if centralId == nil {
1106
+ if self.logThrottler.shouldLog(key: "missing_sender_fallback", interval: 10) {
1107
+ print("[BleManager] Missing sender ID for received fragment")
1108
+ self.emitDiagnostic("warning", "Dropped BLE fragment without sender ID", context: ["length": data.count])
1109
+ }
1110
+ }
1111
+ return
1112
+ }
1113
+
1114
+ let bytes = [UInt8](data)
1115
+ self.meshController.markPeerActive(senderId)
1116
+ self.meshController.markPeerActive(self.deviceId)
1117
+
1118
+ do {
1119
+ print("[BleManager] 📥 RECEIVED FRAGMENT from \(senderId), size: \(data.count)")
1120
+ self.emitDiagnostic("info", "Fragment received from BLE", context: [
1121
+ "senderId": senderId,
1122
+ "fragmentSize": data.count
1123
+ ])
1124
+
1125
+ try self.protocolInstance.bleFragmentReceived(senderId: senderId, fragment: bytes)
1126
+ print("[BleManager] ✅ Fragment processed successfully for sender: \(senderId)")
1127
+
1128
+ // CRITICAL FIX: Immediately check if this completed a message
1129
+ if let completedMessage = self.protocolInstance.receiveMessage() {
1130
+ print("[BleManager] 🎉 COMPLETE MESSAGE ASSEMBLED FROM FRAGMENTS!")
1131
+ print("[BleManager] 📬 Received message: \(completedMessage)")
1132
+ self.emitDiagnostic("info", "Complete message assembled from fragments", context: [
1133
+ "senderId": senderId,
1134
+ "messageContent": completedMessage
1135
+ ])
1136
+
1137
+ // Learn route from the message sender through the delivering neighbor
1138
+ self.learnRouteFromMessage(completedMessage, deliveredBy: senderId, neighborUUID: centralId)
1139
+ } else {
1140
+ print("[BleManager] 📦 Fragment processed, waiting for more fragments to complete message")
1141
+ }
1142
+
1143
+ self.bytesReceived += UInt64(data.count)
1144
+ self.fragmentsReceived += 1
1145
+ } catch {
1146
+ print("[BleManager] ❌ Error processing fragment from \(senderId): \(error)")
1147
+ self.emitDiagnostic("error", "Error processing received fragment", context: [
1148
+ "senderId": senderId,
1149
+ "fragmentSize": data.count,
1150
+ "error": error.localizedDescription
1151
+ ])
1152
+ }
1153
+ }
1154
+ }
1155
+
1156
+ private func processPendingFragments(for centralId: UUID, deviceId: String) {
1157
+ fragmentQueue.async { [weak self] in
1158
+ guard let self = self else { return }
1159
+ guard let fragments = self.pendingFragments.removeValue(forKey: centralId) else { return }
1160
+ let role = self.connections.consumePendingRole(for: centralId) ?? self.connections.connectionRole(for: deviceId) ?? .member
1161
+ self.meshController.registerConnection(peerId: deviceId, role: role)
1162
+ self.connections.setConnectionRole(role, for: deviceId)
1163
+ self.meshController.markPeerActive(deviceId)
1164
+ self.meshController.markPeerActive(self.deviceId)
1165
+ self.refreshSelfMetrics()
1166
+ if let rssi = self.peripheralRSSI[centralId] {
1167
+ self.meshController.updatePeerMetrics(peerId: deviceId, metrics: MeshController.PeerMetrics(rssi: Int(rssi)))
1168
+ }
1169
+ DispatchQueue.main.async {
1170
+ self.refreshAdvertising(reason: "membership_change")
1171
+ }
1172
+
1173
+ for (data, _) in fragments {
1174
+ let bytes = [UInt8](data)
1175
+ do {
1176
+ try self.protocolInstance.bleFragmentReceived(senderId: deviceId, fragment: bytes)
1177
+ self.bytesReceived += UInt64(data.count)
1178
+ self.fragmentsReceived += 1
1179
+ self.meshController.markPeerActive(deviceId)
1180
+ self.meshController.markPeerActive(self.deviceId)
1181
+ } catch {
1182
+ print("[BleManager] Error processing pending fragment: \(error)")
1183
+ }
1184
+ }
1185
+ }
1186
+ }
1187
+
1188
+ private func cleanupPendingFragments() {
1189
+ let now = Date()
1190
+ for (centralId, fragments) in pendingFragments {
1191
+ let validFragments = fragments.filter { now.timeIntervalSince($0.1) < PENDING_FRAGMENT_TIMEOUT }
1192
+ if validFragments.isEmpty {
1193
+ pendingFragments.removeValue(forKey: centralId)
1194
+ } else {
1195
+ pendingFragments[centralId] = validFragments
1196
+ }
1197
+ }
1198
+ }
1199
+
1200
+ private func pruneMeshObservations(now: Date = Date()) {
1201
+ lastSeenMeshAdvertisements = lastSeenMeshAdvertisements.filter { now.timeIntervalSince($0.value.timestamp) <= MESH_OBSERVATION_TTL }
1202
+ }
1203
+
1204
+ // MARK: - Adaptive Scan Methods
1205
+
1206
+ /// Updates the estimated visible peer count based on recent discoveries.
1207
+ private func updateVisiblePeerCount(now: Date) {
1208
+ // Only update periodically to avoid overhead
1209
+ if let lastUpdate = lastPeerCountUpdate, now.timeIntervalSince(lastUpdate) < 1.0 {
1210
+ return
1211
+ }
1212
+ lastPeerCountUpdate = now
1213
+
1214
+ // Clean up old timestamps
1215
+ let windowStart = now.addingTimeInterval(-ADAPTIVE_PEER_COUNT_WINDOW)
1216
+ recentDiscoveryTimestamps = recentDiscoveryTimestamps.filter { $0 > windowStart }
1217
+
1218
+ // Estimate peer count from unique discoveries in window
1219
+ // Also consider cached observations as a lower bound
1220
+ let recentCount = recentDiscoveryTimestamps.count
1221
+ let cachedCount = lastSeenMeshAdvertisements.count
1222
+ estimatedVisiblePeerCount = max(recentCount, cachedCount)
1223
+ }
1224
+
1225
+ /// Records a peripheral discovery for density estimation.
1226
+ private func recordDiscoveryForDensity(now: Date) {
1227
+ recentDiscoveryTimestamps.append(now)
1228
+ updateVisiblePeerCount(now: now)
1229
+ }
1230
+
1231
+ /// Checks if we should skip this peripheral based on RSSI filtering.
1232
+ /// Returns true if the signal is too weak and we're in a dense environment.
1233
+ private func shouldFilterByRssi(_ rssi: Int16) -> Bool {
1234
+ // In dense networks, apply stricter RSSI filtering
1235
+ let threshold: Int16
1236
+ if estimatedVisiblePeerCount > ADAPTIVE_HIGH_DENSITY_THRESHOLD {
1237
+ // Very dense - only consider strong signals
1238
+ threshold = -70
1239
+ } else if estimatedVisiblePeerCount > ADAPTIVE_LOW_DENSITY_THRESHOLD {
1240
+ // Moderately dense - standard threshold
1241
+ threshold = ADAPTIVE_MIN_RSSI
1242
+ } else {
1243
+ // Sparse network - accept all signals
1244
+ return false
1245
+ }
1246
+ return rssi < threshold
1247
+ }
1248
+
1249
+ /// Checks if we should throttle connection attempts based on rate limits.
1250
+ /// Returns true if we should skip this connection attempt.
1251
+ private func shouldThrottleConnection(to peripheral: UUID, now: Date) -> Bool {
1252
+ // Prune old entries
1253
+ let oneMinuteAgo = now.addingTimeInterval(-60.0)
1254
+ globalConnectionAttempts = globalConnectionAttempts.filter { $0 > oneMinuteAgo }
1255
+ peripheralConnectionAttempts = peripheralConnectionAttempts.filter {
1256
+ now.timeIntervalSince($0.value) < ADAPTIVE_COOLDOWN_PER_PERIPHERAL
1257
+ }
1258
+
1259
+ // Check per-peripheral cooldown
1260
+ if let lastAttempt = peripheralConnectionAttempts[peripheral],
1261
+ now.timeIntervalSince(lastAttempt) < ADAPTIVE_COOLDOWN_PER_PERIPHERAL {
1262
+ return true
1263
+ }
1264
+
1265
+ // In dense networks, apply global rate limiting
1266
+ if estimatedVisiblePeerCount > ADAPTIVE_LOW_DENSITY_THRESHOLD {
1267
+ let maxAttempts = ADAPTIVE_MAX_CONNECTIONS_PER_MINUTE
1268
+ if globalConnectionAttempts.count >= maxAttempts {
1269
+ if logThrottler.shouldLog(key: "adaptive_rate_limit", interval: 5) {
1270
+ print("[BleManager] Adaptive: rate limiting connections (\(globalConnectionAttempts.count)/\(maxAttempts) in last minute)")
1271
+ }
1272
+ return true
1273
+ }
1274
+ }
1275
+
1276
+ return false
1277
+ }
1278
+
1279
+ /// Records a connection attempt for rate limiting.
1280
+ private func recordConnectionAttempt(to peripheral: UUID, now: Date) {
1281
+ peripheralConnectionAttempts[peripheral] = now
1282
+ globalConnectionAttempts.append(now)
1283
+ }
1284
+
1285
+ /// Returns true if we should apply probabilistic filtering based on network density.
1286
+ /// Uses deterministic pseudo-randomness based on peripheral ID to ensure consistency.
1287
+ private func shouldProbabilisticallySkip(_ peripheral: UUID) -> Bool {
1288
+ guard estimatedVisiblePeerCount > ADAPTIVE_LOW_DENSITY_THRESHOLD else {
1289
+ return false
1290
+ }
1291
+
1292
+ // Calculate skip probability based on density
1293
+ // At 50+ peers, skip ~80% of evaluations
1294
+ // At 10-50 peers, scale linearly
1295
+ let density = Double(estimatedVisiblePeerCount - ADAPTIVE_LOW_DENSITY_THRESHOLD)
1296
+ let range = Double(ADAPTIVE_HIGH_DENSITY_THRESHOLD - ADAPTIVE_LOW_DENSITY_THRESHOLD)
1297
+ let skipProbability = min(0.8, density / range * 0.8)
1298
+
1299
+ // Use peripheral UUID hash for deterministic selection
1300
+ let hash = peripheral.hashValue
1301
+ let normalizedHash = Double(abs(hash) % 1000) / 1000.0
1302
+
1303
+ return normalizedHash < skipProbability
1304
+ }
1305
+
1306
+ private func identifierForNodeHash(_ nodeHash: UInt64) -> UUID? {
1307
+ for (identifier, observation) in lastSeenMeshAdvertisements where observation.advertisement.nodeIdHash == nodeHash {
1308
+ return identifier
1309
+ }
1310
+ return nil
1311
+ }
1312
+
1313
+ private func maybeHandleRebalance(reason: String) {
1314
+ pruneMeshObservations()
1315
+ guard let directive = meshController.evaluateRebalance() else { return }
1316
+
1317
+ if let evictPeerId = directive.decision.evictPeerId {
1318
+ self.evictPeer(evictPeerId, reason: "rebalance_\(reason)")
1319
+ }
1320
+
1321
+ guard meshController.connectionBudgetAvailable() || directive.decision.evictPeerId != nil else { return }
1322
+ guard currentConnectionCount() < MAX_CONNECTIONS_PER_DEVICE else { return }
1323
+
1324
+ guard let identifier = identifierForNodeHash(directive.candidate.nodeIdHash),
1325
+ let peripheral = discoveredPeripherals[identifier] else {
1326
+ return
1327
+ }
1328
+
1329
+ let desiredRole: MeshController.MeshRole = directive.decision.intent == .interCluster ? .bridge : .member
1330
+ connections.setPendingRole(desiredRole, for: identifier)
1331
+ attemptConnection(to: peripheral, reason: "rebalance", desiredRole: desiredRole)
1332
+ }
1333
+
1334
+ private func readDeviceId(from peripheral: CBPeripheral) {
1335
+ guard let service = peripheral.services?.first(where: { $0.uuid == SERVICE_UUID }),
1336
+ let characteristic = service.characteristics?.first(where: { $0.uuid == DEVICE_ID_CHAR_UUID }) else {
1337
+ return
1338
+ }
1339
+
1340
+ peripheral.readValue(for: characteristic)
1341
+ }
1342
+ }
1343
+
1344
+ // MARK: - CBCentralManagerDelegate
1345
+
1346
+ extension BleManager: CBCentralManagerDelegate {
1347
+
1348
+ public func centralManagerDidUpdateState(_ central: CBCentralManager) {
1349
+ let stateString: String
1350
+ var authStatus = "unknown"
1351
+
1352
+ if #available(iOS 13.1, *) {
1353
+ let authorization = CBCentralManager.authorization
1354
+ switch authorization {
1355
+ case .notDetermined:
1356
+ authStatus = "notDetermined"
1357
+ case .restricted:
1358
+ authStatus = "restricted"
1359
+ case .denied:
1360
+ authStatus = "denied"
1361
+ case .allowedAlways:
1362
+ authStatus = "allowedAlways"
1363
+ @unknown default:
1364
+ authStatus = "unknown"
1365
+ }
1366
+ }
1367
+
1368
+ switch central.state {
1369
+ case .unknown:
1370
+ stateString = "unknown"
1371
+ case .resetting:
1372
+ stateString = "resetting"
1373
+ case .unsupported:
1374
+ stateString = "unsupported"
1375
+ case .unauthorized:
1376
+ stateString = "unauthorized"
1377
+ case .poweredOff:
1378
+ stateString = "poweredOff"
1379
+ case .poweredOn:
1380
+ stateString = "poweredOn"
1381
+ @unknown default:
1382
+ stateString = "unknown"
1383
+ }
1384
+
1385
+ print("[BleManager] Central state: \(stateString), authorization: \(authStatus)")
1386
+ emitDiagnostic("info", "Central manager state changed", context: [
1387
+ "state": stateString,
1388
+ "stateRaw": central.state.rawValue,
1389
+ "authorization": authStatus
1390
+ ])
1391
+
1392
+ switch central.state {
1393
+ case .poweredOn:
1394
+ // Check authorization status on iOS 13.1+
1395
+ if #available(iOS 13.1, *) {
1396
+ let authorization = CBCentralManager.authorization
1397
+ switch authorization {
1398
+ case .denied, .restricted:
1399
+ print("[BleManager] ⚠️ Bluetooth permission denied or restricted")
1400
+ emitDiagnostic("error", "Bluetooth permission denied", context: ["authorization": authStatus])
1401
+ centralReady = false
1402
+ updateState(.unavailable)
1403
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1404
+ return
1405
+
1406
+ case .notDetermined:
1407
+ print("[BleManager] 🔔 Bluetooth permission not determined yet, waiting for user response...")
1408
+ emitDiagnostic("info", "Waiting for Bluetooth permission", context: ["authorization": authStatus])
1409
+ // Permission prompt should be showing now
1410
+ // Will get called again when user responds
1411
+ return
1412
+
1413
+ case .allowedAlways:
1414
+ print("[BleManager] ✅ Bluetooth permission granted")
1415
+ emitDiagnostic("info", "Bluetooth permission granted", context: ["authorization": authStatus])
1416
+
1417
+ @unknown default:
1418
+ print("[BleManager] ⚠️ Unknown authorization state")
1419
+ emitDiagnostic("warning", "Unknown authorization state", context: ["authorization": authStatus])
1420
+ }
1421
+ }
1422
+
1423
+ centralReady = true
1424
+ startScanning(reason: "central_powered_on")
1425
+ startFragmentPolling()
1426
+ emitDiagnostic("info", "Central manager powered on and ready")
1427
+
1428
+ // If both central and peripheral are ready, mark as running
1429
+ if peripheralReady && state == .starting {
1430
+ updateState(.running)
1431
+ print("[BleManager] ✅ BLE Manager ready - calling bleStatusChanged(true)")
1432
+ emitDiagnostic("info", "About to call protocol.bleStatusChanged(true)")
1433
+ try? self.protocolInstance.bleStatusChanged(isAvailable: true)
1434
+ print("[BleManager] ✅ Called protocol.bleStatusChanged(true)")
1435
+ emitDiagnostic("info", "Successfully called protocol.bleStatusChanged(true)")
1436
+ }
1437
+
1438
+ case .poweredOff:
1439
+ print("[BleManager] ⚠️ Bluetooth is powered off")
1440
+ centralReady = false
1441
+ stopScanning(reason: "central_powered_off")
1442
+ updateState(.unavailable)
1443
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1444
+ emitDiagnostic("warning", "Bluetooth is powered off", context: ["state": stateString])
1445
+
1446
+ case .unauthorized:
1447
+ print("[BleManager] ⚠️ Bluetooth is unauthorized")
1448
+ centralReady = false
1449
+ stopScanning(reason: "central_unauthorized")
1450
+ updateState(.unavailable)
1451
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1452
+ emitDiagnostic("error", "Bluetooth is unauthorized", context: ["state": stateString, "authorization": authStatus])
1453
+
1454
+ case .unsupported:
1455
+ print("[BleManager] ⚠️ Bluetooth is not supported on this device")
1456
+ centralReady = false
1457
+ stopScanning(reason: "central_unsupported")
1458
+ updateState(.unavailable)
1459
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1460
+ emitDiagnostic("error", "Bluetooth is not supported", context: ["state": stateString])
1461
+
1462
+ case .resetting:
1463
+ print("[BleManager] 🔄 Bluetooth is resetting...")
1464
+ emitDiagnostic("info", "Bluetooth is resetting", context: ["state": stateString])
1465
+
1466
+ case .unknown:
1467
+ print("[BleManager] ❓ Bluetooth state is unknown")
1468
+ emitDiagnostic("info", "Bluetooth state is unknown", context: ["state": stateString])
1469
+
1470
+ @unknown default:
1471
+ print("[BleManager] ❓ Bluetooth state is unknown (default)")
1472
+ emitDiagnostic("warning", "Unknown Bluetooth state", context: ["state": stateString])
1473
+ }
1474
+ }
1475
+
1476
+ public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi RSSI: NSNumber) {
1477
+ let rssiValue = RSSI.int16Value
1478
+ markDiscoveryEvent()
1479
+
1480
+ let now = Date()
1481
+
1482
+ // Adaptive scanning: track discoveries for density estimation
1483
+ recordDiscoveryForDensity(now: now)
1484
+
1485
+ // Adaptive scanning: early RSSI filtering in dense networks
1486
+ if shouldFilterByRssi(rssiValue) {
1487
+ if logThrottler.shouldLog(key: "adaptive_rssi_filter", interval: 10) {
1488
+ print("[BleManager] Adaptive: filtering weak signal (\(rssiValue)dBm) in dense network (\(estimatedVisiblePeerCount) peers)")
1489
+ }
1490
+ return
1491
+ }
1492
+
1493
+ // Adaptive scanning: probabilistic filtering in very dense networks
1494
+ if shouldProbabilisticallySkip(peripheral.identifier) {
1495
+ return // Silently skip to reduce log spam in dense networks
1496
+ }
1497
+
1498
+ discoveredPeripherals[peripheral.identifier] = peripheral
1499
+ peripheralRSSI[peripheral.identifier] = rssiValue
1500
+
1501
+ let isConnectable: Bool
1502
+ if #available(iOS 13.0, *) {
1503
+ isConnectable = (advertisementData[CBAdvertisementDataIsConnectable] as? NSNumber)?.boolValue ?? true
1504
+ } else {
1505
+ isConnectable = true
1506
+ }
1507
+ if discoveryLogTimestamps[peripheral.identifier] == nil || (now.timeIntervalSince(discoveryLogTimestamps[peripheral.identifier]!) > 30) {
1508
+ discoveryLogTimestamps[peripheral.identifier] = now
1509
+ print("[BleManager] Discovered peripheral: \(peripheral.identifier) RSSI=\(rssiValue) (density: \(estimatedVisiblePeerCount))")
1510
+ emitDiagnostic("info", "Discovered BLE peripheral", context: [
1511
+ "identifier": peripheral.identifier.uuidString,
1512
+ "rssi": rssiValue,
1513
+ "connectable": isConnectable,
1514
+ "visiblePeers": estimatedVisiblePeerCount
1515
+ ])
1516
+ }
1517
+
1518
+ let serviceData = (advertisementData[CBAdvertisementDataServiceDataKey] as? [CBUUID: Data])?[SERVICE_UUID]
1519
+ let meshMetadata = MeshAdvertisementData.decode(serviceData)
1520
+ if let metadata = meshMetadata {
1521
+ lastSeenMeshAdvertisements[peripheral.identifier] = MeshObservation(advertisement: metadata, rssi: Int(rssiValue), timestamp: now)
1522
+ }
1523
+ pruneMeshObservations(now: now)
1524
+ meshController.observeAdvertisement(meshMetadata, rssi: Int(rssiValue))
1525
+
1526
+ let decision = meshController.shouldInitiateOutbound(metadata: meshMetadata, rssi: Int(rssiValue))
1527
+ guard decision.intent != .rejected else {
1528
+ if logThrottler.shouldLog(key: "mesh_skip_\(peripheral.identifier.uuidString)", interval: 15) {
1529
+ print("[BleManager] Skipping \(peripheral.identifier) due to \(decision.reason)")
1530
+ }
1531
+ return
1532
+ }
1533
+
1534
+ // Adaptive scanning: rate limit connection attempts
1535
+ if shouldThrottleConnection(to: peripheral.identifier, now: now) {
1536
+ if logThrottler.shouldLog(key: "adaptive_throttle_\(peripheral.identifier.uuidString)", interval: 30) {
1537
+ print("[BleManager] Adaptive: throttling connection to \(peripheral.identifier)")
1538
+ }
1539
+ return
1540
+ }
1541
+
1542
+ let desiredRole: MeshController.MeshRole = (decision.intent == .interCluster) ? .bridge : .member
1543
+
1544
+ if !meshController.connectionBudgetAvailable(), let evictPeerId = decision.evictPeerId {
1545
+ self.evictPeer(evictPeerId, reason: decision.reason)
1546
+ }
1547
+
1548
+ guard meshController.connectionBudgetAvailable() else {
1549
+ if logThrottler.shouldLog(key: "mesh_budget_exhausted_ios", interval: 5) {
1550
+ print("[BleManager] Connection budget exhausted, skipping \(peripheral.identifier)")
1551
+ }
1552
+ return
1553
+ }
1554
+
1555
+ // Record the connection attempt for rate limiting
1556
+ recordConnectionAttempt(to: peripheral.identifier, now: now)
1557
+
1558
+ guard currentConnectionCount() < MAX_CONNECTIONS_PER_DEVICE else {
1559
+ if logThrottler.shouldLog(key: "mesh_conn_cap_ios", interval: 10) {
1560
+ print("[BleManager] Max connections reached, skipping \(peripheral.identifier)")
1561
+ }
1562
+ return
1563
+ }
1564
+
1565
+ connections.setPendingRole(desiredRole, for: peripheral.identifier)
1566
+ attemptConnection(to: peripheral, reason: "discovery", rssi: rssiValue, desiredRole: desiredRole)
1567
+ maybeHandleRebalance(reason: "scan")
1568
+ }
1569
+
1570
+ public func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
1571
+ print("[BleManager] Connected to peripheral: \(peripheral.identifier)")
1572
+ emitDiagnostic("info", "Connected to BLE peripheral", context: ["identifier": peripheral.identifier.uuidString])
1573
+
1574
+ connections.registerPeripheral(peripheral)
1575
+ connectionAttemptTimestamps.removeValue(forKey: peripheral.identifier)
1576
+
1577
+ // Discover services
1578
+ peripheral.discoverServices([SERVICE_UUID])
1579
+ }
1580
+
1581
+ public func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
1582
+ print("[BleManager] Failed to connect to peripheral: \(error?.localizedDescription ?? "unknown")")
1583
+ emitDiagnostic("error", "Failed to connect to BLE peripheral", context: [
1584
+ "identifier": peripheral.identifier.uuidString,
1585
+ "error": error?.localizedDescription ?? "unknown"
1586
+ ])
1587
+ connectionAttemptTimestamps.removeValue(forKey: peripheral.identifier)
1588
+ _ = connections.consumePendingRole(for: peripheral.identifier)
1589
+ DispatchQueue.main.asyncAfter(deadline: .now() + MIN_RECONNECT_INTERVAL) { [weak self] in
1590
+ self?.attemptConnection(to: peripheral, reason: "retry_fail")
1591
+ }
1592
+ }
1593
+
1594
+ public func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
1595
+ let wasConnected = connections.connectedPeripheral(for: peripheral.identifier) != nil
1596
+ _ = connections.removePeripheral(peripheral.identifier)
1597
+ if logThrottler.shouldLog(key: "disconnect_\(peripheral.identifier.uuidString)", interval: 10) {
1598
+ let errorDescription = (error as NSError?)?.localizedDescription ?? "none"
1599
+ print("[BleManager] Disconnected from \(peripheral.identifier) error=\(errorDescription)")
1600
+ emitDiagnostic("warning", "Peripheral disconnected", context: [
1601
+ "identifier": peripheral.identifier.uuidString,
1602
+ "error": errorDescription,
1603
+ "willAttemptReconnect": wasConnected
1604
+ ])
1605
+ }
1606
+
1607
+ // Don't remove from discovered list - keep trying to reconnect
1608
+ // Only remove RSSI if it's a permanent error
1609
+ if let error = error as? CBError, error.code == .connectionTimeout {
1610
+ peripheralRSSI.removeValue(forKey: peripheral.identifier)
1611
+ }
1612
+
1613
+ // Try to reconnect if we were connected and it's not a permanent error
1614
+ if wasConnected {
1615
+ if let error = error as? CBError {
1616
+ // Don't reconnect on permanent errors
1617
+ var isPermanentError = error.code == .connectionTimeout
1618
+ if #available(iOS 13.4, *) {
1619
+ isPermanentError = isPermanentError || error.code == .peerRemovedPairingInformation
1620
+ }
1621
+ if isPermanentError {
1622
+ // Permanent error - notify peer lost
1623
+ if let deviceId = connections.peripheralDeviceId(for: peripheral.identifier) {
1624
+ // Clean up routes through this neighbor
1625
+ protocolInstance.removeNeighborRoutes(neighborId: deviceId)
1626
+ try? self.protocolInstance.blePeerLost(peerId: deviceId)
1627
+ meshController.registerDisconnection(peerId: deviceId)
1628
+ refreshSelfMetrics()
1629
+ connections.removeConnectionRole(for: deviceId)
1630
+ connections.removePeripheralDeviceId(for: peripheral.identifier)
1631
+ connections.removeCentralDeviceId(for: peripheral.identifier)
1632
+ DispatchQueue.main.async {
1633
+ self.refreshAdvertising(reason: "disconnect")
1634
+ }
1635
+ self.maybeHandleRebalance(reason: "disconnect")
1636
+ }
1637
+ return
1638
+ }
1639
+ }
1640
+
1641
+ // Attempt reconnection after a short delay
1642
+ DispatchQueue.main.asyncAfter(deadline: .now() + MIN_RECONNECT_INTERVAL) { [weak self] in
1643
+ guard let self = self else { return }
1644
+ if self.state == .running && self.discoveredPeripherals[peripheral.identifier] != nil {
1645
+ self.attemptConnection(to: peripheral, reason: "retry_disconnect")
1646
+ }
1647
+ }
1648
+ } else {
1649
+ // Wasn't connected, just notify if we had device ID
1650
+ if let deviceId = connections.peripheralDeviceId(for: peripheral.identifier) {
1651
+ // Clean up routes through this neighbor
1652
+ protocolInstance.removeNeighborRoutes(neighborId: deviceId)
1653
+ try? self.protocolInstance.blePeerLost(peerId: deviceId)
1654
+ meshController.registerDisconnection(peerId: deviceId)
1655
+ refreshSelfMetrics()
1656
+ connections.removeConnectionRole(for: deviceId)
1657
+ DispatchQueue.main.async {
1658
+ self.refreshAdvertising(reason: "disconnect")
1659
+ }
1660
+ maybeHandleRebalance(reason: "disconnect")
1661
+ }
1662
+ }
1663
+ _ = connections.consumePendingRole(for: peripheral.identifier)
1664
+ }
1665
+ }
1666
+
1667
+ // MARK: - CBPeripheralDelegate
1668
+
1669
+ extension BleManager: CBPeripheralDelegate {
1670
+
1671
+ public func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
1672
+ if let error = error {
1673
+ print("[BleManager] Error discovering services: \(error)")
1674
+ emitDiagnostic("error", "Error discovering services", context: ["error": error.localizedDescription])
1675
+ return
1676
+ }
1677
+
1678
+ guard let services = peripheral.services else { return }
1679
+
1680
+ for service in services where service.uuid == SERVICE_UUID {
1681
+ peripheral.discoverCharacteristics([MESSAGE_CHAR_UUID, DEVICE_ID_CHAR_UUID], for: service)
1682
+ }
1683
+ emitDiagnostic("info", "Discovered BLE services", context: ["peripheral": peripheral.identifier.uuidString])
1684
+ }
1685
+
1686
+ public func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
1687
+ if let error = error {
1688
+ print("[BleManager] Error discovering characteristics: \(error)")
1689
+ emitDiagnostic("error", "Error discovering characteristics", context: ["error": error.localizedDescription])
1690
+ return
1691
+ }
1692
+
1693
+ guard let characteristics = service.characteristics else { return }
1694
+
1695
+ for characteristic in characteristics {
1696
+ if characteristic.uuid == MESSAGE_CHAR_UUID {
1697
+ // Enable notifications for message characteristic
1698
+ peripheral.setNotifyValue(true, for: characteristic)
1699
+ print("[BleManager] Enabled notifications for message characteristic")
1700
+ emitDiagnostic("info", "Enabled notifications for message characteristic", context: ["peripheral": peripheral.identifier.uuidString])
1701
+ } else if characteristic.uuid == DEVICE_ID_CHAR_UUID {
1702
+ // Read device ID
1703
+ peripheral.readValue(for: characteristic)
1704
+ }
1705
+ }
1706
+ }
1707
+
1708
+ public func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
1709
+ if let error = error {
1710
+ print("[BleManager] Error reading characteristic: \(error)")
1711
+ emitDiagnostic("error", "Error reading characteristic", context: ["error": error.localizedDescription])
1712
+ return
1713
+ }
1714
+
1715
+ guard let data = characteristic.value else { return }
1716
+
1717
+ if characteristic.uuid == DEVICE_ID_CHAR_UUID {
1718
+ // Store device ID
1719
+ if let deviceId = String(data: data, encoding: .utf8) {
1720
+ connections.setPeripheralDeviceId(deviceId, for: peripheral.identifier)
1721
+ connections.setCentralDeviceId(deviceId, for: peripheral.identifier)
1722
+ connectionAttemptTimestamps.removeValue(forKey: peripheral.identifier)
1723
+
1724
+ let rssi = peripheralRSSI[peripheral.identifier] ?? -60
1725
+ try? self.protocolInstance.blePeerDiscovered(peerId: deviceId, rssi: rssi)
1726
+ let role = connections.consumePendingRole(for: peripheral.identifier) ?? connections.connectionRole(for: deviceId) ?? .member
1727
+ meshController.registerConnection(peerId: deviceId, role: role)
1728
+ connections.setConnectionRole(role, for: deviceId)
1729
+ meshController.markPeerActive(deviceId)
1730
+ meshController.markPeerActive(self.deviceId)
1731
+ refreshSelfMetrics()
1732
+ meshController.updatePeerMetrics(peerId: deviceId, metrics: MeshController.PeerMetrics(rssi: Int(rssi)))
1733
+ DispatchQueue.main.async {
1734
+ self.refreshAdvertising(reason: "membership_change")
1735
+ }
1736
+
1737
+ // Process any pending fragments for this device
1738
+ processPendingFragments(for: peripheral.identifier, deviceId: deviceId)
1739
+ }
1740
+ } else if characteristic.uuid == MESSAGE_CHAR_UUID {
1741
+ // Handle received message fragment
1742
+ handleReceivedData(data, senderId: connections.peripheralDeviceId(for: peripheral.identifier), centralId: peripheral.identifier)
1743
+ }
1744
+ }
1745
+
1746
+ public func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
1747
+ if let error = error {
1748
+ print("[BleManager] Error writing characteristic: \(error)")
1749
+ emitDiagnostic("error", "Error writing characteristic", context: ["error": error.localizedDescription])
1750
+ }
1751
+ }
1752
+ }
1753
+
1754
+ // MARK: - CBPeripheralManagerDelegate
1755
+
1756
+ extension BleManager: CBPeripheralManagerDelegate {
1757
+
1758
+ public func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
1759
+ let stateString: String
1760
+ var authStatus = "unknown"
1761
+
1762
+ if #available(iOS 13.1, *) {
1763
+ let authorization = CBPeripheralManager.authorization
1764
+ switch authorization {
1765
+ case .notDetermined:
1766
+ authStatus = "notDetermined"
1767
+ case .restricted:
1768
+ authStatus = "restricted"
1769
+ case .denied:
1770
+ authStatus = "denied"
1771
+ case .allowedAlways:
1772
+ authStatus = "allowedAlways"
1773
+ @unknown default:
1774
+ authStatus = "unknown"
1775
+ }
1776
+ }
1777
+
1778
+ switch peripheral.state {
1779
+ case .unknown:
1780
+ stateString = "unknown"
1781
+ case .resetting:
1782
+ stateString = "resetting"
1783
+ case .unsupported:
1784
+ stateString = "unsupported"
1785
+ case .unauthorized:
1786
+ stateString = "unauthorized"
1787
+ case .poweredOff:
1788
+ stateString = "poweredOff"
1789
+ case .poweredOn:
1790
+ stateString = "poweredOn"
1791
+ @unknown default:
1792
+ stateString = "unknown"
1793
+ }
1794
+
1795
+ print("[BleManager] Peripheral state: \(stateString), authorization: \(authStatus)")
1796
+ emitDiagnostic("info", "Peripheral manager state changed", context: [
1797
+ "state": stateString,
1798
+ "stateRaw": peripheral.state.rawValue,
1799
+ "authorization": authStatus
1800
+ ])
1801
+
1802
+ switch peripheral.state {
1803
+ case .poweredOn:
1804
+ // Check authorization status on iOS 13.1+
1805
+ if #available(iOS 13.1, *) {
1806
+ let authorization = CBPeripheralManager.authorization
1807
+ switch authorization {
1808
+ case .denied, .restricted:
1809
+ print("[BleManager] ⚠️ Bluetooth peripheral permission denied or restricted")
1810
+ emitDiagnostic("error", "Bluetooth peripheral permission denied", context: ["authorization": authStatus])
1811
+ peripheralReady = false
1812
+ updateState(.unavailable)
1813
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1814
+ return
1815
+
1816
+ case .notDetermined:
1817
+ print("[BleManager] 🔔 Bluetooth peripheral permission not determined yet, waiting for user response...")
1818
+ emitDiagnostic("info", "Waiting for Bluetooth peripheral permission", context: ["authorization": authStatus])
1819
+ // Permission prompt should be showing now
1820
+ // Will get called again when user responds
1821
+ return
1822
+
1823
+ case .allowedAlways:
1824
+ print("[BleManager] ✅ Bluetooth peripheral permission granted")
1825
+ emitDiagnostic("info", "Bluetooth peripheral permission granted", context: ["authorization": authStatus])
1826
+
1827
+ @unknown default:
1828
+ print("[BleManager] ⚠️ Unknown peripheral authorization state")
1829
+ emitDiagnostic("warning", "Unknown peripheral authorization state", context: ["authorization": authStatus])
1830
+ }
1831
+ }
1832
+
1833
+ peripheralReady = true
1834
+ startAdvertising(reason: "state_powered_on")
1835
+ emitDiagnostic("info", "Peripheral manager powered on and ready")
1836
+
1837
+ // If both central and peripheral are ready, mark as running
1838
+ if centralReady && state == .starting {
1839
+ updateState(.running)
1840
+ print("[BleManager] ✅ BLE Manager ready (peripheral) - calling bleStatusChanged(true)")
1841
+ emitDiagnostic("info", "About to call protocol.bleStatusChanged(true) from peripheral")
1842
+ try? self.protocolInstance.bleStatusChanged(isAvailable: true)
1843
+ print("[BleManager] ✅ Called protocol.bleStatusChanged(true) from peripheral")
1844
+ emitDiagnostic("info", "Successfully called protocol.bleStatusChanged(true) from peripheral")
1845
+ }
1846
+
1847
+ case .poweredOff:
1848
+ print("[BleManager] ⚠️ Bluetooth peripheral is powered off")
1849
+ peripheralReady = false
1850
+ stopAdvertising()
1851
+ updateState(.unavailable)
1852
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1853
+ emitDiagnostic("warning", "Bluetooth peripheral is powered off", context: ["state": stateString])
1854
+
1855
+ case .unauthorized:
1856
+ print("[BleManager] ⚠️ Bluetooth peripheral is unauthorized")
1857
+ peripheralReady = false
1858
+ stopAdvertising()
1859
+ updateState(.unavailable)
1860
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1861
+ emitDiagnostic("error", "Bluetooth peripheral is unauthorized", context: ["state": stateString, "authorization": authStatus])
1862
+
1863
+ case .unsupported:
1864
+ print("[BleManager] ⚠️ Bluetooth peripheral is not supported on this device")
1865
+ peripheralReady = false
1866
+ stopAdvertising()
1867
+ updateState(.unavailable)
1868
+ try? self.protocolInstance.bleStatusChanged(isAvailable: false)
1869
+ emitDiagnostic("error", "Bluetooth peripheral is not supported", context: ["state": stateString])
1870
+
1871
+ case .resetting:
1872
+ print("[BleManager] 🔄 Bluetooth peripheral is resetting...")
1873
+ emitDiagnostic("info", "Bluetooth peripheral is resetting", context: ["state": stateString])
1874
+
1875
+ case .unknown:
1876
+ print("[BleManager] ❓ Bluetooth peripheral state is unknown")
1877
+ emitDiagnostic("info", "Bluetooth peripheral state is unknown", context: ["state": stateString])
1878
+
1879
+ @unknown default:
1880
+ print("[BleManager] ❓ Bluetooth peripheral state is unknown (default)")
1881
+ emitDiagnostic("warning", "Unknown Bluetooth peripheral state", context: ["state": stateString])
1882
+ }
1883
+ }
1884
+
1885
+ public func peripheralManagerDidStartAdvertising(_ peripheral: CBPeripheralManager, error: Error?) {
1886
+ if let error = error {
1887
+ print("[BleManager] Error starting advertising: \(error)")
1888
+ emitDiagnostic("error", "Error starting BLE advertising", context: ["error": error.localizedDescription])
1889
+ } else {
1890
+ print("[BleManager] Advertising started successfully")
1891
+ emitDiagnostic("info", "BLE advertising started successfully")
1892
+ }
1893
+ }
1894
+
1895
+ public func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveWrite requests: [CBATTRequest]) {
1896
+ for request in requests {
1897
+ print("[BleManager] 📨 GATT WRITE REQUEST from \(request.central.identifier), char: \(request.characteristic.uuid), size: \(request.value?.count ?? 0)")
1898
+ emitDiagnostic("info", "GATT write request received", context: [
1899
+ "centralId": request.central.identifier.uuidString,
1900
+ "characteristicUuid": request.characteristic.uuid.uuidString,
1901
+ "dataSize": request.value?.count ?? 0
1902
+ ])
1903
+
1904
+ if request.characteristic.uuid == MESSAGE_CHAR_UUID, let value = request.value {
1905
+ print("[BleManager] 📥 MESSAGE CHARACTERISTIC WRITE from \(request.central.identifier), processing...")
1906
+ let senderId = connections.centralDeviceId(for: request.central.identifier) ?? connections.peripheralDeviceId(for: request.central.identifier)
1907
+ if senderId == nil && logThrottler.shouldLog(key: "missing_sender_\(request.central.identifier.uuidString)", interval: 10) {
1908
+ print("[BleManager] Received write without known sender for central \(request.central.identifier)")
1909
+ emitDiagnostic("warning", "Received BLE fragment without sender ID", context: [
1910
+ "central": request.central.identifier.uuidString,
1911
+ "length": value.count
1912
+ ])
1913
+ }
1914
+ if senderId == nil {
1915
+ ensureDeviceId(for: request.central.identifier)
1916
+ }
1917
+ handleReceivedData(value, senderId: senderId, centralId: request.central.identifier)
1918
+ } else {
1919
+ print("[BleManager] ❌ Unknown characteristic write: \(request.characteristic.uuid)")
1920
+ }
1921
+
1922
+ // Respond to write request
1923
+ peripheral.respond(to: request, withResult: .success)
1924
+ print("[BleManager] ✅ Sent success response to \(request.central.identifier)")
1925
+ }
1926
+ }
1927
+
1928
+ public func peripheralManager(_ peripheral: CBPeripheralManager, central: CBCentral, didSubscribeTo characteristic: CBCharacteristic) {
1929
+ // When central subscribes, try to get device ID if we don't have it
1930
+ let observation = lastSeenMeshAdvertisements[central.identifier]
1931
+ let decision = meshController.shouldAcceptInboundConnection(
1932
+ remoteId: connections.peripheralDeviceId(for: central.identifier),
1933
+ metadata: observation?.advertisement,
1934
+ rssi: observation?.rssi
1935
+ )
1936
+ if let evictPeerId = decision.evictPeerId {
1937
+ self.evictPeer(evictPeerId, reason: "inbound_swap")
1938
+ }
1939
+ guard decision.intent != .rejected else {
1940
+ emitDiagnostic("info", "Rejecting inbound subscription", context: [
1941
+ "central": central.identifier.uuidString,
1942
+ "reason": decision.reason
1943
+ ])
1944
+ return
1945
+ }
1946
+ guard meshController.connectionBudgetAvailable() || decision.evictPeerId != nil else {
1947
+ emitDiagnostic("info", "Inbound rejected due to budget", context: [
1948
+ "central": central.identifier.uuidString
1949
+ ])
1950
+ return
1951
+ }
1952
+ guard currentConnectionCount() < MAX_CONNECTIONS_PER_DEVICE else {
1953
+ emitDiagnostic("info", "Inbound rejected due to device connection cap", context: [
1954
+ "central": central.identifier.uuidString
1955
+ ])
1956
+ return
1957
+ }
1958
+
1959
+ if connections.centralDeviceId(for: central.identifier) == nil && connections.peripheralDeviceId(for: central.identifier) == nil {
1960
+ ensureDeviceId(for: central.identifier)
1961
+ } else if let deviceId = connections.peripheralDeviceId(for: central.identifier) {
1962
+ connections.setCentralDeviceId(deviceId, for: central.identifier)
1963
+ // Process any pending fragments
1964
+ processPendingFragments(for: central.identifier, deviceId: deviceId)
1965
+ }
1966
+ maybeHandleRebalance(reason: "inbound")
1967
+ }
1968
+
1969
+ public func peripheralManager(_ peripheral: CBPeripheralManager, central: CBCentral, didUnsubscribeFrom characteristic: CBCharacteristic) {
1970
+ print("[BleManager] Central unsubscribed from characteristic: \(characteristic.uuid)")
1971
+ emitDiagnostic("info", "Central unsubscribed", context: [
1972
+ "central": central.identifier.uuidString,
1973
+ "characteristic": characteristic.uuid.uuidString
1974
+ ])
1975
+ connections.removeCentralDeviceId(for: central.identifier)
1976
+ }
1977
+ }
1978
+
1979
+ extension BleManager: @unchecked Sendable {}
1980
+
1981
+ // MARK: - Bundle Extension for Display Name
1982
+ extension Bundle {
1983
+ var displayName: String? {
1984
+ return object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
1985
+ ?? object(forInfoDictionaryKey: "CFBundleName") as? String
1986
+ }
1987
+ }
1988
+