From 454098c2f508505fc55c60c577250b8610abaaf3 Mon Sep 17 00:00:00 2001
From: lpw <pengwei.li@gamehollywood.com>
Date: Tue, 26 Jan 2021 09:39:45 +0800
Subject: [PATCH] 3.9.2

---
 frameworks/WAFirebaseImpl.framework/Headers/WAFirebaseImpl.h                            |    2 
 WAFirebaseImpl.podspec                                                                  |    2 
 frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h                          |   15 
 frameworks/FirebaseInstallations.framework/Headers/FIRInstallations.h                   |   27 
 frameworks/GoogleUtilities.framework/Headers/GULLogger.h                                |    8 
 frameworks/GoogleUtilities.framework/Headers/GULObjectSwizzler.h                        |  123 +++
 config/wa_sdk_impl_config_firebase.xml                                                  |    2 
 frameworks/GoogleAppMeasurement.framework/Info.plist                                    |   20 
 frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements-1                   |    0 
 frameworks/nanopb.framework/Headers/pb_encode.h                                         |    2 
 frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h                           |   25 
 frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeDirectory                        |    0 
 frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h                      |    1 
 frameworks/GoogleUtilities.framework/Headers/GULNetwork.h                               |   87 ++
 frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap                      |   13 
 frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement                          |    0 
 frameworks/GoogleUtilities.framework/Headers/GULURLSessionDataResponse.h                |   14 
 frameworks/GoogleUtilities.framework/Headers/GULReachabilityChecker.h                   |   79 ++
 frameworks/FirebaseCore.framework/Headers/FirebaseCore.h                                |    1 
 frameworks/FirebaseCoreDiagnostics.framework/Headers/FirebaseCoreDiagnostics-umbrella.h |   11 
 frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnostics.h               |    7 
 frameworks/GoogleUtilities.framework/Headers/GULSwizzledObject.h                        |   44 +
 frameworks/FirebaseAnalytics.framework/Modules/module.modulemap                         |   15 
 frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h               |    0 
 frameworks/GoogleUtilities.framework/Headers/GULNetworkMessageCode.h                    |   47 +
 frameworks/FirebaseInstallations.framework/Info.plist                                   |   20 
 frameworks/FirebaseAnalytics.framework/Info.plist                                       |   20 
 frameworks/GoogleUtilities.framework/Info.plist                                         |   20 
 frameworks/GoogleUtilities.framework/Headers/GULAppDelegateSwizzler.h                   |  107 +++
 frameworks/GoogleUtilities.framework/Headers/NSURLSession+GULPromises.h                 |   37 +
 frameworks/GoogleUtilities.framework/Headers/GULNetworkURLSession.h                     |   62 ++
 frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h                   |   33 +
 frameworks/nanopb.framework/nanopb                                                      |    0 
 frameworks/GoogleUtilities.framework/Headers/GULKeychainStorage.h                       |    0 
 frameworks/FirebaseCore.framework/Headers/FIRVersion.h                                  |    9 
 frameworks/GoogleUtilities.framework/Headers/GULAppEnvironmentUtil.h                    |   15 
 frameworks/nanopb.framework/Headers/pb.h                                                |    2 
 frameworks/FirebaseCore.framework/FirebaseCore                                          |    0 
 frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h                      |   41 +
 frameworks/GoogleUtilities.framework/Headers/GULApplication.h                           |   50 +
 frameworks/GoogleUtilities.framework/Headers/GULMutableDictionary.h                     |   46 +
 frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h                   |    0 
 WAFirebaseImpl/3.9.2/WAFirebaseImpl.podspec                                             |   25 
 frameworks/GoogleDataTransport.framework/GoogleDataTransport                            |    0 
 frameworks/GoogleUtilities.framework/Headers/GULOriginalIMPConvenienceMacros.h          |  207 ++++++
 frameworks/FirebaseAnalytics.framework/FirebaseAnalytics                                |    0 
 frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsAuthTokenResult.h    |    6 
 frameworks/GoogleUtilities.framework/Headers/GULSwizzler.h                              |   71 ++
 frameworks/GoogleUtilities.framework/Headers/GULKeychainUtils.h                         |    0 
 frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeResources                        |    8 
 frameworks/WAFirebaseImpl.framework/Info.plist                                          |    0 
 frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeSignature                        |    0 
 frameworks/GoogleDataTransport.framework/Info.plist                                     |   20 
 frameworks/FirebaseCore.framework/Info.plist                                            |   20 
 frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations.h              |    1 
 frameworks/GoogleDataTransport.framework/Headers/GDTCOREndpoints.h                      |   36 +
 frameworks/GoogleUtilities.framework/Headers/GoogleUtilities-umbrella.h                 |   24 
 frameworks/FirebaseCoreDiagnostics.framework/Info.plist                                 |   20 
 /dev/null                                                                               |   56 -
 frameworks/GoogleUtilities.framework/Headers/GULNetworkLoggerProtocol.h                 |   49 +
 frameworks/FirebaseInstallations.framework/FirebaseInstallations                        |    0 
 frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport.h                  |    4 
 frameworks/GoogleUtilities.framework/Headers/GULUserDefaults.h                          |  110 +++
 frameworks/FirebaseCore.framework/Headers/FIROptions.h                                  |    7 
 frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements                     |    0 
 frameworks/PromisesObjC.framework/Info.plist                                            |   20 
 frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics                    |    0 
 frameworks/WAFirebaseImpl.framework/WAFirebaseImpl                                      |    0 
 frameworks/nanopb.framework/Info.plist                                                  |   20 
 frameworks/PromisesObjC.framework/PromisesObjC                                          |    0 
 frameworks/GoogleUtilities.framework/GoogleUtilities                                    |    0 
 frameworks/GoogleUtilities.framework/Headers/GULSceneDelegateSwizzler.h                 |   76 ++
 frameworks/GoogleUtilities.framework/Headers/GULNetworkConstants.h                      |   71 ++
 frameworks/GoogleUtilities.framework/Headers/GULHeartbeatDateStorage.h                  |    0 
 frameworks/GoogleUtilities.framework/Headers/GULSecureCoding.h                          |    0 
 75 files changed, 1,724 insertions(+), 134 deletions(-)

diff --git a/WAFirebaseImpl.podspec b/WAFirebaseImpl.podspec
index b0058bf..b031530 100644
--- a/WAFirebaseImpl.podspec
+++ b/WAFirebaseImpl.podspec
@@ -9,7 +9,7 @@
 Pod::Spec.new do |s|
 
 s.name = 'WAFirebaseImpl'
-s.version = '3.8.5'
+s.version = '3.9.2'
 s.summary = 'WAFirebaseImpl framework in testing environment.'
 s.license = 'MIT'
 s.author = { "Wuyx" => "wuyixin_gh@gamehollywood.com" }
diff --git a/WAFirebaseImpl/3.9.2/WAFirebaseImpl.podspec b/WAFirebaseImpl/3.9.2/WAFirebaseImpl.podspec
new file mode 100644
index 0000000..b031530
--- /dev/null
+++ b/WAFirebaseImpl/3.9.2/WAFirebaseImpl.podspec
@@ -0,0 +1,25 @@
+#
+#  Be sure to run `pod spec lint WAFbImpl.podspec' to ensure this is a
+#  valid spec and to remove all comments including this before submitting the spec.
+#
+#  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
+#  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
+#
+
+Pod::Spec.new do |s|
+
+s.name = 'WAFirebaseImpl'
+s.version = '3.9.2'
+s.summary = 'WAFirebaseImpl framework in testing environment.'
+s.license = 'MIT'
+s.author = { "Wuyx" => "wuyixin_gh@gamehollywood.com" }
+s.homepage = 'http://repo.wingsdk.cn:8082/summary/WAFirebaseImpl.git'
+s.source = { :git => "http://admin@repo.wingsdk.cn:8082/r/WAFirebaseImpl.git" , :tag => s.version}
+s.platform = :ios
+s.ios.deployment_target = "7.0"
+s.vendored_frameworks = 'frameworks/*.framework'
+s.resources = ['config/*.xml']
+s.requires_arc = true
+s.dependency 'WASdkIntf'
+s.dependency 'WASdkImpl'
+end
diff --git a/config/wa_sdk_impl_config_firebase.xml b/config/wa_sdk_impl_config_firebase.xml
index 8e8a82a..f543b92 100644
--- a/config/wa_sdk_impl_config_firebase.xml
+++ b/config/wa_sdk_impl_config_firebase.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <config>
-	<version val="Firebase 3.8.5"/>
+	<version val="Firebase 3.9.2"/>
     <comps>
 
         <!-- 公共模块 -->
diff --git a/frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector b/frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector
deleted file mode 100755
index a6fbfd8..0000000
--- a/frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector
+++ /dev/null
Binary files differ
diff --git a/frameworks/FIRAnalyticsConnector.framework/Modules/module.modulemap b/frameworks/FIRAnalyticsConnector.framework/Modules/module.modulemap
deleted file mode 100755
index 99a4b1d..0000000
--- a/frameworks/FIRAnalyticsConnector.framework/Modules/module.modulemap
+++ /dev/null
@@ -1,11 +0,0 @@
-framework module FIRAnalyticsConnector {
-  export *
-  module * { export * }
-  link "sqlite3"
-  link "z"
-  link framework "CoreData"
-  link framework "Security"
-  link framework "StoreKit"
-  link framework "SystemConfiguration"
-  link framework "UIKit"
-}
diff --git a/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics b/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics
old mode 100755
new mode 100644
index f05ee85..a1ff87e
--- a/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics
+++ b/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics
Binary files differ
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h b/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h
old mode 100755
new mode 100644
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h b/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h
new file mode 100644
index 0000000..686a386
--- /dev/null
+++ b/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h
@@ -0,0 +1,33 @@
+#import <Foundation/Foundation.h>
+
+#import "FIRAnalytics.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// The type of consent to set. Supported consent types are `ConsentType.adStorage` and
+/// `ConsentType.analyticsStorage`. Omitting a type retains its previous status.
+typedef NSString *FIRConsentType NS_TYPED_ENUM NS_SWIFT_NAME(ConsentType);
+extern FIRConsentType const FIRConsentTypeAdStorage;
+extern FIRConsentType const FIRConsentTypeAnalyticsStorage;
+
+/// The status value of the consent type. Supported statuses are `ConsentStatus.granted` and
+/// `ConsentStatus.denied`.
+typedef NSString *FIRConsentStatus NS_TYPED_ENUM NS_SWIFT_NAME(ConsentStatus);
+extern FIRConsentStatus const FIRConsentStatusDenied;
+extern FIRConsentStatus const FIRConsentStatusGranted;
+
+/// Sets the applicable end user consent state.
+@interface FIRAnalytics (Consent)
+
+/// Sets the applicable end user consent state (e.g. for device identifiers) for this app on this
+/// device. Use the consent settings to specify individual consent type values. Settings are
+/// persisted across app sessions. By default consent types are set to `ConsentStatus.granted`.
+///
+/// @param consentSettings An NSDictionary of consent types. Supported consent type keys are
+///   `ConsentType.adStorage` and `ConsentType.analyticsStorage`. Valid values are
+///   `ConsentStatus.granted` and `ConsentStatus.denied`.
++ (void)setConsent:(NSDictionary<FIRConsentType, FIRConsentStatus> *)consentSettings;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h b/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h
old mode 100755
new mode 100644
index b7a2860..c9ce4e0
--- a/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h
+++ b/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h
@@ -25,14 +25,26 @@
 ///     <li>ad_activeview</li>
 ///     <li>ad_click</li>
 ///     <li>ad_exposure</li>
-///     <li>ad_impression</li>
 ///     <li>ad_query</li>
+///     <li>ad_reward</li>
 ///     <li>adunit_exposure</li>
+///     <li>app_background</li>
 ///     <li>app_clear_data</li>
+///     <li>app_exception</li>
 ///     <li>app_remove</li>
+///     <li>app_store_refund</li>
+///     <li>app_store_subscription_cancel</li>
+///     <li>app_store_subscription_convert</li>
+///     <li>app_store_subscription_renew</li>
 ///     <li>app_update</li>
+///     <li>app_upgrade</li>
+///     <li>dynamic_link_app_open</li>
+///     <li>dynamic_link_app_update</li>
+///     <li>dynamic_link_first_open</li>
 ///     <li>error</li>
+///     <li>firebase_campaign</li>
 ///     <li>first_open</li>
+///     <li>first_visit</li>
 ///     <li>in_app_purchase</li>
 ///     <li>notification_dismiss</li>
 ///     <li>notification_foreground</li>
@@ -40,6 +52,7 @@
 ///     <li>notification_receive</li>
 ///     <li>os_update</li>
 ///     <li>session_start</li>
+///     <li>session_start_with_rollout</li>
 ///     <li>user_engagement</li>
 /// </ul>
 ///
@@ -128,8 +141,11 @@
 ///     session terminates.
 + (void)setSessionTimeoutInterval:(NSTimeInterval)sessionTimeoutInterval;
 
-/// The unique ID for this instance of the application.
-+ (NSString *)appInstanceID;
+/// Returns the unique ID for this instance of the application or nil if
+/// `ConsentType.analyticsStorage` has been set to `ConsentStatus.denied`.
+///
+/// @see `FIRAnalytics+Consent.h`
++ (nullable NSString *)appInstanceID;
 
 /// Clears all analytics data for this instance from the device and resets the app instance ID.
 /// FIRAnalyticsConfiguration values will be reset to the default values.
@@ -149,6 +165,9 @@
 ///     that parameter. Passing in a nil dictionary will clear all parameters.
 + (void)setDefaultEventParameters:(nullable NSDictionary<NSString *, id> *)parameters;
 
+/// Unavailable.
+- (instancetype)init NS_UNAVAILABLE;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h b/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h
old mode 100755
new mode 100644
index f43350f..a362afd
--- a/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h
+++ b/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h
@@ -52,6 +52,21 @@
 static NSString *const kFIREventAddToWishlist NS_SWIFT_NAME(AnalyticsEventAddToWishlist) =
     @"add_to_wishlist";
 
+/// Ad Impression event. This event signifies when a user sees an ad impression. Note: If you supply
+/// the @c kFIRParameterValue parameter, you must also supply the @c kFIRParameterCurrency parameter
+/// so that revenue metrics can be computed accurately. Params:
+///
+/// <ul>
+///     <li>@c kFIRParameterAdPlatform (NSString) (optional)</li>
+///     <li>@c kFIRParameterAdFormat (NSString) (optional)</li>
+///     <li>@c kFIRParameterAdSource (NSString) (optional)</li>
+///     <li>@c kFIRParameterAdUnitName (NSString) (optional)</li>
+///     <li>@c kFIRParameterCurrency (NSString) (optional)</li>
+///     <li>@c kFIRParameterValue (double as NSNumber) (optional)</li>
+/// </ul>
+static NSString *const kFIREventAdImpression NS_SWIFT_NAME(AnalyticsEventAdImpression) =
+    @"ad_impression";
+
 /// App Open event. By logging this event when an App becomes active, developers can understand how
 /// often users leave and return during the course of a Session. Although Sessions are automatically
 /// reported, this event can provide further clarification around the continuous engagement of
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h b/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h
old mode 100755
new mode 100644
index 7221305..8dbf4b1
--- a/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h
+++ b/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h
@@ -22,6 +22,17 @@
 static NSString *const kFIRParameterAchievementID NS_SWIFT_NAME(AnalyticsParameterAchievementID) =
     @"achievement_id";
 
+/// The ad format (e.g. Banner, Interstitial, Rewarded, Native, Rewarded Interstitial, Instream).
+/// (NSString).
+/// <pre>
+///     NSDictionary *params = @{
+///       kFIRParameterAdFormat : @"Banner",
+///       // ...
+///     };
+/// </pre>
+static NSString *const kFIRParameterAdFormat NS_SWIFT_NAME(AnalyticsParameterAdFormat) =
+    @"ad_format";
+
 /// Ad Network Click ID (NSString). Used for network-specific click IDs which vary in format.
 /// <pre>
 ///     NSDictionary *params = @{
@@ -32,6 +43,36 @@
 static NSString *const kFIRParameterAdNetworkClickID
     NS_SWIFT_NAME(AnalyticsParameterAdNetworkClickID) = @"aclid";
 
+/// The ad platform (e.g. MoPub, IronSource) (NSString).
+/// <pre>
+///     NSDictionary *params = @{
+///       kFIRParameterAdPlatform : @"MoPub",
+///       // ...
+///     };
+/// </pre>
+static NSString *const kFIRParameterAdPlatform NS_SWIFT_NAME(AnalyticsParameterAdPlatform) =
+    @"ad_platform";
+
+/// The ad source (e.g. AdColony) (NSString).
+/// <pre>
+///     NSDictionary *params = @{
+///       kFIRParameterAdSource : @"AdColony",
+///       // ...
+///     };
+/// </pre>
+static NSString *const kFIRParameterAdSource NS_SWIFT_NAME(AnalyticsParameterAdSource) =
+    @"ad_source";
+
+/// The ad unit name (e.g. Banner_03) (NSString).
+/// <pre>
+///     NSDictionary *params = @{
+///       kFIRParameterAdUnitName : @"Banner_03",
+///       // ...
+///     };
+/// </pre>
+static NSString *const kFIRParameterAdUnitName NS_SWIFT_NAME(AnalyticsParameterAdUnitName) =
+    @"ad_unit_name";
+
 /// A product affiliation to designate a supplying company or brick and mortar store location
 /// (NSString). <pre>
 ///     NSDictionary *params = @{
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h b/frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h
old mode 100755
new mode 100644
diff --git a/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h b/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h
old mode 100755
new mode 100644
index ed7588a..368f79c
--- a/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h
+++ b/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h
@@ -1,4 +1,5 @@
 #import "FIRAnalytics+AppDelegate.h"
+#import "FIRAnalytics+Consent.h"
 #import "FIRAnalytics.h"
 #import "FIREventNames.h"
 #import "FIRParameterNames.h"
diff --git a/frameworks/FirebaseAnalytics.framework/Info.plist b/frameworks/FirebaseAnalytics.framework/Info.plist
new file mode 100644
index 0000000..df3a9c8
--- /dev/null
+++ b/frameworks/FirebaseAnalytics.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>FirebaseAnalytics</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-FirebaseAnalytics</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>FirebaseAnalytics</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>7.4.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap b/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap
old mode 100755
new mode 100644
index d7c5905..aa72782
--- a/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap
+++ b/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap
@@ -1,12 +1,13 @@
 framework module FirebaseAnalytics {
-  umbrella header "FirebaseAnalytics.h"
-  export *
-  module * { export * }
-  link "sqlite3"
-  link "z"
-  link framework "CoreData"
+umbrella header "FirebaseAnalytics.h"
+export *
+module * { export * }
+  link framework "CoreTelephony"
+  link framework "Foundation"
   link framework "Security"
-  link framework "StoreKit"
   link framework "SystemConfiguration"
   link framework "UIKit"
+  link "c++"
+  link "sqlite3"
+  link "z"
 }
diff --git a/frameworks/FirebaseCore.framework/FirebaseCore b/frameworks/FirebaseCore.framework/FirebaseCore
index 7774ad9..0c33f7c 100644
--- a/frameworks/FirebaseCore.framework/FirebaseCore
+++ b/frameworks/FirebaseCore.framework/FirebaseCore
Binary files differ
diff --git a/frameworks/FirebaseCore.framework/Headers/FIROptions.h b/frameworks/FirebaseCore.framework/Headers/FIROptions.h
index 67fbe5b..afabbf1 100644
--- a/frameworks/FirebaseCore.framework/Headers/FIROptions.h
+++ b/frameworks/FirebaseCore.framework/Headers/FIROptions.h
@@ -106,7 +106,7 @@
  * FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath];
  * Returns nil if the plist file does not exist or is invalid.
  */
-- (nullable instancetype)initWithContentsOfFile:(NSString *)plistPath;
+- (nullable instancetype)initWithContentsOfFile:(NSString *)plistPath NS_DESIGNATED_INITIALIZER;
 
 /**
  * Initializes a customized instance of FIROptions with required fields. Use the mutable properties
@@ -115,9 +115,12 @@
 // clang-format off
 - (instancetype)initWithGoogleAppID:(NSString *)googleAppID
                         GCMSenderID:(NSString *)GCMSenderID
-    NS_SWIFT_NAME(init(googleAppID:gcmSenderID:));
+    NS_SWIFT_NAME(init(googleAppID:gcmSenderID:)) NS_DESIGNATED_INITIALIZER;
 // clang-format on
 
+/** Unavailable. Please use `init(contentsOfFile:)` or `init(googleAppID:gcmSenderID:)` instead. */
+- (instancetype)init NS_UNAVAILABLE;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h b/frameworks/FirebaseCore.framework/Headers/FIRVersion.h
similarity index 80%
rename from frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h
rename to frameworks/FirebaseCore.framework/Headers/FIRVersion.h
index 8cdf677..7fcca4b 100644
--- a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h
+++ b/frameworks/FirebaseCore.framework/Headers/FIRVersion.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 Google
+ * Copyright 2020 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,4 +16,9 @@
 
 #import <Foundation/Foundation.h>
 
-FOUNDATION_EXPORT const char *const FIRInstallationsVersionStr;
+NS_ASSUME_NONNULL_BEGIN
+
+NS_SWIFT_NAME(FirebaseVersion())
+NSString* FIRFirebaseVersion(void);
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h b/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h
index 95119ae..680d604 100644
--- a/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h
+++ b/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h
@@ -18,3 +18,4 @@
 #import "FIRConfiguration.h"
 #import "FIRLoggerLevel.h"
 #import "FIROptions.h"
+#import "FIRVersion.h"
diff --git a/frameworks/FirebaseCore.framework/Info.plist b/frameworks/FirebaseCore.framework/Info.plist
new file mode 100644
index 0000000..62ca71f
--- /dev/null
+++ b/frameworks/FirebaseCore.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>FirebaseCore</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-FirebaseCore</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>FirebaseCore</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>7.4.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics b/frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics
index 8f7dd89..dab5a54 100644
--- a/frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics
+++ b/frameworks/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics
Binary files differ
diff --git a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h b/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnostics.h
similarity index 75%
copy from frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h
copy to frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnostics.h
index 8cdf677..5076d6b 100644
--- a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h
+++ b/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnostics.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 Google
+ * Copyright 2020 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,6 +14,5 @@
  * limitations under the License.
  */
 
-#import <Foundation/Foundation.h>
-
-FOUNDATION_EXPORT const char *const FIRInstallationsVersionStr;
+// There are no actual public headers in the lib. This is a dummy public header to prevent Cocoapods
+// from adding all internal headers as public.
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnosticsData.h b/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnosticsData.h
deleted file mode 100644
index 69c4072..0000000
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnosticsData.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** If present, is a BOOL wrapped in an NSNumber. */
-#define kFIRCDIsDataCollectionDefaultEnabledKey @"FIRCDIsDataCollectionDefaultEnabledKey"
-
-/** If present, is an int32_t wrapped in an NSNumber. */
-#define kFIRCDConfigurationTypeKey @"FIRCDConfigurationTypeKey"
-
-/** If present, is an NSString. */
-#define kFIRCDSdkNameKey @"FIRCDSdkNameKey"
-
-/** If present, is an NSString. */
-#define kFIRCDSdkVersionKey @"FIRCDSdkVersionKey"
-
-/** If present, is an int32_t wrapped in an NSNumber. */
-#define kFIRCDllAppsCountKey @"FIRCDllAppsCountKey"
-
-/** If present, is an NSString. */
-#define kFIRCDGoogleAppIDKey @"FIRCDGoogleAppIDKey"
-
-/** If present, is an NSString. */
-#define kFIRCDBundleIDKey @"FIRCDBundleID"
-
-/** If present, is a BOOL wrapped in an NSNumber. */
-#define kFIRCDUsingOptionsFromDefaultPlistKey @"FIRCDUsingOptionsFromDefaultPlistKey"
-
-/** If present, is an NSString. */
-#define kFIRCDLibraryVersionIDKey @"FIRCDLibraryVersionIDKey"
-
-/** If present, is an NSString. */
-#define kFIRCDFirebaseUserAgentKey @"FIRCDFirebaseUserAgentKey"
-
-/** Defines the interface of a data object needed to log diagnostics data. */
-@protocol FIRCoreDiagnosticsData <NSObject>
-
-@required
-
-/** A dictionary containing data (non-exhaustive) to be logged in diagnostics. */
-@property(nonatomic) NSDictionary<NSString *, id> *diagnosticObjects;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnosticsInterop.h b/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnosticsInterop.h
deleted file mode 100644
index 2b0eb71..0000000
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnosticsInterop.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "FIRCoreDiagnosticsData.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** Allows the interoperation of FirebaseCore and FirebaseCoreDiagnostics. */
-@protocol FIRCoreDiagnosticsInterop <NSObject>
-
-/** Sends the given diagnostics data.
- *
- * @param diagnosticsData The diagnostics data object to send.
- */
-+ (void)sendDiagnosticsData:(id<FIRCoreDiagnosticsData>)diagnosticsData;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/FirebaseCoreDiagnostics-umbrella.h b/frameworks/FirebaseCoreDiagnostics.framework/Headers/FirebaseCoreDiagnostics-umbrella.h
index 72a5d03..a27569f 100644
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/FirebaseCoreDiagnostics-umbrella.h
+++ b/frameworks/FirebaseCoreDiagnostics.framework/Headers/FirebaseCoreDiagnostics-umbrella.h
@@ -10,16 +10,7 @@
 #endif
 #endif
 
-#import "firebasecore.nanopb.h"
-#import "GoogleDataTransportInternal.h"
-#import "GULAppEnvironmentUtil.h"
-#import "GULHeartbeatDateStorage.h"
-#import "GULKeychainStorage.h"
-#import "GULKeychainUtils.h"
-#import "GULSecureCoding.h"
-#import "GULLogger.h"
-#import "FIRCoreDiagnosticsData.h"
-#import "FIRCoreDiagnosticsInterop.h"
+#import "FIRCoreDiagnostics.h"
 
 FOUNDATION_EXPORT double FirebaseCoreDiagnosticsVersionNumber;
 FOUNDATION_EXPORT const unsigned char FirebaseCoreDiagnosticsVersionString[];
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GoogleDataTransportInternal.h b/frameworks/FirebaseCoreDiagnostics.framework/Headers/GoogleDataTransportInternal.h
deleted file mode 100644
index a002e5c..0000000
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GoogleDataTransportInternal.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// An umbrella header, for any other libraries in this repo to access Firebase Public and Private
-// headers. Any package manager complexity should be handled here.
-
-#import <GoogleDataTransport/GoogleDataTransport.h>
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/firebasecore.nanopb.h b/frameworks/FirebaseCoreDiagnostics.framework/Headers/firebasecore.nanopb.h
deleted file mode 100644
index 0c5beec..0000000
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/firebasecore.nanopb.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Automatically generated nanopb header */
-/* Generated by nanopb-0.3.9.6 */
-
-#ifndef PB_LOGS_PROTO_MOBILESDK_IOS_FIREBASECORE_NANOPB_H_INCLUDED
-#define PB_LOGS_PROTO_MOBILESDK_IOS_FIREBASECORE_NANOPB_H_INCLUDED
-#include <nanopb/pb.h>
-
-/* @@protoc_insertion_point(includes) */
-#if PB_PROTO_HEADER_VERSION != 30
-#error Regenerate this file with the current version of nanopb generator.
-#endif
-
-
-/* Enum definitions */
-typedef enum _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType {
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_UNKNOWN_CONFIGURATION_TYPE = 0,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_CORE = 1,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_SDK = 2
-} logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType;
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_UNKNOWN_CONFIGURATION_TYPE
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MAX logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_SDK
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_ARRAYSIZE ((logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType)(logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_SDK+1))
-
-typedef enum _logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType {
-    logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_UNKNOWN_BUILD_TYPE = 0,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_INTERNAL = 1,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_EAP = 2,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_PROD = 3
-} logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType;
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_MIN logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_UNKNOWN_BUILD_TYPE
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_MAX logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_PROD
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_ARRAYSIZE ((logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType)(logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_PROD+1))
-
-typedef enum _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType {
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_UNKNOWN_SDK_SERVICE = 0,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ICORE = 1,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ADMOB = 2,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_APP_INVITE = 3,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_SIGN_IN = 5,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_GCM = 6,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MAPS = 7,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_SCION = 8,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ANALYTICS = 9,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_APP_INDEXING = 10,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_CONFIG = 11,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_DURABLE_DEEP_LINKS = 12,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_CRASH = 13,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_AUTH = 14,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_DATABASE = 15,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_STORAGE = 16,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MESSAGING = 17,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MEASUREMENT = 18,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_REMOTE_CONFIG = 19,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_DYNAMIC_LINKS = 20,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_INVITES = 21,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_AUTH_UI = 22,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_FIRESTORE = 23,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_PERFORMANCE = 24,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_FACE = 26,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_BARCODE = 27,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_TEXT = 28,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_LABEL = 29,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_MODEL_INTERPRETER = 30,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_IN_APP_MESSAGING = 31,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_FUNCTIONS = 32,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_NATURAL_LANGUAGE = 33,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_AUTOML = 34,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_OBJECT_DETECTION = 35
-} logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType;
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_UNKNOWN_SDK_SERVICE
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MAX logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_OBJECT_DETECTION
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ARRAYSIZE ((logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType)(logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ML_VISION_ON_DEVICE_OBJECT_DETECTION+1))
-
-typedef enum _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName {
-    logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_UNKNOWN_POD_NAME = 0,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_GOOGLE = 1,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_FIREBASE = 2
-} logs_proto_mobilesdk_ios_ICoreConfiguration_PodName;
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_UNKNOWN_POD_NAME
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MAX logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_FIREBASE
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_ARRAYSIZE ((logs_proto_mobilesdk_ios_ICoreConfiguration_PodName)(logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_FIREBASE+1))
-
-typedef enum _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType {
-    logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_UNKNOWN = 0,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_COCOAPODS = 1,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_ZIP_FILE = 2,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_CARTHAGE = 3,
-    logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_SPM = 4
-} logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType;
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_UNKNOWN
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MAX logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_SPM
-#define _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_ARRAYSIZE ((logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType)(logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_SPM+1))
-
-/* Struct definitions */
-typedef struct _logs_proto_mobilesdk_ios_ICoreConfiguration {
-    bool has_configuration_type;
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType configuration_type;
-    pb_size_t sdk_service_installed_count;
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType *sdk_service_installed;
-    pb_bytes_array_t *device_model;
-    pb_bytes_array_t *app_id;
-    pb_bytes_array_t *bundle_id;
-    bool has_pod_name;
-    logs_proto_mobilesdk_ios_ICoreConfiguration_PodName pod_name;
-    pb_bytes_array_t *icore_version;
-    pb_bytes_array_t *sdk_version;
-    bool has_sdk_name;
-    logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType sdk_name;
-    bool has_app_count;
-    int32_t app_count;
-    pb_bytes_array_t *os_version;
-    pb_bytes_array_t *min_supported_ios_version;
-    bool has_use_default_app;
-    bool use_default_app;
-    bool has_deployed_in_app_store;
-    bool deployed_in_app_store;
-    bool has_dynamic_framework_count;
-    int32_t dynamic_framework_count;
-    pb_bytes_array_t *apple_framework_version;
-    bool has_using_zip_file;
-    bool using_zip_file;
-    bool has_deployment_type;
-    logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType deployment_type;
-    pb_bytes_array_t *platform_info;
-    bool has_swizzling_enabled;
-    bool swizzling_enabled;
-    bool has_using_gdt;
-    bool using_gdt;
-/* @@protoc_insertion_point(struct:logs_proto_mobilesdk_ios_ICoreConfiguration) */
-} logs_proto_mobilesdk_ios_ICoreConfiguration;
-
-/* Default values for struct fields */
-
-/* Initializer values for message structs */
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_init_default {false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN, 0, NULL, NULL, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN, false, 0, NULL, NULL, false, 0, false, 0, false, 0, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN, NULL, false, 0, false, 0}
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_init_zero {false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN, 0, NULL, NULL, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN, false, 0, NULL, NULL, false, 0, false, 0, false, 0, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN, NULL, false, 0, false, 0}
-
-/* Field tags (for use in manual encoding/decoding) */
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_pod_name_tag 16
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_configuration_type_tag 1
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_icore_version_tag 18
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_version_tag 19
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_service_installed_tag 7
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_name_tag 20
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_device_model_tag 9
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_os_version_tag 22
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_app_id_tag 10
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_bundle_id_tag 12
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_min_supported_ios_version_tag 24
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_use_default_app_tag 25
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_app_count_tag 21
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_deployed_in_app_store_tag 26
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_dynamic_framework_count_tag 27
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_apple_framework_version_tag 28
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_using_zip_file_tag 29
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_deployment_type_tag 30
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_platform_info_tag 31
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_swizzling_enabled_tag 33
-#define logs_proto_mobilesdk_ios_ICoreConfiguration_using_gdt_tag 36
-
-/* Struct field encoding specification for nanopb */
-extern const pb_field_t logs_proto_mobilesdk_ios_ICoreConfiguration_fields[22];
-
-/* Maximum encoded size of messages (where known) */
-/* logs_proto_mobilesdk_ios_ICoreConfiguration_size depends on runtime parameters */
-
-/* Message IDs (where set with "msgid" option) */
-#ifdef PB_MSGID
-
-#define FIREBASECORE_MESSAGES \
-
-
-#endif
-
-/* @@protoc_insertion_point(eof) */
-
-#endif
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Info.plist b/frameworks/FirebaseCoreDiagnostics.framework/Info.plist
new file mode 100644
index 0000000..2b97522
--- /dev/null
+++ b/frameworks/FirebaseCoreDiagnostics.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>FirebaseCoreDiagnostics</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-FirebaseCoreDiagnostics</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>FirebaseCoreDiagnostics</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>7.4.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/FirebaseInstallations.framework/FirebaseInstallations b/frameworks/FirebaseInstallations.framework/FirebaseInstallations
index 1f5360b..46eb2fa 100644
--- a/frameworks/FirebaseInstallations.framework/FirebaseInstallations
+++ b/frameworks/FirebaseInstallations.framework/FirebaseInstallations
Binary files differ
diff --git a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallations.h b/frameworks/FirebaseInstallations.framework/Headers/FIRInstallations.h
index 4839b4e..fdb56c4 100644
--- a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallations.h
+++ b/frameworks/FirebaseInstallations.framework/Headers/FIRInstallations.h
@@ -22,9 +22,11 @@
 NS_ASSUME_NONNULL_BEGIN
 
 /** A notification with this name is sent each time an installation is created or deleted. */
-FOUNDATION_EXPORT const NSNotificationName FIRInstallationIDDidChangeNotification;
+FOUNDATION_EXPORT const NSNotificationName FIRInstallationIDDidChangeNotification
+    NS_SWIFT_NAME(InstallationIDDidChange);
 /** `userInfo` key for the `FirebaseApp.name` in `FIRInstallationIDDidChangeNotification`. */
-FOUNDATION_EXPORT NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey;
+FOUNDATION_EXPORT NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey
+    NS_SWIFT_NAME(InstallationIDDidChangeAppNameKey);
 
 /**
  * An installation ID handler block.
@@ -83,9 +85,9 @@
 - (void)installationIDWithCompletion:(FIRInstallationsIDHandler)completion;
 
 /**
- * Retrieves (locally if it exists or from the server) a valid authorization token. An existing
- * token may be invalidated or expired, so it is recommended to fetch the auth token before each
- * server request. The method does the same as `Installations.authTokenForcingRefresh(:,
+ * Retrieves (locally if it exists or from the server) a valid installation auth token. An existing
+ * token may be invalidated or expired, so it is recommended to fetch the installation auth token
+ * before each server request. The method does the same as `Installations.authTokenForcingRefresh(:,
  * completion:)` with forcing refresh `NO`.
  * @param completion A completion handler which is invoked when the operation completes. See
  * `InstallationsTokenHandler` for additional details.
@@ -93,13 +95,14 @@
 - (void)authTokenWithCompletion:(FIRInstallationsTokenHandler)completion;
 
 /**
- * Retrieves (locally or from the server depending on `forceRefresh` value) a valid authorization
- * token. An existing token may be invalidated or expire, so it is recommended to fetch the auth
- * token before each server request. This method should be used with `forceRefresh == YES` when e.g.
- * a request with the previously fetched auth token failed with "Not Authorized" error.
- * @param forceRefresh If `YES` then the locally cached auth token will be ignored and a new one
- * will be requested from the server. If `NO`, then the locally cached auth token will be returned
- * if exists and has not expired yet.
+ * Retrieves (locally or from the server depending on `forceRefresh` value) a valid installation
+ * auth token. An existing token may be invalidated or expire, so it is recommended to fetch the
+ * installation auth token before each server request. This method should be used with `forceRefresh
+ * == YES` when e.g. a request with the previously fetched installation auth token failed with "Not
+ * Authorized" error.
+ * @param forceRefresh If `YES` then the locally cached installation auth token will be ignored and
+ * a new one will be requested from the server. If `NO`, then the locally cached installation auth
+ * token will be returned if exists and has not expired yet.
  * @param completion  A completion handler which is invoked when the operation completes. See
  * `InstallationsTokenHandler` for additional details.
  */
diff --git a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsAuthTokenResult.h b/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsAuthTokenResult.h
index 7753132..501ac4e 100644
--- a/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsAuthTokenResult.h
+++ b/frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsAuthTokenResult.h
@@ -18,14 +18,14 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-/** The class represents a result of the auth token request. */
+/** The class represents a result of the installation auth token request. */
 NS_SWIFT_NAME(InstallationsAuthTokenResult)
 @interface FIRInstallationsAuthTokenResult : NSObject
 
-/** The authorization token string. */
+/** The installation auth token string. */
 @property(nonatomic, readonly) NSString *authToken;
 
-/** The auth token expiration date. */
+/** The installation auth token expiration date. */
 @property(nonatomic, readonly) NSDate *expirationDate;
 
 @end
diff --git a/frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations.h b/frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations.h
index accc9ac..8a9b3c1 100644
--- a/frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations.h
+++ b/frameworks/FirebaseInstallations.framework/Headers/FirebaseInstallations.h
@@ -17,4 +17,3 @@
 #import "FIRInstallations.h"
 #import "FIRInstallationsAuthTokenResult.h"
 #import "FIRInstallationsErrors.h"
-#import "FIRInstallationsVersion.h"
diff --git a/frameworks/FirebaseInstallations.framework/Info.plist b/frameworks/FirebaseInstallations.framework/Info.plist
new file mode 100644
index 0000000..8adbc79
--- /dev/null
+++ b/frameworks/FirebaseInstallations.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>FirebaseInstallations</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-FirebaseInstallations</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>FirebaseInstallations</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>7.4.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement b/frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement
old mode 100755
new mode 100644
index c7128f4..2dbce72
--- a/frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement
+++ b/frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement
Binary files differ
diff --git a/frameworks/GoogleAppMeasurement.framework/Info.plist b/frameworks/GoogleAppMeasurement.framework/Info.plist
new file mode 100644
index 0000000..7b7f33a
--- /dev/null
+++ b/frameworks/GoogleAppMeasurement.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>GoogleAppMeasurement</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-GoogleAppMeasurement</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>GoogleAppMeasurement</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>7.4.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap b/frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap
old mode 100755
new mode 100644
index de80e9e..d3499f0
--- a/frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap
+++ b/frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap
@@ -1,11 +1,10 @@
 framework module GoogleAppMeasurement {
-  export *
-  module * { export * }
+umbrella header "GoogleAppMeasurement-umbrella.h"
+export *
+module * { export * }
+  link framework "Security"
+  link framework "SystemConfiguration"
+  link "c++"
   link "sqlite3"
   link "z"
-  link framework "CoreData"
-  link framework "Security"
-  link framework "StoreKit"
-  link framework "SystemConfiguration"
-  link framework "UIKit"
 }
diff --git a/frameworks/GoogleDataTransport.framework/GoogleDataTransport b/frameworks/GoogleDataTransport.framework/GoogleDataTransport
index a7dbb14..6a03506 100644
--- a/frameworks/GoogleDataTransport.framework/GoogleDataTransport
+++ b/frameworks/GoogleDataTransport.framework/GoogleDataTransport
Binary files differ
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORAssert.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORAssert.h
deleted file mode 100644
index d920f54..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORAssert.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "GDTCORConsoleLogger.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** A block type that could be run instead of normal assertion logging. No return type, no params.
- */
-typedef void (^GDTCORAssertionBlock)(void);
-
-/** Returns the result of executing a soft-linked method present in unit tests that allows a block
- * to be run instead of normal assertion logging. This helps ameliorate issues with catching
- * exceptions that occur on a dispatch_queue.
- *
- * @return A block that can be run instead of normal assert printing.
- */
-FOUNDATION_EXPORT GDTCORAssertionBlock _Nullable GDTCORAssertionBlockToRunInstead(void);
-
-#if defined(NS_BLOCK_ASSERTIONS)
-
-#define GDTCORAssert(condition, ...) \
-  do {                               \
-  } while (0);
-
-#define GDTCORFatalAssert(condition, ...) \
-  do {                                    \
-  } while (0);
-
-#else  // defined(NS_BLOCK_ASSERTIONS)
-
-/** Asserts using a console log, unless a block was specified to be run instead.
- *
- * @param condition The condition you'd expect to be YES.
- */
-#define GDTCORAssert(condition, format, ...)                                     \
-  do {                                                                           \
-    __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS                                          \
-    if (__builtin_expect(!(condition), 0)) {                                     \
-      GDTCORAssertionBlock assertionBlock = GDTCORAssertionBlockToRunInstead();  \
-      if (assertionBlock) {                                                      \
-        assertionBlock();                                                        \
-      } else {                                                                   \
-        NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__];    \
-        __assert_file__ = __assert_file__ ? __assert_file__ : @"<Unknown File>"; \
-        GDTCORLogAssert(NO, __assert_file__, __LINE__, format, ##__VA_ARGS__);   \
-        __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS                                       \
-      }                                                                          \
-    }                                                                            \
-  } while (0);
-
-/** Asserts by logging to the console and throwing an exception if NS_BLOCK_ASSERTIONS is not
- * defined.
- *
- * @param condition The condition you'd expect to be YES.
- */
-#define GDTCORFatalAssert(condition, format, ...)                                          \
-  do {                                                                                     \
-    __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS                                                    \
-    if (__builtin_expect(!(condition), 0)) {                                               \
-      GDTCORAssertionBlock assertionBlock = GDTCORAssertionBlockToRunInstead();            \
-      if (assertionBlock) {                                                                \
-        assertionBlock();                                                                  \
-      } else {                                                                             \
-        NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__];              \
-        __assert_file__ = __assert_file__ ? __assert_file__ : @"<Unknown File>";           \
-        GDTCORLogAssert(YES, __assert_file__, __LINE__, format, ##__VA_ARGS__);            \
-        [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd                    \
-                                                            object:self                    \
-                                                              file:__assert_file__         \
-                                                        lineNumber:__LINE__                \
-                                                       description:format, ##__VA_ARGS__]; \
-        __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS                                                 \
-      }                                                                                    \
-    }                                                                                      \
-  } while (0);
-
-#endif  // defined(NS_BLOCK_ASSERTIONS)
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCOREndpoints.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCOREndpoints.h
new file mode 100644
index 0000000..836a454
--- /dev/null
+++ b/frameworks/GoogleDataTransport.framework/Headers/GDTCOREndpoints.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+#import "GDTCORTargets.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/* Class that manages the endpoints used by Google data transport library. */
+@interface GDTCOREndpoints : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Returns the upload URL for a target specified. If the target is not available, returns nil.
+ *
+ *  @param target GoogleDataTransport target for which the upload URL is being looked up for.
+ *  @return URL that will be used for uploading the events for the provided target.
+ */
++ (nullable NSURL *)uploadURLForTarget:(GDTCORTarget)target;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORLifecycle.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORLifecycle.h
deleted file mode 100644
index ac04fd6..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORLifecycle.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "GDTCORPlatform.h"
-
-@class GDTCOREvent;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** A protocol defining the lifecycle events objects in the library must respond to immediately. */
-@protocol GDTCORLifecycleProtocol <NSObject>
-
-@optional
-
-/** Indicates an imminent app termination in the rare occurrence when -applicationWillTerminate: has
- * been called.
- *
- * @param app The GDTCORApplication instance.
- */
-- (void)appWillTerminate:(GDTCORApplication *)app;
-
-/** Indicates that the app is moving to background and eventual suspension or the current UIScene is
- * deactivating.
- *
- * @param app The GDTCORApplication instance.
- */
-- (void)appWillBackground:(GDTCORApplication *)app;
-
-/** Indicates that the app is resuming operation or a UIScene is activating.
- *
- * @param app The GDTCORApplication instance.
- */
-- (void)appWillForeground:(GDTCORApplication *)app;
-
-@end
-
-/** This class manages the library's response to app lifecycle events.
- *
- * When backgrounding, the library doesn't stop processing events, it's just that several background
- * tasks will end up being created for every event that's sent, and the stateful objects of the
- * library (GDTCORStorage and GDTCORUploadCoordinator instances) will deserialize themselves from
- * and to disk before and after every operation, respectively.
- */
-@interface GDTCORLifecycle : NSObject <GDTCORApplicationDelegate>
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORPlatform.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORPlatform.h
deleted file mode 100644
index 951204b..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORPlatform.h
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#if !TARGET_OS_WATCH
-#import <SystemConfiguration/SystemConfiguration.h>
-#endif
-
-#if TARGET_OS_IOS || TARGET_OS_TV
-#import <UIKit/UIKit.h>
-#elif TARGET_OS_OSX
-#import <AppKit/AppKit.h>
-#elif TARGET_OS_WATCH
-#import <WatchKit/WatchKit.h>
-#endif  // TARGET_OS_IOS || TARGET_OS_TV
-
-#if TARGET_OS_IOS
-#import <CoreTelephony/CTTelephonyNetworkInfo.h>
-#endif
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** The GoogleDataTransport library version. */
-FOUNDATION_EXPORT NSString *const kGDTCORVersion;
-
-/** A notification sent out if the app is backgrounding. */
-FOUNDATION_EXPORT NSString *const kGDTCORApplicationDidEnterBackgroundNotification;
-
-/** A notification sent out if the app is foregrounding. */
-FOUNDATION_EXPORT NSString *const kGDTCORApplicationWillEnterForegroundNotification;
-
-/** A notification sent out if the app is terminating. */
-FOUNDATION_EXPORT NSString *const kGDTCORApplicationWillTerminateNotification;
-
-/** The different possible network connection type. */
-typedef NS_ENUM(NSInteger, GDTCORNetworkType) {
-  GDTCORNetworkTypeUNKNOWN = 0,
-  GDTCORNetworkTypeWIFI = 1,
-  GDTCORNetworkTypeMobile = 2,
-};
-
-/** The different possible network connection mobile subtype. */
-typedef NS_ENUM(NSInteger, GDTCORNetworkMobileSubtype) {
-  GDTCORNetworkMobileSubtypeUNKNOWN = 0,
-  GDTCORNetworkMobileSubtypeGPRS = 1,
-  GDTCORNetworkMobileSubtypeEdge = 2,
-  GDTCORNetworkMobileSubtypeWCDMA = 3,
-  GDTCORNetworkMobileSubtypeHSDPA = 4,
-  GDTCORNetworkMobileSubtypeHSUPA = 5,
-  GDTCORNetworkMobileSubtypeCDMA1x = 6,
-  GDTCORNetworkMobileSubtypeCDMAEVDORev0 = 7,
-  GDTCORNetworkMobileSubtypeCDMAEVDORevA = 8,
-  GDTCORNetworkMobileSubtypeCDMAEVDORevB = 9,
-  GDTCORNetworkMobileSubtypeHRPD = 10,
-  GDTCORNetworkMobileSubtypeLTE = 11,
-};
-
-#if !TARGET_OS_WATCH
-/** Define SCNetworkReachabilityFlags as GDTCORNetworkReachabilityFlags on non-watchOS. */
-typedef SCNetworkReachabilityFlags GDTCORNetworkReachabilityFlags;
-
-/** Define SCNetworkReachabilityRef as GDTCORNetworkReachabilityRef on non-watchOS. */
-typedef SCNetworkReachabilityRef GDTCORNetworkReachabilityRef;
-
-#else
-/** The different possible reachabilityFlags option on watchOS. */
-typedef NS_OPTIONS(uint32_t, GDTCORNetworkReachabilityFlags) {
-  kGDTCORNetworkReachabilityFlagsReachable = 1 << 1,
-  // TODO(doudounan): Add more options on watchOS if watchOS network connection information relative
-  // APIs available in the future.
-};
-
-/** Define a struct as GDTCORNetworkReachabilityRef on watchOS to store network connection
- * information. */
-typedef struct {
-  // TODO(doudounan): Store network connection information on watchOS if watchOS network connection
-  // information relative APIs available in the future.
-} GDTCORNetworkReachabilityRef;
-#endif
-
-/** Returns a URL to the root directory under which all GDT-associated data must be saved.
- *
- * @return A URL to the root directory under which all GDT-associated data must be saved.
- */
-NSURL *GDTCORRootDirectory(void);
-
-/** Compares flags with the reachable flag (on non-watchos with both reachable and
- * connectionRequired flags), if available, and returns YES if network reachable.
- *
- * @param flags The set of reachability flags.
- * @return YES if the network is reachable, NO otherwise.
- */
-BOOL GDTCORReachabilityFlagsReachable(GDTCORNetworkReachabilityFlags flags);
-
-/** Compares flags with the WWAN reachability flag, if available, and returns YES if present.
- *
- * @param flags The set of reachability flags.
- * @return YES if the WWAN flag is set, NO otherwise.
- */
-BOOL GDTCORReachabilityFlagsContainWWAN(GDTCORNetworkReachabilityFlags flags);
-
-/** Generates an enum message GDTCORNetworkType representing network connection type.
- *
- * @return A GDTCORNetworkType representing network connection type.
- */
-GDTCORNetworkType GDTCORNetworkTypeMessage(void);
-
-/** Generates an enum message GDTCORNetworkMobileSubtype representing network connection mobile
- * subtype.
- *
- * @return A GDTCORNetworkMobileSubtype representing network connection mobile subtype.
- */
-GDTCORNetworkMobileSubtype GDTCORNetworkMobileSubTypeMessage(void);
-
-/** Identifies the model of the device on which the library is currently working on.
- *
- * @return A NSString representing the device model.
- */
-NSString *_Nonnull GDTCORDeviceModel(void);
-
-/** Writes the given object to the given fileURL and populates the given error if it fails.
- *
- * @param obj The object to encode.
- * @param filePath The path to write the object to. Can be nil if you just need the data.
- * @param error The error to populate if something goes wrong.
- * @return The data of the archive. If error is nil, it's been written to disk.
- */
-NSData *_Nullable GDTCOREncodeArchive(id<NSSecureCoding> obj,
-                                      NSString *_Nullable filePath,
-                                      NSError *_Nullable *error);
-
-/** Decodes an object of the given class from the given archive path or data and populates the given
- * error if it fails.
- *
- * @param archiveClass The class of the archive's root object.
- * @param archivePath The path to the archived data. Don't use with the archiveData param.
- * @param archiveData The data to decode. Don't use with the archivePath param.
- * @param error The error to populate if something goes wrong.
- */
-id<NSSecureCoding> _Nullable GDTCORDecodeArchive(Class archiveClass,
-                                                 NSString *_Nullable archivePath,
-                                                 NSData *_Nullable archiveData,
-                                                 NSError *_Nullable *error);
-
-/** A typedef identify background identifiers. */
-typedef volatile NSUInteger GDTCORBackgroundIdentifier;
-
-/** A background task's invalid sentinel value. */
-FOUNDATION_EXPORT const GDTCORBackgroundIdentifier GDTCORBackgroundIdentifierInvalid;
-
-#if TARGET_OS_IOS || TARGET_OS_TV
-/** A protocol that wraps UIApplicationDelegate, WKExtensionDelegate or NSObject protocol, depending
- * on the platform.
- */
-@protocol GDTCORApplicationDelegate <UIApplicationDelegate>
-#elif TARGET_OS_OSX
-@protocol GDTCORApplicationDelegate <NSApplicationDelegate>
-#elif TARGET_OS_WATCH
-@protocol GDTCORApplicationDelegate <WKExtensionDelegate>
-#else
-@protocol GDTCORApplicationDelegate <NSObject>
-#endif  // TARGET_OS_IOS || TARGET_OS_TV
-
-@end
-
-/** A cross-platform application class. */
-@interface GDTCORApplication : NSObject <GDTCORApplicationDelegate>
-
-/** Flag to determine if the application is running in the background. */
-@property(atomic, readonly) BOOL isRunningInBackground;
-
-/** Creates and/or returns the shared application instance.
- *
- * @return The shared application instance.
- */
-+ (nullable GDTCORApplication *)sharedApplication;
-
-/** Creates a background task with the returned identifier if on a suitable platform.
- *
- * @name name The name of the task, useful for debugging which background tasks are running.
- * @param handler The handler block that is called if the background task expires.
- * @return An identifier for the background task, or GDTCORBackgroundIdentifierInvalid if one
- * couldn't be created.
- */
-- (GDTCORBackgroundIdentifier)beginBackgroundTaskWithName:(NSString *)name
-                                        expirationHandler:(void (^__nullable)(void))handler;
-
-/** Ends the background task if the identifier is valid.
- *
- * @param bgID The background task to end.
- */
-- (void)endBackgroundTask:(GDTCORBackgroundIdentifier)bgID;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORRegistrar.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORRegistrar.h
deleted file mode 100644
index 4f8d73e..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORRegistrar.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2018 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "GDTCORStorageProtocol.h"
-#import "GDTCORTargets.h"
-#import "GDTCORUploader.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** Manages the registration of targets with the transport SDK. */
-@interface GDTCORRegistrar : NSObject <GDTCORLifecycleProtocol>
-
-/** Creates and/or returns the singleton instance.
- *
- * @return The singleton instance of this class.
- */
-+ (instancetype)sharedInstance;
-
-/** Registers a backend implementation with the GoogleDataTransport infrastructure.
- *
- * @param backend The backend object to register.
- * @param target The target this backend object will be responsible for.
- */
-- (void)registerUploader:(id<GDTCORUploader>)backend target:(GDTCORTarget)target;
-
-/** Registers a storage implementation with the GoogleDataTransport infrastructure.
- *
- * @param storage The storage instance to be associated with this uploader and target.
- * @param target The target this backend object will be responsible for.
- */
-- (void)registerStorage:(id<GDTCORStorageProtocol>)storage target:(GDTCORTarget)target;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORStorageEventSelector.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORStorageEventSelector.h
deleted file mode 100644
index e839fb1..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORStorageEventSelector.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2020 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "GDTCORTargets.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** This class enables the finding of events by matching events with the properties of this class.
- */
-@interface GDTCORStorageEventSelector : NSObject
-
-/** The target to find events for. Required. */
-@property(readonly, nonatomic) GDTCORTarget selectedTarget;
-
-/** Finds a specific event. */
-@property(nullable, readonly, nonatomic) NSSet<NSString *> *selectedEventIDs;
-
-/** Finds all events of a mappingID. */
-@property(nullable, readonly, nonatomic) NSSet<NSString *> *selectedMappingIDs;
-
-/** Finds all events matching the qosTiers in this list. */
-@property(nullable, readonly, nonatomic) NSSet<NSNumber *> *selectedQosTiers;
-
-/** Initializes an event selector that will find all events for the given target.
- *
- * @param target The selected target.
- * @return An immutable event selector instance.
- */
-+ (instancetype)eventSelectorForTarget:(GDTCORTarget)target;
-
-/** Instantiates an event selector.
- *
- * @param target The selected target.
- * @param eventIDs Optional param to find an event matching this eventID.
- * @param mappingIDs Optional param to find events matching this mappingID.
- * @param qosTiers Optional param to find events matching the given QoS tiers.
- * @return An immutable event selector instance.
- */
-- (instancetype)initWithTarget:(GDTCORTarget)target
-                      eventIDs:(nullable NSSet<NSString *> *)eventIDs
-                    mappingIDs:(nullable NSSet<NSString *> *)mappingIDs
-                      qosTiers:(nullable NSSet<NSNumber *> *)qosTiers;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORStorageProtocol.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORStorageProtocol.h
deleted file mode 100644
index 2c5af6d..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORStorageProtocol.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2020 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "GDTCORLifecycle.h"
-#import "GDTCORStorageEventSelector.h"
-#import "GDTCORTargets.h"
-
-@class GDTCOREvent;
-@class GDTCORClock;
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void (^GDTCORStorageBatchBlock)(NSNumber *_Nullable newBatchID,
-                                        NSSet<GDTCOREvent *> *_Nullable batchEvents);
-
-/** Defines the interface a storage subsystem is expected to implement. */
-@protocol GDTCORStorageProtocol <NSObject, GDTCORLifecycleProtocol>
-
-@required
-
-/** Stores an event and calls onComplete with a non-nil error if anything went wrong.
- *
- * @param event The event to store
- * @param completion The completion block to call after an attempt to store the event has been made.
- */
-- (void)storeEvent:(GDTCOREvent *)event
-        onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion;
-
-/** Returns YES if some events have been stored for the given target, NO otherwise.
- *
- * @param onComplete The completion block to invoke when determining if there are events is done.
- */
-- (void)hasEventsForTarget:(GDTCORTarget)target onComplete:(void (^)(BOOL hasEvents))onComplete;
-
-/** Constructs an event batch with the given event selector. Events in this batch will not be
- * returned in any queries or other batches until the batch is removed.
- *
- * @param eventSelector The event selector used to find the events.
- * @param expiration The expiration time of the batch. If removeBatchWithID:deleteEvents:onComplete:
- * is not called within this time frame, the batch will be removed with its events deleted.
- * @param onComplete The completion handler to be called when the events have been fetched.
- */
-- (void)batchWithEventSelector:(nonnull GDTCORStorageEventSelector *)eventSelector
-               batchExpiration:(nonnull NSDate *)expiration
-                    onComplete:(nonnull GDTCORStorageBatchBlock)onComplete;
-
-/** Removes the event batch.
- *
- * @param batchID The batchID to remove.
- * @param deleteEvents If YES, the events in this batch are deleted.
- * @param onComplete The completion handler to call when the batch removal process has completed.
- */
-- (void)removeBatchWithID:(NSNumber *)batchID
-             deleteEvents:(BOOL)deleteEvents
-               onComplete:(void (^_Nullable)(void))onComplete;
-
-/** Finds the batchIDs for the given target and calls the callback block.
- *
- * @param target The target.
- * @param onComplete The block to invoke with the set of current batchIDs.
- */
-- (void)batchIDsForTarget:(GDTCORTarget)target
-               onComplete:(void (^)(NSSet<NSNumber *> *_Nullable batchIDs))onComplete;
-
-/** Checks the storage for expired events and batches, deletes them if they're expired. */
-- (void)checkForExpirations;
-
-/** Persists the given data with the given key.
- *
- * @param data The data to store.
- * @param key The unique key to store it to.
- * @param onComplete An block to be run when storage of the data is complete.
- */
-- (void)storeLibraryData:(NSData *)data
-                  forKey:(NSString *)key
-              onComplete:(nullable void (^)(NSError *_Nullable error))onComplete;
-
-/** Retrieves the stored data for the given key and optionally sets a new value.
- *
- * @param key The key corresponding to the desired data.
- * @param onFetchComplete The callback to invoke with the data once it's retrieved.
- * @param setValueBlock This optional block can provide a new value to set.
- */
-- (void)libraryDataForKey:(nonnull NSString *)key
-          onFetchComplete:(nonnull void (^)(NSData *_Nullable data,
-                                            NSError *_Nullable error))onFetchComplete
-              setNewValue:(NSData *_Nullable (^_Nullable)(void))setValueBlock;
-
-/** Removes data from storage and calls the callback when complete.
- *
- * @param key The key of the data to remove.
- * @param onComplete The callback that will be invoked when removing the data is complete.
- */
-- (void)removeLibraryDataForKey:(NSString *)key
-                     onComplete:(void (^)(NSError *_Nullable error))onComplete;
-
-/** Calculates and returns the total disk size that this storage consumes.
- *
- * @param onComplete The callback that will be invoked once storage size calculation is complete.
- */
-- (void)storageSizeWithCallback:(void (^)(uint64_t storageSize))onComplete;
-
-@end
-
-/** Retrieves the storage instance for the given target.
- *
- * @param target The target.
- * * @return The storage instance registered for the target, or nil if there is none.
- */
-FOUNDATION_EXPORT
-id<GDTCORStorageProtocol> _Nullable GDTCORStorageInstanceForTarget(GDTCORTarget target);
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORUploader.h b/frameworks/GoogleDataTransport.framework/Headers/GDTCORUploader.h
deleted file mode 100644
index 3945cd3..0000000
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORUploader.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2018 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#import "GDTCORClock.h"
-#import "GDTCORLifecycle.h"
-#import "GDTCORTargets.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/** Options that define a set of upload conditions. This is used to help minimize end user data
- * consumption impact.
- */
-typedef NS_OPTIONS(NSInteger, GDTCORUploadConditions) {
-
-  /** An upload shouldn't be attempted, because there's no network. */
-  GDTCORUploadConditionNoNetwork = 1 << 0,
-
-  /** An upload would likely use mobile data. */
-  GDTCORUploadConditionMobileData = 1 << 1,
-
-  /** An upload would likely use wifi data. */
-  GDTCORUploadConditionWifiData = 1 << 2,
-
-  /** An upload uses some sort of network connection, but it's unclear which. */
-  GDTCORUploadConditionUnclearConnection = 1 << 3,
-
-  /** A high priority event has occurred. */
-  GDTCORUploadConditionHighPriority = 1 << 4,
-};
-
-/** This protocol defines the common interface for uploader implementations. */
-@protocol GDTCORUploader <NSObject, GDTCORLifecycleProtocol>
-
-@required
-
-/** Uploads events to the backend using this specific backend's chosen format.
- *
- * @param conditions The conditions that the upload attempt is likely to occur under.
- */
-- (void)uploadTarget:(GDTCORTarget)target withConditions:(GDTCORUploadConditions)conditions;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport.h b/frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport.h
index 3e8905f..0bd39dc 100644
--- a/frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport.h
+++ b/frameworks/GoogleDataTransport.framework/Headers/GoogleDataTransport.h
@@ -16,11 +16,9 @@
 
 #import "GDTCORClock.h"
 #import "GDTCORConsoleLogger.h"
+#import "GDTCOREndpoints.h"
 #import "GDTCOREvent.h"
 #import "GDTCOREventDataObject.h"
 #import "GDTCOREventTransformer.h"
-#import "GDTCORLifecycle.h"
-#import "GDTCORRegistrar.h"
 #import "GDTCORTargets.h"
 #import "GDTCORTransport.h"
-#import "GDTCORUploader.h"
diff --git a/frameworks/GoogleDataTransport.framework/Info.plist b/frameworks/GoogleDataTransport.framework/Info.plist
new file mode 100644
index 0000000..b964ebb
--- /dev/null
+++ b/frameworks/GoogleDataTransport.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>GoogleDataTransport</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-GoogleDataTransport</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>GoogleDataTransport</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>8.2.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/GoogleUtilities.framework/GoogleUtilities b/frameworks/GoogleUtilities.framework/GoogleUtilities
index e28a0ce..7bec6d6 100644
--- a/frameworks/GoogleUtilities.framework/GoogleUtilities
+++ b/frameworks/GoogleUtilities.framework/GoogleUtilities
Binary files differ
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULAppDelegateSwizzler.h b/frameworks/GoogleUtilities.framework/Headers/GULAppDelegateSwizzler.h
new file mode 100644
index 0000000..58dec49
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULAppDelegateSwizzler.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "GULApplication.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NSString *const GULAppDelegateInterceptorID;
+
+/** This class contains methods that isa swizzle the app delegate. */
+@interface GULAppDelegateSwizzler : NSProxy
+
+/** Registers an app delegate interceptor whose methods will be invoked as they're invoked on the
+ *  original app delegate.
+ *
+ *  @param interceptor An instance of a class that conforms to the application delegate protocol.
+ *      The interceptor is NOT retained.
+ *  @return A unique GULAppDelegateInterceptorID if interceptor was successfully registered; nil
+ *      if it fails.
+ */
++ (nullable GULAppDelegateInterceptorID)registerAppDelegateInterceptor:
+    (id<GULApplicationDelegate>)interceptor;
+
+/** Unregisters an interceptor with the given ID if it exists.
+ *
+ *  @param interceptorID The object that was generated when the interceptor was registered.
+ */
++ (void)unregisterAppDelegateInterceptorWithID:(GULAppDelegateInterceptorID)interceptorID;
+
+/** This method ensures that the original app delegate has been proxied. Call this before
+ *  registering your interceptor. This method is safe to call multiple times (but it only proxies
+ *  the app delegate once).
+ *
+ *  This method doesn't proxy APNS related methods:
+ *  @code
+ *    - application:didRegisterForRemoteNotificationsWithDeviceToken:
+ *    - application:didFailToRegisterForRemoteNotificationsWithError:
+ *    - application:didReceiveRemoteNotification:fetchCompletionHandler:
+ *    - application:didReceiveRemoteNotification:
+ *  @endcode
+ *
+ *  To proxy these methods use +[GULAppDelegateSwizzler
+ *  proxyOriginalDelegateIncludingAPNSMethods]. The methods have to be proxied separately to
+ *  avoid potential warnings from Apple review about missing Push Notification Entitlement (e.g.
+ *  https://github.com/firebase/firebase-ios-sdk/issues/2807)
+ *
+ *  The method has no effect for extensions.
+ *
+ *  @see proxyOriginalDelegateIncludingAPNSMethods
+ */
++ (void)proxyOriginalDelegate;
+
+/** This method ensures that the original app delegate has been proxied including APNS related
+ *  methods. Call this before registering your interceptor. This method is safe to call multiple
+ *  times (but it only proxies the app delegate once) or
+ *  after +[GULAppDelegateSwizzler proxyOriginalDelegate]
+ *
+ *  This method calls +[GULAppDelegateSwizzler proxyOriginalDelegate] under the hood.
+ *  After calling this method the following App Delegate methods will be proxied in addition to
+ *  the methods proxied by proxyOriginalDelegate:
+ *  @code
+ *    - application:didRegisterForRemoteNotificationsWithDeviceToken:
+ *    - application:didFailToRegisterForRemoteNotificationsWithError:
+ *    - application:didReceiveRemoteNotification:fetchCompletionHandler:
+ *    - application:didReceiveRemoteNotification:
+ *  @endcode
+ *
+ *  The method has no effect for extensions.
+ *
+ *  @see proxyOriginalDelegate
+ */
++ (void)proxyOriginalDelegateIncludingAPNSMethods;
+
+/** Indicates whether app delegate proxy is explicitly disabled or enabled. Enabled by default.
+ *
+ *  @return YES if AppDelegateProxy is Enabled, NO otherwise.
+ */
++ (BOOL)isAppDelegateProxyEnabled;
+
+/** Returns the current sharedApplication.
+ *
+ *  @return the current application instance if in an app, or nil if in extension or if it doesn't
+ * exist.
+ */
++ (nullable GULApplication *)sharedApplication;
+
+/** Do not initialize this class. */
+- (instancetype)init NS_UNAVAILABLE;
+
+NS_ASSUME_NONNULL_END
+
+@end
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULAppEnvironmentUtil.h b/frameworks/GoogleUtilities.framework/Headers/GULAppEnvironmentUtil.h
similarity index 80%
rename from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULAppEnvironmentUtil.h
rename to frameworks/GoogleUtilities.framework/Headers/GULAppEnvironmentUtil.h
index 2fb1622..d2bb935 100644
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULAppEnvironmentUtil.h
+++ b/frameworks/GoogleUtilities.framework/Headers/GULAppEnvironmentUtil.h
@@ -16,6 +16,8 @@
 
 #import <Foundation/Foundation.h>
 
+NS_ASSUME_NONNULL_BEGIN
+
 @interface GULAppEnvironmentUtil : NSObject
 
 /// Indicates whether the app is from Apple Store or not. Returns NO if the app is on simulator,
@@ -31,7 +33,7 @@
 + (BOOL)isSimulator;
 
 /// The current device model. Returns an empty string if device model cannot be retrieved.
-+ (NSString *)deviceModel;
++ (nullable NSString *)deviceModel;
 
 /// The current operating system version. Returns an empty string if the system version cannot be
 /// retrieved.
@@ -44,4 +46,15 @@
 + (BOOL)isIOS7OrHigher DEPRECATED_MSG_ATTRIBUTE(
     "Always `YES` because only iOS 8 and higher supported. The method will be removed.");
 
+/// @return YES if Swift runtime detected in the app.
++ (BOOL)hasSwiftRuntime;
+
+/// @return An Apple platform. Possible values "ios", "tvos", "macos", "watchos", "maccatalyst".
++ (NSString *)applePlatform;
+
+/// @return The way the library was added to the app, e.g. "swiftpm", "cocoapods", etc.
++ (NSString *)deploymentType;
+
 @end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULApplication.h b/frameworks/GoogleUtilities.framework/Headers/GULApplication.h
new file mode 100644
index 0000000..8067212
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULApplication.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+#if TARGET_OS_IOS || TARGET_OS_TV
+
+#import <UIKit/UIKit.h>
+
+#define GULApplication UIApplication
+#define GULApplicationDelegate UIApplicationDelegate
+#define GULUserActivityRestoring UIUserActivityRestoring
+
+static NSString *const kGULApplicationClassName = @"UIApplication";
+
+#elif TARGET_OS_OSX
+
+#import <AppKit/AppKit.h>
+
+#define GULApplication NSApplication
+#define GULApplicationDelegate NSApplicationDelegate
+#define GULUserActivityRestoring NSUserActivityRestoring
+
+static NSString *const kGULApplicationClassName = @"NSApplication";
+
+#elif TARGET_OS_WATCH
+
+#import <WatchKit/WatchKit.h>
+
+// We match the according watchOS API but swizzling should not work in watch
+#define GULApplication WKExtension
+#define GULApplicationDelegate WKExtensionDelegate
+#define GULUserActivityRestoring NSUserActivityRestoring
+
+static NSString *const kGULApplicationClassName = @"WKExtension";
+
+#endif
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULHeartbeatDateStorage.h b/frameworks/GoogleUtilities.framework/Headers/GULHeartbeatDateStorage.h
similarity index 100%
rename from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULHeartbeatDateStorage.h
rename to frameworks/GoogleUtilities.framework/Headers/GULHeartbeatDateStorage.h
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULKeychainStorage.h b/frameworks/GoogleUtilities.framework/Headers/GULKeychainStorage.h
similarity index 100%
rename from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULKeychainStorage.h
rename to frameworks/GoogleUtilities.framework/Headers/GULKeychainStorage.h
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULKeychainUtils.h b/frameworks/GoogleUtilities.framework/Headers/GULKeychainUtils.h
similarity index 100%
rename from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULKeychainUtils.h
rename to frameworks/GoogleUtilities.framework/Headers/GULKeychainUtils.h
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULLogger.h b/frameworks/GoogleUtilities.framework/Headers/GULLogger.h
similarity index 96%
rename from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULLogger.h
rename to frameworks/GoogleUtilities.framework/Headers/GULLogger.h
index 1146ee2..6797399 100644
--- a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULLogger.h
+++ b/frameworks/GoogleUtilities.framework/Headers/GULLogger.h
@@ -16,11 +16,7 @@
 
 #import <Foundation/Foundation.h>
 
-#if SWIFT_PACKAGE
-@import GoogleUtilities_Logger;
-#else
-#import <GoogleUtilities/GULLoggerLevel.h>
-#endif
+#import "GULLoggerLevel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -65,7 +61,7 @@
  * Register version to include in logs.
  * (required) version
  */
-extern void GULLoggerRegisterVersion(const char *version);
+extern void GULLoggerRegisterVersion(NSString *version);
 
 /**
  * Logs a message to the Xcode console and the device log. If running from AppStore, will
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULLoggerCodes.h b/frameworks/GoogleUtilities.framework/Headers/GULLoggerCodes.h
deleted file mode 100644
index 053ce84..0000000
--- a/frameworks/GoogleUtilities.framework/Headers/GULLoggerCodes.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2018 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-typedef NS_ENUM(NSInteger, GULSwizzlerMessageCode) {
-  // App Delegate Swizzling.
-  kGULSwizzlerMessageCodeAppDelegateSwizzling000 = 1000,                 // I-SWZ001000
-  kGULSwizzlerMessageCodeAppDelegateSwizzling001 = 1001,                 // I-SWZ001001
-  kGULSwizzlerMessageCodeAppDelegateSwizzling002 = 1002,                 // I-SWZ001002
-  kGULSwizzlerMessageCodeAppDelegateSwizzling003 = 1003,                 // I-SWZ001003
-  kGULSwizzlerMessageCodeAppDelegateSwizzling004 = 1004,                 // I-SWZ001004
-  kGULSwizzlerMessageCodeAppDelegateSwizzling005 = 1005,                 // I-SWZ001005
-  kGULSwizzlerMessageCodeAppDelegateSwizzling006 = 1006,                 // I-SWZ001006
-  kGULSwizzlerMessageCodeAppDelegateSwizzling007 = 1007,                 // I-SWZ001007
-  kGULSwizzlerMessageCodeAppDelegateSwizzling008 = 1008,                 // I-SWZ001008
-  kGULSwizzlerMessageCodeAppDelegateSwizzling009 = 1009,                 // I-SWZ001009
-  kGULSwizzlerMessageCodeAppDelegateSwizzling010 = 1010,                 // I-SWZ001010
-  kGULSwizzlerMessageCodeAppDelegateSwizzling011 = 1011,                 // I-SWZ001011
-  kGULSwizzlerMessageCodeAppDelegateSwizzling012 = 1012,                 // I-SWZ001012
-  kGULSwizzlerMessageCodeAppDelegateSwizzling013 = 1013,                 // I-SWZ001013
-  kGULSwizzlerMessageCodeAppDelegateSwizzlingInvalidAppDelegate = 1014,  // I-SWZ001014
-
-  // Scene Delegate Swizzling.
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling000 = 1100,                   // I-SWZ001100
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling001 = 1101,                   // I-SWZ001101
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling002 = 1102,                   // I-SWZ001102
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling003 = 1103,                   // I-SWZ001103
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling004 = 1104,                   // I-SWZ001104
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling005 = 1105,                   // I-SWZ001105
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling006 = 1106,                   // I-SWZ001106
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling007 = 1107,                   // I-SWZ001107
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling008 = 1108,                   // I-SWZ001108
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling009 = 1109,                   // I-SWZ001109
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling010 = 1110,                   // I-SWZ001110
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling011 = 1111,                   // I-SWZ001111
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling012 = 1112,                   // I-SWZ001112
-  kGULSwizzlerMessageCodeSceneDelegateSwizzling013 = 1113,                   // I-SWZ001113
-  kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate = 1114,  // I-SWZ001114
-
-  // Method Swizzling.
-  kGULSwizzlerMessageCodeMethodSwizzling000 = 2000,  // I-SWZ002000
-};
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULMutableDictionary.h b/frameworks/GoogleUtilities.framework/Headers/GULMutableDictionary.h
new file mode 100644
index 0000000..a8cc45b
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULMutableDictionary.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+/// A mutable dictionary that provides atomic accessor and mutators.
+@interface GULMutableDictionary : NSObject
+
+/// Returns an object given a key in the dictionary or nil if not found.
+- (id)objectForKey:(id)key;
+
+/// Updates the object given its key or adds it to the dictionary if it is not in the dictionary.
+- (void)setObject:(id)object forKey:(id<NSCopying>)key;
+
+/// Removes the object given its session ID from the dictionary.
+- (void)removeObjectForKey:(id)key;
+
+/// Removes all objects.
+- (void)removeAllObjects;
+
+/// Returns the number of current objects in the dictionary.
+- (NSUInteger)count;
+
+/// Returns an object given a key in the dictionary or nil if not found.
+- (id)objectForKeyedSubscript:(id<NSCopying>)key;
+
+/// Updates the object given its key or adds it to the dictionary if it is not in the dictionary.
+- (void)setObject:(id)obj forKeyedSubscript:(id<NSCopying>)key;
+
+/// Returns the immutable dictionary.
+- (NSDictionary *)dictionary;
+
+@end
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULNetwork.h b/frameworks/GoogleUtilities.framework/Headers/GULNetwork.h
new file mode 100644
index 0000000..0e75ae5
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULNetwork.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "GULNetworkConstants.h"
+#import "GULNetworkLoggerProtocol.h"
+#import "GULNetworkURLSession.h"
+
+/// Delegate protocol for GULNetwork events.
+@protocol GULNetworkReachabilityDelegate
+
+/// Tells the delegate to handle events when the network reachability changes to connected or not
+/// connected.
+- (void)reachabilityDidChange;
+
+@end
+
+/// The Network component that provides network status and handles network requests and responses.
+/// This is not thread safe.
+///
+/// NOTE:
+/// User must add FIRAnalytics handleEventsForBackgroundURLSessionID:completionHandler to the
+/// AppDelegate application:handleEventsForBackgroundURLSession:completionHandler:
+@interface GULNetwork : NSObject
+
+/// Indicates if network connectivity is available.
+@property(nonatomic, readonly, getter=isNetworkConnected) BOOL networkConnected;
+
+/// Indicates if there are any uploads in progress.
+@property(nonatomic, readonly, getter=hasUploadInProgress) BOOL uploadInProgress;
+
+/// An optional delegate that can be used in the event when network reachability changes.
+@property(nonatomic, weak) id<GULNetworkReachabilityDelegate> reachabilityDelegate;
+
+/// An optional delegate that can be used to log messages, warnings or errors that occur in the
+/// network operations.
+@property(nonatomic, weak) id<GULNetworkLoggerDelegate> loggerDelegate;
+
+/// Indicates whether the logger should display debug messages.
+@property(nonatomic, assign) BOOL isDebugModeEnabled;
+
+/// The time interval in seconds for the network request to timeout.
+@property(nonatomic, assign) NSTimeInterval timeoutInterval;
+
+/// Initializes with the default reachability host.
+- (instancetype)init;
+
+/// Initializes with a custom reachability host.
+- (instancetype)initWithReachabilityHost:(NSString *)reachabilityHost;
+
+/// Handles events when background session with the given ID has finished.
++ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID
+                            completionHandler:(GULNetworkSystemCompletionHandler)completionHandler;
+
+/// Compresses and sends a POST request with the provided data to the URL. The session will be
+/// background session if usingBackgroundSession is YES. Otherwise, the POST session is default
+/// session. Returns a session ID or nil if an error occurs.
+- (NSString *)postURL:(NSURL *)url
+                   payload:(NSData *)payload
+                     queue:(dispatch_queue_t)queue
+    usingBackgroundSession:(BOOL)usingBackgroundSession
+         completionHandler:(GULNetworkCompletionHandler)handler;
+
+/// Sends a GET request with the provided data to the URL. The session will be background session
+/// if usingBackgroundSession is YES. Otherwise, the GET session is default session. Returns a
+/// session ID or nil if an error occurs.
+- (NSString *)getURL:(NSURL *)url
+                   headers:(NSDictionary *)headers
+                     queue:(dispatch_queue_t)queue
+    usingBackgroundSession:(BOOL)usingBackgroundSession
+         completionHandler:(GULNetworkCompletionHandler)handler;
+
+@end
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULNetworkConstants.h b/frameworks/GoogleUtilities.framework/Headers/GULNetworkConstants.h
new file mode 100644
index 0000000..1cbedd1
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULNetworkConstants.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+/// Error codes in Firebase Network error domain.
+/// Note: these error codes should never change. It would make it harder to decode the errors if
+/// we inadvertently altered any of these codes in a future SDK version.
+typedef NS_ENUM(NSInteger, GULNetworkErrorCode) {
+  /// Unknown error.
+  GULNetworkErrorCodeUnknown = 0,
+  /// Error occurs when the request URL is invalid.
+  GULErrorCodeNetworkInvalidURL = 1,
+  /// Error occurs when request cannot be constructed.
+  GULErrorCodeNetworkRequestCreation = 2,
+  /// Error occurs when payload cannot be compressed.
+  GULErrorCodeNetworkPayloadCompression = 3,
+  /// Error occurs when session task cannot be created.
+  GULErrorCodeNetworkSessionTaskCreation = 4,
+  /// Error occurs when there is no response.
+  GULErrorCodeNetworkInvalidResponse = 5
+};
+
+#pragma mark - Network constants
+
+/// The prefix of the ID of the background session.
+extern NSString *const kGULNetworkBackgroundSessionConfigIDPrefix;
+
+/// The sub directory to store the files of data that is being uploaded in the background.
+extern NSString *const kGULNetworkApplicationSupportSubdirectory;
+
+/// Name of the temporary directory that stores files for background uploading.
+extern NSString *const kGULNetworkTempDirectoryName;
+
+/// The period when the temporary uploading file can stay.
+extern const NSTimeInterval kGULNetworkTempFolderExpireTime;
+
+/// The default network request timeout interval.
+extern const NSTimeInterval kGULNetworkTimeOutInterval;
+
+/// The host to check the reachability of the network.
+extern NSString *const kGULNetworkReachabilityHost;
+
+/// The key to get the error context of the UserInfo.
+extern NSString *const kGULNetworkErrorContext;
+
+#pragma mark - Network Status Code
+
+extern const int kGULNetworkHTTPStatusOK;
+extern const int kGULNetworkHTTPStatusNoContent;
+extern const int kGULNetworkHTTPStatusCodeMultipleChoices;
+extern const int kGULNetworkHTTPStatusCodeMovedPermanently;
+extern const int kGULNetworkHTTPStatusCodeFound;
+extern const int kGULNetworkHTTPStatusCodeNotModified;
+extern const int kGULNetworkHTTPStatusCodeMovedTemporarily;
+extern const int kGULNetworkHTTPStatusCodeNotFound;
+extern const int kGULNetworkHTTPStatusCodeCannotAcceptTraffic;
+extern const int kGULNetworkHTTPStatusCodeUnavailable;
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULNetworkLoggerProtocol.h b/frameworks/GoogleUtilities.framework/Headers/GULNetworkLoggerProtocol.h
new file mode 100644
index 0000000..425c073
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULNetworkLoggerProtocol.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "GULNetworkMessageCode.h"
+
+/// The log levels used by GULNetworkLogger.
+typedef NS_ENUM(NSInteger, GULNetworkLogLevel) {
+  kGULNetworkLogLevelError = 3,
+  kGULNetworkLogLevelWarning = 4,
+  kGULNetworkLogLevelInfo = 6,
+  kGULNetworkLogLevelDebug = 7,
+};
+
+@protocol GULNetworkLoggerDelegate <NSObject>
+
+@required
+/// Tells the delegate to log a message with an array of contexts and the log level.
+- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel
+                    messageCode:(GULNetworkMessageCode)messageCode
+                        message:(NSString *)message
+                       contexts:(NSArray *)contexts;
+
+/// Tells the delegate to log a message with a context and the log level.
+- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel
+                    messageCode:(GULNetworkMessageCode)messageCode
+                        message:(NSString *)message
+                        context:(id)context;
+
+/// Tells the delegate to log a message with the log level.
+- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel
+                    messageCode:(GULNetworkMessageCode)messageCode
+                        message:(NSString *)message;
+
+@end
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULNetworkMessageCode.h b/frameworks/GoogleUtilities.framework/Headers/GULNetworkMessageCode.h
new file mode 100644
index 0000000..507bc5a
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULNetworkMessageCode.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+// Make sure these codes do not overlap with any contained in the FIRAMessageCode enum.
+typedef NS_ENUM(NSInteger, GULNetworkMessageCode) {
+  // GULNetwork.m
+  kGULNetworkMessageCodeNetwork000 = 900000,  // I-NET900000
+  kGULNetworkMessageCodeNetwork001 = 900001,  // I-NET900001
+  kGULNetworkMessageCodeNetwork002 = 900002,  // I-NET900002
+  kGULNetworkMessageCodeNetwork003 = 900003,  // I-NET900003
+  // GULNetworkURLSession.m
+  kGULNetworkMessageCodeURLSession000 = 901000,  // I-NET901000
+  kGULNetworkMessageCodeURLSession001 = 901001,  // I-NET901001
+  kGULNetworkMessageCodeURLSession002 = 901002,  // I-NET901002
+  kGULNetworkMessageCodeURLSession003 = 901003,  // I-NET901003
+  kGULNetworkMessageCodeURLSession004 = 901004,  // I-NET901004
+  kGULNetworkMessageCodeURLSession005 = 901005,  // I-NET901005
+  kGULNetworkMessageCodeURLSession006 = 901006,  // I-NET901006
+  kGULNetworkMessageCodeURLSession007 = 901007,  // I-NET901007
+  kGULNetworkMessageCodeURLSession008 = 901008,  // I-NET901008
+  kGULNetworkMessageCodeURLSession009 = 901009,  // I-NET901009
+  kGULNetworkMessageCodeURLSession010 = 901010,  // I-NET901010
+  kGULNetworkMessageCodeURLSession011 = 901011,  // I-NET901011
+  kGULNetworkMessageCodeURLSession012 = 901012,  // I-NET901012
+  kGULNetworkMessageCodeURLSession013 = 901013,  // I-NET901013
+  kGULNetworkMessageCodeURLSession014 = 901014,  // I-NET901014
+  kGULNetworkMessageCodeURLSession015 = 901015,  // I-NET901015
+  kGULNetworkMessageCodeURLSession016 = 901016,  // I-NET901016
+  kGULNetworkMessageCodeURLSession017 = 901017,  // I-NET901017
+  kGULNetworkMessageCodeURLSession018 = 901018,  // I-NET901018
+  kGULNetworkMessageCodeURLSession019 = 901019,  // I-NET901019
+};
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULNetworkURLSession.h b/frameworks/GoogleUtilities.framework/Headers/GULNetworkURLSession.h
new file mode 100644
index 0000000..3f9f7f9
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULNetworkURLSession.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "GULNetworkLoggerProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void (^GULNetworkCompletionHandler)(NSHTTPURLResponse *_Nullable response,
+                                            NSData *_Nullable data,
+                                            NSError *_Nullable error);
+typedef void (^GULNetworkURLSessionCompletionHandler)(NSHTTPURLResponse *_Nullable response,
+                                                      NSData *_Nullable data,
+                                                      NSString *sessionID,
+                                                      NSError *_Nullable error);
+typedef void (^GULNetworkSystemCompletionHandler)(void);
+
+/// The protocol that uses NSURLSession for iOS >= 7.0 to handle requests and responses.
+@interface GULNetworkURLSession : NSObject
+
+/// Indicates whether the background network is enabled. Default value is NO.
+@property(nonatomic, getter=isBackgroundNetworkEnabled) BOOL backgroundNetworkEnabled;
+
+/// The logger delegate to log message, errors or warnings that occur during the network operations.
+@property(nonatomic, weak, nullable) id<GULNetworkLoggerDelegate> loggerDelegate;
+
+/// Calls the system provided completion handler after the background session is finished.
++ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID
+                            completionHandler:(GULNetworkSystemCompletionHandler)completionHandler;
+
+/// Initializes with logger delegate.
+- (instancetype)initWithNetworkLoggerDelegate:
+    (nullable id<GULNetworkLoggerDelegate>)networkLoggerDelegate NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/// Sends an asynchronous POST request and calls the provided completion handler when the request
+/// completes or when errors occur, and returns an ID of the session/connection.
+- (nullable NSString *)sessionIDFromAsyncPOSTRequest:(NSURLRequest *)request
+                                   completionHandler:(GULNetworkURLSessionCompletionHandler)handler;
+
+/// Sends an asynchronous GET request and calls the provided completion handler when the request
+/// completes or when errors occur, and returns an ID of the session.
+- (nullable NSString *)sessionIDFromAsyncGETRequest:(NSURLRequest *)request
+                                  completionHandler:(GULNetworkURLSessionCompletionHandler)handler;
+
+NS_ASSUME_NONNULL_END
+@end
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULObjectSwizzler.h b/frameworks/GoogleUtilities.framework/Headers/GULObjectSwizzler.h
new file mode 100644
index 0000000..b0a692a
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULObjectSwizzler.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Enums that map to their OBJC-prefixed counterparts. */
+typedef OBJC_ENUM(uintptr_t, GUL_ASSOCIATION){
+
+    // Is a weak association.
+    GUL_ASSOCIATION_ASSIGN,
+
+    // Is a nonatomic strong association.
+    GUL_ASSOCIATION_RETAIN_NONATOMIC,
+
+    // Is a nonatomic copy association.
+    GUL_ASSOCIATION_COPY_NONATOMIC,
+
+    // Is an atomic strong association.
+    GUL_ASSOCIATION_RETAIN,
+
+    // Is an atomic copy association.
+    GUL_ASSOCIATION_COPY};
+
+/** This class handles swizzling a specific instance of a class by generating a
+ *  dynamic subclass and installing selectors and properties onto the dynamic
+ *  subclass. Then, the instance's class is set to the dynamic subclass. There
+ *  should be a 1:1 ratio of object swizzlers to swizzled instances.
+ */
+@interface GULObjectSwizzler : NSObject
+
+/** The subclass that is generated. */
+@property(nullable, nonatomic, readonly) Class generatedClass;
+
+/** Sets an associated object in the runtime. This mechanism can be used to
+ *  simulate adding properties.
+ *
+ *  @param object The object that will be queried for the associated object.
+ *  @param key The key of the associated object.
+ *  @param value The value to associate to the swizzled object.
+ *  @param association The mechanism to use when associating the objects.
+ */
++ (void)setAssociatedObject:(id)object
+                        key:(NSString *)key
+                      value:(nullable id)value
+                association:(GUL_ASSOCIATION)association;
+
+/** Gets an associated object in the runtime. This mechanism can be used to
+ *  simulate adding properties.
+ *
+ *  @param object The object that will be queried for the associated object.
+ *  @param key The key of the associated object.
+ */
++ (nullable id)getAssociatedObject:(id)object key:(NSString *)key;
+
+/** Please use the designated initializer. */
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Instantiates an object swizzler using an object it will operate on.
+ *  Generates a new class pair.
+ *
+ *  @note There is no need to store this object. After calling -swizzle, this
+ *  object can be found by calling -gul_objectSwizzler
+ *
+ *  @param object The object to be swizzled.
+ *  @return An instance of this class.
+ */
+- (instancetype)initWithObject:(id)object NS_DESIGNATED_INITIALIZER;
+
+/** Sets an associated object in the runtime. This mechanism can be used to
+ *  simulate adding properties.
+ *
+ *  @param key The key of the associated object.
+ *  @param value The value to associate to the swizzled object.
+ *  @param association The mechanism to use when associating the objects.
+ */
+- (void)setAssociatedObjectWithKey:(NSString *)key
+                             value:(id)value
+                       association:(GUL_ASSOCIATION)association;
+
+/** Gets an associated object in the runtime. This mechanism can be used to
+ *  simulate adding properties.
+ *
+ *  @param key The key of the associated object.
+ */
+- (nullable id)getAssociatedObjectForKey:(NSString *)key;
+
+/** Copies a selector from an existing class onto the generated dynamic subclass
+ *  that this object will adopt. This mechanism can be used to add methods to
+ *  specific instances of a class.
+ *
+ *  @note Should not be called after calling -swizzle.
+ *  @param selector The selector to add to the instance.
+ *  @param aClass The class supplying an implementation of the method.
+ *  @param isClassSelector A BOOL specifying whether the selector is a class or
+ * instance selector.
+ */
+- (void)copySelector:(SEL)selector fromClass:(Class)aClass isClassSelector:(BOOL)isClassSelector;
+
+/** Swizzles the object, changing its class to the generated class. Registers
+ *  the class pair. */
+- (void)swizzle;
+
+/** @return The value of -[objectBeingSwizzled isProxy] */
+- (BOOL)isSwizzlingProxyObject;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULOriginalIMPConvenienceMacros.h b/frameworks/GoogleUtilities.framework/Headers/GULOriginalIMPConvenienceMacros.h
new file mode 100644
index 0000000..a33262a
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULOriginalIMPConvenienceMacros.h
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * GULOriginalIMPConvenienceMacros.h
+ *
+ * This header contains convenience macros for invoking the original IMP of a swizzled method.
+ */
+
+/**
+ *  Invokes original IMP when the original selector takes no arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP0(__receivingObject, __swizzledSEL, __returnType, __originalIMP) \
+  ((__returnType(*)(id, SEL))__originalIMP)(__receivingObject, __swizzledSEL)
+
+/**
+ *  Invokes original IMP when the original selector takes 1 argument.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP1(__receivingObject, __swizzledSEL, __returnType, __originalIMP,   \
+                                 __arg1)                                                          \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1)))__originalIMP)(__receivingObject, __swizzledSEL, \
+                                                                __arg1)
+
+/**
+ *  Invokes original IMP when the original selector takes 2 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP2(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
+                                 __arg1, __arg2)                                                \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2)))__originalIMP)(            \
+      __receivingObject, __swizzledSEL, __arg1, __arg2)
+
+/**
+ *  Invokes original IMP when the original selector takes 3 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP3(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
+                                 __arg1, __arg2, __arg3)                                         \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2),                             \
+                    __typeof__(__arg3)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \
+                                                       __arg2, __arg3)
+
+/**
+ *  Invokes original IMP when the original selector takes 4 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ *  @param __arg4 The fourth argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP4(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
+                                 __arg1, __arg2, __arg3, __arg4)                                 \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),         \
+                    __typeof__(__arg4)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \
+                                                       __arg2, __arg3, __arg4)
+
+/**
+ *  Invokes original IMP when the original selector takes 5 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ *  @param __arg4 The fourth argument.
+ *  @param __arg5 The fifth argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP5(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
+                                 __arg1, __arg2, __arg3, __arg4, __arg5)                        \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),        \
+                    __typeof__(__arg4), __typeof__(__arg5)))__originalIMP)(                     \
+      __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5)
+
+/**
+ *  Invokes original IMP when the original selector takes 6 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ *  @param __arg4 The fourth argument.
+ *  @param __arg5 The fifth argument.
+ *  @param __arg6 The sixth argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP6(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
+                                 __arg1, __arg2, __arg3, __arg4, __arg5, __arg6)                \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),        \
+                    __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6)))__originalIMP)( \
+      __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6)
+
+/**
+ *  Invokes original IMP when the original selector takes 7 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ *  @param __arg4 The fourth argument.
+ *  @param __arg5 The fifth argument.
+ *  @param __arg6 The sixth argument.
+ *  @param __arg7 The seventh argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP7(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
+                                 __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7)        \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),        \
+                    __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6),                 \
+                    __typeof__(__arg7)))__originalIMP)(                                         \
+      __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7)
+
+/**
+ *  Invokes original IMP when the original selector takes 8 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ *  @param __arg4 The fourth argument.
+ *  @param __arg5 The fifth argument.
+ *  @param __arg6 The sixth argument.
+ *  @param __arg7 The seventh argument.
+ *  @param __arg8 The eighth argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP8(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
+                                 __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8) \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),         \
+                    __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6),                  \
+                    __typeof__(__arg7), __typeof__(__arg8)))__originalIMP)(                      \
+      __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7,  \
+      __arg8)
+
+/**
+ *  Invokes original IMP when the original selector takes 9 arguments.
+ *
+ *  @param __receivingObject The object on which the IMP is invoked.
+ *  @param __swizzledSEL The selector used for swizzling.
+ *  @param __returnType  The return type of the original implementation.
+ *  @param __originalIMP The original IMP.
+ *  @param __arg1 The first argument.
+ *  @param __arg2 The second argument.
+ *  @param __arg3 The third argument.
+ *  @param __arg4 The fourth argument.
+ *  @param __arg5 The fifth argument.
+ *  @param __arg6 The sixth argument.
+ *  @param __arg7 The seventh argument.
+ *  @param __arg8 The eighth argument.
+ *  @param __arg9 The ninth argument.
+ */
+#define GUL_INVOKE_ORIGINAL_IMP9(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
+                                 __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8, \
+                                 __arg9)                                                         \
+  ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),         \
+                    __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6),                  \
+                    __typeof__(__arg7), __typeof__(__arg8), __typeof__(__arg9)))__originalIMP)(  \
+      __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7,  \
+      __arg8, __arg9)
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULReachabilityChecker.h b/frameworks/GoogleUtilities.framework/Headers/GULReachabilityChecker.h
new file mode 100644
index 0000000..0c70c05
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULReachabilityChecker.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+#if !TARGET_OS_WATCH
+#import <SystemConfiguration/SystemConfiguration.h>
+#endif
+
+/// Reachability Status
+typedef enum {
+  kGULReachabilityUnknown,  ///< Have not yet checked or been notified whether host is reachable.
+  kGULReachabilityNotReachable,  ///< Host is not reachable.
+  kGULReachabilityViaWifi,       ///< Host is reachable via Wifi.
+  kGULReachabilityViaCellular,   ///< Host is reachable via cellular.
+} GULReachabilityStatus;
+
+const NSString *GULReachabilityStatusString(GULReachabilityStatus status);
+
+@class GULReachabilityChecker;
+
+/// Google Analytics iOS Reachability Checker.
+@protocol GULReachabilityDelegate
+@required
+/// Called when network status has changed.
+- (void)reachability:(GULReachabilityChecker *)reachability
+       statusChanged:(GULReachabilityStatus)status;
+@end
+
+/// Google Analytics iOS Network Status Checker.
+@interface GULReachabilityChecker : NSObject
+
+/// The last known reachability status, or GULReachabilityStatusUnknown if the
+/// checker is not active.
+@property(nonatomic, readonly) GULReachabilityStatus reachabilityStatus;
+/// The host to which reachability status is to be checked.
+@property(nonatomic, copy, readonly) NSString *host;
+/// The delegate to be notified of reachability status changes.
+@property(nonatomic, weak) id<GULReachabilityDelegate> reachabilityDelegate;
+/// `YES` if the reachability checker is active, `NO` otherwise.
+@property(nonatomic, readonly) BOOL isActive;
+
+/// Initialize the reachability checker. Note that you must call start to begin checking for and
+/// receiving notifications about network status changes.
+///
+/// @param reachabilityDelegate The delegate to be notified when reachability status to host
+/// changes.
+///
+/// @param host The name of the host.
+///
+- (instancetype)initWithReachabilityDelegate:(id<GULReachabilityDelegate>)reachabilityDelegate
+                                    withHost:(NSString *)host;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/// Start checking for reachability to the specified host. This has no effect if the status
+/// checker is already checking for connectivity.
+///
+/// @return `YES` if initiating status checking was successful or the status checking has already
+/// been initiated, `NO` otherwise.
+- (BOOL)start;
+
+/// Stop checking for reachability to the specified host. This has no effect if the status
+/// checker is not checking for connectivity.
+- (void)stop;
+
+@end
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULSceneDelegateSwizzler.h b/frameworks/GoogleUtilities.framework/Headers/GULSceneDelegateSwizzler.h
new file mode 100644
index 0000000..ed080a3
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULSceneDelegateSwizzler.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+#import <TargetConditionals.h>
+
+#if !TARGET_OS_OSX
+#import <UIKit/UIKit.h>
+#endif  // !TARGET_OS_OSX
+
+#if ((TARGET_OS_IOS || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 130000))
+#define UISCENE_SUPPORTED 1
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NSString *const GULSceneDelegateInterceptorID;
+
+/** This class contains methods that isa swizzle the scene delegate. */
+@interface GULSceneDelegateSwizzler : NSProxy
+
+#if UISCENE_SUPPORTED
+
+/** Registers a scene delegate interceptor whose methods will be invoked as they're invoked on the
+ *  original scene delegate.
+ *
+ *  @param interceptor An instance of a class that conforms to the application delegate protocol.
+ *      The interceptor is NOT retained.
+ *  @return A unique GULSceneDelegateInterceptorID if interceptor was successfully registered; nil
+ *      if it fails.
+ */
++ (nullable GULSceneDelegateInterceptorID)registerSceneDelegateInterceptor:
+    (id<UISceneDelegate>)interceptor API_AVAILABLE(ios(13.0), tvos(13.0));
+
+/** Unregisters an interceptor with the given ID if it exists.
+ *
+ *  @param interceptorID The object that was generated when the interceptor was registered.
+ */
++ (void)unregisterSceneDelegateInterceptorWithID:(GULSceneDelegateInterceptorID)interceptorID
+    API_AVAILABLE(ios(13.0), tvos(13.0));
+
+/** Do not initialize this class. */
+- (instancetype)init NS_UNAVAILABLE;
+
+#endif  // UISCENE_SUPPORTED
+
+/** This method ensures that the original scene delegate has been proxied. Call this before
+ *  registering your interceptor. This method is safe to call multiple times (but it only proxies
+ *  the scene delegate once).
+ *
+ *  The method has no effect for extensions.
+ */
++ (void)proxyOriginalSceneDelegate;
+
+/** Indicates whether scene delegate proxy is explicitly disabled or enabled. Enabled by default.
+ *
+ *  @return YES if SceneDelegateProxy is Enabled, NO otherwise.
+ */
++ (BOOL)isSceneDelegateProxyEnabled;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/FirebaseCoreDiagnostics.framework/Headers/GULSecureCoding.h b/frameworks/GoogleUtilities.framework/Headers/GULSecureCoding.h
similarity index 100%
rename from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULSecureCoding.h
rename to frameworks/GoogleUtilities.framework/Headers/GULSecureCoding.h
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULSwizzledObject.h b/frameworks/GoogleUtilities.framework/Headers/GULSwizzledObject.h
new file mode 100644
index 0000000..314ceec
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULSwizzledObject.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+@class GULObjectSwizzler;
+
+FOUNDATION_EXPORT NSString *kSwizzlerAssociatedObjectKey;
+
+/** This class exists as a method donor. These methods will be added to all objects that are
+ *  swizzled by the object swizzler. This class should not be instantiated.
+ */
+@interface GULSwizzledObject : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Copies the methods below to the swizzled object.
+ *
+ *  @param objectSwizzler The swizzler to use when adding the methods below.
+ */
++ (void)copyDonorSelectorsUsingObjectSwizzler:(GULObjectSwizzler *)objectSwizzler;
+
+#pragma mark - Donor methods.
+
+/** @return The generated subclass. Used in respondsToSelector: calls. */
+- (Class)gul_class;
+
+/** @return The object swizzler that manages this object. */
+- (GULObjectSwizzler *)gul_objectSwizzler;
+
+@end
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULSwizzler.h b/frameworks/GoogleUtilities.framework/Headers/GULSwizzler.h
new file mode 100644
index 0000000..26949c8
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULSwizzler.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** This class handles the runtime manipulation necessary to instrument selectors. It stores the
+ *  classes and selectors that have been swizzled, and runs all operations on its own queue.
+ */
+@interface GULSwizzler : NSObject
+
+/** Manipulates the Objective-C runtime to replace the original IMP with the supplied block.
+ *
+ *  @param aClass The class to swizzle.
+ *  @param selector The selector of the class to swizzle.
+ *  @param isClassSelector A BOOL specifying whether the selector is a class or instance selector.
+ *  @param block The block that replaces the original IMP.
+ */
++ (void)swizzleClass:(Class)aClass
+            selector:(SEL)selector
+     isClassSelector:(BOOL)isClassSelector
+           withBlock:(nullable id)block;
+
+/** Returns the current IMP for the given class and selector.
+ *
+ *  @param aClass The class to use.
+ *  @param selector The selector to find the implementation of.
+ *  @param isClassSelector A BOOL specifying whether the selector is a class or instance selector.
+ *  @return The implementation of the selector in the runtime.
+ */
++ (nullable IMP)currentImplementationForClass:(Class)aClass
+                                     selector:(SEL)selector
+                              isClassSelector:(BOOL)isClassSelector;
+
+/** Checks the runtime to see if a selector exists on a class. If a property is declared as
+ *  @dynamic, we have a reverse swizzling situation, where the implementation of a method exists
+ *  only in concrete subclasses, and NOT in the superclass. We can detect that situation using
+ *  this helper method. Similarly, we can detect situations where a class doesn't implement a
+ *  protocol method.
+ *
+ *  @param selector The selector to check for.
+ *  @param aClass The class to check.
+ *  @param isClassSelector A BOOL specifying whether the selector is a class or instance selector.
+ *  @return YES if the method was found in this selector/class combination, NO otherwise.
+ */
++ (BOOL)selector:(SEL)selector existsInClass:(Class)aClass isClassSelector:(BOOL)isClassSelector;
+
+/** Returns a list of all Objective-C (and not primitive) ivars contained by the given object.
+ *
+ *  @param object The object whose ivars will be iterated.
+ *  @return The list of ivar objects.
+ */
++ (NSArray<id> *)ivarObjectsForObject:(id)object;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleDataTransport.framework/Headers/GDTCORReachability.h b/frameworks/GoogleUtilities.framework/Headers/GULURLSessionDataResponse.h
similarity index 63%
rename from frameworks/GoogleDataTransport.framework/Headers/GDTCORReachability.h
rename to frameworks/GoogleUtilities.framework/Headers/GULURLSessionDataResponse.h
index 840f02a..e88eb67 100644
--- a/frameworks/GoogleDataTransport.framework/Headers/GDTCORReachability.h
+++ b/frameworks/GoogleUtilities.framework/Headers/GULURLSessionDataResponse.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 Google
+ * Copyright 2020 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +16,15 @@
 
 #import <Foundation/Foundation.h>
 
-#import "GDTCORPlatform.h"
-
 NS_ASSUME_NONNULL_BEGIN
 
-/** This class helps determine upload conditions by determining connectivity. */
-@interface GDTCORReachability : NSObject
+/** The class represents HTTP response received from `NSURLSession`. */
+@interface GULURLSessionDataResponse : NSObject
 
-/** The current set flags indicating network conditions */
-+ (GDTCORNetworkReachabilityFlags)currentFlags;
+@property(nonatomic, readonly) NSHTTPURLResponse *HTTPResponse;
+@property(nonatomic, nullable, readonly) NSData *HTTPBody;
+
+- (instancetype)initWithResponse:(NSHTTPURLResponse *)response HTTPBody:(nullable NSData *)body;
 
 @end
 
diff --git a/frameworks/GoogleUtilities.framework/Headers/GULUserDefaults.h b/frameworks/GoogleUtilities.framework/Headers/GULUserDefaults.h
new file mode 100644
index 0000000..0d04781
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/GULUserDefaults.h
@@ -0,0 +1,110 @@
+// Copyright 2018 Google
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// A thread-safe user defaults that uses C functions from CFPreferences.h instead of
+/// `NSUserDefaults`. This is to avoid sending an `NSNotification` when it's changed from a
+/// background thread to avoid crashing. // TODO: Insert radar number here.
+@interface GULUserDefaults : NSObject
+
+/// A shared user defaults similar to +[NSUserDefaults standardUserDefaults] and accesses the same
+/// data of the standardUserDefaults.
++ (GULUserDefaults *)standardUserDefaults;
+
+/// Initializes preferences with a suite name that is the same with the NSUserDefaults' suite name.
+/// Both of CFPreferences and NSUserDefaults share the same plist file so their data will exactly
+/// the same.
+///
+/// @param suiteName The name of the suite of the user defaults.
+- (instancetype)initWithSuiteName:(nullable NSString *)suiteName;
+
+#pragma mark - Getters
+
+/// Searches the receiver's search list for a default with the key 'defaultName' and return it. If
+/// another process has changed defaults in the search list, NSUserDefaults will automatically
+/// update to the latest values. If the key in question has been marked as ubiquitous via a Defaults
+/// Configuration File, the latest value may not be immediately available, and the registered value
+/// will be returned instead.
+- (nullable id)objectForKey:(NSString *)defaultName;
+
+/// Equivalent to -objectForKey:, except that it will return nil if the value is not an NSArray.
+- (nullable NSArray *)arrayForKey:(NSString *)defaultName;
+
+/// Equivalent to -objectForKey:, except that it will return nil if the value
+/// is not an NSDictionary.
+- (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
+
+/// Equivalent to -objectForKey:, except that it will convert NSNumber values to their NSString
+/// representation. If a non-string non-number value is found, nil will be returned.
+- (nullable NSString *)stringForKey:(NSString *)defaultName;
+
+/// Equivalent to -objectForKey:, except that it converts the returned value to an NSInteger. If the
+/// value is an NSNumber, the result of -integerValue will be returned. If the value is an NSString,
+/// it will be converted to NSInteger if possible. If the value is a boolean, it will be converted
+/// to either 1 for YES or 0 for NO. If the value is absent or can't be converted to an integer, 0
+/// will be returned.
+- (NSInteger)integerForKey:(NSString *)defaultName;
+
+/// Similar to -integerForKey:, except that it returns a float, and boolean values will not be
+/// converted.
+- (float)floatForKey:(NSString *)defaultName;
+
+/// Similar to -integerForKey:, except that it returns a double, and boolean values will not be
+/// converted.
+- (double)doubleForKey:(NSString *)defaultName;
+
+/// Equivalent to -objectForKey:, except that it converts the returned value to a BOOL. If the value
+/// is an NSNumber, NO will be returned if the value is 0, YES otherwise. If the value is an
+/// NSString, values of "YES" or "1" will return YES, and values of "NO", "0", or any other string
+/// will return NO. If the value is absent or can't be converted to a BOOL, NO will be returned.
+- (BOOL)boolForKey:(NSString *)defaultName;
+
+#pragma mark - Setters
+
+/// Immediately stores a value (or removes the value if `nil` is passed as the value) for the
+/// provided key in the search list entry for the receiver's suite name in the current user and any
+/// host, then asynchronously stores the value persistently, where it is made available to other
+/// processes.
+- (void)setObject:(nullable id)value forKey:(NSString *)defaultName;
+
+/// Equivalent to -setObject:forKey: except that the value is converted from a float to an NSNumber.
+- (void)setFloat:(float)value forKey:(NSString *)defaultName;
+
+/// Equivalent to -setObject:forKey: except that the value is converted from a double to an
+/// NSNumber.
+- (void)setDouble:(double)value forKey:(NSString *)defaultName;
+
+/// Equivalent to -setObject:forKey: except that the value is converted from an NSInteger to an
+/// NSNumber.
+- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
+
+/// Equivalent to -setObject:forKey: except that the value is converted from a BOOL to an NSNumber.
+- (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
+
+#pragma mark - Removing Defaults
+
+/// Equivalent to -[... setObject:nil forKey:defaultName]
+- (void)removeObjectForKey:(NSString *)defaultName;
+
+#pragma mark - Save data
+
+/// Blocks the calling thread until all in-progress set operations have completed.
+- (void)synchronize;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleUtilities.framework/Headers/GoogleUtilities-umbrella.h b/frameworks/GoogleUtilities.framework/Headers/GoogleUtilities-umbrella.h
index 508e631..eb2e472 100644
--- a/frameworks/GoogleUtilities.framework/Headers/GoogleUtilities-umbrella.h
+++ b/frameworks/GoogleUtilities.framework/Headers/GoogleUtilities-umbrella.h
@@ -10,9 +10,31 @@
 #endif
 #endif
 
+#import "GULAppDelegateSwizzler.h"
+#import "GULApplication.h"
+#import "GULSceneDelegateSwizzler.h"
+#import "GULAppEnvironmentUtil.h"
+#import "GULHeartbeatDateStorage.h"
+#import "GULKeychainStorage.h"
+#import "GULKeychainUtils.h"
+#import "GULSecureCoding.h"
+#import "GULURLSessionDataResponse.h"
+#import "NSURLSession+GULPromises.h"
+#import "GULObjectSwizzler.h"
+#import "GULSwizzledObject.h"
+#import "GULLogger.h"
 #import "GULLoggerLevel.h"
-#import "GULLoggerCodes.h"
+#import "GULOriginalIMPConvenienceMacros.h"
+#import "GULSwizzler.h"
 #import "GULNSData+zlib.h"
+#import "GULMutableDictionary.h"
+#import "GULNetwork.h"
+#import "GULNetworkConstants.h"
+#import "GULNetworkLoggerProtocol.h"
+#import "GULNetworkMessageCode.h"
+#import "GULNetworkURLSession.h"
+#import "GULReachabilityChecker.h"
+#import "GULUserDefaults.h"
 
 FOUNDATION_EXPORT double GoogleUtilitiesVersionNumber;
 FOUNDATION_EXPORT const unsigned char GoogleUtilitiesVersionString[];
diff --git a/frameworks/GoogleUtilities.framework/Headers/NSURLSession+GULPromises.h b/frameworks/GoogleUtilities.framework/Headers/NSURLSession+GULPromises.h
new file mode 100644
index 0000000..7bed005
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Headers/NSURLSession+GULPromises.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+@class FBLPromise<Value>;
+@class GULURLSessionDataResponse;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Promise based API for `NSURLSession`. */
+@interface NSURLSession (GULPromises)
+
+/** Creates a promise wrapping `-[NSURLSession dataTaskWithRequest:completionHandler:]` method.
+ * @param URLRequest The request to create a data task with.
+ * @return A promise that is fulfilled when an HTTP response is received (with any response code),
+ * or is rejected with the error passed to the task completion.
+ */
+- (FBLPromise<GULURLSessionDataResponse *> *)gul_dataTaskPromiseWithRequest:
+    (NSURLRequest *)URLRequest;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/frameworks/GoogleUtilities.framework/Info.plist b/frameworks/GoogleUtilities.framework/Info.plist
new file mode 100644
index 0000000..b541bc2
--- /dev/null
+++ b/frameworks/GoogleUtilities.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>GoogleUtilities</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-GoogleUtilities</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>GoogleUtilities</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>7.2.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/PromisesObjC.framework/Info.plist b/frameworks/PromisesObjC.framework/Info.plist
new file mode 100644
index 0000000..9ed334a
--- /dev/null
+++ b/frameworks/PromisesObjC.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>PromisesObjC</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-PromisesObjC</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>PromisesObjC</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>1.2.12</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/PromisesObjC.framework/PromisesObjC b/frameworks/PromisesObjC.framework/PromisesObjC
index 317831b..f68c9c2 100644
--- a/frameworks/PromisesObjC.framework/PromisesObjC
+++ b/frameworks/PromisesObjC.framework/PromisesObjC
Binary files differ
diff --git a/frameworks/WAFirebaseImpl.framework/Headers/WAFirebaseImpl.h b/frameworks/WAFirebaseImpl.framework/Headers/WAFirebaseImpl.h
index a31d8b0..93542bc 100644
--- a/frameworks/WAFirebaseImpl.framework/Headers/WAFirebaseImpl.h
+++ b/frameworks/WAFirebaseImpl.framework/Headers/WAFirebaseImpl.h
@@ -16,5 +16,5 @@
 
 // In this header, you should import all the public headers of your framework using statements like #import <WAFirebaseImpl/PublicHeader.h>
 
-//time:2020/09/02 15:35 ver:3.8.5
+//time:2021/01/23 15:35 ver:3.9.2
 
diff --git a/frameworks/WAFirebaseImpl.framework/Info.plist b/frameworks/WAFirebaseImpl.framework/Info.plist
index 55b6dc2..0a30365 100644
--- a/frameworks/WAFirebaseImpl.framework/Info.plist
+++ b/frameworks/WAFirebaseImpl.framework/Info.plist
Binary files differ
diff --git a/frameworks/WAFirebaseImpl.framework/WAFirebaseImpl b/frameworks/WAFirebaseImpl.framework/WAFirebaseImpl
index 8185afb..f0928c6 100644
--- a/frameworks/WAFirebaseImpl.framework/WAFirebaseImpl
+++ b/frameworks/WAFirebaseImpl.framework/WAFirebaseImpl
Binary files differ
diff --git a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeDirectory b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeDirectory
index 4a7312c..4e70c49 100644
--- a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeDirectory
+++ b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeDirectory
Binary files differ
diff --git a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements
index 3111b7f..67c094c 100644
--- a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements
+++ b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements
Binary files differ
diff --git a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements-1 b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements-1
index 4ae7a0c..39c7ce8 100644
--- a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements-1
+++ b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeRequirements-1
Binary files differ
diff --git a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeResources b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeResources
index 1166fc4..a253374 100644
--- a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeResources
+++ b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeResources
@@ -6,11 +6,11 @@
 	<dict>
 		<key>Headers/WAFirebaseImpl.h</key>
 		<data>
-		YhnbGibSGVOxkRJEuf+snerysE8=
+		Wx5f2IC8qtXRoup68duE3SJK+kc=
 		</data>
 		<key>Info.plist</key>
 		<data>
-		lp6enMqCBh6AT50+6kOOIfDIUZs=
+		fXO/Dl9htAtsbV3X04RKPOzZ79s=
 		</data>
 		<key>Modules/module.modulemap</key>
 		<data>
@@ -23,11 +23,11 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			YhnbGibSGVOxkRJEuf+snerysE8=
+			Wx5f2IC8qtXRoup68duE3SJK+kc=
 			</data>
 			<key>hash2</key>
 			<data>
-			P417On82s+y0oTLzN0vf1IPKFklRGzegntW5zQ/cjB8=
+			yNUrjWlplqIKkC1nH60MH2jp40kDXkQZwO2GKRd0/8o=
 			</data>
 		</dict>
 		<key>Modules/module.modulemap</key>
diff --git a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeSignature b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeSignature
index 2b968f7..35de5b3 100644
--- a/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeSignature
+++ b/frameworks/WAFirebaseImpl.framework/_CodeSignature/CodeSignature
Binary files differ
diff --git a/frameworks/nanopb.framework/Headers/pb.h b/frameworks/nanopb.framework/Headers/pb.h
index 2ba6c63..929bfa1 100644
--- a/frameworks/nanopb.framework/Headers/pb.h
+++ b/frameworks/nanopb.framework/Headers/pb.h
@@ -51,7 +51,7 @@
 
 /* Version of the nanopb library. Just in case you want to check it in
  * your own program. */
-#define NANOPB_VERSION nanopb-0.3.9.6
+#define NANOPB_VERSION nanopb-0.3.9.7
 
 /* Include all the system headers needed by nanopb. You will need the
  * definitions of the following:
diff --git a/frameworks/nanopb.framework/Headers/pb_encode.h b/frameworks/nanopb.framework/Headers/pb_encode.h
index 8bf78dd..b1d822f 100644
--- a/frameworks/nanopb.framework/Headers/pb_encode.h
+++ b/frameworks/nanopb.framework/Headers/pb_encode.h
@@ -123,7 +123,7 @@
  * structure. Call this from the callback before writing out field contents. */
 bool pb_encode_tag_for_field(pb_ostream_t *stream, const pb_field_t *field);
 
-/* Encode field header by manually specifing wire type. You need to use this
+/* Encode field header by manually specifying wire type. You need to use this
  * if you want to write out packed arrays from a callback field. */
 bool pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, uint32_t field_number);
 
diff --git a/frameworks/nanopb.framework/Info.plist b/frameworks/nanopb.framework/Info.plist
new file mode 100644
index 0000000..de818a8
--- /dev/null
+++ b/frameworks/nanopb.framework/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>nanopb</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-nanopb</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>nanopb</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>2.30907.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>
diff --git a/frameworks/nanopb.framework/nanopb b/frameworks/nanopb.framework/nanopb
index 75ea27b..85b16ae 100644
--- a/frameworks/nanopb.framework/nanopb
+++ b/frameworks/nanopb.framework/nanopb
Binary files differ

--
Gitblit v1.8.0