diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 89c58145..fd94bf46 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -22,7 +22,7 @@ jobs:
- name: -- Step 3 -- Use Expo action
uses: expo/expo-github-action@v6
with:
- expo-version: 4.x
+ expo-version: 5.x
username: ${{ secrets.EXPO_USERNAME }}
token: ${{ secrets.EXPO_TOKEN }}
- name: -- Step 4 -- Install node dependencies
@@ -33,7 +33,7 @@ jobs:
run: bundle install
- name: -- Step 7 -- Run fastlane
env:
- DEVELOPER_DIR: /Applications/Xcode_13.0.app/Contents/Developer
+ DEVELOPER_DIR: /Applications/Xcode_13.2.1.app/Contents/Developer
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
diff --git a/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java b/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java
index 192c86e3..0669a1bf 100644
--- a/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java
+++ b/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java
@@ -15,8 +15,6 @@ import com.facebook.soloader.SoLoader;
import expo.modules.ApplicationLifecycleDispatcher;
import expo.modules.ReactNativeHostWrapper;
-import expo.modules.permissions.PermissionsPackage;
-import expo.modules.filesystem.FileSystemPackage;
import expo.modules.updates.UpdatesController;
import java.lang.reflect.InvocationTargetException;
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 94c07c32..1f97fdc0 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -1,4 +1,6 @@
tooot
+ contain
+ false
\ No newline at end of file
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
index 89799d8f..919c0f52 100644
--- a/fastlane/Fastfile
+++ b/fastlane/Fastfile
@@ -1,4 +1,4 @@
-fastlane_version "2.180.1"
+fastlane_version "2.199.0"
skip_docs
ensure_env_vars(
@@ -108,6 +108,11 @@ private_lane :build_ios do
silent: true
)
upload_to_app_store( ipa: IPA_FILE, app_version: VERSION )
+ download_dsyms
+ sentry_upload_dsym(
+ org_slug: ENV["SENTRY_ORGANIZATION"],
+ project_slug: ENV["SENTRY_PROJECT"],
+ )
else
if !is_ci
match( type: "adhoc", readonly: true )
diff --git a/fastlane/metadata/en-US/release_notes.txt b/fastlane/metadata/en-US/release_notes.txt
index e2db6daf..0b2382d8 100644
--- a/fastlane/metadata/en-US/release_notes.txt
+++ b/fastlane/metadata/en-US/release_notes.txt
@@ -1,3 +1 @@
-Support iOS version starting from 12
-Optimize performance (hopefully)
-Using new push and translation service
+Optimize performance and fix bugs
diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt
index 00c2b56d..77ecbe00 100644
--- a/fastlane/metadata/zh-Hans/release_notes.txt
+++ b/fastlane/metadata/zh-Hans/release_notes.txt
@@ -1,3 +1 @@
-iOS支持最低版本12
-(但愿)性能有改进
-使用新的推送和翻译服务
\ No newline at end of file
+性能有改进及修复错误
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 0bebfe30..b81a2968 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1,10 +1,11 @@
PODS:
- boost (1.76.0)
- DoubleConversion (1.1.6)
- - EXApplication (4.0.0):
+ - EXApplication (4.0.1):
- ExpoModulesCore
- - EXAV (10.1.3):
+ - EXAV (10.2.0):
- ExpoModulesCore
+ - ReactCommon/turbomodule/core
- EXConstants (13.0.0):
- ExpoModulesCore
- EXCrypto (10.1.1):
@@ -13,7 +14,7 @@ PODS:
- ExpoModulesCore
- EXErrorRecovery (3.0.4):
- ExpoModulesCore
- - EXFileSystem (13.1.0):
+ - EXFileSystem (13.2.0):
- ExpoModulesCore
- EXFirebaseAnalytics (6.0.0):
- EXFirebaseCore
@@ -37,20 +38,15 @@ PODS:
- ExpoModulesCore
- EXManifests (0.2.2):
- EXJSONUtils
- - EXMediaLibrary (14.0.0):
- - ExpoModulesCore
- - React-Core
- EXNotifications (0.14.0):
- ExpoModulesCore
- - EXPermissions (13.1.0):
- - ExpoModulesCore
- - Expo (44.0.0):
+ - Expo (44.0.4):
- ExpoModulesCore
- ExpoHaptics (11.1.0):
- ExpoModulesCore
- ExpoLocalization (12.0.0):
- ExpoModulesCore
- - ExpoModulesCore (0.6.3):
+ - ExpoModulesCore (0.6.4):
- React-Core
- ReactCommon/turbomodule/core
- EXRandom (12.1.1):
@@ -59,20 +55,20 @@ PODS:
- ExpoModulesCore
- EXSecureStore (11.1.0):
- ExpoModulesCore
- - EXSplashScreen (0.14.0):
+ - EXSplashScreen (0.14.1):
- ExpoModulesCore
- React-Core
- EXStoreReview (5.1.0):
- ExpoModulesCore
- EXStructuredHeaders (2.1.0)
- - EXUpdates (0.11.1):
+ - EXUpdates (0.11.3):
- EXManifests
- ExpoModulesCore
- EXStructuredHeaders
- EXUpdatesInterface
- React-Core
- EXUpdatesInterface (0.5.0)
- - EXVideoThumbnails (6.1.0):
+ - EXVideoThumbnails (6.2.0):
- ExpoModulesCore
- EXWebBrowser (10.1.0):
- ExpoModulesCore
@@ -377,11 +373,11 @@ PODS:
- glog
- react-native-blur (0.8.0):
- React
- - react-native-blurhash (1.1.7):
+ - react-native-blurhash (1.1.8):
- React-Core
- react-native-cameraroll (4.1.2):
- React-Core
- - react-native-netinfo (7.1.6):
+ - react-native-netinfo (7.1.7):
- React-Core
- react-native-pager-view (5.4.9):
- React-Core
@@ -530,9 +526,7 @@ DEPENDENCIES:
- EXJSONUtils (from `../node_modules/expo-json-utils/ios`)
- EXKeepAwake (from `../node_modules/expo-keep-awake/ios`)
- EXManifests (from `../node_modules/expo-manifests/ios`)
- - EXMediaLibrary (from `../node_modules/expo-media-library/ios`)
- EXNotifications (from `../node_modules/expo-notifications/ios`)
- - EXPermissions (from `../node_modules/expo-permissions/ios`)
- Expo (from `../node_modules/expo/ios`)
- ExpoHaptics (from `../node_modules/expo-haptics/ios`)
- ExpoLocalization (from `../node_modules/expo-localization/ios`)
@@ -653,12 +647,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-keep-awake/ios"
EXManifests:
:path: "../node_modules/expo-manifests/ios"
- EXMediaLibrary:
- :path: "../node_modules/expo-media-library/ios"
EXNotifications:
:path: "../node_modules/expo-notifications/ios"
- EXPermissions:
- :path: "../node_modules/expo-permissions/ios"
Expo:
:path: "../node_modules/expo/ios"
ExpoHaptics:
@@ -779,13 +769,13 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
- EXApplication: 0e15240e4d125b62f1cae48759ffbbd32b9286a6
- EXAV: 8adf9a1c0161144d77e96149a1e5a5f9358be290
+ EXApplication: bdc8dc27713235565da1029a34385229f31b8e08
+ EXAV: e501565d5aff495b7b5e9249d489f5ef94db03b2
EXConstants: 5d18484e38e8eacef7695a82214b6ac90133dedf
EXCrypto: e3c0853c2a9ef885928f6227b967b9598132f727
EXDevice: 7de98d8f97088fad9c01e9a68abad07e501208b2
EXErrorRecovery: deea88a01d38f8b1c1181b4e1d179b0ba0e4bb5b
- EXFileSystem: 7d1309ba6b38b82ef7fc9e80174de3f9184ac8b4
+ EXFileSystem: 7bcd3c1428698150d5c8ca140c8183f2ee204048
EXFirebaseAnalytics: 27dbc5cb83c244d8404b2927676299f3e172470e
EXFirebaseCore: 16f39b0ea94ce985a8f2e16cc796bf79bdcfa297
EXFont: 1fb13af43dc517c01c0ff21a6e32f9f9bf2ea602
@@ -795,22 +785,20 @@ SPEC CHECKSUMS:
EXJSONUtils: f515cf71710855d7ba5bfc6752af3b9a6f6aad01
EXKeepAwake: b571c2ad8323b2fced6e907766e2549f75119471
EXManifests: 50e42e01335df4e54109dee7be5a91bfd37347db
- EXMediaLibrary: 6acf919299bccc64a59e6e89a3b792276e309302
EXNotifications: d5b454a2363c8743aa9b2888cc0df70a1d9ee816
- EXPermissions: f4c65fa770489cbf16ea17c3013a670671525014
- Expo: 6ca1d5ca8c8264a7131a608afcd01561f79f1e6e
+ Expo: d9b8b5e49c200471fc473a652a84fe30dee73027
ExpoHaptics: c62a5fc7bba0184d0165d559fc2b0fc46168ef40
ExpoLocalization: 83582a967db52987a8479490b056d5eb9fd70552
- ExpoModulesCore: d04e519b3e8e21523b195bb21a40144e30f1e163
+ ExpoModulesCore: 64abda7af7cf659d2fa092934e29c6f4ea7e849f
EXRandom: 06978dcf45075f3c9e17ae5e726b887316ee9877
EXScreenCapture: 0146fdf6ca4c3402a1cf62b2ddb739a840e08c94
EXSecureStore: fa0fdde1c81ceee2a3cb0519e649feae42767969
- EXSplashScreen: 845290df0d2730fdedc59ee6ce3b959d8079a350
+ EXSplashScreen: 7872675b95bb07c25f922b3d3dfae70c76fb5a00
EXStoreReview: 6143555fc912a4a194300992cd297c3e5b521a8a
EXStructuredHeaders: 2ce79a3770bd3795bade1aab215ada70deae8bbc
- EXUpdates: a0ef6520618deee31b45d9a09406682c9e724789
+ EXUpdates: 98b9e647ce7a0e9d5ab67135bf42188c750a99eb
EXUpdatesInterface: f459b515151bd73fff7a35366eace34a6c6a0d3f
- EXVideoThumbnails: 6c08e978ed7a5542c5dca04a1757363fd29cb2a1
+ EXVideoThumbnails: 847d648d6f4bc0c1afad05caa56a487dc543445e
EXWebBrowser: 37388663fa51cbfc883de2244931a5182d948e5f
FBLazyVector: e5569e42a1c79ca00521846c223173a57aca1fe1
FBReactNativeSpec: fe08c1cd7e2e205718d77ad14b34957cce949b58
@@ -843,9 +831,9 @@ SPEC CHECKSUMS:
React-jsinspector: d0374f7509d407d2264168b6d0fad0b54e300b85
React-logger: 933f80c97c633ee8965d609876848148e3fef438
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
- react-native-blurhash: e19ea985921732379d17951fd46c99ebe71e9cf3
+ react-native-blurhash: b7ed7b7de81ae1f9ce52d694f43c5b5cddddcae1
react-native-cameraroll: 2957f2bce63ae896a848fbe0d5352c1bd4d20866
- react-native-netinfo: 6f98a7fb549351a8f7f9a6d1ca80afc23e320045
+ react-native-netinfo: 27f287f2d191693f3b9d01a4273137fcf91c3b5d
react-native-pager-view: 3ee7d4c7697fb3ef788346e834a60cca97ed8540
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
react-native-segmented-control: 65df6cd0619b780b3843d574a72d4c7cec396097
diff --git a/ios/tooot/AppDelegate.m b/ios/tooot/AppDelegate.m
index 60b18be4..8a102a58 100644
--- a/ios/tooot/AppDelegate.m
+++ b/ios/tooot/AppDelegate.m
@@ -53,7 +53,7 @@ static void InitializeFlipper(UIApplication *application) {
RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@"main" initialProperties:nil];
- rootView.backgroundColor = [UIColor whiteColor];
+ rootView.backgroundColor = [UIColor colorNamed:@"SplashScreenBackgroundColor"];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [self.reactDelegate createRootViewController];
rootViewController.view = rootView;
diff --git a/ios/tooot/Images.xcassets/Contents.json b/ios/tooot/Images.xcassets/Contents.json
index 2d92bd53..73c00596 100644
--- a/ios/tooot/Images.xcassets/Contents.json
+++ b/ios/tooot/Images.xcassets/Contents.json
@@ -1,6 +1,6 @@
{
"info" : {
- "version" : 1,
- "author" : "xcode"
+ "author" : "xcode",
+ "version" : 1
}
}
diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json
deleted file mode 100644
index 847f2599..00000000
--- a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "images": [
- {
- "idiom": "universal",
- "filename": "background.png",
- "scale": "1x"
- },
- {
- "appearances": [
- {
- "appearance": "luminosity",
- "value": "dark"
- }
- ],
- "idiom": "universal",
- "filename": "dark_background.png",
- "scale": "1x"
- },
- {
- "idiom": "universal",
- "scale": "2x"
- },
- {
- "appearances": [
- {
- "appearance": "luminosity",
- "value": "dark"
- }
- ],
- "idiom": "universal",
- "scale": "2x"
- },
- {
- "idiom": "universal",
- "scale": "3x"
- },
- {
- "appearances": [
- {
- "appearance": "luminosity",
- "value": "dark"
- }
- ],
- "idiom": "universal",
- "scale": "3x"
- }
- ],
- "info": {
- "version": 1,
- "author": "xcode"
- }
-}
\ No newline at end of file
diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/background.png b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/background.png
deleted file mode 100644
index 8f04420e..00000000
Binary files a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/background.png and /dev/null differ
diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/dark_background.png b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/dark_background.png
deleted file mode 100644
index eadb301d..00000000
Binary files a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/dark_background.png and /dev/null differ
diff --git a/ios/tooot/Images.xcassets/SplashScreenBackgroundColor.colorset/Contents.json b/ios/tooot/Images.xcassets/SplashScreenBackgroundColor.colorset/Contents.json
new file mode 100644
index 00000000..dd794a6f
--- /dev/null
+++ b/ios/tooot/Images.xcassets/SplashScreenBackgroundColor.colorset/Contents.json
@@ -0,0 +1,38 @@
+{
+ "colors" : [
+ {
+ "color" : {
+ "color-space" : "srgb",
+ "components" : {
+ "alpha" : "1.000",
+ "blue" : "250",
+ "green" : "250",
+ "red" : "250"
+ }
+ },
+ "idiom" : "universal"
+ },
+ {
+ "appearances" : [
+ {
+ "appearance" : "luminosity",
+ "value" : "dark"
+ }
+ ],
+ "color" : {
+ "color-space" : "srgb",
+ "components" : {
+ "alpha" : "1.000",
+ "blue" : "18",
+ "green" : "18",
+ "red" : "18"
+ }
+ },
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/ios/tooot/SplashScreen.storyboard b/ios/tooot/SplashScreen.storyboard
index 24eec3df..23a5deaa 100644
--- a/ios/tooot/SplashScreen.storyboard
+++ b/ios/tooot/SplashScreen.storyboard
@@ -1,91 +1,41 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 184bcccd..8008888b 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,10 @@
{
"name": "tooot",
"versions": {
- "native": "211218",
+ "native": "220102",
"major": 3,
- "minor": 0,
- "patch": 1,
+ "minor": 1,
+ "patch": 0,
"expo": "44.0.0"
},
"description": "tooot app for Mastodon",
@@ -29,7 +29,7 @@
"@react-native-async-storage/async-storage": "1.15.14",
"@react-native-community/blur": "3.6.0",
"@react-native-community/cameraroll": "4.1.2",
- "@react-native-community/netinfo": "7.1.6",
+ "@react-native-community/netinfo": "7.1.7",
"@react-native-community/segmented-control": "2.2.2",
"@react-navigation/bottom-tabs": "6.0.9",
"@react-navigation/native": "6.0.6",
@@ -39,41 +39,38 @@
"@sentry/react-native": "3.2.3",
"@sharcoux/slider": "5.6.1",
"axios": "0.24.0",
- "expo": "44.0.0",
+ "expo": "44.0.4",
"expo-auth-session": "3.5.0",
- "expo-av": "10.1.3",
+ "expo-av": "10.2.0",
"expo-constants": "^13.0.0",
"expo-crypto": "10.1.1",
"expo-device": "4.1.0",
- "expo-file-system": "13.1.0",
+ "expo-file-system": "13.2.0",
"expo-firebase-analytics": "6.0.0",
"expo-haptics": "11.1.0",
"expo-image-manipulator": "10.2.0",
"expo-image-picker": "12.0.1",
"expo-linking": "3.0.0",
"expo-localization": "12.0.0",
- "expo-media-library": "^14.0.0",
"expo-notifications": "0.14.0",
- "expo-permissions": "13.1.0",
"expo-random": "12.1.1",
"expo-screen-capture": "4.1.0",
"expo-secure-store": "11.1.0",
- "expo-splash-screen": "0.14.0",
- "expo-status-bar": "1.2.0",
+ "expo-splash-screen": "0.14.1",
"expo-store-review": "5.1.0",
- "expo-updates": "0.11.1",
- "expo-video-thumbnails": "6.1.0",
+ "expo-updates": "0.11.3",
+ "expo-video-thumbnails": "6.2.0",
"expo-web-browser": "10.1.0",
"i18next": "20.6.1",
"li": "1.3.0",
"lodash": "4.17.21",
"react": "17.0.2",
"react-dom": "17.0.2",
- "react-i18next": "11.15.1",
+ "react-i18next": "11.15.3",
"react-native": "0.66.4",
"react-native-animated-spinkit": "1.5.2",
"react-native-base64": "^0.2.1",
- "react-native-blurhash": "1.1.7",
+ "react-native-blurhash": "1.1.8",
"react-native-fast-image": "8.5.11",
"react-native-feather": "1.1.2",
"react-native-flash-message": "0.2.0",
@@ -86,7 +83,7 @@
"react-native-svg": "12.1.1",
"react-native-swipe-list-view": "3.2.9",
"react-native-tab-view": "3.1.1",
- "react-query": "3.34.5",
+ "react-query": "3.34.7",
"react-redux": "7.2.6",
"react-timeago": "6.2.1",
"redux-persist": "6.0.0",
@@ -96,16 +93,16 @@
"valid-url": "1.0.9"
},
"devDependencies": {
- "@babel/core": "7.16.5",
- "@babel/plugin-proposal-optional-chaining": "7.16.5",
- "@babel/preset-typescript": "7.16.5",
- "@expo/config": "6.0.14",
+ "@babel/core": "7.16.7",
+ "@babel/plugin-proposal-optional-chaining": "7.16.7",
+ "@babel/preset-typescript": "7.16.7",
+ "@expo/config": "6.0.15",
"@types/lodash": "4.14.178",
- "@types/react": "17.0.37",
+ "@types/react": "17.0.38",
"@types/react-dom": "17.0.11",
- "@types/react-native": "0.66.9",
+ "@types/react-native": "0.66.11",
"@types/react-native-base64": "^0.2.0",
- "@types/react-redux": "7.1.20",
+ "@types/react-redux": "7.1.21",
"@types/react-timeago": "4.1.3",
"@types/valid-url": "1.0.3",
"@welldone-software/why-did-you-render": "6.2.3",
diff --git a/patches/expo-av+10.2.0.patch b/patches/expo-av+10.2.0.patch
new file mode 100644
index 00000000..4fea8f38
--- /dev/null
+++ b/patches/expo-av+10.2.0.patch
@@ -0,0 +1,81 @@
+diff --git a/node_modules/expo-av/ios/EXAV/EXAV.m b/node_modules/expo-av/ios/EXAV/EXAV.m
+index d255852..edf934f 100644
+--- a/node_modules/expo-av/ios/EXAV/EXAV.m
++++ b/node_modules/expo-av/ios/EXAV/EXAV.m
+@@ -63,7 +63,7 @@ NSString *const EXDidUpdateMetadataEventName = @"didUpdateMetadata";
+ @property (nonatomic, assign) BOOL audioRecorderShouldBeginRecording;
+ @property (nonatomic, assign) int audioRecorderDurationMillis;
+
+-@property (nonatomic, weak) EXModuleRegistry *moduleRegistry;
++@property (nonatomic, weak) EXModuleRegistry *expoModuleRegistry;
+ @property (nonatomic, weak) id permissionsManager;
+
+ @end
+@@ -106,7 +106,7 @@ EX_EXPORT_MODULE(ExponentAV);
+
+ - (void)installJsiBindings
+ {
+- id jsContextProvider = [_moduleRegistry getModuleImplementingProtocol:@protocol(EXJavaScriptContextProvider)];
++ id jsContextProvider = [_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXJavaScriptContextProvider)];
+ void *jsRuntimePtr = [jsContextProvider javaScriptRuntimePointer];
+ if (jsRuntimePtr) {
+ [self installJSIBindingsForRuntime:jsRuntimePtr withSoundDictionary:_soundDictionary];
+@@ -131,16 +131,16 @@ EX_EXPORT_MODULE(ExponentAV);
+
+ #pragma mark - Expo experience lifecycle
+
+-- (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry
++- (void)setModuleRegistry:(EXModuleRegistry *)expoModuleRegistry
+ {
+- [[_moduleRegistry getModuleImplementingProtocol:@protocol(EXAppLifecycleService)] unregisterAppLifecycleListener:self];
+- _moduleRegistry = moduleRegistry;
+- _kernelAudioSessionManagerDelegate = [_moduleRegistry getSingletonModuleForName:@"AudioSessionManager"];
++ [[_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXAppLifecycleService)] unregisterAppLifecycleListener:self];
++ _expoModuleRegistry = expoModuleRegistry;
++ _kernelAudioSessionManagerDelegate = [_expoModuleRegistry getSingletonModuleForName:@"AudioSessionManager"];
+ if (!_isBackgrounded) {
+ [_kernelAudioSessionManagerDelegate moduleDidForeground:self];
+ }
+- [[_moduleRegistry getModuleImplementingProtocol:@protocol(EXAppLifecycleService)] registerAppLifecycleListener:self];
+- _permissionsManager = [_moduleRegistry getModuleImplementingProtocol:@protocol(EXPermissionsInterface)];
++ [[_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXAppLifecycleService)] registerAppLifecycleListener:self];
++ _permissionsManager = [_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXPermissionsInterface)];
+ [EXPermissionsMethodsDelegate registerRequesters:@[[EXAudioRecordingPermissionRequester new]] withPermissionsManager:_permissionsManager];
+ }
+
+@@ -478,7 +478,7 @@ withEXVideoViewForTag:(nonnull NSNumber *)reactTag
+ {
+ // TODO check that the bridge is still valid after the dispatch
+ // TODO check if the queues are ok
+- [[_moduleRegistry getModuleImplementingProtocol:@protocol(EXUIManager)] executeUIBlock:^(id view) {
++ [[_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXUIManager)] executeUIBlock:^(id view) {
+ if ([view isKindOfClass:[EXVideoView class]]) {
+ block(view);
+ } else {
+@@ -566,7 +566,7 @@ withEXVideoViewForTag:(nonnull NSNumber *)reactTag
+ return EXErrorWithMessage(@"Recorder is already prepared.");
+ }
+
+- id fileSystem = [_moduleRegistry getModuleImplementingProtocol:@protocol(EXFileSystemInterface)];
++ id fileSystem = [_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXFileSystemInterface)];
+
+ if (!fileSystem) {
+ return EXErrorWithMessage(@"No FileSystem module.");
+@@ -726,7 +726,7 @@ EX_EXPORT_METHOD_AS(loadForSound,
+
+ - (void)sendEventWithName:(NSString *)eventName body:(NSDictionary *)body
+ {
+- [[_moduleRegistry getModuleImplementingProtocol:@protocol(EXEventEmitterService)] sendEventWithName:eventName body:body];
++ [[_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXEventEmitterService)] sendEventWithName:eventName body:body];
+ }
+
+ EX_EXPORT_METHOD_AS(unloadForSound,
+@@ -984,7 +984,7 @@ EX_EXPORT_METHOD_AS(unloadAudioRecorder,
+ - (void)dealloc
+ {
+ [_kernelAudioSessionManagerDelegate moduleWillDeallocate:self];
+- [[_moduleRegistry getModuleImplementingProtocol:@protocol(EXAppLifecycleService)] unregisterAppLifecycleListener:self];
++ [[_expoModuleRegistry getModuleImplementingProtocol:@protocol(EXAppLifecycleService)] unregisterAppLifecycleListener:self];
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+
+ // This will clear all @properties and deactivate the audio session:
diff --git a/patches/expo-file-system+13.1.0.patch b/patches/expo-file-system+13.2.0.patch
similarity index 100%
rename from patches/expo-file-system+13.1.0.patch
rename to patches/expo-file-system+13.2.0.patch
diff --git a/patches/expo-updates+0.11.1.patch b/patches/expo-updates+0.11.3.patch
similarity index 92%
rename from patches/expo-updates+0.11.1.patch
rename to patches/expo-updates+0.11.3.patch
index 520b894e..4d37ad15 100644
--- a/patches/expo-updates+0.11.1.patch
+++ b/patches/expo-updates+0.11.3.patch
@@ -1,14 +1,14 @@
-diff --git a/node_modules/expo-updates/android/build/.transforms/c7a06c0c29259aee89d461cf4fd92a8e.bin b/node_modules/expo-updates/android/build/.transforms/c7a06c0c29259aee89d461cf4fd92a8e.bin
+diff --git a/node_modules/expo-updates/android/build/.transforms/b529fafe6ba15242dd12db714c449fe5.bin b/node_modules/expo-updates/android/build/.transforms/b529fafe6ba15242dd12db714c449fe5.bin
new file mode 100644
index 0000000..0d259dd
--- /dev/null
-+++ b/node_modules/expo-updates/android/build/.transforms/c7a06c0c29259aee89d461cf4fd92a8e.bin
++++ b/node_modules/expo-updates/android/build/.transforms/b529fafe6ba15242dd12db714c449fe5.bin
@@ -0,0 +1 @@
+o/classes
-diff --git a/node_modules/expo-updates/android/build/.transforms/c7a06c0c29259aee89d461cf4fd92a8e/classes/classes.dex b/node_modules/expo-updates/android/build/.transforms/c7a06c0c29259aee89d461cf4fd92a8e/classes/classes.dex
+diff --git a/node_modules/expo-updates/android/build/.transforms/b529fafe6ba15242dd12db714c449fe5/classes/classes.dex b/node_modules/expo-updates/android/build/.transforms/b529fafe6ba15242dd12db714c449fe5/classes/classes.dex
new file mode 100644
-index 0000000..a34b527
-Binary files /dev/null and b/node_modules/expo-updates/android/build/.transforms/c7a06c0c29259aee89d461cf4fd92a8e/classes/classes.dex differ
+index 0000000..4fcb287
+Binary files /dev/null and b/node_modules/expo-updates/android/build/.transforms/b529fafe6ba15242dd12db714c449fe5/classes/classes.dex differ
diff --git a/node_modules/expo-updates/android/build/generated/source/buildConfig/debug/expo/modules/updates/BuildConfig.java b/node_modules/expo-updates/android/build/generated/source/buildConfig/debug/expo/modules/updates/BuildConfig.java
new file mode 100644
index 0000000..ef48007
@@ -27,10 +27,10 @@ index 0000000..ef48007
+}
diff --git a/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/UpdatesDatabase_Impl.java b/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/UpdatesDatabase_Impl.java
new file mode 100644
-index 0000000..a96de18
+index 0000000..b8a8e96
--- /dev/null
+++ b/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/UpdatesDatabase_Impl.java
-@@ -0,0 +1,280 @@
+@@ -0,0 +1,281 @@
+package expo.modules.updates.db;
+
+import androidx.room.DatabaseConfiguration;
@@ -74,7 +74,7 @@ index 0000000..a96de18
+
+ @Override
+ protected SupportSQLiteOpenHelper createOpenHelper(DatabaseConfiguration configuration) {
-+ final SupportSQLiteOpenHelper.Callback _openCallback = new RoomOpenHelper(configuration, new RoomOpenHelper.Delegate(8) {
++ final SupportSQLiteOpenHelper.Callback _openCallback = new RoomOpenHelper(configuration, new RoomOpenHelper.Delegate(9) {
+ @Override
+ public void createAllTables(SupportSQLiteDatabase _db) {
+ _db.execSQL("CREATE TABLE IF NOT EXISTS `updates` (`id` BLOB NOT NULL, `commit_time` INTEGER NOT NULL, `runtime_version` TEXT NOT NULL, `scope_key` TEXT NOT NULL, `launch_asset_id` INTEGER, `manifest` TEXT, `status` INTEGER NOT NULL, `keep` INTEGER NOT NULL, `last_accessed` INTEGER NOT NULL, `successful_launch_count` INTEGER NOT NULL DEFAULT 0, `failed_launch_count` INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(`id`), FOREIGN KEY(`launch_asset_id`) REFERENCES `assets`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )");
@@ -82,12 +82,12 @@ index 0000000..a96de18
+ _db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_updates_scope_key_commit_time` ON `updates` (`scope_key`, `commit_time`)");
+ _db.execSQL("CREATE TABLE IF NOT EXISTS `updates_assets` (`update_id` BLOB NOT NULL, `asset_id` INTEGER NOT NULL, PRIMARY KEY(`update_id`, `asset_id`), FOREIGN KEY(`update_id`) REFERENCES `updates`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`asset_id`) REFERENCES `assets`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )");
+ _db.execSQL("CREATE INDEX IF NOT EXISTS `index_updates_assets_asset_id` ON `updates_assets` (`asset_id`)");
-+ _db.execSQL("CREATE TABLE IF NOT EXISTS `assets` (`key` TEXT, `type` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT, `headers` TEXT, `metadata` TEXT, `download_time` INTEGER, `relative_path` TEXT, `hash` BLOB, `hash_type` INTEGER NOT NULL, `marked_for_deletion` INTEGER NOT NULL)");
++ _db.execSQL("CREATE TABLE IF NOT EXISTS `assets` (`key` TEXT, `type` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT, `headers` TEXT, `extra_request_headers` TEXT, `metadata` TEXT, `download_time` INTEGER, `relative_path` TEXT, `hash` BLOB, `hash_type` INTEGER NOT NULL, `marked_for_deletion` INTEGER NOT NULL)");
+ _db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_assets_key` ON `assets` (`key`)");
+ _db.execSQL("CREATE TABLE IF NOT EXISTS `json_data` (`key` TEXT NOT NULL, `value` TEXT NOT NULL, `last_updated` INTEGER NOT NULL, `scope_key` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)");
+ _db.execSQL("CREATE INDEX IF NOT EXISTS `index_json_data_scope_key` ON `json_data` (`scope_key`)");
+ _db.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)");
-+ _db.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '536a4a7d1c2bd53759471da31a5db6f2')");
++ _db.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'edd919e496bef87b4e64f6cd6481762c')");
+ }
+
+ @Override
@@ -174,12 +174,13 @@ index 0000000..a96de18
+ + " Expected:\n" + _infoUpdatesAssets + "\n"
+ + " Found:\n" + _existingUpdatesAssets);
+ }
-+ final HashMap _columnsAssets = new HashMap(11);
++ final HashMap _columnsAssets = new HashMap(12);
+ _columnsAssets.put("key", new TableInfo.Column("key", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("type", new TableInfo.Column("type", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("id", new TableInfo.Column("id", "INTEGER", true, 1, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("url", new TableInfo.Column("url", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("headers", new TableInfo.Column("headers", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
++ _columnsAssets.put("extra_request_headers", new TableInfo.Column("extra_request_headers", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("metadata", new TableInfo.Column("metadata", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("download_time", new TableInfo.Column("download_time", "INTEGER", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
+ _columnsAssets.put("relative_path", new TableInfo.Column("relative_path", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
@@ -214,7 +215,7 @@ index 0000000..a96de18
+ }
+ return new RoomOpenHelper.ValidationResult(true, null);
+ }
-+ }, "536a4a7d1c2bd53759471da31a5db6f2", "e57f0391a819ac86eb61f2b53092c592");
++ }, "edd919e496bef87b4e64f6cd6481762c", "e266df480de2c6ba738f4881037e4eb3");
+ final SupportSQLiteOpenHelper.Configuration _sqliteConfig = SupportSQLiteOpenHelper.Configuration.builder(configuration.context)
+ .name(configuration.name)
+ .callback(_openCallback)
@@ -313,10 +314,10 @@ index 0000000..a96de18
+}
diff --git a/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/dao/AssetDao_Impl.java b/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/dao/AssetDao_Impl.java
new file mode 100644
-index 0000000..5db7faf
+index 0000000..6dc612b
--- /dev/null
+++ b/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/dao/AssetDao_Impl.java
-@@ -0,0 +1,834 @@
+@@ -0,0 +1,888 @@
+package expo.modules.updates.db.dao;
+
+import android.database.Cursor;
@@ -373,7 +374,7 @@ index 0000000..5db7faf
+ this.__insertionAdapterOfAssetEntity = new EntityInsertionAdapter(__db) {
+ @Override
+ public String createQuery() {
-+ return "INSERT OR REPLACE INTO `assets` (`key`,`type`,`id`,`url`,`headers`,`metadata`,`download_time`,`relative_path`,`hash`,`hash_type`,`marked_for_deletion`) VALUES (?,?,nullif(?, 0),?,?,?,?,?,?,?,?)";
++ return "INSERT OR REPLACE INTO `assets` (`key`,`type`,`id`,`url`,`headers`,`extra_request_headers`,`metadata`,`download_time`,`relative_path`,`hash`,`hash_type`,`marked_for_deletion`) VALUES (?,?,nullif(?, 0),?,?,?,?,?,?,?,?,?)";
+ }
+
+ @Override
@@ -404,35 +405,42 @@ index 0000000..5db7faf
+ stmt.bindString(5, _tmp_1);
+ }
+ final String _tmp_2;
-+ _tmp_2 = __converters.jsonObjectToString(value.getMetadata());
++ _tmp_2 = __converters.jsonObjectToString(value.getExtraRequestHeaders());
+ if (_tmp_2 == null) {
+ stmt.bindNull(6);
+ } else {
+ stmt.bindString(6, _tmp_2);
+ }
-+ final Long _tmp_3;
-+ _tmp_3 = __converters.dateToLong(value.getDownloadTime());
++ final String _tmp_3;
++ _tmp_3 = __converters.jsonObjectToString(value.getMetadata());
+ if (_tmp_3 == null) {
+ stmt.bindNull(7);
+ } else {
-+ stmt.bindLong(7, _tmp_3);
++ stmt.bindString(7, _tmp_3);
+ }
-+ if (value.getRelativePath() == null) {
++ final Long _tmp_4;
++ _tmp_4 = __converters.dateToLong(value.getDownloadTime());
++ if (_tmp_4 == null) {
+ stmt.bindNull(8);
+ } else {
-+ stmt.bindString(8, value.getRelativePath());
++ stmt.bindLong(8, _tmp_4);
+ }
-+ if (value.getHash() == null) {
++ if (value.getRelativePath() == null) {
+ stmt.bindNull(9);
+ } else {
-+ stmt.bindBlob(9, value.getHash());
++ stmt.bindString(9, value.getRelativePath());
++ }
++ if (value.getHash() == null) {
++ stmt.bindNull(10);
++ } else {
++ stmt.bindBlob(10, value.getHash());
+ }
-+ final int _tmp_4;
-+ _tmp_4 = __converters.hashTypeToInt(value.getHashType());
-+ stmt.bindLong(10, _tmp_4);
+ final int _tmp_5;
-+ _tmp_5 = value.getMarkedForDeletion() ? 1 : 0;
++ _tmp_5 = __converters.hashTypeToInt(value.getHashType());
+ stmt.bindLong(11, _tmp_5);
++ final int _tmp_6;
++ _tmp_6 = value.getMarkedForDeletion() ? 1 : 0;
++ stmt.bindLong(12, _tmp_6);
+ }
+ };
+ this.__insertionAdapterOfUpdateAssetEntity = new EntityInsertionAdapter(__db) {
@@ -456,7 +464,7 @@ index 0000000..5db7faf
+ this.__updateAdapterOfAssetEntity = new EntityDeletionOrUpdateAdapter(__db) {
+ @Override
+ public String createQuery() {
-+ return "UPDATE OR ABORT `assets` SET `key` = ?,`type` = ?,`id` = ?,`url` = ?,`headers` = ?,`metadata` = ?,`download_time` = ?,`relative_path` = ?,`hash` = ?,`hash_type` = ?,`marked_for_deletion` = ? WHERE `id` = ?";
++ return "UPDATE OR ABORT `assets` SET `key` = ?,`type` = ?,`id` = ?,`url` = ?,`headers` = ?,`extra_request_headers` = ?,`metadata` = ?,`download_time` = ?,`relative_path` = ?,`hash` = ?,`hash_type` = ?,`marked_for_deletion` = ? WHERE `id` = ?";
+ }
+
+ @Override
@@ -487,36 +495,43 @@ index 0000000..5db7faf
+ stmt.bindString(5, _tmp_1);
+ }
+ final String _tmp_2;
-+ _tmp_2 = __converters.jsonObjectToString(value.getMetadata());
++ _tmp_2 = __converters.jsonObjectToString(value.getExtraRequestHeaders());
+ if (_tmp_2 == null) {
+ stmt.bindNull(6);
+ } else {
+ stmt.bindString(6, _tmp_2);
+ }
-+ final Long _tmp_3;
-+ _tmp_3 = __converters.dateToLong(value.getDownloadTime());
++ final String _tmp_3;
++ _tmp_3 = __converters.jsonObjectToString(value.getMetadata());
+ if (_tmp_3 == null) {
+ stmt.bindNull(7);
+ } else {
-+ stmt.bindLong(7, _tmp_3);
++ stmt.bindString(7, _tmp_3);
+ }
-+ if (value.getRelativePath() == null) {
++ final Long _tmp_4;
++ _tmp_4 = __converters.dateToLong(value.getDownloadTime());
++ if (_tmp_4 == null) {
+ stmt.bindNull(8);
+ } else {
-+ stmt.bindString(8, value.getRelativePath());
++ stmt.bindLong(8, _tmp_4);
+ }
-+ if (value.getHash() == null) {
++ if (value.getRelativePath() == null) {
+ stmt.bindNull(9);
+ } else {
-+ stmt.bindBlob(9, value.getHash());
++ stmt.bindString(9, value.getRelativePath());
++ }
++ if (value.getHash() == null) {
++ stmt.bindNull(10);
++ } else {
++ stmt.bindBlob(10, value.getHash());
+ }
-+ final int _tmp_4;
-+ _tmp_4 = __converters.hashTypeToInt(value.getHashType());
-+ stmt.bindLong(10, _tmp_4);
+ final int _tmp_5;
-+ _tmp_5 = value.getMarkedForDeletion() ? 1 : 0;
++ _tmp_5 = __converters.hashTypeToInt(value.getHashType());
+ stmt.bindLong(11, _tmp_5);
-+ stmt.bindLong(12, value.getId());
++ final int _tmp_6;
++ _tmp_6 = value.getMarkedForDeletion() ? 1 : 0;
++ stmt.bindLong(12, _tmp_6);
++ stmt.bindLong(13, value.getId());
+ }
+ };
+ this.__preparedStmtOf_setUpdateLaunchAsset = new SharedSQLiteStatement(__db) {
@@ -721,6 +736,7 @@ index 0000000..5db7faf
+ final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
+ final int _cursorIndexOfUrl = CursorUtil.getColumnIndexOrThrow(_cursor, "url");
+ final int _cursorIndexOfHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "headers");
++ final int _cursorIndexOfExtraRequestHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "extra_request_headers");
+ final int _cursorIndexOfMetadata = CursorUtil.getColumnIndexOrThrow(_cursor, "metadata");
+ final int _cursorIndexOfDownloadTime = CursorUtil.getColumnIndexOrThrow(_cursor, "download_time");
+ final int _cursorIndexOfRelativePath = CursorUtil.getColumnIndexOrThrow(_cursor, "relative_path");
@@ -764,23 +780,32 @@ index 0000000..5db7faf
+ }
+ _tmpHeaders = __converters.stringToJsonObject(_tmp_1);
+ _item.setHeaders(_tmpHeaders);
-+ final JSONObject _tmpMetadata;
++ final JSONObject _tmpExtraRequestHeaders;
+ final String _tmp_2;
-+ if (_cursor.isNull(_cursorIndexOfMetadata)) {
++ if (_cursor.isNull(_cursorIndexOfExtraRequestHeaders)) {
+ _tmp_2 = null;
+ } else {
-+ _tmp_2 = _cursor.getString(_cursorIndexOfMetadata);
++ _tmp_2 = _cursor.getString(_cursorIndexOfExtraRequestHeaders);
+ }
-+ _tmpMetadata = __converters.stringToJsonObject(_tmp_2);
-+ _item.setMetadata(_tmpMetadata);
-+ final Date _tmpDownloadTime;
-+ final Long _tmp_3;
-+ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmpExtraRequestHeaders = __converters.stringToJsonObject(_tmp_2);
++ _item.setExtraRequestHeaders(_tmpExtraRequestHeaders);
++ final JSONObject _tmpMetadata;
++ final String _tmp_3;
++ if (_cursor.isNull(_cursorIndexOfMetadata)) {
+ _tmp_3 = null;
+ } else {
-+ _tmp_3 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ _tmp_3 = _cursor.getString(_cursorIndexOfMetadata);
+ }
-+ _tmpDownloadTime = __converters.longToDate(_tmp_3);
++ _tmpMetadata = __converters.stringToJsonObject(_tmp_3);
++ _item.setMetadata(_tmpMetadata);
++ final Date _tmpDownloadTime;
++ final Long _tmp_4;
++ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmp_4 = null;
++ } else {
++ _tmp_4 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ }
++ _tmpDownloadTime = __converters.longToDate(_tmp_4);
+ _item.setDownloadTime(_tmpDownloadTime);
+ final String _tmpRelativePath;
+ if (_cursor.isNull(_cursorIndexOfRelativePath)) {
@@ -797,14 +822,14 @@ index 0000000..5db7faf
+ }
+ _item.setHash(_tmpHash);
+ final HashType _tmpHashType;
-+ final int _tmp_4;
-+ _tmp_4 = _cursor.getInt(_cursorIndexOfHashType);
-+ _tmpHashType = __converters.intToHashType(_tmp_4);
++ final int _tmp_5;
++ _tmp_5 = _cursor.getInt(_cursorIndexOfHashType);
++ _tmpHashType = __converters.intToHashType(_tmp_5);
+ _item.setHashType(_tmpHashType);
+ final boolean _tmpMarkedForDeletion;
-+ final int _tmp_5;
-+ _tmp_5 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
-+ _tmpMarkedForDeletion = _tmp_5 != 0;
++ final int _tmp_6;
++ _tmp_6 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
++ _tmpMarkedForDeletion = _tmp_6 != 0;
+ _item.setMarkedForDeletion(_tmpMarkedForDeletion);
+ _result.add(_item);
+ }
@@ -833,6 +858,7 @@ index 0000000..5db7faf
+ final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
+ final int _cursorIndexOfUrl = CursorUtil.getColumnIndexOrThrow(_cursor, "url");
+ final int _cursorIndexOfHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "headers");
++ final int _cursorIndexOfExtraRequestHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "extra_request_headers");
+ final int _cursorIndexOfMetadata = CursorUtil.getColumnIndexOrThrow(_cursor, "metadata");
+ final int _cursorIndexOfDownloadTime = CursorUtil.getColumnIndexOrThrow(_cursor, "download_time");
+ final int _cursorIndexOfRelativePath = CursorUtil.getColumnIndexOrThrow(_cursor, "relative_path");
@@ -876,23 +902,32 @@ index 0000000..5db7faf
+ }
+ _tmpHeaders = __converters.stringToJsonObject(_tmp_1);
+ _item.setHeaders(_tmpHeaders);
-+ final JSONObject _tmpMetadata;
++ final JSONObject _tmpExtraRequestHeaders;
+ final String _tmp_2;
-+ if (_cursor.isNull(_cursorIndexOfMetadata)) {
++ if (_cursor.isNull(_cursorIndexOfExtraRequestHeaders)) {
+ _tmp_2 = null;
+ } else {
-+ _tmp_2 = _cursor.getString(_cursorIndexOfMetadata);
++ _tmp_2 = _cursor.getString(_cursorIndexOfExtraRequestHeaders);
+ }
-+ _tmpMetadata = __converters.stringToJsonObject(_tmp_2);
-+ _item.setMetadata(_tmpMetadata);
-+ final Date _tmpDownloadTime;
-+ final Long _tmp_3;
-+ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmpExtraRequestHeaders = __converters.stringToJsonObject(_tmp_2);
++ _item.setExtraRequestHeaders(_tmpExtraRequestHeaders);
++ final JSONObject _tmpMetadata;
++ final String _tmp_3;
++ if (_cursor.isNull(_cursorIndexOfMetadata)) {
+ _tmp_3 = null;
+ } else {
-+ _tmp_3 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ _tmp_3 = _cursor.getString(_cursorIndexOfMetadata);
+ }
-+ _tmpDownloadTime = __converters.longToDate(_tmp_3);
++ _tmpMetadata = __converters.stringToJsonObject(_tmp_3);
++ _item.setMetadata(_tmpMetadata);
++ final Date _tmpDownloadTime;
++ final Long _tmp_4;
++ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmp_4 = null;
++ } else {
++ _tmp_4 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ }
++ _tmpDownloadTime = __converters.longToDate(_tmp_4);
+ _item.setDownloadTime(_tmpDownloadTime);
+ final String _tmpRelativePath;
+ if (_cursor.isNull(_cursorIndexOfRelativePath)) {
@@ -909,14 +944,14 @@ index 0000000..5db7faf
+ }
+ _item.setHash(_tmpHash);
+ final HashType _tmpHashType;
-+ final int _tmp_4;
-+ _tmp_4 = _cursor.getInt(_cursorIndexOfHashType);
-+ _tmpHashType = __converters.intToHashType(_tmp_4);
++ final int _tmp_5;
++ _tmp_5 = _cursor.getInt(_cursorIndexOfHashType);
++ _tmpHashType = __converters.intToHashType(_tmp_5);
+ _item.setHashType(_tmpHashType);
+ final boolean _tmpMarkedForDeletion;
-+ final int _tmp_5;
-+ _tmp_5 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
-+ _tmpMarkedForDeletion = _tmp_5 != 0;
++ final int _tmp_6;
++ _tmp_6 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
++ _tmpMarkedForDeletion = _tmp_6 != 0;
+ _item.setMarkedForDeletion(_tmpMarkedForDeletion);
+ _result.add(_item);
+ }
@@ -939,6 +974,7 @@ index 0000000..5db7faf
+ final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
+ final int _cursorIndexOfUrl = CursorUtil.getColumnIndexOrThrow(_cursor, "url");
+ final int _cursorIndexOfHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "headers");
++ final int _cursorIndexOfExtraRequestHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "extra_request_headers");
+ final int _cursorIndexOfMetadata = CursorUtil.getColumnIndexOrThrow(_cursor, "metadata");
+ final int _cursorIndexOfDownloadTime = CursorUtil.getColumnIndexOrThrow(_cursor, "download_time");
+ final int _cursorIndexOfRelativePath = CursorUtil.getColumnIndexOrThrow(_cursor, "relative_path");
@@ -982,23 +1018,32 @@ index 0000000..5db7faf
+ }
+ _tmpHeaders = __converters.stringToJsonObject(_tmp_1);
+ _item.setHeaders(_tmpHeaders);
-+ final JSONObject _tmpMetadata;
++ final JSONObject _tmpExtraRequestHeaders;
+ final String _tmp_2;
-+ if (_cursor.isNull(_cursorIndexOfMetadata)) {
++ if (_cursor.isNull(_cursorIndexOfExtraRequestHeaders)) {
+ _tmp_2 = null;
+ } else {
-+ _tmp_2 = _cursor.getString(_cursorIndexOfMetadata);
++ _tmp_2 = _cursor.getString(_cursorIndexOfExtraRequestHeaders);
+ }
-+ _tmpMetadata = __converters.stringToJsonObject(_tmp_2);
-+ _item.setMetadata(_tmpMetadata);
-+ final Date _tmpDownloadTime;
-+ final Long _tmp_3;
-+ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmpExtraRequestHeaders = __converters.stringToJsonObject(_tmp_2);
++ _item.setExtraRequestHeaders(_tmpExtraRequestHeaders);
++ final JSONObject _tmpMetadata;
++ final String _tmp_3;
++ if (_cursor.isNull(_cursorIndexOfMetadata)) {
+ _tmp_3 = null;
+ } else {
-+ _tmp_3 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ _tmp_3 = _cursor.getString(_cursorIndexOfMetadata);
+ }
-+ _tmpDownloadTime = __converters.longToDate(_tmp_3);
++ _tmpMetadata = __converters.stringToJsonObject(_tmp_3);
++ _item.setMetadata(_tmpMetadata);
++ final Date _tmpDownloadTime;
++ final Long _tmp_4;
++ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmp_4 = null;
++ } else {
++ _tmp_4 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ }
++ _tmpDownloadTime = __converters.longToDate(_tmp_4);
+ _item.setDownloadTime(_tmpDownloadTime);
+ final String _tmpRelativePath;
+ if (_cursor.isNull(_cursorIndexOfRelativePath)) {
@@ -1015,14 +1060,14 @@ index 0000000..5db7faf
+ }
+ _item.setHash(_tmpHash);
+ final HashType _tmpHashType;
-+ final int _tmp_4;
-+ _tmp_4 = _cursor.getInt(_cursorIndexOfHashType);
-+ _tmpHashType = __converters.intToHashType(_tmp_4);
++ final int _tmp_5;
++ _tmp_5 = _cursor.getInt(_cursorIndexOfHashType);
++ _tmpHashType = __converters.intToHashType(_tmp_5);
+ _item.setHashType(_tmpHashType);
+ final boolean _tmpMarkedForDeletion;
-+ final int _tmp_5;
-+ _tmp_5 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
-+ _tmpMarkedForDeletion = _tmp_5 != 0;
++ final int _tmp_6;
++ _tmp_6 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
++ _tmpMarkedForDeletion = _tmp_6 != 0;
+ _item.setMarkedForDeletion(_tmpMarkedForDeletion);
+ _result.add(_item);
+ }
@@ -1053,6 +1098,7 @@ index 0000000..5db7faf
+ final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
+ final int _cursorIndexOfUrl = CursorUtil.getColumnIndexOrThrow(_cursor, "url");
+ final int _cursorIndexOfHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "headers");
++ final int _cursorIndexOfExtraRequestHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "extra_request_headers");
+ final int _cursorIndexOfMetadata = CursorUtil.getColumnIndexOrThrow(_cursor, "metadata");
+ final int _cursorIndexOfDownloadTime = CursorUtil.getColumnIndexOrThrow(_cursor, "download_time");
+ final int _cursorIndexOfRelativePath = CursorUtil.getColumnIndexOrThrow(_cursor, "relative_path");
@@ -1096,23 +1142,32 @@ index 0000000..5db7faf
+ }
+ _tmpHeaders = __converters.stringToJsonObject(_tmp_2);
+ _item.setHeaders(_tmpHeaders);
-+ final JSONObject _tmpMetadata;
++ final JSONObject _tmpExtraRequestHeaders;
+ final String _tmp_3;
-+ if (_cursor.isNull(_cursorIndexOfMetadata)) {
++ if (_cursor.isNull(_cursorIndexOfExtraRequestHeaders)) {
+ _tmp_3 = null;
+ } else {
-+ _tmp_3 = _cursor.getString(_cursorIndexOfMetadata);
++ _tmp_3 = _cursor.getString(_cursorIndexOfExtraRequestHeaders);
+ }
-+ _tmpMetadata = __converters.stringToJsonObject(_tmp_3);
-+ _item.setMetadata(_tmpMetadata);
-+ final Date _tmpDownloadTime;
-+ final Long _tmp_4;
-+ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmpExtraRequestHeaders = __converters.stringToJsonObject(_tmp_3);
++ _item.setExtraRequestHeaders(_tmpExtraRequestHeaders);
++ final JSONObject _tmpMetadata;
++ final String _tmp_4;
++ if (_cursor.isNull(_cursorIndexOfMetadata)) {
+ _tmp_4 = null;
+ } else {
-+ _tmp_4 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ _tmp_4 = _cursor.getString(_cursorIndexOfMetadata);
+ }
-+ _tmpDownloadTime = __converters.longToDate(_tmp_4);
++ _tmpMetadata = __converters.stringToJsonObject(_tmp_4);
++ _item.setMetadata(_tmpMetadata);
++ final Date _tmpDownloadTime;
++ final Long _tmp_5;
++ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmp_5 = null;
++ } else {
++ _tmp_5 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ }
++ _tmpDownloadTime = __converters.longToDate(_tmp_5);
+ _item.setDownloadTime(_tmpDownloadTime);
+ final String _tmpRelativePath;
+ if (_cursor.isNull(_cursorIndexOfRelativePath)) {
@@ -1129,14 +1184,14 @@ index 0000000..5db7faf
+ }
+ _item.setHash(_tmpHash);
+ final HashType _tmpHashType;
-+ final int _tmp_5;
-+ _tmp_5 = _cursor.getInt(_cursorIndexOfHashType);
-+ _tmpHashType = __converters.intToHashType(_tmp_5);
++ final int _tmp_6;
++ _tmp_6 = _cursor.getInt(_cursorIndexOfHashType);
++ _tmpHashType = __converters.intToHashType(_tmp_6);
+ _item.setHashType(_tmpHashType);
+ final boolean _tmpMarkedForDeletion;
-+ final int _tmp_6;
-+ _tmp_6 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
-+ _tmpMarkedForDeletion = _tmp_6 != 0;
++ final int _tmp_7;
++ _tmp_7 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
++ _tmpMarkedForDeletion = _tmp_7 != 0;
+ _item.setMarkedForDeletion(_tmpMarkedForDeletion);
+ _result.add(_item);
+ }
@@ -1366,10 +1421,10 @@ index 0000000..e4d703c
+}
diff --git a/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/dao/UpdateDao_Impl.java b/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/dao/UpdateDao_Impl.java
new file mode 100644
-index 0000000..d32bd7d
+index 0000000..0cde755
--- /dev/null
+++ b/node_modules/expo-updates/android/build/generated/source/kapt/debug/expo/modules/updates/db/dao/UpdateDao_Impl.java
-@@ -0,0 +1,894 @@
+@@ -0,0 +1,904 @@
+package expo.modules.updates.db.dao;
+
+import android.database.Cursor;
@@ -1927,6 +1982,7 @@ index 0000000..d32bd7d
+ final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
+ final int _cursorIndexOfUrl = CursorUtil.getColumnIndexOrThrow(_cursor, "url");
+ final int _cursorIndexOfHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "headers");
++ final int _cursorIndexOfExtraRequestHeaders = CursorUtil.getColumnIndexOrThrow(_cursor, "extra_request_headers");
+ final int _cursorIndexOfMetadata = CursorUtil.getColumnIndexOrThrow(_cursor, "metadata");
+ final int _cursorIndexOfDownloadTime = CursorUtil.getColumnIndexOrThrow(_cursor, "download_time");
+ final int _cursorIndexOfRelativePath = CursorUtil.getColumnIndexOrThrow(_cursor, "relative_path");
@@ -1969,23 +2025,32 @@ index 0000000..d32bd7d
+ }
+ _tmpHeaders = __converters.stringToJsonObject(_tmp_2);
+ _result.setHeaders(_tmpHeaders);
-+ final JSONObject _tmpMetadata;
++ final JSONObject _tmpExtraRequestHeaders;
+ final String _tmp_3;
-+ if (_cursor.isNull(_cursorIndexOfMetadata)) {
++ if (_cursor.isNull(_cursorIndexOfExtraRequestHeaders)) {
+ _tmp_3 = null;
+ } else {
-+ _tmp_3 = _cursor.getString(_cursorIndexOfMetadata);
++ _tmp_3 = _cursor.getString(_cursorIndexOfExtraRequestHeaders);
+ }
-+ _tmpMetadata = __converters.stringToJsonObject(_tmp_3);
-+ _result.setMetadata(_tmpMetadata);
-+ final Date _tmpDownloadTime;
-+ final Long _tmp_4;
-+ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmpExtraRequestHeaders = __converters.stringToJsonObject(_tmp_3);
++ _result.setExtraRequestHeaders(_tmpExtraRequestHeaders);
++ final JSONObject _tmpMetadata;
++ final String _tmp_4;
++ if (_cursor.isNull(_cursorIndexOfMetadata)) {
+ _tmp_4 = null;
+ } else {
-+ _tmp_4 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ _tmp_4 = _cursor.getString(_cursorIndexOfMetadata);
+ }
-+ _tmpDownloadTime = __converters.longToDate(_tmp_4);
++ _tmpMetadata = __converters.stringToJsonObject(_tmp_4);
++ _result.setMetadata(_tmpMetadata);
++ final Date _tmpDownloadTime;
++ final Long _tmp_5;
++ if (_cursor.isNull(_cursorIndexOfDownloadTime)) {
++ _tmp_5 = null;
++ } else {
++ _tmp_5 = _cursor.getLong(_cursorIndexOfDownloadTime);
++ }
++ _tmpDownloadTime = __converters.longToDate(_tmp_5);
+ _result.setDownloadTime(_tmpDownloadTime);
+ final String _tmpRelativePath;
+ if (_cursor.isNull(_cursorIndexOfRelativePath)) {
@@ -2002,14 +2067,14 @@ index 0000000..d32bd7d
+ }
+ _result.setHash(_tmpHash);
+ final HashType _tmpHashType;
-+ final int _tmp_5;
-+ _tmp_5 = _cursor.getInt(_cursorIndexOfHashType);
-+ _tmpHashType = __converters.intToHashType(_tmp_5);
++ final int _tmp_6;
++ _tmp_6 = _cursor.getInt(_cursorIndexOfHashType);
++ _tmpHashType = __converters.intToHashType(_tmp_6);
+ _result.setHashType(_tmpHashType);
+ final boolean _tmpMarkedForDeletion;
-+ final int _tmp_6;
-+ _tmp_6 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
-+ _tmpMarkedForDeletion = _tmp_6 != 0;
++ final int _tmp_7;
++ _tmp_7 = _cursor.getInt(_cursorIndexOfMarkedForDeletion);
++ _tmpMarkedForDeletion = _tmp_7 != 0;
+ _result.setMarkedForDeletion(_tmpMarkedForDeletion);
+ } else {
+ _result = null;
@@ -2315,7 +2380,7 @@ index 0000000..d8560bd
+aarMetadataVersion=1.0
diff --git a/node_modules/expo-updates/android/build/intermediates/compile_library_classes_jar/debug/classes.jar b/node_modules/expo-updates/android/build/intermediates/compile_library_classes_jar/debug/classes.jar
new file mode 100644
-index 0000000..f90505d
+index 0000000..efbcd2e
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/compile_library_classes_jar/debug/classes.jar differ
diff --git a/node_modules/expo-updates/android/build/intermediates/compile_r_class_jar/debug/R.jar b/node_modules/expo-updates/android/build/intermediates/compile_r_class_jar/debug/R.jar
new file mode 100644
@@ -4291,11 +4356,11 @@ index 0000000..0d783af
\ No newline at end of file
diff --git a/node_modules/expo-updates/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties b/node_modules/expo-updates/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
new file mode 100644
-index 0000000..12bb486
+index 0000000..8a27964
--- /dev/null
+++ b/node_modules/expo-updates/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
@@ -0,0 +1 @@
-+#Sat Dec 18 19:29:34 CET 2021
++#Sun Jan 02 18:57:29 CET 2022
diff --git a/node_modules/expo-updates/android/build/intermediates/incremental/packageDebugResources/merger.xml b/node_modules/expo-updates/android/build/intermediates/incremental/packageDebugResources/merger.xml
new file mode 100644
index 0000000..58e2bae
@@ -4311,47 +4376,47 @@ index 0000000..cbf90d1
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/BuildConfig.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/UpdatesDatabase_Impl$1.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/UpdatesDatabase_Impl$1.class
new file mode 100644
-index 0000000..e56906d
+index 0000000..7086fdc
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/UpdatesDatabase_Impl$1.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/UpdatesDatabase_Impl.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/UpdatesDatabase_Impl.class
new file mode 100644
-index 0000000..bcaf59d
+index 0000000..b29b28c
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/UpdatesDatabase_Impl.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$1.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$1.class
new file mode 100644
-index 0000000..94fbb62
+index 0000000..8e2633d
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$1.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$2.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$2.class
new file mode 100644
-index 0000000..f0d5dd6
+index 0000000..e5469c8
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$2.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$3.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$3.class
new file mode 100644
-index 0000000..71d376a
+index 0000000..1870b1e
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$3.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$4.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$4.class
new file mode 100644
-index 0000000..2846a8e
+index 0000000..14d9d36
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$4.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$5.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$5.class
new file mode 100644
-index 0000000..ef414b0
+index 0000000..5c60b95
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$5.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$6.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$6.class
new file mode 100644
-index 0000000..3c8f550
+index 0000000..6369c48
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$6.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$7.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$7.class
new file mode 100644
-index 0000000..941b3df
+index 0000000..61e4392
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$7.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$8.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$8.class
new file mode 100644
-index 0000000..e6cb2e9
+index 0000000..540d8d8
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl$8.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl.class
new file mode 100644
-index 0000000..571e6b9
+index 0000000..c214be1
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/AssetDao_Impl.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/JSONDataDao_Impl$1.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/JSONDataDao_Impl$1.class
new file mode 100644
@@ -4387,7 +4452,7 @@ index 0000000..a775c8c
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/UpdateDao_Impl$5.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/UpdateDao_Impl.class b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/UpdateDao_Impl.class
new file mode 100644
-index 0000000..763c8dd
+index 0000000..b7ac5a9
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/javac/debug/classes/expo/modules/updates/db/dao/UpdateDao_Impl.class differ
diff --git a/node_modules/expo-updates/android/build/intermediates/library_java_res/debug/res.jar b/node_modules/expo-updates/android/build/intermediates/library_java_res/debug/res.jar
new file mode 100644
@@ -4473,7 +4538,7 @@ index 0000000..3a9789b
\ No newline at end of file
diff --git a/node_modules/expo-updates/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar b/node_modules/expo-updates/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar
new file mode 100644
-index 0000000..95c9479
+index 0000000..bd31ff5
Binary files /dev/null and b/node_modules/expo-updates/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar differ
diff --git a/node_modules/expo-updates/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt b/node_modules/expo-updates/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt
new file mode 100644
@@ -5919,31 +5984,43 @@ index 0000000..5a5ecc1
+xml rn_dev_preferences
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/build-history.bin b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/build-history.bin
new file mode 100644
-index 0000000..1eb59bf
+index 0000000..09cd185
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/build-history.bin differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab
new file mode 100644
-index 0000000..6eec7d3
+index 0000000..2c696c0
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream
new file mode 100644
-index 0000000..8f56c0c
+index 0000000..e30ad45
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len
new file mode 100644
-index 0000000..534deea
+index 0000000..f5f9db1
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.len
new file mode 100644
-index 0000000..9001288
+index 0000000..49d559b
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.len differ
+diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values
+new file mode 100644
+index 0000000..f9d1b54
+Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at
new file mode 100644
-index 0000000..5710783
+index 0000000..29f6197
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at differ
+diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.s b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.s
+new file mode 100644
+index 0000000..a451638
+--- /dev/null
++++ b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.s
+@@ -0,0 +1 @@
++-
+\ No newline at end of file
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i
new file mode 100644
-index 0000000..ee40ee9
+index 0000000..f3000f6
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i.len
new file mode 100644
@@ -5951,27 +6028,27 @@ index 0000000..131e265
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab
new file mode 100644
-index 0000000..c833d7e
+index 0000000..ab9342b
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
new file mode 100644
-index 0000000..77d7043
+index 0000000..0340fe1
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
new file mode 100644
-index 0000000..9700766
+index 0000000..359576a
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len
new file mode 100644
-index 0000000..51b3725
+index 0000000..b4beefb
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
new file mode 100644
-index 0000000..dd7c695
+index 0000000..ccb64a4
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i
new file mode 100644
-index 0000000..3744e13
+index 0000000..e2b50f3
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len
new file mode 100644
@@ -5979,27 +6056,27 @@ index 0000000..131e265
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
new file mode 100644
-index 0000000..bb1a134
+index 0000000..7d2b57f
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
new file mode 100644
-index 0000000..77d7043
+index 0000000..0340fe1
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
new file mode 100644
-index 0000000..9700766
+index 0000000..359576a
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
new file mode 100644
-index 0000000..51b3725
+index 0000000..b4beefb
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
new file mode 100644
-index 0000000..4505d72
+index 0000000..9cc5798
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
new file mode 100644
-index 0000000..3744e13
+index 0000000..e2b50f3
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len
new file mode 100644
@@ -6007,7 +6084,7 @@ index 0000000..131e265
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab
new file mode 100644
-index 0000000..bafe315
+index 0000000..7b3f62b
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream
new file mode 100644
@@ -6035,7 +6112,7 @@ index 0000000..131e265
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab
new file mode 100644
-index 0000000..1e8ec5d
+index 0000000..75d0519
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.keystream
new file mode 100644
@@ -6051,7 +6128,7 @@ index 0000000..01bdaa1
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.values.at b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.values.at
new file mode 100644
-index 0000000..ce62643
+index 0000000..c83d6a2
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab.values.at differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i
new file mode 100644
@@ -6063,27 +6140,31 @@ index 0000000..131e265
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/inline-functions.tab_i.len differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab
new file mode 100644
-index 0000000..423e05d
+index 0000000..dc5131f
Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ
diff --git a/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
new file mode 100644
-index 0000000..bd5c95b
-Binary files /dev/null and b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ
+index 0000000..067147b
+--- /dev/null
++++ b/node_modules/expo-updates/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
+@@ -0,0 +1 @@
++)expo/modules/updates/UpdatesConfigurationIexpo/modules/updates/UpdatesConfiguration$CheckAutomaticallyConfiguration3expo/modules/updates/UpdatesConfiguration$Companion&expo/modules/updates/UpdatesController.expo/modules/updates/UpdatesController$start$1;expo/modules/updates/UpdatesController$start$1$WhenMappings@expo/modules/updates/UpdatesController$initializeErrorRecovery$1Sexpo/modules/updates/UpdatesController$initializeErrorRecovery$1$loadRemoteUpdate$1Aexpo/modules/updates/UpdatesController$relaunchReactApplication$10expo/modules/updates/UpdatesController$Companion1expo/modules/updates/UpdatesDevLauncherControllerPexpo/modules/updates/UpdatesDevLauncherController$fetchUpdateWithConfiguration$1Fexpo/modules/updates/UpdatesDevLauncherController$launchNewestUpdate$1Rexpo/modules/updates/UpdatesDevLauncherController$launchNewestUpdate$1$onSuccess$1;expo/modules/updates/UpdatesDevLauncherController$Companion%expo/modules/updates/UpdatesInterface"expo/modules/updates/UpdatesModuleRexpo/modules/updates/UpdatesModule$moduleRegistry$$inlined$getFromModuleRegistry$1Dexpo/modules/updates/UpdatesModule$special$$inlined$moduleRegistry$1+expo/modules/updates/UpdatesModule$reload$18expo/modules/updates/UpdatesModule$checkForUpdateAsync$17expo/modules/updates/UpdatesModule$fetchUpdateAsync$1$1,expo/modules/updates/UpdatesModule$Companion#expo/modules/updates/UpdatesPackageKexpo/modules/updates/UpdatesPackage$createReactNativeHostHandlers$handler$1-expo/modules/updates/UpdatesPackage$Companion#expo/modules/updates/UpdatesService-expo/modules/updates/UpdatesService$Companion!expo/modules/updates/UpdatesUtils.expo/modules/updates/UpdatesUtils$WhenMappings!expo/modules/updates/db/BuildData"expo/modules/updates/db/Converters/expo/modules/updates/db/Converters$WhenMappings&expo/modules/updates/db/DatabaseHolder0expo/modules/updates/db/DatabaseHolder$Companion.expo/modules/updates/db/DatabaseIntegrityCheckexpo/modules/updates/db/Reaper'expo/modules/updates/db/UpdatesDatabaseAexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_4_5$1Kexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_4_5$1$migrate$1Aexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_5_6$1Kexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_5_6$1$migrate$1Aexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_6_7$1Kexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_6_7$1$migrate$1Aexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_7_8$1Kexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_7_8$1$migrate$1Aexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_8_9$1Kexpo/modules/updates/db/UpdatesDatabase$Companion$MIGRATION_8_9$1$migrate$11expo/modules/updates/db/UpdatesDatabase$Companion$expo/modules/updates/db/dao/AssetDao'expo/modules/updates/db/dao/JSONDataDao%expo/modules/updates/db/dao/UpdateDao*expo/modules/updates/db/entity/AssetEntity-expo/modules/updates/db/entity/JSONDataEntity0expo/modules/updates/db/entity/UpdateAssetEntity+expo/modules/updates/db/entity/UpdateEntity&expo/modules/updates/db/enums/HashType*expo/modules/updates/db/enums/UpdateStatus0expo/modules/updates/errorrecovery/ErrorRecoveryoexpo/modules/updates/errorrecovery/ErrorRecovery$registerErrorHandler$defaultNativeModuleCallExceptionHandler$1:expo/modules/updates/errorrecovery/ErrorRecovery$Companion8expo/modules/updates/errorrecovery/ErrorRecoveryDelegateIexpo/modules/updates/errorrecovery/ErrorRecoveryDelegate$RemoteLoadStatus7expo/modules/updates/errorrecovery/ErrorRecoveryHandlerNexpo/modules/updates/errorrecovery/ErrorRecoveryHandler$tryRelaunchFromCache$1Cexpo/modules/updates/errorrecovery/ErrorRecoveryHandler$MessageTypeexpo/modules/updates/manifest/NewUpdateManifest$updateEntity$2>expo/modules/updates/manifest/NewUpdateManifest$assetHeaders$2Aexpo/modules/updates/manifest/NewUpdateManifest$assetEntityList$2,expo/modules/updates/manifest/UpdateManifest